Java OutOfMemoryError için Netbeans JVM Ayarları

Yaklaşık 650 MB’lık bir text dosyasını okumaya çalışınca aşağıdaki hatayı aldım:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Java sanal makinesi varsayılan olarak 256 MB maksimum bellek ayırıyor. Programınız ihtiyacı bunun üzerinde olunca yukarıdaki hatayı alıyorsunuz. Ancak JVM’ye aşağıdaki komutlarla ilk ve maksimum bellek miktarını belirtebiliyorsunuz.

java -Xmx2048m -Xms256m Yazının Devamı

Visual Studio’da Projeye Gömülü Kaynak Eklemek

C#’ta yazmakta olduğum kütüphane bazı bilgileri dosyadan okuyor. Kütüphanenin dll’ini dağıtırken bu dosyanın da dll’e gömülü (embedded) olmasını istiyorum. Bu tür dosyalara kaynak dosyalar (resources) ismini verebiliriz. Kaynak dosyaların yalnızca okuma yapmak için kullanılabileceğini, yazma yapılamayacağını (readonly) hatırlattıktan sonra bunun nasıl yapılabileceğine geçelim:

1- Öncelikle kaynak dosyayı projeye dahil etmek için  projemize “Resources” isimli bir klasör açalım. Yazının Devamı

Türkçe Fiil Çekimleri Uygulaması

Türkçe fiillerin çekimlerini otomatik üreten bir programı kodlamayı uzun zaman önce düşünmüştüm. O zamandan beri vakit buldukça azar azar geliştirdiğim uygulamanın ilk sürümünü sonunda yayınlayabildim. Uygulama bu hali ile kime ne kadar fayda sağlar bilemiyorum. Ama ileriki sürümlerinin ilk-orta-lise öğrencilerine ve Türkçe öğrenmek isteyen yabancılara yararlı olmasını hedefliyorum. Bu bağlamda sizin de görüş ve önerilerinizi bekliyorum:

http://fiilcek.apphb.com/

Teknik detaylara gelecek olursak:

Uygulama Asp.Net (C#) ile yazıldı ve AppHarbor bulutu üzerinde çalışıyor. Java ve Ruby için de benzer bir platform (PAAS) sağlayan Heroku bulutu var. AppHarbor basit kullanımlarda ücretsiz ve Github, BitBucket gibi ortamlardaki kodunuzu otomatik çekip, derleyip yayınlayabiliyor.

Şimdilik olumsuz çekimler yok, soru çekimleri, edilgen ve ettirgen fiiller yok. Ve bu en sade haliyle bile bir fiil için tam 197 adet çekim dönüyor. Bir de bunları ekleyince arayüzün hala sade ve anlaşılır olmasını nasıl sağlayacağım bilemiyorum :)

Uygulamanın faydalı olması dileğiyle.

Windows Netbeans Maven Türkçe Karakter Problemi

Windows’ta Netbeans ile yeni bir Maven projesi açtığınızda Türkçe karakterlerin doğru görüntülenmediğini farkettim. Yaklaşık 3 saat süren çabalardan sonra bulabildiğim tek çözüm:

System.out.println( "ÇİĞÇŞÜçığöşü--" );

kodunun çıktısı

Ç??Ç?Üç??ö?ü--

şeklinde görünüyor. Aynı şey dosyaya yazma yaparken de geçerli. Görebildiğim kadarıyla bu henüz çözülmemiş bir bug. Sorunun Netbeans’ten kaynaklandığını teyid etmek adına aynı kodu IntelliJIdea ile de çalıştırdım ve sorun olmadığını gördüm. Aynı şekilde linux ortamındaki Netbeans de sorunsuz çalışıyor. Lafı fazla uzatmadan işe yarayan tek çözümü açıklayayım: Yazının Devamı

Türkçe Metinlerin Sınıflandırılması için Deney Ortamı: Prizma

Bundan önceki metin sınıflandırma çalışmamızı kısaca özetleyerek başlayalım. 10 yazara ait 100’er köşe yazısı toplamış bunlardan bir kısmı ile sistemi eğitmiş diğer kısmını ise test için kullanarak köşe yazılarını yazarlarına göre sınıflandırmaya çalışmıştım. Bunun için yazdığım Java kodu her bir yazıdan 13 adet nitelik (attribute) değeri çıkarıyordu. Mesela ortalama kelime uzunluğu, cümle uzunluğu, noktalama işareti kullanım oranı bu niteliklerden bazılarıydı. Sonuçlar ise %95 oranında isabetliydi. Rakamlarla konuşmak gerekirse 10×100 = 1000 köşe yazısından 50×10= 500 adedini eğitim (training) için kullandığımızda kalan 500 yazıdan yaklaşık 475 kadarının hangi yazara ait olduğu doğru şekilde tahmin edilebiliyordu. Yazının Devamı

Bir Metin Sınıflandırma Çalışması

İki yıl kadar önce Doğal Dil İşleme dersi kapsamında yaptığım ve burada paylaştığım metin sınıflandırma çalışmasına devam etme şansı buldum. Aynı dersi alan ve proje arayan bir arkadaşa mevcut çalışmayı ilerletmeyi teklif ettim. O da kabul edip üzerine düşeni yerine getirince bu vesile ile hem Prizma ortaya çıkmış oldu hem de çalışma daha sağlam bir zemine oturdu.

