tag:blogger.com,1999:blog-64536918013945668282024-03-14T13:00:55.729+03:00Emre ÖztürkEmre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-6453691801394566828.post-2257645662307191892017-10-22T14:35:00.000+03:002019-01-26T10:54:41.801+03:00LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci<span style="font-size: large;"><br /></span><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br /> Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise Libreoffice adıyla devam etmektedir. Libreoffice Online ise halihazırda olan Libreoffice çatısı altındaki masaüstü uygulamaların tarayıcı üzerinde çalışan halidir. Bununla birlikte Libreoffice yüklemeksizin tüm cihazlar tarayıcı ile Libreoffice uygulamalarını kullanabilecek hale gelmesi hedeflenmiştir. Bundan sonraki adımlarımı Fedora 'da dnf ve Debian 'da apt için ayrı ayrı anlatmaya çalışacağım. </span><br />
<h2>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">LibreOffice çekirdeğini derlemek</span></span></h2>
<br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Derleme sürecinde işletim sisteminden işletim sistemine farklı paketler eksik çıkabiliyor bunları kurmanız gerekebilir. </span>Önce temel bağımlılıkları kuralım:</span><br />
<br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">apt: </span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ sudo apt-get build-dep libreoffice
$ sudo apt-get install git libkrb5-dev libjpeg-turbo8-dev </code></span><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"><code>doxygen graphviz</code>
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"></span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"></span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />dnf:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ sudo dnf builddep libreoffice
$ sudo apt-get install git </code></span><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"><code>doxygen graphviz</code>
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Ben çekirdek ve online'ı ayırmak ve daha düzenli tutmak için her ikisini de libreoffice adlı bir klasörün altında tutuyorum. Bunun için önce libreoffice klasörü oluşturalım ve içerisine girelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ mkdir libreoffice
$ cd libreoffice
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Şimdi ise libreoffice core'u yerelimize çekelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ git clone git://anongit.freedesktop.org/libreoffice/core
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />sonrasında dizine girelim ve derleme süreci öncesi gerekli işlemleri yapalım:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ cd core
$ ./autogen.sh
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Derleme işlemini başlatalım:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ make
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Bu işlem bir hayli uzun sürecek. Sorunsuz bir şekilde bittiğini varsayarsak artık şu komutlarla libreoffice'in ürünlerini test edebiliriz:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ instdir/program/soffice --writer
$ instdir/program/soffice --calc </code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><span style="color: orange;"><a href="https://wiki.documentfoundation.org/Development/BuildingOnLinux"><br />Şu</a></span> sayfada bu işlemleri daha ayrıntılı bir şekilde bulmak mümkün. </span><br />
<h2>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">LibreOffice Online derlemek</span></span></h2>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"> Öncelikle core klasöründen çıkıp bir üst dizin olan libreoffice klasörümüze geri dönelim ve online deposunu yerelimize çekelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ cd ..
$ git clone https://github.com/LibreOffice/online.git
$ cd online
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />LibreOffice iki temel bileşender oluşuyor. loolwsd ve loleaflet<br />Öncelikle Web Services Daemon(wsd)'yi derleyelim.</span><br />
<h3>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">loolwsd'i derlemek</span></span></h3>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Şu bağımlılıkları var: <br />* libpng<br />* poco kütühanesi:<span style="color: orange;"><a href="http://pocoproject.org/index.html"> http://pocoproject.org/index.html</a></span><br />* libcap-progs </span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">* npm<br />Bunlara ek olarak farklı işletim sistemlerinde farklı bağımlılıklar olmayabilir. Onları da elle yüklemek gerekebilir. Şu komutla temel bağımlılıkları kuralım:</span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">apt: </span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ sudo apt-get install libcap-dev libpng12-dev libtool m4 automake nodejs
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"></span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br /></span>dnf:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;">sudo dnf install libcap-devel libpng-devel libtool m4 automake nodejs</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Poco depoda da var ama ben kendim derlemeyi tercih ettim. Depodan kurduğum versiyonda "Segmentation fault" hatası aldığım için. İllaki depodan kuracaksanız:</span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">apt: </span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ deb https://www.collaboraoffice.com/apt-poco/ /
$ sudo apt-get update
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
$ sudo apt-get update
$ sudo apt-get install libpoco-dev
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />dnf: Depodan rahatlıkla kurabilirsiniz.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;">sudo dnf install poco-devel</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Poco'yu yüklemeyi bir türlü halletiğinizi düşünerek işlemlere devam edelim.<br /><br />Sırasıyla şu komutları çalıştıralım:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ libtoolize
$ aclocal
$ automake --add-missing
$ autoreconf
$ autoheader
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Şimdi derleme öncesi ayar kısmına geldik.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ ./configure --enable-silent-rules --with-lokit-path=/home/ozturkemre/libreoffice/core/include --with-lo-path=/home/ozturkemre/libreoffice/core/instdir --enable-debug
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"></span><br />
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Buradaki lokit-path ve lo-path daha önce derlediğimiz core parçasının içeriği. Sizde yerelinizdeki ile değiştirin. </span>Eğer siz de poco 'yu elle derlemişseniz burada bunun konumundan da bahsetmemiz gerekecek. <br /><span style="color: orange;">--with-poco-includes=<POCO_dizini>/include </span>ve <span style="color: orange;">--with-poco-libs=<POCO_dizini>/lib</span> parametrelerini configure komutuna eklemeliyiz. <br /><br />Geldik derleme kısmına:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ make
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Bu aşamada lxml ve polib hatası alabiliyorsunuz. Şu komutlarla pip aracılığıyla onları da kurabilirsiniz:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;">$ sudo pip install polib</code></span></pre>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;">$ sudo pip install lxml </code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><span style="color: orange;"><a href="https://github.com/LibreOffice/online/blob/master/wsd/README">loolwsd</a></span> ile ilgili ayrıntılı anlatımı şu adresten bulabilirsiniz.<br /><br />Geldik leaflet platformuna.</span><br />
<h3>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">loleaflet'i derlemek</span></span></h3>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Öncelikle loleaflet dizinine girelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ cd loleaflet
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />npm ile bağımlılıkları yükleyelim.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ sudo npm install -g jake
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />npm en az 3.x sürümünde olmalı. Kontrol edelim</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ npm -v
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Değilse güncelleyelim.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ npm install -g npm
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />makefile dosyası node diye aradığından sembolik link oluşturalım.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ sudo ln -s /usr/bin/nodejs /usr/bin/node
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Şimdi derlemeye hazırız.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ make
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Derlemeden sonra bir önceki dizine dönelim ve çalıştıralım:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ cd ..
$ ./loolwsd --o:sys_template_path=systemplate --o:lo_template_path=/home/ozturkemre/libreoffice/core/instdir --o:child_root_path=jails --o:storage.filesystem[@allow]=true
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Ve konsolun bize söyledği adrese tarayıcımızla girdiğimizde dosyamızı göreceğiz.<br /><br />leaflet ile ayrıntılı bilgiyi <span style="color: orange;"><a href="https://github.com/LibreOffice/online/blob/master/loleaflet/README">buradan</a></span> bulabilirsiniz.</span><br />
<h2>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">Yamamızı Gerrit'e gönderme</span></span></h2>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Libreoffice web tabanlı olan Gerrit kod işbirlikçisini kullanılıyor. Öncelikle<a href="https://wiki.documentfoundation.org/Development/Developers"> <span style="color: orange;">geliştiriciler sayfasını</span> </a>düzenleyerek kendimizi bu sayfaya eklememiz gerekiyor. Bu</span><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"> sayfadaki lisans kısmını doldurabilmek için <span style="color: orange;">
libreoffice@lists.freedesktop.org</span> adresine geçmiş ve gelecekteki tüm
katkılarımızın MPLv2/LGPLv3+ lisans çifti ile lisanslanabileceğini
belirten bir mail atmamız gerekiyor.<br /><br /><span style="color: orange;">Konu kısmı şu şekilde olmalı:</span><br /><isminiz> license statement<br /><span style="color: orange;"><br />mail içeriği ise şu şekilde olmalı:</span><br /> All of my past & future contributions to LibreOffice may be<br /> licensed under the MPLv2/LGPLv3+ dual license.</span><br /><br />Maili attıktan sonra geliştiricilerin olduğu sayfasına geri dönelim. Burada geliştiriciler soyisim, isim sırası ile tutuluyorlar. Soyisminizin başladığı harf bloğuna şu şekilde ekleme yapabilirsiniz:<br /><br />O<br />-------------------------------------------------------------<br />.<br />.<br />.<br />|-<br />| documentfoundation wikisindeki kullanıcı adınız<br />| Soyisim, İsim<br />| {{nospam|git email adresiniz}}<br />| IRC nickiniz<br />| Individual<br />| [Attığınız lisans mailinin adresi]<br />|-<br />.<br />.<br />.<br /><br />Lisans mailinizi <span style="color: orange;"><a href="https://lists.freedesktop.org/archives/libreoffice/">şu adresten</a></span> bulunduğunuz ayın thread sayfasında bulabilirsiniz.<br />Örneğin: <span style="color: orange;"><a href="https://lists.freedesktop.org/archives/libreoffice/2017-October/078596.html">https://lists.freedesktop.org/archives/libreoffice/2017-October/078596.html</a></span></span><br />
<h3>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">Gerrit ayarlarının yapılması</span></span></h3>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">Önce bir gerrit hesabı açalım.<br /><a href="https://gerrit.libreoffice.org/">Bu adresten</a> Register kısmına tıklayarak birden farklı yolla kayıt olabiliriz. Sonrasında giriş yapalım ve sağ üstten adımıza tıklayarak Settings kısmını açalım. Burada <span style="color: orange;">"SSH Public Keys" </span>kısmını doldurmamız gerekecek.<br /><br />Bunun için öncelikle bir anahtar çifti oluşturalım. Bunu ana dizinizimdeki(core) logerrit uygulaması sayesinde yapacağız.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ ./logerrit setup
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />komutu sonrası "/home/[kullanici_adimiz]/.ssh/id_rsa.pub" dosyasının içeriğini SSH Public Keys sayfasındaki <span style="color: orange;">Add Key</span> butonuna basarak ekleyelim.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ ./logerrit test
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"> <br />komutu sorunsuz bir şekilde çalıştıysa tamam demektir.<br /><br />Libreoffice wiki sayfasında belirtilen şu <span style="color: orange;"><a href="https://wiki.documentfoundation.org/Development/EasyHacks">Easy Hacks</a></span> sayfasından başlamak başlangıç için iyi bir tercih olacaktır.<br /><br />Yamamızı bitirdiğimizi düşünürsek şimdi gelelim bunu gönderme kısmına.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ git checkout -b <yeni_dal_adi>
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />ile yeni bir dal oluşturup o dala geçtik. Şimdi dosyalarımızı ekleyelim.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ git add dosya_adi
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Gelelim commit işlemine. Commit mesajımızda bug numarasını eşleştirmemiz lazım. Bu işlemi commit mesajının başına "tdf#<bug_id>" ekleyerek yapacağız.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ git commit
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Şimdi commit'imizin bir change id'si olmalı.<br /><br />Buradan sonrasında yazımı online ve core olarak ikiye ayırıyorum.</span><br />
<h3>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">Core için</span></span></h3>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">commit-msg dosyamız çalıştırılabilir olmalı.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ chmod u+x ~/libreoffice/core/.git/hooks/commit-msg
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Sonrasında şu komutla change-id miz oluşturulsun.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ curl -Lo ~/libreoffice/core/.git/hooks/commit-msg https://gerrit.libreoffice.org/tools/hooks/commit-msg
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Şimdi de bu commit'imizi gerrit deposuna gönderelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ ./logerrit submit master
</code></span></pre>
<br />
<h3>
<span style="color: #b45f06;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: x-large;">Online için</span></span></h3>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;">commit dosyamızı çalıştırılabilir yapalım.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ chmod u+x ~/libreoffice/online/.git/COMMIT_EDITMSG</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Change-id mizi oluşturalım.</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ curl -Lo ~/libreoffice/online/.git/COMMIT_EDITMSG https://gerrit.libreoffice.org/tools/hooks/commit-msg </code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br />Commit'imizi gerrit deposuna gönderelim:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><code style="color: black; word-wrap: normal;"> $ git push ssh://logerrit/online HEAD:refs/for/master
</code></span></pre>
<span style="font-family: "georgia" , "times new roman" , serif; font-size: large;"><br /><span style="color: orange;"><a href="https://gerrit.libreoffice.org/#/q/status:open">Gerrit sayfasında</a></span> commit'imizi görebiliriz.<br /><br />Böylece LibreOffice, Libreoffice Online derleme ve yama gönderme sürecini öğrendik.<br /><br />İyi çalışmalar.</span><span style="font-size: large;"><br /></span>Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-37058182917638488712017-08-07T09:21:00.001+03:002017-08-07T09:29:04.189+03:00Loglama ve log4j<h2>
<span style="font-family: "courier new" , "courier" , monospace;">
Loglama kavramı nedir?</span></h2>
<span style="font-family: "courier new" , "courier" , monospace;"> Bir sistemin çalışma zamanında durumunu saklama durumuna denir. Sistemde yaşanılan hatalar yada yapılan işleri incelemede kullanılabilir. Logların kullanışlı olması anlaşır olmasına ve loglanma görünümüne bağlıdır. Anlaşılabilir bir log debug, bakım ve geçmişi kontrol etme gibi konularda sistem yöneticisi veya programcıya yardımcı olur. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h2>
<span style="font-family: "courier new" , "courier" , monospace;">
Log4j nedir?</span></h2>
<span style="font-family: "courier new" , "courier" , monospace;">Apache Yazılım Lisansı altında dağıtılan, Java ile yazılmış hızlı, güvenilir ve esnek bir API'dir. Java'da yazılmasına rağmen C, C++, Python, Perl gibi popüler dillerde de kullanılır. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h3>
<span style="font-family: "courier new" , "courier" , monospace;">
Yapılandırma</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">log4j log4j.properties dosyasından kolayca yapılandırılabilir. Bu yapılandırma dosyası şu şekildedir. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code><span style="font-family: "courier new" , "courier" , monospace;"># Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\ProjectHome\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</span></code></pre>
<h3>
</h3>
<span style="font-family: "courier new" , "courier" , monospace;">Buna ek olarak istenildiği durumda <span style="color: orange;">xml</span> formatında da bu ayarlamalar yapılabilir.<br /><br />Hadi buradaki bazı satırları açıklığa kavuşturalım.<br /><br /><span style="color: orange;">rootLogger</span> satırında <span style="color: orange;">INFO</span> log seviyesini belirtir. <span style="color: orange;">file</span> ve <span style="color: orange;">stdout</span> ise log dosyalarının nereye yazdırılacağını belirtir ki örneğimizde bu bir dosya(<span style="color: orange;">file</span>) ve standart çıktı(<span style="color: orange;">stdout</span>).<br /><br /><span style="color: orange;">appender</span> komutu ile logun ekleneceği seçeneği belirtir. <span style="color: orange;">File</span> ekiyle çıktının konumunu belirtiriz. İstersek bir çevresel değişken tanımlayıp burada kullanabiliriz. <span style="color: orange;">ConversionPattern</span> ile dosyamıza çıktımızın hangi düzende basılacağını ayarlıyoruz. <br /><br />Devamında ise benzer komutları standart çıktı için ayarlıyoruz.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Log seviyeleri şu şekildedir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ALL > DEBUG > INFO > WARN > ERROR > FATAL </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br />Burada büyükten küçüğe doğru gittikçe kapsam azalır. Loglama yaparken seviyelere dikkat etmek önemlidir. Kullanıcının görmemesi veya görmesine gerek olmayan logları onlara göstermemek gerekir. Sistemi incelemek durumunda log modu değiştirilebilir ve o mod ve altında kapsadığı modlarda basılan loglar incelenebilir. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><span style="font-family: "courier new" , "courier" , monospace;"><code>import org.apache.log4j.Logger;
public class log4jDeneme {
final static Logger logger = Logger.getLogger(log4jDeneme.class);
public static void main(String[] args) {</code>
<code><code> logger.debug("debug log message");
</code></code><code><code><code> logger.info("info log message");
</code></code></code><code><code><code><code> logger.warn("warn log message");</code></code></code>
logger.error("error log message");
}
}</code></span></pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br /><span style="color: orange;">log4j.properties</span> dosyasındaki ayarlarımızdaki <span style="color: orange;">info</span> seviyesine göre kodumuzu çalıştırdığımızı düşünürsek, <span style="color: orange;">info</span>,<span style="color: orange;">warn</span> ve <span style="color: orange;">error</span> logları basılırken <span style="color: orange;">debug</span> basılmayacak. Eğer <span style="color: orange;">debug</span> seviyesine geçersek bu da basılacak. <span style="color: orange;">Debug</span> moda geçmek için <span style="color: orange;">log4j.properties</span> dosyasındaki <span style="color: orange;">info</span> yu <span style="color: orange;">debug</span> yapmak yeterli olacak.<br /><br />Temel seviyede bahsedeceklerim bu kadar. Yardımcı olması dileğiyle.<br />İyi günler.</span>Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-89500656803266464682017-08-01T10:47:00.001+03:002017-08-01T11:37:08.583+03:00GIT ve TFVC<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">TFS nedir?</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">Microsoft tarafından 2006 yılında yayınlanan planlama, kodlama, test etme vb. yazılım geliştirme yönleriyle ilgilenen bir uygulama yaşam döngüsüdür. TFVC ise TFS'nin sunduğu bir versiyon kontrol sistemidir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Git nedir?</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">Linux çekirdeğini geliştiren topluluğun BitKeeper'ın geliştiricileri ile aralarının bozulması sonucu Linus Torvalds 'ın liderlik ettiği bir topluluk tarafından 2005 yılında geliştirilmeye başlayan bir versiyon kontrol sistemidir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">İki farklı ürününde versiyon kontrol sistemlerin olarak birbirlerine göre eksi ve artıları vardır. Şimdi bunları inceleyelim.</span><br />
<br />
<h4>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Farklılıklar</span></h4>
<div>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Erişilebilirlik</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC çevrimdışı erişmeye izin vermez. İnternet bağlantınızın kesilmesi veya serverın çökmesi durumunda dosyaları kontrol edemez ve değiştiremezsiniz. GIT bunu destekler.</span><br />
<br />
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Ek özellikler</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC otomatik yapılar, testler, analitik ve grafik çizim, manuel test izleme gibi birçok ek özelliğe destek verirken GIT bu özelliklerin hiçbirini destek vermez.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Aynı zamanda TFVC Microsoft'un çoğu ürünü ile ilişki içindedir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Çalışma ortamı</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC dosyaları izlemek ve sürümlemek için tek ve merkezi bir depo kullanır. TFVC de yerel olarak yapılan bir değişiklik genellikle merkezi sunucuda da yapılır ve diğer kullanıcılar bu değişiklikleri alabilir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">GIT ise bir dosyayı yerel olarak izleme, sürümleme gibi hizmetler verir. Kullanıcılar yapılan değişikleri push ve pull ile birbiriyle paylaşır.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC dosya sistemi temel yapısında çalışır.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">GIT değişiklik temel yapısında çalışır.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Maliyet</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">Çeşitli kaynaklardan dallanma TFVC'de çok maliyetli ve yüklü bir işken GIT'de bu çok hızlı ve hafifdir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC lisans ücreti gerektirir ve sadece Microsoft tarafından geliştirilir. GIT ücretsizdir, şuan itibariyle <a href="https://github.com/git/git"><span style="color: blue;">1107</span> </a>kişinin katkısıyla geliştirilmeye devam etmekte olup kaynak kodu açık bir sistemdir.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<h3>
<span style="color: orange; font-family: "courier new" , "courier" , monospace;">Branch yapısı</span></h3>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC'de bir branch geliştirilmesi, kullanıcının dizininin komple bir kopyasını almasına anlamına gelirken GIT'de sadece referans ile farklılıklar tutulur.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">TFVC birbiriyle ilişkili olmayan dalların birleşmesine izin vermezken GIT bu izni verir.</span><br />
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Bu arada TFS, TFVC nin yanında artık Git versiyon kontrol sistemine de destek veriyor. Karar size kalmış.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">İyi günler.</span><br />
<br />Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-90336202002195806632017-07-31T17:29:00.000+03:002017-08-01T11:54:11.670+03:00Angular translate ile çoklu dil desteği olan sayfalar<span style="font-family: "courier new" , "courier" , monospace;">Bir web sayfası oluşturduğunuzu düşünün. Zaman geçti ve hedef kitlenizi değiştirmek istiyorsunuz. Sayfanıza İngilizce desteği eklemek istiyorsunuz. Eskiden bu durumda her sayfanın bir adet kopyasını yapmamız gerekirdi. Bir de İspanyolca, İtalyanca desteğini de eklediğimizi varsayalım. Tüm dillerle beraber toplam sayfa sayımız katlandıkça katlandı. Şuan bile bu işlem çok zor iken sayfaların sayısı ve içeriği arttıkça bu süreç imkansızlaşacak. Dinamik web sayfalarıyla beraber bu soruna birçok çözüm getirildi. Bu çözümlerden biri de Angular-translate. Angular-translate ile birlikte sayfalar arasında anlık olarak dil değiştirebilecek ve yüzlerce sayfadan kurtulacağız. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Bu yazımda bir html dosyasında basitçe bir Angular translate işlemi nasıl uygulanır ondan bahsedeceğim. </span><br />
<br />
<h3>
<span style="font-family: "courier new" , "courier" , monospace;">Gereksinimler </span></h3>
<ul>
<li><span style="color: purple; font-family: "courier new" , "courier" , monospace;">Bower</span></li>
</ul>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Şu şekilde angular-translate i yükleyelim.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">bower install angular-translate</span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: purple;">Html</span> dosyamızın içeriğinin bu şekilde olduğunu düşünelim. </span><br />
<br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><!DOCTYPE html></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><html></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><body></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><div></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><h1> <span style="color:grey">selam</span></h1></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><div></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><br></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><button>English</button></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span><button>Turkce</button></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span> </div></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span></div></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><span style="white-space: pre;"> </span></body></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"></html></span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Şuan bizim iki butonumuz var. Biz istiyoruz ki butonlara basınca sayfamızın içeriği değişsin. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Şimdi bu <span style="color: orange;">html</span> dosyamıza bir kaç düzenleme yapalım.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Öncelikle <span style="color: orange;"><html></span> tagini <span style="color: orange;"><html ng-app="myApp"></span> olarak değiştirelim ve böylece bir angularjs uygulaması haline dönüştürelim.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Şimdi bulunduğumuz dizinde bir <span style="color: purple;">app.js</span> dosyası oluşturalım.<br /><br />içeriği şu şekilde başlasın.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">var app = angular.module("myApp",['pascalprecht.translate']);</span></div>
</pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br />Bu şekilde uygulamamızı tanımladık, parametre olarak <span style="color: purple;">html</span> dosyamızdaki <span style="color: orange;">myApp</span>'ı ve translate modülünü eklemiş olduk.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Hemen peşine şunu ekleyelim.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">app.config(["$translateProvider",function($translateProvider){</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> var en_translations = {</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> selam : "Hello World"</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> }</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> var tr_translations = {</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> selam : "Merhaba Dunya"</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> }</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> $translateProvider.translations('en',en_translations);</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> $translateProvider.translations('tr',tr_translations);</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> $translateProvider.preferredLanguage('tr');</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">}]);</span></div>
</pre>
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Burada iki farklı dil seçeneği ekledik. Bunları iki farklı json dosyası gibi düşünelim. <span style="color: purple;">Html</span> dosyamızdaki <span style="color: orange;">selam</span> yazımız iki farklı dile göre farklı çıktılar sunacak. <span style="color: orange;">preferredLanguage</span> kısmında ise <span style="color: orange;">tr</span> ayarladık. Böylece varsayılan olarak sayfa yüklenince <span style="color: orange;">tr</span> dili ile yüklenecek. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Bir <span style="color: orange;"><head></head> </span>etiketi oluşturalım ve içine az önce <span style="color: purple;">bower</span> ile indirdiğimiz angular kütüphanesini ve oluşturduğumuz <span style="color: purple;">app.js</span> dosyalarını kaynak olarak gösterelim.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><script src="bower_components/angular/angular.js"></script></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><script src="bower_components/angular-translate/angular-translate.js"></script></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><script src="app.js"></script></span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Geldik <span style="color: orange;"><body></span> kısmına. Burada ilk <span style="color: orange;"><div></span> etiketini Controller yapalım.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><div ng-controller="MainController"> </span></div>
</pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Geldik hemen sonrasındaki <span style="color: orange;"><span></span> etiketine. Burada ufacık bir değişiklik yapalım. <span style="color: orange;"><span></span> etiketini <span style="color: orange;"><span translate></span> yapalım ve şu şekilde görünsün. </span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><h1> <span translate style="color:grey">selam</span></h1></span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;">Button</span> kısmında da şöyle bir değişiklik yapalım;</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><button ng-click="changeLanguage('en')">English</button></span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"><button ng-click="changeLanguage('tr')">Turkce</button></span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Birazdan buradaki ng-click ne işe yaradığından bahsedeceğim.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Şimdi geldik Controller kısmına.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Aynı dizinde <span style="color: purple;">MainController.js</span> adında bir dosya oluşturalım ve içerisini şu şekilde dolduralım.</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">app.controller("MainController" ,["$scope","$translate",function($scope,$translate){</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> $scope.changeLanguage = function(lang){</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> $translate.use(lang); </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> }</span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;"> </span></div>
<div style="font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="color: white;">}]);</span></div>
</pre>
<br />
<span style="font-family: "courier new" , "courier" , monospace;">İşte bu da <span style="color: orange;">Controller</span> yapımız. Artık <span style="color: orange;">html</span> dosyamızın içindeki butona basınca <span style="color: orange;">ng-click</span> bu controllerımızı tetikleyecek. Controller ise bu işlem için <span style="color: orange;">config</span> dosyamızdaki ayarları uygulayacak üstelik bunların hepsi dinamik bir sayfada hızlı bir şekilde gerçekleşecek.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Olur da Angular için bir stil rehber ararsanız <a href="https://github.com/johnpapa/angular-styleguide/blob/master/a1/i18n/tr-TR.md"><span style="color: red;">bu adresi</span></a> tavsiye ederim. Güzel ve açıklayıcı olmasının yanında çoklu dil desteği de var. 😏<br /><br />İyi günler.<br /><br /><br /><span style="color: purple;">HelloWorld.html</span> </span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); color: white; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<!DOCTYPE html></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<html ng-app="myApp"></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><head></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><script src="bower_components/angular/angular.js"></script></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><script src="bower_components/angular-translate/angular-translate.js"></script></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><script src="js/app.js"></script></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><script src="js/controllers/MainController.js"></script><span style="white-space: pre;"> </span></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span></head></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><body></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><div ng-controller="MainController"></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><h1> <span translate style="color:grey">selam</span></h1></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><div></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><br></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><button ng-click="changeLanguage('en')">English</button></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span><button ng-click="changeLanguage('tr')">Turkce</button></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span> </div></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span></div></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
<span style="white-space: pre;"> </span></body></div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</html></div>
</pre>
<br />
<br />
<br />
<br />
<span style="color: purple; font-family: "courier new" , "courier" , monospace;">app.js</span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); color: white; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
var app = angular.module("myApp",['pascalprecht.translate']);</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
app.config(["$translateProvider",function($translateProvider){</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
var en_translations = {</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
selam : "Hello World"</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
}</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
var tr_translations = {</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
selam : "Merhaba Dunya"</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
}</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
$translateProvider.translations('en',en_translations);</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
$translateProvider.translations('tr',tr_translations);</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
$translateProvider.preferredLanguage('tr');</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
}]);</div>
</pre>
<br />
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: purple;">MainController.js</span></span><br />
<br />
<pre style="background-color: dimgrey; border: 1px dashed rgb(153, 153, 153); color: white; font-size: 13px; line-height: 14px; overflow: auto; padding: 5px; width: 686px;"><div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
app.controller("MainController" ,["$scope","$translate",function($scope,$translate){</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
$scope.changeLanguage = function(lang){</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
$translate.use(lang); </div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
}</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
</div>
<div style="color: black; font-family: "Times New Roman"; font-size: medium; white-space: normal;">
}]);</div>
</pre>
<br />Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-36725473870120485332017-07-27T09:49:00.003+03:002017-08-01T12:19:16.774+03:00Maven nedir ve nasıl kullanılır ? <h3>
<span style="font-family: "courier new" , "courier" , monospace; font-size: small;">Maven nedir?</span></h3>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><span style="color: purple;"><br /></span></span></span>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><span style="color: purple;">Maven</span> ; proje adımlarını basitleştirmek, etkili bir belgelemelendirme ve bağımlılıkları ortadan kaldırmaya yarayan bir Java geliştirme aracıdır. </span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-size: 13px;"><br /></span></span>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">Kurulumu oldukça kolaydır. Proje kalıpları standart haline getirilmiştir ve böylece tüm IDE'ler destek vermektedir.</span></span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-size: 13px;"><br /></span></span>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-size: 13px;">Projedeki tüm bağımlılıklar POM adı verilen bir xml dosyası altında toplanmıştır. Bu dosyaya yazılan kütüphaneler eğer yerel depomuzda yoksa ilgili Maven depolarından indirilir. </span></span></span><br />
<h2>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: small;">Gereksinimler </span></span></h2>
<div>
<ul>
<li><span style="font-family: "courier new" , "courier" , monospace;">JDK 1.7+</span></li>
</ul>
<h2>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: small;"><br /></span></span></h2>
<h3>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: small;">Kurulum</span></span></h3>
</div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></span></div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">Maven dosyalarını <a href="https://maven.apache.org/download.cgi"><span style="color: orange;">şu adresten</span></a> indirelim.</span></span></div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></span></div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">JAVA_HOME çevresel değişkeninin bu komutu çalıştırarak JDK 'yı gösterdiğine emin olalım.</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="color: orange; font-family: "courier new" , "courier" , monospace; font-size: 13px;"></span></span><br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>echo $JAVA_HOME</code></pre>
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/</code></pre>
</div>
<div>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></span>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">İndirdiğiniz dosya formatına göre aşağıdaki komutlardan birini çalıştırınız. </span></span><br />
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></span>
<span style="font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"></span></span><br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>unzip apache-maven-3.5.0-bin.zip</code></pre>
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>tar xzvf apache-maven-3.5.0-bin.tar.gz</code></pre>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Oluşan apache-maven-3.5.0 dizinindeki bin dosyasını PATH çevresel değişkenine ekleyelim ki maven dizinimiz işletim sistemi tarafından bilinsin.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"></span><br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.9 </code></pre>
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>export M2=$M2_HOME/bin </code></pre>
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>export PATH=$M2:$PATH</code></pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br />sonrasında şu komutla kurulumu onaylayın.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>mvn -v</code></pre>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">çıktımız buna benzer bir şey olacak. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"></span><br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code><span style="font-family: andale mono, lucida console, monaco, fixed, monospace;">Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)</span>
</code><span style="font-family: andale mono, lucida console, monaco, fixed, monospace;">Maven home: /home/emre/apache-maven-3.5.0
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.26.2.el7.x86_64", arch: "amd64", family: "unix"</span></pre>
<h3>
<span style="font-family: "courier new" , "courier" , monospace;"><b><span style="font-family: "courier new" , "courier" , monospace; font-size: small;">Proje oluşturma</span></b><span style="font-family: "courier new" , "courier" , monospace; font-size: small;"><span style="font-weight: normal;"><br />Aşağıdaki komutla örnek bir proje oluşturalım.</span></span></span></h3>
</div>
<div>
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-family: "andale mono", "lucida console", monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><code>mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false</code></pre>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">komutuyla örnek bir proje oluşturabilirsiniz. İlk kurulum olduğu için biraz vakit alacak çünkü Maven bazı temel şeyleri yerel depomuza indirecek.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Az önce <span style="color: orange;">-DartifactId </span>e atadığımız değerle aynı klasör oluştu(my-<span style="font-size: x-small;">app). </span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;"><br /></span></span>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;"></span></span><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; widows: 2;">
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); line-height: 14px; margin: 0px; overflow: auto; padding: 5px; width: 788px;"><span style="font-size: 12px;">my-app/
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mycompany
│ └── app
│ └── App.java
└── test
└── java
└── com
└── mycompany
└── app
└── AppTest.java</span></pre>
</div>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;">my-app/src/main/java</span> dizini projenin kaynak kodunu, <br /><span style="color: orange;">my-app/test/java</span> ise test kodunu içeriyor.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Ve bir de pom.xml dosyamız var. Bu dosya da Proje nesne modeli(Project Object Model) anlamına geliyor. Projenin ayarlarını içeren geniş bir dosya.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"></span><br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); line-height: 14px; overflow: auto; padding: 5px; width: 788px;"><span style="font-size: 12px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project></span></pre>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">Bu ise az önce oluşturduğumuz, Maven'in bize sunduğu basit bir prototip, archetype:generate. </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><project></span> : Maven'in hangi versiyonlarının kullanılacağının belirtildiği kısım. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><modelVersion></span> : POM model versiyonu.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><groupId></span> : Projenin ait olduğu grup veya kuruluş. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><artifactId></span> : Projenin kitaplık eserine (JAR ve WAR dosyasının adı) verilecek ad</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><version></span> : Yapım aşamasındaki projemizin versiyonu.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><packaging></span> : Projenin hangi formatda paketlenmesi gerektiğini belirtir. Varsayılan JAR'dır. WAR paketleme için değeri <span style="color: orange;">war</span> dır.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><url></span>: Projemizi deploy etmek istediğimizde kullanılacak adres.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><dependencies></span> : Projemizde kullanmak istediğimiz tüm bağımlıkların eklendiği kısım. </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;"><scope></span> : Projenin hangi yapılandırmayı kullanacağının belirtildiği kısım.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<h3>
<b><span style="font-family: "courier new" , "courier" , monospace; font-size: small;">Projeyi kurma</span></b><span style="font-family: "courier new" , "courier" , monospace; font-size: small; font-weight: normal;">Projemizi oluşturduk. Şimdi bunu kurulabilir(çalıştırılabilir) bir paket dosyası haline getirelim.</span></h3>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-size: 12px;"></span></span></code><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; margin: 0px; overflow: auto; padding: 5px; width: 788px;">mvn package</pre>
</div>
</div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">Bu komut sonrasında pom.xml de belirtilen dosyalar indiriliyor ve bir jar dosyası olarak paketleniyor. </span></span></code></div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="font-size: 12px;">Çıktı şu şekilde sona eriyor.</span></span></span></code><br />
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="font-size: 12px;"><br /></span></span></span></code>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="font-size: 12px;"></span></span></span></code><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; widows: 2;">
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); line-height: 14px; margin: 0px; overflow: auto; padding: 5px; width: 788px;"><span style="background-color: transparent; font-size: 12px;">[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.272 s [INFO] Finished at: 2017-07-26T14:40:54Z
[INFO] Final Memory: 17M/41M
[INFO] ------------------------------------------------------------------------</span></pre>
</div>
<div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">Şimdi jar paketinin test edebilim.</span></span></code><br />
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"></span></span></code><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div style="-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; margin: 0px; overflow: auto; padding: 5px; width: 788px;">java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App</pre>
</div>
</div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">çıktımız ;</span></span></code></div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"></span></span></code><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div style="-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); font-size: 12px; line-height: 14px; margin: 0px; overflow: auto; padding: 5px; width: 788px;">Hello World!</pre>
</div>
</div>
</div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-size: 12px;"><code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></span></span></code></div>
<div style="font-size: medium;">
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></div>
</div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-size: 12px;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">Yukarıda kullandığımız <span style="color: orange;">mvn package</span> komutundaki <span style="color: orange;">package</span> gibi komutlara lifecycle diyoruz. </span></span></span></code></div>
</div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">
</span></span></code></div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /></span></span></code></div>
<div>
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;">İşte bunlardan bazıları ;</span></span></code><br />
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><br /><span style="color: orange;">clean</span>: Proje derlendikten sonra oluşan target klasörünü siler.</span></span></code><br />
<code><span style="font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="color: orange;">validate</span>: Projede herhangi bir hata olup olmadığını doğrular.</span></span></code></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="color: orange;">compile</span>: Clean in yaptığı işi yapar, hatalı kısımları tarar ve derleme işlemi yapar.</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="color: orange;">test</span>: Derlenmiş kaynak kodunu test eder.</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="color: orange;">package</span>: projeyi test eder ve paketler. </span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: 12px;"><span style="color: orange;">integration-test</span>: gerektiğinde paketi entegrasyon testlerinin yürütülebileceği bir ortama işlemek ve dağıtmaya yarar.</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;">verify</span>: projenin paketlenmesini tamamlar ve bunların doğruluğunu onaylar.</span></span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="color: orange;">install</span>: paketi yerel depoya yükler.</span></span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;"><span style="color: orange;">deploy</span>: projeyi sunucuya deploy etme işini yapar.</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;"><br /></span></span>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;">İşte böylece basit bir Maven projesi oluşturmuş ve bununla ilgili temel düzeyde bir şeyler öğrenmiş olduk.</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;"><br /></span></span>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px;">İyi günler.</span></span></div>
Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-79901084584919621912017-07-20T16:26:00.001+03:002017-08-01T12:10:49.359+03:00Örnek bir Spring Boot Uygulaması<br />
<a href="http://ozturkemry.blogspot.com.tr/2017/07/spring-ve-springboot-nedir.html" target="_blank"><span style="color: orange;">Daha öncesinde</span></a> Spring ve Spring Boot nedir onun hakkında yazmıştım.<br />
Bu yazımda beraber basit bir <span style="color: purple;">Spring Boot</span> uygulaması oluşturturacağız.<br />
<br />
<b>Projemizin dosya yapısı şu şekilde;</b><br />
<br />
<pre class="prettyprint" style="background-color: white; border-radius: 0px; border: 1px solid rgb(136, 136, 136); color: #333333; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow-x: auto; padding: 2px; width: 654.453px; word-break: normal; word-wrap: normal;">proje_adi
└── src
└── main
└── java
└── hello
└──Application.java
└──HelloController.java
└──target
└──pom.xml</pre>
<br />
<br />
Gereksinimler ;<br />
<br />
<ul>
<li>JDK 1.8+</li>
<li>Maven 3.0+</li>
</ul>
<br />
<br />
<br />
<b><span style="color: purple;">Maven </span></b>; proje adımlarını basitleştirmek, etkili bir dökümantasyon oluşturmak ve bağımlılıkları ortadan kaldırmaya yarayan bir araçtır.<br />
<br />
Eğer daha önce Maven kullanmadıysanız <a href="http://ozturkemry.blogspot.com/2017/07/maven-nedir-ve-nasl-kullanlr.html"><span style="color: orange;"><span style="color: orange;">burada</span>n</span></a> bilgi edinebilirsiniz.<br />
<br />
<h3>
Dosya yapısını oluşturma </h3>
<div>
<br /></div>
Projemizin ana dizininde şu komutu çalıştırarak alt dizin oluşturalım.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>mkdir -p src/main/java/hello</code></pre>
<br />
Şimdi projemizin ana dizininde <span style="color: purple;">pom.xml</span> dosyası oluşturmalıyız.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>pom.xml şu şekilde olmalı:</code></pre>
<br />
<pre class="prettyprint highlight" id="code-block-1" style="background-color: white; border-radius: 0px; border: 1px solid rgba(0, 0, 0, 0.15); color: #333333; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow-x: auto; padding: 9.5px; width: 654.453px; word-break: normal; word-wrap: normal;"><code class="language-xml" data-lang="xml" style="background-color: transparent; border-radius: 3px; border: 0px; color: inherit; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 14px; padding: 0px;"><span class="pun" style="color: #666600;"><?</span><span class="pln" style="color: black;">xml version</span><span class="pun" style="color: #666600;">=</span><span class="str" style="color: #008800;">"1.0"</span><span class="pln" style="color: black;"> encoding</span><span class="pun" style="color: #666600;">=</span><span class="str" style="color: #008800;">"UTF-8"</span><span class="pun" style="color: #666600;">?></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><project</span><span class="pln" style="color: black;"> </span><span class="atn" style="color: #660066;">xmlns</span><span class="pun" style="color: #666600;">=</span><span class="atv" style="color: #008800;">"http://maven.apache.org/POM/4.0.0"</span><span class="pln" style="color: black;"> </span><span class="atn" style="color: #660066;">xmlns:xsi</span><span class="pun" style="color: #666600;">=</span><span class="atv" style="color: #008800;">"http://www.w3.org/2001/XMLSchema-instance"</span><span class="pln" style="color: black;">
</span><span class="atn" style="color: #660066;">xsi:schemaLocation</span><span class="pun" style="color: #666600;">=</span><span class="atv" style="color: #008800;">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span><span class="tag" style="color: #000088;">></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><modelVersion></span><span class="pln" style="color: black;">4.0.0</span><span class="tag" style="color: #000088;"></modelVersion></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><artifactId></span><span class="pln" style="color: black;">spring-boot-deneme</span><span class="tag" style="color: #000088;"></artifactId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><version></span><span class="pln" style="color: black;">0.1.0</span><span class="tag" style="color: #000088;"></version>
</span><span class="pln" style="color: black;"> <name>spring-boot-deneme</name>
</span><span class="tag" style="color: #000088;"><parent></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><groupId></span><span class="pln" style="color: black;">org.springframework.boot</span><span class="tag" style="color: #000088;"></groupId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><artifactId></span><span class="pln" style="color: black;">spring-boot-starter-parent</span><span class="tag" style="color: #000088;"></artifactId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><version></span><span class="pln" style="color: black;">1.5.2.RELEASE</span><span class="tag" style="color: #000088;"></version></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></parent></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><dependencies></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><dependency></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><groupId></span><span class="pln" style="color: black;">org.springframework.boot</span><span class="tag" style="color: #000088;"></groupId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><artifactId></span><span class="pln" style="color: black;">spring-boot-starter-web</span><span class="tag" style="color: #000088;"></artifactId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></dependency></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></dependencies></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><properties></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><java.version></span><span class="pln" style="color: black;">1.8</span><span class="tag" style="color: #000088;"></java.version></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></properties></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><build></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><plugins></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><plugin></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><groupId></span><span class="pln" style="color: black;">org.springframework.boot</span><span class="tag" style="color: #000088;"></groupId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"><artifactId></span><span class="pln" style="color: black;">spring-boot-maven-plugin</span><span class="tag" style="color: #000088;"></artifactId></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></plugin></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></plugins></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></build></span><span class="pln" style="color: black;">
</span><span class="tag" style="color: #000088;"></project></span></code></pre>
<br />
Şimdi basit bir web uygulaması oluşturalım.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>src<span style="font-family: inherit;">/main/java/hello/HelloController.java dosyası da şu şekilde olmalı:</span></code></pre>
<br />
<pre class="prettyprint highlight" id="code-block-2" style="background-color: white; border-radius: 0px; border: 1px solid rgba(0, 0, 0, 0.15); color: #333333; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow-x: auto; padding: 9.5px; width: 654.453px; word-break: normal; word-wrap: normal;"><code class="language-java" data-lang="java" style="background-color: transparent; border-radius: 3px; border: 0px; color: inherit; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 14px; padding: 0px;"><span class="kwd" style="color: #000088;">package</span><span class="pln" style="color: black;"> hello</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">web</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">bind</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">annotation</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">RestController</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">web</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">bind</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">annotation</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">RequestMapping</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="lit" style="color: #006666;">@RestController</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">public</span><span class="pln" style="color: black;"> </span><span class="kwd" style="color: #000088;">class</span><span class="pln" style="color: black;"> </span><span class="typ" style="color: #660066;">HelloController</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="lit" style="color: #006666;">@RequestMapping</span><span class="pun" style="color: #666600;">(</span><span class="str" style="color: #008800;">"/"</span><span class="pun" style="color: #666600;">)</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">public</span><span class="pln" style="color: black;"> </span><span class="typ" style="color: #660066;">String</span><span class="pln" style="color: black;"> index</span><span class="pun" style="color: #666600;">()</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">return</span><span class="pln" style="color: black;"> </span><span class="str" style="color: #008800;">"Spring Boot Merhaba Dünya"</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span></code></pre>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="color: purple;">@RestController</span><span style="color: purple;"> </span>bayrağı o sınıfın <span style="color: purple;">Spring MVC</span> tarafından web istekleriyle ilgilenmek için hazır olduğunu belirtir.</span><br />
<span style="font-family: inherit;"><span style="color: purple;">@RequestMapping</span> ise <span style="color: purple;">"/"</span> a gelen istekleri index() methoduna eşler. </span><br />
<span style="font-family: inherit;">Böylece "http://localhost:8080/" sayfasına gelen isteklerde bu servis çalışacak.</span><br />
<span style="font-family: inherit; font-size: small;"><br /></span>
<br />
<span style="font-size: small;">Sırada Application sınıfımız var.</span><br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>src/main/java/hello/Application.java dosyamız da şu şekilde olmalı.</code></pre>
<br />
<pre class="prettyprint highlight" id="code-block-3" style="background-color: white; border-radius: 0px; border: 1px solid rgba(0, 0, 0, 0.15); color: #333333; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; line-height: 20px; margin-bottom: 20px; overflow-x: auto; padding: 9.5px; width: 654.453px; word-break: normal; word-wrap: normal;"><code class="language-java" data-lang="java" style="background-color: transparent; border-radius: 3px; border: 0px; color: inherit; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 14px; padding: 0px;"><span class="kwd" style="color: #000088;">package</span><span class="pln" style="color: black;"> hello</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> java</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">util</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">Arrays</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">boot</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">CommandLineRunner</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">boot</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">SpringApplication</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">boot</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">autoconfigure</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">SpringBootApplication</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">context</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">ApplicationContext</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">import</span><span class="pln" style="color: black;"> org</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">springframework</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">context</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">annotation</span><span class="pun" style="color: #666600;">.</span><span class="typ" style="color: #660066;">Bean</span><span class="pun" style="color: #666600;">;</span><span class="pln" style="color: black;">
</span><span class="lit" style="color: #006666;">@SpringBootApplication</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">public</span><span class="pln" style="color: black;"> </span><span class="kwd" style="color: #000088;">class</span><span class="pln" style="color: black;"> </span><span class="typ" style="color: #660066;">Application</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">public</span><span class="pln" style="color: black;"> </span><span class="kwd" style="color: #000088;">static</span><span class="pln" style="color: black;"> </span><span class="kwd" style="color: #000088;">void</span><span class="pln" style="color: black;"> main</span><span class="pun" style="color: #666600;">(</span><span class="typ" style="color: #660066;">String</span><span class="pun" style="color: #666600;">[]</span><span class="pln" style="color: black;"> args</span><span class="pun" style="color: #666600;">)</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="typ" style="color: #660066;">SpringApplication</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">run</span><span class="pun" style="color: #666600;">(</span><span class="typ" style="color: #660066;">Application</span><span class="pun" style="color: #666600;">.</span><span class="kwd" style="color: #000088;">class</span><span class="pun" style="color: #666600;">,</span><span class="pln" style="color: black;"> args</span><span class="pun" style="color: #666600;">);</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span><span class="pln" style="color: black;">
</span><span class="lit" style="color: #006666;">@Bean</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">public</span><span class="pln" style="color: black;"> </span><span class="typ" style="color: #660066;">CommandLineRunner</span><span class="pln" style="color: black;"> commandLineRunner</span><span class="pun" style="color: #666600;">(</span><span class="typ" style="color: #660066;">ApplicationContext</span><span class="pln" style="color: black;"> ctx</span><span class="pun" style="color: #666600;">)</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">return</span><span class="pln" style="color: black;"> args </span><span class="pun" style="color: #666600;">-></span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="typ" style="color: #660066;">System</span><span class="pun" style="color: #666600;">.</span><span class="kwd" style="color: #000088;">out</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">println</span><span class="pun" style="color: #666600;">(</span><span class="str" style="color: #008800;">"Let's inspect the beans provided by Spring Boot:"</span><span class="pun" style="color: #666600;">);</span><span class="pln" style="color: black;">
</span><span class="typ" style="color: #660066;">String</span><span class="pun" style="color: #666600;">[]</span><span class="pln" style="color: black;"> beanNames </span><span class="pun" style="color: #666600;">=</span><span class="pln" style="color: black;"> ctx</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">getBeanDefinitionNames</span><span class="pun" style="color: #666600;">();</span><span class="pln" style="color: black;">
</span><span class="typ" style="color: #660066;">Arrays</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">sort</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: black;">beanNames</span><span class="pun" style="color: #666600;">);</span><span class="pln" style="color: black;">
</span><span class="kwd" style="color: #000088;">for</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">(</span><span class="typ" style="color: #660066;">String</span><span class="pln" style="color: black;"> beanName </span><span class="pun" style="color: #666600;">:</span><span class="pln" style="color: black;"> beanNames</span><span class="pun" style="color: #666600;">)</span><span class="pln" style="color: black;"> </span><span class="pun" style="color: #666600;">{</span><span class="pln" style="color: black;">
</span><span class="typ" style="color: #660066;">System</span><span class="pun" style="color: #666600;">.</span><span class="kwd" style="color: #000088;">out</span><span class="pun" style="color: #666600;">.</span><span class="pln" style="color: black;">println</span><span class="pun" style="color: #666600;">(</span><span class="pln" style="color: black;">beanName</span><span class="pun" style="color: #666600;">);</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">};</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span><span class="pln" style="color: black;">
</span><span class="pun" style="color: #666600;">}</span></code></pre>
Şimdi geldik uygulamayı çalıştırmaya;<br />
<br />
Öncelikle bir maven paket dosyası oluşturmamış lazım.<br />
Şu komutla target klasörünün altında bir java dosyası oluşturulur ve devamında da bunu çalıştıralım.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>mvn package && java -jar target/spring-boot-deneme-0.1.0.jar</code></pre>
<br />
<br />
Sonrasında http://localhost:8080 adresine girelim. Tebrikler ilk Spring Boot uygulamanızı oluşturdunuz.<br />
<br />
Sonrasında Control+c ile bağlantımızı kesebiliriz.<br />
<br />
Daha fazlası için <a href="https://spring.io/guides/gs/spring-boot/" target="_blank"><span style="color: orange;">bu adrese</span> </a>başvurabilirsiniz.<br />
İyi günler<br />
<br />
<br />Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-49339782565850232172017-07-14T12:40:00.000+03:002017-08-01T12:16:23.553+03:00War dosyasını Apache Tomcat'e deploy etme ve Reverse-Proxy olarak Nginx'i ayarlamak<br />
Merhabalar bugün bir servera <span style="color: purple;">Tomcat</span><span style="color: purple;"> </span>kurulumu yapacağız ve <span style="color: purple;">nginx</span>'i reverse proxy olarak ayarlayacağız.<br />
<br />
Öncelikle <span style="color: purple;">Tomcat</span>'i makineye kurmakla başlıyoruz. Bu yazıda ben <span style="color: purple;">Centos</span> kurulu bir sunucu kullanacağım. Komutlar <span style="color: purple;">gnu/linux</span> dağıtımlarına göre farklılık gösterebilir. Bunlara sizin bakmanız lazım.<br />
Editör olarak da <span style="color: purple;">vim</span> kullanacağım, isterseniz <span style="color: purple;">vim</span> yerine <span style="color: purple;">nano</span> veya başka editörleri yazarak da kullanabilirsiniz.<br />
<br />
<b>Tomcat Kurulumu :</b><br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo yum install tomcat</code></pre>
<br />
komutunu çalıştırarak <span style="color: purple;"> Tomcat </span>kurulumu yapıyoruz.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo vim /usr/share/tomcat/conf/tomcat.conf</code></pre>
<br />
komutu ile tomcat.conf dosyasını açabiliriz.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"</code></pre>
<br />
satırını dosyanın hemen sonuna ekleyelim.<br />
<br />
Buradaki Xmx ve MaxPermSize değerlerini değiştirmek <span style="color: purple;">Tomcat</span>'in ne kadar hafıza kullanacağını belirleyebilirsiniz.<br />
<br />
Şu komutla tomcat servisini başlatabilirsiniz;<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl start tomcat</code></pre>
<br />
<br />
Şu komutla da durumunu sorgulayablirsiniz;<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl status tomcat</code></pre>
<br />
<br />
Şu komutla da sistemin başlangıcında çalışmasını sağlayabilirsiniz.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl enable tomcat</code></pre>
<br />
<br />
Tamam kurulum işlemimiz bitti.<br />
<br />
Şimdi <span style="color: purple;">http://localhost:8080</span> girelim. Adrese tarayıcıdan, <span style="color: purple;">curl</span> veya <span style="color: purple;">links</span> ile ulaşabilirsiniz.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzocMF6G0bCBtpaoEBZBj83NBqaiRbdIAiXQpvfFejzBR2qtanHQyU6n-0pqphvIrWxOFMVBF_ofooRLDrUGbNMuUiaPKDZqms6v_tzhMIH4gjTWrmI-bVrmDuVYuqByy2mCCa74mUcdgU/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="870" data-original-width="1600" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzocMF6G0bCBtpaoEBZBj83NBqaiRbdIAiXQpvfFejzBR2qtanHQyU6n-0pqphvIrWxOFMVBF_ofooRLDrUGbNMuUiaPKDZqms6v_tzhMIH4gjTWrmI-bVrmDuVYuqByy2mCCa74mUcdgU/s320/1.PNG" width="320" /></a></div>
<br />
<br />
Şimdi geldik <span style="color: purple;">war</span> dosyasını deploy etmeye. Burada <span style="color: purple;">war</span> dosyasını nasıl elde ederiz konusuna girmeyeceğim. İnternette bunun hakkına bir sürü yazı var. Yine de <a href="https://drive.google.com/open?id=0BzpUI7pCg5twS0Z3bExaWENRUHM" target="_blank"><span style="color: orange;">burada</span></a> bir tanesini bulabileceksiniz.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo cp hello.war /usr/share/tomcat/webapps/</code></pre>
<br />
komutuyla bu dizine kopyalayalım. <span style="color: purple;">Tomcat</span> bunu otomatik olarak deploy edecek.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl restart</code></pre>
<br />
komutu ile <span style="color: purple;">tomcat</span> servisini yeniden başlatıyoruz.<br />
<br />
Artık <span style="color: purple;">http://localhost:8080/hello</span> adresine <span style="color: purple;">war</span> dosyamız deploy edildi.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnQtogbNthW83-Ul1hQM17pVSYUtw3988qpkEs0_AgY1JNjWlBDwMHojR2Xd0IRN-NEj-YYUH7WJiBegCuk9mWzPbY9-wsdw1Wz3_p3rXqiJ_G_7kL9zfJGv80lvKRLss9INGwTC6wnhTi/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="864" data-original-width="1600" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnQtogbNthW83-Ul1hQM17pVSYUtw3988qpkEs0_AgY1JNjWlBDwMHojR2Xd0IRN-NEj-YYUH7WJiBegCuk9mWzPbY9-wsdw1Wz3_p3rXqiJ_G_7kL9zfJGv80lvKRLss9INGwTC6wnhTi/s320/2.PNG" width="320" /></a></div>
<br />
<b>Nginx ayarları;</b><br />
<br />
<span style="color: purple;">Nginx</span> 'i kurmamız lazım. Öncesinde <span style="color: purple;">epel</span> 'i yüklemek gerek <span style="color: purple;">Centos</span>'da . Başka dağıtımlarda buna gerek olmayabilir.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo yum install epel-release
sudo yum install nginx</code></pre>
<br />
komutları sonrası <span style="color: purple;">nginx</span> kurulmuş olacak.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl start nginx</code></pre>
<br />
komutu ile <span style="color: purple;">nginx</span> servisi başlatılır.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo systemctl enable nginx</code></pre>
<br />
komutu ile sistem başlangıcında açılabilir hale geliyor.<br />
<br />
Artık <span style="color: purple;">http://localhost</span> adresinde bizi kurulmuş <span style="color: purple;">nginx</span> bekliyor.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfD51N4iR8oFytElAZX3XxFEmYUqi9U6GJfFfvmoGK1ehwI8Cvu42KBznoX_gQU_HZSPAijQpKyqlCAL2iSbvZ0TnqknhMz6_RzXDxJ69saFQkuy7oXcNJwpOrZXzkvjaNSqbimkh2N2Nc/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="328" data-original-width="1600" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfD51N4iR8oFytElAZX3XxFEmYUqi9U6GJfFfvmoGK1ehwI8Cvu42KBznoX_gQU_HZSPAijQpKyqlCAL2iSbvZ0TnqknhMz6_RzXDxJ69saFQkuy7oXcNJwpOrZXzkvjaNSqbimkh2N2Nc/s320/3.PNG" width="320" /></a></div>
<br />
<br />
Geldik ayar kısmına;<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo vim /etc/nginx/nginx.conf</code></pre>
<br />
komutu ile düzenlemeye başlayalım.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>location / {
}</code></pre>
<br />
<br />
ile başlayan kısıma gidelim ve şu şekilde değiştirelim;<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>location / {
proxy_pass http://127.0.0.1:8080/hello/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}</code></pre>
<br />
ve dosyayı kaydedelim.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo nginx -t</code></pre>
<br />
ile syntax ın doğruluğunu kontrol edelim.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sudo nginx -s reload</code></pre>
<br />
komutu ile tekrardan yükleyelim.<br />
<br />
Artık <span style="color: purple;">http://localhost</span> adresinde bizi <span style="color: purple;">war</span><span style="color: blue;"> </span>dosyamız bekliyor.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnQtogbNthW83-Ul1hQM17pVSYUtw3988qpkEs0_AgY1JNjWlBDwMHojR2Xd0IRN-NEj-YYUH7WJiBegCuk9mWzPbY9-wsdw1Wz3_p3rXqiJ_G_7kL9zfJGv80lvKRLss9INGwTC6wnhTi/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="864" data-original-width="1600" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnQtogbNthW83-Ul1hQM17pVSYUtw3988qpkEs0_AgY1JNjWlBDwMHojR2Xd0IRN-NEj-YYUH7WJiBegCuk9mWzPbY9-wsdw1Wz3_p3rXqiJ_G_7kL9zfJGv80lvKRLss9INGwTC6wnhTi/s320/2.PNG" width="320" /></a></div>
<br />
<br />
İyi günler 😊<br />
<br />
<br />
<br />Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-24394878531419143452017-07-11T14:00:00.000+03:002017-07-21T08:51:40.729+03:00Spring ve Springboot nedir?<br />
<h2>
<a href="https://spring.io/img/spring-by-pivotal.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="260" data-original-width="800" height="65" src="https://spring.io/img/spring-by-pivotal.png" width="200" /></a>Spring nedir?</h2>
<div>
<br /></div>
<br />
<br />
<br />
<br />
Spring web ve enterprise uygulamalarının geliştirilmesini kolaylaştırmak için kullanılan Java tabanlı bir framework'dur.<br />
<br />
Spring çatısı altında <a href="https://spring.io/projects" target="_blank"><span style="color: orange;">birçok</span></a> proje vardır. Bu projeler geliştirici için konfigürasyon, güvenlik gibi konularda altyapı sağlar. Böylece geliştirici bu kısımlarla uğraşmayarak vakit kazanır.<br />
<br />
<b>Springboot</b> ise Spring çatısındaki projelerden biridir. Springboot basmakalıp kod işlemlerinden kaçınıp yerine konfigürasyon işlemleri en aza indirgenmiş, standalone Spring projeleri oluşturmamıza olanak sağlar.<br />
<br />
<br />
Spring'in problemleri ;<br />
<br />
<div style="text-align: left;">
1-) Farklı sorun ve kombinasyonlara karşı farklı çözümler içereceği için devasa bir framework'tur.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
2-) Birçok farklı imkana olanak sağladığı için çokca kurulum ve konfigurasyon aşaması vardır.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
3-) Spring'in kapasitesi ve esnekliği vardır bu da çokca build ve deploy aşaması demektir. Tam olarak yapmak istediğin şeyi yapmak için çok şey yapmak gerekir. Aslında olasılıklar çok olduğu için bir başlangıç noktası, en iyisinin ne olduğunu söyleyecek bir rehber yoktur. Bu tamamen kullanıcıya kalmıştır.</div>
<div style="text-align: center;">
<br /></div>
<br />
Tipik olarak bir Spring uygulaması oluşturduğumuzda, tomcat veya başka konteynırlar içeren bir web uygulaması, bir war dosyası oluşturulur.<br />
<br />
Springboot ise bize standalone calışabilen, direk çalıştırabildiğin (just run) ve web server'a sahip olan bir Spring projesidir. Deploy etmek için servlet konteynır bulmaya gerek yoktur. Springboot bu ve bunun gibi işleri geliştirici yerine yaparak bu problemlerden geliştiriciyi kurtarmayı hedefler.<br />
<br />
İsterseniz basit bir Spring Boot uygulaması nasıl oluşturulacağını <span style="color: orange;"><a href="http://ozturkemry.blogspot.com.tr/2017/07/ornek-bir-spring-boot.html" target="_blank"><span style="color: orange;">burada</span></a> </span>bulabilirsiniz.<br />
<br />
<br />
İyi günler.Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com1tag:blogger.com,1999:blog-6453691801394566828.post-19097063995967025092017-03-04T10:37:00.000+03:002017-07-21T08:52:26.387+03:00Raw İmaj Dosyası Nasıl Oluşturulur? Bir önceki <a href="http://ozturkemry.blogspot.com.tr/2016/12/kobo-mini-uzerine-debian-kurulumu.html" target="_blank"><span style="color: orange;">yazımda</span></a> bir img uzantılı dosyayı flashlamıştık. Peki bir img dosyası nasıl yapılır? Eğer bir bölümün imajını almak isteseydik şöyle olacaktı:<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>dd if=</code><code><code><code>/dev/sda1 </code><code><code></code><code><code></code></code></code></code>of=</code><code><code><code>cikti.img</code></code>
</code></pre>
<br />
Basit bir şekilde diskin imajı böyle alınır. Ama istediğimiz bu <span style="color: #cc0000;">değil</span>. Biz içerisinde parçalanmış nefes alan bir sistemin imajını almak istiyoruz. Bunun için livecd ile cihazı açıp yine "dd" komutu ile almamız lazım.<br />
<br />
Buradaki işleme <span style="color: #cc0000;">dikkat! </span>Az önce bir bölümü (sda1) demiştik. Ama bizim istediğimiz tüm disk (sda) olduğu için aşağıdaki gibi olması gerek. <br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>dd if=/dev/sda of=yedek.img bs=32M
sync
</code></pre>
<br />
Böylece bir diskin tüm bölümleriyle beraber yedeğini almış olduk. Disk bölümlerini<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>parted yedek.img
</code></pre>
komutunu root ayrıcalıklarıya çalıştırırsanız içindeki disk parçacıklarını göreceksiniz.<br />
<br />
Peki imajımızı nasıl flashlayacağız? Yine livecd ile cihazı açıp diskin bağlanmadığından emin olduktan sonra <br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>dd if=</code><code><code>yedek.img</code><code><code> </code></code>of=</code><code><code>/dev/sda</code> bs=32M
sync</code></pre>
komutunu girmemiz yeterli olacaktır.<br />
<br />
İşte canlı kanlı bir sistemin imajı böyle alınır.<br />
İyi günler. Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0tag:blogger.com,1999:blog-6453691801394566828.post-34896910263639067812016-12-18T14:29:00.000+03:002017-07-21T08:53:02.122+03:00Kobo Touch üzerine Debian Kurulumu Herhangi bir Türkçe kaynak olmamasından dolayı bu yazıyı yazmak zorunluluğunda hissettim kendimi. Kobo touch üzerine Debian kurulumu. Öncellikle söylemeliyim ki cihazınızın başına gelebilecek herşey <span style="color: #cc0000;"><b>sizin sorumuluğunuzdadır.</b></span><br />
<br />
Aşağıdaki adımlar Kobo Touch N905C modeli için geçerlidir. Muhtemelen diğer cihazlarda çalışmayacaktır.<br />
<br />
Öncelikle <a href="https://www.dropbox.com/sh/snsdg1c5cg21kws/3LfelXgbGe" target="_blank"><span style="color: orange;">buradan</span> </a>imaj dosyalarını indireceksiniz. <br />
<br />
Kurulum:<br />
<br />
1) 8GB ya da daha fazla bir microSD kart.<br />
2) İmaj dosyaları 3 parçadan oluşuyor. Bunları çıkaralım yaklaşık 7gb boyutunda bir imaj çıkacak. Bunu Windows'ta Win32DiskImager veya Unix'te dd ile flashlayacaksınız. Ben Linux'ta dd ile yapacağım bu işi. Benim sistemimde microSD kart mmcblk0 . lsblk ile sizde kendi kartınızı bulun ve <span style="color: #cc0000;"><b>bundan emin olun</b></span>. Bu işi dd ile yapacağız, geri döndürülemez hatalar verebilir.<br />
<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>dd if=/img/dosyanizin/dizini/2013-08-17_kobo_debian.img of=/dev/mmcblk0 bs=32M
sync
</code></pre>
<br />
3)Cihazın arka kapağını açarak orjinal microSD kartı yerine bunu takalım. Bunun için <a href="https://www.youtube.com/watch?v=2SmYg4q9ai4" target="_blank"><span style="color: orange;">burada</span></a> bir video var. Biraz kaba kuvvetle açılabiliyor. Herşey bitti şimdi cihaz açılabilir.<br />
<br />
Burada bazı cihazlarlar açılmıyormuş. Yeşil LED ve boş bir ekran ile karşı karşıya kalınıyormuş. Yapmamız gereken orjinal microSD kartı takıp imaj dosyası haline getirip bunu dd ile az önce Debian kurduğumuz microSD karta flashlamak. <b><span style="color: #cc0000;">Buradaki adımlara dikkat.</span></b><br />
<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>#orjinal microSD bilgisayara takalım.
sudo dd if=/dev/mmcblk0 bs=512 skip=1024 count=1 of=/imaj/dosyasini/cikarmak/istediğimiz/yol/orjinal.img
#simdi orjinal microSD'yi çıkarıp, az önce Debian kurulumu yaptığımızı takalım bilgisayara.
sudo dd if=/orjinal/imaji/cikardigimiz/dizin/orjinal.img bs=512 seek=1024 count=1 of=/dev/mmcblk0
sync
</code></pre>
<br />
Şimdi cihaz çalışmalı. <br />
<br />
Kobo touch üzerinde lsblk sonuçları.<br />
mount_noktasi<br />
mmcblk0<br />
|-mmcblk0p1 /<br />
|-mmcblk0p2 /mnt/onboard<br />
|-mmcblk0p3 swap<br />
<br />
ssh için:<br />
<br />
kullanıcı adı: marek<br />
parola: abc123<br />
<br />
Eğer devamlı yanan LED sinirinizi bozarsa aşağıdaki komutu root olarak çalıştırınız.<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>echo "cur 0" > /sys/devices/platform/pmic_light.1/lit
</code></pre>
<br />
<br />
Arkaplan resimleri png formatında ve burda değiştirmek isterseniz<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>/home/marek/.config/awesome/themes/marek/
</code></pre>
<br />
<br />
Oturum açma/kapama/uyku resimleri raw formatında root izinleriyle<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>/host/root/images/
</code></pre>
<br />
<br />
<br />
resimlerinizi raw formatına ffmpeg yardımıyla şu şekilde çevirebilirsiniz:<br />
<br />
<pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: "andale mono" , "lucida console" , "monaco" , "fixed" , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>ffmpeg -i resminiz -f rawvideo -pix_fmt rgb565 -s 800x600 cikti.raw
</code></pre>
<br />
Daha fazla bilgi için projenin sahibi <a href="https://sites.google.com/site/gibekm/hardware/kobo/kobo-as-tablet" target="_blank"><span style="color: orange;">Marek Gibek'in sayfası </span></a><br />
<br />
Birkaç fotoğraf:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFkvFnvqUBCIN1UVx7gZtU6mummjc5wdI-jROEFlHPKGgSaCWUJFTtu5rw4bs2QSZpsH-ATobIjLa9Te9t_V5H0V-MvrvpL6uCiUixmp4NBFQC5xSnEK2JmdqGtZvGwsyYY3AZLI59VW2U/s1600/DSC_0064.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFkvFnvqUBCIN1UVx7gZtU6mummjc5wdI-jROEFlHPKGgSaCWUJFTtu5rw4bs2QSZpsH-ATobIjLa9Te9t_V5H0V-MvrvpL6uCiUixmp4NBFQC5xSnEK2JmdqGtZvGwsyYY3AZLI59VW2U/s320/DSC_0064.JPG" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOEa70L0ohDw3yD6PDoDLGrKAAY0QL98WVfOj2npumCdoeOMsqHfgyO-upDz2rojQjR0twarMU_QqzCjS2VNlWumvydXN1FRONikGY5Md96h6NKQQyqZcf8u6CauWZ3YzRdHr2LqL9yMNS/s1600/DSC_0065.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOEa70L0ohDw3yD6PDoDLGrKAAY0QL98WVfOj2npumCdoeOMsqHfgyO-upDz2rojQjR0twarMU_QqzCjS2VNlWumvydXN1FRONikGY5Md96h6NKQQyqZcf8u6CauWZ3YzRdHr2LqL9yMNS/s320/DSC_0065.JPG" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdubGg_mRycWwIK5lcPMjIW5LA19O_gF_9BBE7lFMsA87wIZlR-D4-qZqL6KNVvJY6X9PrXRBZod-ZNi7Jc_YM_pJnt4k3MLH4fV-nliz-4OKRhlemuU1QDoBs67U88Wl7_pfZ0Ryliv66/s1600/DSC_0066.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdubGg_mRycWwIK5lcPMjIW5LA19O_gF_9BBE7lFMsA87wIZlR-D4-qZqL6KNVvJY6X9PrXRBZod-ZNi7Jc_YM_pJnt4k3MLH4fV-nliz-4OKRhlemuU1QDoBs67U88Wl7_pfZ0Ryliv66/s320/DSC_0066.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqDmfGj7Hcd6GQpYZzeDmVLfdBsER_yJCDYkWeEatIQyVQ2uErpnKGA8T-osLMlOPuB8MI_lVl0JCK15OZf3wHq73NJFngAV0CfKYxgaBz2TrDOrDIGD0V0DAn6F6PL3VHqG79YROrQ9N8/s1600/DSC_0067.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqDmfGj7Hcd6GQpYZzeDmVLfdBsER_yJCDYkWeEatIQyVQ2uErpnKGA8T-osLMlOPuB8MI_lVl0JCK15OZf3wHq73NJFngAV0CfKYxgaBz2TrDOrDIGD0V0DAn6F6PL3VHqG79YROrQ9N8/s320/DSC_0067.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyFTL2Fprd3QYfLTP2WKlKsJ5wbj2NTrWfLXoFKxEm0PVxsEKhmLJ2ZsYEE3b5r9LrHiljNvp2x1Opow0VTjxBlOprMXU9hqiQGZeKaxTJwoQIf8jNU6od6Y4eAes__5oF1Ot85o7H8kl-/s1600/DSC_0068.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyFTL2Fprd3QYfLTP2WKlKsJ5wbj2NTrWfLXoFKxEm0PVxsEKhmLJ2ZsYEE3b5r9LrHiljNvp2x1Opow0VTjxBlOprMXU9hqiQGZeKaxTJwoQIf8jNU6od6Y4eAes__5oF1Ot85o7H8kl-/s320/DSC_0068.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc_4d_F7xc1Q7ulKBJi3pZkCqDxm21sjghjDpeqnFLIoJmHJuroUGZhri_krkdl9lm299ad5YtOT3rDBwYvHbIOn_iuJvyS1BSPzg98TyN1Kav8IN4hgylfLq-jyIZZ4iBxUHonY6cak_m/s1600/DSC_0069.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc_4d_F7xc1Q7ulKBJi3pZkCqDxm21sjghjDpeqnFLIoJmHJuroUGZhri_krkdl9lm299ad5YtOT3rDBwYvHbIOn_iuJvyS1BSPzg98TyN1Kav8IN4hgylfLq-jyIZZ4iBxUHonY6cak_m/s320/DSC_0069.JPG" width="320" /></a></div>
<br />
Bol debian'lı günler. :)Emre Öztürkhttp://www.blogger.com/profile/00941627369226884326noreply@blogger.com0