28 March 2015

Python Watchdog ile Dizin İzleme


Script real time olarak, arguman verdiğiniz path’i ve alt klasörlerini izleyerek, yeni oluşan yada silinen dosyaları bilgilendirme maili gönderen python scripti. Cron’a ekleyerekte arka planda sürekli çalışmasını sağlayabilirsiniz. Cron kullanımı hakkında bilginiz yok ise, bu yazımı inceleyebilirsiniz.

./check_dir.py /home/gokhan/Desktop

/home/gokhan/Desktop/file-5.22-1.fc22.src.rpm

deleted:
file-5.22-1.fc22.src.rpm

 

#!/usr/bin/env python3.4
__author__ = 'Gokhan MANKARA <*protected email*>'

import time
import sys
import smtplib
import socket
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler


class Check(FileSystemEventHandler):

    def send_mail(self, events, files):
        msg = MIMEMultipart()
        msg['From'] = '*protected email*'
        msg['To'] = '*protected email*'
        msg['Subject'] = 'Detected changes in the folder'
        text = "{0}\n\n{1}:\n{2}".format(events.src_path, events.event_type, files)
        msg.attach(MIMEText(text))

        mail_server = smtplib.SMTP('mail.domain.com', 587)
        mail_server.ehlo()
        mail_server.starttls()
        mail_server.login('*protected email*', 'password')

        mail_server.sendmail('*protected email*', '*protected email*', msg.as_string())
        mail_server.quit()

    def process(self, event):
        """
        event.event_type
            'modified' | 'created' | 'moved' | 'deleted'
        event.is_directory
            True | False
        event.src_path
            path/to/observed/file
        """

        files = event.src_path.split('/')[-1:][0]
        self.send_mail(event, files)

    def on_deleted(self, event):
        self.process(event)

    def on_created(self, event):
        self.process(event)

    def on_modified(self, event):
        self.process(event)


def lock(process_name):
    lock_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
    try:
        lock_socket.bind('\0' + process_name)
    except socket.error:
        sys.exit()

if __name__ == '__main__':
    args = sys.argv[1:]
    observer = Observer()
    observer.schedule(Check(), path=args[0] if args else '.', recursive=True)
    observer.start()

    try:
        lock('check_dir.py')
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

 



24 March 2015

Linux 4 Sürümü İnsanlığın Sonunu Getirir mi?


Linus Torvalds geride bıraktığımız ay Linux 4.0 sürümünü duyurdu. Şu an kernel.org sitesine bakıldığında 22 Mart 2015 tarihinde 4.0-rc5 sürümünün kernel arşivlerine girdiğini de görüyoruz.

“Peki başlık ne alaka?” derseniz, konuyla alakalı olarak aşağıdaki resim dolaşıyor internette:

terminator-linux41

İzlemeyen var mıdır bilmiyorum ama T-800, Terminator film serisinde Arnold Schwarzenegger’ın canlandırdığı katil robotun modeli. Bu ekran görüntüsü hangi Terminator filminden alınmış bilmiyorum ancak görünüşe göre gelecekte (hatta Torvalds’ın 4.0’ı duyurmasıyla korkarım zannettiğimizden daha da yakın bir gelecekte) insan-makine savaşlarında makinelerin işletim sistemi olarak Linux 4.1.15 çekirdeği çalışıyor olacak :)



23 March 2015

NFS sunucu portları nasıl sabitlenir?


11949906771066360341server.svg.hiNFS diğer teknolojilere göre ek yükü az, verimli ve hızlı bir dosya paylaşım protokolü. Fakat bilinen güvenlik açıklarından dolayı güvenlik duvarı arkasında çalıştırılması gerekiyor. Ek tanım yapılmadığında sabit 2, değişken 7 port kullanıyor. Firewall kuralı yazılabilmesi için bu portları sabitleyip iptables kuralını yazalım;

/etc/sysconfig/nfs dosyasına eklenmesi gereken satırlar;

RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
RDMA_PORT=20049

iptables kuralı;

iptables -A INPUT -m multiport --dports 662,111,2049,32769,875,892,2020,20049,32769 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -m multiport --sports 662,111,2049,32769,875,892,2020,20049,32769 -m state --state ESTABLISHED -j ACCEPT


22 March 2015

Sudo Komutlarının Loglanması


Daha önceki yazımda kullanıcıya nasıl sudo yetkisi verilebileceğinden bahsetmiştim. Bu yazıda da sudo yetkisi verdiğiniz kullanıcının uyguladığı komutları nasıl loglayacağımıza bakacağız. Önceki yazıda sudoers dosyasına kullanıcıyı eklemiştik, bu yazıda sudoers.d altına kullanıcıları oluşturacağız.

# vi /etc/sudoers.d/gokhan

gokhan   ALL=(ALL)   NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
Defaults iolog_dir=/var/log/sudo-io/%{user}

gokhan kullanıcısına şifresiz olarak sudo komutu çalıştırma yetkisi vermiş olduk. iolog_dir dizinini oluşturmamıza gerek yok, default olarak dizin oluşacaktır.

sudo-io dizinine baktığınızda birden fazla dosya oluştuğunu görürsünüz.

.
└── gokhan
    ├── 00
    │   └── 00
    │       ├── 01
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       ├── 02
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       ├── 03
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       ├── 04
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       ├── 05
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       ├── 06
    │       │   ├── log
    │       │   ├── stderr
    │       │   ├── stdin
    │       │   ├── stdout
    │       │   ├── timing
    │       │   ├── ttyin
    │       │   └── ttyout
    │       └── 07
    │           ├── log
    │           ├── stderr
    │           ├── stdin
    │           ├── stdout
    │           ├── timing
    │           ├── ttyin
    │           └── ttyout
    └── seq

Bu dosya çokluğunun içinde kaybolmak yerine aşağıdaki komut ile sudo izni verdiğiniz kullanıcının neler yaptığını görebilirsiniz.

# find /var/log/sudo-io/ -name log -exec cat {} \; | grep "::" -A 2 | awk -F: '$1 ~ /^[0-9]+$/{printf  "%s%s",(NR>1)?"\n":"",$1;next} {printf ";" $0} END{printf "\n"}'

1427012536;/var/log;/usr/bin/yum install
1427014071;/var/log;/bin/cat /etc/passwd
1427011890;/home/gokhan;/usr/bin/yum update
1427014063;/var/log;/bin/cat /etc/shadow
1427010846;/home/gokhan;/bin/ls /var/log/sudo-io/
1427010852;/home/gokhan;/bin/ls /var/log/sudo-io/gokhan
1427010823;/home/gokhan;/usr/bin/yum update
1427010863;/home/gokhan;/bin/cat /var/log/sudo-io/gokhan
1427011064;/home/gokhan;/usr/bin/yum update

 



19 March 2015

Çeviri: Önceki teknolojinin yerini hızlıca alan 3B Yazıcı teknolojisi bir fark yaratır mı?


Önsöz

3 Boyutlu Yazıcılar (İng. 3D Printers) geleneksel üretim araçlarından farklı olarak tasarlanmış bir ürünü çeşitli malzemeler ile sıfırdan oluşturan cihazlar olarak tanımlayabiliriz. Geleneksel modelinde üretim; kalıplar, dökümler, oyma, kaynak, dokuma vb gibi çeşitli farklı teknikler sayısız makine ve eğitimli emek ile gerçekleştirilirken, 3B yazıcıların temsil ettiği yeni üretim modelinde ise bilgisayar tasarımı ve bu tasarımı malzemeyi 3B şekilde yazan/basan/dokuyan bir makine ile üretim gerçekleşmekte.

Türkçemize “printer” her ne kadar “yazıcı” olarak geçmişse de bunun doğru bir karşılık olmadığını düşünüyorum. Yazma eylemi değil, yazılmış bir şeyi basma, baskı eylemi söz konusu. Hatalı olduğunu düşündüğüm bu karşılık 3B yazıcı kavramıyla iyice ortaya çıkmakta. Aşağıdaki metni çevirirken de bunun zorluğunu yaşadım. 3B Baskıcılar daha doğru bir kullanım diye düşünüyorum, ama terimi bu yazıda 3B yazıcılar olarak kullanmaya devam edeceğim, sonra bakarız…

3B yazıcıları belki de duymuş olabilirsiniz, basit el aletlerinden tutun yapay kalp cihazlarına kadar birçok şey bugün bu teknolojilerle yapılmakta. İşte bu yazıda da teknolojinin insan hayatını nasıl değiştirebildiğini bir kez daha göreceğiz.

Yazıyı çevirme amacım bu yazıyı okuduğumda hissettiklerimdi aslında… Kötülüklerin ve kötü insanların hayatımızı çevirdiği ve dünyamızı esir aldığını görmekte ve hissetmekteyken böylesine harika insanların neler yapabildiğini görmek beni çok duygulandırdı, hiçbir katkım veya paydaşlığımın olmadığı bu kişilerin yaptıklarından gurur duydum. Minnetimi de yazıyı Türkçeye çevirerek göstermek istedim.

Buyurun birlikte okuyalım…

***

Önceki teknolojinin yerini hızlıca alan 3B Yazıcı teknolojisi bir fark yaratır mı?*

Onsekiz ay önce Youtube’de hayatımı değiştiren bir video izledim (buradan görebilirsiniz). Güney Afrika’da doğuştan sağ eli olmayan Liam isminde bir oğlan 3B yazıcı ile üretilen bir protez el kullanıyordu ve bu sayede normal ve mutlu bir çocuk olabilmişti.

Gülen yüzü ve kararlılığı benim 3B yazıcılar ve topluluk fonlaması çözümlerinin gücünü anlamamı sağladı. İnsanların hayatlarında bir farklılık yaratmayı amaçlayan yeni oluşan bir gönüllü topluluğu olan e-NABLE‘da çabucak bir gönüllü oldum. Bir çocuğun hayatını 30$ değerinde plastik ve 30$ değerinde donanım ile değiştirme kabiliyeti beni 3B yazıcılar ile üretilen her şeyi sevmeye sürükledi. İşte bu Accucode’da  kıdemli müşteri temsilcisi olmamın nedenlerinden biri.

Liam-300x300Bu hafta Austion, Texas”da SXSW fuarında SX Crate’e katıldım ve nihayet arkadaşım olan bazı gönüllülerle yüzyüze görüşebildim. Hatta Rochaster Teknoloji Enstütüsü’nde araştırmacı ve e-NABLE‘nin kurucularından olan John Schull ile de buluştum. Bir avuç insan ile başlamış proje altı el tasarımı, iki kol tasarımı ve motor ve arduino kontrolüne sahip miyoelektrik kol tasarımıyla 4.400’den fazla kişiye ulaşmış güçlü bir gönüllü topluluğuna dönüştü. Bağışlar ve fedakar gönüllüler sayesinde 900’den fazla el özel olarak tasarlandı, test edildi, değiştirildi, 3B üretildi, montajlandı ve ücretsiz olarak dağıtıldı. (Bağışlar www.enablingthefuture.org/donate adresinden yapılabilir. 50$ değerinde bir bağış bir çocuğa el uzatabilir… Gerçek anlamda…)

