"Enter"a basıp içeriğe geçin

BT Hayat Yazılar

Dijital Kütüphane Yayında

Firmamızın bir süredir üzerinde çalıştığı teknoloji blogu “Dijital Kütüphane” artık yayında. Konusunun ehli yazarların kalemlerinden yerli makalelerin dışında zaman zaman çeviriler de blogda yer alacak. Ayrıca ilerki tarihlerde video röportajlar da yayınlamayı düşünüyoruz. Blogumuzu Facebook, Twitter ve Google+ hesaplarından da takip edebilirsiniz.  

Robi’ye Devam

Nerdeyse bir yıl önce burada da bahsettiğim robot projem için bir kaç aydır Kosgeb projesi hazırlamakla meşguldüm. Çalıştığım firmamın desteğiyle konuya hakim bir danışman arkadaşımızın gayretleri neticesinde projemiz çok şükür Kosgeb’den onay aldı. Artık önümüzde 15 aylık bir süreç var. Bu proje görünenin aksine aslında bir yazılım ar-ge projesi. Zira elektronik kısmı için profesyonel bir firmadan hizmet alımında bulunacağız. Benim derme çatma elektronik bilgim bu işe müsait değil 🙂 Tabi projenin elektronik kısmı hakkında da bilgi sahibi olmaya gayret edeceğim ama asıl yazılım konusunda zorlu ve uzun bir yol var önümüzde. Robotun yani Robi’nin otonom ve uzaktan kontrol şeklinde iki…

PHP ile MacOSx üzerinde mail gönderemiyorsanız

PHP ile MacOSx platformu üzerindeyken mail gönderemiyorsanız loglara bir göz atmalısınız. Eğer sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory gibi bir hata varsa çözüm gayet basit. Aşağıda yazılan ifadeleri sırasıyla çalıştırıp önce bu klasörü oluşturmalı, sonrasında mail gönderme sunucu yazılımı olan postfix’in bu klasörleri kullanabilmesi için gerekli ayarları yapmalısınız. sudo mkdir -p /Library/Server/Mail/Data/spool sudo /usr/sbin/postfix set-permissions sudo /usr/sbin/postfix start Hepsi bu kadar.. NOT: Eğer maillerinizi gmail üzerinden göndermek istiyorsanız şu yazıdaki ipuçlarını kullanabilirsiniz: http://www.zenddeveloper.com/how-to-send-smtp-mails-with-postfix-mac-os-x-10-8/

AFNetworking (AFXMLRequestOperation) Main Thread’i Engelliyor

Bir önceki yazıda bahsettiğim uygulamayı neredeyse bitirdim fakat bir problem nedeniyle AppStore’a gönderemedim. Uygulamada AFNetworking’in AFXMLRequestOperation classını kullanarak RSS datasını çekip, gelen xml’i parse edip ilgili mutable (sonradan öğe eklenebilen) dizilere doldurmayı ve bir table’ı bu dizideki elemanlarla  oluşturmayı hedefliyordum. İlgili viewController classıma xml parsing delegate metodlarını yazabilmek için <NSXMLParserDelegate> ibaresini ekledim ve gereken metodları yazdım. İşlem gayet düzgün çalıştı fakat veriler parse edildikten neredeyse 2-3 saniye sonra table güncelleniyordu.Halbuki [self.tableView reloadData] fonksiyonunu parsing işleminin bitiminde çalışan – (void)parserDidEndDocument:(NSXMLParser *)parser fonksiyonuna eklemiştim. Debug yapınca reloadData’nın sırası geldiği halde çalışmadığını, AFNetworking’in parse işleminden sonra başka rutinlerinin icra edildiğini, 1-2 saniye sonra…

AFNetwork Expected content type hatası

Geçen yıl başladığım bir uygulamayı tamamlamaya niyetlendim. Uygulamanın bir kısmında RSS okumam icab ediyordu. Bunun için AFXMLRequestOperation kullandım fakat sürekli olarak “Expected content type” hatası verip listelediği application/xml, text/xml tiplerinden biri olması gerektiğini bağırıp durdu. Google’da aratınca öğrendim ki AFNetwork kütüphanesinde AFXMLRequestOperation.m dosyası içerisinde hangi xml dosya tiplerini kabul ettiğine dair yukarıdaki listenin tutulduğu bir fonksiyon varmış: + (NSSet *)defaultAcceptableContentTypes { return [NSSet setWithObjects:@”application/xml”,@”application/rss+xml”, @”application/atom+xml”, @”text/xml”, nil]; } Bu kısma benim çalıştığım RSS dosyasının tipi olan application/rss+xml’i de eklediğimde sorunum çözülmüş oldu.

Objective-C’de Mail Gönderme Modal’ı Kullanmak

Bazı uygulamalarda gördüğümüz mail gönderme modalını hazırlamak çok basitmiş. Evvela projeye  MessageUI.framework framework’ünü eklemek gerekiyor.  Sonra mail modalını kullanacağımız ekranın OrnekViewController.h dosyasında aşağıdaki dosyaları yüklemek ve  ayrıca mail gönderme işlemleri ile ilgili delegate fonksiyonlarını da bu class’da kullanabilmek için MFMailComposeViewControllerDelegate ifadesini kullanmak gerekiyor. #import <UIKit/UIKit.h> #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface OrnekViewController : UIViewController<MFMailComposeViewControllerDelegate>{ } @end Daha sonra OrnekViewController.m dosyasında şu iki fonksiyonu kullanmak yeterli.. – (IBAction)actionEmailComposer{ if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; mailViewController.mailComposeDelegate = self; [mailViewController setSubject:@”Mail Konusu”]; [mailViewController setMessageBody:@”mesaj” isHTML:NO]; [self presentViewController:mailViewController animated:YES completion:nil]; } else { NSLog(@”Mail gonderilemiyor”); } } -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{ [self…

