14 December 2014

İmzalamadığınız Commit Sizin Değildir


Git kullananlar bilirler, .gitconfig isimli dosyaya isim soyisim ve e-posta adresi yazılarak commit loglarına commit sahibinin bilgileri otomatik eklenir.

Ancak bu durumun bir olumsuz(?) yanı vardır. Başkaları sizin adınıza commit yapabilir.
Kendi .gitconfig dosyanıza Ali yazsanız Ali’nin adına Veli yazsanız Veli’nin adına commit yapabilirsiniz.

Ancak bir commit’in gerçekten o kişinin yaptığına emin olmak için commit’i imzalamakta fayda vardır.

Peki imzalamayı nasıl yapacağız?

Öncelikle sisteminizde imza var mı bakınız:

gpg --list-keys

(Eğer daha önce GPG ile ilgili işlem yapmamışsanız, bu komut gerekli dosyaları da oluşturacaktır.)

Şuna benzer bir sonuç döndürmeli:

pub   2048R/B489436C 2014-12-14
uid                  Adil Ilhan <no-reply@adililhan.com>

Eğer GPG anahtarınız yoksa boş sonuç dönecektir.

gpg --gen-key

komutu ile GPG anahtarınızı oluşturabilirsiniz. Bu komut size yol gösterecektir.

Ekstra olarak açıklama gereği duyduğum kısım passphrase kısmı. Buraya parola girerseniz oluşturacağınız anahtar bu parola olmadan çalışmayacaktır. Yani anahtarınız çalınsa bile ekstra olarak bir de buraya yazdığınız parolaya ihtiyaç duyulacaktr.

GPG anahtarı artık oluşmuş olmalı. Kontrol için:

gpg --list-keys

Git ortamınıza bu anahtarı tanımlamak gerek:

git config --global user.signingkey B489436C

B489436C bilgisini gpg –list-keys komutunun sonucundan aldım.

Artık commitleri -S parametresi ile imzalayabiliriz:

git commit -m "test" -S

İmzalanmış commitleri görme ve doğruluğunu teyit etme:

git log --show-signature

Bu komut, yerel (local) makinenizdeki GPG bilgisi ile commit log’unda yer alan GPG bilgisini eşleştirir.
Uyuşan loglara gpg: Good signature… yazılır. Uyuşmayan loglara Can’t check signature yazılır.

Örneğin sizin bilgisayarınızdan imzalanarak commitlenen bir commit başka bir bilgisayarda bakıldığında ve o bilgisayarda sizin GPG anahtarınız yoksa log sonuçlarına Can’t check signature bilgisi yazılır.



08 December 2014

Etkinlik Dolu Haftasonu (Özgür Web Günleri 2014, Devfest İstanbul 2014)


Herkese merhaba, geçtiğimiz haftasonu İstanbulda gerçekleşen 2 etkinliğe katıldım. 

İlki cuma ve cumartesi günü olan Özgür Web Teknolojileri Günleri. Diğeri de cumartesi günü gerçekleşen Devfest İstanbul. Birazcık gözlemlerimden ve sunumlardan bahsetmek isiyorum. 

Özgür Web Günlerine cuma günü katılmama rağmen beklediğimden kalabalıktı. Tahmin edeceğiniz gibi Çanakkale'den yine kalabalık bir ekiple gittik. (Necdet Yücel, Gülşah Köse, Esra Altıntaş, Sedat Ak, Hilal Çetinkaya, Yeliz Taneroğlu, Dilek Üzülmez, Natavan Mirzayeva)
Etkinlik Mustafa Akgül'ün konuşmasıyla başladı. Akgül Hoca, eskiden bu zamana etkinliklerin nasıl başlayıp ilerlediğinden, Türkiye'ye internetin gelişinden ve durumunun nasıl geliştiğinden, LKD'nin nasıl başladığından bahsetti. 

Sonrasında Necdet Yücel'in "Yenilikçi Web Teknolojilerini Nasıl Lisanslamalıyız?" sunumunu dinledim. Necdet Hoca, özgür yazılım ile açık kaynak arasındaki farklardan, özgür yazılımın felsefe olarak bize ne anlattığından, lisansların öneminden ve çeşitlerinden bahsetti.
 
Öğleden sonra Gülşah Köse'nin " Supervisor için merkezi yönetim arayüzü" sunumu vardı. Bize, stajında kendi yazdığı CESİ'nin neler yapabildiğini anlattı. :)

Etkinliğin son sunumlarından Puppet Sertifika Yönetimi'ni de ben anlattım. Stajda yaptığım işten, Puppet'ın nasıl çalıştığından, puppet sertifikalarından bahsettim:) Sunum slaytlarına buradan ulaşabilirsiniz. 

Sunumlar dışında yeni özgür yazılım insanlarını tanımak, uzun zamandır görmediklerim ile sohbet etmek çok güzeldi. İkinci günü de eminim aşırı harika olmuştur :)

Ayrıca etkinlikten sonra çoğu Çomü'den mezun Necdet hocanın öğrencisi olan kalabalık bir grupla sohbet etme fısatımız oldu. Katılmayanlara ne anlatsam boş olacak. Anlayamazsınız :)

Cumartesi günkü Devfest etkinliğine de katılım çok çok fazlaydı. Bazıları Türkçe, bazıları İngilizce gerçekleşen sunumlar 4 paralel salonda yapıldı. Öğleden sonra katılmama rağmen  kendimden beklemediğim kadar sunum dinledim. Ağırlıklı olarak web uygulamaları hakkında sunumlar vardı. 

Bir de yakından quadcopter görme fırsatım oldu :)

Benim için çok yoğun ve eğlenceli geçen bir haftasonuydu. Yeniden görüşmek üzere, hoşçakalın :)


07 December 2014

Page Fault Handler


I've started to read something about memory issue. Firstly, I've looked for basic concepts for it. This link is pretty good for basic concepts.

MMU (Memory Management Unit) translates physical memory addresses to virtual addresses. It creates an interrupt when a page fault occured. When a process try to access an address and if the address is unknown for MMU then it creates page fault exception. In this case page fault exception handler examines current state of MMU and process.  do_page_fault(...) function is page fault handler for Linux. It is processor specific function, I've studied for x86 based systems.

do_page_fault() function gets two arguments which are error code and registers of the process. The error code specifies the page fault whether because of read operation or write operation.

Firstly the function saves address of line which is cause of the exception (control register two), then saves prev state of process.

Page fault handler needs to detect whether the page fault is good or bad. Good page fault means the process needs more memory. Bad page fault can occur for different cases, in general it causes of terminate the process by the handler.

Actually do_page_fault calls __do_page_fault(...) function and it is main area to handle the page fault.

In Linux based systems every process has a page directory and page table. We can understand which pages used by which process with the data structures. If process needs more memory, the handler gets a page from pglist_data which is a global list and adds the page to page table of process.

The function using mm_struct can detect whether the process has permission access for the address. It uses find_vma function for this operation. If process has to access then the address assigned to the process else the process is terminated and segmentation fault occured.

Processes are created as instance of task_struct which includes mm_structs and keeps info about processes.

