6 Aralık 2009 Pazar

Google Public DNS

DNS adresi olarak 8.8.8.8 and 8.8.4.4 ayarlayarak hem youtube gibi Türkiyedeki yasak sitelere girebilir hem de google'ın iddiası doğru ise interneti daha hızlı ve güvenli dolaşabilirsiniz.

http://code.google.com/speed/public-dns/


11 Kasım 2009 Çarşamba

10 skills developers will need in the next five years


1: One of the “Big Three” (.NET, Java, PHP)
2: Rich Internet Applications (RIAs)
3: Web development
4: Web services
5: Soft skills
6: One dynamic and/or functional programming language
7: Agile methodologies
8: Domain knowledge
9: Development “hygiene”
10: Mobile development

Article: 10 Skills Developers Will Need


11 Eylül 2009 Cuma

Super Cookies

You Deleted Your Cookies? Think Again
More than half of the internet’s top websites use a little known capability of Adobe’s Flash plug-in to track users and store information about them, but only four of them mention the so-called Flash Cookies in their privacy policies, UC Berkeley researchers reported Monday.
Unlike traditional browser cookies, Flash cookies are relatively unknown to web users, and they are not controlled through the cookie privacy controls in a browser. That means even if a user thinks they have cleared their computer of tracking objects, they most likely have not.

Better Privacy extension for Firefox
Better Privacy serves to protect against not deletable longterm cookies, a new generation of 'Super-Cookie', which silently conquered the internet.

6 Eylül 2009 Pazar

Arama Sayfalarında Encoding Problemi

unun Seam'e özgü bir problem olduğunu sanmıyorum ama ben Seam ile geliştirdiğim bir projede şöyle bir probleme rastladım.

Arama için bir inputText kutusuna türkçe karakterler yazdığımda beklediğim sonuçlar dönmediği gibi, sonuçlar döndüğünde de inputText'in içine karışık karakterler geliyordu. Anladım ki bu server'ın encoding ayarı ile ilgili bir hataymış

JBoss server.xml'e http connector ayarına  useBodyEncodingForURI="true" URIEncoding="UTF-8" şeklinde belirtince problem çözülüyor.


Server.xml dosyam'daki Connector satırım şöyle:



Belirttiğim gibi Arama kutusuna Şarkı yazdığımda



Hiç sonuç dönmüyor ve arama kutuma aşağıdaki bozuk karakterler geliyordu:




26 Ağustos 2009 Çarşamba

Oracle Örnek Sorgu #1



WITH data_set AS (


SELECT
is_running, datetime
FROM
(
SELECT is_running, datetime, row_number() over (ORDER BY DATETIME DESC) rn
FROM mon_host_stat_hist
WHERE institution_id='TUB' and host = 'Client'
)
WHERE rn = 1;

)

SELECT
datetime, next_datetime, (next_datetime-datetime) as diff
FROM
(
SELECT
datetime,
lead(datetime, 1, null) OVER (ORDER BY datetime) AS next_datetime,
FROM data_set
)



2 Ağustos 2009 Pazar

Oracle Text - Özel Karakterleri Indeksleme İncelikleri

Oracle text Normalde * = gibi özel karakterleri indekslemez, bunların indekslenmesini siz sisteme index oluştururken bildirmelisiniz. BASIC_LEXER tanımlayarak alfanümerik karakterlerin nasıl indeksleneceğini belirleyebilirsiniz.

Tanımlayabileceğiniz üç tip karakter vardır:

1-) Printjoin Characters: Alfanümerik olmayan bir karakteri indekslenen karakterlerin listesine eklemek için kullanılır. Örnek vermek gerekirse "web-site" kelimesi normalde "website" şeklinde indekslenir. Tire (-) işaretini printjoin listesine eklerseniz artık "web-site" şeklinde indekslenecektir ve website şeklinde sorgular "web-site" sonucunu vermeyecektir.

2-) Skipjoin Characters : Printjoin'in tersi olarak indeslenmemesini istediğiniz alfanümerik olmayan karakterleri tanımlayabilirsiniz.

3-) Diğer karakterler : Satır sonunda bir kelimeyi ayırmak için kullanılan karakteri (-) tanımlamak için continuation; noktalama işaretlerinin indeslenip indekslenmeyeceğini belirtmek için punctuations ; satır sonu karakterini (\n) belirlemek için newline ; u-ü o-ö gibi noktalı noktasız harfleri beraber olarak aramak istiyorsak base_letter; büyük küçük harf ayrımını belirlemek için mixed_case kullanılabilir.