Eğer Robert Downey Jr.’nin bir Ironman protez kolonu genç Alex’e sunuşunun hikayesini okuduysanız e-NABLE‘ı hali hazırda görev başında görmüşsünüzdür. Bu kol, Merkez Florida Üniversitesinde mühendislik okuyan doktora öğrencisi ve uzunca bir süredir e-NABLE üyesi olan Albert Manero tarafından kurulan bir gönüllü grup olan Limbitless Solutions tarafından üretildi. (daha fazlası Facebook sayfalarında).

AlexPring

Bu bir çocuğun bir süper kahramandan ilk hediye alışı değildi. 28 Ocak 2015 tarihinde altı genç süper kahraman güçlerini e-NABLE ve Marvel Universe LIVE! ile Dallas, Texas’da birleştirdiler… bizi şeytani Kötü Suçluların yaratacağı mutlak kıyametten korumak için! Oyuncu ekibi alçakgönüllülükleriyle protezleri kendilerine monte ederek ve çocuklara sunarak birkaç saatlerini geçirdiler.

Geçen hafta SXSW şovunda %100 geri dönüşümlü 2 litrelik soda şişelerinden yapılan plastik filament ile üretilen ilk 3B üretimleri gördüm. Bundan böyle arazileri biyolojik olarak çözülemeyen plastikle doldurmak yerine bu çöple çalışan bir protez el veya kol yarabiliriz.

Evet, önceki teknolojinin yerini hızlıca alan 3B Yazıcı teknolojisi bir fark yaratır mı? Geçtiğimiz yıllar içinde 900 çocuğun  ve 4.400’den fazla gönüllünün halihazırda bir fark yarattı.

3B yazıcıların nasıl bir fark yarattığı konusunda daha Accucode’un 3B Bölümü ile iletişim kurarak daha fazla bilgi alabilirsiniz.

*Özgün yazı: Can the disruptive technology of 3D printing make a difference? – http://accucode3d.com/can-the-disruptive-technology-of-3d-printing-make-a-difference/ 

***

Sonsöz

Bilimin ve teknolojinin insan hayatını nasıl daha iyi hale getirebiceğinin güzel bir örneği olan bu yazıyı okuduktan sonra çocukluğumdan beri üzüldüğüm birçok şeyin ileride ortadan kalkacağına yönelik umutlarım güçlendi. Bugün plastik ve küçük elektrik motorlarıyla yapılan bu el organik olmayan maddelerin 3B yazdırılmasıyla üretildi. Yarın ise organik maddeleri örneğin DNA’yı 3B yazıp, hücreler örüp dokular ve organlar üretilebilir. Bu sayede organ ve uzuz eksiklikleri giderilebilir. Bugüne kadar mekanik aksamlarla giderilen engeller gelecekte biyolojik 3B üretimle giderilebilir. Bugün bu çalışmaların öncülerini bilim haberlerinde halihazırda okumaktayız. Dilerim o günler çok yakın olur… Ah bir de görme engelliler… Sanıyorum görme engelli birisine görüş kabiliyetini yeniden kazandırmak dünyanın en mucizevi buluşu olacaktır.

3B yazıcı konusu çok geniş bir konu, ama bir gerçek var ki o da bu teknolojinin insan hayatını çok çabuk değiştireceği. Sadece insan hayatı değil, ekonomimizi de çok etkileyecek bir konu… Gelişmiş sanayi ülkeleriyle gelişmekte hatta geri kalmış ülkeler arasındaki farkı kapatabilir. Baskı kodu ve istenilen ürünü yazabilecek yetenekte bir 3B yazıcı ile dileğiniz her endüstri ürününü üretebilirsiniz. Bu bir araba da olabilir bir silah da… Dediğim gibi çok yönlü ve kesinlikle devrimsel bir konu. Zaten birçok yerde 3. Sanayi Devrimi olarak değerlendirilmekte.

Son olarak, görüldüğü üzere yeni çağın büyük bir teknolojisi ile karşı karşıyayız. Burada özellikle dikkat çekmek istediğim şey üretimin temel faktörü olan sermayenin beşeri sermeyeye karşı kaybediyor oluşudur. İyi mühendislere sahipseniz, o mühendislerin üreteceği sofistike yazılım ve donanım – ki bu 3B yazıcılar makine üretebilen makinelerdir – müthiş kapılar açabilir.

İş dönüp dolaşıp eğitime geliyor… Klasik ve kötü eğitim sistemlerimizden sıyrılıp, düşünebilen, üretebilen ve bu sayede farklılık yaratabilen bir insan kaynağı yetiştirmek her şeyin önünde olmalı.

İlginizi çektiyse, 3D Printing Google+ topluluğunu takip etmek eğlenceli olabilir.

Mutlu günler.



17 March 2015

Gogs


Gogs yeni bulduğum, Gitlab benzeri, Go ile geliştirilmiş, kendi sunucunuza kurabileceğiniz bir git servisidir. İnanılmaz derece kolay kurulumu, private repo desteği ve çok düşük sistem ihtiyaçları, kendisini küçük takımlar için biçilmiş kaftan yapıyor.

Çalışan bir sürümünü: https://try.gogs.io/ adresinden deneyebilirsiniz.

Sistem kaynağı kullanımına tekrar değinecek olursam, gogs şuan $5'lık digitalocean sunucumda, yaklaşık ~30MB bellek kullanıyor. Go ile geliştirilmiş olması, native bir uygulama olarak kurulmasıyla işlemci kullanımı da hayli düşük. Raspberry Pi bile minimum sistem ihtiyaçlarını karşılamaya yetiyor. SQLITE3 desteği de bulunan uygulama, ayrıca bir veritabanı sunucusuna ihtiyaç kalmadan kendi başına çalışabiliyor.

Uygulamanın daha ayrıntılı bir incelemesini ve Gitlab gibi diğer servislerle kıyaslamasını bu blog yazısında bulabilirsiniz.

Reddit'te bahsedildiği üzere, uygulamanın bazı yan etkileri de mevcut. Bunlardan bazıları:

  • Pull request yapılamaması.
  • Code review yapılamaması.
  • Uygulamayı kullanan tüm kullanıcıların, makinenize aynı kullanıcı (genelde git) üzerinden bağlanacak olmaları.
  • Private repoların aslında private olmaması. Depo adını/yolunu bilen biri, deponuzu klonlayabilir. Bu muhtemelen yakında düzeltilecektir.

Bu nedenlerden dolayı, kritik önem taşıyan geliştirme süreçlerinde gogs kullanılması önerilmiyor.

Kurulum

Sürekli kolay kurulumundan bahsettiğim uygulamanın kurulumuna da kısaca değinmek istiyorum. Ayrıntılı kurulum belgelerini gogs websitesinde bulabilirsiniz. Uygulamanın dağıtımlarına github sayfasından ulaşabilirsiniz. Aşağıdaki kurulum, uygulamanın binary olarak sağlanmış kurulumunu ele almaktadır.

sudo adduser --disabled-login --gecos 'Gogs' git
sudo su - git
cd ~
wget https://github.com/gogits/gogs/releases/download/v0.5.13/linux_amd64.zip
unzip linux_amd64.zip
cd gogs
chmod a+x gogs
./gogs web

Bu kadar! Go ile geliştirilmiş olması ve static linklenmiş bir uygulama olması bağımlılık ihtiyacını ortadan kaldırıyor.

Gogs varsayılan olarak, 3000 portunu dinleyecektir. Web tarayıcınızdan, sunucunuzun 3000 portuna bağlanarak kurulumunuzu tamamlayabilirsiniz. Gogs belgelerini okuyarak isterseniz kullanıcı kaydını kapatabilirsiniz. nginx gibi reverse proxy olarak çalışabilen http sunucularıyla da, isterseniz uygulamanızı 80. porta yönlendirebilirsiniz.

Varsayılan index olan gogs landing sayfası yerine, kendi profilinizi göstermek istiyorsanız, yazdığım nginx ayarlarını kullanabilirsiniz:

server {
    listen 80;
    server_name git.onur.im;

    location / {
        proxy_pass http://localhost:3000;
    }

    location ~ ^/$ {
        valid_referers blocked git.onur.im;
        if ($invalid_referer) {
             rewrite .* http://git.onur.im/onur;
        }
        proxy_pass http://localhost:3000;
    }
}


Kadın bilişimci etkinlikleri hakkında


Geçen pazar WomenTechmakers İstanbul etkinliğine katıldım. Yaklaşık 60 kadar kadın bilişimcinin konuştuğu, deneyimlerini ve bilgilerini paylaştığı etkinliğe katılım hayli yüksekti.

Her türlü örgütlülüğü faydalı bulur ve desteklerim. Yakın ilgi alanlarına sahip insanların bir araya gelmesinde hep fayda görürüm. İnsanların elbette kendilerine yakın buldukları gruplarla birlikte olmalarını da aklı başında herkes kabul eder sanırım. Konuya böyle bakınca kadın bilişimci etkinliklerini de gerekli ve faydalı buluyorum. Bu etkinlikten önce de bir çok benzer etkinliğe katılmış ve çokça kadın çalışma arkadaşı buralarda konuşmuş biri olarak katılmadığım bir noktayı yazmak istiyorum.

Toplumun her alanında kadınların hakettikleri yerde olmadıklarını biliyoruz. Sistem kadınları ya ucuz iş gücü olarak kullanmak ya da çocuk doğurup onlara bakan evinin kadını olarak görmek eğiliminde. Benim dinlediğim, konuştuğum kadınların (ve erkeklerin) önemli bir bölümü yaşadıkları sorunu bir sistem sorunu olarak görmüyorlar. Sorunu doğru tespit edemeyince çözümle ilgili de kafalar büyük oranda karışık oluyor tabi. Elbette konuşmalarını ufuk açıcı bulduğum kadınların sayısı da az değil ama bahsettiğim grup da çok kalabalık.

Kadınların aslında bilişim dünyasınında ne kadar iyi işler yapabileceklerini anlatırken konunun biyolojik taraflarına girmeleri ve vay efendim erkekler beyninin şu tarafını şöyle kullanıyormuş, şunları salgılıyormuş gibi söylemlerde bulunmalarını çok garipsiyorum. Bilişim sektörü güç gerektiren bir alan olmadığından (hoş gerektirse ne olacak; 193 kilo kaldıran kadın var) kadınların durumlarına itirazlarını sistemin kendilerine biçtiği rolü kabullenerek yapmaları bir sonuca varmalarını engelliyor bence. Aşağıda bu etkinliğin konuşmacılarından birinin konuşmasını tanıtımı var.


