Java Wireless Toolkit 64 bit jdk problemi ve çözümü.

Posted by yasin | Posted in Java | Posted on 06-03-2009

Aşağıdaki gibi bir hata ile karşılaşırsak sebebi java wireless toolkit(WTK) 32 bit JDK ile çalışmaya ihtiyaç duymasından dolayıdır.
http://java.sun.com/javase/downloads/index.jsp sitesinden 32bit JDK yükleyip WTK’nın kurulu olduğu dizinin altında bulunan (/usr/local/netbeans-6.5/mobility8/WTK2.5.2/bin)
emulator dosyasının içindeki javapathtowtk değişkenini 32 bitlik JDK’mızın bin dizinine eşitlemeliyiz.

örneğin: javapathtowtk=/usr/bin/jdk1.6.0_12/bin/

HATA

Starting emulator in execution mode
java.lang.UnsatisfiedLinkError: /usr/local/netbeans-6.5/mobility8/WTK2.5.2/bin/sublime.so: /usr/local/netbeans-6.5/mobility8/WTK2.5.2/bin/sublime.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1663)
at java.lang.Runtime.load0(Runtime.java:787)
at java.lang.System.load(System.java:1022)
at com.sun.kvem.Sublime.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at com.sun.kvem.Lime.createLime(Unknown Source)
at com.sun.kvem.KVMBridge.<init>(Unknown Source)
at com.sun.kvem.KVMBridge.getBridge(Unknown Source)
at com.sun.kvem.midp.MIDP.run(Unknown Source)
at com.sun.kvem.environment.EmulatorInvoker.runEmulatorImpl(Unknown Source)
at com.sun.kvem.environment.EmulatorInvoker.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.kvem.environment.JVM.main(Unknown Source)
ricoh-run:

C# içerisinde Matlab fonksiyonlarına değer göndermek (C# passing parameter into Matlab)

Posted by Mahmut Sinecen | Posted in Yazılım | Posted on 02-03-2009

Matlab’ın sağladığı bir diğer özellik .NET builder özelliğinin olması, bunun sayesinde Matlab’da yazdığınız fonksiyon dosyanızı C# içerisinde rahatça kullanmanıza olanak sağlamaktadır. Öncelikle bir fonksiyonu Matlab içerisinde oluşturuyoruz. Bu fonksiyon için isteğiniz parametreleri ekleyip, daha sonra dll dosyası olarak derleme işlemini yapıyorsunuz. Basit bir fonksiyon hazırlanıp C# içerisine aktarımı

http://gulererman.blogspot.com/2008/05/matlab-komutlarn-cda-kullanma.html

sayfasında ayrıntılı olarak bulabilirsiniz. Bizim burada yapmak istediğimiz, fonksiyon içerisine parametre gönderip fonksiyonun bu parametrelere göre işlem yapmasını sağlamak.

Örneğin function ciz(baslangic,bitis) olan bir fonksiyonunuz var, burada baslangic ve bitis değerlerini C# içerisinde oluşturup bu fonksiyona göndermeniz gerekiyor. Bunun için MWArray kütüphanesini kullanmanız gerekiyor, öncelikle C# içerisinde Add Reference ile yeni bir referans ekleyeceksiniz, burada Browse kısmında ekleyeceğiniz dll dosyası

C:\Program Files\MATLAB\R2008a\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll

içerisinde. Bu kütüphaneyi ekledikten sonra using MathWorks.MATLAB.NET.Arrays; parametresini eklemeniz gerekiyor. Daha sonra butona veya atama yapmakistediğiniz işlemin içerisinde,

cizclass cizin = new cizclass();
// m dosyası içindeki ciz fonksiyonunu taşıyın.
MWArray baslangic = 0;
//baslangic değişkeni
MWArray bitis = 180;
cizin.ciz(baslangic,bitis);

fonksiyonunuzun parametrelerine göre değer atayıp çağırma işlemi yapmanız yeterli olacaktır, burada fonksiyon içerisine gönderdiğiniz parametreler string, integer, double, vb. olabilir. Herbirini MWArray olarak belirlemeniz yeterli olacaktır. Programınız bu şekilde sorun çıkarmadan çalışacaktır. Kolay gelsin.

iis 7.0′dan iis 7.0′a birden fazla siteyi taşıma (iis 7.0 migration)

Posted by Mahmut Sinecen | Posted in Microsoft | Posted on 01-03-2009

