Digitürk – Blogger savaşları



İşin uzmanı olarak digitürk – blogger savaşlarını şaşkınlıkla izliyorum. 2 şirket de teknoloji şirketi ve 2si de bir içeriği engelleme yöntemleri hakkında her türlü bilgiye sahipler ama gelin görün ki digitürk gibi teknoloji devi bir şirket gidiyor kendi hakkını savunmak adına yapılması gereken en son adımı ilk başta atıyor ve IP tabanlı bloklama yaptırıyor. Blogger ise arkasında koca Google olunca ben kralım havalarında cevaplar ve internette aşina olduğumuz klasik laflar havalarda uçuşuyor.
Peki çözümü var mı bu sorunun. cevap : EVET hem de çok basit bir çözüm ama 2 aşamadan oluşuyor.

  • 1.aşama : Siteleri ip tabanlı değil sayfa veya url tabanlı bloklama
  • 2.aşama : Avukatlarımıza kapatma alternatiflerinin anlatılması

Olay bu kadar basit aslında Avukatlarımız internet dünyasını tam olarak bilmiyor ki bilememesi normal bu işin uzmanları bile her konuya hakim değil. Hal böyle olunca avukat mahkemeye başvuru yaparken bir şekilde öğrendiği bir kapatma yöntem ile başvuruyor mahkemeye, mahkeme ise başvurunun haklı mı haksız mı olduğunu inceliyor teknik detayını sorgulamıyor ve eğer başvuruyu uygun görürse dava ilgili ip adresinin erişime kapatılması ile sonuçlanıyor.

Eclipse Subclipse SVN problemi

