Python Gitlab Email Sender

Gitlab kullanıyor iseniz, gitlab sunucunuzdaki post-receive hook scriptinin içerisine, aşağıdaki python scriptini her push işleminden sonra çalıştıracak şekilde ayarlamanız durumunda, script her çalıştığında oluşturduğu commits.db sqlite database’indeki short commit’i ile karşılaştırıp, değişikli var ise aşağıdaki mail gönderim formatında maili ‘*protected email*’ adresine gönderir. Eğer db’de bulunmayan bir repo ile karşılaşması durumunda db’ye repo’yu insert eder.

#!/usr/bin/env python
__author__ = "Gokhan MANKARA <*protected email*"

import gitlab
import sqlite3 as sql
import requests
import smtplib
import os
import email.utils
from email.mime.text import MIMEText

gitlab_url = "https://gitlab.domain.com"
gitlab_access_token = "ABCDEFG"


class SendEmail(object):
    def __init__(self):
        self.mail_to = '*protected email*'
        self.mail_from = '*protected email*'
        self.mail_server = 'mail.domain.com'
        self.mail_subject = 'New Commit'

    def main(self, msg):
        msg = MIMEText(msg)
        msg['To'] = email.utils.formataddr(('Recipient', self.mail_to))
        msg['From'] = email.utils.formataddr((self.mail_subject, self.mail_from))
        msg['Subject'] = self.mail_subject

        server = smtplib.SMTP(self.mail_server, 25)
        server.set_debuglevel(False)

        try:
            server.sendmail(self.mail_from, self.mail_to, msg.as_string())
        finally:
            server.quit()


class Commit(object):
    def __init__(self):
        self.db = "commits.db"
        self.con = sql.connect(self.db)
        self.git = gitlab.Gitlab(gitlab_url, token=gitlab_access_token, verify_ssl=False)
        with self.con:
            self.cur = self.con.cursor()
        requests.packages.urllib3.disable_warnings()

        if not os.path.isfile(self.db):
            os.system("sqlite3 commits.db < commits.sql")

    def sql_insert(self, repo, branch, hash):
        sql = "insert into last_commit ('repo', 'branch', 'hash') values ('%s', '%s', '%s')" % (repo, branch, hash)
        self.cur.execute(sql)
        self.con.commit()

    def sql_select(self, branch, repo):
        sql = "select hash from `last_commit` where branch='%s' and repo='%s'" % (branch, repo)
        self.cur.execute(sql)
        return self.cur.fetchone()[0]

    def sql_update(self, new_hash, branch, repo):
        sql = "UPDATE last_commit SET hash='%s' WHERE branch='%s' and repo='%s'" % (new_hash, branch, repo)
        self.cur.execute(sql)
        self.con.commit()

    def commits(self):
        # git.getprojectsall => Returns a dictionary of all the projects for admins only
        # git.getprojects => Returns a dictionary of all the projects

        for i in self.git.getprojectsall():
            group_name = i["namespace"]["name"]
            project_name = i["path"]
            project_id = i["id"]
            for branches in self.git.getbranches(project_id):
                    new_commit = branches["commit"]["id"][:8]
                    branch_name = branches["name"]

                    try:
                        commit_in_sql = self.sql_select(branch_name, project_name)
                    except TypeError:
                        self.sql_insert(project_name, branch_name, new_commit)

                    if commit_in_sql != new_commit:
                        get_commit_info = self.git.getrepositorycommit(project_id, new_commit)
                        try:
                            author_name = get_commit_info["author_name"]
                            author_email = get_commit_info["author_email"]
                            author_message = get_commit_info["title"]
                            commit_date = get_commit_info["created_at"]
                        except TypeError:
                            pass

                        compare_url = "%s/%s/%s/compare/%s...%s" %\
                                      (gitlab_url, group_name, project_name, check_commit, new_commit)
                        send_email = SendEmail()
                        msg = 'Commit Repo: %s\nBranch Name: %s\nUser: %s\nUser Mail: %s\nCommit Message: %sCommit Time: %s\n\nDiff URL: %s' %\
                              (project_name, branch_name, author_name, author_email, author_message, commit_date, compare_url)
                        send_email.main(msg)
                        self.sql_update(new_commit, branch_name, project_name)

    def main(self):
        self.commits()


if __name__ == "__main__":
    Commit().main()

Python scripti ile aynı yerde oluşturmanız gereken commits.sql dosyası dosyası.

CREATE TABLE last_commit(id INTEGER PRIMARY KEY AUTOINCREMENT, repo TEXT, branch TEXT, hash TEXT);

Gönderilen mailin örnek içeriği,

Commit Repo: githlab-email-repo
Branch Name: master
User: gokhan
User Mail: *protected email*
Commit Message: First Test Email Commit
Commit Time: 2015-05-30T13:58:42.000+03:00

