Tokens — Page 16

Uzun bir zaman sonra, fotoğraf. Yeniden.

photography

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://4.bp.blogspot.com/_AZvuJ9kmERM/Stj_QTZ4BzI/AAAAAAAABSQ/8OvYjOKaCiw/s400/P8023997_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393341209327961906” />Evimin tavanı. Amaçsızca.

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://1.bp.blogspot.com/_AZvuJ9kmERM/Stj_QIYiyGI/AAAAAAAABSI/BtL0bHQOsHc/s400/P6253876_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393341206369585250” />Beypazarı. Sıra sıra dizilmiş saksılarda çiçekler.

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://3.bp.blogspot.com/_AZvuJ9kmERM/Stj_Psu-GEI/AAAAAAAABSA/ZM9ZMZK-t5E/s400/P6253863_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393341198947457090” />Beypazarı. Çocukların ayrı bir dünyaları var gerçekten ve içlerine girmek genellikle çok eğlenceli.

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://2.bp.blogspot.com/_AZvuJ9kmERM/Stj_QwLU41I/AAAAAAAABSY/Xt_CGMWqp0E/s400/PA104024.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393341217051566930” />Ortaköy Cami. Neden bilmiyorum ama bu tür fotoğrafları seviyorum. Mimari çok güzel, içerideki gölgeler ve günbatımının kızıllığı da.

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;” src=”http://4.bp.blogspot.com/_AZvuJ9kmERM/Stj_RLUZtGI/AAAAAAAABSg/lvmVSuc1HYc/s400/PA114114_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393341224337388642” />Güneşi kovalarken.


<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 176px;” src=”http://1.bp.blogspot.com/_AZvuJ9kmERM/StkAmCA9ZNI/AAAAAAAABSo/laoAvLTZidk/s400/PA114119_2.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393342682128803026” />

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 280px;” src=”http://1.bp.blogspot.com/_AZvuJ9kmERM/StkAmrSHpfI/AAAAAAAABSw/6JB1_3w3lTY/s400/PA114142_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393342693206631922” />

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://4.bp.blogspot.com/_AZvuJ9kmERM/StkAnFhY9PI/AAAAAAAABS4/Kb6xV4N79yU/s400/PA114158_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393342700250002674” />

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://2.bp.blogspot.com/_AZvuJ9kmERM/StkAn0NviXI/AAAAAAAABTI/Rdw0O9ka9Ko/s400/PA114168_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393342712784062834” />Kızkulesi fotoğrafları. Kimbilir kaçıncı kez benzer bir açıdan, Üsküdar’daki o beton oturaklarda oturup güneşin artık gidişini izlerken. Free Photos İstanbul buluşmasından.

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;” src=”http://2.bp.blogspot.com/_AZvuJ9kmERM/StkAnUaRMWI/AAAAAAAABTA/C0tVxdvp8G4/s400/PA114167_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393342704246665570” />

<img style=”display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 228px;” src=”http://4.bp.blogspot.com/_AZvuJ9kmERM/StkBHkEaOpI/AAAAAAAABTQ/lWmzwY4OaPQ/s400/PA114178_1.JPG” border=”0” alt=”“id=”BLOGGER_PHOTO_ID_5393343258205764242” />Eve dönüş yolunu bile değerlendirdik. Karşı taraftan, Beşiktaş kıyısından geldiğimiz kıta.

Bir Yazılım Üssü Nasıl Olmalı?

teknoloji

Kendim bir teknokentte çalıştığımdan dolayı (Hacettepe Teknokent) teknokent problemleri ve genel olarak Türkiye’deki teknoloji konusundaki yanlışlar hakkında çokça düşünüyorum. Hemen her konuda güzel ülkemde yanlışlar gördüğüm için bugün ntvmsnbc.com’da çıkan Eskişehir Yazılım Üssü projesinin iflas etmesi ile ilgili haber beni çok da şaşırtmadı.