Kadınların yaşadıkları haksızlıklara itirazları sırasında 'biz doğurabiliyoruz ya, bunu mu yapamayacağız' demelerini bir kaç açıdan sakıncalı buluyorum. Bir kere bunu söylemek kadın olmayı anne olmakla özdeşleştirmiş oluyor ve doğurmamayı seçen, henüz doğurmamış olan veya doğuramayacak olanları kendinden görmemiş oluyor. İkinci olarak biyolojik olarak kadın vücuduyla doğmamış ama kendini kadın hissedenleri dışlamış oluyor bu tavır. Zaten birinin sadece doğurabildiği için bilgisayardan anlayabileceğini düşünmesini gerçekten aklım almıyor.

Bir de özgür yazılım dünyasında kadınlara bakış nasıl diye bakalım ve yazıyı uzatmayayım istiyorum. Aşağıdaki ekran görüntüsü kadınları özgür yazılım dünyasına katılmaya teşvik etmek için düzenlenen Outreach Program for Women ana sayfasından. Bakalım sadece kadınlar için düzenlenen bu etkinliğe kimlerin katılabileceği nasıl tarif edilmiş.


İki yaklaşımın farkı yerli ve yabancı olmasında değil elbette. Soruna iki farklı bakış, kadının bile iki farklı tarifi demek oluyor aslında. Cinsiyete, ırka, dine veya başka bir şeye göre ayrımcılığın olmadığı, sadece yaptığınız işin konuşulduğu özgür yazılım dünyasına bekleriz ;)

14 March 2015

Zfsonlinux Ram Kullanımı


Zfsonlinux kurulumunu ve yapılandırmasını önceki yazımda değinmiştim. Bu yazıda da zfs’in tüm sistemdeki boş rami kullanmaması ( yoğun olarak diske yazma işleminin gerçekleşmesi durumunda, sistem swap kullanımına geçebiliyor ) için yapılması gereken düzenlemeden bahsedeceğim.

Modprobe.d altında zfs.conf adında bir dosya oluşturuyoruz. Bu conf dosyasına zfs’in kullanım parametlerini gireceğiz. Bu yazıda zfs’in kullanmasını istediğimi max ram miktarını 8Gb olarak ayarlayacağız.

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

options zfs zfs_arc_max=8589934592

Ayarların aktif olabilmesi için sistemi yeniden başlatmamız gerekiyor.

# reboot

 Mevcut zfs arc kullanımı

Sistemde mevcut zfs arc durumunu arcstat.py komutu yardımıyla yapabiliriz.

# arcstat.py 1 5
    time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  arcsz     c
10:46:52     0     0      0     0    0     0    0     0    0      0  100M
10:46:53     0     0      0     0    0     0    0     0    0      0  100M
10:46:54     0     0      0     0    0     0    0     0    0      0  100M
10:46:55     0     0      0     0    0     0    0     0    0      0  100M
10:46:56     0     0      0     0    0     0    0     0    0      0  100M

arcstat.py nin kullanım parametreleri,

arcstat.py -h
Usage: arcstat [-hvx] [-f fields] [-o file] [-s string] [interval [count]]
        -h : Print this help message
        -v : List all possible field headers and definitions
        -x : Print extended stats
        -f : Specify specific fields to print (see -v)
        -o : Redirect output to the specified file
        -s : Override default field separator with custom character or string

 Konfigurasyonda kullanılabilecek parametreler

zfs.conf dosyasında kullanabileceğimiz parametleri linkten ayrıntılı olarak inceleyebilirsiniz.

 



13 March 2015

Node.js ile Inotify Event’lerini İşlemek


Geçen gün bir feature (özellik) isteği gelmişti. Bir servis sunucuya bağlanıp bir dosya oluşturacak ve içini dolduracak. Kullanıcıya ise bulunduğu web sayfasında sayfayı yenilemeden bu dosyanın oluştuğundan haberdar edilecek ve tabii sonra bu dosyayı kullanıcı görüntüleyecek.

Direkt 5 saniyede bir AJAX yapıp ilgili dosya oluşmuşsa bir div’e dosyanın oluştuğuna dair mesaj basabilirdim aslında. Ancak olayı biraz daha efektif hâle getirmek istedim. Çünkü AJAX istekleri beraberinde bir dizi overhead getirecekti.

Örneğin; İlgili sayfada 10 kişi olsa, 5 saniyede bir file system‘da yeni dosya var mı diye kontrol yapılması gerekecekti. 10 kişi ayrı ayrı 5 saniyede bir backend’e istek atacaktı. Bu da istediğim bir durum değildi.

Bir diğer problem ise dosyaya yapılan yazma işleminin bittiğinden emin olunması gerek.
Örneğin; AJAX isteği attım. İstekte dosyanın varlığını kontrol ettim. Sonra baktım dosya var mı? Var. Ön tarafa haber saldım “dosya oluştuuuu” diye.
Ama o sırada third-party servis dosyaya veri yazma işlemini bitirmedi. Kullanıcı da “e dosya oluştu madem açayım” derse, sçtık. Çünkü eksik veri görüntüleyecek hatta belki de hata alacak. Sonra ayıkla pirincin taşını.

Bu iş için esas olan “dosyaya yazma işlemim bitti” mesajının gerekliliği. E third-party servis sadece dosya oluşturuyor Gidip bu third-party servisin ekstra bir yerlere mesaj yazmasını da sağlayamam (dosyaya yazdım bitti gibisinden). Hadi yazdırdım diyelim, bir de gidip orayı kontrol etmem gerekecek.

vs. vs. Daha buraya yazmadığım tonla senaryo var bu iş için.

Kısaca bana “dosyayı oluşturdum“, “dosyaya yazdım“, “dosyayı sildim” vs. gibi eventler gerekliydi. Bu bilgileri ise Linux‘ta direkt çekirdekte bulunan Inotify eventleri çok güzel sağlıyor. Yani bilgi sağlam yerden geliyor.

Node.js‘te Inotify eventlerini handle edebilen güzel bir kütüphane var (detaylar, kullanım örneği linkte): node-inotify

node-inotify kütüphanesini ise socket.io ile birleştirip kullanırsanız tadından yenmez (Ben socket.io kullanmıştım, ama siz başka bir kütüphane elbette tercih edebilirsiniz). Çünkü bu şekilde ön tarafa bir socket açıp dosya değişikliklerini bu socket üzerinden yollayabilirsiniz.

Scala ve Java’da ise bu işleri Non-blocking I/O (java.nio) paketiyle yapabilirsiniz.



Büyük Sayılar Yasası ve Kumarbazın Yanılgısı


Büyük sayılar yasası, bir rassal değişkenin uzun vadede beklenen değere ulaşacağını söyler. Bunu iki farklı örnekle anlatıp, kumarbazın neden yanıldığını ifade etmeye çalışacağım. Birinci örnek bir zar örneği olsun; bir zarın 6 adet yüzü vardır ve her bir yüzdeki sayının toplamının ortalaması 3.5’tur. Bu durumda teorem bize zarı yeteri kadar attığımız durumda ortalamanın 3.5’a yaklaşacağını söyler (beklenen değer: 3.5). Yani zarı 1 kere, Devamını Oku […]

12 March 2015

FortiGate remote syslog ayarı


FortiGate 100D cihazda remote syslog ayarını bulmaya çalıştınız bulamadınız niye, cünkü web arayüzüne ayarları koymamışlar. Ancak CLI üzerinden erişilebiliyor. Yapmanız gereken SSH ile cihaza bağlanıp aşağıdaki komutları çalıştırmanız. senna: ~ $ ssh admin@sslvpn.acme.com admin@sslvpn.acme.com's password: sslvpn # config log syslogd setting sslvpn (setting) # set status enable sslvpn (setting) # set server syslog.acme.com sslvpn (setting) …

11. BİLMÖK'ün ardından


Bilmök'ü ilk 2010'da +mete bilgin +Metin Akdere ve +Meltem Parmaksız 'ın yaptıkları harika sunumla duymuştum (bu sunum hakkında bakınız +Bahadır Kandemir 'in pek güzel yazısı). O zaman sonraki bilmök'ler için tavsiyeler yazmıştım, neredeyse hepsini hala seneye Urfa'da düzenlenecek bilmök için önerebilirim (nasılsa dinleyen yok istediğini öner diyenlere hak veriyorum).

Bence bilmök'lerin temel sorunu organizasyonu düzenleyen öğrencilerin kendilerini konuşmacı olmaya değer görmemeleri. Üç gün süren etkinlikte konuşan öğrenci sayısı bir elin parmakları kadar bile değildi. Konuşmaların çoğu ders niteliğindeydi. Zaten hepsi bilgisayar mühendisliği öğrencisi olan bu büyük kalabalığı bir salona toplayıp ders gibi sunumlar dinletmek yerine etkileşimli bir etkinlik yapılsa daha iyi olurdu diye düşünüyorum (sanki ne düşündüğünü umursayan mı var derseniz onda da haklısınız).

Etkinliğin ilk gününde özgür yazılım hareketinin başlatıcısı Stallman vardı. Stallman 30 yıl önce dünyaya karşı bir savaş açmış ve bu savaşı kazanmış bir büyük adam olduğunun bilinciyle ve özgüveniyle konuştu. Bu etkinlikten bir hafta önce sabancı üniversitesinde de dinlemiş olmama rağmen tekrar dinlemekten büyük mutluluk duydum. Anlattıkları hep bildiğimiz şeylerdi ama çok sağlam argümanlarla destekleyerek konuştu.



Üçüncü gün bu yıl birlikte çalıştığım arkadaşlarımdan +Gülşah Köse LibreOffice sunumlarını Pebble ile yönetmek için hazırladığı pebble-remote uygulaması özelinden yola çıkarak özgür yazılım dünyasına nasıl dahil olunacağını kendi tecrübeleriyle anlattı. Tam da bilgisayar mühendisliği öğrencileri kongresinde böyle sunumlar olmalı dediğim gibi bir sunum oldu. Başlarda biraz heyecanlı olsa da bilgisayar mühendisliği öğrencisi bir genç kadının neler yapabileceğini göstermesi açısından çok başarılı bir örnek olarak konuştu.



Günün son oturumu ise bilişim sektöründe kadın olmak paneliydi. BMO'nun bir önceki başkanı Gölay Şakiroğulları, +Gülşah Köse ve +Zinnur Yesilyurt 'un konuştukları panel benim bu konuda dinlediğim en başarılı paneldi. Gölay hanım 30 yıllık tecrübesiyle konuşmasını çok ikna edici argümanlara dayandırarak konuştu. Yeni mezun olmasına rağmen Zinnur kadınların sektörde karşılaşılabilecekleri durumlardan bahsetti. Gülşah ağırlıklı olarak özgür yazılım dünyasının sadece kadınlara değil ırka, cinsiyete, dini inanca karşı bir ayrımcılık yapmadığını anlattı.


Bütün katılımcılarla özveriyle ilgilenen yerel organizasyon komitesine tekrar teşekkür ediyorum. Gülşah'a da kendisiyle gurur duyduğumu buradan da yazmış olayım.

11 March 2015