Diff URL: https://gitlab.domain.com/gokhan/gitlab-email-repo/compare/s1ws93...1ex4ng59

Gitlab server’da post-receive hook scriptine, başına “/usr/bin/python” koyarak scripti kullanabilirsiniz. Başına python path’ini koymamızın sebebi, gitlab’ın kendi python binary si olduğundan import ettiğimiz modüller gitlab’ın kendi lib’inde olmadığı için remote gitlab server’a push ettiğinizde “modül bulunamadı” şeklinde hata verecektir.

GitHub Repo

31 Mayıs 2015

Posted In: gitlab, gitlab hook, gitlab send email, lkd-gezegen, python, python gitlab hook

CryptoParty 2015

İnternette kişisel gizlilik ve güvenliğin öneminden uzun uzun bahsetmeyeceğim. Bu konu tabii ki çok önemli. Bu farklındalığa sahip olan kişiler az da olsa gizlilik ve güvenliklerini korumak için birşeyler yapıyorlar. Ancak maalesef çok büyük bir kesim bu konuda farklındalığa sahip değil. Daha değişik bir başka kesim ise farkında olmasına rağmen birşey yapmıyor.

CryptoParty etkinliği, tıpkı Belge Özgürlüğü Günü (Tr.) ve Yazılım Özgürlüğü Günü (İng.) gibi belirli bir konuda toplumdaki farkındalığı arttırmaya yönelik bir girişim. Dünyanın pek çok farklı noktasında, internetteki kişisel gizlilik ve güvenlik konularına dikkat çekmek için, sadece bilgisayarla çokça haşır neşir olan kişileri değil, toplumun her kesimini bu konuda bilinçlendirmek için etkinlikler düzenleniyor. Belge ve yazılım özgürlüğü günlerinden farklı olarak CryptoParty yılın belli günlerinde değil, ilgili kişiler olduğu sürece her zaman düzenlenebilen bir etkinlik.

cryptoparty_logo_vector

16 Mayıs 2015 günü Norveç’in Trondheim şehrinde 20 kadar kişi CryptoParty Trondheim etkinliğinde bir araya geldi. Etkinlikte daha çok kişisel gizlilik ve güvenliğimizi korumaya yardımcı araçlardan (internet tarayıcıları, parola yöneticileri, anlık mesajlaşma uygulamaları, arama motorları vs.), nasıl kullanıldıklarından söz edildi. Ben de özgür yazılımların ne olduğundan ve güvenlik konusundaki öneminden söz ederek katkıda bulundum. Sunum dosyasına (İngilizce) şuradan ulaşılabilir (Bazı slaytlar için geçmiş LKD seminer notlarını kullandım, buradan teşekkür etmeden geçmeyeyim). Sunumların ardından da OTR (Off the record – kayıt altına alınamayan) anlık mesajlaşma yazılımını deneyerek, birbirimize mesajlar gönderdik. Daha fazlası için zamanımız kalmadığından bu etkinliği arada tekrarlamak üzere vedalaştık. Etkinlikteki tartışmalardan çıkan güzel sonuçlardan birisi ise şöyleydi: “Bu araçları kullanan birkaç kişiden birisi olmak sizin kişisel gizliliğinizi arttırmaz, hatta tam tersi etki bile yaratabilir. Bu araçlar, onları kullanan belli bir sayıda insan (mümkünse çoğunluk) olduğunda anlam kazanır ve gerçekten işe yararlar.” O yüzden daha çok CryptoParty! 🙂

 

28 Mayıs 2015

Posted In: linux, Özgür yazılım

Google Mülakatlarına Hazırlanma Süreci

Geçen yaz Google ik'dan (insan kaynakları) profilinizi linkedin, github ve birkaç listeden inceledik kabul ederseniz başlangıç bir görüşme yapmak isteriz içerikli bir e-posta aldım. 2 gün sonra başlangıç telefon görüşmesini ik ekibinden bir arkadaşla yaptık. Görüşmenin 45-55 dk arası sürmesi bekleniyor, benim bir saati biraz geçmişti. İlk görüşmede kod yazmamı gerektirecek bir şey sormadılar. Veri yapıları, ağ bilgisi, bit düzeyinde işlemler, algoritmalar ve karmaşıklıkları, bash komutları, sistem çağrıları, süreçler hakkında sorular geldi. İlk görüşmede tanışma, ilgi alanlarını öğrenme, hangi işler üzerinde uğraştığın hakkında bilgi edinme gibi kısımlardan da konuşulduğu için teknik değil olarak adlandırıyor ancak bence gayet teknikti :). Görüşme sonunda, ilk adımı geçtiğimi öğrendim.

Daha önce bir iş tecrübem olmadığı için bir alan seçmem gerekiyordu, telefondaki arkadaş Site Reliability System Engineering (SRE) ve Software Engineering olmak üzere 2 pozisyon sundu. Bilgilerin sistem tarafı için daha uygun istersen SRE seç şeklinde öneride bulundu. SRE görüşmelerinde daha başarılı olacağımı düşündüğümden onu seçtim.