Aşağıdaki AUCTION tablosunun oluşturulduğunu ve bu tablo üzerinde çalıştığımızı varsayalım.



Aşağıdaki şekilde AUCTION tablosuna Oracle Text Indexsi ekliyoruz:

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=-');

-- create an index set and add a sub-index
EXEC CTX_DDL.CREATE_INDEX_SET('auction_iset');
EXEC CTX_DDL.ADD_INDEX('auction_iset','price');

-- Create the combined catalog index on the AUCTION table
DROP INDEX auction_titlex;
CREATE INDEX auction_titlex ON AUCTION(title)
INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('LEXER special_chars_lexer index set auction_iset');

Şimdi bu indekslediğimiz veri üzerinde aşağıdaki sorgulamaları yapıyoruz :

1-) Aşağıdaki sorgu yanlızca yanında boşluk olan Tire "-" işaretli veriyi yani sadece ve sadece "-" işareti varsa sonuç dönüyor.

>> SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{\-}') > 0;

5 - STAR (*****) CAMERA , 2500

2-) Tire işaretini "-" içeren tüm verileri bulmak için aşağıdaki sorgulamayı yapmak gerekiyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\-*}',)>0;

5-STAR(*****) CAMERA,2500
5-STAR (*****) CAMERA,2500
5 - STAR (*****) CAMERA,2500

3-) Eşittir işaretini "=" içeren tüm verileri bulmak için de benzer şekilde aşağıdaki sorgulamayı yapmak gerekiyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\=*}',)>0;

EQUAL (=) CAMERA,25
=======================================,100
============== Cash ==================,102
============= Success ================,103
============== Cash ==================4,104


4-) Yıldız işaretini "*" içeren tüm verileri bulmak için ise aşağıdaki sorgu işe yaramıyor. Bu sorgu tüm verileri döndürüyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\**}',)>0;

5-) 1 ve 1'den fazla Yıldız işaretini "*" içeren tüm verileri bulmak için ise aşağıdaki gibi bir sorgu yazmak gerekiyor. Bu farkın nedeni CATSEARCH'ün "*" işaretini wildcard olarak kullanması olabilir.

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{\*} | {\*\*} | {\*\*\*} | {\*\*\*\*} | {\*\*\*\*\*}',)>0;

* STAR CAMERA,2500
444 ** *** ***** 444,101
5-STAR(*****) CAMERA,2500
5-STAR (*****) CAMERA,2500
5 - STAR (*****) CAMERA,2500




1 Ağustos 2009 Cumartesi

Oracle Text - Full Text Search

Oracle Text Çalışırken tuttuğum bazı notları ve örnekleri burada paylaşmak istedim. Örneklerin bazıları için değişik kaynaklardan faydalandım, bazılarını ise kendim yazdım. Umarım faydalı olur.

1 -)Full Text Search Nedir?

Indexlenmek istenen alan eğer text içeriyorsa ki bu bir html dosyası pdf de olabilir, bu tip verileri indexlemek için Full Text Search kullanılır. Bu şekilde büyük metin verileri üzerinde daha hızlı sorgulama yapılabilir.

2 -) Oracle Text Index Tipleri

2.1 -) CONTEXT: Arayacağınız metin büyük text verileri içeriyorsa (HTML,word,pdf,xml de olabilir) bu tip indeksleme kullanılır. CONTAINS sözcüğü ile sorgulama yapılır. Veri değiştiğinde (DML sonrası) index CTX_DDL.SYNC_INDEX ile güncellenmelidir. Bölümlenmiş (partitioned) tabloları destekler.

2.2 -) CTXCAT: Daha küçük documan ve metinler üzerinde arama yapmak için kullanılır. Mixed Query'lerde daha iyi performans sağlar. Indeks'e text olmayan tablo sütunları da dahil edilebilir ve böylece performans arttırımı sağlanmış olur. CATSEARCH sözcüğü ile sorgulama yapılır. Index oluşturmak CONTEXT'den daha fazla zaman alır ve daha çok yer kaplar. Bölümlenmiş (partitioned) tabloları desteklemez.

2.3 -) CTXRULE : Daha çok döküman sınıflandırılması uygulamalarında kullanılır. MATCHES sözcüğü ile sorgulama yapılır.

2.4 -) CTXXPATH : Eskiye uyum için XMLType tipindeki sütunlar üzerindeki existsNode() sorgulamalarını hızlandırmak için eklenmiştir. Yeni uygulamalar için XMLIndex kullanılması önerilir.




ÖRNEK #1: Kullanıcı oluşturma ve haklar
-- Connect as the System Admin
CONNECT sys;

-- Create User
CREATE USER myuser IDENTIFIED BY myuser_password;