You can see process resources under /proc/pid/*. If you want to see process vma, then type "cat /proc/pid/maps" on bash. To understand memory issues better, I've read the chapter, this book is very good for kernel newbies.

Also this two links are very helpful for me, they are for kernel 2.6x series but very good to understand big picture of the topic.

Other sources:
http://www.stillhq.com/pdfdb/000446/data.pdf
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/


06 December 2014

İnternet Demokrasi ve Kalkınma için Yaşamsaldır


inet-t'14

inet-t’14

Bu yıl 19.sunu yaptığımız “Türkiye’de İnternet” Konferansı fikri Türkiye İnternetinin emekleme günlerinde 1995 baharında yurt dışının 64K, iç hatların 9.6 veya 19.2K olduğu günlerde, daha 2 Mbitlik omurga hayal edilirken, ortaya çıkan çalkantıyı azaltmak, paydaşları bir masa etrafında toplamak, ve ortak akıl oluşturmak amacıyla ortaya atılmıştı. İlk yıllar bürokrasinin merkezi Ankara, ile iş dünyasının merkezi İstanbul arasında gidip geldik, büyük ölçüde tüm paydaşları da buluşturduk.

Türkiye İnterneti çok büyüdü, büyük oyuncuları ve iş dünyasını bu konferansa pek çekemiyoruz. Ama, biz hala, bu konferansın, internetle ilgilenenlerin buluşma noktası, sorunların tartışıldığı bir platform, ortak aklın arandığı bir ortam olmasını arzuluyoruz. Bu konferansın, internet konusunda, topluma entelektüel liderlik etmesi arzumuzdan ve çabamızdan vazgeçmedik. Ana sorunların ülkenin gündemine taşınması, o sorunlar için alternatif çözüm arayışlarına ortam sağlama amacı hala geçerli.

İnterneti Nasıl Algılamalı ?

İnternet hepimiz için yaşamın ayrılmaz bir parçası haline gelmiştir; ve yaşamı sürekli olarak hiç beklemediğimiz sekilde değiştirtirebilmektedir. Bu konferansı düzenleyenler olarak, interneti, insanlığın yeni toplum biçimi olduğunu düşündüğümüz, Bilgi Toplumunu oluşturan araç ve kavramların temsilcisi olarak görüyoruz. Sanayi devrimi insanın kol gücünü çokladı, onun etkin kullanımını mümkün kıldı. İnternetin temsil ettiği devrim ise, insanın beyin gücünü çokluyor, onun ürünlerinin paylaşılmasını, yeniden üretilmesini kolaylaştırıyor. İnternet Bilgi Toplumunun taşıyıcısı, ön modeli, katalizörü konumunda. Yaşam gitikçe artan bir şekilde bilgi ve enformasyon üzerine dönüyor. Artı değer yaratmanın ana unsuru, bilgi, ar-ge, inovasyon, yani eğitimli insanların beyinsel ürünleri oluyor. İnternet bireyi özgürleştiriyor, güçlendiriyor. Kitlelere örgütlenme ortamları sunuyor, onları güçlendiriyor. Hiyararşik yapıları kırmaya başlıyor. Nasıl sanayi devrimi sancılı olduysa, Bilgi Toplumuna dönüşüm de uzun ve sancılı olacaktır. İnternet dünya üzerinde 3 milyar insanın katıldığı bir paylaşım, öğrenme, üretim ve eğlence ortamıdır. İnternet, sektörleri yeniden yapılandıran, meslekleri değiştiren, kamu yönetimi, demokrasi, hizmet ve ticareti yeniden tanımlayan devrimsel bir gelişmedir. Birbirlerini hiç görmeyen insanlar, insanlığın ortak mülkiyeti için ürünler geliştirmekte; özgür yazılım, açık erişim, açık ders malzemeleri, açık bilim, açık tıp, açık biyoloji gibi projeleri hayata geçirmektedirler.

Dünya Nerede, Türkiye Nereye Gidiyor ?

Internetin boyutları konusunda bir kaç rakam verirsek: 3 milyara yakın insan internet kullanıcısı. İnternete kayıtlı bilgisayar sayısı 1 milyarı aştı. 950M web var. 140M’sı uluslararası, toplam 276M kadar alan adları var. Blog ve video sayısının yüz milyonlar ölçüsünde olduğunu biliyoruz. Google artık sayfa sayısı vermiyor, ama 2008 de 1 trilyon URL’e ulaştığını açıklamıştı. Facebook milyarı aştı (1.350B), twitter 284-645M , Linkedin 260M, wordpress 75+600 M blog var, vine 40M, instagram 200M, Pinterest 70M. Türkiye’ye gelince 16-74 yaş grubunde kullanım %53, Erkekler %63.5, Kadınlar %44.1, bu orta doğu anadoluda %37.6, % 50.5 % 24.2 düşüyor . Düzenli kullananlar 44.9, 54.3. 35.5. Internete kayıtlı bilgisayar 7.2 milyon rapor edildi. TR altında 357 bin alan adı var. Yurt dışında da 1.3M civarında var . Kabaca değerlendirirsek; dünya ortalamasını yakaladık ama, Avrupa ortalamasını yakalayamadık.

Uluslarası indekslere durum, parçalı bulutlu; coğunlukla bulutlu. ITU indeksilerinde durum: ICT gelişmede 68/166, beceride 48/166 , internet kullanımında 77/166, erişimde 61/166. Fiyat sepetinde ise 67/166. Dünya geniş bant indeksinde 70/173. Dünya ekonomik formu indeksinde uzunca bir dönem geriledik; indeksi değiştirdiler, 70’lerden 52’ye sıçradık, 45 ve bu sene 51/148. Yine Dünya Ekonomik Forununda Rekabet indeksinde bir sıçrama yaparak 59 dan 43’e sıçradık, 44/148. Ama, WIPO ve INSEAD’ın ürettiği Inovasyon indeksinde 54. Birleşmiş Milletlerin e-devlet indeksinde 71/192 ama e-katılımda 111/192 sıradayız. İnsani gelişme, demokrasi, basın ve ifade özgürlüğü, ve toplumsal cinsiyet indekslerinde çok kötüyüz; 69/192, 125/142, 154/179 . WWW vakfının sıralamasında 58/81 durumdayız: bu özgürlük, içerik ve yarar alt indekslerinde de aynı civarda.

Türkiye İnterneti gelişiyor. Mobilde ilginç uygulamalar var, en yeni cihazları alıyoruz. Finans sektörümüz internet işinde oldukça başarılı. Kamuda Maliye, Sağlık, Adalet sisteminde önemli projeler var. E-devlet hizmetleri sunumunda Avrupa ortalamasının üstündeyiz. Büyük özel sektör interneti oldukça iyi kullanıyor. Okullar için 8 milyarlık Fatih Projesi yürüyor görüntüsü veriyor. Çeşitli ar-ge teşvikleri var, teknokentler çoğalıyor. İnternet ve Bilişimle ilgili bakanlarımız var.

Türkiye Gemisi Rotasını Bilgi Toplumuna henüz döndüremedi!

Bütün bunlara rağmen, ülkede Bilişim, Bilgi Toplumu konularında bir dağınıklık söz konusu. Ülkemizde planlı, sistematik, kapsamlı ve tutarlı bir Bilgi Toplumuna yöneliş olduğunu söylemek mümkün değil. 2006-2010 kapsayan Bilgi Toplumu Stratejisi ve Eylem Planı vardı, yenisi için bu sefer katılımcı bir şekilde çalışıldı, siyasilerin onayını bekliyor. Türkiye gemisinin rotasını bilgi toplumuna döndürecek boyutta sahiplenme, yapılanma, program, ve çaba yok. Arada bir söylenen iyiniyetli, parlak sözler, başlayan bir çok proje bu gerçeği değiştirmiyor. En başta, yeterli kapsamda siyasal sahiplenme ve örgütlenme olduğunu söylemek zor. Vaktinin yarısını, 1/3′ünü buna ayıran bakan, müsteşar ve genel müdür düzeyinde kimse yok. Bilgi Toplumu çalışmalarını koordine edecek kapasitede bir yapılanma yok. Yapılanma olarak, Bilgi Toplumu Dairesi, Başbakanlık e-devlet grubu, Türksat, BTK, Sanayi Bakanlığı ve Ulaştırma Bakanlığı var. Bunun bir Parlamento ayağı yok. Sivil toplumu, özel sektörü, üniversiteyi ve basını işin içine çekecek, ortak aklı arayacak, saydam ve katılımcı, felsefe, kadro ve yapılar yok. Moda deyimiyle Multi stakeholder yapılar yok; bir başka deyişle Türkiye İnternetinde yeterli düzeyde yönetişim yok.

Yasaklar Kanayan Yara

Türkiye İnternetinin özgürlük boyutu ve yasaklar kanayan yarasıdır. . Ülkemiz 7 yıldır, 5651 nolu yasa yoluyla, tabir caizse, “İnternetle Savaşıyor”. Ülke olarak kanıksadık ama, 5651′in getirdiği yapı, demokratik hukuk devletinde kabul edilemez bir Hukuk Faciasıdır. I yBürükratik bir kadro 60 bin webi asaklamktadır, basitçe yargısız infaz sözkonusudur. Bu filtre uygulaması ile daha kötü bir hal aldı derken, devletin topyekün bir savaşı gizli kapaklı yürüttüğü izlenimini almaya başladık. Mevcut mevzuatı zorlayarak, yasa ve hukuk dışı bir şekilde, Youtube ve Twitter’ın kapatılması, Google DNS sunucuları için yapılan sahte sunucular, Türk Telekomun bütün iletişimi, https dahil izleme altyapısı kurma çabası, BTK’nın tüm trafiği izleme arzusu, insan hakları, hukuk devleti açılarından kaygı verici gelişmelerdir. Bunlar mevcut anayasal hakların ihlali nin ötesinde uluslarası hukukun, ve internet kurallarının/protokollerın çiğnenmesi anlamına gelmektedir. Bütün bunlar çocukları koruma bahanesiyle yapılıyor. Çocukların korunması konusunda bir anlaşmazlık yok. Sorun bunun nasıl yapılacağında. Hoşgörü, diyalog ve yönetişim içinde insan odaklı çözüm aramalıyız. Saydam ve katılımcı yapılarla, ifade özgürlüğü ekseninde sorunu çözmeliyiz.

Türkiyenin dünya İnternet literatüre girdiği iki nokta öne çıkıyor: biri YouTube/twitter engellemesiyle öne çıkan yasakçı bakış, diğeri ise Gezi olayları sırasındaki Sosyal Ağ kullanımıdır.

Bilgi Toplumu Strateji ve Eylem Planın temel hedefi, emek yoğun bir ekonomiyi ve kırsal ağırlıklı bir toplumu, bilgi yoğun bir ekonomi ve toplumsal yapıya dönüştürmek olmalıdır. Farklı disiplinlerden uzmanları barındıran, esnek, bağımsız, inisiyatif alabilen, yönetişimi temel alan bir yapı gerekir. Türkiye’yi Bilgi Toplumuna taşıyacak kadroları yetiştirmeye yönelik çalışan bir programımız ve politikalarımız yok, ve var olan kadroları kamuda tutacak insan kaynakları politikalarımız sorunlu. Serbestleşme mevzuat olarak tamam ama, pratikte ağır aksak ilerliyor; istatistikler fiili tekelin devam ettiğini gösteriyor. Bir başka deyişle bilişim ve internet sektöründe tam rekabetin olduğunu söylemek zor.

Dünya Çocuklara Programlama Öğretmeye Çalışıyor!

Ülkemizde Bilişim insan gücünde ciddi sorunlar var; en başta vizyon ve plan eksikliği öne çıkıyor. Okullarda bilişim eğitimini sorunlu. İlk 12 yılı düşünürsek, temel bilişim eğitimi seçmeli ve medya okuryazarlığı de seçmeli halde idi. Şimdi Bilişim Teknolojileri ve Yazılım Dersi kararı verildi. ACM lise fen kolunda bir öğrencinin 6 bilgisayar bilimi dersi almasını öneriyor; bu kültür derslerin ötesinde. Öğrencilerimize, bilgisayar/bilgi okur yazarılığı dışında, etik, güvenlik, estetik ve temel programlama, ağ, veritbanı ve bilişim sistemleri kavramlarını öğretmeliyiz Dünya çocuklara programlama öğretmeye çalışıyor. Tim Benners-Lee poltikacılara programalam öğretmek istiyor.

İnternetden ve Sosyal Ağlardan Korkmayın, onları ciddiye Alın!

Bütün dünyada devletler, interneti zapturapt altına almak istiyorlar, ama kitleler daha açık bir toplum istiyorlar; saydamlık, hesap verilebilirlik, yönetime katılma, ve refahtan pay istiyorlar. Bunu kamu yönetiminden istedikleri kadar, tüm kurumlardan istiyorlar. Wikileaks’i dünya yurttaşlarının gerçekleri öğrenme, saydamlık talebi penceresinden bakmak gerekir. Snowdeni de aynı yönde yapılmış önemli bir katkı olarak görmek gerekir.

İnternet, sosyal ağlarla, yeni medyayla, kitlesel projelerle, pek çok insanı tedirgin ediyor. İnternet yaşamın vazgeçilemez bir gerçeği oldu. Biz diyoruz ki, İnternet’den Korkmayalım! Onu öğrenelim! Olanaklarını ve olası risklerinin farkında olalım. İnterneti kendimizi geliştirmek, işimizi geliştirmek, daha iyi yapmak, daha iyi dünya vatandaşı olmak için kullanalım. Nasıl elektriği, telefonu kullanıyorsak, interneti de aynı ölçüde doğal kabul edelim. Kendimizi özgürleştirmek, yenilemek için kullanalım. Demokrasiyi geliştiren bir yurttaş olarak katkımızı göstermek için kullanalım, toplumsal katılım ve denetim için kullanalım.

Bu konferansta toplam 34 oturumda 8 Panel/Form, 13 seminer ve 10 bildiri ve 2 Çalıştay oturumu yapılacaktır. İnternetin, ticari, hukuksal, sosyal boyutlarını kapsayan 40 bildiri arasında İnternetin tüm boyutları hakkında bildiri bulmak mümkün. Eğitim seminerleri, hem bireysel kullanıcıya, hem kurumsal kulanıcıya, hem Yazılım Şirketlerine, yönelik, hem bilim adamına, hem programcıya hem de girişimceye yönelik olacaktır. Seminerlerin önemli kısmı Özgür yazılım etrafında olacaktır. Linux ve Özgür yazılımlar, İnternet üzerinde yayılmış 10 Milyon civarında gönüllünün ürettiği 1 Milyon civarında yazılımı kapsamaktadır. Özgür yazılım, bireyler, kurumlar ve ülkeler için tasarruf, istihdam, güvenlik ve rekabet açılarından önemlidir. Ülkemizin yazılım startejisin önemli bir parçası olmak gerekir. Özgür Yazılımın yansımaları olarak açık erişim, açık ders malzemeleri, açık bilim, açık kitap, açık biyoloji, creative commons, crowd sourcing, crowd funding, wikipedia gibi paylaşma ve katılım felsefeli projeler gelişmektedir.

Ülkemizdeki İnternet kullanıma yönelik, e-öğrenme, toplumsal yansımalar, e-tarım, e-ticaret konularında deneyim paylaşan bildirilerin yanında işin teknik boyutuna odaklanmış bildiriler de sunulacaktır. Bireysel/Siber güvenlik, Hukuk, Mobil, E-öğrenme, Sosyal Ağlar, Kent sistemleri, Bilgi Toplumu, Yönetişim, Demokrasi oturumları öne çıkmaktadır.

ISOC-TR Kuruluyor
İnternetin Uluslarası yönetiminde önemli bir rol oynayan ABD Merkezli İnternet Derneği (Internet Society) ile benzeri çalışmalar yapacak Ankara merkezli İnternet Derneği tanıtımını da bu konferansta yapılacaktır.
Konferansa katılmak, yeni şeyler öğrenmek, yeni dostluklar, yeni ağlar oluşturmanın yanında, Türkiye İnternetine sahip çıkmak, yasaklara karşı tavır almak, katılımcı, saydam ve demokratik bir toplum oluşturma çabasına katkı vermek, “bu çorbada benim de bir tutam tuzum var “ demek için önemli.

Biz, İnterneti çok önemsiyoruz. Bu konferansları da genelde interneti, özelde Türkiye internetini tartışacak, toplumun gündemine koyacak, ve ülkemizin gelişmesine katkı verecek bir platform, ortak akıl için bir ortam olarak tutmaya çalısıyoruz, çalışacağız. İnternet konferansını, ülkenin Bilgi Toplumu ve e-devlet çabalarının gözden geçirileceği, geri besleme yapılacağı bir dost ortamı yapmak istiyoruz.
Bu hedefe ulaşmada bugüne kadar istediğimiz başarıyı elde edemedik ama bu davet bizim!

Katkı veren herkese tekrar teşekkür eder, başarılar dilerim.

İnet-tr YK Adına
Mustafa Akgül
27 kasım 2014
[19. İnternet Konferansı açık konuşması ve Sunumu ]



02 December 2014

3. Türkiye PostgreSQL Konferansı'nda sosyal etkinlikler


Bu seneki PostgreSQL konferansı'nda sosyal etkinliklerimiz de var. Ankara ve İstanbul'da toplam 3 etkinlik planladık:


Continue reading "3. Türkiye PostgreSQL Konferansı'nda sosyal etkinlikler"

3. Türkiye PostgreSQL Konferansı başlıyor!


PostgreSQL Kullanıcıları ve Geliştiricileri Derneği, 2011 ve 2012 yıllarında düzenlenen 1. ve 2. Türkiye PostgreSQL Konferansları'nın ardından, 06 Aralık 2014 tarihinde 3. Türkiye PostgreSQL Konferansı'nı Ankara'da TOBB Üniversitesi'nde düzenliyor.

Bu sene Türksat, EnterpriseDB ve Profelis Platin, Citusdata ve Okul Bilişim Gümüş, Kartaca, Positive, Skyatlas ve Yurdum Yazılım da promosyon sponsorları oldular. Ayrıca destekleri için TOBB Üniversitesi ve BMO'ya da teşekkür ederiz.

İlkinde 125 katılımcı, 8 konuşmacı, 5 sponsor firma, ikincisinde ise 250 katılımcı, 2 salonda 1'i yurtdışından toplam 12 konuşmacı, 1'i yurtdışından 8 firma sponsoru ile yaptığımız etkinlik için bu sene kamu ve özel sektörden 300'den fazla katılımcı beklenmektedir.

http://pgday.postgresql.org.tr/

PostgreSQL Europe başkanı, PostgreSQL Core Team üyesi, ve committer
Magnus Hagander, 2014 konferansında açılış konuşmasını yaparak bizi
onurlandıracak.

Konferans programına buradan ulaşabilirsiniz.

Konferans öncesi kayıt yaptırmanızı rica ediyoruz:

Sosyal Medya:

Facebook: https://www.facebook.com/events/1483047971981153
Twitter: @PgDayTR , resmi hashtag: #pgdaytr

Katılım herkese açık ve ücretsizdir.

Konferansta görüşmek üzere!


30 November 2014

Two-Factor Auth Destekli OpenVPN Server Kurulumu


IT altyapılarının güvenilirliğini ve bağlı olarak sürekliliğini sağlamak üzere uygulanması gereken süreç disiplinlerinde kritik data içeren mecralara erişimlerde sıkı güvenlik prosedürleri izlenmesi gerekiyor. Bu anlamda özellikle PCI-DSS ya da ISO 27001 standartlarına tabii olan ya da olmak isteyen firmaların, kendi networklerine “dışarıdan” erişim ihtiyacının bulunması durumunda implemente edecekleri VPN çözümlerinin, bahsi geçen güvenlik standartlarına uygun olması gerekiyor. Örnek olarak PCI-DSS uyumluluğu için kullanılan VPN çözümünde kimlik doğrulama işlemi en az iki aşamalı olarak gerçekleştirilmek durumunda. Bu zorunluluk PCS-DSS V3’de şu şekilde tarif edilmiş durumda:

Implement Strong Access Control Measures 8.3 – Incorporate two-factor authentication for remote network access originating from outside the network by personnel (including users and administrators) and all third parties, (including vendor access for support or maintenance). Note: Two-factor authentication requires that two of the three authentication methods (see Requirement 8.2 for descriptions of authentication methods) be used for authentication. 8.2 Authentication methods – Something you know, such as a password or passphrase – Something you have, such as a token device or smart card – Something you are, such as a biometric.

Bu tanıma göre, networkünüze uzaktan erişim sağlayacak her türlü bağlantı için yapılacak kimlik denetimlerinde madde 8.2’de belirtilen metodlardan en az ikisinin kullanılması gerekiyor. Günümüzde yaygın olarak kullanılan SSL VPN çözümlerinde PKI altyapısı kullanılarak, bir username üzerinden key ibraz etmek sureti ile kimlik denetimi gerçekleştirilip bağlantı kuruluyor. Ancak bu tek yönlü kimlik denetimi, anlaşıldığı üzere yeterli değil. Bu nedenle kullandığınız VPN çözümünün username/ password (ya da key) ibraz etmeye ek olarak token ya da bir biometric denetim mekanizmasını destekliyor olması gerekiyor. Biometric denetim mekanizmalarının oldukça sınırlayıcı ve maliyetli çözümler olduğunu düşünürsek, iki yönlü doğrulama için username + token mekanizmalarını birlikte kullanmak konunun pratik çözümü olacaktır. İşte bu konudan hareketle bu yazıda, bir SSL VPN implementastonu olan OpenVPN ve Google Authenticator kullanılarak two-factor authentication destekleyen bir VPN sunucusu kurulumundan bahsedeceğim. En nihayetinde halihazırda kullandığınız OpenVPN altyapınıza yazıda anlatıldığı şekli ile google authenticator entegrasyonu da yapabilirsiniz.


Devamini okuyun: Two-Factor Auth Destekli OpenVPN Server Kurulumu


Cagri Ersen tarafından Syslogs adresinde yayınlandı. | Permalink | Etiketler: ,



25 November 2014

Linux Kernel Internship


Last month I've applied Gnome Outreach Program for Women and sent patches for Linux Kernel. I've applied it because wanted to learn low level things. I also really like computer design and architecture topics. Actually, I have not enough knowledge about them but like to learn them.

Linux Kernel Community accepted to me as an intern. I'll study on Khugepaged swap readahead project. Working with Linux Kernel team will be great experience for me. They really want to help kernel newbies :).

Actually, studying on Linux Kernel needs a lot reading. Just for writing a few code lines needs to read one chapter from one book, a few blog posts about topic and ask something to developers :).

Nowadays, I've started to read about memory management issues like TLB, Huge Pages, Page Fault from one operating system book and also examine do_page_fault() function.

22 November 2014

Bazı Temel Terimler


Bu yazımda, veritabanı yönetim sistemleri dersinde yapacağımız proje ödevi için sıkça kullandığımız, kullanacağımız temel kavramladan bahsedeceğim.

URI(uniform resource identifier): Yani nizami kaynak belirteci, bir kaynağı ya da veriyi isimlendirmek için kullanılan bir standarttır. Aynı zamanda kaynağı nitelendirir.  Kısaca "adres" veya "link" olarak adlanadırabileceğimiz her türlü gösterimin mutlak syntax'ında neler olabilir, olamaz bunu belirleyen karakter düzeyindeki standartın adıdır.

URL(Uniform Resource Locator): İnternet'te bir kaynağa (belge veya resim gibi) rastgelen, standart bir formata uygun bir karakter dizgisidir.

HTML5: HTML(Hyper Text Markup Language)'nin 5. sürümüdür. HTML4 her ne kadar yeterli gibi gözükse de CSS ile yazılan fazladan kodlar hatalara sebep oluyordu ve bunu önlemek için HTML5 geliştirildi. CSS ile olan uyum sorunu düzeltildi ve beraberinde getirdiği yeni etiketler ile hem içerik ve görsele hem de arama motorlarına büyük kolaylıklar sağladı.

CSS (Cascading Style Sheets): HTML'e ek olarak metin ve format biçimlendirme alanında fazladan olanaklar sunan bir Web teknolojisidir. İnternet sayfaları için genelgeçer şablonlar hazırlama olanağı verdiği gibi, bağımsız olarak harflerin stilini, yani renk, yazı tipi, büyüklük gibi özelliklerini değiştirmek için de kullanılabilir. Bu tekniğin en önemli özelliği kullanımındaki esnekliktir.

JS: JavaScript, Brendan Eich tarafından geliştirilen (önceleri Mocha daha sonra LiveScript olarak adlandırılan) başlangıçta sadece istemci taraflı (client-side) yorumlanan bir betik dilidir C dilinin tarayıcılara uyarlanmış hâli diyebiliriz. Web sayfalarında dinamik içerik sağlamak ya da kullanıcıyla iletişim kurmak için kullanılmaktadır.

Web Server: Hosting işlemini İnternet protokolü üzerinden sunan bir sunucudur. Hosting, Web sayfalarını İnternet'te yayınlamak için gerekli alanın kiralanmasıdır. Diğer bir ifade ile hosting, bir Web sitesinde yayınlanmak istenen sayfaların, resimlerin veya dokümanların İnternet kullanıcıları tarafından erişebileceği bir bilgisayarda tutulmasıdır.

ODBC(Open Database Connectivity): Birbirinden farklı veritabanlarına standart metotlarla bağlantı yapmanızı sağlar. Bir nevi veritabanları ve uygulamalar arasında bir köprü görevi görürler.

JDBC(Java Database Connectivity): Java ile ilişkisel bir veritabanına erişmek ve verisel işlemler yapmak için program-veritabanı arasında köprü işini yapar.

ADO.NET(ActiveX Data Objects.NET): Microsoft tarafından sunulan, veritabanı ile uygulamalarımız arasında köprü görevini görmektedir. ADO.NET ile uygulama tarafımızda veritabanımıza bağlanabilir, verilerimizi buradan listeleyebilir, güncelleyebilir, veri ekleyebilir veya silebiliriz. ADO.NET ile SQL sorguları, komutlarını uygulama tarafımızda kullanabiliriz.

ORM(Object Relational Mapping): İlişkisel veritabanı (RDBMS) ile nesneye yönelik programlamanın (OOP) arasındaki ilişkiyi kuran ve ilişkisel veritabanındaki bilgileri yönetmek için, nesne modellerini kullanan bir tekniktirBasit bir ifadeyle kullanılan nesneleri(object) veritabanındaki tabloya bağlayıp veritabanı bağlantılarını(alışveriş) yapar. ORM tekniği belli bir programlama diline bağlı değildir ve her OOP dilinde yazılabilir/kullanılabilir.

Entity Framework: .NET platformu için geliştirilmiş olan ORM frameworklerinden biridir.

Hibernate: Java platformunda yazılmış bir ORM (Object/Relational Mapping) aracıdır.

Biz projemizde Django çatısını ve ide olarak PyCharm kullanıyoruz. 

Django python dilini kullanarak web siteleri geliştirebileceğiniz bir web frameworkudur. Python ile web sitesi yazmak için birden fazla web frameworku mevcutt, en yaygın olanı djangodur. 

Django  MVC yapısını kullanır. MVC yapısından bahsedecek olursak , django'da çoğu zaman MVT yapısı olarak da geçer. 

M(Model) bizi karışık sql komutlarından kurtaran ORM yapısını kullanan kısım burasıdır. Kendine has basit bir class yapısı ile veritabanı tablolarımızı oluşturmamızı sağlar. 

V(View), aslında veritabanından hangi verileri çekmek istediğimizi belirlediğimiz alan. Tamamen python kodları kullanılır.

T(Template) ise view dan alınan verileri verdiğimiz html alanıdır. Django'da templates diye bir klasör gelmez bunu kendimiz oluşturmalıyız. Sonra settings.py dosyasında template'lerin hangi klasörün altında tuttulduğunu göstermeliyiz. Böylece viewdan sadece html dosyasının adını yazdığımızda direk bu klasörün altında arama gerçekleşir. 





Google Hiring Process


This story started 4 months ago. I've got an email from a Google recruiter. She wanted to do a phone conversation with me. I was very happy to hear this and accepted the conversation immediately.

First phone conversation was initial phone interview, she asked me basic questions about data structures, bitwise operations, linux commands etc. But I think the questions were not basic :p I passed initial phone interview and preferred Site Reliability System Engineer position for myself. I took first round telephone interview with an Google engineer and used Google Doc for coding questions.

Before the first round to prepare myself I was studying algorithms, data structures, network, linux commands, troubleshooting. Following links were really helpful for me:

Geeks For GeeksGlassadorCareerupCracking Code InterviewsSystem DesignDevops Interview Questions.

I passed first round, the engineer said to me you did great most of this interview! I was really happy to hear this and couldn't believe what I heard :) The whole process was very excited, funny and nice for me.

We moved the process for second phone interview. Again I studied for same things and used Google Doc for coding questions. My second interview has only one question, when I replied the question, interviewer generated new questions which was derived from same question. Second round interview was not very good but my recruiter called me and said you passed it, we would like to invite you for onsite interview at one Google office, Google will pay your all expenses. I preferred Dublin office of Google which is headquarters for the Europe offices.

I prepared to practising English myself, and whole summer went English speaking courses, because in my country have no other chance to practising English unfortunately :(

Actually, my English is not very good and when talked with employees of Google I feel really excited so I couldn't talk much so many times :) however during the onsite interviews I discussed a lot on questions because it is my job, but for usual questions how are you?, are you excited?, do you have question? etc. this kind of questions I could talk less :) Engineers of Google are very understanding people to my English. Also in Google Dublin office, people coming from 65 different countries and there are 45 different languages.

Onsite interview have 5 different steps. For SRE (Site Reliability Engineer) position, I've got following steps and each step has 45 minutes with 5 different interviewers. Onsite interview is last round for Google hiring process.

1) ​​Non Abstract Large System Design
2) Troubleshooting / Problem Solving
3) ​Practical Coding - ​Ruby​
4) ​Design/Coding
5) Unix/ Linux ​Systems​

Onsite interview questions were not expected things for me :(. I read a lot of blog posts, they say the questions are very expected, but I think some of them really expected things however most of them were not. I also solved a lot of onsite interview questions before mine.

I couldn't pass the onsite interview however this was really great experience for me. The whole process was very exciting, every steps made me very happy and excited :).  I also met a few Google engineers and my recruiters. They are really helpful and friendly people.

Dublin is not big city so there is no a lot of people, it is not crowded. It was very rainy on my interview day. I stayed two nights in Dublin. After my interview I had time to discover the city. There is river which called as River Liffey in Dublin. It is like a map to find your road :p You can follow along the river so can find your hotel very quickly :).

I'm very happy to met with Google engineers. This was very good experience for me. I'm only 22 years old I can retry it, thanks a lot to Google.

19 November 2014

Yazılım şirketlerinde ki sorunlar ve çözüm yaklaşımları


Bu bloğu ilk açtığım zamanlarda (26.07.2007) henüz okulumu bitirmemiş, freelance yazılım işleri yapan, bir taraftan henüz debian tabanlı olmayan Pardus ile ilgilenen, destek veren bir yazılım geliştiricisi adayıydım. Staj dışında…

Haydi sifreleyelim girisimi (let's encrypt initiative)


EFF bugun internetin gelecegini degistirme potansiyeli olan let's encrypt adini verdikleri projeyi duyurdu. Mozilla, Cisco, Akamai gibi devlerin yani sira IdenTrust ve Michigan Universitesi arastirmacilarinin da katkilariyla olusturduklari yeni bir sertifika otoritesi olan let's encrypt, web'in http'den https'ye gecisi onunde kalan son engelleri de kaldirmayi amacliyor. Bu yazida https'nin http'ye gore artilarini siralamaktansa let's encrypt otoritesini, girisimin kurmayi planladigi sistemi ve su anda gelistirmekte olduklari ACME protokolunu anlatacagim.

Internet guvenligi arastirma grubu, ISRG, ismiyle yeni olusturulan ve kar amaci gutmeyen bir organizasyon tarafindan isletilecek let's encrypt sertifika otoritesinin hangi problemi cozmeye calistigini aciklayarak baslamak yerinde olacaktir diye dusunuyorum. SSL/TLS'in genis capta uygulanabilmesinin onundeki en buyuk engellerden en onemlileri kurulum karmasikligi, burokrasi ve sertifikalarin yuksek ucretleri olarak goruluyor. 2015 yazindan itibaren ucretsiz olarak sertifika dagitmaya baslayacak olan yeni otoritemiz su siralar tek bir komut calistirilarak, hazirda sunulmakta olan sitelerin alan adi dogrulamasini yaptiktan sonra https'ye gecirilmesi islemini yapacak bir istemci yazilimi ve bu yazilimin insa edilerken temel alindigi protokol uzerinde calisiyor. Let's encrypt bu surecte gozetecegi ana prensipleri ise soyle siraliyor;

Bedelsiz: Alan adi sahipleri kontrol ettikleri alanlar icin hicbir ucret odemeden sertifika sahibi olabilecekler

Otomatik: Sertifika alim sureci ve yenilenmesi ve sunucuda konfigure edilmesi gibi islemler tamamen otomatiklestirilerek minimum operator mudahalesi gerektirecek

Guvenli: Let's encrypt modern guvenlik tekniklerinin ve alandaki en iyi uygulamalarin implemente edilebilecegi bir platform olacak

Seffaf: Verilen ya da gecersiz kilinan tum sertifikalar incelemek isteyen herkese acik olacak

Acik: Gelistirilen protokol herkese acik bir standart olacak, gelistirilen yazilimlar ise elverdigince acik kaynak olarak sunulacak

Katilimci: Tek bir organizasyonun kontrolunde olmaktansa her acik standartta oldugu uzere topluluktan katilimcilarin fayda saglayacagi tumlesik bir girisim olmayi amaclayacak

Gelelim nasil calistigina. Altyapi ve istemci yazilimi tamamlandiginda kendi ifadeleriyle

sudo apt-get install lets-encrypt  
sudo lets-encrypt ornek.com  

komutlarini calistirmak tum ayarlari ve sertifika surecini halletmek icin yeterli olacak. Peki arkaplanda neler oluyor? Aslinda bunun icin istemci yazilimin ne yaptigina bakmadan once ACME protokolune bakmakta fayda var. Taslak halindeki RFC'ye gore genel hatlariyla protokol soyle.

Istemci yazilimi operatore hangi alan adlari icin sertifika istedigini soracak. Bu islemin ardindan sertifika otoritelerinin bir listesi gelecek. Eger secilen otorite ucretsiz sertifika saglayan bir otorite degilse odeme bilgisi bu asamada istenecek. Daha sonra yazilim operatore kisa bir sure icinde sertifikanin verilecegini bildirecek. Arkaplanda sunucu, sertifika otoritesi ile ACME kullanarak operatorun belirttigi alan adlari icin sertifika isteginde bulunacak. Sertifika otoritesinin verilen sertifikanin tipine gore belirledigi gereksinimler yerine getirildiginde verilen sertifika otomatik olarak indirilecek ve web sunucu sertifikayi kullanacak sekilde yapilandirilacak. Tercihen operatore e-posta, sms vb. gibi bir yontemle haber verilecek. Normal web hizmeti surecinde web sunucu sertifika otoritesi ile gerektigi taktirde konusarak OCSP (cevrimici sertifika durum protokolu) cevaplari, sertifika listeleri gibi bilgileri almaya devam ederek sorunsuz bir web sunma isinin yururlugunu saglamaya devam edecek.

Burada araya girip bir iki konuya acikliga kavusturayim. Yukarida web sunucu olarak bahsedilse de e-posta, xmpp vs. gibi sertifika kullanabileceginiz her hizmette ACME protokolunu ve bu protokol uzerinden calisan istemciyi kullanabileceksiniz. Su asamada organizasyon dogrulamasi(organization validation) ya da kapsamli dogrulama(extended validation) surecleri nasil isleyecek cok net olmasa da alan adi dogrulama icin(domain validation) bir sorun yok gibi gozukuyor. Protokole doneyim.

Standardimizda uc adet anahtar/anahtar cifti tanimi bulunuyor.

Ozne acik anahtari (subject public key): Sertifikaya konu olan alanlar icin dahil edilecek acik anahtar

Yetkilendirilmis anahtar cifti (authorized key pair): Sertifika otoritesinin herhangi bir kimligin yonettigi/yonetebilecegi sertifikalar icin iletisimde kullanacagi anahtar cifti. Bu cift birden fazla kimlik icin kullanilabiliyor.

Sifirlama anahtari (recovery token): Diger anahtarlarin ya da anahtar ciftlerinin kaybedilmesi durumunda sertifika otoritesine kimlik kanitlamak icin kullanilabilecek gizli anahtar

Butun iletisim https uzerinden json ile saglaniyor. Kimlikler ACME'de anahtar ciftleri ile ifade ediliyor. Bir alan adi icin istek yapilmadan once gecerli bir anahtar ciftinin ozel anahtarinin o alan adini kontrol eden tarafindan sahipliginin gosterilmesi gerekiyor. Bu kisim bildigimiz acik anahtarli sifrelemenin aynisi oldugundan uzerinde cok durmaya gerek yok. Alan adinin ya bir DNS kaydi ile ya da sunulan bir dosya ile bir ozel anahtar tarafindan kontrol edildigi kanitlaniyor. Sertifika otoritesi bu kanitlama basarili olursa basarili mesaji ve sifirlama anahtari donuyor istemciye.

Kimlik kanitlama isleminin ardindan istemci, belirtilen alan icin bir sertifika imzalama istegi olusturuyor(CSR) ve bu istegi ozel anahtari ile imzalayip sunucuya gonderiyor. Sunucu gelen istegin daha once dogruladigi anahtar ciftine ait olduguna emin olduktan sonra sertifikayi olusturuyor ve istemciye gonderiyor. Bu cevapta sertifika yenilemenin tekrar bir dogrulama gerektirmedigi durumlarda, istemci tarafindan yenileme icin kullanilabilecek adres de gonderilebiliyor. Sertifikanin iptali icin istemci basitce, ozel anahtariyla imzaladigi iptal istemini sunucuya gonderiyor ve sunucu bu istegi aldiginda sertifikayi iptal ediyor. Istemci ya da sunucu yazacaklar icin taslak standardin burada atladigim teknik detaylarina yukarida paylastigim protokol adresinden ulasmak mumkun.

Sistem 100 metre yukaridan bakildiginda aciklamaya calistigim sekilde isliyor. Ucretsiz sertifikalarin edinilebilmesine olanak taniyacagi ve TLS implementasyonu onundeki teknik engelleri kaldirma potansiyeli oldugu icin interneti degistirebilecek bir proje olarak goruyor ve heyecanlaniyorum. Umarim Postfix, Nginx, ejabberd gibi projeler de ACME'yi ve dolayisiyla let's encrypt sertifika otoritesini otomatik olarak kullanabilmek ve yapilandirabilmek icin gereken adimlari en kisa surede atarlar. Bu sayede gorece daha guvenli bir internet deneyimi icin gereken en temel adimlardan birini atmis oluruz.



13 November 2014

Doctrine 2 ile Optimistic Locking


Yoğun editör işlemlerinin olduğu projelerde aynı yazıyı içeriği güncelleme problemleri ile sıkça karşılaşılır.

Örnek senaryo;

  • 1. editör 1. yazıyı güncellemek için açtı.
  • 2. editör 1. yazıyı güncellemek için açtı.
  • 1. editör 1. yazıyı güncelledi.
  • 2. editör 1. yazıyı güncelledi(!).

Son değişikliği 2. editör yaptığı için 1. editörün yaptığı değişiklikler silindi. Bunu önlemek için 2. editöre “Senden önce 1. editör bu yazıyı düzenledi. Önce onun değişikliklerine bakmalısın.” demek gerek.

Peki bu uyarı sistemini ne ile kuracağız?
Optimistic Locking yöntemi ile.

Kısaca bu yöntemi şu şekilde çalışır:

Tablo ismimiz Post olsun. Post tablosuna “version” isminde bir sütun daha ekleyeceğiz. İlk insert işleminde version sütununa 1 yazılır. Her yazı güncellemesinde version sütunundaki sayı 1 arttırılır.

Kullanıcı içeriği güncellediğinde versiyon sayısı güncellemeden önceki sayı ile aynı değilse içerik daha önce birileri tarafından güncellenmiştir.

PHP’de bu işlemleri araya herhangi bir ORM koymadan halledebilirsiniz. Ancak sizin yerinize Doctrine 2 versiyonlama işlemini destekliyor.

Yapmanız gereken Post entity’nize bir @Version annotation’ı eklemeniz.

Örnek olarak hazırladığım Post ismindeki entity’e buraya tıklayarak ulaşabilirsiniz.

Entity sınıfında gerekli versiyonlama için düzenlemeyi yaptık.

Bu Post entity sınıfını kullanarak yazdığım örnek bir Symfony 2 controller’ı da şu şekilde:

namespace Acme\BlogBundle\Controller;

use Acme\BlogBundle\Entity\Post;
use Acme\BlogBundle\Form\PostType;
use Doctrine\DBAL\LockMode;
use Doctrine\ORM\OptimisticLockException;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{
    /**
     * @Route("/post/{id}")
     * @Template()
     */
    public function showAction($id)
    {
        $em = $this->get('doctrine')->getManager();
        $entity = $em->find('Acme\BlogBundle\Entity\Post', $id, LockMode::OPTIMISTIC);
        $form = $this->createForm(new PostType(), $entity, ['action' => $this->generateUrl('update_action')]);
        return $this->render('AcmeBlogBundle:Default:show.html.twig', ['form' => $form->createView()]);

    }

    /**
     * @Route("/update", name="update_action")
     * @Method({"POST"})
     */
    public function updateAction(Request $request) {

        $post = new Post();

        $form = $this->createForm(new PostType(), $post);

        $form->handleRequest($request);

        if($form->isValid()) {
            $formData = $form->getData();
            $post->setId($formData->getId());
            $post->setTitle($formData->getTitle());
            $post->setContent($formData->getContent());
            $post->setVersion($formData->getVersion());

            try {
                $em = $this->getDoctrine()->getManager();
                $em->merge($post);
                $em->flush();
            } catch(OptimisticLockException $e) {
                return $this->render('AcmeBlogBundle:Default:locking.html.twig');
            }

            return $this->render('AcmeBlogBundle:Default:success.html.twig');

        }
            return $this->render('AcmeBlogBundle:Default:error.html.twig');

    }
}

