Google

Friday, October 16, 2009

Çok ilginç bir durum. Turkcell o kadar reklam yaptı her yöne 1200 dakika bedava dedi şimdi bir sene geçmeden tarifeyi değiştirdi. 500 dakika turkcell, 500 dakika diger operator, 500 dakika sabit hat (sabit hat arayan var mı aramızda?)arayanlar ücretsiz konuşuyor artık. Bu tarifeye insanlar diğer operatörleri rahat aramak için geçmişti halnuki. Türkiye'de tüketiciyi kandırmak sanki ödüllendiriliyor devlet tarafından.

Bu ülkede Sanayi ve Ticaret bakanlığı ne işe yarar? Tarifeyi değiştirme yetkisini, tüketicinin aleyhine kullanmasına nasıl izin verilir? Artık bakanlık bu şekilde yalan dolan reklamlarla, üç aylık tarifelerle müşteri toplamaya izin verirse, aha yazıyorum buraya bu işin kokusu çıkar. Bu arada Turkcell in oyununa da gelip de iyiki avea hattımı değiştirmemişim. Dört beş ay göreceli olarak avea hattıma Turkcell in tarifesine göre daha fazla para ödemek, salak yerine konmaktan bin kat iyi oldu.

Saturday, October 10, 2009

Bu seneki tiyatro sezonun açtık ne yazıkki. Oyunun adı Gizler Çarşısı'ydı. Acaip bir zaman kaybıydı. İlk perdede salonun tamamı doluyken ikinci perdede yer yer boşluklar oldu. Millet gözünü açmış. Bastı gitti. Biz çok ümitvar olduğumuz için salonda kaldık. Mesela yanımızdaki çift ikinci yarıda yoktu. Uzun zamandır görmeyip orada rastladığım arkadaşlar da ilk perde sonunda arada, daha fazla dayanamayacağız diye gittiler. Zaten ikinci perde birinci perdeden de beterdi. En azından ilk perde de çarşı sahnesi vardı. Koca oyun boyunca sadece bir sahne. Bravo!!! Bir de millet alkışladı sonunda. Neyi alkışlıyor bu insanlar dedim kendi kendime. Oyun kötü, sunum kötü ama alkış gırla. Aslında çok da fazla değildi birçok oyuna göre ama o arada ayağa kalkan tipler yok mu acaip sinir etti. Belki de akrabaları vardı oyunda. O yüzden ayağa kalkmış olabilirler, neyseki azınlıktılar ama çıkışta bu ankara halkına müstehak dedim. Önüne ne konulursa alkışlıyorlar. Bir kızın dışarı çıkınca "Ohh be özgürlük" dediğini duyunca güldüm. Ne işkenceydi ama helal olsun adamlar acı çektirdiler oyun boyunca.

Wednesday, October 07, 2009

Şirket networkunde, firewall ve proxy arkasında yer alan kullanıcılar için herhangi bir linuxe ssh bağlantısı yapmak imkansız gibi birşeydir.Şimdi her bağlantı bitti de ssh mı kullanmak kaldı denilebilir ama ssh gibisi var mı? Çoğu zaman can sıkıcı engellemeler yapan proxy, firewall u by pass etme çözümünü de kendi içinde sunar. Proxy ilk defa özgürlüğe açılan kapı olacak. Reçete çok basit. Bir tane CNTLM, bir tane proxytunnel ve pek tabiki putty.
1) Ev networku ve pcsinde yapılması gerekenler:
a)İlk önce ADSL için statik ip alınır TTNET'ten.
b)Ev linux'unun SSH'in port 80 den dinlemesini sağlamak gerekir. Bunun için vim /etc/ssh/sshd_config komutu ile ayar dosyası edit edilip
bu dosyaya "Port 80" satırı eklenir.
ssh servisi restart edilir ve adsl modem üstünden port forwarding etkin hale getirilip statik ipnin 80. portuna gelen istekler ev linux'une yonlendirilir.
Not: Kesinlikle login hakkı olan hic bir kullanıcı için basit şifre kullanmayın, yoksa geçmiş yazılarda okuyabilieceginiz üzere linux'unuz zombie yapılabilir. SSH servisini dısarıdan erişime açmak dikkat edilecek bir konudur.
2) İş yeri bilgisayarında yapılması gerekenler:
a)CNTLM ve proxytunnel programları indirilir.
b)Cntlm kurmak için setup.bat kullanılırsa program files'in altına dosyalar cntlm klasorune atılır. Bu directorye girilip cntlm.ini dosyasında