Başlangıç görüşmesinden önce çok gerildim, zaten nasıl konuşacağım kısmı ayrı bir olay :). Soruları bitirdikten sonra, görüşmeyi yapan arkadaş diğer adımlar için tavsiyelerde bulundu, sorular üzerinde sesli düşün, eğer ne sorulduğunu anlayamadıysan bilmiyorum deme, anlayana kadar sorman sorun değil, dedi. Çünkü söylediği bir kelimeyi anlayamadığımdan bilmiyorum demiştim, anlamadığımı fark etti ve gtalk'a sorunun bir kısmını yazdı ve cevapladım :).

İkinci görüşmeyi bir mühendisle yine telefon üzerinden yaptık. Kodlama soruları için google doc kullandık. Görüşme yine 45-55 dk arasıydı. Soruların neredeyse hepsi çalıştığım sorulardı ancak düzenli ifadelere çok fazla çalışmaya vaktimi yetiremedim. Görüşmede son soru basit split, join işlemleriyle çözülebilecekken suçluluk psikoljisi ile düzenli ifadelerden çözülmesi gerekiyor sandım :). Çözüme yaklaştım ancak çoğu şeyi göz ardı ettik, ben ifadeleri karıştırdım gibi şeyler oldu. Görüşme sonunda mülakatı yapan arkadaş, bu görüşmenin büyük kısmını harika yaptın dedi. Bir an şok olmamla birlikte havaya uçup geri oturdum :).

Google'ın mülakatlarına hazırlanırken aşağıdaki linklerden yararlandım. Bunlar dışında deneyimler üzerine yazılmış çok fazla blog yazısı bulabilirsiniz. Hepsini okumak belki mümkün olmaz ama çoğunu okuyun gerçekten çok faydalı oluyor. Mühendislerle yaptığım görüşmeler ik'daki arkadaşla yaptığım görüşme kadar eğlenceli geçmedi. İk'da olan arkadaş görüşme sırasında harikasın, çok iyi gibi sürekli destek olarak ve çok sevecen bir şekilde konuşuyordu. Ancak mühendisler süreci soğuk, sadece soru soran ve cevap bekleyen bir şekilde geçiriyorlar. Okuduğum bir blog yazısında telefonda problem olduğu için Skype'a geçmek zorunda kalan bir arkadaş mühendis soğuk ve sıkılmış görünüyordu yazmıştı. Bu yüzden telefondaki soğuk tavırları hiç üzerime alınmadım :), sadece en sonda tebrik eden bir ifade duydum.

Siteler: Geeks For GeeksGlassadorCareerupCracking Code InterviewsSystem DesignDevops Interview Questions.

3. mülakat için yeniden tarih belirledik. Genelde 3 er hafta arayla yaptık görüşmeleri. İlk iki görüşmem iyi geçtiğinden sonuçlarını hemen öğrenmiştim, normalde bir haftayı bulabiliyor. Görüşmelerin arasını çok uzatmak bence iyi değil, sonuna kadar gidebileceğimizi düşünürsek insan bunalabilir. 3 hafta gayet iyi bir süreç. Zaten görüşme 45 dk sürüyor, en fazla kaç soru sorabilir diye görüşmeden önce kendimizi rahatlatmak da bir yöntem :). Birde hazırlanırken süremi bir hafta kadar tanım sorularına çalışarak, bir hafta kodlama sorularına çalışarak sonraki hafta bunları karmaşık tekrar ederek geçirdim.

3. görüşme görüntülü olacaktı ancak ne olduysa yine telefon üzerinden yaptık. Bu görüşmede sorular beklediğim gibi değildi. Temelde bir soru sorup, diğer soruları aynı soru üzerinden türetti. Görüşmenin nasıl geçtiğini anlamadım, soyut şeyler üzerinden benim daha önce deneyememiş olacağım şeyler üzerinden konuştuk. O zamanlar her görüşmenin bitiminde sonucu söylüyorlar sandığımdan bu adımı geçebildim mi? diye sordum, henüz bilmiyorum cevabını aldım :). Bir hafta sonra geçtiğimi öğrendim.

Buradan sonraki adım Google ofisinde yapılması gereken görüşme. Yine ik'daki arkadaş önce aradı sonra aynı bilgileri e-posta ile gönderdi. Birkaç Google pozisyonu önerdi, Dublin'de olanı seçtim, Dublin aynı zamanda Google'ın Avrupa'daki ofislerinin merkezi. Vize işlemleri nedeniyle ve benim gideceğim haftada Dublin'de etkinlikler olduğundan, son görüşmeyi 1,5 ay kadar ertelemek zorunda kaldık :(.