22. satırda Optimistic Locking kullanarak find işlemini yapıyoruz. 51. satırda OptimisticLockException ismindeki Exception için bir kural yazılı. Doctrine 2 bizim yerimize version sütununu kontrol ediyor, eğer değer aynı değilse OptimisticLockException isminde bir Exception fırlatıyor.

Örneğin; /post/5 yolunu iki ayrı browser tabında açıp, ikisinde de güncelleme yapılsın. İlk güncelleme çalışacaktır ve 5 numaralı satırın version sütununu 2‘ye yükselecektir. İkinci tabdan güncelleme yapıldığında orada version bilgisi 1 olarak kaldığı için OptimisticLockException‘ı fırlayacaktır.

Bazı kaynaklarda versiyonlama sütunlarını date time veya timestamp olarak da tutulmasından bahsedilebilir. Ancak olası zaman kaymaları için bu yöntem önerilmez.

Ayrıca Bkz.: Dirty read

Not: Symfony 2’de Doctrine 2 varsayılan olarak geldiği için Symfony 2 controller örneği verdim. Doctrine 2’yi başka frameworklerde de kullanabilirsiniz.



Outreach Program for Women 2015


Gnome Vakfının yılda iki defa düzenlediği Outreach Program for Women etkinliğinin Aralık 2014 - Mart 2015 dönemine kabul edilenler bugün açıklandı. 16 ayrı organizasyonun toplamda 44 kişi kabul ettiği bu etkinliğe başvurular önceki yıllarda olduğu gibi yoğundu ama Türkiyeden katılım yine maalesef oldukça az oldu. Bu yıl mezun olan +Ebru Akagunduz Linux çekirdeği için kabul edilen beş kişiden biri oldu. Ebru uzun süreli ve azimli çalışmanın mutlaka sonuç vereceğini göstermesi açısından çok iyi bir örnek. Onun gayretli çalışması kendinden sonrakilere de bir motivasyon kaynağı olacaktır diye umuyorum.