LibreOffice 4 serisinde bizden de bir şeyler var, daha çok olsun!


LibreOffice özgür ofis yazılımı 4 serisi ile birçok yeni özelliğe kavuştu. Bunun yanı sıra kod temizliği, kod denetimi (Coverity scan) ve 60.000 civarı belge ile yapılan sürekli ve yoğun testlerle daha sağlam bir hale geldi, çökme, donma gibi olayları neredeyse yaşamıyorum diyebilirim.

Bildiğiniz gibi OpenOffice.org’u geride bırakarak The Document Foundation çatısının kurulması ve LibreOffice’in yolculuğuna başlaması geliştirme modelinde önemli değişiklikleri de birlikte getirdi. Artık Sun gibi tam zamanlı geliştirici çalıştıran bir şirket arkasında değil. Kod katkısının çoğu dünya çağındaki bağımsız katkıcılar tarafından yapılmakta.

Başladığımız günden bugüne baktığımızda bir Brezilya olmasa da güzel şeyler yaptığımızı görüyorum. Ülkemizdeki kısıtlı insan kaynağı içinde kod katkısı veren kişi sayısının bir elin parmaklarından az olması üzücü ama yapılanlar mutluluk verici. Güzel olanı bence ne biliyor musunuz, arka planda çalışan kodlarla kalmayıp, bu yazıda evet şu arkadaşımız şunu yaptı ve gördüğünüzde onu anabilirsiniz diyebilmek.

Buyurun bakalım neler yapmış bir elin parmaklarından az sayıdaki cengaver LibreOffice geliştiricimiz. (Görselli açıklamaları LibreOffice Sürüm notlarından aynen alıntılıyorum)

1- Gökçen Eraslan – LibreOffice ile sayısal imzalı PDF belgeleri oluşturabileceğiz

Gökçen Eraslan’ın 2012 yılında Google Summer Of Code’un LibreOffice projesinde başladığı (Bknz:LibreOffice’de PDF İmzalamak: Başarılar Gökçen Hocam)  ve temel çerçevesini oluşturduğu PDF imzalama özelliği LibreOffice 4.4 sürümünde eksiklerini de tamamlayarak karşımıza çıkıyor.

Digitally signed PDF export

PDF’s generated by LibreOffice can now be digital signed directly from LibreOffice during the export. It works on Windows, OS X, and Linux, and on Windows, the built-in certificate functionality is used to store your certificates for signing. (Gökçen EraslanGSoC 2012, Markus Wernig – Wilhelm Tux, fund raising, Tor Lillqvist – Collabora)

Selecting a certificate for signing on Windows.

The Digital Signatures tab of the PDF export dialog.

 

2 – Efe Gürkan Yalaman – Uzman Yapılandırma ve Başlangıç Merkezinde Şablonlar

Efe Gürkan Yalaman’da tıpkı Gökçen Eraslan gibi GSoC öğrencilerinden. LibreOffice projesine 2013 ve 2014 yılında kabul edildi ve iki önemli özelliğin geliştirilmesine katkı verdi:

İlki 2013 yılındaki GSoC’dan ve geçtiğimiz yıl yayımlanan LibreOffice 4.2 ile duyurulan Uzman Yapılandırma. Bu mdül ile adı üzerinde LibreOffice uygulamasını ileri düzeyde yapılandırabiliyorsunuz

 

  • An Expert Configuration functionality has been added to the Options tab (Efe Gürkan YALAMAN). This can be disable by setting EnableExpertConfiguration to false in the user’s configuration.

About config page

 

LibreOffice 4.4 sürümünde bu özelliğe Araçlar – Seçenekler – LibreOffice – Gelişmiş yoluyla erişebilirsiniz.

Diğeri ise 2014 yılında katıldığı GSoC projesi olan Başlangıç Merkezinde şablonları görebileceğimiz, düzenleyebileceğimiz Şablonlar modülü oldu.

Start Center

Templates now appear directly in the Start Center and can be picked from there. (Efe Gürkan Yalaman, GSoC 2014; and Jan Holešovský, Collabora)

Templates in the Start Center.

 

 

Sadece bunlar değil, Efe’nin yaptığı ve bizim için önemli olan geliştirmelerden yerelleştirmeyle ilgili para birimimizin YTL’den sonra tekrar TL (TRY)’ye dönmesi ve bu para birimiyle ilgili biçimlendirmeler ve Türk Lirasının Yeni Sembolünün eklenmesi.

3- Gülşah Köse – Sunumlarımızı Pebble saatimizle yönetebiliyoruz.

Gülşah Köse diğer iki geliştirici arkadaşımızın aksine GSoC’a henüz katılmadı, diliyorum bu yıl başvurur. Necdet Yücel hocamızın teşviki ve yönlendirmesiyle LibreOffice Impress’e Android ve iOS kumandalarından sonra Pebble kumandasını da kazandırarak önemli bir işe imza attı. Kendi Pebble’ım ile kullanıyorum :)

PebbleRemote.com adresinden gerekli bilgileri alabileceğiniz bu ‘Havalı – Cool’ uzaktan kumanda katkılarımızı da beklemekte.

Pictures

 

 

Kendim kullanıyorum diye değil, gerçekten havalı bir sunum tecrübesine imkan tanıyor ;)

4- Barış Akkurt – Hakkında iletişim kutusunun iyileştirilmesi

Barış Akkurt LibreOffice 3.5 sürümünde LibreOffice’in Hakkında penceresinin geliştirilmesine kod katkısı veren diğer bir geliştiricimiz.

***

Ülkemizden LibreOffice’e kod katkısı verilmesi gerçekten mutluluk verici, hele bizim gibi son kullanıcıların görüp hissedeceği geliştirmeleri görünce insan iyice ümitleniyor. Ama sayı gördüğünüz gibi çok az, sadece 4…

Açık konuşmak gerekirse, OpenOffice.org mirasçısı bir yazılım olan LibreOffice epeyce silkinip kendi elbisesini giymeye başladı, ama daha alacak çok yol var… Özgür yazılım gönüllüleri ve kod veren kişilerin dahi beğenmediği yanları ortada. Ama ortada olan bir gerçek şu ki, katkı verilmeden bu iyileşmelerin olması mümkün değil.

LibreOffice’in özgür yazılım gönüllülerine ihtiyacı var, ülkemizin ise LibreOffice geliştiricilerine daha çok ihtiyacı var. 

Siz de LibreOffice’e Kod Katkısı Verin

Tabii, bir 'Feza Çağı Televizyonu' geliştirmek değil!

Tabii, bir ‘Feza Çağı Televizyonu’ geliştirmek değil!

Kod okur yazarlığı olan özgür yazılım severler LibreOffice’e vereceği her katkı çok değerli. Aza çoğa bakmamak gerekiyor. Biliyoruz ofis yazılımı sıkıcı olarak görülmekte, ama LibreOffice gerçekten eğlenceli bir proje. İyi insanlar, iyi ortam ve dünya çapında iyi etkinliklerle kendinize ve LibreOffice’e katkı verebilirsiniz.

1- ‘Peki nereden başlamalı?’ diyorsanız aşağıdaki bağlantılara bir göz atmaya ne dersiniz.

Bütün bilgiler burada: LibreOffice Geliştirme wiki sayfası – https://wiki.documentfoundation.org/Development 

Buradan başlayıp konuya ısındığınızda eğlenceli ilk adımlar olan EasyHacks bölümüne gitmenizi öneriliyor. Buradan dişinize göre bir EasyHack bulup çözünce hem LibreOffice üzerindeki kod hakimiyetiniz gelişiyor hem LibreOffice’e kod katkısı veriyorsunuz. Tek başınıza olacağınızı sanmayın, uzman LibreOffice geliştiricileri bu EasyHack’lerde size adım adım yardım da ediyorlar. Böylece ciddi bir tecrübe ve bilgi edinmiş oluyorsunuz. Kazan – Kazandır!

EasyHack‘ler gerçekten ilk adımlar için önemli. Tek varlık sebebi yeni geliştiricilerin gelişimlerine yardımcı olmak, yani sizin için orada bekliyorlar Açıklamalarında göreceğiniz gibi usta bir geliştiricinin çerez çekirdek çitlerken halledebileceği hackler ve siz çözün diye sizi bekliyorlar!

Bizi de unutmayın, ve LibreOffice Türkçe geliştirici listesine üye olun!

1.1- GSoC’a katılın!

Bitmedi, LibreOffice bu yıl da Google Summer of Code’a kabul edildi:
https://wiki.documentfoundation.org/Development/GSoC/2015

Şimdilik GSoC profje fikirleri şurada:
https://wiki.documentfoundation.org/Development/GSoC/Ideas

Aklınızda LibreOffice için bir fikir varsa ‘Ideas’ sayfasına ekleme de yapabilirsiniz. Yeni fikir eklemek için iki hafta gibi bir süre var. Aklıızda çalışmak, yapmak istediğiniz ve GSoC’a yakışır bir proje fikri varsa ekleyin derim

Ha bir de Çılgın Fikirler var ki – en son ESC toplantısında da ordan GSoCa bir şey çıkar mı bilinmez, fikirlerin çoğu çılgın…  https://wiki.documentfoundation.org/Development/Crazy_Ideas

Niyetiniz varsa 27 Mart’a kadar başvurunuzu yapmayı unutmayın!

Başvuru için fikir sahibi olmak adına Efe’nin yazdığı şu iletiye göz atın: http://listarchives.libreoffice.org/tr/gelistirici/msg00005.html 

2- ‘Ya ben daha çok Android falan…’ diyorsanız, LibreOffice’in Android sürümü ve uzaktan kumandasına göz atabilirsiniz.

3- ‘Kod okurum, şiir gibi de yazarım, LibreOffice’i de severim ama uğraşamam işim gücüm çok…’ diyorsanız, bağışlarınızla katkı verebilirsiniz: https://donate.libreoffice.org/tr/

4- ‘Tamam da, ben öğrenciyim/freelance’im az biraz da maddi getirisi var mı?’ derseniz sizi Freedomsponsors.org‘daki LibreOffice sayfasına alalım. Hem özgür yazılıma katkı verebilirsiniz hem de para kazanabilirsiniz. Detalı şurada anlatmışım: Freedomsponsors.org: Destek olun & Harçlık Kazanın

5- ‘Ya biz şirketiz, ihale, hizmet falan’ Bu daha geniş bir konu, kısa tutmak adına TDF’nin ihalelerine bakabilirsiniz;