Son mülakat 45'er dakika şeklinde ve 5 oturumdan oluşuyor. Her oturuma 1 ya da 2 mühendis girebiliyor. Son oturumu SRE takımının yöneticisiyle yaptık ^_^.

Son aşama gerçekten çok heyecanlıydı. Uzaktan yapılan görüşmeler sırasında sesin kesilmesi problemi çok oluyor. En sonunda duyamıyorum, sesin kesiliyor dediğimde google doc'a soruyu yazdıkları olmuştu. Yüzyüze görüşmede çok hızlı konuşurlarsa diye sıkıntım vardı ancak öyle olmadı. Google çalışanları konuşma konusunda diğer şirketlere göre çok daha anlayışlı. Oldukça anlaşılır konuşuyorlar.

Konuşma pratiği yapmak için dil kurslarına gitmek faydalı, birde Google SRE ekibinin düzenlediği etkinlikleri youtube'dan çok rahat bulabilirsiniz. Ben onları izlemiştim, hem birkaç anahtar kelime öğrenmemi sağladı hem anlamamı geliştirdi.

Mülakatın yapılmasından bir gece önce Dublin'deydim. Sabah ik'daki arkadaş istersen otelden seni alayım, yürüyerek gayet yakın dedi. Kabul ettim, çok yağmurlu bir sabahta ofise birlikte gittik. Her oturumdan sonra 3-5 dk beklemek gerekebilir, bu sürelerde eğer odada yalnız kalırsam dışarı çıkmamamı ve henüz çalışan olmadığım için ofiste tek gezmememi söyledi.

Son görüşmede soruların çoğunluğu çalıştığım yerlerden çıkmadı. Bu kadar sorulmaz ya dediğim ve ayrıntısına inmediğim şeylerden çıktı. Açıkçası hiç beklememiştim. Daha önce bir yerde de öyle soruları görmedim :(. Basit sorulan sorular da vardı elbette ama geneli değildi. Çok iyi veri yapıları soruları bekliyordum, hiç sormadılar :|.

Ancak sürecin tamamı çok heyecanlı ve cesaretlendiriciydi. Yüzyüze yaptığımız görüşmelerdeki arkadaşlar da çok sevecendi, bir soğukluk yoktu :). Birde yurtdışına ilk seyahatimi Google sayesinde yapıyor olmam da çok mutluluk vericiydi.

Google'ın sizle görüşmek isteriz şeklinde e-posta atması için sadece bir github hesabımız olması bile yeterli. Çünkü onlar da yeni insanlar tanıyıp, onları görüşmelerine hazırlamak istiyorlar.

Üniversiteden "olmadı sanırım .. olduğu kadar :(" şeklinde hissederek mezun olmuştum, bunun üzerine Google görüşmesinin bu kadar ilerlemesi çok iyi oldu, çok da güzel oldu :). Mezuniyetimden sonra 7-8 ay boyunca kadar her şey böyle karmaşık ve heyecanlı bir şekilde ilerlerdi. Bir hafta önce bundan sonrası şöyle olur muhtemelen dediğim şeylerin hiçbiri tutmadı :), şimdi tekrardan her şey düzene girdi. Bundan sonrasında yine Linux çekirdeği üzerinde devam edeceğim. Belki bir gün yine Google ile görüşebiliriz :).

Dublin'de 2 gece kaldım ve çok gezemedim. Bir dahaki sefere daha fazla kalabilirim diye düşünüyorum. Dublin'de çektiğim fotoğraflar için buraya bakabilirsiniz.

25 Mayıs 2015

Posted In: Gezegen, google, iş görüşmesi, mülakat

Bottom Line Tuning Tips for G1GC

When I read HBase User Maillist. I come cross Bryan Beaudreault’s experiences[1] about When they using G1 garage colllector with HBase in Hubspot. I want to note those. You can see below:

- If an allocation is larger than a 50% of the G1 region size, it is a humongous allocation which is more expensive to clean up.  You should want to avoid this.

- The default region size is only a few mb, so any big batch puts or scans can easily be considered humongous.  If you don’t set Xms, it will be even smaller.

- Make sure you are setting Xms to the same value as Xmx.  This is used by the G1 to calculate default region sizes.

- Enable -XX:+PrintAdaptiveSizePolicy, which will print out information you can use for debugging humongous allocations.  Any time an allocation is considered humongous, it will print the size of the allocation.

- Using the output of the above, determine your optimal region size. Region sizes must be a power of 2, and you should generally target around 2000 regions.  So a compromise is sometimes needed, as you don’t want to be *too* far below this number.

- Use -XX:G1HeapRegionSize=xM to set the region size.  Use a power of 2.

[1] http://apache-hbase.679495.n3.nabble.com/How-to-know-the-root-reason-to-cause-RegionServer-OOM-tp4071357p4071402.html

15 Mayıs 2015

Posted In: g1gc, hbase, java garbage collector

