Gerek ofisteki gerek evdeki normal pc’lere macos (iatkos) kurmak için ne kadar uğraştığımı bu sayfalarda bir kaç kere yazmıştım. Bunlardan en uğraştırıcı olanı geçen hafta nihayet sattığım Asus N61VN laptopum idi. Asus’u satınca Mac-Mini almaya karar vermiştim. Sağolsun Friend Feed camiasından Barış Değer ve Bahaeddin Beyler bu konuda yardımcı olacaklarını önceden belirtmişlerdi. Fırsat çıkınca hemen kapılarını çaldım ve ennihayet geçen hafta Mac-Mini’yi evimizde gördük. Gördük görmesine ama çalıştırmak ancak dün nasip oldu. Zira ilk gün ofisten getirdiğim VGA monitörü bulabildiğim tüm aparatlarla denememe rağmen Mac-Mini’ye bağlayamadık ve biz de en hızlısından bir gönderi yaparak hepsiburada.com’dan yeni bir monitör sipariş verdik. Perşembe sipariş ettiğimiz ürün ellerinde hazır olmasına rağmen (ki o yüzden “hızlı gönderi” diyorlardı) paketleyip kargoya vermeleri cumartesiyi bulunca ürünün bana gelmesi pazartesiyi buldu. Allah’tan, “ürün sizin transfer merkezinizde, gelip almak istiyorum” ricalarımı “biz size değil kargoyu bize teslim eden firmaya yani hepsiburada.com’a karşı sorumluyuz, prosedür, protokol, ıvır zıvır, kıvır kıvır” tarzı teorik olarak haklı ama pratik olarak hiç bir şekilde müşteriyi memnun etmeyen cevaplarla beni beddualara gark eden Yurtiçi Kargo firması 30 Ağustos olmasına rağmen pazartesi günü de çalışıyormuş. Gerçi evimizden iki sokak arkadaki kargo şubesinden 9.20′de çıkan bir kargo bizim eve saat 14.00′de teslim edilince 30 Ağustos’um da heba oldu. Neyse geçti çok şükür :)

İşte sonunda mac ailesinin minik bir bireyiyle teşerrüf etmiş olduk. 8 ay önce eşimin eski pc’sinden kurtulup Artı Bilgisayar’ın kampanyasından faydalanarak iMac almıştık. Ondan fırsat buldukça bilgisayarını kapıp kullanıyordum. Çok şükür şimdi rahatladık.

Bu sene Bahçeşehir Üniversitesi Yazılım Mühendisliği Bölümüne başlayacak olan sevgili kayınbiraderim de bizle yaşayacağı için çalışma odamızı ona bırakarak mac’leri kapıp salona geçtik. Normal pc’ler salonda çok çirkin dururdu ve eşim kesin çıngar çıkartırdı :). Ama mac’ler dekorasyonu bozmadığı için problem yok. Ürünlerini adeta beyaz eşya kalitesinde hazırlayan Apple tasarımcılarına teşekkür ederiz.

XCode’da Kod Tamamlama

29 Ağustos 2010

XCode’un yapısı çok hoşuma gitmekle beraber diğer IDE’lere nazaran bir kusuru olduğunu düşünüyordum. Kod yazarken sizi zahmetten kurtarmak için en yakın ihtimali önceden sizin yazmak üzere olduğunuz ifadeye soluk bir renkle tamamlıyor. Siz “hah buydu” diyorsanız “tab” tuşuna basıp ifadeyi yazmış gibi oluyorsunuz, “yok bu değildi” diyorsanız yazmaya devam ediyorsunuz. Siz yazdıkça o en yakın ihtimali değiştirip önünüze koyuyor. Gayet iyi bir özellik ama diğer ide’lerde bu özellik daha gelişmiş oluyor. Genelde siz yazmaya başlar başlamaz, mesela değişkeninizi yazdıkdan sonra “.” işaretini koyar koymaz bir combo-box (aşağı açılır menü) çıkar ve siz orda tüm yazabileceğiniz ihtimalleri görürsünüz. Benim gibi acemi bir Objective-C geliştiricileri için XCode böyle bir özellik olması harika olurdu… Derken… Meğer varmış! Tesadüfen ifadeyi yazıp “.” koydukdan sonra ESC tuşuna basmasam görmeyecektim. Bir ömür böyle gidecektim. Ah Steve! İlla farklı olacaksın değil mi!