iis 7.0 server 2008 ile beraber gelen site yönetici yazılımı olarak, iki farklı iis 7.0 arasında migration (taşıma) işlemi gerçekten zor bir iş. Daha önceleri 2003′de iis 6.0 dan transfer için siteleri export (dışa aktarım) edip farklı bir iis 6.0 içerisine import (içe aktarım) yaparak kolay bir şekilde siteleri diğer sunucuda yönetebiliriz. Fakat ne hikmetse microsoft çıkardığı bu yeni yazılımda haliyle eski versiyonları destekleme de hatta ve hatta birebir aynı yaılıma transferde eksiklikler veya unutkanlık durumları oluşuyor. iis 7.0 bilindiği üzere iss 6.0, 5, 4 gibi eski sürümlere destek vermiyor, bunlardan site transferi için IIS Migration and Synchronization tool, Web Deploy yazılımını yüklemeniz gerekiyor ki bu yazılımda microsoft tarafından yapılmamıştır, destek veren kişiler tarafından oluşturulmuştur. iis 7.0 taşımada da bu tarz bir sorun ortaya çıkmaktadır. Benim anlatacağım yöntem türkçe veya ingilizce iis 7.0 lar arasında taşıma yapmanız için kullanacağınız bir durum, daha önce denemedim ama önceki iis sürümlerini de bu şekilde taşıma yapabilirsiniz diye düşünüyorum.

Yapmanız gereken öncelikler iis komutlarını bilmeniz;

APPCMD (command) (object-type) <identifier> < /parameter1:value1 … >

bu komut ile listeleme, oluşturma, yedekleme ve yeniden oluşturma yapabilirsiniz. Çalışmamız gereken bu komut ile ilgili alt parametrelerin kullanımı;

# LIST: iis üzerindeki objelerin listesi için kullanılır
# ADD  yeni bir obje oluşturmak için kullanılır
# DELETE  belirlenen objelerin silinmesi için kullanılır

Yukarıdaki parametrelerle beraber objelerin aşağıdaki listelerle beraber kullanılması gerekiyor;

Site                Sanal sitelerin yönetimi için

App               Uygulamaların yönetimi için

Apppool        Uygulama Havuzlarını yönetmek için

Backup          Serverın konfigürasyon ve objelerinin yedeklenmesi için

Yapmanız gereken şudur;

Uygulamaları görmek istiyorsanız; APPCMD list app /? bu komut ile listesini çıkarabilirsiniz. Bu örnekten sonra bizim iis 7.0 ı taşımak için yapmamız gereken şudur; eski serverda

%systemroot%\system32\inetsrv\APPCMD add backup MyBackup bu komutu çalıştırarak bütün serverın yedeklenmesini sağlamak, burada bütün konfigürasyonda beraberinde gelmekte bunu unutmayın. Bundan sonra yeni yedeklediğiniz dizini ki bu da c:\inetpub\wwwroot\history içerisinde bulunmaktadır, daha önce yedekledikleriniz varsa en son oluşturduğunuzu almayı unutmayın. Bu klasörü tamamiyle kopyalayıp yeni serverımız içerisinde aynı adrese yapıştırıyoruz. Daha sonra aşağıdaki komutu çalıştırıyoruz;

%systemroot%\system32\inetsrv\APPCMD restore backup “MyBackup” bununla beraber iis içerisinde tüm sitelerimizin gelmiş olduğunu görebiliriz.  Fakat bu komutun en büyük dezavantajı tüm ayarları içerisinde barındırıyor olması, bu da sitelerinizin çalışmamasına neden olabilir. Bu nedenle yapmanız gereken yeni serverında bir yedeğini almanız daha sonra eski serverdan alıp yüklediğiniz backup klasörünün içerisinde applicationHost.config dosyasının içerisinde <system.applicationHost> ile başlayıp <\system.applicationHost> ile biten kısımları kopyalamanız ve bu kopyaladığınız site adlarını yeni serverda bir önce aldığınız yedekleme klasörünün içerisinde applicationHost.config dosyası içerisine aynı yere yapıştırmanız.  Bu şekilde eski aldığınız server dosyasındaki tüm site adları doğrudan yeni servera yüklenmiş olacaktır.

NOT: Eğer olurda yine de siteler ile ilgili bir hata oluşursa, sitelerin çalışma durumu durdurulmuş olarak görünürse, Web Manegement Service ve World Wide Web Publishing Service’ını kaldırıp tekrardan kurmanız gerekmektedir. Bu şekilde iis de oluşan son hatalarıda gidermiş olursunuz.