tag:blogger.com,1999:blog-67586699295032823552024-03-13T08:28:06.342+03:00A BLOG BY FATIH BATUKPaylasmak icin, kucuk buyuk her turlu sey icin bu blogFatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-6758669929503282355.post-89312232085170090232009-09-07T22:53:00.007+03:002009-09-15T20:33:57.092+03:00JAC (Java Asn1 Compiler) Version 3.0I have released the version 3.0 of my open source project <a href="http://fatihbatuk.blogspot.com/2008/03/java-asn1-compiler.html">JAC (Java Asn1 Compiler</a><a href="http://http//fatihbatuk.blogspot.com/2008/03/java-asn1-compiler.html">)</a> It is available for download now.<br />In JAC 3.0, direct call of 'encode(..) decode(..)' methods of 'asn.1 Choice' objects are implemented.<br />And also with version 3.0, user can encode/decode an asn.1 Choice object without knowledge of which element is chosen inside.<br />Moreover, bugs that users specified via e-mail or blog comments are all fixed.<br />Version 3.0 is more compatible and error free.Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com0tag:blogger.com,1999:blog-6758669929503282355.post-59756143835404348072009-03-25T11:30:00.017+02:002009-11-28T00:25:18.672+02:00JAC is 1 year old<span style=";font-family:arial;font-size:100%;" >Version 2.0 of my open source project </span><span style=";font-family:georgia;font-size:100%;" ><a href="http://fatihbatuk.blogspot.com/2008/03/java-asn1-compiler.html"><span style="font-weight: bold;">JAC (Java Asn.1 Compiler)</span> </a></span><span style=";font-family:arial;font-size:100%;" >reached to 1,300+ download rate since March, 2008 till today (March, 2009). And now appears first when "java asn1 compiler" is googled. I will upload the new release to the </span><span style=";font-family:georgia;font-size:100%;" ><a href="http://sourceforge.net/projects/jac-asn1/">project page</a></span><span style=";font-family:arial;font-size:100%;" > at sourceforge.net soon. In the next release an important bug about asn.1 Choice element will be fixed and the overall maintaining of project will be done due to the feedback of users.</span><span style=";font-family:georgia;font-size:100%;" ><br /><br /></span><span style=";font-family:arial;font-size:100%;" >It is really nice to see that an open source project of you is really useful for somebody around the world. Bacause now, JAC is used worldwide..</span><span style=";font-family:georgia;font-size:100%;" ><br /></span><span style=";font-family:arial;font-size:100%;" >Before developing JAC I was really disturbed about not providing some work for any open source project. Because I usually take advantage of using open source projects but had developed nothing. This feeling was really disturbing before JAC. But now I am really glad to hear good comments via e-mail or blog posts from users of an open source project of mine.<br /><br />And some companies from Pakistan, India, Italy and Vietnamese also mentioned that they are using the project in their software infastructure environment. Since these companies are not formal references for the project, I cannot give the names here but I can say that that was really nice and surprising for me. I am still trying to answer the questios of users via e-mail and blog comments as much as I can in my available times.<br /></span>Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com0tag:blogger.com,1999:blog-6758669929503282355.post-82905385690667775112008-10-16T12:19:00.026+03:002014-02-05T02:39:49.994+02:00Oto Galeri Otomasyonu (Programı)(Satın almak için: <a href="http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html" target="_blank">http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html</a> )<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnn2w8l_RTO2DtvbR0YzWSEKiSLBCl7xCTAbl0FqXoDmg9KPG2LPmP3nTNP5E5zjcJYqADcPDtPPPdwwHG2jbiBAn4aOW2gbvY36rnu5WT_y6UIjG1-2smo44W39yqfpRaAytPfifOkmA/s1600/otoGaleriProgram.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnn2w8l_RTO2DtvbR0YzWSEKiSLBCl7xCTAbl0FqXoDmg9KPG2LPmP3nTNP5E5zjcJYqADcPDtPPPdwwHG2jbiBAn4aOW2gbvY36rnu5WT_y6UIjG1-2smo44W39yqfpRaAytPfifOkmA/s400/otoGaleriProgram.jpg" id="BLOGGER_PHOTO_ID_5405406062598105650" style="cursor: pointer; height: 306px; margin: 0px auto; text-align: center; width: 400px;" /></a><br />
<br />
Oto Galeri Otomasyonunu (programını) tamamlamış bulunmaktayım.<br />
Geliştirdiğim bu programı satın almak ve diğer özelliklerini öğrenmek için Galera Yazılım'ın sayfasını ziyaret edebilirsiniz:<br />
<a href="http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html" target="_blank">http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html</a><br />
<br />
Bu blog yazım bu programım hakkında ön bilgi vermek amaçlı.<br />
<br />
<span style="color: red; font-size: 130%; font-weight: bold;">Neden böyle bir yazılım geliştirdim ?</span><br />
<br />
Bu yazılımı babamın iş ortağının ricası üzerine geliştirdim. Babam 1996 yılından beri ortaklarıyla beraber oto alım-satım işiyle meşgul (<a href="http://www.batuklar.com/">www.batuklar.com</a>)<br />
Benzer bir yazılımı bir yazılım firmasından talep ettiler ve ciddi anlamda yüksek bir ücret teklifi aldılar yazılım için.<br />
Aman hiç bulaşmayın dedim ben daha iyisini yapayım size hem de ücretsiz :)<br />
Onlar için böyle bir yazılım geliştirerek çorbada bir tuzum olsun istedim.<br />
<br />
Piyasada daha önceden oto galeriler için geliştirilmiş yazılımlar var ama bu yazılımlar, karmaşık muhasebe programlarından farklı değil. Bu yüzden program kullanmayı çoğunlukla bilmeyen ve muhasebe terimlerine yabancı olan oto galeri esnafı karmaşık programları kullanamıyor.<br />
<br />
Bu yazılım, oto galerinin alış satışını yaptığı araçlara yönelik ödeme, masraf, vekalet bilgisi ve satış devri bilgisi gibi sürecin her aşamasını programın sunduğu basit ve anlaşılır web arayüzüyle kolayca takip edebilmesini sağlıyor ve maliye ve denetlenme korkusunu ortadan kaldırıyor. Nasıl mı? Çünkü tüm kayıtları sadece USB bellekte depolayabilme özelliğine sahip.<br />
<br />
<span style="color: red; font-size: 130%; font-weight: bold;">Programdan Örnek Bir Araç Sayfası:</span><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieKCamLtIkCRm-eDTMUhcjDLgkIHAcpbszmw3GvNwfRXIRM9eW0pg5J4ysuQPW-Kr_yd-b83gLbJyjbh6YCCdQDEl1SmiYZmkc3nwdCOqajW49utqGq_0R4PK3eSCcLp8Iia6WM9pBulw/s1600/otoGaleriProgramArac.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieKCamLtIkCRm-eDTMUhcjDLgkIHAcpbszmw3GvNwfRXIRM9eW0pg5J4ysuQPW-Kr_yd-b83gLbJyjbh6YCCdQDEl1SmiYZmkc3nwdCOqajW49utqGq_0R4PK3eSCcLp8Iia6WM9pBulw/s400/otoGaleriProgramArac.jpg" id="BLOGGER_PHOTO_ID_5405432308935930370" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 319px;" /></a><br />
<span style="color: red; font-weight: bold;"><span style="color: red; font-size: 130%;"><u style="color: #3333ff;">Benzeri Yok</u><span style="color: #3333ff;">:</span> Temel özellikleri neler</span><span style="color: red; font-size: 130%;"> ?</span></span><br />
<span style="color: red;"><span style="color: black;"><span style="font-weight: bold;">- <span style="color: #cc0000;">Basit web arayüzü ile</span></span> çok kolay kullanım sağlayarak iş takibini hızlandırması ve şık ve sade tasarımı. Kullanıcının internetten haber okuyacak kadar bilgisayar kullanmayı bilmesi yeterli. Sadece 15 dakikasını ayırarak tüm detaylarını öğrenebilir ve programı kolaylıkla kullanabilir.<br /></span></span><span style="color: red;"><span style="color: black;"><span style="color: #cc0000; font-weight: bold;">- USB bellekten çalışıyor ve böylelikle tüm özel verilerini kullanıcı cebinde taşıyabiliyor. </span></span></span><span style="color: red;"><span style="color: black;">Maliye ve denetlenme korkusu olmadan gönül rahatlığıyla kullanılabiliyor, çünkü program tüm veritabanı kayıtlarını USB bellekte saklıyor. İster evden ister işyerinden kullanıcı gittiği heryerde programını kullanabiliyor. Yani "Tak ve Çalıştır" özelliği!</span></span><span style="color: red;"><span style="color: black;"><br />Tabi bu kullanıcının isteğine bağlı. Kullanıcı isterse kurulum sırasında "<span style="font-style: italic;">Kayıtlarımı bilgisayarımda depola</span>" seçeneğini seçerek USB bellek bağımlılığı olmadan da programı kullanabiliyor.<br /></span></span><span style="color: red; font-weight: bold;"><span style="color: black;">- <span style="color: #cc0000;">Gelişmiş araç raporlama ile</span></span></span><br />
<ul>
<li><span style="color: red;"><span style="color: black;"> <span style="color: #cc6600;">Herhangi bir araç modelinden kaç adet sattım ? </span></span></span></li>
<li><span style="color: red;"><span style="color: black;"><span style="color: #cc6600;"> Bu araç modelini ortalama ne kadar sürede sattım ?</span></span></span></li>
<li><span style="color: red;"><span style="color: black;"><span style="color: #cc6600;"> Bu modelin bana olan toplam karı ve birim karı nedir ?</span></span></span></li>
<li><span style="color: red;"><span style="color: black;"><span style="color: #cc6600;"> Ve bu modeli daha çok hangi aylarda sattım ?</span></span></span></li>
<li><span style="color: red;"><span style="color: black;"><span style="color: #cc6600;"> Ay satış dağılımım toplamda ne ? </span></span></span></li>
</ul>
<span style="color: red;"><span style="color: black;">bilgisini galericinin karşısına rapor olarak sunması ve böylelikle galerinin ileriye yönelik iş planına yön vermesine yardımcı olması<br /><br /><span style="color: #cc0000;">-</span><span style="color: #cc0000; font-weight: bold;"> Özel sözleşme ve senet modülü ile</span></span></span><span style="color: red;"><span style="color: black;">Alış-Satış sözleşmesinin ve satılan araca ait tüm senetlerin A4 boyutundaki özel senet kağıdı ile tüm yazıcılara uyumlu bir şekilde kolayca yazdırılabilmesi (Bir A4 kğıdına 2 senet yazdırır)<br /></span></span><span style="color: red;"><span style="color: black;"><span style="color: #cc0000; font-weight: bold;">- Akıllı yedekleme ile</span> tüm veritabanının yedeğini alıp <span style="font-weight: bold;">yedek dosyasını kullanıcıya mail olarak göndermesi</span> ve böylelikle bilgi güvenliğini en üst düzeyde sağlaması.<br />Kullanıcının bilgisayarı bozulsa da ya da USB belleğini kaybetse de mail adresine tıklaması yeterli.<br />(Mail adresinden yedek dosyası indirildikten sonra, tüm kayıtları geri yüklemek kullanıcının sadece 30 saniyesini alıyor)<br /></span></span><span style="color: #cc0000; font-weight: bold;">- Ve son olarak k</span><span style="color: #cc0000; font-weight: bold;">ullandığı web teknolojisinin desteğiyle</span> bir programdan öte <span style="font-weight: bold;">kurumsal bir çözüm paketi</span> şeklinde kullanılabiliyor. Sadece bir bilgisayara kuruluyor (ana bilgisayar) ve yerel ağdaki diğer bilgisayarlarda kuruluma gerek kalmadan kullanılabiliyor.<br />
(Diğer bilgisayarlar ana bilgisayara kurulan Apache Tomcat sunucusuna modem üzerinden bağlanarak hizmet alıyorlar)<br />
<br />
<span style="color: red; font-weight: bold;"><span style="font-size: 130%;">Ek Modüller:</span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><span style="color: black;"><span style="color: #000099;"><br />- Şirket Masraf Takip Modülü :</span></span></span></span><span style="color: red;"><span style="font-size: 100%;"><span style="color: black;"><br /></span></span></span><span style="color: red; font-size: 100%;"><span style="color: black;"><br /></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;">Oto galerinin şirket masraflarını belli masraf tipleri tanımlayarak başlıklar altında takip edebildiği ve raporlayabildiği modüldür.<br /></span></span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><span style="color: black;"><span style="color: #000099;">- Ek Ödeme Takip Modülü</span></span><span style="color: #000099;"> :</span></span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><br /></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;">Oto galerinin araç dışı farklı şahıs veya kurumlara </span></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;">alacak ve borç takibini belli </span></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;">iş tanımları ekleyerek takip edebildiği modüldür.</span></span></span><br />
<span style="font-size: 130%;"><br /></span><span style="font-size: 12px;"><span style="color: red; font-size: 130%; font-weight: bold; text-decoration: underline;">Teknik Bilgi:</span><span style="color: red;"><span style="font-size: 100%;"><br /></span></span><span style="color: red; font-size: 100%;"><br /></span></span><span style="color: red; font-size: 100%;"><span style="color: #000099;">- <u>Dil</u>: <span style="color: black;">java, jsp</span></span></span> (20.000 satırdan fazla JAVA/JSP kodu, 67 ekran görüntüsü (JSP dosyası))<br />
<span style="color: red; font-size: 100%;"><span style="color: #000099;">- <u>Uygulama Sunucusu</u>: <span style="color: black;">Tomcat 6.0</span><br />- <u>Veritabanı</u>: <span style="color: black;">PostgreSQL 8.3</span></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: #000099;"> (27 ilişkisel veritabanı tablosu)<br />- <u>Geliştirilme Ortamı</u>: <span style="color: black;">Eclipse WTP (web tool platform for J2EE)</span></span></span></span><span style="color: red; font-size: 100%;"><span style="color: #000099;">- <u>Kullanılan uygulama çatıları (framework)</u>: <span style="color: black;">Struts 2, Hibernate 3<br /></span></span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><span style="color: black;"><span style="color: #000099;">- Kurulum nasıl gerçekleşiyor</span></span><span style="color: #000099;"> ? :</span></span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><br /></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;"><br />Kurulum için bir batch file çalıştırılıyor. Bu batch file sırasıyla uygulama sunucusu olan Tomcat 6 ve PostgreSQL kurulum işlemlerini tamamlayip OTO veritabanını, tabloları ve relation ları oluşturuyor. <span style="color: #990000; font-weight: bold;">Galeri.war</span> dosyasını da Tomcat'in <span style="font-weight: bold;">webapps </span>klasörünün altına kopyaliyor. Ve programın kısayolunu da kullanıcının masaüstüne kopyaladıktan sonra kurulumu tamamlanmış oluyor.<br /><br />Veritabanını oluşturan PostgreSQL komutları sırasıyla şöyle:<br /><br />OTO veritabanını oluşturan komut :<br /><br /><span style="font-style: italic;">createdb -W -U postgres OTO</span><br /><br />Tabloları ve relation ları oluşturan komut :<br /><br /><span style="font-style: italic;">psql -W -U postgres -d OTO -f db.sql</span><br /></span></span></span><span style="color: red; font-weight: bold;"><span style="font-size: 100%;"><span style="color: black;"><span style="color: #000099;">- Masaüstündeki programın kısa yolu uygulamayı nasıl başlatıyor</span></span><span style="color: #000099;"> ? :<br /></span></span></span><span style="font-size: 100%;"><span style="color: red;"><span style="color: black;"><span style="color: black;">Program aslında bir</span> web uygulaması ve calışması için öncelikle uygulama sunucusu olan Tomcat'in başlatılması gerekiyor. Masaüstündeki programın kısayolu yine bir batch file ın kısayolu. Kullanıcı masaüstündeki program icon'una tıkladığında bir batch file çalıştırılıyor. Bu batch file öncelikle Tomcat i çalıştırıyor ve daha sonra Internet Explorer'ı şu url ile açıyor :<span style="font-style: italic;"> http://localhost:8080/Galeri</span><br /><br />Bu batch file'da çalışan komutlar şöyle :<br /><br /><span style="font-style: italic;">start tomcat6</span><br /><br /><span style="font-style: italic;">start iexplore "http://localhost:8080/OtoGaleri"</span><br /><br />Böylelikle kullanıcı masaüstündeki icon a tıklayarak Tomcat i çalıştırmış oluyor ve daha sonra bir Internet Explorer penceresini karşısında buluyor. Internet Explorer da verilen URL ile açılan pencere, programın giriş ekranı.</span></span></span> Yani şu:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWBwDCXOPbv49cmHavIx5e3_hyWQn-uMRL8mIQ9TYsSXov-lC9Xe95rzo2sroTUk2_jgdTFgH5jzldTXEy8SN6bWW5bV4aN8AmK2eeG8Jn5oqIN8lyK06I44wkJtJT5SHEqiARtv-k5IY/s1600/otoGaleriProgramGiris.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWBwDCXOPbv49cmHavIx5e3_hyWQn-uMRL8mIQ9TYsSXov-lC9Xe95rzo2sroTUk2_jgdTFgH5jzldTXEy8SN6bWW5bV4aN8AmK2eeG8Jn5oqIN8lyK06I44wkJtJT5SHEqiARtv-k5IY/s400/otoGaleriProgramGiris.jpg" id="BLOGGER_PHOTO_ID_5405406133330724322" style="cursor: pointer; display: block; height: 306px; margin: 0px auto; text-align: center; width: 400px;" /></a><br />
<br />
Geliştirdiğim bu programı satın almak ve diğer özelliklerini öğrenmek için Galera Yazılım'ın sayfasını ziyaret edebilirsiniz:<br />
<a href="http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html" target="_blank">http://www.galera.com.tr/oto-galeri-programi-otomasyonu.html</a><br />
.Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com1tag:blogger.com,1999:blog-6758669929503282355.post-10246465577488841302008-06-12T01:34:00.012+03:002008-12-11T06:48:08.932+02:00Proje Yönetim Sistemi Otomasyonu2007-2008 bahar doneminde Yazılım Mühendisliği Laboratuvari dersi kapsaminda gelistirdigim bu proje hakkindaki temel bilgileri bu yazida vermeye calisacagim.<br /><br />Projenin<br />- SRS (System Requierement Specification)<br />- SDD (Software Design Descriptiom) belgeleri ve<br />- ER diagrami ile<br />- Veritabani scriptini incelemek isterseniz bana e-mail yoluyla ulaşabilirsiniz. (fatih_batuk [at] yahoo.com)<br /><br /><span style="font-style: italic;"><span style="font-weight: bold;">Gelistirilme Ortami :</span></span> Eclipse WTP (web tool platform for JEE)<span style="" lang="EN-US"><br /></span><span style="font-style: italic; font-weight: bold;">Dil</span><span style="font-weight: bold;"> :</span> <span style="" lang="EN-US">jsp, java<br /><span style="font-style: italic; font-weight: bold;">kütüphaneler</span><span style="font-weight: bold;"> </span></span><span style="" lang="EN-US"><span style="font-weight: bold;"> :</span> Struts2, Hibernate<br /></span><span style="font-style: italic; font-weight: bold;">Veritabani</span><span style="font-weight: bold;"> :</span> <span style="" lang="EN-US"><span style="font-size:100%;">PostGreSql 8.2</span><br /></span> <p class="MsoNormal"><b><span style="">Projenin Kısa Tanımı :</span></b><span style=""> <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistem birden çok projenin yürütüldüğü bi firmanın proje ve kaynak yönetimi ihtiyacını karşılayacak biçimde düşünülmüştür. Sistemde <b>projeler, proje modülleri </b>ve <b>alt modüller</b> tanımlıdır. Her proje birden fazla proje modülünden oluşabilir. Her proje modülü de birden fazla alt modülden oluşabilir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <b>proje yöneticiler, takım liderleri </b>ve <b>calışanlar</b> tanımlıdır. Bir projeye ait kaynaklar, o projedeki proje yöneticisi, takım liderleri ve çalışanları ifade etmektedir. Her proje bir proje yöneticisi tarafından yönetilir. Bir proje yönetici birden fazla projeyi yönetebilir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <b>takımlar</b> tanımlıdır. Her takımın bir lideri vardır ve her takım lideri yalnızca bir takıma liderlik edebilir. Bir takımda istenildiği kadar çalışan olabilir.<o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <b>görevler</b> tanımlıdır. Sistemdeki proje alt modüllerine birden fazla görev atanabilir. Bir görev yalnızca bir proje alt modülü için tanımlıdır. Bir görev yalnızca bir takıma aittir. Ve her takıma bir görev verilebilir. Görevlerin başlangıç ve bitiş süreleri vardır.<o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde, sistem kullanıcıları için <b>roller </b>tanımlıdır. Her kişinin bir rolü vardır. Sisteme girdiğinde, ait olduğu role ait izin verilen işlemleri gerçekleştirebilmelidir. Yeni roller eklenebilmelidir. Temel roller süper kullanıcı, proje yöneticisi, takım lideri ve çalışan dır.</span><b><span style=""><o:p><br /></o:p></span></b></p> <p class="MsoNormal"><b><span style="">Proje’de karşılanan temel İşlevlerden bazıları :</span></b><span style=""> <o:p></o:p></span></p> <ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style=""><span style="">Sisteme süper kullanıcı tarafından yeni proje yöneticisi, takım lideri ya da çalışan eklenebilir, var olanlar değiştirilebilirö silinebilir.<o:p></o:p></span></li><li class="MsoNormal" style=""><span style="">Sisteme süper kullanıcı tarafından yeni projeler, proje modülleri ve alt modüller eklenebilir ve var olanlar değiştirilebilir, silinebilir.<o:p></o:p></span></li><li class="MsoNormal" style=""><span style="">Sisteme süper kullanıcı veya proje yöneticisi tarafından yeni görevler ve takımlar eklenebilir ve var olanlar değiştirilebilir, silinebilir.<o:p></o:p></span></li><li class="MsoNormal" style=""><span style="">Bir projedeki tüm kaynaklar(işgücü), projedeki takımların yüklendiği görevler ve o takımdaki çalışanlar <span style="font-weight: bold;">tüm roller</span> tarafından listelenebilir.<o:p></o:p></span></li><li class="MsoNormal" style=""><span style="">Bir modülün tamamlanma oranı ayrılan iş gücüne göre hesaplanarak süper kullanıcı veya proje yöneticisi tarafından raporlanabilir.<br /></span></li></ul><b><span style=""><br />Projenin ER Çizeneği (Entity-Relationship Diagram):<br /><br /><br /></span></b><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyL9HQfNLvA4_1MLs-ykY0nGUa3JtbVU98OOLAzT094pTIseKlqF6vOCD5yBYxvfGyvv4GCZXV1UOD3TRRfviTh1-QUzPOBUFnX3P1pQ1avBweBOq4FX6k8sRFm41AgU5kqfx7eAYJiVI/s1600-h/export.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyL9HQfNLvA4_1MLs-ykY0nGUa3JtbVU98OOLAzT094pTIseKlqF6vOCD5yBYxvfGyvv4GCZXV1UOD3TRRfviTh1-QUzPOBUFnX3P1pQ1avBweBOq4FX6k8sRFm41AgU5kqfx7eAYJiVI/s400/export.jpg" alt="" id="BLOGGER_PHOTO_ID_5210760506190434354" border="0" /></a><br /><br /><span style="font-weight: bold;">Projenin bazı ekran görüntüleri :<br /><br />1.<br /><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8MhNOGA-Cx59k6OfKucWom0s6KPLdPW72haqurSEbKJiFf3fiw-6_g2teC-5Q9Z-WlvSp1DuoAmZ_Acc8m5BSEY2VdrtRBtGvpRw2WTNBSJPn6POCDDwRoGVZ8rnab7mxBD6mq3NxrVg/s1600-h/0.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8MhNOGA-Cx59k6OfKucWom0s6KPLdPW72haqurSEbKJiFf3fiw-6_g2teC-5Q9Z-WlvSp1DuoAmZ_Acc8m5BSEY2VdrtRBtGvpRw2WTNBSJPn6POCDDwRoGVZ8rnab7mxBD6mq3NxrVg/s400/0.jpg" alt="" id="BLOGGER_PHOTO_ID_5210770137653810482" border="0" /></a><span style="font-weight: bold;">2.</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjCZ_Kcacn_0IlVJdjrxotVsgZaj6g-ynP-68j3KVKQvww3d49cl8b-RqJjc2CwjsxyaY9tyY52Gi7uvu5XBFnK0wUYepawmxL6EOPDwpYH7zM57SBTgWRHgw3cs8YdQVzjzUTSiHzsDg/s1600-h/1_.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjCZ_Kcacn_0IlVJdjrxotVsgZaj6g-ynP-68j3KVKQvww3d49cl8b-RqJjc2CwjsxyaY9tyY52Gi7uvu5XBFnK0wUYepawmxL6EOPDwpYH7zM57SBTgWRHgw3cs8YdQVzjzUTSiHzsDg/s400/1_.jpg" alt="" id="BLOGGER_PHOTO_ID_5210770448371249794" border="0" /></a><br /><span style="font-weight: bold;"><br />3.<br /><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfi8knuK5VjVgS_Na7nb7RGfHPUWFq_ySK5C0cZQQnhIXZ1Vu5bscVyT-ld5hepLoGw_F8pwTLBm_uHQNn0qIqEUghhoCo3HZLnzkVDcRFApPD80r5w2_DAe2H6w18uWjh38LRt7F-xZo/s1600-h/2_.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfi8knuK5VjVgS_Na7nb7RGfHPUWFq_ySK5C0cZQQnhIXZ1Vu5bscVyT-ld5hepLoGw_F8pwTLBm_uHQNn0qIqEUghhoCo3HZLnzkVDcRFApPD80r5w2_DAe2H6w18uWjh38LRt7F-xZo/s400/2_.jpg" alt="" id="BLOGGER_PHOTO_ID_5210771497578379234" border="0" /></a><br /><br /><span style="" lang="EN-US"></span>Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com2tag:blogger.com,1999:blog-6758669929503282355.post-36429763896245443302008-06-12T01:06:00.025+03:002009-06-30T10:38:42.173+03:00Öğrenci Okul Servisi Otomasyonu2007-2008 guz doneminde Veritabani Laboratuvari dersi kapsaminda gelistirdigim bu proje hakkindaki temel bilgileri bu yazida vermeye calisacagim<br /><br /><span style="font-weight: bold; font-style: italic;">Gelistirilme Ortami :</span> .NET 2005<br /><span style="font-weight: bold; font-style: italic;">Veritabani :</span> Oracle 10g<br /><span style="font-weight: bold; font-style: italic;">Dil :</span> aspx, C#<br /><br /><p class="MsoNormal"><b><span style="">Projenin Kısa Tanımı :</span></b><span style=""> <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistem farkli okullara servis hizmeti veren bir servis sirketinin ihtiyacini karsilayacak bicimde duzenlenecektir. Sirketin filosindaki araclarla farkli okullara eszamanli hizmet verebildigi dusunulmustur. Sistemde okullar kayitlidir. Okullarin mudurleri tanimlidir ve servis sirketi okul ile ilgili organizasyon meselerini okul muduru ille irtibata gecerek yapmaktadir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <span style="font-weight: bold;">soforler</span> ve <span style="font-weight: bold;">araclar</span> tanimlidir. <span style="font-weight: bold;">Okullar</span>a servis atamalari yapilmaktadir. Bir okula atanan servisler ogretim yilinin sonuna kadar sabittir. Bir servis araci birden fazla okulun servis aginda eszamanli olmamak kaydiyla bulunabilir. Bir servis bir okul icin sadece bir guzergaha atanabilir. Bir servis araci birden cok servis soforu tarafindan kullanilabilir ve bir servis soforu birden fazla araca atanabilir.<o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <span style="font-weight: bold;">rehberler</span> tanimlidir. Rehber ilkogretim okuluna hizmet verildiginde servis sirketi tarafindan soforle birlikte araca atanmaktadir. Rehber ilkogretim ogrencilerini aractan indirip guvenli bir yere birakmak ile gorevlidir.<span style=""> </span>Rehber tasiyan araclarin kapasitesine rehberin oturma yeri dahildir. Rehber de bir yolcu olarak algilanip kapasite dolduracaktir. Ilkogretim ustu duzeyindeki okullar icin servislerde rehber bulunmayacaktir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde<span style="font-weight: bold;"> iller</span> tanimlidir<span style=""> </span>Bir ilde birden cok okula hizmet verilebilir. Sistemde <span style="font-weight: bold;">bolgeler</span>, <span style="font-weight: bold;">mahalleler</span>, <span style="font-weight: bold;">duraklar</span> ve <span style="font-weight: bold;">guzergahlar</span> tanimlidir. Ogrenciler ilgili guzergahin ilgili duragindan servise binerler. Bir bolgede birden fazla mahalle bulunabilir. Bir mahallede birden fazla durak olabilir. Guzergahlar duraklarla tanimlidir. Bir duraktan birden fazla guzergah da gecebilir. Bir okul servis aginda birden fazla guzergah tanimlanabilir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde ogrenciler tanimlidir. Ogrenciler okullarina atanan guzergahlardan birini secip kendilerine en yakin duraktan servise binerler. Ihtiyaca gore guzergaha duraklar eklenip cikarilabilir. Ogrenci icin bindigi duraktan ucretlendirme yapilir. Ogrencinin taksitleri bindigi duraga gore tanimlidir. <o:p></o:p></span></p> <p class="MsoNormal"><span style="">Sistemde <span style="font-weight: bold;">yoneticiler</span> tanimlidir. Yoneticiler servis sirketinin personelidir ve onay islemlerini yuruten sistem yoneticileridir. Yoneticiler bölge-güzergah-servis-sürücü işlemlerini yönetebilir, güzergahlara yerleşmek isteyen öğrencileri onaylayip sisteme kaydedebilirler.<o:p></o:p></span></p> <p class="MsoNormal"><span style=""><span style=""> </span><o:p></o:p></span></p> <p class="MsoNormal"><b><span style="">Proje’de karşılanan temel işlevlerden bazıları :</span></b><span style=""> <o:p></o:p></span><span style=""> <o:p></o:p></span></p> <ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style=""><span style="">Sisteme yeni il, bolge, mahalle, okul, okul turu, arac, sofor, rehber, ogrenci, yönetici ve müdür eklenebilir, var olanlar listelenebilir, duzenlenebilir ve silinebiir</span><br /><span style=""></span></li><li class="MsoNormal" style=""><span style="">Sistem yoneticileri okullara servis atayabilir, guzergahlari ve duraklari tanimlayabilir, soforlerin ve gerekliyse rehberin servise atanmasini gerceklestirebilir. <o:p></o:p></span></li><li class="MsoNormal" style=""><span style="">Guzergahlara durak eklenip çıkartılabilir. Yeni guzergahlar tanimlanabilir.<o:p></o:p></span></li><li class="MsoNormal" style=""><span style=""><span style="font-weight: bold;">Ögrenci taksitleri</span> yonetici duzeyinde kontrol edilip listelenebilir ve odeme girisi yapılıp düzenlenebilir.</span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><span style=""><o:p></o:p></span><br /></li></ul> <p class="MsoNormal"><b><span style=""><br /></span></b></p><p class="MsoNormal"><b><span style="">Projenin ER Çizeneği (Entity-Relationship Diagram):</span></b></p><br /><p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHhlBBPIwchW0shVsuNsxmXeWMGBX-_H4rVRMrYXSn8k4e7e6LR63YlQIeobB72QHR9rWf-MEo5GdlEOy5Yd__1d2HAPOzSC13_pkl37eUJHEKq-16AryHuYrg3l7qeibX3ZZlNE8ubHY/s1600-h/VT_lab_ER_sonHali.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHhlBBPIwchW0shVsuNsxmXeWMGBX-_H4rVRMrYXSn8k4e7e6LR63YlQIeobB72QHR9rWf-MEo5GdlEOy5Yd__1d2HAPOzSC13_pkl37eUJHEKq-16AryHuYrg3l7qeibX3ZZlNE8ubHY/s400/VT_lab_ER_sonHali.jpg" alt="" id="BLOGGER_PHOTO_ID_5210754491175904770" border="0" /></a></p><br /><span style="font-weight: bold;">Projenin sorgu ekranları için Oracle'da gerçekleştirimi yapılan faydalı olabilecek bazı SQL sorgu örnekleri :<br /><br />1. </span><span style="font-weight: bold; color: rgb(204, 153, 51);font-size:100%;" >Taksidi ödenmemiş öğrencilere </span><span style="font-weight: bold; color: rgb(204, 153, 51);font-size:100%;" >3 taksit için </span><span style="font-weight: bold; color: rgb(204, 153, 51);font-size:100%;" >%10, 4 taksit için %15, 5 taksit için %20, 6 taksit için %25 faiz ekleyerek, öğrencinin TC nosu, adı, soyadı ve toplam borcunu listele</span><span style="font-weight: bold;"><br /></span> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">SELECT </span>OGRENCITAKSIT.TCNO, KISI.KISIAD, KISI.KISISOYAD,</span></p><p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">CASE </span>COUNT(*)<br /><span style="font-weight: bold;"> WHEN</span> 3 <span style="font-weight: bold;">THEN</span> SUM(MIKTAR)*1.1<br /><span style="font-weight: bold;"> WHEN</span> 4 <span style="font-weight: bold;">THEN</span> SUM(MIKTAR)*1.15<br /><span style="font-weight: bold;"> WHEN</span> 5 <span style="font-weight: bold;">THEN</span> SUM(MIKTAR)*1.2<br /><span style="font-weight: bold;"> WHEN</span> 6 <span style="font-weight: bold;">THEN</span> SUM(MIKTAR)*1.25<br /><span style="font-weight: bold;"> ELSE</span> SUM(MIKTAR)<br /><span style="font-weight: bold;">END</span> AS TOPLAM_BORC</span></p> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">FROM</span> OGRENCITAKSIT <span style="font-weight: bold;"><br /></span></span></p><p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">INNER JOIN</span> OGRENCI <span style="font-weight: bold;">ON</span> OGRENCI.TCNO = OGRENCITAKSIT.TCNO</span></p> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">INNER JOIN </span><st1:place st="on">KISI</st1:place> <span style="font-weight: bold;">ON</span> OGREN<span style="font-size:100%;">CI.TCN</span>O = KISI.TCNO</span></p> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">WH<span style="font-size:100%;">ERE</span></span><span style="font-size:100%;"> OGRENCITAKSIT.ODENDI = 0 </span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style="font-weight: bold;">GROUP BY</span> OGRENCITAKSIT.TCNO, KISI.KISIAD, KISI.KISISOYAD</span></p><span style="font-size:100%;"><br /></span><span style="font-weight: bold;font-size:100%;" >2. <span style="color: rgb(204, 153, 51);">Her araçtaki mevcut öğrenci miktarı ile araç kapasitesini listele</span><br /><br /></span><span style="font-size:100%;"><span style="font-weight: bold;">SELECT</span> ACIKLAMA, plaka, <span style="font-weight: bold;">COUNT(*) AS</span> MEVCUT, KAPASITE<span style="font-weight: bold;"> FROM</span> OGRENCI<br /><br /><span style="font-weight: bold;">INNER JOIN</span> GUZERGAHDURAK<span style="font-weight: bold;"> ON</span><br />OGRENCI.GUZERGAHDURAK_PK <span style="font-weight: bold;">=</span> GUZERGAHDURAK.GUZERGAHDURAK_PK<br /><br /><span style="font-weight: bold;">INNER JOIN</span> GUZERGAH <span style="font-weight: bold;">ON</span> GUZERGAHDURAK.GUZERGAHNO <span style="font-weight: bold;">= </span>GUZERGAH.GUZERGAHNO<br /><br /><span style="font-weight: bold;">INNER JOIN </span>ARAC <span style="font-weight: bold;">ON </span>GUZERGAH.ARACNO <span style="font-weight: bold;">=</span> ARAC.ARACNO<br /><br /><span style="font-weight: bold;">GROUP BY</span> ACIKLAMA, plaka, KAPASITE</span><span style="font-weight: bold;"><span style="font-size:85%;"><br /><br /><br /></span></span><span style="font-weight: bold;">3.<span style="color: rgb(204, 153, 51);font-size:100%;" > <span style="font-size:100%;">Girilen minimum bolge sayisina 'VE/VEYA' minimum okul sayisina sahip illeri listele</span></span></span><br /><p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">SELECT</span> ILAD <span style="font-weight: bold;">FROM </span>IL <span style="font-weight: bold;">WHERE</span> ILNO <span style="font-weight: bold;">IN</span> </span></p> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">( ( </span><span style="font-weight: bold;">SELECT </span>ILNO <span style="font-weight: bold;">FROM</span> BOLGE <span style="font-weight: bold;">GROUP BY</span> ILNO <span style="font-weight: bold;">HAVING COUNT(*)</span> > :BOLGENO <span style="font-weight: bold;">)</span></span></p> <p style="font-weight: bold;" class="MsoNormal"><span lang="EN-US">INTERSECT <span style="font-weight: normal; color: rgb(204, 153, 51);font-size:85%;" > ('VEYA' için INTERSECT yerine '<span style="font-weight: bold; color: rgb(51, 0, 51);">UNION</span>' yazılmalı)</span><br /></span></p> <p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">(</span><span style="font-weight: bold;"> SELECT</span> ILNO <span style="font-weight: bold;">FROM</span> OKUL <span style="font-weight: bold;">GROUP BY</span> ILNO <span style="font-weight: bold;">HAVING COUNT(*)</span> > :OKULNO<span style="font-weight: bold;"> ) )</span></span></p><br /><p class="MsoNormal"><span lang="EN-US"><span style="font-weight: bold;">4.<br /></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style="font-weight: bold;">SELECT</span><span style=""> </span>SOFORARAC.SOFORARAC_PK, SOFORARAC.TCNO, SOFORARAC.ARACNO, SOFORARAC.BASLANGICSAATI, SOFORARAC.BITISSAATI,<br /><span style=""> </span>SOFORARAC.GUNU, SOFORARAC.BASLANGICTARIHI, SOFORARAC.BITISTARIHI, SOFORARAC.TCNOREHBER,<br />KISI.KISIAD || ' ' || KISI.KISISOYAD AS SOFORISIM, KISI_1.KISIAD || ' ' || KISI_1.KISISOYAD AS REHBERISIM, ARAC.PLAKA</span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style="font-weight: bold;">FROM</span><span style=""> </span>SOFORARAC <span style="font-weight: bold;"><br /></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style=""><span style="font-weight: bold;">INNER JOIN</span> </span>ARAC <span style="font-weight: bold;">ON</span> SOFORARAC.ARACNO = ARAC.ARACNO<br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style=""><span style="font-weight: bold;">LEFT OUTER JOIN</span> </span><st1:place st="on">KISI</st1:place> <span style="font-weight: bold;">ON </span>SOFORARAC.TCNO = KISI.TCNO <span style="font-weight: bold;"><br /></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><span style="font-weight: bold;">LEFT OUTER JOIN</span><st1:place st="on"> KISI</st1:place> <span style="font-style: italic;">KISI_1</span> <span style="font-weight: bold;">ON</span> SOFORARAC.TCNOREHBER = <span style="font-style: italic;">KISI_1</span>.TCNO</span></p><br />Projenin ekran goruntulerine de vaktim olursa burda yer vermeye calisacagim.Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com1tag:blogger.com,1999:blog-6758669929503282355.post-91571898765232859922008-03-26T21:17:00.050+02:002014-01-27T13:33:57.649+02:00Java Asn1 Compiler (open source)(<span style="color: #996633; font-style: italic;"><span style="font-size: 85%;">download link :</span> </span><span style="color: #999999;"> </span><a href="http://sourceforge.net/projects/jac-asn1/">http://sourceforge.net/projects/jac-asn1/</a>)<br />
<br />
JAC, is an open source asn1 compiler that I have completed in 2 months<span style="color: #cc0000;"> during my internship at <a href="http://www.turkcelltech.com.tr/">Turkcell Technology</a>.</span> It was the last 2 months of my internship (July-August, 2007).<br />
<span style="color: #cc0000;"><br />JAC (Java Asn.1 Compiler) </span>is a tool to parse the asn.1 file, create .java classes of defined asn.1 data types and do encoding/decoding of instances of the generated java classes.<br />
It is used in the end-to-end communications due to the asn.1 principles.<br />
<br />
Before starting to develop the project I have searched and examined lots of open source compilers but a good free java asn.1 compiler that supports BER encoding was not available on the net. There were lots of open source compilers but they were not sufficient for our needs.<br />
<br />
In the end of the internship, we gave my project the name "<span style="font-weight: bold;">JAC (Java Asn1 Compiler)</span>".<br />
And I have hosted it on <a href="http://sourceforge.net/">sourceforge.net</a> as an open source project after getting the permission from Trukcell Technology.<br />
The link of my project for download is here :<br />
<br />
<a href="http://sourceforge.net/projects/jac-asn1/" style="font-weight: bold;">http://sourceforge.net/projects/jac-asn1/</a><br />
<br />
<span style="font-size: 130%;"><span style="font-weight: bold;">More About <span style="color: #6600cc;">JAC</span> <span style="font-size: 85%;">- </span><span style="color: #6666cc; font-size: 85%;">J</span><span style="font-size: 85%;">ava </span><span style="color: #6666cc; font-size: 85%;">A</span><span style="font-size: 85%;">sn.1 </span><span style="color: #6666cc; font-size: 85%;">C</span><span style="font-size: 85%;">ompiler</span></span></span><span style="text-decoration: underline;"><br /></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVdNqlgcxAmklRrfODG80T6GLyE7KAaAb0iAEDCx3TKraCu7FEj1invZsJ9XqB5o4LZ2xaw9nvo4mUqY0pDOPyNBuqnilKHLXWKJM-FpgkpF0LuID07g0iFQmdFnMm60Weewq_Gu0569A/s1600-h/jac1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVdNqlgcxAmklRrfODG80T6GLyE7KAaAb0iAEDCx3TKraCu7FEj1invZsJ9XqB5o4LZ2xaw9nvo4mUqY0pDOPyNBuqnilKHLXWKJM-FpgkpF0LuID07g0iFQmdFnMm60Weewq_Gu0569A/s400/jac1.jpg" id="BLOGGER_PHOTO_ID_5183277930476100242" style="cursor: pointer;" /></a><br />
<span style="font-weight: bold;"><br />JAC (Java Asn.1 Compiler)</span> is a tool for you if you want to<br />
<span style="color: #6600cc;"><span style="color: #3366ff;">(1)</span> </span>parse your asn.1 file<br />
<span style="color: #3366ff;">(2)</span> create .java classes of data types defined in your asn.1 file and<br />
<span style="color: #3366ff;">(3) </span>do encoding/decoding of instances of your generated classes.<br />
BER, CER and DER are all supported. Just download and start using immediately.<br />
Just forget all asn1 byte streams, and take the advantage of OOP!<br />
<br />
All generated java classes by JAC, have the followings inside:<br />
<br />
• <span style="color: #cc0000;">Public member data variable(s)</span> to hold data of the generated type.<br />
• <span style="color: #cc0000;">Constructor(s) </span>to initialize the object.<br />
• <span style="color: #cc0000;">Set(..) Method</span> to set the variables of the object.<br />
• An <span style="color: #cc0000;">encode(..)</span> method to create asn.1 byte stream which is the output to send.<br />
• A <span style="color: #cc0000;">decode(..)</span> method to create the java object from the received encoded input stream.<br />
• A <span style="color: #cc0000;">print(..)</span> method to print the contents of the object.<br />
<br />
So, JAC gives the opportunity to user working with Java objects instead of playing with complex asn.1 byte streams.<br />
During encoding JAC writes a Java object to an output byte stream <span style="color: #3366ff;">which is the encoded output before sending</span>, and when decoding creates a Java object from the received byte stream <span style="color: #3366ff;">which is the received encoded input</span>, due to the principles of asn1 standards.<br />
<br />
There are clear examples under the download package of my project about the term "asn.1" and asn.1 files.<br />
In the Power Point document "JAC (Java ASN1 Compiler).ppt" there are good examples of how to create .java classes from asn.1 files and do encoding/decoding by use of JAC.<br />
In this power point slide show you can find all features and capabilities of JAC.<br />
<br />
And also note that, each new version information is specified in the file "Version.txt" file under the download package.<br />
<br />
JAC class extension hierharchy is shown briefly on the figure below :<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmYEKp-AUQU6bqZV2H7UsO-tzvuIe662opZRul7A1pNfOUJBvhAspYwBKaLCVwaEXJ-BSVkRWfG0EmUBok1Ol5d1yxy55Tqfz2MjQs1uZ4kI_0QBiQyHoy3i2s1IuvsYfPRSflNaFifzg/s1600-h/jac2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmYEKp-AUQU6bqZV2H7UsO-tzvuIe662opZRul7A1pNfOUJBvhAspYwBKaLCVwaEXJ-BSVkRWfG0EmUBok1Ol5d1yxy55Tqfz2MjQs1uZ4kI_0QBiQyHoy3i2s1IuvsYfPRSflNaFifzg/s400/jac2.jpg" id="BLOGGER_PHOTO_ID_5183279815966743202" style="cursor: pointer; float: left; height: 294px; margin: 0pt 10px 10px 0pt; width: 185px;" /></a><br />
<br />
modified <a href="http://www.chaosinmotion.com/products.html" target="_blank">W.Woody's asn.1 library</a> package<br />
<br />
<br />
<br />
<br />
JAC's package<br />
<br />
<br />
<br />
<br />
Created .java classes by JAC<br />
<br />
<br />
<br />
Please feel free to contact me about the project <span style="font-size: 78%;">(JAC - Java Asn1 Compiler)</span>.<br />
Any questions, suggestions or comments will be welcomed.<br />
<div id="what_the_hell_icon" style="cursor: pointer; display: block; left: 595px; opacity: 0; position: absolute; top: 194px; z-index: 9999;">
<img id="what_the_hell_icon_img" src="data:image;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArhJREFUeNq0lU1PGkEYx2fnbYFFqC+1iWhF0RgRGkqaYEx69qgHjf0S9SO036MnT156MMbPgJCUmLTSJrYNVFMvvRiXV1dh+8wy207GrUkPLPlnmX35zZ9nnv+A0JAO44HrqrB2vw9yNT0IVmFEk/+sgPQ03ZuABkCxBDF5n8kxVtwK2C3oTp578ro/8T0wVmDWq52dZ5lMdtuyrNVwOJREhoFubro/2u1O+fT09P3+/v4neK6lTOKXyHOiQzkouvt6d2NqaurtwkLqZTaz8mRuft5Mzad4cjY5zhhN9/vu6vN87rpUKtW1ciAVrEJDW1tb+emZxJv19fXFRCIRAsc4EokYJjeNUCSMZ6Zn2NLS0qN6rbb4eHLyY7Va/aUvJlYcEx+ey+W2oQTJ0dFRNhIdQQBFpmkiDvLOIRNNTIyzQqGQzOfz29IQVRdZB4vaMnBYWEmnuSWAABEaQDkC14gz7o0z2SyPWtGC/54Kpkop/LaiAJ6Nx+OEEIoIJYgSgogiLM4Yo7GxMWJZkVnF7Z/uCeoKjGH1OeeIMgALuARhAsKD7wZ8d/suMjD2jWE1Fzgodu1O58JxnB5nJmKcIcYGohQmo9RzbMCnYTd67Vb7Ioihgl3Zh/1ms1n5+u27I6CcSueee3Bq/A1r9XPVsZuNiv+e2m56moTuyuXyYaXy4dxu2LeixgQPHKrH1dXVbblUOi8dHx/KcPTUBOoB8brj7OzsOr28bNdq9TnXda1YPG5Am3lk27Z7Jycn3aOjo/rPy8t3e3t7x3C5A7pR4u0aQQEBhUWkNzc302traxuxWOyFFbWeCtetZuuiAT+/WCweHhwcfJGRFuAuyPGjbfwj0iEpU46DNiFHuuzqUOGYKgvnKrsW0sZUA/u7mqOXIGh3c5WX/Afu/nPbdIe+0Q/tr2lox28BBgBARwD6fd1xxAAAAABJRU5ErkJggg==" style="float: left;" /></div>
Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com29tag:blogger.com,1999:blog-6758669929503282355.post-61201257187240857412007-07-13T13:35:00.004+03:002009-07-15T12:05:07.621+03:00Javada temel bir kac seyJava hakkında kısaca bir kaç temel bilgi verelim bu yazıda, başlangıç olsun.<br />Java teknolojisi nasıl çalışıyor? Bir Java kodumuz hani aşamalardan geçiyor ? Farklı olan yapı ne?<br />Kisaca bahsedecek olursak Java da kaynak kodumuzu .java uzantili text dosyalarina yaziyoruz ve derleyici(javac compiler) bu dosyalarimizi .class uzantili Java'ya ozel bi dosya formatina ceviriyor. '.class' uzantili dosylarda "bytecode" dedigimiz JVM makina diline ait ifadeler var. Ve Java kodunu en son islettigimizde JVM bu .class uzantili dosyalari isletime aliyor. JVM nin her turlu platformda bulunabilmesi ve kolaylikla kurulabilmesi sizin java programinizin farkli farkli ortamlarda da "uygulanabilir" olmasini sagliyor. Javanin slogani da bu zaten :) "Bi kere yaz, her yerde calisir"<br />Java platformu(JRE + API) hakkında temel kısa bilgiler için :<br /><br /><a href="http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html">http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html</a><br /><br />Javada temel programlama bilgileri icin Lewis&Loftus un "Java Software Solutions" adli kitabi bence cok yardimci olacaktir. Cok yalin ve guzel bir anlatimi var ve anlamaniz icin iyi bi ingilizcenizin olmasi da gerekmiyor. Bilkent Universitesinde Java dersinde de bu kitap tercih ediliyor. Ben cok istifade etmistim acikcasi. Benim onerim bu ama pdf i var mi bilmiyorum. Aramak lazim :)<br /><br /><span style="font-weight: bold; color: rgb(204, 153, 51); font-style: italic;">Java'da Garbage Collector</span><span style="font-weight: bold; color: rgb(153, 51, 0);"><br /></span>Javanın farklı yapılarından biri de <a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29">Garbage Collector</a>(GC).<br />C de program yazarken mesela kullandıgınız bellek alanını (memory allocation) eger free etmezseniz bazı döngülerde hata alabilirsiniz<br />Ve belleğin verimsiz kullanılmasına sebep olursunuz.<br />O yüzden programcı aldığı her bellek alanını ""free" etmekle yükümlüdür aynı zamanda.<br />Hatta bulunması zor olan hatalardan biri de bu tip hatalardır. Programcı kullandıgı bellek alanını free etmeyi eğer bi yerde unuttuysa ve bunu farkedemzse hatayı başka yerlerde arayarak ciddi uğraşlar verebilir çoğu zaman. (Ben çok tecrübe ettim :> )<br />Java da garbage collector mekanizması ile programcı bellek alanıyla ugrasmaktan kurtulmuş oluyor.<br />GC JVM icersinde JVM(Java Virtual Machine-Java uygulamanizin her ortamda calismasina olanak saglayan sanal makina) tarafindan calistirilan bir mekanizma. Arka planda çalışan garbage collector kullanılmayan, program içerisinde bi yere bağlantısı kalmayan(referansı olmayan) nesneleri kendisi otamatik siliyor.<br />O yüzden "free()" işlemine gerek kalmıyor. Kısaca Java daki "çöpçü" oluyor garbage collector :)<br /><br />Biraz ayrintiya inerek benim de yeni okudugum GC nin yonetimi hakkinda bi kac seyden daha bahsedelim burda.<br />Suncucu tabanli gelsitirilen Java uygulamalarinda, uygulama sunucusunun uzerindeki yuku azaltmak icin GCnin calismasinin kontrol edilmesi gerekebilir. Yani GC nin cok sik devreye girip fazla yuke sebep olmamasi icin bazi onlemler almak mumkun (Bazi JVM parametrelerini kullanmak ve buyuk boylu Java nesnelerinin kullanimindan uzak durmak gibi). Ben bunu hic tecrube etmedim ama asagidaki linkte <a href="http://www.tagtraum.com/gcviewer.html">GCViewer</a> in kullanimiyla GCnin performansi nasil etkileyebileceginin grafiksel olarak izlenmesi hakkinda <a href="http://mustafatan.blogspot.com/">Mustafa Tan </a>in yazdigi guzel bir yazi mevcut :<br />(GCViewer, JVM de kullanilan hafizayi ve GC'nin çalisma sıklığını izliyebilecegimiz guzel bir uygulama)<br /><br /><a href="http://mustafatan.blogspot.com/2007/07/java-hafza-problemleri-ve-gcviewer.html">http://mustafatan.blogspot.com/2007/07/java-hafza-problemleri-ve-gcviewer.html</a><br /><br />[ "Adama bak yaa 'Javada temel bilgiler' diye başlık atıyo, gelmiş bi de GCViewer'dan bahsediyo" diyebilirsiniz ama demeyin :) ]Fatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com3tag:blogger.com,1999:blog-6758669929503282355.post-86901281202981284122007-07-10T15:03:00.008+03:002009-07-15T12:06:48.245+03:00Turkcell "macerası" :)Turkcell'de staj yapıyorum bu yaz. Ama stajdan daha çok bi macera gibi. Su anda da mesai bitimi yaklaşıyo ve Turkcellden "bizim mekan"dan yazıyorum En alt kattaki stajyer eğitimlerinin yapıldığı bazen cok sıcak bazen de soguk(-_-) toplantı odasından. Böyle diyorum çünkü odadaki klimayla alakalı fenaaa bi durum bu :)<br /><br />Yaz geleli çok oldu. Okul bitti ve ben ilk defa bu yaz meslek adına ciddi bir ugras vermekteyim Genelde yaz dönemlerim fazla rahat geçerdi onceden normal olarak Ama artık öyle olmayacak. 3. sınıf bitmek uzere Ogrencilik bitmeye yaklasti.<br /><br />Burda Turkcell'de gerçekten sıcak bi ortam var. İnsan ilişkileri çok iyi, bi samimiyet var ve her şeyden önemlisi ilgi, uğraş ve verilen değer cok güzel. Kaç kurum vardır ülkemizde stajyerleriyle bu şekilde ilgilenen bilmiyorum.<br />Bunları biraz da stajyer adayları için yazıyorum diyebilirim.<br />Turkcell'de stajyerlere asgari ücret veriliyor mesela. Çoğu yerde yok ücretli uygulama. Extra olarak yemekler için verilen ticketlar var(Aylık 240 ytl civarı gibi)<br />Ve Turkcellin servis ağı çok geniş İstanbulun hemen hemen her yerine servisleri var. Mesai saatleri de 8.00-17.00 arası. Ctesi Pazar tatil tabii.<br /><br />Stajyer olarak öğleden önce mesai, öğleden sonra da Oracle eğitimleri var burda. Eğitimlerden sonra mesaiye devam.. Ben Platform Services bölümünde çalışıyorum ve Gebze'deyim.. Asn.1 Compiler geliştiriyorum. Bana verilen iş bu. Bir çok open source asn.1 compiler var ama java'da yazılmış open source iyi bir compiler yok. Amaç ortaya böyle bir yazılım çıkartmak. Şimdilik iyi gidiyor çalışmalarım.<br /><br />Benim durumum genelden biraz farklı burda.. Çünkü Turkcell Tech (Turkcell Teknoloji) stajyeriyim ben ve öğleden önce taaa Gebzedeyim. Turkcell Tech Gebze'de yapılanıyo yeni yeni. Öğleden sonra da Gebzeden Kartala geliyoruz stajyer eğitimleri için. "Taaa Gebze" diyorum çünkü sabahları saat 5.30'da kalkmam gerekiyo Gebze servisini yakalayabilmek için Fatih'ten<br /><br />Turkcell stajı hakkında anlatacak çok şey olur aslında daha Vakit ayırabilirsem yazarımFatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com1tag:blogger.com,1999:blog-6758669929503282355.post-21201530420245722922007-07-07T18:59:00.000+03:002007-07-13T15:26:47.440+03:00Merhaba..Yeni olusturdum blogumu..<br />Zamanla yazarım diye umuyorummFatih Batukhttp://www.blogger.com/profile/18358190963052593214noreply@blogger.com2