Birlikte çalışmış olmaktan gurur duyduğum Ebru'nun bu süreci çekirdek geliştiriciliğine taşımasını diliyorum. 

Meraklısı için: 2013, 2014

09 November 2014

PHP – Identity Map Pattern


$user1 = User::find(1);
$user  = new User();
$user1 = $user->find(1);

Bunlar ve buna benzer kullanımlar PHP içerisinde sıkça görebileceğiniz kullanıcı çekme yöntemleridir. User sınıfındaki find() metotu size bir UserRepository (ismi salladım) nesnesi döndürür oradan işlem yaparsınız.

Örneğin; Runtime’da iki alakasız yerde 1 numaralı kullanıcının veritabanındaki bilgilerine ihtiyacınız var.

Birinci yerde User::find(1) yaptınız ve SELECT sorgusu çalıştırdınız. Kodun farklı bir noktasında tekrar User::find(1) yaptınız ve tekrar SELECT sorgusu işlendi.

Ama daha önce 1 numaralı kullanıcı veritabanından çekilmişti. Tekrar SELECT yapmaya gerek var mı?

veya…

X metotu içinde User::find(1) yaptınız kullanıcıyı çektiniz ve kullanıcı adı Ali.

Sonra Y metotunda tekrar User::find(1) yaptınız. Ama Y metotunun içinde şöyle bir if koşulu var: “Eğer id 1 ise kullanıcı adını Veli yap”.