Metasploit Framework Giriş

Metasploit Framework, güvenlik açıklarının bulunmasını ve bulunan açıkların kullanılmasını sağlayan bir araçtır. Ruby ile sıfırdan tekrar yazılmıştır.(öncesinde Perl ile yazılmış) Kullanılan terimlerin anlamlarını öğrenip birşeyler denemeye başlayınca ne olduğu insanın aklında daha çok şekilleniyor :) 

Terminoloji:

Exploit: Bir sistemin ya da programın zayıflığından faydalanarak sisteme girişi sağlayabilen ya da zarar veren yöntemlerin tamamıdır.

Local Exploit: Oturum açılmış halde olan sistemde bulunan servis veya yazılımların zayıflıklarını sömüren exploit türüdür.

Remote Exploit: Ağ üzerinden uzaktaki sistemin zayıflıklarını sömüren exploit türüdür.

Payload: Hedef sistemde istenilen eylemi gerçekleştiren bileşendir. Exploitten sonra çalışır.

Auxiliary: Modüller için geliştirilen ek programlar, yardımcı araçlardır. Exploit öncesi sistem hakkında bilgi toplama amaçlı kullanılırlar.

MsfConsole, içinde pek çok hazır exploit bulunduran aynı zamanda bu exploitleri yerel ve uzak erişim için yapılandırabilen bir yazılımdır.

Ubuntu'ya Msfconsole kurulumu için buraya bakabilirsiniz.

MsfConsole:


help: Kullanabileceğimiz komutları ve ne işe yaradıklarını görebiliriz.

Komut          Açıklama
banner        MsfConsole açılış ekranını gösterir.
info             Bir veya daha fazla modül hakkında bilgi verir.
irb               İrb scripting modunu getirir.
jobs            Yapılan işleri gösterir ve düzenler.
load            Eklenti yüklenmesi için kullanılır.
loadpath     Belirtilen yoldan istenilen modülü/exploiti yükler.
route           Oturum trafiğinin yönlendirilmesini sağlar.
save            Etkin veriyi kaydeder.
search         Modül ismi veya açıklamalarda arama yapar.
sessions      Aktif oturumları gösterir ve oturum bilgisi verir.
set               Payload seçiminde bir verinin atamasını yapar.
show           Belirtilen modülü veya tüm modlleri listeler.
sleep           Belirtilen zaman zarfında hiçbir işlem yapılmaması gerektiğini belirtir.
use              Modül seçer.
version        Konsol uygulamasının versiyonunu gösterir.

show exploits: MsfConsole platformundaki exploitleri listeler.
use <exploit>: Exploit seçmek için kullanılır.
show targets: Seçilen exploitin hangi sistemleri etkilediğini görmek içn kullanılır.











set targets <hedefno>: Hedefi seçmek için kullanılır. 
show payloads: Msf’de bulunan payloadları listelemek için kullanılır.


info <payload_adi>: İstenilen payload hakkında detaylı bilgi döndürür.
set PAYLOAD <payload_adi>: Payload seçmek için kullanılır.
show options: Yapılacak saldırı için seçeneklerin görülmesinde kullanılır. "Required" sütununda yes ile belirtilmiş olan seçeneklerin ayarlanması gerekir.


set <RHOST, RPORT, LHOST, LPORT>: Required kısmındaki bilgileri girmek için kullanılır.
exploit:  Gerekli tüm yapılandırma bittikten sonra saldırı başlatmak için kullanılır.

Güvenlik yeni yeni ilgimi çeken bir konu. Öğrendikçe daha fazla yazmaya çalışacağım. Kolay gelsin :)

9 Mayıs 2015

Posted In: giriş, güvenlik, linux, metasploit, msfconsole

‘Vatandaş Bilimi’ ve Oyun Oynayarak Kansere Çare Bulmak

Bugün elimizdeki cep telefonları on yıl öncesinin bilgisayarlarından çok daha güçlü işlemcilere sahip ve çok daha gelişmiş yazılımlar üzerinde koşmakta. Bu cihazlar üzerinde bugün yapılamayacak çok az şey var. Hepimizin gündelik hayatında elimizden düşürmediğimiz bu cihazlarda kuşkusuz en çok zaman geçirdiğimiz etkinliklerden biri ise oyun oynamak. Çevrenizde; metroda, metrobüste hatta manzaralı bir çay bahçesinde dahi insanların telefon ekranlarına küçük bir dikiz attığınızda insanların hayatlarının rutin bir eylemi olarak bir oyuna bulaştığını ve vakit geçirmek için bu oyunu kullandığını görebilirsiniz. Bu oyun mesaisi aynı zamanda ciddi bir insan gücü de demek… İşte vatandaş bilimi de buradan yola çıkarak bu oyun mesaisi üzerinden taşınabilir cihazlarımızı bilime katkı verebileceğimiz bir araca dönüştürüyor.

