31 Aralık 2013 Salı

Telefondaki İnternetten Kurtulmak

Akşam vakti bir telefon geldi ve bir arkadaşım benden mail ile bazı dosyaları göndermemi istedi. Evimde internetin olmadığını söyledim. Oldukça tuhaf karşıladı. Bu çağda evinde interneti olmayan bir insan... Maalesef eskiden internet kıtlığı vardı şimdi internet fazlalığı var.

Eskiden çevirmeli ağ interneti için abone oluyor, telefon hattınızın internete açılmasını bekliyor, bilgisayara telefon kablosu çekiyor ve o yavaş interneti kullandığınız süre kadar ücret ödüyordunuz. Ama şimdi neredeyse hiçbir ayar yapmadan bile cep telefonunuzdan internete girebiliyorsunuz. Hatta kısa mesaj paketi aldığınızda bile yanında bedava internet geliyor.

Uzun zaman Nokia 6300 telefonu kullandım. Bu demode olmuş telefon bile bilgisayara USB kablosuyla bağlanabiliyor ve Nokia PC Suite programı ile modem olarak kullanılabiliyordu. Yani cep telefonu için aldığınız internet paketini bilgisayarınızda kullanabiliyordunuz. Şimdi bu telefonun çok benzeri olan Nokia C2-01 telefonu kullanıyorum. Dokunmatik olmayan bu telefonu da bu devirde özellikle aradım.

Bu her iki telefonun da dokunmatik telefonlardan dokunmatik olmamak dışında hiçbir eksiği yokken herkes dokunmatik telefonlara rağbet ediyordu. Sanki cep telefonunda uygulama çalıştırılabileceği yeni keşfedildi. Herkes dokunmatik telefonunu şöyle uygulamaları böyle özellikleri var diye överken ben CepLugat, CepSozluk, Mobidic Sözlük, Risale-i Nur Okuma, CepVakit uygulamalarını uzun zamandır kullanıyorudm. Dileyen için başka bir sürü programlar var tabi. Hatta dilemeyen ben için bile Opera, UC Browser, OviBrowser gibi bilgisayarı aratmayan internet tarayıcıları da var.

Modern teknolojiden ve onun gürültüsünden kaçıyorum. Huzur istiyorum sadece. Not tutma, çalar saat, namaz vakti ve sözlük nereye gitsem elimin altında. Çok güzel, teknolojinin sunduğu imkanlarla birtakım ihtiyaçlarımı görüyorum. Ama bu kadar olsun. Daha fazlasını istemiyorum. Her gittiğim yerde internetimin olmasını istemiyorum. Otobüse bin, koltuğa otur, sonra dayanamayıp çıkar telefonu ve internette kilitlen. İşte bu kadarı fazladır diyorum kendi kendime.

İnternete bağlanmak niye bu kadar kolay oldu ki? Daha birkaç sene önce internete bağlanmak için bilgisayar masasını hazırlayıp, bilgisayarı açıp, intenetin gelmesini bekliyordum. Az buçuk emek vardı ve sizi anlık heveslerden caydırıyordu. Ama şimdi öyle değil ki. On dakika ders çalıştınız ve hemen sıkıldınız. Bir dakika dinlendirecek ve sıkıntıyı giderecek bir şey arıyorsunuz. Hatta aramıyorsunuz, internet elinizin altında, açık konumdaki cep telefonunuzda.

Sadece haberlere bakayım, bir de sosyal medyaya bakayım, bir de mailler ne olmuş acaba derken oralardaki ilginç bir konu dikkatinizi çekiyor ve tepkisiz kalamıyorsunuz. İnterneti kapatıp gitseniz içinizde kalacak, sürekli zihninizi meşgul edecek. Problemi çözmek için bir şey yapsanız başkalarının ne tepki veridğini merak edeceksiniz. Tam bir kaybet-kaybet durumu.

İnternetle o kadar çok içli dışlı olduktan sonra insan artık sıkılgan biri oluyor ve internet olmadığında bile on dakika ders çalışınca sıkılır hale geliyor. İçimde bir sıkıntı var, sanki boş yaşıyorum gibi diyip derse odaklanamıyor ve tekrar interneti arıyor. İnterneti bulunca iyice boş yaşamaya başlıyor. Ödevleri yapmamış olmanın verdiği sıkıntıyı yine gaflete dalarak örtmeye çalışıyor. Yani fasit dairede dönüp duruyor. İnternet, gaye-i hayalin önünde duran bir tuzak bir çukur gibi iş yapıyor.

İnternetin varlığına her yerde karşı çıkamıyorum, hatta kendime bile internet kullanmayı toptan yasaklayamıyorum. Çünkü internet olmadan olmuyor. Teknolojinin getirdiği bir sürü kolaylıklar var. Ancak ben diyorum ki, internet kontrol altına alınsın. Yararı zararı tartışılsın ve gerekli tedbirler alınsın. Çocukların teknolojiyle tanışması gerçekten iyi bir şey mi diye tartışılsın. Hiçbir çocuk görmedim ki interneti eğlence dışında gerçekten çalışma maksadıyla kullanıyor olsun. Aileler yılda bir iki ödev yapması için çocuklarına bilgisayar alıyor ama çocuklar saatlerce boş geyiklerde boş bilgisayar oyunlarında vakit geçiriyor. Öğrenmemeleri gereken şeyleri öğrenirken hayatı öğrenemiyor.

Eğer internet bana kazandırdığından daha fazlasını kaybettiriyorsa burada durup çözümler aramam gerekir. Evde internetim olmadığı için yarınki hava durumunu öğrenemesem çok mu zararlı çıkarım? Araştırmamı internette değil de kitaplarda yapsam çok mu zaman kaybederim? Tamam, internet olsun hadi diyelim. Ama dikkat dağıtıcı unsurların önüne geçen bir sistem de olsun. Mesela araştırma yapacaksam sadece akademik veritabanlarına bağlanan bir internet profilini seçebileyim. Ta ki kendimi en son ne yapıyor olduğumu hatırlamazken bulmayayım.



Facebook - Check me!

İnternet Çukuru

İnternette Oyalanmanın Binbir Yolu

İnternet ve Konsantrasyon - Buraya nerden geldim ben?



Aslında bu uzun girişi daha da uzatabilirdim. En sevdiğiniz filmler, diziler, oyunlar, okumakta olduğunuz e-kitap penceresinin arkasında duruyorken nasıl bilgisayardan kitap okuyabileceğinizi sorgulamanızı isteyebilirdim. Birkaç satırdan uzun paragrafları ve onbeş yirmi sayfadan uzun romanları okuyamaz hale gelmemizin sebebinin internet sayesinde edinmiş olabileceğimiz acelecilik, sıkılganlık ve slogancılık gibi duygular olup olmadığını tartışabilirdim. Hatta sansüre, haklara, özgürlüklere ve tutarsızlıklara kadar uzatabilirdim. Meseleyi kısa keserek Nokia 6300 veya C2-01 gibi S40 telefonları olarak adlandırılan telefonlarda internet özelliğinin nasıl devre dışı bırakılabileceğine değineceğim.

Telefonundaki İnterneti Devre Dışı Bırakmak (Nokia C2-01 için)
Verimliliğinizi artırmak için cep telefonunuzdaki internetten kurtulmak mı istiyorsunuz? Ya da internete bağlanıveren uygulamaları yanlışlıkla açıp kontör yedirmekten mi bıktınız? Ya da çocuğunuza artık telefon alma vakti geldiğini düşünüyor ama telefonundan internete bağlanmasını mı istemiyorsunuz?

Aslında S40 telefonları piyasadan kalktı kalkacak. Yeni model telefonlar da interneti engelleyebilecek çeşitli programları çalıştırabilecek kapasitede. Nokia C2-01 modeli (belki de diğer S40 modelleri) için internetin nasıl devre dışı bırakılacağına dair yazacaklarımın ne kadar anlamı olduğunu bilmiyorum. Ama yine de yukarıdaki önsöze bir bahane olması için yazıyorum.

Cep telefonundan internete bağlanmak için telefonda internet ayarlarının tanımlanmış olması ve internete bağlanan uygulamaların bulunması gerekir. İnternete bağlanan uygulamaları silmek interneti engellemek çözüm değil. Çünkü o uygulamalar kolayca tekrar yüklenebilir. Hem bazı uygulamalar silinemiyor da. O halde internet ayarlarını silmemiz gerekiyor. Ama internet ayarlarını sildikten sonra uyduruktan bir internet ayarı tanımlasanız bile telefon tekrar internet erişimine açılıveriyor. O zaman internetten kurtulmak için internet ayarlarını açan menü linklerini de telefondan kaldırmak gerekiyor. Olay bu kadar basit.

Aşağıdaki bütün prosedürleri Nokia C2-01 telefon modeli için anlatacağım. Başka S40 telefonlarında az ya da çok değişiklik olabilir.

Telefondaki İnternet Ayarlarının Silinmesi
Telefonunuzun ana menüsünden "Ayarlar"ı sonra oradan da "Yapılandırma"yı açın. Burada internet bağlanıtısı yapılandırma ayarları bulunmaktadır. "Kişisel Yapılandırma Ayarları"ndaki erişim noktalarından başlayıp buradaki bütün ayarları silin.

Bilgisayara MobiMB Media Browser Kurulması
Telif hakkını ihlal eden bir uygulamayı paylaşmak istemezdim ama, aması var. Programın en son 3.6 sürümü çıktı ve ancak bu sürüm satın alınabiliyor ve ancak bu son sürümün deneme sürümü mevcut. Bizim ihtiyacımız olan ise 3.4 sürümüdür. Son sürüm telefonun içeriğini göstermiyor. Bu eski sürümün de sadece kırılmışı var.

Virüs içermeyen İngilizce bir sürümünü bulamadığım için de Rusça olan sürümünü paylaşıyorum. Ama merak etmeyin, Türkçe yaması da içinde. Buradan indirilebilir: MobiMB Media Browser - v3.4

Bu programın sorunsuz çalışabilmesi için Nokia sürücülerinin de bilgisayara yüklenmesi gerekiyor. Bilgisayara Nokia PC Suite kurduğunuzda o sürücüler de otomatik olarak yükleniyor. Buradan indirilebilir: Nokia PC Suite 7.1

