7 Aralık 2009 Pazartesi

sqlserver identity kolonun degerini yenilemek

Şöyleki,
identity kolonlu tablomuzda aradan bazı satırı sildik ve aradaki değerleri kullanmak istiyoruz.

(
IDENTITY
29
30

39
40
...
gibi
30 39 arası silinmiş
ve kullanmak istiyoruz
)

dbcc checkident (mytable, reseed, 30)

not:
1.yapılacak ilk kayıt verilen sayının 1 fazlası olarak kaydedilir.
2.kolon aynı zamanda primary key se 39 a gelindiğinde çıkacak sorun için hazırlıklı olunmalıdır.

21 Ekim 2009 Çarşamba

9 Eylül 2009 Çarşamba

Dunning ve Kruger Etkisi

Justin Kruger and David Dunning isimli iki psikoloji profesörü 65 Cornell üniversite öğrencisi üzerinde bazı testler uygulamışlar. Gramer, mantık ve şaka içerikli testler yapmışlar ve öğrencilerden testlerdeki performanslarını tahmin etmelerini istemişler.

Testlerde en düşük %25 e girenler, performans ve yeteneklerini çok daha üzerinde tahmin etmişler. İlk %12 ye girenler ise kendilerini %58 lerde tahmin etmişler.

Çalışmaları ve deney sonuçları, Aralık 1999 da Journal of Personality and Social Psychology dergisi yayınlanmış. Makalede vardıkları sonuç ise:
    We propose that those with limited knowledge in a
    domain suffer a dual burden: Not only do they reach mistaken
    conclusions and make regrettable errors, but their incompetence
    robs them of the ability to realize it.
İlgilenenler için makale burada.

4 Eylül 2009 Cuma

Java client ile servlet kullanarak file upload (Bu cümleyi Türkçe yazmak mümkün mü?)

Diyelim ki java ugulamanız ile bir server'a dosya upload etmeniz gerekiyor.. Apache bunun için http client ve file upload kütüphaneleri oluşturmuş. Bu kütüphaneleri kullanarak basit bir şekilde işinizi halledebiliyorsunuz. Ben client tarafında httpclient-2.0 jar'ı, server tarafında ise fileupload-1.0 jar'ı kullandım. Bunların yeni sürümleri de var ama bunlar da işimi gördü.

Öncelikle client koda bakalım:

public static void upload(String sourceFilePath) {
String servletUrl = "http://some.url/servlet";
try {
HttpClient client = new HttpClient();
MultipartPostMethod mPost = new MultipartPostMethod(servletUrl);
// Connection timeout in milliseconds
client.setConnectionTimeout(8000);

File file = new File(sourceFilePath);
mPost.addParameter(file.getName(), file);

int statusCode = client.executeMethod(mPost);
mPost.releaseConnection();
if (statusCode == 2000) {
throw new Exception("Dosya upload edilemedi");
}
// diğer işlemler....
} catch (Exception ex) {
// hatayla ilgili kod...
}
}


Karşı tarafta da bu isteği karşılayacak bir servlet yazmak gerekiyor:

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
String dosyaDizini="D:\\";
try {
DiskFileUpload diskFileUpload = new DiskFileUpload();
// Maksimum kabul edilebilecek dosya boyutu
diskFileUpload.setSizeMax(1000000);

List requestItems = diskFileUpload.parseRequest(request);
Iterator iterator = requestItems.iterator();

while (iterator.hasNext()) {
FileItem fileItem = (FileItem) iterator.next();
if (!fileItem.isFormField()) {
File file= new File(dosyaDizini,fileItem.getName());
fileItem.write(file);
// CLİENT'A BAŞARI MESAJI
response.sendError(1000);
}
}
} catch (Exception ioex) {
// HATA OLUŞTU MESAJI
response.sendError(2000);
}
}

Tabi ki bu api ile dosya dışında metinsel parametreler göndermek de mümkün.



3 Eylül 2009 Perşembe

Şiirler(!)






24 Ağustos 2009 Pazartesi

Oracle veritabanında belli sütunların saklanması

Oracle veritabanında sadece bazı sütünlardaki (kredi kartı no ya da TC Kimlik No gibi) bilgilerin saklanması gerekebilir. Bu alanları şifrelemeden gözlerden saklamak istersek Oracle 10g'den sonra kullanılabilen Virtual Private Database (VPD) "data masking" işimize yarıyor.

Bunun avantajı, veritabanında alanlar decyrpt - encrypt edilmediğinden performans kaybı yaşatmaması..

Önce bir fonksiyon oluşturuyoruz:

CREATE OR REPLACE
FUNCTION vpd_function (obj_owner IN VARCHAR2, obj_name IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN '1=2';
END vpd_function;
/

Bu fonksiyonun döndürdüğü değer (1=2) maskelemek istediğimiz sütunlar için bir where cümlesi vazifesi görecek. Her zaman yanlış olacağından bu alanlar boş gelmiş olacak.

Şimdi bu fonksiyonu kullanacak bir policy tanımlıyoruz:

BEGIN
DBMS_RLS.ADD_POLICY(object_schema=> 'ŞEMA_ADI',
object_name=> 'TABLO_ADI',
policy_name=> 'POLICY_ADI',
function_schema=> 'ŞEMA_ADI',
policy_function=> 'vpd_function',
sec_relevant_cols=> 'VIRGULLE_AYRILMIŞ_SÜTUN_ADLARI',
policy_type => DBMS_RLS.SHARED_STATIC,
sec_relevant_cols_opt=> dbms_rls.ALL_ROWS);

END;
/

Burada POLICY_ADI'na istediğiniz herhangi bir isim verebilirsiniz.

Son olarak bu policy'nin dışında kalacak kullanıcıya izin veriyoruz:

grant exempt access policy to KULLANICI;

Artık ister program kullansın ister yazılım içinde bağlantı kursun, ilgili tabloda select çeken kullanıcı tüm satırları görecek ama belirttiğimiz sütunlar ona boş görünecektir.

8 Temmuz 2009 Çarşamba

Halı Saha Maçı

Sevgili arkadaşlar

Maç bugün (8 Temmuz 2009) 19:00-20:00 saatleri arasında olacak şekilde ayarlandı. Halı sahanın adresi:

Tuana
4.Cad. No:24 Yıldızevler/Çankaya
Tel:441 76 75

Burası atakule'ye oldukça yakın.. Harita üzerinde gösterirsek:



Daha Büyük Haritayı Görüntüle


Akşam görüşmek üzere

26 Haziran 2009 Cuma

Michael Jackson öldü...

20 sene önce kendi çabalarımızla öğrenmeye çalışmış, bir türlü becerememiştik. Moon walk nasıl yapılır öğrenmek isteyenler için: http://www.youtube.com/watch?v=E_FzgtLVzbI

Moon walk'ı ustanın kendisinden izlemek için: http://www.youtube.com/watch?v=s7MmEMrCRfc

2 Haziran 2009 Salı

Merhaba

Geçen sene bu aralar blogda bayağı bir hareket varmış. Bu sene yazılar azaldı. Buna rağmen, ziyaretçi sayımız 5000 i geçmiş. Bence yazıları arttıralım. Ne dersiniz ?

13 Mayıs 2009 Çarşamba

SQL SERVER String Functions

SELECT [Kolon1] ,
STUFF([Kolon1],3,9,'-')
+STUFF( substring([Kolon1],3,7),3,9,'-')
+STUFF( substring([Kolon1],5,5),3,0,'-')
FROM [TABLO1]
WHERE
LEN ([Kolon1])= 9
and
CHARINDEX('-' , [Kolon1])=0
and
CHARINDEX('.' , [Kolon1])=0
and
CHARINDEX('/' , [Kolon1])=0



sonuçlar
123546789
12-34-56-789

11 Ocak 2009 Pazar

JAX-WS ile Güvenlik Bilgilerini Almak

Eğer JAX-WS kullanırken bir şekilde servisinize gönderilen mesajın içindeki kullanıcı bilgilerine ulaşmanız icab ederse, web servisinize küçük eklemeler yapmanız yetecektir:

@WebService()
public class LoginWebService {

@Resource
private WebServiceContext context;

@WebMethod(operationName = "operasyon")
public void operasyon() {
ServletContext servletContext = (ServletContext)context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
String kullaniciadi = servletContext.getInitParameter("username");
String sifre = servletContext.getInitParameter("password");
//Sonrası size kalmış! :-))
}
}

Netbeans, Glassfish ve Türkçe!

Windows üzerinde Netbeans ve Glassfish kullanırken bir takım problemler yaşıyorsanız ilk şüphelenmeniz gereken yer dil ve bölge ayarlarıdır. Eğer Glassfish'i başlatırken abuk subuk, internette aradığınızda bile bulamadığınız bir takım hatlarla karşılaşıyorsanız,

1. Netbeans'in kurulu olduğu klasörde etc diye bir klasör bulunuyor. Bunun içinde netbeans.conf dosyasını bir text editör ile açıp netbeans_default_options diye başlayan satırın en sonuna (ama tırnak işaretinin içinde kalacak şekilde

--locale tr_TR

ifadesini ekleyin.

Glassfish'in kurulu olduğu klasörde "lib" klasöründe "Launcher.xml" ve "processLauncher.xml" dosyaları var. Bunların içine

<sysproperty key="user.language" value="tr-TR"/></sysproperty>

satırını ekleyin.

Son olarak uygulama sunucumuzun ilgili domain klasöründe domain.xml diye bir
dosya var. Bunun içine de ilgili yere

<jvm-options>-Duser.language=tr-TR</jvm-options>

satırını eklemelisiniz.