Vatandaş Bilimi nedir?

Öncü Vatandaş Bilimi projelerinden Seti@home dünya dışı akıllı yaşamı arıyor.

Öncü Vatandaş Bilimi projelerinden Seti@home dünya dışı akıllı yaşamı arıyor.

Vatandaş Bilimi (Citizen Science) terimi çoğu zaman kıtalar arası işbirliği yapan biliminsanı takımlarını içermekte. Fakat şimdi, internetin gücüyle artık uzman olmayan kişiler de katılıyor.

Vatandaş bilimi birçok farklı kategoriye ayrılmakta. Öncü proje olan SETI@Home milyonlarca katılımcının atıl hesaplama zamanını kullanarak dünyadışı akıllı yaşam araştırmasında kullanmakta. Seti@Home’un açtığı yoldan devam ederek Boinc@Home ile biyolojiden fiziğe birçok alana, Folding@Home ile de tıp alanına atıl hesaplama zamanlarını bağışlamakta. Vatandaş biliminsanları ayrıca Galaxy Zoo gibi gök cisimlerini sınıflandırma çalışmalarında ve hatta doğayla ilgili Great Sunflower Project gibi projelere gönüllü olarak katılmakta. Bunun yanı sıra işin biraz daha mutfağına girerek Fold.it projesiyle bulmaca çözerek ‘Protein Katlama – Protein Folding‘ bile yapmak mümkün.

Oyun ve biyolojinin ilk harmanlandığı Fold.it projesi, onyıldır çözülemeyen HIV ile ilgili bir proteinin 10 gün içinde bir oyuncu tarafından çözülmesiyle kendisinden söz ettirmişti.

İşte buradan çıkan bir fikir ile ‘Vatandaş Bilimi” mobil- yani taşınabilir cihazlara eğlenceli bir şekilde taşınmakta.

Daha fazlasını merak ediyorsanız Uzay, İklim, İnsanlık, Doğa, Biyoloji ve Fizik kategorisinde Vatandaş Bilimi projelerini bir çatı altında toplayıp sunan Zooniverse.org sitesine göz atabilirsiniz.

2013 yılında gerçekleştirilen bir ortaya atılan bir fikir ile ilk defa tıp alanında bir proje oyunlaştırılıp mobil cihazlar üzerinden insanların kanser araştırmalarına katkı verebileceği bir projeye dönüştü. Cancer Research UK, Amazon Web Services, Facebook ve Google geliştiricileri, akademisyen ve bilim adamlarıyla birlikte genetik veriyi dönüştürebilen eğlenceli bir oyun oluşturmak için yola çıktı. Bu süreçte alınan fikirlerle Play To Cure: Genes in Space (Tedavi etmek için oyna: Uzaydaki Genler) oyunu ortaya çıktı. Oyunun yayınlanıp başarılı olması üzerine ise bir diğer oyun olan Reverse the Odds (Odları Geri Döndür) isimli bir oyun daha yayınlandı.

Genes in Space oyunu 2012 yılında Birleşik Krallık’ta gerçekleştirilen geniş kapsamlı bir göğüs kanseri araştırmasını temel almakta ve bu araştırmada elde edilen DNA verilerinin sanal bir madde olan ‘Element Alpha‘ya dönüştürülmesiyle analiz edilecek haritalar oluşturulmakta.

Bir bilgisayar oyunu ile tıbbi veri analizinin ne kadar başarılı yapılabileceği konusunda ise oyun geliştiricileri ve uzman biliminsanları şaşırtıcı bilgiler vermekte [1]. Uzmanlara göre mevcut bilgisayar yazılımları genlerdeki bozulmaları incelemek için yeteri kadar isabetli incelemelerde bulunamıyor ve %10’luk bir ıskalama olmakta. Oyunun arkasındaki bilim konulu detaylı yazılar [2] [3] incelendiğinde bilgisayarların DNA üzerindeki bu izleri incelemekte henüz insan gözü kadar iyi olmadığı ve bu binlerce veri setini incelemenin ise ço büyük bir zamana mal olduğu söylenmekte. İşte bu oyun sayesinde ise oyuncular tarafından hızlıca incelenebilen bu veri setleriyle araştırmaların hızlandığı söylenmekte.

Bu oyunlara temel teşkil eden ilk girişim olan çevrimiçi kanser hücrelerini inceleme platformu olan Cell Slider sitesinde bugüne kadar 2 milyondan fazla slyatın incelendiği düşünülünce, projelerin gerçekten faydalı olduğu görülüyor.

Genes in Space’in başarılı olması üzerine geliştirilip yayınlanan bir diğer oyun olan Reverse the Odds oyunu ise bir bulmaca oyunu. Bu oyunda genetik veriyi analiz etmek yerine mevcut kanserli hücreleri ve bu hücrelerin biyolojik işaretlemeleri (biomarker)  tespit edilmeye çalışılıyor.