XCode’nizi güncellediğinizde Overview menüsünden eski sürüm iPhone’ların kalktığını görünce ümitsizliğe düşmeyin. XCode ekranında projenizin ana dosyasına çift tıklayarak Project Info penceresini açın. En üstteki Build sekmesine tıklayıp arama alanına “deploy” yazın. Gelen listede “IPhone OS Deployment Target” seçeneğini göreceksiniz. Burada istediğiniz iPhone sürümünü işaretleyebilirsiniz. Böylece eski iPhone cihazınıza uygulamayı gönderip testlerinizi yapmaya devam edebilirsiniz. Uygulamayı yayınladığınızda da eski sürüm iPhone’ler problem yaşamazlar.

Eşinizle bir mac’i paylaşıyorsanız (daha doğrusu paylaşamıyorsanız) ve onun bilgisayar başında olmadığı zaman hesabınızı açıp sonra tekrar kapatmak hoşunuza gitmiyorsa sizi bu zahmetten kurtaracak basit bir yöntem var. Kullanıcı oturumunuzu kapatmadan başka bir oturuma geçmek mümkün. Bunun için System Preferences’dan Accounts’u açın. Sol alttaki kilit ikonuna tıklayıp yönetici parolanızla kilidi açın. Login Options’a tıklayıp ‘Show fast user switching menu as’ alanına istediğiniz seçeneği işaretleyin. Buradaki seçiminize göre ekranın sağ üst köşesinde kullanıcıların adlarını (ya da kısa adlarını, ya da simgelerini) içeren bir menü beliriyor. Bu menüden istediğiniz kullanıcıyı seçip onun şifresini girdikden sonra afilli bir dönme efekti ile birlikte şıp diye o hesaba geçiyorsunuz. Üstelik mevcut hesap da kapanmamış oluyor.

iPhone SDK’nızı güncelledikden sonra uygulamalarınız ilginç bir şekilde simülatörde simsiyah bir ekranda çalışmakta ısrar ediyorsa saçınızı başınızı yolmayın, uygulamayı bu yeni sdk için baştan yazmayın. MainWindow.xib dosyasına çift tıklayın Intarface Builder’inizi açın. Window objesine tıklayıp Window Attributes ekranındaki Visible at Launch ve Full Screen at Launch seçeneklerinin ikisinin de işaretleyin. Sorununuz çözülecektir.

Eğer UITextField kullanıyorsanız yazma işi bitince klavyeyi ortadan kaldırmak çok kolay. Aşağıdaki gibi bir fonksiyon yazıp (.h dosyasına tanımlamasını da eklemeyi unutmayın) view’ınızdaki UITextField objesinin “Did on End Exit” olayında (event) bu fonksiyonun çalışmasını sağlamalısınız.

- (IBAction)done:(id)sender{
[ornekTextField resignFirstResponder];
}

Eğer çok satırlı bir yazı alanı ihtiyacınız varsa UITextView kullanıyorsunuz demektir. UITextView’ın malesef “Did on End Exit” gibi bir tetikleyicisi olmadığı için yukarıdaki methodu burda kullanamıyorsunuz. Bu durumu düzeltmek için hoş olmasa da işe yarayan bir kaç yöntem var.