<h2>Bir Örnek Olarak Eskişehir Yazılım Üssü</h2>Eskişehir Yazılım Üssü ile ilgili haberleri bundan birkaç sene önce ilk açıldığı tarihten beri takip ediyorum. İlk sene genç girişimcileri de çekmek amacıyla Genç Patronlar (şu an çalışmayan web siteleri gencpatronlar.org.tr idi) isimli bir yarışma düzenlemişlerdi. Bu yarışma ile dereceye girenlere kendi şirketlerini kurmak konusunda çeşitli yardımlar, ofis alanı ve diğer altyapı olanakları sağlamaya söz verilmişti. Ben de yarışmaya katılmayı düşünmüş, sonra biraz da tembellikten vazgeçmiştim. Birkaç yıl ileriye sarın ve kurulmaya çalışılan yazılım üssü yaklaşık 1 Milyon TL harcandıktan sonra kapatılıyor. Türkiye’de birçok kuluçka merkezinin, teknokent yatırımlarının yapıldığını biliyorum. Kendi memleketim olan Mersin’e bile bir teknokent kuruldu. Peki bu yatırımların karşılığı alınıyor mu, daha iyi verim alabilmek için neler yapılabilir? Şahsi kanaatim iyi bir teknolojik gelişmenin olabilmesi için gereken o kadar çok temel faktör eksik ki binalara, donanım ve yazılıma para saçarak ancak çok küçük bir gelişme gösterilebilir. Nitekim teknoloji konusunda katma değer üreten, insanlara fayda sağlayan çok az şirketin olması benim bu düşüncemin en büyük kanıtlarından [1].

<h2>Gerçekten Yapılması Gerekenler</h2>Teknoloji ile ilgili o kadar çok şey yanlış yapılıyor ki Türkiye’de, devlet o kadar çok engel koyuyor ki insanın önüne, böyle yapay binalar ve altyapı yatırımlarının bir getirisinin olmamasına çok da şaşmamak gerekiyor. Asıl yapılması gereken şeyler ıskalanırken yeteneksiz yöneticiler sayesinde milyonlar boş yere harcanıyor. Bana göre yeni binalardan ve para saçılan gereksiz projelerden önce şunlar yapılmalı:

<ol><li>Devletin şu an var olan durumundan çok daha iyi bir insan kaynakları politikasına ihtiyacı var. Eğer 21. yüzyılı da ıskalamak istemiyorsa bu ülke, en iyi insanları (en iyiden kasıt: dürüst, zeki, çalışkan) kendisinde çalışmak için çekebilmeli. Arkadaşlarımdan çoğu devlet ile ilgili bir yerde çalışmak istemiyorlar ve çalışanlar da hiç memnun değiller. Nedenleri çok basit, kendilerini geliştirecekleri bir ortam yok, üstleri ve iş arkadaşları kendi bilgi seviyelerinde değiller, fikirleri önemsenmiyor. Maaş ve çalışma ortamı iç açıcı değil. Eğer geleceğin teknolojilerini seçecek, ülkenin kalkınmasında başrol oynayacak insanların seçilmesi gerekiyorsa ve çalışanlar bunların gerçekleşmesini sağlayacak en önemli kaynaklarsa durumun önemine göre bir ortam sağlanmalı. En önemlisi bu çalışanların iş ortamını düzeltmeye yönelik fikirleri bürokrasinin kıskaçları arasında ezilmemeli, en iyi şekilde uygulanmalı.
</li>
<li>Her konuda bir geri besleme düzeneği kurulmalı. İnsanlar rahatça bir kurumdan şikayet edebilmeliler, bu konuda geri dönüş alabilmeliler. Kendi mahallelerine giden halk otobüsü çok seyrek mi geçiyor? İş çıkışı doğalgaz faturalarını ödeyemiyorlar mı? Şirket kurmak için saçma sapan belgeler (ikametgah ilmuhaberi!?) mi isteniyor? Bu gibi konularda yapıcı çözümler getirilmeli ve insanların bu konulardaki eziyeti azaltılmalı.
</li>
<li>Üniversiteler özerkleştirilmeli. İstedikleri ve ihtiyaçları olduğu şekilde insan kaynağı alabilmeliler. Tabii düzenleme ve denetleme kurumları da yetkilerin kötüye kullanıldığı durumlara tarafsız bir şekilde müdahale etmeli.
</li>
<li>Siyasetten bağımsız bir teknoloji politikası oluşturulmalı. Ülkenin bilim ve teknoloji kurumlarının başına saygıdeğer, bilim ve teknoloji konusuna hakimiyetini kanıtlamış bilim adamları getirilmeli ve kadrolaşma önlenmeli. Yeşil enerji (fotovoltaik paneller, rüzgar enerjisi vs.), bilişim (yüksek başarımlı hesaplama, simülasyonlar, oyun tasarımı) gibi katma değeri yüksek konularda devlet diğer ülkelerde olduğu gibi vergi desteği gibi destekler sağlamalı, bunların temeli olan iletişim ucuzlatılmalı. Verginin de vergisinin alındığı ÖTV gibi saçmalıklar bu hizmetlere uygulanmamalı.
</li>
<li>Bilişim sektörünün ve diğer sektörlerin önündeki engeller kaldırılmalı. Türk Telekom rekabet sağlandıktan, başka şirketler kendi altyapılarını kurmaya başladıktan sonra özelleştirilmeliydi. Bu yapılmadı madem rekabetin artık doğru düzgün yapılabilmesi için devlet denetleme ve düzenleme kurumlarını işletmeli. Yerlerde sürünen bant genişliği, Türk Telekomun insanı çıldırtan internet hizmeti ile teknoloji üretilmesi beklenemez.
</li>
<li>Yargının bilgi çağına ayak uydurulması sağlanmalı. YouTube sansürü gibi aptallıklar ve saçmalıklar artık bırakılmalı. YouTube’da binlerce bilimsel video var. Sadece Google’ın kendi kampüsüne gelen konuşmacıların videolarını sunduğu sayfalar bile YouTube’un her zaman açık kalması için yeterli bir sebep. Savcılar, yargıçlar teknoloji konusunda eğitilmeli, yaşlı başlı adamların teknolojiyi anlamamaları ayıp değil ama onların bu türden kararlar almaları tüm ülkenin ayıbıdır. Bu kararların önlenmesi için tüm yasal düzenlemeler yapılmalı, bu da yetmiyorsa özel bilişim mahkemeleri kurulmalı, bilirkişilik işletilmeli ve saçma kararların alınması önlenmelidir [2].
</li>
<li>Ülkece okumamız gerekiyor. Bu hem teknoloji konusunda kendimizi geliştirmemiz hem de yönetimsel açıdan daha iyiye ulaşmamız için gerekli. Kitap ve gazetelerden alınan vergiler düşürülmeli, çeşitli destekler sağlanmalı. Amazon Kindle gibi bilgi konusunda insanlara çok fayda sağlayacak aletler konusunda devletin destek olması gerekiyor [3].
</li>
<li>İnsan kaynaklarını öneminden dolayı ilk madde olarak vermiştim ama vurgulamak için bir daha değinmem gerekiyor. Her pozisyon için önemli ama özellikle kilit pozisyonlara yetenekli, mümkünse yurt dışı deneyimi olan, alanında bilgili insanları takip eden [4], başka bir dil bilmiyorlarsa en azından İngilizceleri harika insanlar getirilmeli.
</li>
<li>Çalışmalarda bir birliktelik olmalı. Devlet bir yandan Pardus geliştirilmesine para harcarken diğer taraftan Milli Eğitim Bakanlığı gidip Microsoft’a kötü yazılımları için para saçmamalı. </li></ol>
Süphesiz unuttuğum noktalar olmuştur ama bence bunların bir kısmının yapılması bile ülke ekonomisine büyük bir geri dönüş getirecektir. Ve aslına bakarsanız hepsi olması gereken, yapılması çok zor olmayan işler.

<h2>Sonuç</h2>ABD gibi bir ülkede bile -yani bizdeki gibi saçma sapan bürokrasinin olmadığı yerlerde bile- Silikon Vadisinin bir ikincisi yok. Eğer yüksek teknoloji bekliyorsanız birçok avantajın biraraya gelmesi gerekiyor. İnanın bence binalar ve bilgisayarlar yüksek teknoloji üretebilmek için gerekli en son kaynaklar. Devlet kendi koyduğu engelleri kaldırsa özel sektör zaten bina ve malzeme gibi “kolay” sorunları aşacaktır. Tek sorun devletin ta kendisi.