5.1- Tender To Develop And Incorporate Usability Metrics Collection For LibreOffice (#201502-02)
http://blog.documentfoundation.org/2015/02/24/tender-to-develop-and-incorporate-usability-metrics-collection-for-libreoffice-201502-02/

5.2- Tender To Develop And Incorporate Multi-Language Support For UI And Test Cases Within Moztrap (#201502-01) http://blog.documentfoundation.org/2015/02/10/tender-to-develop-and-incorporate-multi-language-support-for-ui-and-test-cases-within-moztrap-201502-01/

Ayrıca Sertifika programlarına  katılabilirsiniz vs. detayları için benimle irtibat kurabilirsiniz.

PS: Dilimizde biten tüyleri ara ara alıyoruz.

Mutlu günler.



07 March 2015

Internet, Yeni Medya ve Özgürlükler


Yeni Medya Kongresi, Kadir Has Üniversitesi 26 Şubat 2015

Bu konuşmada, ben interneti nasıl anlıyorum, nasıl görüyorum; internet için ne yapmaya çalıştım, çalışıyorum, internet için kalın çizgileri ile ne yapılmalıyı, yeni medya ve özgürlük bağlantısına ağırlık vererek anlatmak istiyorum.

İnternet, Soğuk Savaş günlerinde, Sputnik’in yarattığı şok sonrasında, ABD’nin Bilim ve Teknolojiye yönelmesinin yarattığı ortamda bir proje olarak ortaya çıktı. İnterneti ortaya çıkartan ARPANET projesi, Ordunun Araştırma Ofisince fonlandı. Ama, Internetin ABD Ordusu için, askeri amaçlarla geliştirildiğini söylemek haksızlık olur. Licklider “Galactik Ağ” ile bugünlere yakın bir ağ hayal ediyordu. Bu 1963 de oldu, ArpaNet’in ilk düğümünün kurulması 1969 Eylül, TCP/IP’nin kullanıma girmesi ocak 1983, webin ilk tasarımı 1989, ayağa kalkması ise 1993’de oldu. Bizim İnternete bağlandığımız yılda 1993 idi.

Kanımca, İnternet insanlığın gelişmesinde Sanayi Devrimi boyutlarında bir gelişmeyi temsil etmektedir. Neelie Kroes, AB’nin önceki başkan yardımcısı ve Sayısal Gündem komiseri, NetMonial konuşmasında, interneti toplumu yeniden yapılandırma açısından, elektrik, matbaa ve sanayileşme toplamından daha fazla olduğunu söyledi. İnternet, hepimizin yaşamını köklü olarak değiştirdi. Bazılarımız, internet öncesini hatırlıyor ama genç kuşaklar internetsiz bir yaşamı hiç görmedi. Peki, interneti nasıl algılamalı? Nedir İnternet? Buna herkes muhtemelen farklı bir cevap verecektir. İnsanlık, bilim ve teknolojinin öncülüğünde yeni bir toplum biçimine geçişin sancılarını yaşıyor. Buna genelde, “Bilgi Toplumu” diyoruz. Bilgi hep önemliydi. Niye şimdi “Bilgi Toplumu” diyoruz? Ekonomik kalkınmasının ana motorunun, bilim, teknoloji, ar-ge ve inovasyon olduğu, kısaca “bilgi” bulutunda topladığımız, insan beynin ürünleri olduğunu anladık. Bunun sonucunda tüm ekonomik hayat, hizmetler, kamu yönetimi, eğitim, sağlık, eğlence, örgütlenme, halkla ilişkiler, pazarlama kısaca yaşamın tüm boyutları bir değişim, yeniden yapılanma sürecine girdi. Birey tarihte hiç olmadığı kadar öne çıktı; bireysel gelişme olanakları artı, kendi başına bir merkez oldu; kendi matbaası, radyosu, televizyonu, gazetesi mümkün. Bunu makul ücrete, bazan bedava, hızlı ve kolay, uzman olmadan, yapabiliyor.

Hepimiz internet sayesinde, sınırların fiilen ortadan kalktığı, sosyal ve kültürel açıdan birleşen bir dünyanın parçasıyız. Kitleler soysal ağlar üzerinden birleşmekte, örgütlenmekte, toplumsal, kültürel ve siyasal etkinlikler yapmakta. Dünyayı sarsan politik gelişmelere en azından katalizor olmakta. Dünya üzerinde dağılmış gönüllüler imece benzeri bir yöntemle tüm insanlığın ortak malı ürünler üretmektedir: linux ve özgür yazılım dünyası, wikipedia, açık ders malzemeleri, creative commons lisanslı sanat ve fikir ürünleri gibi. Veriye dayalı paylaşım ekonomisi, akıllı ulaşım sistemleri, büyük veri temelli yeni uygulamalar, mobil uygulamalar, IoT, ağ temelli servislerin uzaktan verilmesi gibi pek çok yeni uygulamalar ortaya çıkmaktadır. Kısaca, devrimsel bir gelişmeyi hep birlikte yaşıyoruz. Gelişmenin ne yönde olacağınızı biraz sezinliyoruz, epey de yanılıyoruz. Bu gelişmeyi bireyler, STK’lar, kurumlar olarak etkileme gücümüz var.

İnternetin işaret ettiği Bilgi Toplumun bireyleri, bağımsız, inisiyatif alabilen, yaratıcı, farklı ve aykırı düşünebilen insanlar olacaktır. Bir başka deyişle, bu tür insanları yetiştiremeyen toplumlar, yarışı kaybedeceklerdir. İnternetin tüm toplumu, kamu yönetimini, iş dünyası, sağlık, eğitim, eğlence vs’yi her gün değiştirdiği ortada. İnsanların, toplum içinde eşit bir yurttaş hatta eşit bir dünya vatandaşı olması için bu teknolojileri çok rahat, kolay ve etkin kullanabilmesi gerekir. Bu hem kendini geliştirebilmek, toplumsal hizmetlerden yararlanabilmek, hem de toplumsal yaşama, özellikle siyasal hayata katılabilmesi için elzem olduğu aşikar. İnternetin dünyaya açılan bir sokak olarak düşünürsek, sokaktan gelecek çeşitli tehditler için güvenlik ve mahremiyetin korunması için ciddi bir okur yazarlık gerekmektedir. Gerekli okur yazarlık seviyesi, dinamik olmalı ve sürekli geliştirilmelidir. Bu okur yazarlık düzeyine bilgi/bilişim/yeni medya okuryazarlığı diyoruz. Bu okur yazarlık düzeyine ulaşamamış insanlar, eşit yurttaş olmak yeteneğini kaybedecek ve geri kalacaktır. İnternete erişim temel bir insan hakkıdır. Bu görüş, hem BM belgelerine hemde Avrupa Belgelerine (Konsey, Parlamento) ve Anayasalara girmeye başlamıştır.

Bu konuda 2 yeni eğilimden bahsedeceğim. ABD’nin önemli Bilgisayar Meslek Örgütü ACM, lise fen kolundan mezunların bir çok bilgisayar dersi alması gerektiğini söylüyor. Bir başka deyişle, Bilişimin temel kavramlarını her yurttaşa öğretmek zorundayız. Bilişim sistemlerini “büyülü tek tuş” sistemi algısından kurtarıp, olanaklarını, limit ve riskleri öğretmeli, ağ, veri tabanı, güvenlik, mahremiyet, etik, estetik, ifade özgürlüğü, hukuk temel kavramlarını öğretmeliyiz. Bunu tarihçiye, iş adamına, tarımcıya, öğretmene, kısaca her yurttaşa anlatmalıyız.

Yeni gelişen ikinci nokta programlamanın herkese öğretilme çabasıdır. Web’in kurucusu Tim Berners-Lee, inovasyon kongresinde herkese program yazmayı önermişti. Poltikacılara programlama öğretmeliyiz ki, doğru düşünmeyi öğrensinler diyor. Programlama öğrenmenin düşünme alışkanlıklarını olumlu etklilediği, bütünsel düşünmeyi geliştirdiği düşünülüyor. Bu bakışın sonunda, ana okulunda pogramlama öğretme, programlama kampları, hacketonları, çalıştayları vs ile bütün dünyada en başta gençleri programlamaya alıştırmak ve sevdirmek yönünde bir çaba söz konusu. Okul öncesi çocuklara da programlama öğretme çabaları var. Türkiye’de bu yönde kampanyalar ve çalıştaylar yapılıyor, bu konuda uzmanlaşan şirketler var.

Türkiye Ne Durumda ? Ne Yapılmalı ?

Kalın cizgilerle bakarsak, iyimser yönde dünya ortalamasını yakaladık, genelde Avupanın gerisindeyiz. Bazı sektörlerde iyiyiz, finans, e-devlet hizmetlerin sunumunda, uyap, vedop gibi bir çok hizmetde ödül aldık. Özgürlük, yasaklar, toplumsal cinsiyet, hukukun üstünlüğü, gelir dağılımı gibi indekslerde cok gerideyiz, yer yer utanılacak konumdayız. Türkiye bir yandan, internet ve temsil ettiği bilişim, ar-ge, inovasyonu teşvik için, e-devlet projeler, örnek vaka haline gelmekte olan fatih projesi için çömertce para harcıyor, rol model olarak Bill Gates, Steve Jobs, Zukerman’ı öne çıkartıyor, öte yandan gerekli ön koşul olan özgürlükler, hukukun üstünlüğü, ifade ve basın özgürlüğü ve adil rekabet koşullarını sağlaması gerektiğini anlayamıyor, algılayamıyor, uygulayamıyor.

-Türkiye İnternetin neyi temsil ettiğini kavrayamadığı için, internetin gelişmesi, toplumsal yarar sağlanması, toplumu bütünleştirmesi, dünya ile rekabetin önemli aracı olarak kaullanmaya odaklanamamış, daha çok tasaruf, ihracatı teşvik gibi parçalara odaklanmaya çalışmıştır. Bu nedenle, bütünsel, tüm paydaşları kapsayan, ortak aklı ortaya çıkaran katılımcı yapılar kuramamış ve ortaya çok parçalı, daha çok marjinal problemlere ve dar çıkarlara odaklanılmış ve sonuçta Türkiye gemisinin rotası Bilgi Toplumuna dönememiştir. Gates, Jobs, Zukerman çıkartmak isteyenler, Twitter, facebook ve Youtube’un kökünü kazımayı hedeflemişlerdir.

Benim eskilerde epey tekrarladığım bir önerimi kısaca izninizle özetlemek istiyorum: 1) strateji, 2) siyasal irade, 3) sorumlu koordinasyon merkezi (bakanlık, müsteşarlık), 4) her yıl gözden geçen eylem planı, 5) TBMM de komisyon, 6) yıllık, herkese açık değerlendirme, geri besleme yapıları (konferans). Bir başka deyişle, işin önemini kavramış bir siyasi liderlikle, tüm paydaşları içeren, tüm toplumu kapsayan, katılımcı, saydam, yönetişimi öne çıkaran yapılar kurmak gerekir. Gerisi gelir. Tekrarlamakta yarar var: özgürlük, hukukun üstünlüğü, aykırı ve farklı görüşlerin yeşereceği bir ortam ön koşul.