ToolBar kısmına mesela “Tamam” gibi bir buton ekleyip bu butona basıldığında yukarıdaki fonksiyonu çalıştırıp klavyeyi gizleyebilirsiniz. Ya da daha çok kullanılan bir metod olarak ekranda boş bir alana tıklandığında bu fonksiyonu çalıştırabilirsiniz. Aslında aynı şeyi tekrar ediyorum. Çünkü ekranda boş bir alana basmayı algılayabilmek için şöyle bir numara yapıyoruz. “Custom” tipinde bir buton oluşturup Layout menüsünden “Send to back” diyerek view’ın en arkasına gönderiyoruz ve bu butonun eniyle boyunu tüm view’ı kaplayacak şekilde genişletiyoruz. Böylece kocaman ve görünmez bir butonumuz oluyor. Bu butona basıldığında (Touch Down) yukarıdaki fonksiyonun çalışmasını sağlıyoruz. İşte hepsi bu :)

Eğer siz de benim gibi bunu görsel arayüzden beceremiyorsanız AppDelegate.m dosyasındaki applicationDidFinishLaunching fonksiyonunun içine şu koyu renkle yazılmış ifadeyi ekleyin:

-(void)applicationDidFinishLaunching:(UIApplication *)application{
[application setStatusBarStyle:UIStatusBarStyleBlackOpaque];

}

Diğer bir yol ise, projenizdeki ProjeAdi-Info.plist dosyasına şu satırları eklemek:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleOpaqueBlack</string>

iPhone uygulamanızı hazırlarken özene bezene yaptığınız uygulama ikonunun üzerine otomatik olarak eklenen parlaklık (glossy) efektini beğenmiyorsanız kolayca kaldırabilirsiniz. Projenizdeki ProjeAdi-Info.plist dosyasını açarak “Icon File” alanına ikonunuzun adını kaydedin. Sonra bu dosyayı bir text editörü ile açıp aşağıdaki koyu renkli satırları ekleyin. Eğer ikon değişmemisse Xcode’un Build menusunden “Clean” seçeneğini çalıştırın.


<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>UIPrerenderedIcon</key>
<true/>

</dict>
</plist>

Bilgisayarla ilk tanışmam 1993 yılında bir programcı vesilesiyle olduğu için o günden bu yana bilgisayar karşısında son kullanıcı olmakdan çok programcı olarak vakit geçirmişimdir. Bir yerden sonra programcılık artık hobi olmaktan da çıkıp mesleğim haline geldi.

17 yılda insan envai çeşit programlama dilini öğrenir aslında ama yapı itibariyle beğendiğim bir şeyden kolay kolay vazgeçemediğim için qbasic ile başladığım yolculuğa uzunca bir süre (2000′e kadar) Visual Basic ile devam ettim. Üniversitede internet ile tanışınca HTML’di, Javascript’ti, Perl’di, PHP’ydi derken o heyecanla masaüstü uygulamalardan kopup script dillere kaymış buldum kendimi. Profesyonel iş hayatına PHP geliştirici olarak girince bir daha kopamadım PHP’den.

Üniversitede bir kaç arkadaşımla beraber kendi kendimize C’ye başladığımızı hatırlıyorum, bir süre sonra arkadaşlar vazgeçince ben de bırakmıştım. İşte o gün bıraktığım C bugün tekrar karşıma çıktı.

Yıllardır script yazmakdan sıkılmış biri olarak kendimi mobil dünyanın -bilhassa iPhone’un- serin sularına atmak istiyorum, ama Objective C stilinde yüzemeyenler bu suda boğulup gidiyorlar. Bense stili bıraktım, daha yüzmeyi bile bilmiyorum malesef.

En çok ağırıma giden de gözümün önünde iPhone SDK’sının tüm komponentleri duruyor olmasına rağmen, içlerini dolduracak kodları nereye nasıl yazacağımı bilememek.

İnternetten çat pat indirdiğim örnekler sayesinde bir kaç uygulama yazıp AppStore’a koymayı başardım ama hepsi basit öğeler içeren uygulamalardı. Örneğin bir tablonun içini dataları veritabanından gelecek şekilde dolduramıyordum. Takıldığım yerlerde sosyal medyada yardım çığlıkları atıyordum ama #yay’dan başka cevap gelmiyordu.