Telefonun Bilgisayara Bağlanması
Programın telefonu görebilmesi için önce telefonu USB kablosuyla bilgisayara bağlayın ve telefondan Nokia modunu seçin. Bundan sonra MobiMB programını çalıştırın. Programın sol tarafında aşağıdaki ekran görüntüsündeki gibi bir ağaç görmüyorsanız telefonunuz bağlanmamış veya bu sürüm tarafından algılanmamış olabilir.

MobiMB - menusettings.xml

Telefon Menülerinin Düzenlenmesi
Ekran görüntüsündeki gibi "C:\Hiddenfolder\Menus" yolundaki "menusettings.xml" dosyasını bulun ve masaüstünüze sürükleyin. Bu dosyayı bilgisayarda düzenleyip yine telefona sürükle bırak ile geri atacağız. Bu kadar basit. Ne olur ne olmaz diye bu dosyanın bir yedeğini almayı da unutmayın.

Masaüstüne kopyaladığımız "menusettings.xml" dosyasını Notepad veya Notepad++ ile açın ve çok da uzun olmayan bu dosyada "Ayarlar" alt menüsünü ve "Yapılandırma Ayarları" linkini bulun. Bu linke aşağıdaki ekran görüntüsündeki gibi mode="disabled" ekleyin ve kaydedin. Bu dosyayla işimiz bitti. Şimdi telefona tekrar gönderip telefonu baştan başlatın. Tekrar söylüyorum, bu kadar basit.

Bağlantı Ayarları - menusettings.xml
Merak ediyorsunuzdur diye "menusettings.xml" dosyasından biraz daha bahsedeyim. Elinizde yoksa benim menusettings.xml indirebilirsiniz. Dosyanın en başında <nativelinks>...</nativeliks> etiketleri arasında 10 tane kısayol tanımlanmış. Bunları aşağıdaki örnekteki gibi sistem klasörleri ile veya telefona yüklediğiniz uygulamalar ile değiştirebilirsiniz.

Kısayollar - menusettings.xml
Bu ekran görüntüsünde de görüleceği gibi hafıza kartını ve telefon hafızasını kısayol olarak telefonun ana menüsüne ekledim. İkinci ve üçüncü kısayolları inceleyin. Aynı şekilde bu ana menüye telefonda yüklü bir uygulama da ekleyebilirdiniz. Hatta uygulamayı telefonunuzdan sildiğinizde ana menüdeki kısayol da otomatik olarak gizleniyor. Ne kadar güzel. Güzel olan başka bir şey ise bu dosyada bir hata yaptığınız takdirde telefonunuzun çökmemesi. Bu menü ayarları dosyasını düzeltene kadar telefonunuz varsayılan ayarlarda çalışıyor. Sözümü bitirmeden önce ana menüdeki internet simgesini de kaldırmanızın mümkün olduğunu söyleyeyim. <menuitem name="BrowserMenu"> etiketinin içine mode="disabled" eklemeniz yeterli.

Bütün bu yazdıklarımdan ve eklediğim şekillerden öğrendiğim bir şey daha var. Yazının arasına şekiller ve resimler yerleştirildiğinde dikkat dağılıyor, göz ister istemez renkli, cafcaflı tarafa kayıyor. Yukarıdaki resimleri ilk önce metnin arasına dağıtmışken yazının öyle çok okunaklı olmadığını farkedip hepsini bir yere topladım. Aslında en ideali her yazının en başına veya en sonuna fikirleri destekleyici sadece bir tane şekil koymak. Metnin arasına koymak gerekiyorsa da bu olayı bartmamak... Ben yukarıda abarttım mesela.

27 Eylül 2013 Cuma

Üç Aylık Takvim Oluşturucu

İnsanı aylak olmaktan kurtaran bazı kamçılar vardır. Bazen borç yiğidin kamçısıdır. Bazen kamçı metafizik gerilimdir bazen hayat iman ve cihad gibi bir marş, bir yürütücü ezgidir. Bazen idealler, mefkureler, hedefler kamçıdır. Bazen şekerlerdir, ödüllerdir, diplomalardır. Bazen insan gafil olmadığı bir zamanda planlar yapar ama sair zamanda karşısına hissi engeller çıkar. "Heves ve vehmi hükmedip, en az ve ehemmiyetsiz bir lezzet-i hazırayı ileride gayet büyük bir mükâfâta tercih eder."

Üniversite yıllarımda uzak tarihteki vize ve finallerimden iyi notlar almak herkes gibi benim de hedefimdi. Ancak sınavlara daha var diye engellere takılıp kalıyordum. Arkama baktığımda bir arpa boyu yol gidemediğimi görüyor ve üzülüyordum. Ödevlerimi ve kitaplarımı bütün aksamalarla beraber belli tarihlerde bitirme planı yapabileceğim bir takvime ihtiyacım vardı. Böylece yapmam gerekenleri zamanı yaklaştıkça hatırlayacak ve engellere prim vermeyecektim. Excel'de üç aylık takvimler hazırlayıp A4 kağıda basarak ranzama asmaya başladım. Bir süre sonra takvimi otomatik hazırlayan bir internet sayfası oluşturdum.

Adını "Üç Aylık Takvim Oluşturucu" koyduğum bu sayfa, Firefox ile açılıp yazdırıldığında A4 kağıda tam oturuyor. Dosyayı ne zaman açarsanız açın içinde bulunduğunuz haftadan başlayan on haftalık bir takvim elde ediyorsunuz. Hem de devasa rakamlar ile doldurulmamış, not almaya müsait bir takvim. Şöyle bir görüntüsü var:

Üç Aylık Takvim Oluşturucu
(Javascript Calender Generator)

Buradan indirebilirsiniz:


Eğer bir Açıköğretim Fakültesi öğrencisi iseniz, her güne bir üniteyi okumayı planlıyorsanız işinizi görecek bir takvim olduğunu düşünüyorum. Yeri gelmişken bunu da haber vereyim. Açıköğretim Fakültesi ders kitaplarını PDF formatında ve sesli kitap olarak eogrenme.anadolu.edu.tr adresinde erişime açmış. Mesela İşletme Bölümü'nün hemen hemen bütün kitaplarına buradan erişebilirsiniz. Ne kadar güzel, değil mi?

17 Eylül 2013 Salı

Günlük Dualar

İnternette ezberlenesi günlük duaları arayınca ancak latin harfleriyle okunuşunu bulabiliyordum. Arapça yazılışları ancak bazı kitaplarda geçiyordu. İsmail Çetin hocanın (r.a.) Tebliğ ve Sevgi Bağı eserlerinde geçen duaların bazılarını İsa Sarı'nın Osmanlıca Klavyesi ile bilgisayara aktardım. Farklı ortamlarda, cihazlarda görüntüleme problemi olmasın diye de Arabic Text to Image Converter uygulamasıyla resme çevirdim. Aşağıdaki duaları arapça kısımları hem metin hem resim olarak docx, html ve mobi formatlarında şu linkten indirebilirsiniz.


Her tebliğde, talimde, ders okumakta, okutmakta:

اَعُوذُ بِالَّلهِ السَّمِيعِ الْعَلِيمِ مِنَ الشَّيْطَانِ الرَّجِيمِ

رَبِّ اشْرَحْ لٖى صَدْرٖى وَيَسِّرْ لٖۤى اَمْرٖى وَاحْلُلْ عُقْدَةً مِنْ لِسَانٖى يَفْقَهُوا قَوْلٖى

يَا حَىُّ يَا قَيُّومُ بِرَحْمَتِكَ اَسْتَغِيثُ يَا مُغِيثُ

“Kovulan şeytanların telkinlerinden, her sesi işiten, her cismi gören Allah’a sığınırım.”

“Ey Rabb’im! Göğsüme genişlik ver. İşimi kolaylaştır. Dilimden düğümü çöz, tâ ki sözümü iyiden iyiye anlasınlar.”

“Ey Zâtı’yla diri, hayat sahibi ve ey tedbir ve takdîriyle bizzat mahlukunu idare eden Ulu Allah, -kekemelikten ve menfi telkinden kurtulmam için- rahmetini imdadıma göndermeni dilerim, kulunun kurtuluşuna imdadları gönderen ey Muğîs.”



Uyanınca:

اَلْحَمْدُ لِلّٰهِ الَّذِى أَحْيَانَا بَعْدَ مَا أَمَاتَنَا وَ إِلَيْهِ النُّشُورُ

“Bizi öldürdükten sonra dirilten Allah Teâlâ’ya hamdolsun. Zaten dönüşümüz de O’nadır.”



Helâya girmeden evvel:

اَلَّلهُمَّ إِنِّى أَعُوذُ بِكَ مِنَ الْخُبْثِ وَ الْخَبَائِثِ

“Allahım, erkek ve dişi olan şeytan (cin ve mikroplar)dan Sana sığınırım.”



Helâdan çıkarken:

اَلْحَمْدُ لِلّٰهِ الَّذِى أَذَاقَنِى لَذَّتَهُ وَ أَبْقَى فِىَّ قُوَّتَهُ وَدَفَعَ عَنِّى أَذَاهُ

“Lezzetini bana tattıran, güç yetmeyi ve kuvveti bende bırakan, ezâyı da benden defeden Allah Teâlâ’ya güzel övgüler olsun.”



Evinde abdest alınca:

الَّلهُمَّ اغْفِرْ لِى ذَنْبِى وَوَسِّعْ لِى فِى دَارِى وبَارِكْ لِى فِى رِزْقِى

“Allahım, günahlarımı ört, evimi genişlet, rızkıma bolluk ve bereket ver.”



Yeni elbiselerini giyerken:

اَلْحَمْدُ لِلّٰهِ الَّذِى كَسَانِى هٰذَا الثَّوْبَ وَرَزَقَنِيهِ مِنْ غَيْرِ حَوْلٍ مِنِّى وَلَا قُوَّةٍ

“Güç kuvvet ve takatim olmaksızın bu elbiseyi sadece nimet olarak bana giydiren Allah Azze ve Celle’ye hamdolsun.”



Yemeğe başlarken:

اللّهُمَّ بَارِكْ لَنَا فِيمَا رَزَقْتَنَا، وَقِنَا عَذَابَ النَّارِ، بِسْمِ اللّٰهِ

“Allahım, bana rızık olarak verdiğin şeyler(yemek ve içmekler)de bereketler ve şifalı kıl, ateşin azabından koru. Allah’ın adıyla.”



Yemekten sonra:

اَلُحَمْدُ لِلَّهِ الَّذِى اَطْعَمَنَا وَسَقَانَا وَجَعَلَنَا مُسْلِمِينَ