Peki, yeni medya okur yazarlığı yelpazesinde Türkiye ne durumda? Ben konu uzmanı değilim. Elimde sunucak bilimsel veriler yok. Deneyimlerimden hareketle bir kaç şey söylemek gerekirse; durum pek parlak değil. Konferanslara bildiri sunan, kurslara katılan, katılmak isteyenler, bilişim sınıfındaki öğrencilere bakınca durum düşündürücü. Hiç grup haberleşmesine katılmamış, açık yönergeyi anlamayan, yönergeyi okumayan, şu adrese yazın denmesine rağmen, o mesajı cevaplayan o kadar çok ki.

Kendi maceram konusunda bir kaç sey söyleyip bitirmek istiyorum. Bilkent’e 1987 Haziranında katıldım. Yurt dışında iken o zamanki İnterneti kullanmıştım. Birkaç ay sonra Bilkent, ODTÜ üzerinden bir terminal ile Bitnet ağı olan TÜVAKA’ya bağlandı, daha sonra kendi makinası üzerinden bağlandı. Bağlantı tüm ülke içinde 9.6Kps, idi. 89 yılında Ege’deki düğüm üzerindeki DOST listesinde niye TCP/IP (İnternet) ağına bağlanmıyoruz tartışması oldu. Ben o tartışmanın aktif katılımcılarından biriydim. 12 nisan 1993’de Türkiye İnternete bağlandığında, herkese çok savunduğum İnterneti anlatmak zorunda hissettim. 1993 Bilişimde bir oturumda, Attila Özgit ve Ufuk Çağlayan’la buluştuk. Ufuk GOSIP hakkında, Attila TR-Net hakkında bende “İnternet: Eğitim ve Araştırma Yeni Olanaklar” başlıklığıyla konuştum. O yıl sonunda DIE’de istatistik Kongresinde İnterneti anlatan bir seminer verdim. Notları özet olarak Cumhuriyet Bilim Teknikte yayınlandı. 94 Şubatında Tubitak’ta Üniversitelere yönelik bir demo yapılmıştı. Benim notlarım gelişmişti. O dağıtıldı. 1994 yılında servis.net.tr çalışmaya başladı (ODTÜ’de). MAM’da benzeri bir servis başladı. Benim notlar, “İnternet: Bilgiye erişimin yeni araç ve olanakları” adıyla yayınlandı. 94 bilişimde “İnterneti Nasıl Geliştiririz?” konulu bir forum/çalıştay yaptık. Pek bir şey çıkmadı. Konuyu bilende azdı. Servis.net.tr ve MAM servisi ya x.25 üzerinden ya da şehirler arası tarifeden ve düşük kapasite modemlerle çalışıyordu.

Tr-net ile TT (PTT) arasındaki İnterneti birlikte büyütme projesi görüşmeler koptu. TT ihaleye çıktı. TUR-NET ortaya çıktı. İhalenin ertesi günü, inet-tr yapıldı. İnet-tr , üniversitelerde ortaya çıkan çatışmaları azaltmak, herkesi bir masa etrafında toplamak ve ortak akıl oluşturmak amacıyla ortaya atıldı. İlk konferans buna odaklandı. İnet-tr’96 yı yeni kurulan Yeditepe’de, ’97 de ODTÜ’de yaptık. Kamuya yönelik ve demokrasi oturumları hep öncelikliydi. İnet-tr’97 de özel bir kamu oturumu yaptık. Başbakanlıkla temas halindeydik, onlara ilk web, mail ve gopher sunucunu ben kurmuştum. 1997 konferansında Internet Üst Kurulu kurulma kararı çıktı. İlk toplantı Ocak 98 de idi. İlk toplantıdan sonra İnternet Haftası kararı çıktı. İnternet günü önerisi, İnternet Haftasına döndü ve 2 hafta olarak uygulanmaya başlandı. Şubat 98 de ise KamuNet konferansı yapıldı.
İnet-tr’98 de ise Akademik Bilişime karar verildi.

Kamunet 1 kere yapılabildi. Bazıları içten bazıları dıştan engellediler. Bu yıl inet-tr’nin 20.sini yapacağız. Akdemik Bilişimin 17.sini yaptık. İnternet Haftasının 18.sini yapacağız.

Bu arada bunlarla içice Özgür Yazılım ve Linux etkinliklerini yaptık. Linux kampını 2010’da başlattık. Akademik Bilişim öncesi 4 günlük kurslarıda 2010 da Urfa Konferansında başlatmıştık.

Tüm bu etkinliklerde interneti toplumun gündemine taşımak, internet kültürünü yaymaya çalışmak, bilgi ve deneyim paylaşım ortamı sunmak, insan gücü yetişmesine katkıda bulunmak, ortak akıl oluşması için çaba harcamak, iyi bir örnek olmak, ve bu konuların tartışılması için bir platform oluşturmak hedeflenmişti. Bu platformları ayakta tutmaya çalıştık. Bunu benimle birlikte hareket eden, destek olan pek çok kişiyle birlikte yaptık. “İnternet Çetesi” sözünü duyanlar, bunun bizim çekirdek kadromuz olan Ufuk, Attila ve Ethem Derman’ı kapsadığını bilir. Ama, pek çok dosttan, internet gönüllüsünden destek aldık.

Peki bundan sonra ne yapmalı? Benim nacizane önerilerim: pozitif yaklaşmak, teslim olmamak ve elden gelen çabayı, olabildiğince örgütlü bir şekilde göstermektir. Bazı daha somut örnek olarak, bu konuların doğru terim ve çerçevede tartışılmasına çaba harcamak, bu konularda ciddi araştırma yapmak ve bunu yayınlamak (bilimsel dergilerle, sınırlı olmamak kaydıyla), interneti etkin bir şekilde kendi işimizi daha iyi yapmak için kullanmak, topluma örnek olmak ve destek isteyen gruplara destek olmaktan bahsedebiliriz. Topluma Entelektüel liderlik etmek akıldan çıkmamaması gereken bir hedef. İnterneti diğer teknolojilerle birlikte kullanmaktan kaçınmamak, clicktavizm den uzak durabilmek önemli.

Ülkede ve dünyada yanlız değiliz. Eşit bir dünya vatandaşı olarak tüm dünya ile empati ve dayanışma içinde olmak gerekir.

İflah olmaz bir iyimser olarak, eski slogınımı tekrarlamama izin verin:

İnternet Yaşamdır !

yenimedya-sunum



06 March 2015

Cocci İle Otomatikleştirilmiş Yama Oluşturma


Yaklaşık 3 hafta önce OPW'nin 10. turu başladı. OPW'yi merak edenler için, buraya bakabilirsiniz.

Yazının geri kalanında Coccinelle ile nasıl betik yazıldığını, yama hazırlarken bu betiğin dosyaya nasıl uygulandığını anlatacağım.

Coccinelle, otomatik olarak analiz yapan ve C kodunu yeniden yazabilen bir araç. Asıl yararı aynı düzeltmeleri her dosya için tek tek yapmak yerine, bir şablon oluşturup onunla birçok dosyayı tek seferde tarayayıp değiştirebilmesi. Desteklediği betik dilleri Python ve OCaml.  (sudo apt-get install coccinelle)

Betik yazarken genel yapı:

@@
degisken_tanımları
@@
Kurallar

İstersek ilk @@ işaretlerini @Betik_Adi@  şeklinde de kullanabiliriz. Bu kullanım uzun betikler yazarken okumayı kolaylaştırır.

Daha sonra kurallarda kullanacağımız değişkenleri tanımlamalıyız. Kural kısmı ise tamamen betik ile ne değiştirmek istediğimize bağlı.

Çok basit bir örnekle başlayalım:
Örnek1:

"foo.c" dosyasındaki C kodumuz şöyle olsun:
int main()
{
    foo();
    g(); 
    foo();
    g();
    foo();
}

Bu dosyadan foo() fonksiyonlarını kaldıralım. "-" ile kaldırılacak, "+" ile eklenecek alanı en genel şekliyle tanımlamalıyız.
foo.cocci dosyası:

@@
@@

- foo();
Betiği uygularken:

$ spatch -sp_file cocci_betigi -in_place uygulanacak_dosya_yolu


spatch yukarıdaki parametreleri ile betik dosyasını uygulayarak değişiklik olan yerleri gösterir.

Örnek2:
Aşağıdaki C kodunda kullanılan _cancel_timer_ex fonksiyonu yerine  del_timer_sync fonksiyonu kullanmak istersek elle tek tek değiştirmek yerine cocci betiği yazabiliriz.

C kodu: drivers/staging/rtl8712/os_intfs.c

Cocci betiği:
@@ expression x; @@

 - _cancel_timer_ex (&x);
+ del_timer_sync (&x);

Çıktı:




 

Örnek3: 
Gereksiz olan parantezleri kaldırmak için betik yazalım.
C kodu:



Cocci betiği:
@@
identifier i;
constant c;
type t;
expression e;
@@

t i =
-(e
+e
<<
-c);
+c;


Çıktı: Farkedildiği gibi değişecek satır(ların) kalıplarına göre tarif yapılıyor. Expression, constant, identifier gibi tipleri kullanırken değiştirmek istediğimiz satırdakilerle örtüştüğünden emin olmalıyız. Ayrıca yazdığımız betiğin, doğru olan satırlarının değiştirmiyor olmasına da dikkat etmeliyiz.

Örnek4:
Yazacağımız betikte Python kullanmak istersek @script:python@ diye belirtmemiz gerekiyor.
C dosyası:
int main () {
        foo(a0);
        bar();
}


Cocci betiği: 
@a@
identifier x;
@@
foo(x);
@script:python b@
x << a.x;
y;
z;
@@
print y
coccinelle.y = x
coccinelle.z = "something"
print y
@c@
identifier b.y;
identifier b.z;
identifier a.x;
@@
- bar();
+ matched_bar(y,z,x);


Çıktı:



Yazdığınız betik kurallara uygun mu, bir hatası var mı diye bakmak için:
$ spatch --parse-cocci deneme.cocci

Bu yazı sadece aklınızda bir fikir oluşması için giriş niteliğinde verilmiş örnekleri içeriyor. Coccinelle ile uğraştıkça daha karmaşık betikler yazılabilir. Daha fazla demo için buraya bakabilirsiniz. Kolay gelsin...


04 March 2015

Sending First Patch To Upstream


Last week, I sent first patch to upstream and it was accepted in mm tree :). I am very happy about that. You can see it here.

Subsystem maintainers are very careful and a lot of people review the codes. Out side of staging directory, and before the internship, my first patch is about y2038 project. When I sent patch for y2038, a lot of developers reviewed and suggested something. I have recently seen the patch here: http://lwn.net/Articles/620870/, it was my first experience :).

Todays, I work with linux kernel mm community, this makes me very excited and happy :).  I gained some experiences in this process and learnt how can I be sure with my changes. This is most important case for coding. When I talked with my mentor, every time I reported different thing :) and said "oh this prevents collapsing pages into a thp!". Because I was testing wrong. Finally I could find what was the problem.

For test results, I look /var/log/kern.log, it is very large file so I split it like that: "split -n 5" and look newly created small files and log time stamps is important. To be sure with my changes print out virtual memory address area for my test programs.

