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

Kategori: Kendime Not

Zend’de view render ederken değişkenleriniz değişmiyorsa!

Bu gece de uzun bir debug sürecinden sonra uyuz bir durumun çözümüne ulaştık. Unutmadan hemen kendime not düşeyim, ayrıca yarın bir gün saftorik bir eleman ‘abi bu nasıldı?’ derse ‘Blogumda var, yoksa okumadın mı ha!!!!’ diye yalandan celallenebileyim 🙂 Bu gençler olmasa biz neyle eğleneceğiz yahu.. Zend’de bir action’da siz başka bir şey zorlamadığınız müddetçe o action’ın adında bir view dosyası render etmeye çalışır sistem.. Mesela TestController’ında denemeAction()’ını varsa bu action çalıştırıldığında views/scripts/test klasörü altında deneme.phtml’i bulunur, render edilir ve layout dosyanız ne ise onun içine render edilmiş hali oturur. Controller’da view katmanına $this->view şeklinde erişilir. View’a bir değişken gönderilmek…

Zend Framework’de Veritabanı ile Routing

Zend’de routing listenizi -en azından bir kısmını- veritabanında tutmak istiyorsanız Bootstrap’da bu işi yapamıyorsunuz. Çünkü henüz bootstrap aşamasında veritabanına bağlanamıyorsunuz. Google’da aradım taradım, bazı öneriler gördüm ama çözemedim. Routing işine girmeden önce, artık kullanılmayan URL’ler için ErrorController’da db taraması yapıp doğru linke 301 (Permanently Moved) hatası ile yönlendiriyordum. $this->_helper->redirector->setCode(301); $this->_redirect($yenilink); Burada yönderme yapılıyor. Yani kullanıcı açısından tarayıcının url’i değişiyor. Ziyaretçi artık kullanmadığınız mesela http://falanca.com/filanca adresine girmek isterken siz onu http://falanca.com/yeniadres gibi bir adrese yönlendirmiş oluyorsunuz.Bu sırada 301 hatası verdiğiniz için aynı linke arama motorları da erişmek istediğinde 301 hatasını dikkate alıp arama sonuçlarını güncelleyebiliyorlar. O nedenle 301 önemli. Routing’de ise…

Objective-C Arkaplanda Ses Çalma – Audio Session

Uygulamanızda audio özellikleri kullanıyorsanız, yani bir servisten veya bir dosyadan ses oynatıyorsanız uygulamayı kapattığınızda arkaplanda sesin devam etmesini isteyebilirsiniz. Bunun için yapılması gereken işlem oldukça basit. Öncelikle uygulamanızın plist dosyasına  “UIBackgroundModes” nodu ekleyip karşısına “audio” yazmak lazım (Xcode bu yazdıklarınızı sürümüne göre başka kelimelerle otomatik olarak değiştiriyor, şaşırmayın). Sonra uygulamanızın AppDelegate.m dosyasındaki init veya applicationDidFinishLaunching fonksiyonlarından birine şu kodu yazıyorsunuz. -(id) init { [[AVAudioSession sharedInstance] setDelegate: self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; }

MySQL için strip_tags() fonksiyonu

PHP’de kullandığımız strip_tags() fonksiyonu parametre olarak aldığı metindeki tüm HTML taglarını ortadan kaldırıp sadece metin bilgisinin kalmasını sağlıyordu. Bu fonksiyona MySQL’de de ihtiyaç duyduğunuz oldu mu? Benim oldu. Buyrun burdan yakın efendim:  delimiter ;; CREATE  FUNCTION strip_tags2(str text) RETURNS text CHARSET utf8 BEGIN     DECLARE start, end INT DEFAULT 1;     LOOP         SET start = LOCATE(“”, str, start);         IF (!end) THEN SET end = start; END IF;         SET str = INSERT(str, start, end – start + 1, “”);     END LOOP; END  ;; delimiter ;

35. yaş günüm

Bu yazıyı balık hafızam ileride bana unutturmasın, hatırası hep sıcak kalsın diye yazıyorum. Evvela üniversiteden beri nerdeyse 15 yıldır kesintisiz kardeşlik, kuzenlik ve dostlukları için sevgili arkadaşlarım Mehmet Cemal Amucaoğlu’na, Gökhan Akmehmet‘e ve Koray Duman’a sonsuz teşekkürler. Ayrıca ailemize yeni katılan gelinlerimiz Gamze ve Iryna’ya da teşekkür ederim. Allahü teala tüm bu güzel kardeşlerime, aşağıda bahsedeceğim tüm sevdiklerime ve onların tüm sevdiklerine iki cihan saadeti nasip eylesin. Dünyada da ahirette de yüzleri hep gülsün inşallah. Bu kardeşlerimden Mehmet Cemal ve eşi Gamze şehir dışında acil başka işleri olmasaydı Kastamonu’dan kalkıp geleceklerdi. Koray ve eşi Iryna Kocaeli’nden zahmet edip gelmişler, beni…

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…