“Ezelden ebede kadar bütün güzel övgüler Allah Teâlâ’ya mahsustur. O öyle Allah’tır ki, bizi yedirdi, içirdi, ve Müslüman kıldı.”



Evinden çıkarken:

بِسْمِ اللّٰهِ تَوَكَّلْتُ عَلَى الّٰهِ، لَا حَوْلَ وَلَا قُوَّةَ إِلّا بِاللّٰهِ

“Allah’ın adıyla. Allah’a dayandım. Güç, hareket ve kuvvet ancak Allah Teâlâ’nın inayetiyledir. Başka değil.”



Evden câmiye gitmek üzere çıkarken:

اَلَّلهُمَّ اجْعَلْ فِى قَلْبِى نُورًا، وَفِى بَصَرِى نُورًا، وَفِى سَمْعِى نُورًا، وَعَنْ يَمِينِى نُورًا، وَعَنْ يَسَارِى نُورًا، وَفَوْقِى نُورًا، وَتَحْتِى نُورًا، وَأَمَامِى نُورًا وَخَلْفِى نُورًا، وَاجْعَلْ لِى نُورًا

“Allahım, kalbimde nur yarat. Gözümde, kulağımda nur yarat. Sağımdan solumdan nur yarat. Üstüme nur, altıma nur, önüme nur, arkama nur ver. Ve bana nur yarat.”



Ezandan sonra:

اَللَّهمَّ رَبَّ هٰذِهِ الدَّعْوَةِ التَّامَّةِ وَالصَّلَاةِ الْقَائِمَةِ آتِ مُحَمّدًا الْوَسِيلَةَ وَالْفَضِيلَةَ، وَابْعَثْهُ مَقَامًا مَحْمُودًا الَّذِى وَعَدْتَهُ

“Allahım, şu tam ve mükemmel davetin ve kat’î sûrette ikâme olan namazın sahibisin. Ey Rabbim, cennette olan vesileyi, fazîleyi Hazreti Muhammed’e ver. Peygamberimiz’e vaat etmiş olduğun Makâm-ı Mahmûd’a O’nu gönder.”



İş mahalline girip işe başlarken:

بِسْمِ اللّٰهِ الَّذِى لَا يَضُرُّ مَعَ اسْمِهِ شَىْءٌ فِى الْأرْضِ وَلَا فِى السَّمَاءِ وَهُوَ السَّمِيعُ الْعَلِيمُ

“Allah Teâlâ’nın adıyla (işime başlarım, çünkü) O’nun isminin anılması anında, yerde ve gökte olan hiçbir şey zarar vermez. Her hal ve kârda Allah işitici ve görücüdür.”

اَللّهُمَّ إِنِّى أعُوذُ بِكَ مِنَ الْهَمِّ وَالْحَزَنِ، وَأعُوذُ بِكَ مِنَ الْعَجْزِ وَالْكَسَلِ، وَأعُوذُ بِكَ مِنَ الْجُبْنِ وَالْبُخْلِ، وَأعُوذُ بِكَ مِنْ غَلَبَةِ الدَّيْنِ وَ قَهْرِ الرِّجَالِ

“Allahım, keder ve üzüntüden Sana sığınırım. Acizlik ve tembellikten Sana sığınırım. Korkaklık ve cimrilikten Sana sığınırım. Adamların bana galebe çalmasından ve borcun ağırlığından Sana sığınırım.”


Binerken:

اَلْحَمْدُ لِلّٰهِ الَّذِى سَخَّرَ لَنَا هٰذَا وَمَا كُنَّا لَهُ مُقْرِنِينَ وَإِنَّا إِلَى رَبِّنَا لَمُنْقَلِبُونَ

“Bunu (bineği) bize râm ve itaatkar kılan Allah Teâlâ’ya hamdolsun. Halbuki biz bunlara güç yetiremezdik. Muhakkak biz topumuz Rabbimiz’e dönüp gidiciyiz.”



Gece sohbetlerinden sonra ve her meclisin hitamında:

سُبْحَانَكَ اللَّهُمَّ وَبِحَمْدِكَ، أَشْهَدُ أَنْ لَا إِلٰهَ إِلَّا أَنْتَ أَسْتَغْفِرُكَ وَأَتُوبُ إِلَيْكَ

“Allah’ım Sana hamdederek Seni tenzih ederim. Senden başka bir ilah (mâbud ve maksud) yoktur diye şehadet ederim. Günahlarımı örtmeni Senden dilerim. Tevbe ile Sana dönüyorum.”

سُبْحَانَ رَبِّكَ رَبِّ الْعِزَّةِ عَمَّا يَصِفُونَ وَسَلَامٌ عَلَى الْمُرْسَلِينَ، وَالْحَمْدُ لِلّٰهِ رَبِّ الْعَالَمِينَ

“İzzet ve galebe sahibi olan Rabbim’i onların (müşriklerin) isnad etmekte oldukları vasıflardan tenzih ederim. Rabbim Yücedir. Gönderilen bütün peygamberlere selam olsun. Ve âlemlerin Rabbi olan Allah Teâlâ’ya güzel övgüler olsun.”



Yatarken:

بِاسْمِكَ ربِّى وَضَعْتُ جَنْبِى وَبِكَ أَرْفَعُهُ، إِنْ أَمْسَكْتَ نَفْسِى فَاغْفِرْ لَهَا، وَإِنْ أَرْسَلْتَهَا فَاحْفَظْهَا بمَا تَحْفَظُ بِهِ عِبَادَكَ الصَّالِحِينَ

“Allah’ım isminle yanlarımı yere koydum ve isminle kaldıracağım. Eğer canımı alsan, günahlarımı ört. Eğer canımı gönderip salıversen, salih kullarını koruduğun şeyle onu da koru.”



* * *

11 Eylül 2013 Çarşamba

Kindle İçin Risale-i Nur

Bilgisayardan kitap okunur mu? Azim olursa okunur elbet. Küçücük cep telefonu ekranından büyük kitapları bitireni duydum. Ciddi bir okuma niyeti yoksa matbu kitap da okunmaz. Kampanyalar ile alınmış ama yüzüne bakılmayan kitaplar ile dolar kitaplıklar. Önce azim olması gerekir kitap okumak için. Yoksa her bir şey bahane olabilir. Göz yorgunluğu, can sıkıntısı, duruş problemleri, uyuşmalar, el ve dirsek ağrıları vs.
Lise yıllarımda bilim ve teknikle ilgili bir dergi alırdım. Hangisi olduğunu söylersem spoiler olur, yazdıklarımı yazacaklarımı bir çırpıda silersiniz. İşte böyle de burun kıvırıcıyız. Başka huylarımız da var. Mesela severek okuduğum bu dergi yanında arasıra kitap verirdi. Bir keresinde içinde bir sürü elektronik kitap bulunan bir CD vermişti de ne kadar sevinmiştim. Güya okuyacağım. Ama elimin altında bir kitap arşivi olması bir zevk veriyordu. Oldukça tuhaf değil mi? Bunun gibi huylar işte...

Yıllar geçti, üniversiteyi bitirdik, elimize biraz para geçti. En iyisinden bir elektronik kitap okuyucu satın aldım. Acaba gerçekten kitap okuyacak mıydım yoksa yine bende de bir tane olsun diye mi almıştım? Zor bir soru. Ama kitap okumanın önündeki engelleri kaldırmak için önemli bir adım gibi görünüyordu. Mesela ağır geliyor, her yere taşıyamıyorum, sözlüğü yok, arama yapamıyorum gibi bahaneler ortadan kalkıyordu. O halde cihazı aldığımdan bu yana bir sürü kitap okumuş olmam gerekirdi değil mi?

Kitap okuyucuyu almamın üzerinden sekiz ay geçti. Ama dönüp baktığımda öyle çok fazla kitap okuduğumu söyleyemeyeceğim. Sanki işimi kolaylaştırsın diye aldığım şey işimi zorlaştırmıştı. Epey süre uygun fiyata gelip gelmediği, kılıf gerekip geremedği, en uygun nasıl kullanılacağı, nereden wi-fi bulunup cihazın kayıt edileceği, nereden cihaz için kitap temin edileceği gibi gereksiz bir sürü konu hem vaktimi hem aklımı meşgul etti. Epey bir süre de cihaz için yeni bir sözlük hazırlama işiyle uğraştım. Yine uzun bir süre de Risale-i Nur külliyatındaki eserleri cihazda okunabilir bir formatta derlemeye çalıştım.

Kindle için e-kitap hazırlama işinde yaptığım çalışmaların çok da mükemmel sonuçlar vermeyeceğini farkettiğimde yolun yarısına varmış buldum kendimi. O noktada iki aylık çalışma boşa gitmesin diye iki ay daha uğraşmak gereği hissettim. Sonra işin bir süre daha uzayacağını gördüm ama artık heba olmasını istemediğim daha büyük bir emek vardı ortada. İşte en sonunda .mobi formatında birkaç kitap derleyebildim. Şu linklerden indirebilirsiniz:
Sözler: https://app.box.com/s/5tq4g3t4fahe75eicih6
Lem'alar: https://app.box.com/s/0lgqp8pibfaj80dcyqwt
Mektubat: https://app.box.com/s/lri6d0jv38fqq2xvt3is
Şualar: https://app.box.com/s/eqtauttvhn09ns97mu1j

Linkler kaldırıldı. Kitap indirmek istiyorsanız hiç uğraşmadan şuradan indirebilirsiniz:
http://www.mobileread.com/forums/showthread.php?p=1533604

Güncel (09.03.2015): http://diniekitap.blogspot.com.tr/

Kitap derlemek istiyorsanız sayfanın en altındaki açıklamaları okuyabilirsiniz.
Bu kadar çok neye uğraştım, yeni ne kattım, nasıl yaptım, eksikleri neler?

Ahmet Berk'in hazırladığı risale-i nur külliyatı sayfalarını thomass mobi formatına çevirerek önemli bir boşluğu doldurmuş. Artık Kindle'dan Risale-i Nur okunabiliyor. Ancak çok geçmeden kitap okumamak için arayıp durduğum o bahaneleri buldum. Mesela kitaplarda resim formatında bulunan arabi ifadeleri bazen okuması zor oluyordu. Bazı kitaplarda cihazın menüsüne yerleşen "Table of Contents" yoktu, bazı kitaplarda yazım hataları vardı vs. Ben de her şeyden önce sağlam bir internet sitesinden Risale-i Nur metnini çekip gerekli her türlü ayarlamayı otomatik gerçekleştirip kindle için kitap üreten bir yazılım geliştirilebileceğini düşünüp kolları sıvadım.