Aslında bu devirde herşeyin çözümü nette var. Ama bu Objective C denen nane PHP’den sonra bana çok karışık geldi. Pratik olarak mevzuyu sökemedim malesef. Yaşlılık(!)

Bugün, yine derdime derman ararken, her zamanki gibi Türkçe kaynaklardan pek bir hayır gelmemesi üzerine İngilizce çözümlere bakıyordum ki cocoadevcentral.com sitesinin bu konuda eline kimsenin su dökemediğini öğrendim. Ben de bu siteden adım adım gitmeye karar verdim. Gel gör ki ilk adımda (http://cocoadevcentral.com/d/learn_objectivec/) “Eğer C bilmiyorsanız Objective C’ye başlamadan önce buyrun burdan (http://cocoadevcentral.com/articles/000081.php) C öğrenin) diye yazıyordu. Madem bir kere karar verdik, el mecbur uyacağız.

Ne demişler, C’ye başlamanın yaşı olmaaaz. (Daha demin dedim, başlığı yazarken).

Geçen cumartesi eşimin blogu vesilesi ile Çorlu’daki Algida Dondurma Fabrikası gezisine davetliydik. Son zamanlarda katıldığımız pek çok etkinlikte olduğu gibi bunda da ben +1 olarak gitme şansına sahip oldum (Bada Developers Days etkinliğinde eşim +1 idi heh hee).

Gezinin olduğu sabah eşim rüyasında servis otobüsünü kaçırdığımızı görmüştü, öyle de oldu. Daha doğrusu biz vaktinde duraktaydık ama servis durağı tutturamadı ve bizi es geçti. Çok şükür imdadımıza FF’den Göktaşı Hanım ve eşi yetişti. Onlar durağa arabalarıyla gelmişlerdi. Otobüsü fazla uzaklaşmadan yetişebildik.

Daha çok yemek bloggerları davetli olduğundan katılımcıların büyük bir kısmı bayandı. Sunipeyk bey ve Özgür Bey (babaolmak.com) baylardan bildiklerim. Özgür Bey’in minik kızı talihimize bizim servisteydi :) Bir annesinin bir babasının kucağında zıplayıp durdu. Göktaşı Hanım’ın  mahdumu da yan koltukta kah uslu uslu oturarak kah annesinin dizlerinde uyuyarak güzel bir yolculuk yaptı. Diğer serviste de bir kaç cocuk daha vardı, artık onlar için ne unutulmaz bir gezi olmuştur kimbilir:)

Küçükken dondurma sevmezdim, ona rağmen annemle ablam -tadına bakıp sonra onlardan birine vereceğim için- mahsus bana da ısmarlardı. Şimdi en azından dondurmamı bitirebiliyorum :D Hele Magnum Gold olursa eşimin dondurmasına bile dadanmam ihtimal dahilinde.

Geziye başlamadan önce çay-kahve ve aperatif ikramı vardı. İkramların yanısıra çeşit çeşit dondurmalar da dolaplarda afiyetle bizim ziyaretimizi bekliyordu. Gönüllerini kırmadan onları da mutlu ettik.

İkramdan sonra seminer salonunda çeşitli sunumlar yapıldı. Algida anlatıldı. Dondurma tüketiminde Türkiye’nin nerede olduğunu ve nereyi hedeflediklerini söylediler. Soru cevap bölümü oldu. Güvenlik konusunda da kısa bir brifing aldık. Olası durumlarda çalan siren seslerinine ne anlama geldiğini ifade ettiler. “Bu gün planlanan herhangi bir tatbikat yoktur, siren sesi duyarsanız bu gerçek bir siren sesidir” cümlesi anlatan dahil herkesi güldürdü :)

Geziye başlamadan önce çantalarımızı bıraktığımız toplantı odasında masanın üstündeki ethernet kablosu çok ilgimi çekti. Klasik ethernet kablosu yerine bilgisayar kasalarındaki data kabloları gibi ince şeritler halinde hazırlanmıştı. Çok hoşuma gitti.