/proc/pid/smaps shows whole vmas for the process. pr_info("vm_start = %04lx\n", vma->vm_start); is enough to see begining address of the vma. Sometimes I need to see which process run this function, I print out current->pid. If I know what happened in every step, I find my faults very easy. I have to do something like that, because other processes will log about their huge pages in kern.log and I shouldn't confuse which process logged the results. To examining kern.log was big scale thing for me.

Before sending patch I need to be careful and check something for my patch. Also keeping focus on the issues is important. Working on kernel needs to pay attention more accorrding to other projects which I got experiences with them when I was student.

After this patch, I will work on zero pages and discover new things :).


Linux Kernel Ekibiyle Staj


Geçtiğimiz yaz haziran sonunda mezun oldum. Mezuniyetten sonra bir işe girip çalışmak, her gün işe gidip gelmek, birkaç ay işim dışında bir şeye bakmamak, sonrasında iş temposuyla birlikte neler yapabileceğime karar vermek gibi bir düşüncem vardı. Ancak tabi ki böyle olmadı :).

Ağustos başında Google İrlanda ofisinden iş görüşmesi için e-posta aldım, benim ile başlangıç bir telefon görüşmesi yapmak istediklerini söylediler. Hemen kabul ettim. İlk üç aşamayı geçtim, son görüşme için Irlanda'ya gittim ancak son görüşmede başarılı olamadım. Sorular beklediğim gibi değildi, internetten çalıştığım gibi de değildi.

Ben evde son görüşmeye hazırlanırken Gnome OPW için başvurular da başlamıştı. Ben daha önce ilk Gnome'un araçlarına sonra da Linux Kernel'a başvurmuştum. Gnome'a katkı verirken katkı vermek için masaüstü bilgisayarınızda ortam oluşturmak zor. En son Fedora 19'un alfa sürümünü kullanmak zorunda kalmam ve alfanın hiç kullanışlı olmaması üzerine katkı vermeyi sonlandırdım :). Aslında jhubild'de kullanabiliriz ama onda ortamı hazırlaması .. bana bir tane geliştiricisi o zamanlar Fedora beta sürümü varken, beta kullanmamı önermişti, beta yine kullanılabilirdi ancak bir sonraki sürüme geçtiklerinde alfa kullanmak zorunda kalmam pek iyi olmadı. Bir de Gnome Continuous var, onu yeni gördüm ama henüz denemedim.

Linux Kernel'a katkı verdiğim sene aslında alınmayı beklemiştim gerçekten ama olmadı. Bu dönem başvuru süresi 2 ay gibi uzundu :), geçen sene 3 hafta gibi bir süreydi. Necdet hoca "Aslında sen başvursan çok şey yaparsın" dedi, ben de başvurdum ve alındım :). Alınmayı gerçekten beklemiyordum ve çok güzel bir sürpriz oldu.

Şimdi Rik van Riel ile birlikte bellek yönetimi üzerinde çalışıyorum. Bellek yönetimi katkı vermeye başlamanın en zor olduğu kısımlardan biri, çünkü çekirdeğin temel fonksiyonlarını içeriyor ve daha karmaşık. Başvurduğunuz projeye göre staj sürecinde ne kadar yama gönderebileceğinizin sayısı da değişiyor. Ben projem zor olduğundan, 4 ayda otuz satır yazabilir miyim derken şimdiden bir yamayı kabul ettiler bile :).

Linux kaynak kodunda bellek yönetimi ile ilgili dizin mm/. Eğer güncel mm dizinini takip etmek istiyorsak da Linus Torvalds'ın kullandığı dalı değil de linux-next'i takip etmek gerekiyor. Yamaları Andrew Morton kabul ediyor ve günlük olarak etiketliyor. Güncel linux-next'i nasıl takip edeceğinizi görmek için buraya bakabilirsiniz.

Anladığım kadarıyla, Linux'ta bellek yönetimi üzerine çoğunlukla Redhat ekibi bakıyor, çünkü birçok sunumu ve belgeyi o ekip hazırlamış. Ben yamaları gönderirken mm dizini bakıcılarına baktığımda genelde @redhat.com alan adlı hesaplar var. Yamaları vger.kernel.org ve  akpm@linux-foundation.org listelerine gönderdiğim için de çok mutluyum. O kadar büyük listelerdeki insanların kodlara bakıyor olması oldukça heyecanlı :).

Üzerinde çalıştığım proje ise, bellek üzerinde 2kB/4kB kadar boyutlarda olabilen sayfaların dışında bir de büyük sayfalar (huge page) var. Onların boyutları ise 2MB/4MB. Peki neden büyük sayfalara ihtiyaç duyuyoruz? Çünkü sayfalar büyük olduğunda sayfa tabloları da büyük oluyor ve bir süreç için verileri bellekten atma/belleğe getirme miktarı azalıyor. Eğer sayfalar 4MB'tan büyük olursa verimsiz oluyor.

Sistemin swap kullanması gerektiğinde büyük sayfalar normal boyutlu sayfalara parçalanıyor (2kB/4kB) ve o şekilde swap alanına yerleştiriliyor. Sorun şu ki; swap alanından belleğe tekrar geri getirilmek istendiğinde büyük sayfa olarak değil, normal boyutlu sayfalar olarak getiriliyorlar bu durumda eski verim sağlanamıyor, aynı zamanda burada izlenmesi gereken bir algoritmaya da karar verilmeli. Çünkü bir süreç swap kullanıyor diyelim, ve swapte olan bir veriye ihtiyaç duyuldu, sadece tek bir verinin bulunduğu sayfa 2kB, ancak bunun yerine 2MB büyük sayfa getirmek her zaman yararlı olmaz. Burada karar verilmesi gereken noktalar var.

Geçtiğimiz dönem kod ve belge okumak üzerine geçti. Bir tane de yama gönderdim. Sadece okunabilir sayfaları büyük sayfalar şeklinde birleştirmek için. Yamayı burada görebilirsiniz.

Bundan sonraki bir süre ise; "daha önce hiç okuma/yazma isteği almamış, henüz fiziksel belleğe eşlenmemiş, sadece sanalda bulunan, bir süre sonra ilk kez okuma izni aldığında fiziksel belleğe eşlenen sayfalar" var, bunlara zero page deniliyor, bunlar üzerinde çalışacağım. Eğer sayfa içerisinde veri yoksa, ilk okuma isteği aldığında çekirdek bunu sıfırlarla dolu bir sayfa olarak üretiyor. Bunları da büyük sayfalara dahil etmek üzere çalışacağım. Aynı zamanda (emin değilim), Documentation dizininde de belgelendirme yapmam gerekecek. Muhtemelen birkaç işim daha var ancak henüz ben bilmiyorum, danışmanımla işleri bitirdikçe yenisini alma şeklinde ilerliyoruz. Henüz başlamadığımız işlerden de şuna bir ara bakarız şeklinde konuşuyoruz.

Staj sürecinde birkaç Türkçe yazı daha yazacağım (yazmadı) :).


03 March 2015

Özgür Yazılımı Richard Stallman'dan Dinlemek


    28 Şubatta Richard Stallman Sabancı Üniversitesine geldi. Biz de kalabalık bir grupla dinlemeye gittik.  Elbette bişeylere ikna olmak için orada değildik.  Bu konuyu çok kez Necdet Yücel'den dinledik. Ama bunu özgür yazılım akımını başlatan adamdan dinlemekte ayrı güzeldi. O konuşurken bi o kadar rahat biz ise acayip heyecanlıydık. :)

    Stallman önce yazılımların neden özgür olması gerektiğine,  özgürlük kavramının hükümet dahil çok kişiyi rahatsız etmesine değindi.  Aslında sadece yazılım tarafında değil sanatta, düşünceyi ifade etmede, hayatta özgürlükten bahsetti. Bunun nasıl sağlanabileceğinden bahsetti. Onu dinlerken insan böyle bir dünyayı hayal edemiyor tabi. Çıkışta Necdet hocayla aramızda geçen diyalog şöyleydi:

- Stallmanın hayalindeki dünya çok güzel ama insan böyle bir dünyayı hayal edemiyor.
+ Bundan 30 yıl öncede özgür yazılım diye bir şeyi de hayal edemiyordu insanlar.

:) (İç ses : Umut var)

    Bir de Linus'a gönderme yapmayı ihmal etmedi tabi. "Linux işletim sistemleri söylemi yanlış." Linux işletim sisteminin sadece çekirdeği. Geri kalan özgür araçlar GNU projesinin ürünleri. Lütfen Linux yenine GNU/Linux kullanalım Stallman'ın hakkını Stallman'a verelim :)

    Bir de Açık Kaynak mevzusundan bahsetti. Açık kaynak diye bir kavram var elbette. Ama bunun Stallman ile bi alakası yok. Açık kaynağın babası falan diye bahsedilmesinden oldukça rahatsız. Tam da bunu yazacakken Stallmanın türkçe viki maddesine bakayım dedim bir de ne göreyim. Her yerde açık kaynak yazıyor. Kolları sıvadım ve özgür yazılım ulan diye değiştirdim :)

    Kısacası Stallman'ı görmüş olmak heyecan ve mutluluk vericiydi. Bu konuşmayı kaçırdıysanız geç kalmış değilsiniz. 6 Mart 2015 te BİLMÖK'te yine konuşacak ve biz de orada olacağız :)



Şimdi de en havalı fotoğrafımı paylaşıyorum :)





02 March 2015

Richard Stallman İstanbul'da


Geçtiğimiz cumartesi Sabancı Üniversitesi'nde gerçekleşen Richard M. Stallman'ın "Telif Hakları ve Toplum" sunumuna katıldım.

Katılımın çok fazla olacağını düşünmüştüm. Hatta bu kalabalıkta oturacak yer bulamam diye biraz endişelenmiştim.  Ama üniversitenin konumundan olsa gerek bir insan seli durumu yoktu. Çanakkale'den yine kalabalık gelmiştik. Necdet Hoca'nın mezun öğrencileri ile birlikte sunumda birbirini tanıyan en büyük gruptuk sanırım.

Stallman, sunumuna özgürlüğü, bir yazılımın neden özgür olması gerektiğini ve özgür yazılımın esaslarının neler olduğunu anlatarak başladı. Kullanılan sistemin insan özgürlüğüne saygı duyması gerektiğini söyledi. Bu sözünü çok sevdim:) Özgür yazılımı hiç bilmeyip ilk kez orada Stallman'dan dinleyen birisi için verdiği örnekler hayatın içinden, somut, net ve açıklayıcıydı. 

Bir işletim sistemi için gerekli olan tüm yazılımlar hazırken (çekirdek hariç) , Linus'un yazdığı çekirdek kullanıldı diye bu işletim sistemine  sadece "Linux" işletim sistemi dememizin doğru olmadığını "GNU/Linux" olarak kullanılması gerektiğini söyledi.
 