En son elde ettiğim kitaplarda şu özellikler var.

1) Zoom yapılan resmin Landscape / Portrait uyumu:
Portrait modunda okuduğunuz bir kitapta bir resme zoom yaptığınızda resim landscape modunda değil yine portrait modunda açılıyor.

Portrait Modunda Görüntülenen Resim

2) Zoom ayarı:
Zoom yaptığınız resimde zoom ayarı yapılabiliyor.

Resme Zoom Ayarı

3) Yazıtipi boyutuna ayarlı resimler:
Paperwhite cihazlarda resimler yazıtipi boyutuna ayarlı. Yazıtipinin büyüttüğünüzde arapça ifadeler de yazıtipiyle uyumlu olarak büyüyor.

Küçük font seçildiğinde

Normal font seçildiğinde

4) HTML TOC ve mantıksal TOC:
Kitabın başında ilgili bölümlere linkler bulunuyor. Ayrıca "Go To" menüsünden ana başlıklar ve alt başlıklara erişilebiliyor.

Table of Contents

5) Yeniden derleme imkanı:
Kitapları HTML kaynaklarıyla beraber veriyorum. Böylece düzenlemeler yaypıp Kindle Previewer ile yeniden derleyebilirsiniz. Mesela CSS dosyasında ".arabic img" sınıfını değiştirerek resimleri daha büyük görünecek şekilde derleyebilirsiniz. Paperwhite için, eski Kindle'lar için ve bir de resme çevrilmemiş olmak üzere üç farklı sürümün HTML kaynak dosyaları kitapların zip dosyalarının içinde bulunmaktadır.

Bütün bu emeklerden sonra elbette yine hatalar, kusurlar var. Burada neden boşluk yok, ya da buradaki paragrafın girintisi neden sanki biraz fazla diyebilirsiniz. Münferit çalışınca bu kadar oluyor işte. Ciddi bir hata görürseniz bildirin. Daha kaliteli çalışmaları yayınevinizden isteyin. Bilgisayar, Web ve Android cihazlar için çok güzel Risale-i Nur okuma uygulamaları var. Kaç kişinin Kindle kullandığını, kaç kişinin mobi formatına ihtiyaç duyduğunu bilmiyorum. Hatta ara sıra mızmızlık yapan Kindle'i kayda almaya değer mi ondan da emin değilim. Pek çok defa satıp kurtulmayı düşündüm. Vazgeçemedim. Öyle de tuhaf bir cihaz. Nazını çekiyoruz. Artık basılmış kitaplar aldım, daha çok onlardan okuyorum.

Kitabı Derlerken İzlediğim Yöntem
Ben daha fazla uğraşamayacağım. Kindle için Risale-i Nur derleme işine meraklı biri varsa sıfırdan başlamasın diye izlediğim yöntemden bahsedeyim. Risale-i Nur metnini eRisale sitesinden buldum. Arapça metinler dijital olarak bulunduğundan kendim resme çevirebilirdim. Haşiyeler ve dipnotlar da link olarak bulunduğundan kitabın sonuna kolayca eklenebilirdi. Bu yüzden eRisale sitesinden sayfaları indirerek işe başladım.

Aşağıdaki gibi bir JavaScript kodu bize bir kitabın JSON formatındaki sayfalarının linklerini verir. Sonra Firefox DownThemAll! eklentisi kullanarak bu linkleri kolayca indirebiliriz. Bu kod Firebug konsolu ile erisale.com sitesi üzerinde çalıştırılır:
//http://stackoverflow.com/questions/1267283/
//how-can-i-create-a-zerofilled-value-using-javascript
function zeroFill(number, width)
{
    width -= number.toString().length;
    if (width > 0)
    {
        return new Array(width + (/\./.test(number) ? 2 : 1))
                        .join('0') + number;
    }
    return number + ""; // always return a string
}

for (var i = 27; i <= 1041; i++) {
    var bookId = 1; //1 for Sözler
    var myString = 
    "<a href='http://www.erisale.com/content/kulliyat/tr/"
    + bookId + "/json/"
    + zeroFill(i, 4)
    + ".json'>"
    + "http://www.erisale.com/content/kulliyat/tr/"
    + bookId + "/json/"
    + zeroFill(i, 4)
    + ".json"
    + "</a>"
    + "<br />";
    document.writeln(myString);
}
İlgili kitabın JSON dosyalarını indirip tek bir klasörde topladık. Bundan sonra C# ile yazdığım ve e-Risale Parser adını verdiğim uygulamayı kullanabiliriz. Uygulama kaynak kodlarıyla şu linkten indirilebilir:
e-Risale Parserhttps://app.box.com/s/y2i41qs72s5mga73cy4t
 Nasıl çalıştığını kısaca tarif edeyim.

e-Risale Parser Uygulaması
  1. "Select JSON Folder" düğmesi ile JSON dosyalarını indirdiğiniz klasörü seçeriz.
  2. "Parse All JSON Files" ile klasördeki bütün JSON dosyaları okunup işlenip tek bir HTML sayfası oluşturulur. Programın çalıştığı klasöre bakınız.
  3. "Parse One Page" düğmesi ile sadece bir sayfayı çekip çeviririz. Test etme işeri için kullanılır.
  4. "Prepare for Manual Edit" düğmesi, dosya adını belirttiğiniz HTML sayfasını okuyup daha detaylı düzenlemeler yapar. Bu otomatik düzeltmelerden sonra HTML sayfası üzerinde elle başka düzeltme yapmak isterseniz yapabilirsiniz.
  5. "Convert Arabic Text To Image" düğmesi, adı belirtilen HTML sayfasındaki Arapça metinleri resim formatına dönüştürür. Paperwhite ve eski Kindle'lar için iki farklı sürüm üretebilir.
  6. ERisale sitesindeki fihrist sections.tr.cache.js dosyasında tutuluyor. "Build Logical TOC" ve "Build HTML TOC" düğmeleri bu dosyayı okuyarak seçilen kitap için "Table of Contents" dosyalarını oluşturur.
Yeri gelmişken değineyim. Logical TOC dosyanızın uzantısını .ncx olarak değiştireceksiniz. Bir de Kindle Previewer'ın şöyle bir sorunu var: "Bir alt başlık n. sayfaya link veriyorsa bundan sonra gelen bir ana başlık o sayfaya link veremez" deyip hata veriyor. Hata notundan sayfa numarasını bulup o sayfada hataya sebep olan alt başlıkları silmek şimdilik en uygun çözüm. Zaten çok karşılaşılan bir durum değil.

Bir şey daha. Nadiren de olsa indridiğiniz JSON dosyalarının bazıları boş çıkabilir. İçinde sadece sayfanın bulunamadığını belirten bir not bulunur. İşte uygulama bu dosyaları çözemiyor.  JSON dosyalarını indirdiğiniz klasörünüzde dosya boyutuna göre sıralama yaparak boş dosyaları tespit edip silebilirsiniz. Bazen de JSON dosyalarında olmaması gereken yerde "escape" edilmemiş çift tırnak işareti bulunuyor. Programın çözebilmesi için böyle bir JSON dosyasını elle düzeltmek gerek. Yoksa program kilitlenir. Hangi dosyanın neresinde hata olduğunu uygulamayı kaynak dosyasından Visual Studio ile çalıştırıp debug ederek bulabilirsiniz.

Açıklamalarım şimdilik bu kadar. Daha detayına girip sıkmak istemem. Zahmet ederseniz kaynak kodda da açıklamalar var. Gerçi uzun bir süre ara verince kendi açıklamalarımı bazen ben bile anlayamıyorum. Ama
  • JSON dosyalarının nasıl okunacağı,
  • metinden veya dosyadan nasıl XML okunup işleneceği,
  • nasıl XML dosyası oluşturulacağı,
  • yazıların resme nasıl çevrileceği,
  • resim kırpma,
  • Regex Replace,
  • Style to CSS
vs. bir çok şey için örnekler ve yönlendirici açıklamalar bulabilirsiniz.

Gördüğünüz gibi çok detaylı ve çok farklı konularla ve istisnanın istisnalarıyla uğraştım. Buraya kadar nasıl geldiğime hâlâ şaşıyorum. İnsanlar beni harıl harıl işli güçülü görünce neyle meşgul olduğumu soruyorlardı. Cevap veremiyordum. Sonunda bitiyor. Sıkılmadan buraya kadar okuyabilen oldu mu bilmiyorum. Galiba bu yazıyı da bir sonuca bağlayamayacağım. Çok sıkıldım. Gerekli dosyaları paylaştım işte. Bir şey olursa buralardayım.

Güncelleme (4 Aralık 2013):
Şu sıralar bu işlere bakamıyorum. Ama başkası devam etmek isterse diye diğer kitapları en azından tek HTML olarak birleştirdim. Buradan indirilebilir:


Yapılması gereken şey Parser.exe uygulamasında Manually Edited Xml kısmına HTML dosyalarından birinin adını uzantısıyla beraber yazmak ve "Convert Arabic Text To Image" düğmesine basıp beklemek.

Hazır Dosyalardaki Arapça Metinlerin Resme Çevrilmesi
Ama tabi bunu yapmadan önce HTML dosyamızı kontrol edip elle düzenlememiz gerekiyor. İşte işin en uzun süren ve çileli kısmı burası. Hataların çoğu resme çevrildikten sonra farkediliyor ama iki iki düzenleme olmaması için asıl düzenleme resme çevrilmemiş orjinal dosyada yapılmalı. Sonra resimli dosya tekrar bundan elde edilebilir.

HTML dosyalarında hataları bizzat kontrol ederken şunlara bakılabilir:
  • Ana bölüm başlıklarında varsa stil hataları düzeltmek.
  • Aynı satırdaki iki farklı arabi ifadeyi alt alta dizmek. (Gerçi Parser.exe resme çevirirken yapıyor bunu.)
  • Tek tük kırık haşiye, nüsha, nükte linklerini düzeltmek.
  • Arasında latince haşiye linki olan uzun Arapça ifadeleri başka bir kaynaktan kontrol etmek.
  • Şiir gibi girintili metinlerin girintisini kindle cihazında kontrol etmek.
Maalesef tek bir nümunesi olan ve ancak kindle cihazında farkedilen başka bir sürü hata daha olacak.