Username KullanıcıAdım
Domain LoginOlurkenKullanılanDomaınAdı
Password Sifre
Proxy IsYeriProxyIPsı:ProxyninCalistigiPort
yukarıdaki satırlara uygun değişiklikler yapılır.

Cntlm 'i kullanmamızın sebebi proxytunnel programının ntlm authentication kullanan proxylerde sıkıntı yaşamasıdır. CNTLM sayesinde proxy sanki authentication istemeyen bir proxy gibi olacak.
c)proxytunnel.exe -a 22 -p 127.0.0.1:3128 -d evLinuxunstatikIPsi:80
komutu ile localhostta baglantı bekleyen CNTML uzerinden ev linux'unun 80 inci protuna bağlandık ve bu bağlantıyı localhostta port 22 ye aktardık. Artık localhosttaki port 22 ye gelen her baglnatı ev linuxundeki ssh servisine gidecek.

d) putty ile 127.0.0.1 e ssh baglantısını yaparsanız biraz bekledikten sonra sshin geldiğini göreceksiniz.

Bu yöntem ile daha değişik actionlar da yapılabilir. Tüm proxy kısıtlamasını bitirebilirsiniz. Şirket proxysisini kullanarak ev proxyinize bağlanıp kafanıza göre internette surf yapabilirsiniz,hem de şifreli şekilde. Bir proxy'iyi by pass etmek aslında bu kadar kolaydır fakat abuse edilebilecek bir konu olabileceği için proxy kurallarını by pass etmenin nasıl yapılabileceği konusunda ayrıntılara girmeyeceğim.

Not: Bu şekilde proxy ve firewallu by pass etmek kurum kuralları ile ters düşmenize sebep olabilir.

Wednesday, September 30, 2009

Sene 2005 te nette bir yazı okumuştum. Adamın birisi güvenliğinden sorumlu olduğu şirketin networkune DOS attack yapan elemanların peşine düşüyordu. Heyecan ve aksiyon dolu olaylardan:P sonra onları bir IRC odasında buluyordu. Sonunu hatırlamıyorum ama bir benzeri benim de başıma geldi. Dikkatsizliğimden ötürü ev linux'um zombie haline getirmişler. Hatta bir çok eleman sisteme login olmuş değişik destinasyonlardan. Tek sebebi test için açtığım bir kullanıcının şifresinin basit olmasıydı. 123456 gibi basit bir şifre verince port taraması yapan elemanlar 22. portu açık görüp dictionary attack yapmışlar. İşin garibi dünyanın heryerinden bu attackları alan bilgisayarım en sonunda makedon elamanlar tarafından o kullanıcının şifresi değiştirilerek bir nebze korunmuş:)Peki bu olay nasıl çıktı ve ben nasıl trace ettim.

Arada herkes gibi last yaptım ve admin kullanıcısının değişik iplerden geldiğini gördüm. O sırada bu admin kullanıcısını kim nasıl oluşturmuş falan diye de bayağı kafa patlattım. Hikayenin ileriki safasında kendimin açtığımı neyseki hatırladım. Admini görünce bu kullanıcıya hemen switchledim ve historysine baktığımda alakasız komutlar gördüm. wget ile freewebtown.com adresinde bir şeyler indirildiğini görünce acaip sinirlendim. Bu adres hastalıklı bir yer. Masum görüntüsünün altında keylogger, hack yazılımlarını barındırıyor. 2006 yılında TC Kimlik no girip soy ağacını çıkaracağını iddia eden keylogger programının bilgileri toplayıp ftplediği yerde bu adresti. Nedense zararlı ne varsa burada barındıyor insanlar.