Daha sonra açık kaynaklı yazılımlardan ve bunun neden etik olmadığından, sansürlerden, telif haklarından ve lisanslardan bahsetti. Özgür yazılımın felsefesi ile ilgili daha ayrıntılı cevapları buradan bulabilirsiniz.

Konuşma sonunda GNU peluşu açık artırmaya sunuldu.(FSF için) Peluşun sahibi Necdet Hoca oldu :)

Sunumdan sonra Stallman soruları yanıtladı. Verdiği cevaplar da konuşmasında olduğu gibi netti.

Özgür yazılım hareketini başlatan kişiden, özgür yazılımı dinlemek çok çok güzeldi. Bilgi ve Sabancı Üniversitesi'ndeki sunumu kaçırmış olabilirsiniz ama hala katılmak isteyenler için, Ankara Üniversitesi'nde bir konuşması daha olacak. Stallman bir daha ne zaman Türkiye'ye gelir bilinmez. Gidebilecek durumu olanlar için bence kaçırılmaması gereken bir fırsat.

Etkinlikten sonra, bu kalabalık ekiple bolca sohbet etme fırsatım oldu. Benim için yine aşırı keyifli geçen bir gündü :) Görüşmek üzere.


01 March 2015

Maildeki Ekli Dosyayı Indiren Python Script


Mail içerisinde gelen ekli dosyayı IMAP SSL bağlantısı sağlayarak indirdikten sonra, okundu olarak işaretleyip, okundu olarak işaretlenen maillerin deleted olarak etiketlenmesini sağlayan python scripti.

#!/usr/bin/env python

import email
import getpass
import imaplib
import os

detach_dir = '.'  # directory where to save attachments (default: current)
user = "username"
pwd = "password"

# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("mail.domain.com")
m.login(user, pwd)
m.select("INBOX")  # here you a can choose a mail box like INBOX instead
# use m.list() to get all the mailboxes

# you could filter using the IMAP rules here (check http://www.example-code.com/csharp/imap-search-critera.asp)
resp, items = m.search(None, 'UNSEEN')
items = items[0].split()  # getting the mails id

for email_id in items:
    # fetching the mail, "`(RFC822)`" means "get the whole stuff", but you can ask for headers only, etc
    resp, data = m.fetch(email_id, "(RFC822)")
    email_body = data[0][1]  # getting the mail content
    mail = email.message_from_string(email_body)  # parsing the mail content to get a mail object

    # Check if any attachments at all
    if mail.get_content_maintype() != 'multipart':
        continue

    print "["+mail["From"]+"] :" + mail["Subject"]

    # we use walk to create a generator so we can iterate on the parts and forget about the recursive headach
    for part in mail.walk():
        # multipart are just containers, so we skip them
        if part.get_content_maintype() == 'multipart':
            continue

        # is this part an attachment ?
        if part.get('Content-Disposition') is None:
            continue

        filename = part.get_filename()
        counter = 1

        # if there is no filename, we create one with a counter to avoid duplicates
        if not filename:
            filename = 'part-%03d%s' % (counter, 'bin')
            counter += 1

        att_path = os.path.join(detach_dir, filename)

        # Check if its already there
        if not os.path.isfile(att_path):
            # finally write the stuff
            fp = open(att_path, 'wb')
            fp.write(part.get_payload(decode=True))
            fp.close()

# flag as deleted
dresp, ditems = m.search(None, 'SEEN')
ditems = ditems[0].split()
for demail_id in ditems:
    m.store(demail_id, '+FLAGS', '\\Deleted')
    m.expunge()

 



Richard Stallman - Telif Hakları Sunumu


Bu sene Stallman Türkiye'ye geldi. İstanbul'da iki sunum yaptı ve Bilmök'te bir sunum daha yapacak. Etkinlik hakkında bilgi için buraya bakabilirsiniz.

Ben Sabancı Üniversitesi'nde yapılan Telif Hakları konuşmasına katıldım. İlk defa bu kadar büyük bir insanın yaptığı konuşmaya katıldım, çok mutluyum. İstanbul Avrupa tarafında oturmam ve etkinliğin Tuzla'da olması nedeniyle 09:30da yola çıktım ama olsun :). Sabah Kadıköy'de Gülçin ile buluşup servisle etkinliğe gittim. Bu kadar zaman sadece sosyal ağlardan konuşma fırsatı bulduğum insanlarla yüz yüze görüşmek de heyecanlı oluyor.

Etkinliğe muhtemelen kapılar kırılır, ortalık yıkılır düşüncesi ve Necdet hocayla (ve ekibiyle) daha fazla vakit geçirmek için bir saat erken gittim. Necdet hocayı ve arkadaşlarımı görme kısmı tamamdı ancak böyle bir etkinlikte dolup taşıp oturmaya yer olmaması gibi bir durum beklerdim, olmadı. Salon doluydu ancak yine de beklediğim hararet yoktu.

Stallman konuşurken "bu konuda en mantıklı böyle düşünebilirdi" düşüncesi aklımda oluştu. Aslında Necdet hoca da bize okulda yıllardan beri Stallman'ın felsefesinden, görüşlerinden bahsediyor. Stallman konuşurken "Necdet hoca da bize bunlardan bahsetmişti" şeklinde hatırladım. Stallman'ın bize bahsettiği noktalar:

- Özgürlük nedir? Özgürlük yazılım açısından nedir?
- Özgürlük kod içeriği şöyle olmalıdır, böyle güvenli olmalıdır, gibi şeyleri göz önüne almaz, kullanıcının onu değiştirebilmesi, dağıtabilmesi anlamına gelir
- Özgür olmayan yazılımlar oluşturulmamalıdır
- İnsanların sahip olduğu yazılımları paylaşma hakları ellerinden alınmamalıdır
- Eğer bir sistem içerisinde özgür olmayan başka yazılımlar da varsa o sistem özgürlüğünü kaybeder

Bunun dışında tersine mühendislik hakkında da güzel şeyler söyledi. Üniversitelerde ders olarak verilmesi gerektiğinden bahsetti. Bir de Torvalds hakkında da .. :(. Bu ara Linux Vakfı'nda staj yaptığımdan yine de öyle demesek mi şirinliğinde dinledim :). Torvalds'ın Gnu projesini de kullanarak bir çekirdek oluşturduğunu ve Gnu içerisinde bir boşluk oluşup Linux'un geliştirildiğinden bahsetti.

Etkinlik başlarında Gnu is not unix şakası oldukça döndü. Bu cümleyi ilk okuduğum zamanı dün gibi hatırlıyorum. 2. sınıftayken Gnu ne acaba diyip What is gnu yazdığımda gördüğüm ilk cevap Gnu is not unix olmuştu. O zamanlar çok yeni olduğumdan "hmmm .. Pek anlamadım, bir daha okuyalım, Gnu is not unix .. hmm ..". O halim de pek şirindi ;).

Etkinliğin sonlarına doğru Gnu peluş oyuncak açık artırmaya sunuldu ve sahibi elbette ki Necdet hoca oldu. Aslında yedi kişi bir Gnu'ya girsek de olabilirdi ama .. :).

Açık artırmadan sonra dinleyicilerin sorularına yer verildi ve soranların bir kısmı Stallman'ın aslında iddia etmediği şeyleri sanki Stallman öyle düşünüyormuş gibi sordu. Düşünceler hakkında böyle düşünmek de yanlış olmaz mı, ya da şöyle düşünebilir mi şeklinde sorulmasını anlarım ama salonda ben haklıyım şeklinde yapılan konuşmalar vardı. Stallman'ın buna verdiği cevap beni dinlemeye gelenler bana katılmayabilir ne yapabilirim oldu :).

Etkinlik çıkışında Necdet hoca ve öğrenci/mezun grup birlikte vakit geçirdik. Dün Kaan'ın da söylediği gibi ben biraz neşe saçmış olsam da çok güzel bir gündü. Aşağıda etkinlikten fotoğraflar, Stallman ile topluca fotoğraf çektirdik :)







28 February 2015

Locust – Açık Kaynak Kod Load Test Uygulaması


Locust, web uygulamaları üzerinde detaylı olarak stress test yapabilmeye olanak sağlayan açık kaynak kodlu çok güzel bir yazılım. Temel olarak yük testinin yapılacağı web uygulaması için hangi sayfalarda kaç kişinin gezeceğini, hangi sayfalardan hangi sayfalara geçileceği, toplam dolaşım süresinin ne olacağı vs. gibi detaylı senaryonuzu bir python scripti şeklinde tarif edip, locust’a bu senaryoyu simule etmesini söylüyorsunuz.

Aşağıdaki gibi güzel ve anlaşılır bir web arabirimi olan Locust aynı anda milyonlarca anlık ziyaretiçiyi belirlediğiniz eşik değerlerine göre web uygulamanıza dolduruyor ve arayüz üzerinden uygulamanızın kullanıcı isteklerine verdiği cevapların stabilitesini ölçüp sınırlarınızı tespit edebiliyorsunuz.

 


Devamini okuyun: Locust – Açık Kaynak Kod Load Test Uygulaması


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



27 February 2015

Gemalto – İstihbaratcılar İzin Almadan İstediklerini Dinleyebilecek


ABD istihbarat örgütü NSA ve ingiliz gizli istihbaratının (GCHQ) ortaklaşa yaptığı operasyonda, Dünyanın en büyük sim kart üreticisi Gemalto hacklendi. Gemalto senede 2 milyar sim kartı üreten ve dünya çapında 450 tane GSM sağlayıcına sim kartı satan firma. Bunların içinde Turkcell, Avea ve Vodafone’un olup olmadığına iddiaya girer misiniz benimle? Gemalto’nun sim kartlarına yerleştirdiği özel […]

25 February 2015

Junos cihazlara SSH key ile erişim


Juniper’in JUNOS kullanan güvenlik cihazlarına (SRX firewall, EX-series switchler) password girmeden SSH key ile erişim için aşağıdaki adımları yapmak yeterli olacaktır. – Client üzerinde RSA key-pair oluşturun. ssh-keygen -t rsa – JUNOS cihaza bağlanın ve user ayarlarını değiştirin. goatleaf# set system login user gurcanozturk uid 2001 class super-user authentication ssh-rsa "ssh-rsa PASTE_YOUR_PUBLIC_KEY_HERE gurcanozturk@senna.local" goatleaf# commit …

Remote KVM üzerinden Offline paket yüklemek


Başlık bir ilginç olmuş. Sorunu kısaca belirteyim. Henüz network ayarları yapılmamış, uzaktan kurulum yaptığım bir sunucum var. Sunucuya IDRAC/ILO ( üreticiye göre değişiyor) Remote KVM üzerinden ulaştım, Ubuntu 14.04 kurulum ISO dosyasını Remote Drive olarak bağlayıp, kurulumu gerçekleştirdim. Ancak gözden kaçırdığım bir durum vardı. Network ayarlarından ötürü VLAN paketinin de yüklenmesi gerekiyordu. Herhangi bir şekilde vlan […]