İsterseniz yine Parser.exe ile TOC (table of contents) dosyalarınızı kolayca oluşturabilirsiniz. Şimdi başlıların derinliği üç başlık. Misal:
  • Birinci Söz
    • On Dördüncü Lem'a'nın İkinci Makamı
      • Birinci Sır
Böyle olunca "Time remaining to finsh chapter" hep bir dakika gösteriyor. Çünkü her sayfada üçüncü mertebeden bir başlık var. Bu derinlik kaynak kodda ikiye düşürülebilir. Yani çoğu alt alt başlık silinecek! Amazonun önerdiği başka bir çözüm ver mı bilmiyorum. Bu arada TOC dosyasında aynı sayfada bir alt başlıktan sonra ana başlık gelmesini de Kindle Previewer hata olarak gördüğünden her kitapta böyle üç beş alt alt başlığın silinmesi gerektiğini tekrar hatırlatayım.

Güncelleme (9 Aralık 2013):
Şu ana kadar belki yayınevlerinin dikkatini çekip bu işe başlamalarına sebep ve bu işe ciddi sarılmak isteyenler için bir bilgi birikimi olur diye ufak tefek hatalara göz yumuyordum. Her yerinden patlak veren bu iş daha yeni farkına vardığım yeni bir hata ile iyice canımı sıktı. Kullanıma hazır mobi dosyalarını yayından kaldırdım. Şimdilik HTML, OPF ve NCX dosyalarını inceleme ve geliştirme maksatlı buradan indirebilirsiniz.


Şimdi fontlarla ilgili karşılaştığım o problemden bahsedeyim. Arapça metinleri resme çevirmekte kullanacağım kaliteli bir Arapça font aramış ve Traditional Arabic, Scheherazade, Lateef ve Nazli arasından en sorunsuzunun birincisi olduğuna karar vermiştim. Gel gör ki evdeki hesabın çarşıya uymadığını farkettim. Firefox ile sorunsuz görünen bir hareke Microsoft ürünlerinde yanlış yerde çıkıyor. Şeddeli harekelerde görülen bu sorun, يَشَّقَّقُ kelimesi üzerinde kendini şöyle gösteriyor:

Microsoft ve Mozilla'da Hareke Farkı
Bu sorunu çözmek için Arapça metinlerin başka yazıtipi ile resme çevrilmesi denenebilir. Ama o zaman kim bilir yeni fontlarda başka nasıl sorunlar çıkacak? Belki yapılabilecek en iyi şey Arapça karakterleri düzgünce gösteren ucuzundan bir tablet alıp onu kullanmak ve Kindle'ın böyle oldurma ettirme işlerine hiç bulaşmamak.

12 Ağustos 2013 Pazartesi

Converting Arabic Multiline Text to Image [C#]

E-ink devices are being developed for better reading performance but they lack many software incapabilities. One of these incapabilities is showing arabic text properly. You sometimes need to convert Arabic text to image with your favorite font instead of leaving text rendering to the device.

In one of my projects, I implemented an algorithm to convert Arabic text to image. Here, I provide a standalone C# application (with source code) for the conversion. You can either convert the text after one paste operation or you can convert all Arabic span elements inside a HTML file. In the latter case, you need to specify those spans with "arabic" class. I don't want to work on a more clever way. You can develop according to your needs.

Some distinctive features are:
This text to image converter supports multiline and word wrap feature.
You don't need to define image height, it is calculated automatically.
Unnecessary right and left margins are also cropped.

Here are screenshots:



Here is a sample output image:


You can download the project here:

12 Mart 2013 Salı

Kindle İçin Osmanlıca Sözlük

Kindle cihazlarda kullanılmak üzere Risale-i Nur'da geçen kelimelerin çoğunu kapsayan mobi formatında bir sözlük derledim. "Risale-i Nur Sözlüğü" isimli sözlüğü buradan indirebilirsiniz.


Aşağıda önsözünü bulabilirsiniz. Şurada ise daha detaylı açıklama var.

Önsöz

Bilindiği gibi matbu sözlükler temel olarak yalın haldeki kelimelerden ve bu kelimelerin tanımlarından oluşur. Ancak e-kitap okurken seçilen ve sözlükte aratılan kelimeler genellikle yalın haldeki kelimeler değil, metinde geçen çekimli kelimelerdir. Kullanılan cihazın böyle çekimli kelimelerin hangi kök kelimeye ait olduğunu bilebilmesi ve ona uygun sonuç getirebilmesi için her bir sözlük maddesinin altına ilgili kelimenin bütün çekimli hallerinin eklenmesi gerekir. Türkçe'de ek sayısı fazla olduğu için arka arkaya getirilen eklerle bir kelimenin sayısız varyasyonu oluşturulabilir. Ancak bütün bu varyasyonların sözlüğe eklenmesi sözlüğün boyutunu artırıp verimini düşürür. İşte bu sebepten ötürü, sözlüğün risale okurken kullanılacağı varsayımıyla sadece risalelerde geçen çekimli kelimeleri sözlüğe ekledim. Yine bütün Osmanlıca kelimeleri değil, sadece risalelerde geçen kelimelerin tanımlarını sözlüğe aldım. Ayrıca risalelerdeki anlamına göre tanım yapan kaynaklara öncelik verdim.


Bu sözlükteki tanımlar farklı kaynaklardan derlenmiştir. Her bir kelime için ilk önce Söz Basım Dağıtım'ın sözlüğündeki tanıma bakıldı. Orada tanımı bulunmayan kelimelerin tanımı için sırasıyla Ömer Sevinçgül, Altınbaşak Neşriyat, Cemal Erşen, İsimsiz Kahraman, Mehmet Kanar, Abdullah Yeğin sözlüklerine bakıldı. Kelimelerin Osmanlıca yazılışları için sırasıyla Joel Thomas'ın Osmalıca-Türkçe Yazım Klavuzu, Mehmet Kanar, Cemal Erşen, Altınbaşak Neşriyat sözlüklerine bakıldı.


Sonuç olarak 8.463 tanesinde Osmanlıca yazılış bulunan toplam 43.632 tane tanımdan ve bu tanımlara bağlı 88.686 çekimli kelimeden oluşan bir sözlük elde edildi. Her ne kadar defalarca kontrol yapılsa da, gerek kaynaklardaki yanlışlıklardan gerek bu sözlüğü derlerken kullandığım algoritmaların eksikliğinden dolayı eksiklikler, kusurlar, yanlışlıklar ortaya çıkmış olabilir. Kaliteli bir çözüm için kütüphanelerdeki birkaç ciltlik matbu sözlüklere müracaat ediniz. Hatta yılların emeği ile hazırlanmış her zaman kullanılabilecek evladiyelik bir sözlük satın alıp kitaplığınıza eklemenizi tavsiye ederim.


11 Mart 2013 Pazartesi

Osmanlıca Sözlük Veritabanı

Epey uğraş verilen çalışmaları sunulurken ilk önce tarihsel gelişim, çalışmanın yapılmasını gerektiren nedenler, çalışmanın önemi gibi konulara objektif kasıntı bir dille değinilir. Benim sözlü ifadem pek kuvvetli olmadığından böyle çeşitli edebiyatlara girişmeyip kendi serencamımdan, sergüzeştimden basit bir dille bahsedeceğim. Hem kendimden bahsetmekle tarihsel gelişimin hatırlattığı yürek burkan ve nefret körükleyen tahribkâr siyasi olayları tartışmaktan da kurtulacağım. Doğru düzgün giriş de yapamıyorum ya. Her neyse, mesele şu: karşıma çıkan "Osmanlıca" kelimelerin anlamını en ihtiyaç duyduğum anda tam anlamıyla öğrenerek meseleye kaldığım yerden devam edebilmek. Şu ana kadar kullandığım çözümler şunlar:
  • Cep telefonuma CepLugat uygulamasını yüklemek.
  • Bilgisayarıma Babylon sözlük kurmak ve Osmanlıca sözlük yüklemek.
  • seslisozluk.net kullanmak.
  • Misalli Büyük Türkçe Sözlük satın almak.
  • Kindle için Osmanlıca sözlük kullanmak ve geliştirmek.
CepLugat uygulaması epey işimi gördü. Ancak elimde ne varsa bırakıp cep telefonuna uzanmak, tuş kilidini açmak, sözlüğü bulup çalıştırmak, ufak tefek tuşları kullanarak kelimeyi girmek üşendirmiyor değil. Bilgisayar başında iken yılların MoonStar sözlüğünü tercih ediyordum bir ara. Türkçe eş anlamlılar düğmesine basarak anlamını merak ettiğim Osmanlıca kelimenin eş anlamlılarına bakabiliyordum. Ancak hem sözlüğü açmak hem de eş anlamlılar düğmesine basmak iki iki iş. Sonradan Babylon sözlüğünü keşfettim. Bu programa hem İngilizce hem Osmanlıca sözlük yükledim. Ctrl + Sağ tık ile kolayca kelime aratabiliyordum. Ancak Babylon'daki Osmanlıca sözlük 10.000 kelimelik olduğundan her kelimeyi bulamıyordum tabi. İnternette olduğumda osmalıca ve ingilizce kelimelerin bir arada aratılabildiği, internetin eski sözlüklerden seslisozluk.com'u tercih ediyordum. Bu sefer kelimelerin Osmanlıca yazılışlarının eksikliğini hissettim ve 200TL civarı para verip Misalli Büyük Türkçe Sözlük satın aldım. Bu sözlükte ise gerçekten de umduğumdan fazlasını buldum, üşengeçliği bir tarafa bıraktım. Hatta kelimelerin arasında dolaşıp dilin inceliklerini farketmek ayrı bir maceraydı. Keşke yanımda taşıyabilsem diyorum fakat üç cilti hangi cebine koyarsın?

QuickLaunch'ta sözlük merakı
Bir istitrat: Çevremdeki insanlar çeşitli uygulamalar yüklenebiliyor diye bir sürü para verip dokunmatik telefon alıyorlar. Ben de demode olmuş 6300 telefonumu çıkarıp aynı sözlük uygulamasının benim telefona da kaç yıl önceden beri yüklenebildiğini söylüyorum. Aldıkları telefonun çok da önemli olmayan başka özelliklerini söylüyorlar. Açıkçası hem biraz yeni şeyler satın almak insanı mutlu ediyor, hem dokunmatik telefonun tuş kilidini açıp kapatmak zevkli bir şey, hem de reklamların tesirinde kalıyoruz. Hatta reklamın yanında telefon markalarıyla konuşuyor muhabbetler kuruyoruz. İnsanın hevasını körükleyen reklamları veya sosyal medya mühendisliği işi makaleleri sevmiyorum, hatta yeri geldikçe de reklam karşıtlığımı ifade ediyorum. Ancak dışı cazibeli içi kof ürünlerin arasında kaybolup giden ciddi emek ürünü eserlerin de tanıtılması taraftarıyım. Yeri geldikçe Misalli Büyük Türkçe Sözlük'ü anmam da bu sebeptendir. Zaten ansiklopedi ve sözlük gibi aranmayan mallardan pek fazla para da kazanılmaz zannımca. İstitrat bitti.

Çevremi doldurduğum sözlüklere bir yenisini daha kattım: Kindle'a Osmanlıca sözlük yükledim. Kitap okurken kelimenin üstüne basıp anlamını öğrenmek en kolayı ve en üşendirmeyeniydi. Ancak halihazırda sadece thomass'ın hazırladığı bir sözlük vardı. Abdullah Yeğin'in sözlüğü temel alınarak hazırlanmış. Gerçi Abdullah Yeğin'in sözlüğü hem daha önce bahsettiğim Babylon Osmanlıca sözlüğünde, hem seslisozluk.net sitesinde hem daha pek çok yerde büyük küçük değişikliklerle kullanılan bir sözlüktür. 56.000 civarı kelime içeriyor ama bazı maddeler ansiklopedi maddesi gibi, bazı maddeler ise hiç kullanılmayan farsça kökenli kelimler. Mesela "kabaçe" diye bir kelime uydursanız sözlükte bu kelimeyi bulabiliyorsunuz (kabaçe: entari).

Sözlüğün kapsamlı olması hem iyi hem kötü bir şey. Teorik olarak geniş bir veritabanında aradığınız her kelimeyi bulabilirsniz. Ancak uygulamada performans kısıtları devreye giriyor. Mesela Kindle'da bir kelimeyi seçip sözlükte arattığımız zaman aratılan kelime nadiren yalın haldeki kelime oluyor. Çekimli bir kelimenin sözlükte bulunabilmesi için bizim Kindle'a o kelimenin kökünün ne olduğunu söylememiz lazım. Mesela "şakirdin" kelimesi aratılınca "şakird" kelimesini getir demeliyiz. Fakat arka arkaya getirilen çekim ekleri ile bir kelimenin bir sürü varyasyonu oluşturulabilir. 56.000 kelime için bir milyondan fazla varyasyon elde edilebilir. Oldukça performans düşürücü bir sayı.

Halbuki sadece risale-i nurlarda kullanılacağı varsayımıyla hazırlanacak bir sözlükte en fazla 100.000 civarı çekimli gerekiyor. Verilen bir çekimli kelimenin kökünü bilgisayara buldurmak da çetrefilli bir iş. Mesela "dan" eki ayrılma hal ekidir deyip bütün kelimelerden silseniz, "odan" çekimli kelimesinin kökü de "o" olarak belirlenmiş olacak. Bir de "dan" eki gibi onlarca çekim ekini tek tek belirlemeniz gerek. Çekim eklerinin yanında "acemilik", "ilahiyatçı" gibi kelimelerde gördüğümüz "-lik" ve "-çi" gibi her kelimenin sonuna gelebilen yapım ekleri de hesaba katılmalı ve "ilahiyatçı" kelimesinin tanımı bulunamadığında "ilahiyat" kelimesinin tanımı gelmeli. Ayrıca Türkçe kitaplarında yer almayan ekler var. Mesela "istimalât" kelimesinin kökü olarak "istimal" kelimesini belirlemeniz gerekir.

Kelimelerin sonunda ek aramak yerine kelimenin başında kök aramak bana daha kolay göründü. Bu yöntem, bir çekimli kelimenin başındaki harflerle oluşturulabilecek "halihazırdaki sözlüklerde tanımı yapılmış kelimeler"den en büyük olanı bu çekimli kelimenin köküdür varsayımına dayanıyor. Mesela "bâtıladır" kelimesinin başı "bâ", "bâtıl", "bâtıla" kelimelerini içeriyorsa kelimenin kökü "bâtıla"dır diyoruz. Ancak bu yöntem ses olaylarında patlak veriyor. Mesela "kulağı" kelimesinin kökü olarak "kulak" kelimesi değil "kul" kelimesi bulunuyor. "Aklın" kelimesinin kökü de "akıl" olarak bulunamıyor. Neyse ki sert ünsüzlerin yumuşaması çok bilinen Türkçe kelimelerde olduğundan bu tür kelimeler Osmanlıca sözlüğümüzün dışında. Ünlü düşmeleri de Arapça kökenli kelimelerin aslına dönmesi şeklinde olduğundan "aklın" kelimesinin kökünün "akl" şeklinde bulunması da sorun değil, zaten Osmanlıca sözlüklerde "akl"ın da tanımı var.

Çekimli kelimenin başında geçen kelimeleri "yavru kelime" tabiriyle ifade edelim. Eğer veritabanımız çok dar veya çok geniş ise yanlış yavru kelimeler buluruz. Mesela "abdest"siz bir veritabanında "abdesti" kelimesinin kökü "abd" olarak bulunur. Veritabanının geniş olması burada doğru kelimeyi bulmada avantajlıdır. Öbür yandan çok büyük veritabanında da "icmaları" kelimesinin en uzun yavru kelimesi "icma" yerine "icmal" olarak bulunur. Şapkalı harfler de ayrı bir sorun. Şapkasına dikkat etseniz sözlüklerde bununla ilgili kök bulamayabiliyorsunuz. Şapkaları silseniz bir ton yanlış kök buluyorsunuz. Abâ, âbâ, âba, aba kelimelerini bir düşünün. Hangilerinin aynı hangilerinin farklı kelime olduğuna bilgisayar karar veremiyor.

Eklere ayırma işine girdiğinizde sorunların bitmek tükenmek bilmediğini göreceksiniz. Bu işi otomatik olarak değil elle tek tek yapsanız bile sorunlarla karşılaşabilirsiniz. Mesela metinlerde geçen "şakirdin" kelimesinin kökünün "şakir" diye mi "şakird" diye mi ayrılmayacağına karar vermek ancak metne bakmakla mümkün. Şu halde, eğer birileri çekimli kelimeleri köklerine ayırmışsa onlardan istifade etmek en kolay çözüm olarak görünüyor. Bunun için hem mümkün olduğunca çok köklerine ayrılmış çekimli kelime bulmak, hem çeşitli tanımlar arasında seçimde bulunabilmek, hem Osmanlıca yazılışlardan istifade etmek için internet ortamındaki farklı Osmanlıca sözlüklerini araştırdım. Aşağıda her birini ve üzerinde yaptığım değişikliklerle açıklıyorum:

Osmanlıca Sözlükler Veritabanı
Birincil Kaynak Tabloları
Sağdan soldan bulduğum ve düzenleyip veritabanına import ettiğim sözlüklerin tablolarıdır.

1) Abdullah Yeğin [tblYegin]
İnternette bulabileceğiniz 56.000 civarı kelime içeren sözlükleri oluşturan sözlüktür.  Bir komisyon tarafından hazırlanıp "Osmanlıca-Türkçe Ansiklopedik Büyük Lügat" ismiyle basılan bu sözlük Ferit Devellioğlu'nun daha önce yazmış olduğu "Osmanlıca Türkçe Ansiklopedik Lugat" sözlüğüyle karıştırılmamalıdır lakin Abdullah Yeğin'in "İslamî - İlmî - Edebî - Felsefî Yeni Lûgat" isimli başka sözlüğüyle karıştırılabilir.