Eclipse’inizde SVN client olarak subclipse kullanıyor ve SVNe bağlanırken sürekli şifre sorması sorunu ile karşılaşıyorsanız çözüm basit.
%APPDATA%/Subversion klasörüne gidin, o klasörde config adında bir dosya göreceksiniz dosyayı bir text editörü
ile açın. Dosyayı açtıktan sonra “[auth]” kategorisi altında “password-stores = windows-cryptoapi” şeklinde bir
ayarın # işareti ile comment haline getirildiğiniz göreceksini # işaretini kaldırırsanız ayar aktif olacak.
Daha sonra yine “[auth]” kategorisi altında yer alan “store-passwords = no” ayarının da comment edilerek etkisiz
hale getirildiğini göreceksiniz, bu ayarı da comment işaretini (#) kaldırarak aktif edin.
Bu 2 ayar sayesinde Subclipse şifrenizi kaydedebilecek ve şifreyi sürekli sorma sorunundan kurtulacaksınız.

Java Servlette parametreden gelen degerlerden otomatik nesne yaratmak

Java servletleri ve jsp ile çalışırken eğer büyük bir formunuz var ve bu formun alanları bir nesneye denk geliyorsa, gelen parametreleri tek tek okuyup nesneye aktarmak tam bir işkencedir çünkü nesnenin 20 tane alanı var ise alt alta 20 tane request.getParameter işlemi yapmak gerekir.
Bazı frameworkler bu işleri otomatize edip parametrelerden gelen bu değerleri otomatik olarak nesneye dönüştürüyorlar ama bazı durumlarda framework kullanmamanız gerekiyor (örn : hız kaygılarının olduğu projelerde) ya da framework kullanmak istemiyorsunuzdur. İşte böyle durumlarda yukarıda anlattığım sorun ile karşılaşma ihtimaliniz yüksektir.
Bu sorunu frameworklerin yaptığı gibi otomatize etmek ama bunu yaparken framework kullanmamak için Java Reflection apilerini kullanarak bir sınıf oluşturdum. Bu sınıf ile parametreden gelen bir nesneyi aşağıdaki gibi 2 satırda oluşturabiliyorsunuz, nesnenin ne kadar alanı olursa olsun !

ObjectBuilder builder = new ObjectBuilder();
HedefNesne ocmsuniversitiesSponsor = (HedefNesne)builder.parametersToObject(request, HedefNesne.class);

Yukarıdaki örnekteki gibi yapmanız gereken 2 şey var birincisi ObjectBuilder (ismini böyle seçtim ama siz kodu oynarak istediğiniz bir isim verebilirsiniz) nesnesini oluşturmak ve ObjectBuilder’in parametersToObject fonksiyonuna request ve hedef nesnenin class’ını aktarmak.

ObjectBuilder sınıfını indirmek için tıklayınız

Tomcat Sub Domain Nasıl Yapılır ?

Tomcat serverinde “subdomain1.example.com” gibi subdomainleri var olan webapp’larımız ile ilişkilendirmek için 2 şey yapıyoruz, 1.si tomcat’in server.xml dosyasını düzenlemek 2.si ise DNS ayarları.
Burada kritik olay DNS ayarıdır eğer DNS ayarını yapabilecek konumda değilseniz buradaki işlemleri bir sonuca ulaştıramazsınız.

1. adım – Tomcat ayarı :
Bu adımda tomcat ayar dosyasına (conf/server.xml) subdomain ve webapp ilişkisini tanımlayacağız.
<Engine> ağacı içine şu şekilde bir ekleme yapılacak.

<Host name="subdomain1.example.com" appBase="webapps/web_app_adi"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>greencard.olitech.com</Alias>
<Context path="/" docBase="C:\Tomcat\webapps\web_app_adi" debug="5" reloadable="false" crossContext="true"></Context>
</Host>

Buradaki ayarların en önemlilerinin anlamı şunlardır :

  • appBase : webapp’inizin webapps klasörü altındaki kısa yolu (webapps/web_app_adi).
  • path : url içinde webappinizin domain adresinden sonra gelen hangi context adını ele alacağı bunu “/” bırakmak root manasına gelir yani “http://subdomain1.example.com/&#8221; yazılıp enterlanırsa ayarladığınız webapp çalışır.
  • docBase : webappinizin kodlarının yer aldığı fiziksel adres. Tam yol vermeniz faydalıdır.

2. adım DNS ayarı :
Bu adımda DNS serverinize subdomain1.example.com adresini ve tomcatinizin dinlediği IP adresini belirtmeniz gerekli.

Eğer xml dosyasında bir hata yapmamışsanız ve DNS ayarını düzgün yaptıysanız subdomaininiz aktif hale gelecektir.

Notlar :

  • Tomcat versiyonu : 6.0.20
  • webapps klasörü standard klasör yani ilk kurulumda gelen klasör
  • server.xml tomcatin conf klasörü içinde yer almakta.
  • Eğer local de deneme yapmak isterseniz HOSTS dosyasına (windowsta system32/drivers/etc altındadır) domain adı ve ip yani 127.0.0.1 girdisi yapmanız ve tomcate ilgili xmli girmeniz yeterlidir. Eğer girdiğiniz domain adı gerçek bir domain ise testlerden sonra HOSTS dosyasındaki girdiyi silmeyi unutmayın

Google Chrome OS – Google’ın yeni işletim sistemi

Yıllardır hayalini kurduğum bir şey vardı, yaptırım gücü çok yüksek olan bir firmanın Linux’u temel alan bir işletim sistemi geliştirmesini istiyordum en sonunda Google hayalimi gerçeğe dönüştürecek gibi görünüyor.
Neden Linux’u güçlü bir firmanın geliştirmesini istediğime gelirsek : Biz Linux sevenler ne kadar çırpınsak da piyasa para ile dönüyor ve bu da Linux’a “piyasanın” kendi işine gelen kısımları ile ilgilenmesine neden oluyordu, örneğin nvidia ekran kartı sürücülerini Linux için daha önce hiç yapmazken şimdi windows sürümü kadar güncel tutuyor.
Bu noktada Google gibi güçlü bir firma domino etkisi yaratacaktır ve firmaların artık Linux temelli bu işletim sistemini de hedef almasına neden olacaktır ki bu bütün Linux temelli sistemleri etkiler. Domino etkisine kapılacak firmalar ilk olarak donanım firmaları olacaktır ardından uzun vadede başarı sağlanırsa Adobe gibi tasarım yazılımı geliştiren ve windowsu windows yapan (hatta Adobe Maci mac yapan yegane firmadır bkz : Dünya genelinde tasarımcılara Mac kullanmaları önerilir) firmaların etkilenmesini bekliyorum.
Eğer bu gelişmeler gerçekleşirse ve Goole Chrome OS başarılı olursa Linux dünyasını güzel günler bekliyor demektir🙂

Windowsta bilgisayara 2. tomcat kurmak

Windosta bir bilgisayara 2. tomcat kurmak gerekli olduğunda tomcat servis olarak kurulmalıdır. Servisi kurmak için tomcat/bin dizini içindeki service.bat scripti kullanılır.
scriptin kullanımı şu şekildedir : service.bat install servisAdi komutunu konsolda verirseniz servisAdi ile belirttiğiniz servis adında bir servis yaratılır.
Burada dikkat edilmesi gereken nokta servisAdi hiç bir şekilde alfa numerik karakter içeremez yani belirlediğiniz harf sadece a-z,A-Z,0-9 aralığında olmalıdır.
servisi kurduktan sonra tomcati başlatmak isterseniz şuna dikkat etmelisiniz bir tomcat tomcat/conf içinde yer alan server.xml deki konfigurasyona göre dinleme (listen) yapar yani 1 ip + port eşleşmesinde de 2 tomcat olmaz yani 2 tomcat 192.168.1.1 port 80 de yer alamaz. ya 2 IP adresiniz olmalı ya da 1 tomcat 80 dışında bir porta kurulmalı.
Ayarlamayı server.xml dosyasında gerçekleştirdikten sonra servis yöneticisinden tomcatleri başlatabilirsiniz.
Tomcatler aynı klasörleri kullanabilir ama tavsiyem farklı tomcat klasörleri kullanmanız.

JPA ile stored procedure çağırmak

JPA’da stored procedure çağırmak için yapılması gereken şey EntityManager nesnesinin createNativeQuery fonksiyonunu kullanmaktır.

Query q = getEM().createNativeQuery("{call sp_myProcedure(?)}", Nesne.class);
q.setParameter(1 , param1);
liste = (List) q.getResultList();
ya da
nesne = q.getSingleResult();

Üstteki kod bloğunda getEM() ile EntityManager nesneni almalısınız yani getEM() fonksiyonunu siz yazacaksınız. Nesne.class geriye dönecek olan resultset’teki alanları kullanarak oluşturulacak nesnenin tipi.
Geriye 1 sonuç dönecek ise q.singleResultSet birden fazla dönecek ise getResultSetList fonksiyonunu kullanmak gerekli.

Takip Et

Her yeni yazı için posta kutunuza gönderim alın.