15 Mayıs 2016 Pazar

Mongo Db commands

Mongo db ye bağlanmak için

/installation_path / bin /

./mongo

açılan konsol ekranında aşağıdaki işlemler ile db management yapılabilir.

Databaseleri listele:

show dbs 

 Kullanılacak DB ye geç

use databaseIsmi 
Tabloları listele

show collections 
Tabloyu temizle 

db.tabloIsmi.remove({}) 
curly {} parantez e dikkat çekmek gerekli bu kullanım ile herhangi bir kısıt olmadan tüm datayı sil anlamı mevcuttur 

Silinecek data nasıl filtrelenir  userTable isimli collectiondan name kolonu-RDMS :) -  Abdurrahman değerini taşıyan kayıtlar silinsin

db.userTable.remove({'name':'Abdurrahman'}) 

java.lang.IllegalArgumentException: Removing a detached instance

JPA ile remove işlemi denediğinizde title da geçen java.lang.IllegalArgumentException: Removing a detached instance hatasını aldığınızda temel olarak sorunun kullandığınız sessiona ait olmayan bir entity i silmeye çalışmanız olduğunu düşünebilirsiniz.

Sorunun tespiti için kullandığınız transaction-type önemlidir JTA kullanmıyor transaction ı siz yönetiyor iseniz bu soruna bulaşmayı siz seçmişsiniz demektir.Kullandığınız teknoloji sebepli Resource-Local ile çalışıyorsanız entitymanager ı ne zaman kapattığınız önemlidir.

Genelde hata sayfaya gelen listedeki bir elemanın silinme isteği sebebi ile alınır.Datayı sayfaya getirdikten sonra entitymanager ı kapatmış iseniz silme işleminde yeni bir entitymanager oluşturmanız gerekecek bu entitymanager ile EntityManager#remove() denediğinizde hata alacaksınız

Hata mesajında belirtildiği üzere bu entitymanager  yeni oluşturuldu ve içinde attach edilmiş sizin belirttiğiniz gibi bir entity bulunmuyor 

Yapılması gereken EntityManager#contains()  metodu ile entitymanager için bu entity nin varlığının teyidi mevcut ise  EntityManager#remove() aksi durumda
 EntityManager#merge(). denenmesidir Aşağıda kodun shorten hali bulunmaktadır.

em.remove(em.contains(entity) ? entity : em.merge(entity));



1 Mayıs 2016 Pazar

Amazon - Linux mongo db kurulumu

/etc/yum.repos.d/mongodb-org-3.2.repo 

lokasyonunda mongodb-org-3.2.repo  dosyası oluşturulur mkdir command

daha sonra  bu dosyanın içine aşağıdaki paket bilgisi girilir  az önce oluşturulan .repo dosyası sadece bu metini  içermelidir 