Sözlük, kelime dağarcığı ve anlam çeşitliliği bakımından oldukça zengin ancak  bir kelime aradığınızda bir sürü kelime içinde istemedikleriniz de karşınıza çıkabiliyor, bir kelimenin bilmeniz gereken anlamının yanında fazlalık anlamlar da olabiliyor. Sözlükte bazı maddeler bir sözlük için çok uzun. Tanım yapıldıktan sonra bazı kaynaklardan uzun alıntılar yapılmış. Bu alıntıları sildim veya kısalttım. Ayrıca kitaptan bilgisayar ortamına aktarılırken Arapça metinler yerine $ işareti çıkmış. İnternetteki kaynaklar birbirinden bu şekilde kopyalayıp yapıştırmışlar. Bunları hataları düzelttim. Bu sözlüğün internetteki ilk kaynağı www.nurpenceresi.com görünüyor. Bu sitedeki "Geliştirilmiş Lugat" programı kurularak access veritabanı halinde orijinal hali elde edilebilir (veritabanı şifresi karizma).

2) Cemal Erşen [tblErsen]
"kelimat.doc" dosya ismiyle karşımıza sözlüktür. 1000 civarında kelimenin Osmanlıca yazılışlarını ve çok kısa tanımlarını içeriyor.

3) İlhan Apak [tblApak]
İlk sayfasında "Dîni Sözlük" yazan .chm uzantılı bir sözlüktür. 3497 kelimenin tanımı yapılmış. Hakîkat Kitabevi'nin kitaplarında kullanılabilir. Tanımların sonundaki alıntıları sildim. Birden fazla anlamı olan kelimelerin tanımlarının numaralarını düzelttim.

4) İsimsiz Kahraman [tblKahraman]
İlk sayfasında "Osmanlıca Sözlük" başlığı ve (Hazırlayan: Tesbit edilemedi) notu bulunan .chm uzantılı bir sözlüktür. Ben isimsiz kahraman ismini verdim. Oldukça nezih ve sade bir çalışma. Biçimsel hatalar yok, gereksiz anlamlar yok. 2744 tanım yapılmış.

5) Mehmet Kanar [tblKanar]
"Osmanlı Türkçesi Sözlüğü" başlığıyla yayınlanmış PDF türündeki sözlüktür. Kelimelerin Osmanlıca yazılışları, hangi dilden geldikleri ve kısaca tanımları verilmiş. Osmanlıca yazılışları PDF dosyasından düzgün bir şekilde çıkarmakla çok uğraştım. Bir de hiçbir kurala uymayan rastgele hatalar veritabanına aktarırken sorun çıkardı. Bazı kelimelerin Osmanlıca yazılışında da hata var, mesela "Kablettarihî" kelimesinin Osmanlıca yazılışı "sablettarihî" şeklinde yazılmış. Benim gözüme çarpan bir hatası kalmadı.