-- Grant Roles
GRANT RESOURCE, CONNECT, CTXAPP TO MYUSER;

-- Grant to MYUSER execute privileges on all Oracle Text packages
GRANT EXECUTE ON CTX_CLS TO myuser;
GRANT EXECUTE ON CTX_DDL TO myuser;
GRANT EXECUTE ON CTX_DOC TO myuser;
GRANT EXECUTE ON CTX_OUTPUT TO myuser;
GRANT EXECUTE ON CTX_QUERY TO myuser;
GRANT EXECUTE ON CTX_REPORT TO myuser;
GRANT EXECUTE ON CTX_THES TO myuser;

-- Connect as the New User
CONNECT myuser;


ÖRNEK #2: Context Index ile HTML üzerinde sorgulama
-- Create your text table
CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200));

-- Load Documents into Table
INSERT INTO docs VALUES(1, 'California is a state in the US.');
INSERT INTO docs VALUES(2, 'Paris is a city in France.');
INSERT INTO docs VALUES(3, 'France is in Europe.');

-- Create the CONTEXT index
CREATE INDEX idx_docs ON docs(text)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS
('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');

-- look for all documents that contain the word France:
SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'France', 1) > 0;

-- add some rows
INSERT INTO docs VALUES(4, 'Los Angeles is a city in California.');
INSERT INTO docs VALUES(5, 'Mexico City is big.');

-- the index is not synchronized, these new rows are not returned with a query on city:
SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'city', 1) > 0;

-- synchronize the index with 2Mb of memory, and reexecute the query:
EXEC CTX_DDL.SYNC_INDEX('idx_docs', '2M');


ÖRNEK #3: Özel Karakterleri İndeksleme ( Örneğin, "*=" )
-- Create your text table
CREATE TABLE mydata (id NUMBER PRIMARY KEY, text VARCHAR2(1000));

-- Load some data into Table
INSERT INTO mydata VALUES(1, '==================================');
INSERT INTO mydata VALUES(2, '444 ** *** ***** 444');
INSERT INTO mydata VALUES(3, '============== Cash ================');
INSERT INTO mydata VALUES(4, '============= Success ===============');

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=');

-- create the CONTEXT index with your special_chars_lexer
CREATE INDEX idx_mydata ON mydata(text)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER special_chars_lexer');

-- make some query
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '%4%', 1) > 0 ORDER BY SCORE(1) DESC;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{444}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{44}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{**}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{
============== Cash ================}', 1) > 0;

-- synchronize the index with 2Mb of memory, and reexecute the query:
EXEC CTX_DDL.SYNC_INDEX('idx_mydata', '2M');

ÖRNEK #4:
-- Set up an auction table to store your inventory:
CREATE TABLE auction(
item_id NUMBER,
title VARCHAR2(100),
category_id NUMBER,
price NUMBER,
bid_close DATE
);