Y metotundaki kullanıcı adı Veli oldu. Ama geri X metotuna döndüğümde kullanıcı adı hâlen Ali kaldı.

Böyle birçok farklı senaryo düşünülebilir.

Buradaki temel problem her find yapıldığında yeni bir UserRepository objesinin geriye dönmesinden kaynaklanıyor.

Sistem geneli 1 numaralı kullanıcı için hep aynı nesneyi kullansa tekrar SELECT‘e gerek kalmayacak ve bir metotta kullanıcı adı setlendiğinde başka metotta da bu görülebilecek.

Peki bu nasıl sağlanacak? Identity Map Pattern ile.

Runtime’da objeleri cacheleyeceğiz.

User::find(1) işlemi için metotu hazırlayalım.

User.php

class User {
    public static function find($id) {
        return (new UserMapper)->init($id);
    }
}

Kullanıcı bilgilerinin bulunduğu UserRepository ile User sınıfının arasındaki bağlantıyı sağlayacak Mapper.

UserMapper.php

class UserMapper {
    
    private static $object;
    
    public function init($id) {
        if( ! isset(self::$object[$id])) {
            self::$object[$id] = (new UserRepository)->fetch($id);
        }

        return self::$object[$id];
        
    }
    
}

Son olarak da kullanıcı bilgilerini barındıran UserRepository sınıfı