Objective-C’de integer MutableArray’i oluşturmak

Bir iki haftadır QuickDialog kütüphanesi ile bir proje geliştirmeye çalışıyorum. Dökümantasyonu malesef çok açıklayıcı olmadığı için işin acemisi olarak biraz zorlanıyorum. QuickDialog’da “çoktan seçmeli” bir liste oluşturmak ve bir tuşa dokunulduğunda bu listedeki tüm elemanların seçili olmasını sağlamaya çalışıyordum. QRadioSection adındaki bu yapı selectedIndexes isimli bir NSMutableArray içerisinde seçili öğelerin indislerini tutuyor. Tüm elemanları seçili hale getirmek için bu MutableArray’a tüm indisleri yazmalı ve tabloyu reload fonksiyonu ile yenilemeliyiz. Buraya kadarını anladım fakat ne yaptımsa selectedIndexes’a tüm indisleri yerleştiremedim. Mesela şu yolu denedim; QRadioSection  *liste=[[self.root sections] objectAtIndex:0]; NSMutableArray *arr=[[NSMutableArray alloc] initWithObject:0,1,2,3,nil]; [liste setSelectedIndexes:arr]; Bu şekilde yazınca hata vermiyordu ama listede…

MKNetwork ile Array Post Etmek

MKNetwork’le array post etmek için iki gündür çabalıyorum. Google’da okuduklarım beni çözüme ulaştırmasa da çözüme giden yolu görmemi sağladı. Aslında çözüm çok ta basitmiş. MKNetwork’le post etmek istediğim verileri karşılayacak api PHP ile yazıldığından; bir array’in gitmesi için mesela şu şekilde olması gerekiyor; il_id[]=53&il_id[]=61&id_id=10 Bu; php’de il_id diye bir array oluşturup içine 53, 61,  10 verilerini yerleştirir. Problem şu; MKNetwork NSMutableDictionary tipinde bir parametre listesi alıyor. Yapısı gereği NSMutableDictionary objesine birden fazla aynı key’e sahip öğe ekleyemiyoruz. yani “il_id[]” keyini sadece bir kere kullanabiliyoruz. Ben de bunu aşmak için uğraş veriyordum. Google’da bulduğum şu sayfa sorunumu çözmedi ama çözümü bulmamı…

NSMutableDictionary’den eleman silmek

Objective-C’de NSMutableDictionary tipindeki bir değişkenden [dict removeObjectForKey:key] fonksiyonu ile eleman silinir. Eğer bu işlemi yaparken *** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <__NSDictionaryM: 0x92c50b0> was mutated while being enumerated.’ hatası alıyorsanız; bir iterasyon sırasında yani NSMutableDictionary tipindeki değişkenin elemanları üzerinde döngü ile dolaşırken bu işi yapmaya kalkıyorsunuz demektir.     for (NSString* key in dict) { if([key isEqualToString:@”silinecek_key”]) [dict removeObjectForKey:key];  //iterasyon içerisinde bu işlem yapılmaz! } Bu  hatayı engellemek için döngü içerisinde hangi öğelerin silineceğini bir dizide tutmalı ve döngü sonrasında bu elemanları değişkenden çıkarmalıyız. İkinci bir yol olarak da NSMutableDictionary tipindeki değişkenin üzerinde değil, [dict allKeys]…

Hostgator Dedicated Sunucuya Git Kurmak

githubOfiste svn’i bırakıp git’e (Linus Torvalds’ın yazdığı bir versiyonlama sistemi) döndüğümüzden beri kişisel projelerimde de git kullanıyorum. Projelerimizi gitHub’un sunucularında depoluyoruz. Açık kodlu projeler için gitHub ücretsiz, özel projeler içinse aylık 7 dolardan başlayan fiyatları var. Listesi burada.

Yine ofiste tüm projelerimizi Amazon EC2 sunucularında host ediyoruz, bu sunucuları kendimiz açtığımız için içinde istediğimiz gibi at koşturabiliyor, git gibi ne lazımsa kurabiliyoruz. Kişisel projelerim için vaktiyle HostGator’u tercih etmiştim, şimdi taşınmaya vakit bulamadığım için çıkamıyorum, bir de WHM ve CPANEL’e yıllardır çok alıştım. Vazgeçmek istemiyorum.

Şu hususa açıklık getirelim: git sisteminde tuttuğumuz projelerimizi ekibimizdeki diğer geliştiriciler de indirip güncelleyebilsinler diye bir git sunucusunda tutuyoruz. Ayrıca projenin git’siz halini de ziyaretçilerin hizmetine sunmak üzere başka bir yerde web sunucusunda tutuyoruz. Tabi ki gerekli durumlarda bu iki sunucu sistem aynı makinede yer alabilir. Biz projeyi depolamak için gitHub’u, webe sunmak için Amazon’u tercih ediyoruz.