Fabrikanın hijyenik önlemleri katılımcılar için eğlenceliydi. Hepimize tek kullanımlık beyaz önlükler giydirdiler, acemi doktorlara benzedik. Çocuklara da minik önlükler giydirdiler. Turnikelerden geçerken üzerinde yürüdüğümüz yerde sular akıyor ve ayakkabılarımızı yıkayacak fırçalar dönüyordu. Gerçi fırçalar çalışanların özel ayakkabıları içindi sanırım, bizim ayağımızda galoş vardı. Ellerimizi önce köpüklü sabunla yıkadık, sonra turkinelerden geçerken özel bir sıvıyla daha ıslattık.

Otomasyon sistemleri -her ne kadar elektronik mühendisi olup mesleğimi icra etmesem de- çok ilgimi çekmiştir, bu açıdan bir dondurma fabrikasını gezmek benim için güzel bir deneyim oldu. Birbiriyle eşzamanlı bir şekilde çalışan bütün o makineler, işlemler çok muntazamdı ve harika bir mühendislik eseriydi. Fakat bu gezi sayesinde yazılım sektörüne kaymakla ne kadar isabetli bir adım atmış olduğumu bir kere anladım. Elektronik veya makine, Gerçekten zor dallardı benim için.

Fabrikanın içini dolaşırken magnum’un, kornetto’nun, vienetta’nın, maraş dondurmasının paketlenmeye doğru son bir kaç adımını görme şansımız oldu. Külahlı dondurmalarda külahları ilgili yerlere dolduran elemanlardan başka insan eliyle yapılan bir işlem görmedim. Gerçi belli yerlerde karşılıklı iki personel bulunuyordu ama sanırım onlar sadece bir aksilik olduğunda müdahale ediyorlardı. Fabrikada teknisyen haricindeki personeller tepeden tırnağa beyaz giyiniyorlardı. Ağızları maskeliydi ve başlarındaki boneler enselerini kapatıyordu. Bizim harala gürele dolaşmamızın yanında onlar sessiz sedasız işlerini yapıyor yahut yanımızdan geçiyorlardı. Uzay filmlerinde gemilerde çalışan yüzlerce askeri anımsatıyorlardı.

Kornetlerin yapıldığı bölümde içinde çikolata olan külahlardan ve herşeyiyle hazır, sadece soğutulmamış kornetlerden ikram ettiler. Sıcağı sıcağına yedik. Bir de Maraş Dondurması bölümünde bir kaç kutuyu açtılar, onları da pirana misali mideye indirdik.

Gezinin sonunda henüz raflara daha ulaşmamış franbuazlı dondurmalı pastanın tadına bakma imkanımız oldu. Şahsen “çikolata süt” seven bir tip olduğumdan sadece tadına baktım. Müptelalarına afiyet olsun efendim.

Geziden sonra fabrika bahçesinde mangal keyfi yaptık. Özenle hazırlanmış piknik masaları ve açık büfe çeşit çeşit mangal lezzetleri, sarmalar, salatalar, meyveler.. Söylemesi ayıp hemen hepsinin tadına baktık. Hepsi çok lezizdi. Hazırlayanlardan, bizi bu geziye davet edenlerden, bu organizasyonu düzenleyenlerden, bize ikramlarda bulunanlardan, tüm personelden Allah razı olsun.

Pikniğin ardından hatıra fotoğraflarımızı da çekip tekrar servislerle yola koyulduk. Evimizin Beylikdüzü’nde olması ilk kez bir etkinlikte işe yaradı, yolu en kısa olanlardan biriydik. Servisten inerken birer koli dondurma ve dondurma taşıma çantası hediye ettiler. İkram üstüne ikram, gerçekten çok mahcup olduk.

Emeği geçen herkese tekrar tekrar teşekkürler…