UserRepository.php

class UserRepository {

    public $users = [['name' => 'Ali'], ['name' => 'Veli']];

    private $name;

    public function fetch($id) {
        if( ! isset($this->users[$id])) {
            throw new InvalidArgumentException;
        }

        $userRepository = new self; 
        $userRepository->setName($this->users[$id]['name']);

        return $userRepository;
    }

    public function getName() {
        return $this->name;
    }

    public function setName($name) {
        $this->name = $name;
    }
}

Burada bir de DAO işlemleri için ekstra sınıflar gerekiyor. Ancak örnek olması için veritabanı olarak bir basit array kullandım.

Örnek işleme bakalım:

test.php


$user1 = User::find(1);
$user2 = User::find(1);

$user1->setName('Emre');
echo $user2->getName(); // $user2 objesi de Emre oldu

UserMapper sınıfında nesneler cachelenmeseydi ve her defasında return (new UserRepository)->fetch($id); yapılmış olsaydı $user2 nesnesinin getName metotu Veli sonucunu döndürecekti.

Ayrıca cachelendiği için UserRepository sınıfındaki fetch metotu da 1 defa çalıştı. Buradaki isset işlemini SELECT sorgusu olarak düşünebilirsiniz.

Ayrıca Bkz.: Optimistic Offline Lock



06 November 2014

Şifreli e-posta neden yaygınlaşmıyor?


encrypted-emailSayısal iletişimde e-posta önemli servislerden birisi. Şifreleme kullanılmadan yapılan e-posta trafiği, olası kritik verinin açık ve erişilebilir olarak İnternet ortamından geçmesi anlamına geliyor.

Günümüzde e-posta şifreleme yöntemleri karmaşık yapıya sahip ve tek taraflı e-posta şifreleme yöntemi bulunmuyor. Sayısal kimlik tabanlı şifreleme (IBE – Identity Based Encryption) günümüzde ideale en yakın çözümlerden. Şifreleme, e-postayı yazan ve okuyan taraflara en yakın seviyede başlatılır ve bitirilir. Yasal düzenlemeler ile nitelikli sayısal kimliklere, veri bütünlüğünü kanıtlama, kimlik doğrulama ve inkar edilemezlik özellikleri kazandırılmıştır.

E-posta şifreleme yöntemlerinin tamamı PKI (public key infrastructure) altyapısına dayanmaktadır. Tam bir PKI uygulaması, dijital sertifikaların dağıtılması ve yönetilmesini gerektirir. PKI masraflı ve bilgi birikimi gerektiren bir uygulamadır. PKI altyapısı kullanılarak yapılan e-posta şifrelemede açık anahtarların (public key) güvenli şekilde dağıtılması yapının problemlerindendir. Şifreli e-posta gönderilmek istendiğinde, karşı tarafın açık anahtarının güvenli şekilde önceden temin edilmiş olması gerekliliği, yapının en zayıf noktasıdır. Sayısal kimlik tabanlı e-posta şifreleme bu nedenlerden dolayı yaygınlaşamamaktadır.