Çalışmanın önceki versiyonunda 10 yazara ait köşe yazılarını, yazarlarına göre sınıflandırmayı denemiş ve %95’e varan bir isabet oranı yakalamıştım. Yeni çalışmamızda yazar sayısını 30’a çıkardık ve her yazar için 40 adet köşe yazısı topladık. Daha sonra 30’a yakın (belki de daha fazla) niteliği test ederek en verimli 19 tanesini tespit ettik. İlk olarak yazıların yarısını eğitim yarısını test (20×20) için kullandık. Daha sonra eğitim için kullanılan yazı sayısını önce 15’e sonra da 10’a düşürdük. Aşağıdaki tabloda da görüldüğü gibi sonuçlarda ciddi bir fark oluşmadı. Buradan hareketle 10 köşe yazısının bir yazarın yazım stilini tanımak için 10 yazı yeterli. Yazının Devamı

SQL 18: Join Türleri

Önceki iki yazıda SQL’deki temel join sorguları üzerinde durmuştuk. O yazılarda anlatılan join’in en çok kullanılan türü olan inner join’di. Bu yazıda ise genel olarak inner, outer, left, right, full gibi join türlerinin benzer ve farklı yönlerini örneklerle açıklamaya çalışacağım. Eğer join konusuna tamamen yeni iseniz öncelikle ilk iki makaleyi çalışmanızı öneririm.

Bildiğiniz gibi üzerinde çalıştığımız veritabanları için kullanılan genel isim “ilişkisel veritabanı”dır. Yani tablolar birbiri ile ilişkilidir ve bu ilişki bir tablodaki birincil anahtar (primary key) ile diğer tablodaki yabancı anahtar (foreign key) üzerinden kurulur. Aşağıdaki okul veritabanında bu tablolar arasındaki ilişkiler açıkça görülüyor. Yazının Devamı

Java ile Geçen Sürenin Ölçülmesi

Java’da, geçen zamanın hesaplanması için iki temel metot System.currentTimeMillis() ve  System.nanoTime()’dır. Her ikisinin de kullanımı benzer şekilde.  Bu yazıda her ihtiyacımız olduğunda kullanabileceğimiz bir Kronometre (Timer) sınıfını tanıtmak istiyorum. Öncelikle bu iki metotun doğrudan kullanımlarını görelim:

currentTimeMillis

long startTime = System.currentTimeMillis(); 
 // ... zaman alan bazı işlemler ... 
 long endTime = System.currentTimeMillis();
 long estimatedTime = endTime - startTime; // Geçen süreyi milisaniye cinsinden elde ediyoruz
 double seconds = (double)estimatedTime/1000; // saniyeye çevirmek için 1000'e bölüyoruz.

Yazının Devamı

İngilizce Sözlük ve Kullanım Tavsiyesi

İngilizce sözlüğe ihtiyaç duyduğumda kullandığım iki sözlük Tureng ve Heinle’s American English Dictionary’dir. Tureng’i muhtemelen siz de kullanıyorsunuzdur. Sade ve kolay arayüzü, kelimelerin telaffuzunu içermesi ve sadece kelime değil aynı zamanda kalıplaşmış ifadeler,  deyimler ve bunların kullanıldıkları alanları (hukuk, bilişim, tıp vb.) da içeren çok zengin veritabanı Tureng’i tercih etmek için yeterli sebep. Heinle’s sözlüğüne gelince basit, sade ve anlaşılır bir açıklama ve aynı güzellikte bir örnek cümle içeriyor her bir kelime için. Benim asıl anlatmak istediğim ise bu iki sözlüğü birlikte nasıl kullanabileceğimiz. Ya da neden Tureng’in yanında çoğu zaman bu sözlüğe de ihtiyaç duyduğum. Yazının Devamı

Java ve SQLite: Örnek Veritabanı Uygulaması – 4

Bundan önceki üç makale MySql veritabanı kullanan küçük masaüstü uygulamalarıydı. Ancak MySql aslında masaüstü uygulamalarında kullanılmak için tasarlanmış bir veritabanı yönetim sistemi değil. Daha çok web ve dağıtık uygulamalar için kullanılan bir çözüm. Bu nedenle veritabanı bir sunucu üzerinden hizmet veriyor ve veritabanını kullanacak olan tüm uygulamalar veriye bu sunucu üzerinden ulaşıyor. Bir masaüstü uygulamasının ihtiyaç duyacağı yerel bilgileri MySql veritabanı kullanarak sakladığımızda, o uygulamayı kuracağımız her bilgisayara bir de mysql sunucu kurmamız, hatta veritabanını da sunucuda yeniden oluşturmamız gerekiyor. Sözün kısası uzun zamandır bu problemle ilgili sorular geliyordu ve çözüm olarak Sqlite’i öneriyordum. Bu yazıda bu önerimi örnek bir uygulama ile pekiştireceğim. Bu arada Sqlite veritabanını kullanan uygulama ve işletim sistemlerinden bazılarının Firefox, Opera, Chrome, Skype, Dropbox, Windows Phone 8, Apple iOS, Symbian Os, Google Android vs. olduğunu hatırlatalım. Yazının Devamı

Önceki Yazılar →

Get Adobe Flash player