Ele geçirilen kullanıcının sahip olduğu tüm dosyaları diskte arattim. Gizli olarak "/dev/shm/ /admin/" directory haricinde başka bir yerde dosyası yoktu. Temizledim. Home'daki dosyalara bakmaya başladım. Ascii dosyalarının birinde bir IRC sunucusuna bağlanmak için girilmiş bilgileri buldum. Netstatlayınca uzaktaki bir sunucunun 6667 portuna bağlantının olduğunu gördüm. Dosyanın içeriğindeki bilgilere göre Mirc'imi çalıştırıp "oğlum siz ne ayaksınız" demek için pc'min bağlı olduğu chat odasına girdim. Linux'um bir garip isimle orada duruyordu. Whois yapınca ne yalan söyleyeyim içim cız etti. Statik ip'mi gördüm, gözlerim doldu. Alo kimse var mı diye bağırırken elemanın birisi çıktı, ne var bilader der gibi konuştu. Benim bilgisayarımı bot yapmışssınız deyip terbiyemi bozdum. Klasik bir lamer gülüşü ile benim bilgisayardan bana mesaj gönderdi. Yine sinir stress oldum. Kendi linux'umde kill ettim procesi tekrar spawn edip baglanıyordu. Killeri oldum processinin yavrum diyerekten, ben de rm -rf diyerekten admin kullanıcısının home'u nu temizledim, kullanıcıyı kaldırdım ve linuxumu o kötü hayattan çekip çıkardım. Sonra her nedense ingilizcesi dandik eleman ingilizce bilen bir arkadaşını çağırdı. Adam ilk olarak biz kimseye saldırmıyoruz dedi. Sadece eğlenmek için bot yapıyoruz falan filan dedi. Asıl merak ettiğim olay nasıl girdiniz pc me dedim. Zaten arkanızda çok iz bırakmışsınız bulmak kolay oldu dedim. Geldikleri ipleri gösterdim. Nasıl dictionary attack yaptıklarını anlattı. Tembellikten arkalarında bu kadar iz bıraktıklarından bahsetti,i şimdiye kadar kimsenin onları arayıp bulmadığından bahsetti. Bu arada öbür lamer yarı türkce yarı bilmem ne ce mesaj atıp sempatiklik yapıyordu. Bro demeye başladık bir birimize, tatlıya bağladık, öpüştük barıştık. Bana hack programları verdi. Bir kaç örnek gösterdi. Neyse abbas yolcu yarın iş var dedim. Özetleyecek olursam Root'a geçememişlerdi.Benim salaklığımın bir sonucu olarak linuxum kötü yola düşmüştü. Aldığım ders: Basit bir şifre verilmemeli hiç bir kullanıcıya. Anlamadığım nokta, chat odasındaki 50 60 tane bot pc ile ne yaptıklarıydı:)

Friday, September 04, 2009

Djangoyu anlatmak için bazı klasik laflar vardır. 10 dakikada blog, 30 dakikada wiki,55 dakikada google yazabileceğiniz framework sloganlı videolar var nette.Aslinda bu şekilde tek reklamı yapılan Django degil, diger frameworklere ait videoları da izleyebilirsiniz. Bu strateji işe yarayan bir yöntem açıkcası. Bu şekilde aldanan bir insan olarak:), pek tabiki çok memnunum bu durumdan, 10 dakika da olmasa da en sonunda geçmiş yazılarımda da belirttiğim trip uygulamasını bitirdim. Django ile yazılmış bu uygulamayı beş aylık bir sürede bitirdim. 10 dakika nere beş ay nere? Planlaması, tasarımı ve kodlamasını tek başıma yapmam belki de bu kadar uzun bir süre de bitirmeme neden oldu da diyebilirz. Tabiki çoğunlukla boş zamanlarımda yazmam da bu süreyi uzattı.
Neden bu uygulama maksimum bir saat içinde django kullanılarak yazılamadı?
1)İki tane workflow vardı.Aşağıda bir tanesinin şekli var.