Uygulanabilirliği yüksek ve son kullanıcı bilinci gerektirmeyen şifreleme alternatifi, e-posta sunucuları arasında TLS kullanılmasına dayanır. Fakat RFC 2487e göre, İnternet’e açık sunucular sadece TLS bağlantıları kabul edilecek şekilde ayarlanmamalıdır.



04 November 2014

Teknolojinin Kadınları Etkinliği Sunumum


Geçtiğimiz günlerde Kadın Yazılımcı topluluğu ile birlikte İstanbul Hackerspace'de Ada Lovelace Day ve Grace Hopper Celebration'ı Türkiye'de de kutlamak için bir etkinlik düzenledik, bu etkinlik için ben de bir sunum hazırladım.

Etkinlik ile ilgili Cansu Uludağ'ın değerlendirme yazısı hayli kapsamlı olmuş, okumanızı tavsiye ederim. Hem vesileyle benim bu blog yazısında (zaman sıkıntısından) bahsedemediğim diğer arkadaşlarımın şahane sunumlarını da okumuş olursunuz.

Bu blog yazısında, yoğunluktan ertelediğim bir işi yapmaya hazırlanıyorum. Etkinlikte yaptığım, hazırladığım sunumu paylaşıyorum. 

 Dünyada yazılım, bilişim ve teknoloji alanında kadınları teşvik etme amacıyla düzenlenen etkinlikler, programlar ve bu konuda kadınlara fon ayıran vakıflar hakkında bilgi verdiğim sunumuma buradan ulaşabilirsiniz.

Çoğunlukla kadınların yer aldığı özgür yazılım, açık kaynak projeleri, organizasyonlarının yer aldığı (içerisinde yer almamla bildiğim, takip ettiklerim nedeniyle) bu sunumu peyderpey de olsa güncellemek yapılacaklar listeme girdi bile! :)
                    



02 November 2014

PisiLinux


Pardus projesinin 2012 Ocak ayında sonlandırılmasından sonra yaşanan belirsizliğin ardından projenin teknik altyapı değişikliğiyle yoluna devam etmesine karar verildi. Normal şartlarda tamamladığım bu cümlenin ardından bir bağlantıya atıfta bulunurdum ama inanın İnternet’in derinliklerinde Pardus ile ilgili bu konudaki  bağlantıları aramak bile istemiyorum. Çünkü ben ve benim gibi pek çok kişi o süreçte çok üzüldü , kırıldı ve Pardus adını bile duymak istemedi ki hâlâ böyle hissedenlerin olduğunu biliyorum.

2012 Yılı bu belirsizlikle geçerken bazı Pardus severler başka dağıtımlara, bazıları da “yeni” Pardus’a geçiş yaptı geriye kalan kitle ise işimi göremeyecek duruma gelen kadar Pardus’ kullanmaya devam edeceğim derken çok az sayıdaki Pardus sever ise bir iddia ile ortaya çıktı “paketleri güncel tutacağız” Paketleri güncel tutma çalışmaları 2013 başlarında  Pardus’a özgü PİSİ , COMAR, YALI, KAPTAN gibi  teknolojileri kullanacak yeni bir Dağıtım oluşturmaya evrildi.

Tıpkı Pardus’un yıllar önce Gentoo’yu kuluçka dağıtım olarak kullanması gibi Özgün Pardus’un ardılı olan  bu yeni dağıtım da Pardus 2011.2 sürümünü kuluçka dağıtım olarak kullandı ve tıpkı ana rahmindeki bir cenin gibi bir süre sonra kalp atışları duyulmaya başlandı.

PisiLinux

PisiLinux

Yeni Dağıtımın Adı PisiLinux

Bir GNU/Linux dağıtımını diğerlerinden ayıran en önemli özelliği kuşkusuz kullandığı paket yönetim sistemidir.  Özgün Pardus’un en önemli özelliği de elbette diğer dağıtımlardan farklı olarak kendi paket yönetim sistemi olan PİSİ idi bundan dolayı yeni dağıtımın adı Pisi Linux oldu.

Çalışmalar sınırlı sayıda paketçinin çabalarıyla github üzerinde  sürdürüldü.  Paketler gözden geçirildi sürümleri güncel’e çıkarıldı, Pardus hata sistemine girilen yeni paket istekleri baz alınarak yeni paketler eklendi, Yalı içeriği güncellendi, Pisi’ye ihtiyaçlar gözönüne alınarak eklemeler yapıldı. Zahmetli ve uzun bir çalışmanın ardından geçtiğimiz Ağustos ayında ilk kararlı sürümü olan PisiLinux 1.0 yayınlandı.

29 Ekim 2014 günü yani Cumhuriyetimiz’in 91. Yıldönümünde ise güncellenen paketler 300 Mb geçtiği için ilk ara sürüm Pisilinux 1.1  sessiz sedasız yayınlandı. PisiLinux!u meydana getiren bu fedakâr ekip tıpkı iki yıldır yaptıkları gibi çalışmalarına sessiz sedasız devam ediyor…

Geçen iki yılda;

1- Kaderine terk edilen Pisi paketleri güncellediler.

2- Yeni paketleri depoya aldılar.

3- Yeni bir dağıtımı meydana getirdiler.

4- Pisi’ye yeni özellikler eklediler.

5- PisiLinux Topluluğunun temellerini attılar. Bu amaçla proje sayfası, Web Sitesi,  Forum, Hata Takip Sistemi,Yardım Kanalları‘nı hayata geçirdiler.

Bu tip blog yazıları genelde “etkin” destek çağrısı amacıyla yazılır ki ben de daha önce böyle birkaç yazı yazmıştım. Ancak bu sefer öyle değil.

Bu sefer sadece bir son kullanıcı olarak size PisiLinux’u sadece deneme amaçlı da olsa kurun kullanın demek için yazıyorum. PisiLinux 1.1 sürümünü indirin ve  önyargılarınızı bir kenara bırakarak kullanın. Bir bakın eğer işlerinizi yapamayacağınızı düşünürseniz de  kaldırın.  Bu seviyeye gelmiş olan Pisilinux artık sizden sadece kullanılmayı ve hak ettiği değeri görmeyi bekliyor.

Daha önce defalarca Linux dağıtımları kurdunuz kaldırdınız bir kez daha yapabilirsiniz haydi!

Sürüm Çıkış Târihi İndirme Bağlantısı
Pisi Linux 1.1 KDE  29.10.2014
Pisi Linux 1.0 KDE  14.08.2014
Pisi Linux 1.0 LXDE 14.08.2014
Pisi Linux 1.0 XFCE 14.08.2014
Pisi Linux 1.0 Minimal 14.08.2014



29 October 2014

Portspoof ile Network Scanner’ları Yanıtlamak


Portspoof, bir network scanner uygulaması kullanarak sunucular üzerinde çalışan servisleri tespit etmek isteyen saldırganların işlerini zorlaştırmak ve tarama sonucunu manupule etmek sureti onları yanıltmak üzere geliştirilmiş enteresan bir uygulamadır.

Bildiğiniz gibi network scanner uygulamalarının uzaktaki bir sistemde çalışan servisleri tespit etmeleri için kullandıkları bir takım teknikler vardır. Bu tekniklerden en tipik olanı ise TCP’nin üçlü el sıkışma prensibinden hareketle uzak sunucunun tüm portlarına (ya da ilgilenilen portlarına) birer SYN paketi göndermek ve alınacak cevaba göre ilgili servisin mevcudiyeti ya da durumu ile ilgili karara varmaktır. Örnek olarak üzerinde bir web sunucusu çalıştığını bildiğiniz uzaktaki bir sistemin 80. portuna bir SYN paketi gönderirseniz ve uzak sunucudaki bu servis çalışır durumdaysa -ayrıca herhangi bir engelleme yoksa- cevap olarak SYN+ACK paketi alırsınız. Bu şekilde ilgili servisin çalışır vaziyette olduğu uzaktan tespit edilir ve örneğin nmap ilgili port’u OPEN olarak bildirir. Aynı şekilde gönderilen SYN paketine RST paketi dönerse, uzak sunucuda ilgili portu dinleyen bir servis olmadığı anlaşılır ve scanner uygulaması durumu CLOSED olarak değerlendirir. Eğer uzak sunucu bir firewall üzerinden korunuyorsa ve SYN paketini gönderdiğiniz porta erişim izniniz yoksa ilgili paket -genel olarak- drop edilir bu nedenle de geriye herhangi bir paket döndürülmez. Bu durumda da network scanner uygulaması durumu FILTERED olarak bildirir, bu şekilde de uzaktaki sistemin bir firewall’a sahip olduğunu tespit edebilirsiniz.


Devamini okuyun: Portspoof ile Network Scanner’ları Yanıtlamak


Cagri Ersen tarafından Syslogs adresinde yayınlandı. | Permalink | Etiketler: ,



Fotoğraflarımıza Geotag Ekliyoruz (ExifTool)


geotagTek seferde fotoğraflarımıza GeoTag (konum etiketi) ekliyoruz. ExifTool, GeoTag işlemlerinde kullanabileceğiniz güçlü bir komut satırı uygulaması. Paket yöneticimizle ExifTool‘u yükledikten sonra, fotoğraflarımıza ekleyeceğimiz konum etiketinin enlem ve boylam bilgisini DD (decimal degrees) olarak belirliyoruz. Aşağıdaki komut ile imaj dosyalarımıza koordinat bilgisini ekleyelim;

exiftool -GPSLatitudeRef=N -GPSLatitude=39.925716 -GPSLongitudeRef=E -GPSLongitude=32.838016  *.jpg

Windows işletim sistemlerinde de fotoğraflara ExifTool ile GeoTag eklemek mümkün. Çalıştırılabilir win32 dosyayı indirip aşağıdaki gibi isimlendirdikten sonra dosyalarınızı bu exe dosyası üzerine sürükleyip bırakmanız yeterli.