6) Ömer Sevinçgül [tblSevincgul]
İlk sayfasında "Küçük Lügat" başlığı bulunan .chm uzantılı bir sözlüktür. En sade, özet, sorunsuz sözlüklerden biri. 11.000 civarı kelimesi var. Elimde Ömer Sevinçgül'ün "Muhtasar Lügat" diye matbu bir sözlüğü de var. Bunda Osmanlıca yazılışlar mevcut ama internette dolaşan .chm uzantılı sözlükte yok.

7) Şâmil İslâm Ansiklopedisi
Bu eser ansiklopedi olduğu ve sözlük olarak kullanılamayacağı için veritabanına eklemekten vazgeçtim. Halbuki veritabanına aktarmak üzere tablı hale getirmiştim.

8) Kapsamlı Osmanlıca-Türkçe Yazım Kılavuzu [tblKlavuz]
Joel Thomas tarafından oluşturulmuş bir klavuz. Osmanlıca yazılışlarını kullanmak üzere veritabanına aktardım. 8462 kelime var. Bazen bir kelimenin (mesela: beyt) iki farklı Osmanlıca yazılışı olabiliyor, bazen bir kelimenin (mesela: بك) iki farklı latince yazılışı olabiliyor. Bazen iki farklı kelimenin latince yazılışı aynı bazen de Osmanlıca yazılışı aynı olabiliyor. Böyle istisnaları tesbit etmek Türk dili ile uğraşanların işi olsa gerek.

9) Altınbaşak Neşriyat [tblAltinbasak], [altinbasakInflections]
Bir javascript yazarak risaleonline.com sitesine uyguladım ve kelimeleri, tanımlarını, Osmanlıca yazılışlarını, Osmanlıca tanımlarını ve çekimli kelimeleri seçip kaydettim. Osmanlıca tanımların içinde gereksiz yere bulunan RLE ve LRE gibi unicode kontrol karakterlerini sildim. Başka yerlerde de özellikle çekimli kelimelerde karakter hataları vardı, düzelttim.

10) Söz Basım Yayın [tblErisale], [erisaleInflections]
thomass'ın erisale.com sitesinde geçen çekimli kelime ve tanımlarla oluşturduğu tablı haldeki dosyayı veritabanına aktardım. Bazen aynı kelime çok benzer şekilde yeniden tanımlanıştı. Hangi tanımın daha iyi olduğuna bilgisayar karar veremiyordu. Tabloyu gözden geçirerek bu tür tekrarlardan iyisini seçip diğerlerini sildim. Ayrıca tanımların sonundaki transkripsiyonları da sildim. Şu an veritabanında 52.152 çekimli kelime ve 32.961 tanım var.

Çalışma Tabloları
Yeri gelmişken veritabanındaki diğer tabloları ve kullandığım SQL sorgularını da açıklayayım:

1) [tblCombined]
[tblCombined] tablosunu "Combine All Dictionaries.sql" sorgusunu kullanarak doldurdum. Tablo yeni bir şey katmıyor, sadece bütün sözlüklerin tek bir tabloda olması işimi kolaylaştırdığı için böyle bir şey yaptım.

2) [tblAllInflections]
[tblAllInflections] tablosu, Risale-i Nur külliyatında geçen bütün kelimeleri içeren 100.399 satırlık bir tablodur. Bu tablo üzerinde "Kök Bulma Algoritması.sql" sorgusunu çalıştırdım, dokuz buçuk saat bekledim ve sonuçları [suffixFound] tablosuna kaydettim.

3) [suffixOperations]
[suffixOperations] tablosu ilk başta [suffixFound] tablosunun bir kopyasıydı. Kök bulma algoritmasının yanlışlıklarını bu tablo üzerinde düzeltmeye çalıştım. Bu tablodaki stotal ve htotal sütunları "Count Suffixes.sql" sorgusuyla doldurulmuş olup her bir ekin ve kök kelimenin tabloda kaçar kere tekrar ettiğini gösteriyor. Bir kelimenin eki ve kökü yanlış bulunmuşsa bu ek ve kök çok tekrar etmiyordur dedim ve şöyle bir ilişki buldum:
stotal = 1 and htotal < 40 --Hatalı olanlar çoğunlukta.
stotal = 2 and htotal < 30 --Hatalı olanlar çoğunlukta.
stotal = 3 and htotal < 20 --Hatalı olanlar çoğunlukta.
stotal = 4 --Elle düzeltilmesi gereken hatalar var.
stotal = 5 --Göze çarpan hata yok.
Bu ve başka tekniklerle köklerine yanlış ayrılan veya Türkçe fiil olan 15.000 civarı kelime sildim.

4) [suffixUndefined]
[suffixUndefined] tablosu köklerine elle ayırdığım 3.444 kelime içeriyor. Bu köklerin tanımı elimdeki sözlüklerde olmadığı için bu tablo öylece kaldı.

Sonuç Tabloları
Artık Kindle sözlüğünü derlerken kullanılacak sonuç tablolarından bahsedebilirim. İsimlerinin karmaşık durduğuna bakmayın, oldukça basit tablolardır.

1) [X.inflectionHeadwordMap]
[X.inflectionHeadwordMap] tablosu her bir çekimli kelimenin kökünü belirtiyor. Bu tablo doldurulurken sırasıyla [erisaleInflections] [altinbasakInflections] ve [suffixOperations] tablolarına müracaat edildi.

2) [X.headwordDefinitionMap]
[X.headwordDefinitionMap] tablosu sadece kök kelime, bu kelimeye karşılık gelen tanım ve bu tanımın hangi sözlükten seçildiği bilgisinden oluşuyor. Her bir kök kelime için ilk önce Söz Basım Yayın'ın sözlüğündeki tanım eklendi. Orada tanımı olmayan kelimelerin tanımı için sırasıyla Ömer Sevinçgül, Altınbaşak Neşriyat, Cemal Erşen, İsimsiz Kahraman, Mehmet Kanar, Abdullah Yeğin sözlüklerine müracaat edildi.

3) [X.headwordOttomanMap]
[X.headwordOttomanMap] tablosu sadece kök kelime ve Osmanlıca yazılışını içeriyor. Bir kelimenin Osmanlıca yazılışı için sırasıyla Osmalıca-Türkçe Yazım Klavuzu, Mehmet Kanar, Cemal Erşen, Altınbaşak Neşriyat sözlüklerine müracaat edildi.

X. ile başlayan bu üç tablonun içini "Fill X.Result Tables" sorgusuyla doldurulduktan sonra sıra XML dosyasını oluşturmaya geliyor. Ancak aynı sözlükte iki defa tanımlanmış eşanlamlı bazı kelimeler de (483 tane) bizim sonuç tablomuza eklenmiş görünüyor. Kindle'ın bu kelimeleri boykot etmemesi için çift tanımların tek başlık altında toplanması gerekli. Çift tanımları birleştirmek ve XML dosyasını oluşturmak işleri için bir C# uygulaması yazdım. Bu uygulama XML dosyasını yarım saatte oluşturdu. Tanımların içinde kullandığım HTML etiketleri XML dosyasında encode edilerek eklenmiş olduğundan NotaPad++ ile &lt; ve &gt; ifadelerini < ve > ile değiştirdim. Ayrıca boş etiketlerini de sildim ve Kindle Previewer ile sözlüğü derledim.

Veritabanından XML dosyası oluşturma
İndirmece Bölümü
Burada bahsettiğim veritabanını .bak dosyası ve .sql dosyası olarak iki farklı formatta paylaşıyorum. Yine sözü geçen SQL sorgularını ve C# uygulamasını da ekliyorum. Mobi formatındaki Osmanlıca sözlüğünü ve kaynak kodunu da gönderiyorum.

1) Osmanlıca Sözlük Veritabanı (MSSQL 2008):
 https://www.box.com/s/hpaez2kzhx21lhgfxoro
2) Veritabanından XML oluşturma uygulaması:
 https://www.box.com/s/yy867qs4qvth79cq1ev0
3) Risale-i Nur Sözlüğü (mobi formatında):

 https://www.box.com/s/ss257gha6br7i0u7n5bb

Bu kadar işten, altı haftalık çalışmadan sonra hâlâ yanlış bulunan kökleri farkettikçe acaba en başından farklı bir yöntem mi uygulasaydım diyorum. Kelimeleri köklerine ayıran Zemberek diye bir uygulama var. Bu uygulamayı kendi sitesinde test ettiğimde çoğu Osmanlıca kelimenin kökünü bulamıyordu. Zemberek'i bilgisayarıma indirdiğimde de nasıl kullanacağımı nereden başlayacağımı bilememiştim ve böylece alternatifler arasından eledim.

Bu işe hiç başlamamak ve Kindle'ı umursamamak da bir alternatifti ama akıl edemedim. Anlamı merak edilen bir çekimli kelimeyi sözlükte aratmak Kindle'in dışında çok zor değil. Çok yerde şöyle bir yöntem var: Eğer kelime sözlükte varsa bulunuyor, yoksa sonundan bir harf atılarak tekrar aratılıyor, yine yoksa yine aynı şekilde sondan harf atarak devam ediyor. En sonunda bulunan kelime yanlış olsa bile açılan kelime listesinden siz bir önceki veya sonraki kelimelere bakarak fikir edinebiliyorsunuz. Ancak kindle, "No Definition Found." diyerek sizi yarı yolda bırakıyor ve uyarının bir kenarında sözlüğü açan bir düğme falan da sunmuyor. Kitabı kapatacaksınız, ilgili sözlüğü bulup açacaksınız, kelimeyi harf harf yazarak aratacaksınız, sonra sözlüğü kapatıp tekrar kitabı bulup açacaksınız, vs.


RNurOkuma 4 programında kelime arama
Kindle Paperwhite'ta kelime arama

Neyse, bu da böyle bir anımda. Bu süreçte öğrendiğim birkaç şeyi de paylaşmak istiyorum:

Notlar

Bu çalışma sırasında öğrenip de bir kenara yazmak istediğim notlardır.
 
1) Kindle Arapça desteği (No Definition Found)
Kindle Arapça metinleri gösterirken çok nazlı davranıyor. Halihazırdaki yazıtipi harekeleri hiç güzel göstermiyor. Kitaba yeni bir yazıtipi gömseniz bu sefer Arapça harfleri birleştirmiyor. Eski modellerde harekeler normal fontla yazıyı bozuyor. Yazılar bazı Kindle modellerinde sağdan sola (RTL) görünmezse diye endişelisiniz zaten. Bazen Arapça kelimelerin sırasını siz değiştiriveriyorsunuz doğru görünsün diye. Elhasıl, Kindle bu konuda çok zayıf. Kindle size hizmet edeceğine siz Kindle'a hizmet ediyorsunuz.