2)User gruplar vardı ve degişik yetkilerin yapılandırılması.
3)Excel tabanlı raporlama.
5)Email notification.
6)Gezi takvimi.
7)Kullanıcı ayarları.
Çok iyi bir sonuç aldım. Herkese tavsiye ederim. Django küçük iş uygulamaları için biçilmiş kaftan.

Thursday, August 27, 2009

I have 1 terra My Book World Edition disk and I want to mount it to my linux machine. But i dont want to add a line to fstab in order to mount automatically. Because this disk is portable and whenever it is not plugged, linux will stay for a long time to mount this disk while it is startting. It is better to use autofs to mount this kind of share. I set up my share by using My Book World Edition web interface as one can see below:


My username is admin and password is 123456.
To mount cifs share automatically, i just add below line to /etc/auto.misc file
backup -fstype=cifs,username=admin,password=123456 ://disk_server/public

Friday, July 24, 2009

At this moment i am writing a django application and in this application reports can be exported to excel files. For CharField everything is ok but for decimal fields it is becoming complicated. Why? because in Turkey, we are using "," as a decimal separator. In database, decimal fields are kept as xx.x and excel is creating problems when it is regional setting adjusted to recognize xx,x as default format. This is typical internalization problem that you can see anywhere. Normally, django project considering this kind of problems.(i.e date filter, you can easily implement your date format with this filter.)But noone can blame Django not to have decimal formats converter filter in template,in fact implementing a decimal filter format converter is so simple in django.
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/ in this web page you can see how to write your own custom filter. But maybe you dont like to spend your time while reading long pages.Just look at this django file django/template/defaultfilters.py . This is the file which is containing default filters in django. In this file you need to spend less than five minutes to write your own simple decimal format converter filter.
Problem: 1881.19 -->1881,19 (a filter is needed in template).
Just add below lines to defaultfilters.py
def string2tr(value):
decimaltr=str(value).replace(".",",")
return decimaltr
And register your filter in this file
register.filter(string2tr)

Now whenever you want to convert xx.xx to xx,xx you can use your filter in templates. {{value|strig2tr}}

Sunday, April 19, 2009

Şirkette devamlı iş gezileri oluyor. Bu geziler için excel de formlar hazırlanıyor. Bu formları hazırlamak zaman kaybına ve insan hatasına yol açıyor. Financial group managerın bu konuda bir çözüm istemesi ile uzun zamandır beklediğim fırsatın dogdugunu anlamıştım. Bu olayın öncesine gitmek gerekiyor aslında. Öğrenmek için kendime dil arıyordum. Sistem tarafında olduğum için scripting bir dil lazımdı bana. Shell scriptin kalas gibi olması artık canıma tak etmişti. Php ye baktım o da hoşuma gitmedi. Perl çok karmaşık bir dil gibi geldi. Pek tabikini öğrenirim ama dünya gelişiyor. Yok mu bana kafama göre bir dil derken python ile tanıştım. En başta pythonun syntax olayına bayıldım. Gereksiz satır sonu karakteri yoktu. indentler sayesinde parantezlerden de kurtulmuştum. Herkes bilir bu basit görülecek iki konunun aslında geçmişte "AAA nasıl unutmuşum parantezi,noktalı virgülü" diyerekten insanın başını ağrıttıgını. Videolar, kitaplar derken pratik bir hobi uygulaması yazayım diyerekten ilk denememde çok güzel sonuçlar aldım. Tüm kapıları açacak anahtar bileşenler çok güzel bir şekilde yerine oturuyordu. Hobi olarak kendime iki tane imza toplama web sitesi seçip imagemagick ve tessaract-ocr kullanıp captchalarını kırıp kafama göre imza atma scriptleri yazdım. Tabiki saldırı amaçlı değil Red Kit adına bir kaç tane imza attıktan sonra bıraktım. Sevmiştim ben bu pythonu. Database bağlantısı da çok kolay. Pythonun tek tarafı script yazmak değil tabiki. Daha değişik neler yapılabilir diye ararken Django yu gördüm. Django dokümanlarını okudukca ilgim daha da arttı. Django ile bir uygulama geliştirmek istedim. Ruhumu ele geciren bu istekle artık baş edemiyordum.Ama bu nasıl olacaktı. Nette bir çok proje vardı. Klasik herkes blog yazıyordu. Kardeşim bu blog olayını da abarttılar diyerekten ne yazsam ne yazsam diye düşünürken Angelo'nun isteği ile lamba kafamın üstünde parıldadı. Bir hafta süre istedim. Draft project getireceğim dedikten sonra önceden django da zerre birşey geliştirmemiş bir insan olarak daldım bu işe. Bir hafta sonra önüne koydugumda very good diyerekten gönderdi beni. Projeme bir sponsor bulmuştum. Peki neye very good demişti. Aşağıdaki snapshotları var.