exiftool (-GPSLatitudeRef=N -GPSLatitude=39.925716 -GPSLongitudeRef=E -GPSLongitude=32.838016).exe


27 October 2014

apt-get Komutunun Güzellikleri – 2


Birkaç ay önce aynı adı paylaşan bir başka yazıda yazdıklarıma benzer şekilde bugün yine apt-get ile yapılabilecek bir başka numara öğrendim, geç öğrenmişsem affola :) Problemimiz şu olsun: sistemde var olan bir paketi kaldırırken aynı zamanda başka bir paketin de yüklenmesini sağlamak. Normal şartlar altında sistemden bir paketi kaldırırken remove/purge parametresini, sisteme yeni bir paketi kurarken de install paremetresini kullanırız:

# apt-get install libreoffice-kde
# apt-get remove libreoffice-gtk

Yukarıda örnek verdiğim iki komutu aslında bir arada kullanmak mümkünmüş:

# apt-get install libreoffice-kde libreoffice-gtk-

Veya;

# apt-get remove libreoffice-gtk libreoffice-kde+

Aslında yukarıdaki her iki komutun da yarattığı sonuç aynı fakat yaptıkları işler farklı: ilk komut libreoffice-kde paketini kurarken sonuna ‘-‘ işareti koyduğumuz libreoffice-gtk paketini sistemden kaldırıyor, ikinci komut ise libreoffice-gtk paketini sistemden kaldırırken sonuna ‘+’ eklediğimiz libreoffice-kde paketini sisteme kuruyor.



25 October 2014

Bonding Network Interface Kullanımı


RedHat tabanlı  işletim sistemlerinde iki veya daha fazla ethernet interface olması durumunda bonding network interface kullanarak, ethernetlerin load balance bond, round-robin bond ya da  fault tolerant bond şeklinde çalışması sağlanabilmektedir. Bu sayede bir interface down olması durumunda sunucuya erişim ikinci interface üzerinden devam edecektir.

Sunucumuzun bond interface ayarlarını aşağıdaki ip adresine göre yapacağız.

Bond Interface Oluşturma

# vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
 IPADDR=172.16.41.10
 NETMASK=255.255.255.0
 GATEWAY=172.16.41.1
 ONBOOT=yes
 BOOTPROTO=none
 USERCTL=no

 Eth0 ve Eth1 Interfacelerin Düzenlenmesi

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
 ONBOOT=yes
 BOOTPROTO=none
 HWADDR=00:1F:29:E6:EB:2A
 USERCTL=no
 MASTER=bond0
 SLAVE=yes

#vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
 ONBOOT=yes
 BOOTPROTO=none
 HWADDR=00:26:55:35:24:FF
 USERCTL=no
 MASTER=bond0
 SLAVE=yes

Fault Tolerant ( Aktif/Pasif Mod )

Ben bond çalışma modunu aktif/pasif moda göre düzenleyeceğim. Diğer mod ayarlarını linkten bulabilirsiniz.

# vi /etc/modprobe.d/bonding.conf

alias bond0 bonding
      options bond0 miimon=80 mode=1

Yukardaki şekilde düzenlemelerimizi yaptıktan sonra network servisini  yeniden başlatıyoruz.

# service network restart

# ifconfig
bond0     Link encap:Ethernet
          inet addr:172.16.41.10 Bcast:172.16.41.255  Mask:255.255.252.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  
          inet addr:172.16.41.10  Bcast:172.16.41.255  Mask:255.255.252.0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  
          inet addr:172.16.41.10  Bcast:172.16.41.255  Mask:255.255.252.0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

Ayrıntılı bilgi edinmek isteyenler için link1, link2



17 October 2014

Kitap Tanıtımı: İlizarov Günlüğü


Dostum Sezai Yeniay ilk kitabını ‘İlizarov Günlüğü’nü geçtiğimiz hafta Google Play Kitaplar’da yayımladı. Zor bir zamanında yazdığı ve el birliği ile hazırladığımız bu kitabın burada tanıtımını yapmaktan da kıvanç duymaktayım.

İlizarov Günlüğü

İlizarov Günlüğü

“Sanıldığının aksine doğa en mükemmele evrilmiyor, en kolaya evriliyor…” – Sezai Yeniay, İlizarov Günlüğü

Sezai’nin kitabı bir günlük… Çocukluğunda geçirdiği bir trafik kazası neticesinde yaşadığı onca ameliyattan sonra bir son ameliyatın hikayesi. İlizarov tekniği ile kemik uzatımı sürecinde yaşadıklarını teşvikimizle, başkalarına da faydalı olsun diye, bir internet günlüğünden (http://ilizarovgunlugu.wordpress.com/) yazmaya başlamıştı. Bittiğinde bunu kitaplaştırmak için kendisine söz vermiştim. Geç de olsa eşimin yardımı ve özgür yazılım araçlarıyla bunu başardık.

Kitabı değerlendirmek gerekirse, İlizarov Günlüğü ameliyatı ve teknik-tıbbi yaşananları anlatan bir kitap değil. Kitabı okuduğunuzda kader, talih ve hayatın ne kadar çileli olabileceği ve insanın bir şekilde bu zorlu engeller karşısında kendine bir yol çizebileceğini ve başarabileceğine dair inancınız pekişecektir.

İki gün önce hayatta ortalama bir insanın sahip olabileceği birçok şeye sahip bir insan olan Mehmet Pişkin’in intiharı üzerine hayatı sorgulamış olabilirsiniz… Benzer bir çok örnek gibi, İlizarov Günlüğü ve Sezai’nin hayatını önümüze koyduğumuzda, insanın en temel içgüdüsü olan yaşama güdüsünün ne kadar doğal ve doğru olduğunun görüleceğini düşünüyorum. Mutlak içgüdümüz olan yaşamın asla bize mutlu tarafını garanti etmediğini ve hayat oyununda kuralları biz belirlemesek bile mücadele gücümüzün tahminimizden de üstün olması sayesinde kazanacağımızı düşünüyorum. Galiptir bu yolda mağlup da diyebiliriz. Türümüz böyle… Yoksa alçılanmış kırık ayağı ile kağıt toplamaya çalışan çocuğun yaşam mücadelesini nasıl açıklayabiliriz ki?

En zor en umutsuz anlarda bile zaman içerisinde -bazen ‘o zaman’ durmuş ve geçmiyorcasına can yaksa bile- bir çıkış muhakkak vardır.

Bu nedenle İlizarov Günlüğü’nü okumanızı öneririm.

Kitabın hazırlanışı ile ilgili teknik kısma gelelim. İlizarov Günlüğü tamamen özgür yazılım kullanılarak yazılmış ve e-kitap biçimine dönüştürüldü; GNU/Linux tabanlı özgür işletim sistemleri üzerinde LibreOffice Writer ile yazıldı, LibreOffice için Writer2epub eklentisi ile e-kitap biçimine dönüştürüldü ve e-kitap yönetim yazımları Calibre ve Sigil ile son şekli verildi. Lisans olarak ise özgür bir lisans olan CC BY-SA 4.0 ile lisanslandı.

Eşim ve benim için bu ilk editörlük ve e-kitap oluşturma deneyimimiz oldu.

İlizarov Günlüğü’nü serbest şekilde dağıtmanın yanı sıra, bir sayısal yayıncılık platformunda yayımlamak kitabı daha bir kitap havasında görmemizi sağladı. (Eh biraz eski kafa bizde de var, kitaplar sanal da olsa bir raf üzerinde görülmeyi hakediyor diye düşünüyoruz…)

Nihayet Sezai kitabı Google Play Kitaplar‘da da yayımlamayı başardı.

lİlizarov Günlüğü Google Play'de

İlizarov Günlüğü Google Play’de

Kitabı Google Play Kitaplar‘dan ücretsiz indirebilirsiniz, Google Books uygulaması ile cep telefonunuzda ve tabletinizde veya web okuyucusu ile masaüstü bilgisayarınızda okuyabilirsiniz. Kitabı okuduktan sonra yorum ve değerlendirmenizi kitabın sayfasından yapmanız güzel olacaktır.

Kitabın epub, mobi ve PDF biçimleri de dilerseniz şurada mevcut.

Neyse çok uzatmadan, kitabı indirebileceğiniz bağlantıları paylaşarak yazıyı sonlandırayım.

Son olarak, birçok kişinin faydalanacağı bir birikimi sunduğu için Sezai’yi tekrar kutluyorum. Kitabın editörlüğünü devralarak sürüncemeden kurtaran eşime buradan bir kez daha teşekkür ediyorum.

İyi okumalar.



Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi


IstSec 2014 kapsamında yaptığımız, Ossec, Snort, Elasticsearch, Logstash, Kibana kullanarak “Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi” kurgulama konusuna değinen konuşmama aitait sunum dosyasını Linux Akademi Slideshare adresine eklendi; ilgilenenler için şöyle:

 


Cagri Ersen tarafından Syslogs adresinde yayınlandı. | Permalink | Etiketler: ,



11 October 2014

Kitap Yayıncılığı İş Akış Uygulaması Kodlarım GitHub’a Taşındı


2010 yılında bir yayınevi için kitapların yayına hazırlanması sırasında oluşacak hatalara karşı bir kontrol listesi geliştirmiş ve döküman üzerinden de bir uygulama geliştirmiştik.

2014 yılı ortasında yayınevi, web sitesiyle birlikte uygulamayı da kullanımdan kaldırdı.

Ekran görüntülerine şuradan ulaşabileceğiniz uygulamayı GPL Lisansı V3 ile lisanslayıp GitHub üzerinden paylaşıma açtım.

Buyrunuz.

https://github.com/yakusha/dusyayincilik.com