Dipnotlar:

[1] Milsoft, Aselsan, Havelsan, Meteksan gibi askeri teknoloji üreten veya devlete proje yapan şirketleri yenilikçi olmadıkları, faydalı teknolojiler üretmedikleri için dikkate almıyorum. Bu şirketler ahbab çavuş ilişkisi içinde, rekabetin olmadığı bir ortamda projeler üretip olmayan sorunlara yanlış çözümler buluyorlar bana göre.

[2] Ulaştırma Bakanı Binali Yıldırım’ın beyanları sokakta domates satan insanlardan farksız. Eğer bir sorun varsa bu kendi haline bırakılmamalı ve gelişmiş memleketlerde olduğu gibi hızlıca çözülmeli. Bakanlar da kendilerinin yetkili ve sorumlu olduklarını unutmamalılar.

[3] Amazon Kindle, aralarında Liberya, Swaziland, Malavi, Kenya gibi Afrika ülkelerinin de bulunduğu 100 tane ülkeye satışa başlanıyor. Ama bu 100 ülkenin arasında Türkiye yok! Rantçı politikacılar, kitaptan bihaber yöneticiler sevinsin!

[4] Bilgili insanlara örnekler: Tim O’Reilly, Paul Graham, Thomas Friedman ve daha birçokları.

Mac OS X File System IS Case Insensitive (D'oh!)

rants

I just realized that the default file system that comes with a Mac OS X is case insensitive (also case preserving but more on that later) by losing a day’s work (ouch!). What happened was that I had some code on an SVN repository and having transformed the code to a class, I wanted to change the file’s name so that is started with an upper case letter. I first tried “svn move” with no luck:

move /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/Locale.php
move /MyProjects/secretone/builder/lib/util.php /MyProjects/secretone/builder/lib/Util.php
svn: Path '/MyProjects/secretone/builder/lib/Util.php' is not a directory
svn: Path '/MyProjects/secretone/builder/lib/Locale.php' is not a directory

This should have rang alarm bells. It did not. Seeing this didn’t work, I manually moved the file and did a commit:

add -N /MyProjects/secretone/builder/lib/Locale.php
A /MyProjects/secretone/builder/lib/Locale.php
add -N /MyProjects/secretone/builder/lib/Util.php
A /MyProjects/secretone/builder/lib/Util.php
delete --force /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/util.php
D /MyProjects/secretone/builder/lib/locale.php
D /MyProjects/secretone/builder/lib/util.php
commit -m "ADD: Added some test configurations" /MyProjects/secretone/builder/index.php /MyProjects/secretone/builder/lib/Locale.php /MyProjects/secretone/builder/lib/Util.php /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/util.php /MyProjects/secretone/builder/tests/TestHelper.php /MyProjects/secretone/builder/tests/lib /MyProjects/secretone/builder/tests/lib/LocaleTest.php
svn: Commit failed (details follow):
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing
svn: Commit failed (details follow):
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing

The errors in the end are true errors. SVN first deleted the files “util.php” and “locale.php” which were in fact “Util.php” and “Locale.php” files and then tried to add these files (oh, thanks!). The files are gone, thanks to HFS+ and svn working together. Gotta start again. Aptana doesn’t seem to be good at taking backups neither, so…

HFS+ is the default file system Mac OS X uses. The other file system, UFS is the way a Unix file system should behave, it is case sensitive but I’ve read many reviews that it is a bit slow compared to HFS+ on a Mac. A page on Apple website compares the two file systems but it doesn’t say how you can learn which one you are using on your Mac. The problem I experienced actually does not have much to do with the version control I’m using, svn, because it seems that git also experiences the same problem when on a case insensitive file system.

I have been working on a Mac for two months now and I always assumed the file system was case sensitive because of the Unix background Mac’s have and also thanks to the file names that come by default. Take the libraries folder for example, it starts with an upper case letter: /Library. Many other folders have similar mix case names which made me think the OS was running on a case sensitive file system. This is called case-preserving, and it seems that I forgot about Windows which is also similar (it’s been 4 years since I stopped using Windows). On a Windows machine things get a lot more complicated because MS says NTFS supports case sensitivity but a lot of the applications do not. Say you open the file navigator (the Explorer) and create a file (or a folder) called “MS”. When you think about case sensitivity, you should be able to create another file having name, say “ms”. But it turns out you can’t. MS says:
<blockquote>
NTFS supports two slightly different modes of operation that can be selected by the subsystem of the application interacting with NTFS.
</blockquote>
So much for consistency. And thanks Microsoft for making such a shitty OS.

So moral of the story is, learn about your file system throughly before you do anything. Oh, and the other one, stay away from a Mac.

Jokes aside, I think Linux offers the best development environment out there.

PHP Warning: Module X already loaded

programming

I just found the reason for this annoying message. Every time I run PHP, it used to throw me a bunch of errors of the form:

PHP Warning: Module 'mysql' already loaded in Unknown on line 0

Warning: Module 'mysql' already loaded in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0

Warning: Module 'mysqli' already loaded in Unknown on line 0
PHP Warning: Module 'pdo_mysql' already loaded in Unknown on line 0

Warning: Module 'pdo_mysql' already loaded in Unknown on line 0

It was very irritating because I checked and re-checked my php.ini file to see if I was including the aforementioned modules more than once. So, if you are receiving these kinds of errors check to see if your php.ini file has something like

extension=mysql.so
extension=mysqli.so
extension=pdo_mysql.so

more than once. The trouble with PHP is that you could have many php.ini files on your system that you didn’t know about. PHP CLI uses a different file than CGI and I also have many other PHP installations, for example those that came with Aptana IDE.

To find the .ini file you are interested in, the best you can do is to run “$ php -i” which basically calls phpinfo() and echoes the output. This will print out the .ini file it is using, allowing you to find the file causing trouble. Here’s what I found:

Configuration File (php.ini) Path => /opt/local/etc/php5
Loaded Configuration File => /opt/local/etc/php5/php.ini
Scan this dir for additional .ini files => /opt/local/var/db/php5
Additional .ini files parsed => /opt/local/var/db/php5/apc.ini,
/opt/local/var/db/php5/curl.ini,
/opt/local/var/db/php5/mysql.ini,
/opt/local/var/db/php5/imagick.ini,
/opt/local/var/db/php5/memcache.ini,
/opt/local/var/db/php5/pecl_http.ini,
/opt/local/var/db/php5/readline.ini,
/opt/local/var/db/php5/tidy.ini,
/opt/local/var/db/php5/xdebug.ini,
/opt/local/var/db/php5/zlib.ini

Aha! So there’s all the other .ini files that are included. I didn’t know about this. So for my problem, the simple fix is removing the mysql.ini file from that directory. Everything is fine now. Enjoy :-)