Gece geç saat oldu, ben hâlâ nelerle uğraşıyorum. Çok sinirlendim. Kindle'ı USB ile tak çıkar yalama oldu. WiFi'sini internetsiz dosya aktarmakta kullanamıyorsunuz. Bir sözlüğü test etmek için ille de Kindle'a atmanız lazım. Tutarsız davranışlarını anlayabilmek için defalarca test yapmanız lazım, dolgun bir kullanım klavuzu yok. Mesela benim derlediğim Osmanlıca sözlükte birden fazla kelimeden oluşan Osmanlıca ifadelerde kelimeler bazen ters sırada bazen düz sırada görünüyordu. Meğer lookup penceresinde Osmanlıca kelimeler düz sırada, yani olması gerektiği gibi sağdan sola gösteriliyormuş. Sözlüğü müstakil olarak açtığınızda ise en sağda görünmesi gereken kelime en solda görünüyormuş. Şimdi söyleyince kolay ama bunu anlayana kadar sorunu bambaşka yerlerde arıyorsunuz. Neyse, ben Osmanlıca kelimelerin hem doğru sırada hem ters sırada olduğu iki sözlük oluşturdum. Birisi lookup penceresinde, diğeri sözlük müstakil olarak açıldığında düzgün gösteriyor. İki yerin birinde kelimelerin sırasını ters göstermesi şartıyla istediğinizi seçebilirsiniz.

2) CHM dosyalarından HTML dosyalarını çıkarmak
.chm dosyalarının içindeki HTML dosyaları 7-zip ile çıkarılabilir. Bu HTML dosyaları da cmd komut satırına "copy *.html combined.html" komutu yazılarak combined isimli tek bir dosyada birleştirilebilir. Ancak hangi klasörde olduğunuza dikkat edin. Şunları hatırlamak faydalı olabilir:

cd.. (Bir üst klasöre geç.)
cd c:\ (C sürücüsüne geç.)
cd test (test klasörüne geç.)
3) Aksan farklılıkları
Microsoft SQL Server, büyük küçük harf ayrımı yapmıyor. Küçük a harfi ile başlayan kelimeleri seçmeye çalıştığınızda büyük A ile başlayan sonuçlar da geliyor. Ayrıca makronlu ā harfi ile normal a harfi arasında da fark yok sayıyor, ancak şapkalı â ayrı.

Kindle'da lookup ile kelime aratırken ise hiçbir aksan ve kelimenin içinde geçen noktalama işaretleri farketmiyor, uygun olan kelime bulunuyor. Ancak bir kelime sözlükte iki kere tanımlanmışsa bu tanımların hiçbiri gelmiyor.

4) Veritabanındaki HTML karakterleri
Osmanlıca sözlük veritabanında bir kelimenin farklı tanımlarını <ol><li></li></ol> etiketleri ile liste formatına çevirdim. Bazı tanımların içinde başka bir tanım yapılmışsa onları <ul class="alttanim"><li></li></ul>etiketleriyle ifade ettim. Başka da bir HTML etiketi kullanmadım.Yukarıda paylaşmış olduğum DB2XML uygulaması, oluşturduğu XML dosyasında veritabanından gelen HTML karakterlerini encode ediyor. Bu karakterleri düzeltmeniz lazım.

5) Unicode karakterlerde encoding
Tablı haldeki UTF-8 ile encode edilmiş bir dosyayı SQL Server Management Studio'da "import" ederken kolonların genişliklerini ayarlamayı unutmayın. "Edit Mappings" diye bir düğme gördüğünüzde de o düğmeden ilgili pencereyi açın ve sütun türlerini nvarchar veya ntext olarak ayarlayın. Yoksa varsayılan değerler olan varchar ve text Unicode karakterlerini bozuyor. (UTF-8 ile encode edilmiş dosya Notepad++ ile açıldığında Encoding menüsünde "Encode in UTF-8" seçili durumda görünür).

20 Şubat 2013 Çarşamba

Some Operations on Arabic Characters

I confess that I am not a unicode expert and I don't know the related terms but I want to note my non-expert experince in case it may help someone. I will talk about
  • Importing Arabic data into MSSQL database
  • The non-joining Arabic caharacters problem
  • Examining Arabic characters by their decimal and hexadecimal values
Recently, I have copied some Arabic text from a PDF document to clipboard but the order of the charactes in each word is reversed. For example هجو became ﻮﺠه. Converting the PDF to some other formats like DOC didn't help in keeping the correct order. Simply, what you see is not what you get. This is one of the things that I don't like about PDFs. I was just planning to keep the Arabic words in a database, and luckly I found a time-saver function in SQL Server 2008. It is the REVERSE() function. Before explaining this easy function I will explain how I imported the Arabic word list.

Getting Raw Text File - I converted PDF to DOC via some free services over internet. Then I saved DOC file as an HTML document by Microsoft Word's save options. Now, I am free to make any changes to this HTML with a text editor: There are no hidden spaces, no hidden margins, no hidden tables, no hidden styles, no hidden anything. Since Notepad can't open such a big file, I used Notepad++. I recommend using NotePad++ because it is also good for cleaning garbage of styles which Microsoft Word added while it is saving HTML file. This text editor has a nice Find & Replace feature and supports regex. The tricks in this article may be helpful in using regex replace with Notepad.

Getting Tab Delimited File - After cleaning the document from unnecessary code blocks, I got a two-colum text file. Each line in the text file has an Arabic word and its meaning. The two are seperated from each other with tab character. You can call this file tabbed or tab delimited text file. You could also generate such text file by copying a table from Microsoft Word or from web browser and then copy it to a text editor, Notepad++. One good thing about these tab delimited text files is that they can be easily imported by SQL Server, Microsoft Excel, or that kind of software.

Importing Arabic Text to SQL Server - If you have Microsoft SQL Server Management Studio already installed, then open its import and export wizard. As a data source, select flat file source and locate our text file which has .html extension in this case. Since we have some Arabic characters in our text file, "65001 (UTF-8)" should have beeen seleceted as code page value. If it is not selected by default, edit your text file with Notepad++ and select "Encode in UTF-8" option. Check if some characters get spoiled, if not than save the file and reopen import wizard.

Now, back to import/export wizard, select row delimiter as the new line character {LF} and column delimiter as the tab character {t} from the import/export options. By default, all columns are of data type "string [DT_STR]" and of with 50 characters. If one of your columns contains text larger than 8000 characters, then chose "text stream [DT_TEXT]" for that column. Once you have a successful preview, click next until you see Edit Mappings button. Since we have some Arabic data, we should edit column mappings. Change type of a column from varchar to nvarchar or from text to ntext it is contains Arabic text. Ordinary varchar or text types doesn't support Unicode characters. If you continue without making any change here, you may get your characters spoiled. Click next and finish. I you get any truncation errors increase character limit of your columns in the next try and don't forget to delete unsuccessful table first.

Reversing Arabic Text - After successfully importing data, select top 1000 rows from your table. Our Arabic text looks reversed during entire column. We should add REVERSE() function to correct it like in the following query:
SELECT REVERSE([arabic]), [meaning] FROM [dictionaries].[dbo].[imported]
Beside reversing the Arabic text, we really need an ID column in our new table. I replicated the imported table with SQL Server's "script table as CREATE to" service and added auto incremented ID column to the new table. Then I transfered data from old table to new table with this query:
INSERT INTO reversed (arabic, meaning)
SELECT REVERSE(arabic), meaning FROM imported ORDER BY arabic
I should also note here that if you want to select according to a unicode string, you should add N before the string in the query. See the example below:
SELECT * FROM imported WHERE arabic = N'هجو'
Joining Seperated Arabic Characters - Now, the order of the Arabic characters is correct but there is one problem. Some characters looks seperated. هجو looks like هﺠﻮ . There is no space or zero width character in the word but some characters are not joined to others. I had a hard time in solving this situation. Then, I met with Arabic Unicode blocks via this wikipedia page. If you type any Arabic character, they all join each other. They are shaped automatically by the software you type on. On the other hand, if you find an original keyboard and type a character from Arabic Presentation Forms-A or Arabic Presentation Forms-B, software leaves it as it is. In order to see the difference between simple Arabic characters and their presentation forms, you can copy and paste هجو and هﺠﻮ to this pages search box. It will show the difference between the two HEH chracters.

Arabic characters have hex values between 0x0600—0x06FF, and characters of presentation forms have hex values between 0xFB50—0xFDFF and between 0xFE70—0xFEFF. You can convert hexadecimal to decimal by writing console.log(0xFEFF); in your FireBug console. You can also try these JavaScript commands to see the difference between Unicode blocks:
//A character from Arabic Presentation Forms-B:
"ﻻ".charCodeAt(0); //65275

//A simple Arabic character:
"ا".charCodeAt(0); //1575

//Aimple Arabic character:
"ل".charCodeAt(0); //1604

//Two simple characters joined each other as a glyph:
console.log("ل" + "ا");‎ // ‬لا (Don't copy this comment.)

//First character is a simple Arabic character:
"لا".charCodeAt(0); //1604

//Second character is also a simple Arabic character:
"لا".charCodeAt(1); //1575
The following commands may also be helpful:
//Get character from its hex value.
String.fromCharCode(0xfe80);

//Get character from its unicode value.
console.log("\uFE80");
Converting from Arabic Presentation Forms to Arabic - What I need to do is to convert any presentation character to simple Arabic character. On this topic, I could find only Accorpa's Arabic Converter From and To Arabic Presentation Forms B which is developed for iOS applications. I converted some part of it to C# code and added some more character support according to my database. You can examine my C# application that converts some characters to simple Arabic and gives alert at other characters so that you can visit wikipedia page titled "Arabic script in Unicode", and find a suitable character corresponding to a presentation character, and add it to this C# application. I know, the C# code is not clean and smart but it does the job. By the way, Windows' scientific calculator is very handy in converting from/to hex and don't forget İsa Sarı's simple Arabic keyboard.

You can download Arabic Character Converter from here: https://www.box.com/s/7lqe07i75eocmpt8fn41 It is an incomplete C# project. Someone may finish it by mapping all necessary presentation characaters to simple Arabic characters. Also note that, this project works with my database. So, you should adapt it if you want to use it and add some other presentation characters that you need.