[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
:w yada :wq commandları ile dosya kayıdı tamamlandıkdan sonra aşağıdaki command ile paketler indirilir 


sudo yum install -y mongodb-org
default olarak data dosyaları /var/lib/mongo
lokasyonunda log dosyaları ise  
/var/log/mongodb
altında tutulur 

Mongo DB yi çalıştırmak için aşağıdaki commandı kullanın


sudo service mongod start
Aşağıdaki command ile mongo db nin instance resetleri sonrası otomatik  ayağa kalkmasını sağlayın


sudo chkconfig mongod on


Aşağıdaki command ile /var/log/mongodb altında mongodb nin çalıştığını kontrol edin 


sudo tail  -f  mongod.log 


Mongodb yi durdurma 


sudo service mongod stop
Mongodb yi Tekrar başlatma 
sudo service mongod restart
Mongodb yi sistemden silmek için 

İlk adım 

mongodb yi durdur 

İkinci adım 

Kurulu tüm mongodb paketlerini sil 
sudo yum erase $(rpm -qa | grep mongodb-org)
Tüm mongodb  data ve log directorylerini temizle 


sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
Mongodb konsoluna baplanarak belli komutları çalıştırmak iserseniz 
/usr/bin altında mongo commandını execute etmeniz yeterli olacaktır

7 Ekim 2014 Salı

Netbeans Glassfish Start problemleri -J-Duser.language=en -J-Duser.country=US locale ayarları

Bir önceki yazıda glassfis port occupied sorunu incelemiştik.Port occupied hatası alınmasada bazen Glassfish server loglara hata sebebi belirtmeden ayağa kalkmamakta ve çalışmamaktadır.Detayları ile bilmeme karşın Bilgisayarın locale settings leri ile ilgili olduğunu düşündüğüm bu hatanın çözümü için aşağıdaki yolun izlenmesi gerekmektedir-Her GF çalışmaması problemi bu sorun ile ilgili değildir bunu da belirteyim-

Öncelikle netbeansın kurulum lokasyonunu buluyoruz.Benimm bilgisayarımda ilgili lokasyon 




C:\Program Files\NetBeans 7.4\ 

 
şeklindedir .Belirtilen lokasyonun içindeki etc dosyasının içine giriyoruz 





C:\Program Files\NetBeans 7.4\etc


Burada yer alan 





netbeans.conf


dosyasını editlemek üzere açıp 





netbeans_default_options="-J-client -J-Xss2m -J-Xms32m


ile başlayan satırı buluyoruz.Bu satırın -genelde sonuna - şu satırları ekliyoruz 

-J-Duser.language=en -J-Duser.country=US

diğer bilgiler gibi boşluk ve sona koymuş isek tırnak ile bitirmeye dikkat etmeliyiz.

Dosyayı kaydederken permission hatası alırsanız dosyayı masaüstünüze kopyalayıp editledikten sonra 





C:\Program Files\NetBeans 7.4\etc

pathindeki dosyanın üzerine kayıt edebilirsiniz.


Netbeans Glassfish problemleri - Port is occupied ve start problemleri

Yukarıdaki hata daha önce kurulmuş herhangi bir uygulamanın 8080 port unu kullanmasından kaynaklanmaktadır.Basit çözüm olarak glassfish domain.xml dosyasından port configurationlarının değiştirilmesi gerekmektedir

sizeAitGlassfishPathi\GF_4.0\domain1\config dosyasının altındaki domain.xml dosyasını bulup editlemek üzere açınız.Benim glassfishim ve oluşturduğum domainin pathi aşağıdaki resimde yer almaktadır.

Kendi GF nizin domain.xml dosyasını bulmak için services>servers>kullanılan GF>Sağtık>properties  opsiyonuna tıklayın. 



domain\config dosyasını açtıktan sonra editlemek üzere açmış olduğunuz domain.xml dosyasında 8080 portunu aratın yada aşağıdaki resimdeki olanxml elementlerini bulun.Benim yaptığım gibi kullanılmasının ihtimal dışı olacağını düşündüğünüz port numaralarını sarı ile boyanmış kısımlara yazın-Diğer kısımlara dokunmayın.Netbeans i ve Glassfish i  kapatıp açın .Farklı bir sorun yoksa port - occupied hatası yok olacaktır 





  

6 Ekim 2014 Pazartesi

Simple XML

Java da xml marshall ve unmarshall işlemleri için kullanılabilecek farklı implementasyonlar mevcut bunlardan en çok tercih edileni artık Java 6 dan sonra standart javada da yer alan JAX-B dir. Toplam boyutun önemli olduğu uygulamalarda toplamda 9 MB ulaşan boyutu ile bir android uygulaması için normal görülebilecek boyut hakkının 50% sini gasp etmektedir bu da bizi farklı bir arayışa yönlendirmektedir.Kullandıkça aslında JAX-B den daha mı iyi diye düşünmeme sebep olan Simple XML böyle durumlarda kapladığı minumum alan ile oldukça uygun bir çözüm gibi gözükmektedir.

Simple xml i aşağıdaki linkten indirebilir örnekleri inceleyebilirsiniz: 

http://simple.sourceforge.net/download.php
Jax-B ve simple xml karşılaştırması için aşağıdaki yazıyı okuyabilirsiniz : 
http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-simple.html

 Haftanın içinde day bilgisini tutmak için yapı simple xml de aşağıdaki gibi kurulabilir
@Root
public class Day {
    
    @Attribute
    private String value;

    public Day(){

    }

    public Day( String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }

    public void setValue(String value)  {
        this.value = value;
    }

  

}


Ve day classını içinde bulunduran Week classı
@Root(name = "week")
public class Week {
    @Attribute(name="value")
    private String value;
    @ElementList(inline = true)
    private List dayList;
    public Week(){

    }
    public Week(String value, List dayList) {
        this.value = value;
        this.dayList = dayList;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public List getDayList() {
        return dayList;
    }

    public void setDayList(List dayList) {
        this.dayList = dayList;
    }
    
    
    
}


Serialize etme işlemi Jax-B deki marshall işlemine karşılık gelir ve aşağıdaki gibi yapılır
public static void main(String[] args) {

        Day day=new Day("Pazartesi");
        List dayList=new ArrayList();
        dayList.add(day);
        Week week =new Week("1",dayList);
        File file= new File("C:\\Abdurrahman\\output.xml");
        Serializer serializer=new Persister();
        serializer.write(week,outputFile);//Yazmak icin
        Week readWeek=serializer.read(Week.class,file);//Okumak icin


}

Sonuç olarak aşağıdaki XML elde edilir




<week val="1"> <day value="Pazartesi"> <day value="Sali"> </day></day></week> xml deki attrribute kısımları bozuk çıkmış olabilir  value olması gerekmektedir aksi değerleri  dikkate almayınız.


org.simpleframework.xml.core.PersistenceException: Constructor not matched for

şeklinde bir hata alırsanız Tüm Pojo larınıza yada entity lerinize boş constructor ekleyiniz .

19 Ocak 2014 Pazar

Blogger yada diğer web sayfalarında kod format kullanımı


@ManagedBean
@ViewScoped
public class NewJSFManagedBean {

    /**
     * Creates a new instance of NewJSFManagedBean
     */
    public NewJSFManagedBean() {
    }
}
Yukarıdaki syntax highlighter oldukça kullanışlı bir araç http://www.craftyfella.com/2010/01/syntax-highlighting-with-blogger-engine.html adresinde author kod format için bloggerlara ilaç mahiyetinde bir proje yapmış.Head kısmına kullanacağınız dil e ait js dosyalarını ve ortak olan css dosyalarınıreferans olarak blogger ana menüsünde şablon kısmında <head> tagları arasına kopyalıyorsunuz <pre> tagları içinde class="brush:java" şeklinde-küçük harf ile tecrübe edildi- kullanıyorsunuz oldukça kullanışlı ve < > gibi genericlerde sıklıkla kullanılan karakterlerin yerine bu karakterlerin encode edilerek yazılması gerekmesi dışında sorunsuz bir araç işinize yarayacaktır