Installing PHP Extensions - A Step by Step Guide

programming

I recently installed APC (Alternative PHP Cache) on one of our servers and I want to provide a step by step guide so that others can benefit from my experience. We had both php4 and php5 installed in the server and I wanted to install the accelerator for php4 specifically. When I used pecl to install the extension, it ended up in the php5 modules directory.

$ sudo pecl install apc
downloading APC-3.0.19.tgz ...
Starting to download APC-3.0.19.tgz (115,735 bytes)
.....................done: 115,735 bytes
47 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
[some more output]
...
install ok: channel://pecl.php.net/APC-3.0.19
You should add "extension=apc.so" to php.ini

Since I wanted to have install APC for php4, I went down the manual way:
Step1: Download and unzip APC

$ wget http://pecl.php.net/get/APC-3.0.19.tgz
$ tar xvzf APC-3.0.19.tgz
$ cd APC-3.0.19/

Step2: Use phpize to prepare the source code. If you do not have phpize, you can get it from php4-dev (or php5-dev if you are using php5) package on Debian.

$ phpize

Step3: Use ./configure to create library settings etc. Make sure correct php-config is on your path. Then do make. You will have the apc.so module file in the modules directory in the current path. You can copy that to your php modules directory or ask make install to do it.

$ ./configure
$ make
$ make install

Step4: Ensure that the module is copied to the correct place. As a final step, you need to edit your php.ini file so that the module is loaded:

extension=apc.so

That’s all, enjoy your new bytecode optimizations. I’ll write another post detailing what speedup I was able to observe.