Reverse The Odds projesini yöneten Dr. Anne Kiltie, Reverse The Odds oyuncularının hali hazırdaki bilgisayar analizlerinden çok daha hızlı ve %10 daha başarılı olduğunu ve ortalama isabetin de tıpkı Cell Slider gibi mevcut biliminsanlarına yakın olduğunu belirtmekte[4]. Reverse the Odds’da bugüne kadar 3.200.000 civarında görüntü analiz edilmiş ve toplamda 31.000.000 görüntü analiz edilmeyi beklemekte.

Gerçek kanser hücrelerini tespit etseniz de merak etmeyin, gerçek hastalara teşhis koymuyorsunuz. Oyundaki verileri yüzlerce insan analiz ettiği için hata yapmaktan çekinilmemesi gerektiniği söylenmekte.

Candy Crush veya Angry Birds gibi popüler bir oyunu oynayıp vakit öldürmek yerine Vatandaş Bilimi oyunları oynayarak insanlığa katkı vermek daha iyi bir seçenek olarak önümüzde durmakta.

Biraz daha detaylı anlatabilmek için oyunları yakından tanıyalım:

(Belki ileride işe yarar diye oyunların resmi sayfalarını çevirip aktardım)

1- Play to Cure: Genes in Space:

2014 başında yayımlanan Play To Cure: Genes in Space oyunu gerçek genetik verilerin oyuncular tarafından analiz edilmesine üzerine kurulu eğlenceli bir uzay oyunu.

Bilim kahramanı olun

Play to Cure™: Genes in Space, oyuncuların kolektif gücünü kullanarak gerçek genetik verileri analiz etmek ve kanseri daha kısa zamanda alt etmek için geliştirilmiş dünyanın ilk ücretsiz mobil oyunudur.

Oyun

Oyundaki görev sanal bir madde olan Element Alpha’yı toplamaktır. Element Alpha, birçok kanser türüne dayanak oluşturabilecek genetik kanser verisini temsil etmektedir.

Oyunda Bitfrost Şirketi’nin bir elemanı olarak göreviniz değerli ve satılabilir Element Alpha maddesini toplamak ve rütbenizi aşağıdakileri yaparak yükseltmektir:

  • Element Alpha’Nın en yoğun olduğu bölgelere göre rotanızı belirlemek
  • Rotanızı takip edip olabildiğince çok Element Alpha toplamak
  • Element Alpha toplarken ve sonrasında astroidlerden kaçınmak ve ateş ederek asteroidleri yok etmek
  • Geminizin özelliklerini geliştirerek daha güçlü hale getirmek ve daha çok Element Alpha satabilmek.

Genes in Space oyununda görev sanal bir madde olan Element Alpha’yı toplamaktır. Element Alpha, birçok kanser türüne temel teşkil eden genetik kanser verisidir.

 Uygulamayı Apple App Store’dan indirmek için tıklayın

 Uygulamayı Google Play’dan indirmek için tıklayın

Not: bazen bağlantı vb sorunlar nedeniyle boş harita gelmekte, Back (Geri) deyip tekrar Play tuşuna basıp (bazen bir kaç sefer tekrar etmek gerkebilir) deneyebilirsiniz

Oyunun arkasındaki bilim

Veri analizi bilim adamlarına iki anahtar konuda iletilmektedir:

  • Birincisi haritada Element Aplha yoğunluğuna göre çizdiğiniz rota
  • İkincisi uzay geminizle galaksilerarası uçuşunuz esnasında topladığınız Element Alpha miktarı ve konumu

Genes in Space oynayarak biliminsanlarının çok uzun zamanını alacak çok büyük miktarlarda genetik veriyi analiz ediyor olacaksınız ve onlara zaman kazandıracaksınız. Bu veri yeni hayat kurtaran tedavileri geliştirmek için kullanılabilir.

 

DNA Mikroçipi

DNA Mikroçipi

Uzayda rota çizilirken...

Uzayda rota çizilirken…

 

Oyunun arkasındaki bilim hakkında daha fazla okumak için tıklayınız (İngilizce) 

2- Reverse The Odds:

Taşınabilir cihazınızdaki bu bulmaca oyunuyla sihirli bir dünya yaratın, sevimli minion ırkını kurtarın ve biliminsanlarımıza gerçek kanser verisini analiz etmeleri için yardım edin.  

Oyun

Reverse The Odds oyununda, dünyaları düşüşe geçen renkli yaratıklar olan “Odd“lara yardım ediyorsunuz. Mini bulmaca oyunlarını tamamlayarak topraklarını geliştiriyor ve Oddların topraklarını yaşanabilir hallerine geri döndürüyorsunuz.

Reverse the Odds, hikayesi ve bulmacalarıyla eğlenceli bir oyun

Reverse the Odds, hikayesi ve bulmacalarıyla eğlenceli bir oyun