-- Populate the table with various items
INSERT INTO AUCTION VALUES(1, 'NIKON CAMERA', 1, 400, '24-11-2002');
INSERT INTO AUCTION VALUES(2, 'OLYMPUS CAMERA', 1, 300, '25-11-2002');
INSERT INTO AUCTION VALUES(3, 'PENTAX CAMERA', 1, 200, '26-11-2002');
INSERT INTO AUCTION VALUES(4, 'CANON CAMERA', 1, 250, '27-11-2002');
INSERT INTO AUCTION VALUES(5, '5-STAR(*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(6, '5-STAR (*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(7, '5 - STAR (*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(8, 'EQUAL (=) CAMERA', 1, 25, '29-11-2002');
INSERT INTO AUCTION VALUES(9, '* STAR CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(10, '=======================================', 1, 100, '28-11-2002');
INSERT INTO AUCTION VALUES(11, '444 ** *** ***** 444', 1, 101, '28-11-2002');
INSERT INTO AUCTION VALUES(12, '============== Cash ==================', 1, 102, '28-11-2002');
INSERT INTO AUCTION VALUES(13, '============= Success ================', 1, 103, '28-11-2002');
INSERT INTO AUCTION VALUES(14, '============== Cash ==================4', 1, 104, '28-11-2002');
INSERT INTO AUCTION VALUES(15, '- -- --- ---- Update ---- --- -- -', 1, 105, '28-11-2002');

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=-');

-- create an index set and add a sub-index
EXEC CTX_DDL.CREATE_INDEX_SET('auction_iset');
EXEC CTX_DDL.ADD_INDEX('auction_iset','price');

-- Create the combined catalog index on the AUCTION table
DROP INDEX auction_titlex;
CREATE INDEX auction_titlex ON AUCTION(title)
INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('LEXER special_chars_lexer index set auction_iset');

-- Query
SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'order by price')> 0;
SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'price <= 300')>0;

-- query for special character (=)
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{=}', 'order by price') > 0;
SELECT title, price FROM auction WHERE CATSEARCH(title, '{=} & CAMERA', 'order by price')>0;

-- query for special character (-)
SELECT title, price FROM auction WHERE CATSEARCH(title, '{5-STAR}','order by price')>0;
*/
SELECT title, price FROM auction WHERE CATSEARCH(title, '\-','order by price')>0; -- /*not finds %-% */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{*-*}','order by price')>0;
/*-- finds %-% */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{--}','order by price')>0; -- finds nothing

-- query for special character (*)
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{*}', 'order by price') > 0;
/* interpreted as wildcard */
SELECT title, price FROM auction WHERE CATSEARCH(title, '\*','order by price')>0;
/* not finds %*% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '\*\*', 'order by price') > 0; -- not finds %**%
*/
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{\*\*}', 'order by price') > 0;
/* same as above */
SELECT title, price FROM auction WHERE CATSEARCH(title, '\*\*\*\*\*','order by price')>0;
/* only ***** */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\**}','order by price')>0;
/* ???? */

-- Query for Special Characters mixed with other characters
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '*4*', 'order by price') > 0;
/* finds %4% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{44}', 'order by price') > 0;
/* finds nothing */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{44*}', 'order by price') > 0;
/* finds 44% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{============== Cash ==================}','order by price') > 0;
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{============== Cash ==================*}','order by price') > 0;


ÖRNEK #5:






31 Temmuz 2009 Cuma

Vazgeçemeyeceğiniz Programlar

  • JDownloader:Özellikle Rapidshare gibi sitelerden dosya indirmeyi otomatize eden bir prog. Siz sadece indireceğiniz dosyaları listeye ekliyorsunuz, gerisini JDownloader sizin için yapıyor.








  • GnuCash: Ücretsiz finans programı.








  • Daemon Tools: Tüm CD/DVD yazma kalıplarını okuyabilen bir program.







  • CCleaner: Gereksiz ve kullanılmayan dosyaları temizleme aracı.





24 Temmuz 2009 Cuma

Call Stored Procedure In Oracle And Pass In Out Parameters

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;

public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getOracleConnection();
// Step-2: identify the stored procedure
String proc3StoredProcedure = "{ call proc3(?, ?, ?) }";
// Step-3: prepare the callable statement
CallableStatement cs = conn.prepareCall(proc3StoredProcedure);
// Step-4: set input parameters ...
// first input argument
cs.setString(1, "abcd");
// third input argument
cs.setInt(3, 10);
// Step-5: register output parameters ...
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.registerOutParameter(3, java.sql.Types.INTEGER);
// Step-6: execute the stored procedures: proc3
cs.execute();
// Step-7: extract the output parameters
// get parameter 2 as output
String param2 = cs.getString(2);
// get parameter 3 as output
int param3 = cs.getInt(3);
System.out.println("param2=" + param2);
System.out.println("param3=" + param3);
conn.close();
}

private static Connection getHSQLConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
System.out.println("Driver Loaded.");
String url = "jdbc:hsqldb:data/tutorial";
return DriverManager.getConnection(url, "sa", "");
}

public static Connection getMySqlConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/demo2s";
String username = "oost";
String password = "oost";

Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}

public static Connection getOracleConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:caspian";
String username = "mp";
String password = "mp2";

Class.forName(driver); // load Oracle driver
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
}

10 Temmuz 2009 Cuma

JQuery Visualize

Scott Jehl tarafından yayınlanan JQuery eklentisi JQuery Visualize sayesinde HTML table'ındaki verilerden çok güzel grafikler oluşturmanız mümkün. Üstelik bunu basit bir $('table').visualize(); koduyla yapabiliyorsunuz.

JQuery Visualize

2 Temmuz 2009 Perşembe

Yuvarlak Köşeler

Jquery'nin yuvarlak köşeler oluşturmanızı sağlayan güzel bir eklentisi (rounded corners plug-in ) var. Bunun sayesinde resimlerin bile köşelerini yuvarlatmak mümkün.

Gerekli Dosyalar:


Ayrıntılı Bilgi İçin Tıkla


30 Haziran 2009 Salı

Google I/O Sessions - 2009 Developer Conferance, San Francisco

27-28 Mayıs 2009'da San Francisco'da düzenlenen "Developer Conferance"'ın sunumları na ulaşmak için tıkla.