Django framework kullanıcı yönetimi sağlıyor:)


Kullanıcıları gruplayıp gruplara yetki verebilirsiniz. Bu kullanıcı sadece trip request edip kendi triplerini görebilir.


Kullanılar triplerini request edip trip'inin hangi step te beklediğini takip edebilir.


Tum triplerin görülebildiği alan.

Tek özellikleri bu değil tabiki. Assistant grubundakiler tripleri arrange edip managerların onayına göndermeleri gerekiyor. Asistanlar formları excel'e de export edebiliyorlar. Tek başına django nun yetmeyeceği konularda ise Jquery ve EcoTree den faydalandım. Bir sürü bug'ım hala var. Ama şöyle bir gercek var, koda iki hafta el atamayıp iki hafta sonra baktıktan sonra hemen herşeyi hatırlayıp bir onbeş dakika da tekrardan hakim olabilmek Django'nun ve pek tabiki python'un güzelliği. Özellikle database ve template tarafında Django rulezzz derim. Herkese python lu günler.

Wednesday, January 21, 2009

Opensource un her alana el attığı bilinen bir durum. İş yerinde çalışanların günlük zaman çizelgelerini görebilecekleri ve kartlı giriş sistemi ile uyumlu olan bir sisteme ihtiyacımız vardı. Bu sisteme halk arasında pdks deniliyor. Bir şirket bulup bu işi yaptıralım mı diye yönetimle konuşurken karşıma timetrex çıktı. Track employee attendance özelliğini içeren aslında daha fazlası olan bir sistem. Bordro düzenleme özelliği de var. Ben bu muhasebe işlerinden zerre kadar anlamadıgımdan bu konuya girmeyeceğim ama bir muhasebeciyle çalışılıp bu sistemin Türk mevzuatına da uyarlanabileceğine inanıyorum. Timetrax php ve postresql kullanılarak hazırlanmış bir yazılım. Peki kullanıcıların işe geliş gidiş saatlerini nasıl üstüne alacak? İş yerlerinde kullandığımız kartlı sistemlerde bu kayıtların tutulduğu bir veritabanı var. Bizdeki sistemde kartlı geçiş sisteminin kullandığı database ms access. Eksik olan ne? Tabiki kartlı geçiş sisteminden veriyi çekip Timetrex'e veriyi gönderebilecek bir program. Hangi veriyi hangi tablodan çekeceğimi anladıktan sonra python ile veriyi çekip Timetrex'e veriyi yükledim. Şimdilik daha uygulamaya geçmedik fakat herkese öneririm.

Friday, January 09, 2009

Windows üstünde django calıştırıp mssql 2005 ile bağlantı kurdum. Bu django nasıl birseymiş diye kurcalarken gördümki mssql database inde bulunan türkçe karakterli kayıtları django encode etmeye çalışırken dağılıyordu. "TemplateSyntaxError at utf8 codec can't decode bytes" şeklinde hata veriyordu. Mssql in utf8 oldugunu dusunmek gaflet ve dalalet gibi birsey. http://docs.python.org/library/codecs.html sayfasından Türkce codecin cp1254 oldugunu görüp c:\Python25\Lib\site-packages\django\utils\encoding.py de bulunan
def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'):
fonsiyonunda utf-8 yerine cp1254 koyarak, turkce karakter problemini çözdüm.
def force_unicode(s, encoding='cp1254', strings_only=False, errors='strict'):
Herkese tavsiye ederim. Ailecek cp1254 kullanıyoruz.