Ancak oyunda sadece Oddlara yardım etmiyorsunuz. Oyuna saniyelerinizi alacak gerçek kanser verisi analizleri ekledik.

Kanser araştırmalarına nasıl yardım ediyor?

Biliminsanlarımız devasa miktarsa veriye sahip, ve bu veri insanlar tarafından analiz edilmeli – bilgisayarlar gerekli desenleri algılamak için yeteri kadar iyi değil.

Reverse The Odds’a veri analizini ekleyerek binlerce oyuncunun biliminsanlarımıza beyin, gırtlak, akciğer ve prostat kanseri gibi farklı kanser türleri hakkında daha fazla bilgi sahibi olmasına yardım edebiliriz.

Araştırmacılarla aynı şekilde analiz ediyorsunuz, fakat sizin gibi çok oyuncu olduğu için veri içerisinde çok daha hızlı ilerleyebiliyoruz ve araştırmacılarımızın değerli zamanından kazanıp kanser hakkındaki ipuçlarını daha erken yakalıyoruz.

Hata yapmaktan korkmayın!

Vatandaş Bilimi olabildiğince kişiyi dahil etmekle ilgili, bu nedenle gördüğünüz hücrelerle hakkında %100 emin olmanıza gerek yok. Bazen araştırmacılar bile farklı fikirlerde olabiliyor. İşte bu nedene yerlerinde destek mekanizmaları var ve biz de bunu yapıyoruz. Sizin gibi bir sürü insan aynı resmi görüyor ve tutarsız analizler için bizim de kontrollerimiz bulunmakta.

Bilim

Gördüğünüz resimler eski hastalar tarafından bağışalanan gerçek tümör dokularının büyütülmüş örnekleridir.  Bu veri hakkındaki basit sorulara yanıt vererek biliminsanlarına kanser hakında daha fazla bilgi sahibi olmaları ve gelecekteki hastalar için en uygun tedavileri etkince reçetelemek için yardım ediyorsunuz.Oyunun arkasındaki bilim hakkında daha fazla okumak için tıklayınız (İngilizce)

Mücadeleye Katılın

3- Cell Slider

Araştırma kanseri öldürüyor, fakat yardımınıza ihtiyacımız var!

Bir bilim kahramanı olun ve Cancer Research UK ve Zoonivers’İn yanında kansere karşı savaşımızda yerinizi alın. Cell Slider patolojik veriyi görselleştirmekte ve kanser hücrelerini tıpkı biliminsanlarının yaptığı gibi tespit etmenize olanak tanımakta. Herkes bunun bir parçası olabilir ve analiz edilen her görüntü gerçekten fark yaratmaktadır!

Birgün kanseri alt edeceğiz. Cell Slider’da yer alarak bunu daha kısa sürede yapabilmemize yardım etmektesiniz.

2,538,888

görüntü hali hazırda analiz edildi!

http://www.cellslider.net/

——————

Kişisel not: Dünya üzerindeki insanların birbirlerini öldürmek için her yıl harcadıkları trilyonlarca doları düşününce bu çabaların nasıl bir karanlık içinde parladığını görüyoruz. Bu kadar parayla dünyada açlık ve hastalıklar elbette yok edilebilir, her zaman söylediğimiz gibi, başka bir dünya mümkün…

 

Bağlantılar:

1- http://www.bbc.com/news/health-26009350
2- http://scienceblog.cancerresearchuk.org/2014/02/04/download-our-revolutionary-mobile-game-to-help-speed-up-cancer-research/

3- http://scienceblog.cancerresearchuk.org/2013/03/01/can-the-power-of-the-public-help-personalise-cancer-treatment/

4- http://www.cancerresearchuk.org/support-us/citizen-science-apps-and-games-from-cancer-research-uk/reverse-the-odds

5- http://www.channel4.com/microsites/reverse-the-odds/app-FAQs.html 

http://www.techtimes.com/articles/3244/20140207/can-video-game-help-find-cure-for-cancer-doctors-say-yes.htm 

* http://www.gamasutra.com/blogs/CharlesLeesCzerkawski/20140206/210183/Play_to_Cure_Genes_in_Space__Development.php

* http://socialtech.org.uk/projects/reverse-the-odds/

* http://www.scientificamerican.com/citizen-science/reverse-the-odds/

Sonrası ‘Vatandaş Bilimi’ ve Oyun Oynayarak Kansere Çare Bulmak Günlüğüm ilk ortaya çıktı.

1 Mayıs 2015

Posted In: andorid, boinc@home, Fikir, folding@home, Genel, genes in space, Gezegen, ios, kanser araştırmalarına katkı vermek, lkd, oi, oyun oynayarak kansere çare blmak, reverse the odds, seti@home, Vatandaş bilimi, zooniverse

Twitter Auto Publish Powered By : XYZScripts.com