15
May 12

Tüm Browserlarda Enter’ı algılama

Klavyenin Enter tuşuna basıldığını anlayan ve basılınca bir olayı başlatan kod’a ihtiyacım oldu.

Yani form tagı içerisinde olmayan bir text kutusuna yazılan kelimeyi entera basıldığında arayan ve tüm browserlar tarafından desteklenen bir kod istedim.

Aşağıdaki kod bu ihtiyacı karşıladı.

$(document).keypress(function(e) {
    if(e.keyCode == 13) {
        alert('You pressed enter!');
    }
});

ya da

$(document).keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

Daha gelişmiş ve plugin haline getirilmiş haliyle:

$.fn.enterKey = function (fnc) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if (keycode == '13') {
                fnc.call(this, ev);
            }
        })
    })
}
Usage:

$("#input").enterKey(function () {
    alert('Enter!');
})

Kaynak: http://stackoverflow.com/questions/979662/how-to-detect-pressing-enter-on-keyboard-using-jquery


09
May 12

KeyTool – Anahtar ve Sertifika Yönetim Aracı

Java ile bir kurumun vermiş olduğu web servisine https üzerinden bağlanarak sorgu çekmek gerekti.

Arkadaşlardan aldığım bilgiye göre kurumun ssl sertifikasının java keystore a aktarılması gerekiyormuş. Nasıl yapacağımı sordum anlattılar. Benim makina Mac işler biraz daha farklı. JAVA_HOME ayarlarının yapılması lazım. Sonra sertifikası yüklenecek kurumun SSL sertifikasının indirilmesi masaüstünde bir yerde saklanması gerekmektedir. Bu aşamadan sonra iş keytool’a kalıyor. Soruldugunda default şifresi “changeit” dir.

Keytool bir sertifika yönetim aracıdır. Özel anahtarların ve onların ilişkili olduğu x.509 sertifika zincirlerini doğrulayan public anahtarların tutulduğu bir database’i yönetir. Ayrıca güvenilir sertifika sağlayıcılarının sertifikalarını yönetir. Kullanımı;

$ sudo $JAVA_HOME/bin/keytool -import -trustcacerts -keystore $JAVA_HOME/lib/security/cacerts -file /Users/kullanici_adi/Desktop/Sertifika/ptt.pem
Enter keystore password:changeit
...
Trust this certificate? [no]:  yes
Certificate was added to keystore

şeklindedir. Sertifika keystore a eklenmiştir.


08
May 12

Mac OS X Eclipse Java Built Path Ayarları

Go to Eclipse -> Preferences, under Java select “Installed JREs” and check one of the boxes to specify a default JRE. Click OK and then go back to your project’s properties. Go to the “Java Build Path” section and choose the “Libraries” tab. Remove the unbound System Default library, then click the “Add Library” button. Select “JRE System Library” and you should be good to go!


01
May 12

Windows Authentication kullanarak PHP ile SQL Server’a Bağlanmak

PHP ile SQL Servera bağlanmak için gerekli Microsoft Driver, varsayılan olarak Windows Authenticationı kullanarak SQL Servera bağlanır.

Önemli bir not olarak çoğu durumda bunun anlamı, web sunucunun açmış olduğu kimlik ya da işlem yapan kimlik, sunucuya bağlanmak için kullanılacak kimliktir. Bir son kullanıcı kimliği değildir.

Aşağıdaki noktalara Windows Autjentication ile SQL Servera bağlanmadan önce dikkat etmek gerekmektedir.

  • Eğer SQL Server ve Web Server ayrı makinalar ise SQL Server mutlaka uzaktan erişim için ayarlanmış olmalıdır.
  • SQL Server’a bağlanacak kimlik ile web sunucunun çalıştığı kimlik eşleşmelidir.


Database ve ConnectionPooling gibi bağlantı özellikleri bağlantı kurma esnasında ayarlanabilir. Tüm desteklenen bağlantı özellikleri için Connection Options'a bakınız.

SQL Server’a Windows Authentication ile bağlanmanın muhtemel nedenleri aşağıdaki gibi olabilir:

  • Herhangi bir kimlik doğrulama sırasında, ağ üzerinden aktarılan kullanıcı adları ve parolalar; veritabanı bağlantı dizesine gömülü değildir. Bunun anlamı kötü niyetli kullanıcıların ve saldırganların kimlik bilgilerini, network izleme ya da yapılandırma dosyası içerisindeki bağlantı dizelerini görüntüleyerek ele geçirememelerini sağlar.
  • Merkezi bir kimlik yönetimi ile; belirli bir süre sonunda şifrenin geçerliliğini yitirmesi, minimum şifre uzunluğu, birkaç defa hatalı giriş denemesi sonucunda hesap kitlenmesi gibi kullanıcılara güvenlik politikaları uygulanabilir

Eğer Windows Authentication pratik bir seçenek değil ise, SQL Server Authentication ile bağlantı nasıl yapılır? a bakabilirsiniz.

Örnek

SQL Server ve PHP için Microsoft Driver’ın SQLSRV sürücüsünü kullanma, aşağıdaki örnek SQL Server’ın local bir örneğine bağlanmak için Windows Authentication kullanır. Bağlantı gerçekleştirildikten sonra, server database’e erişmeye çalışan kullanıcının giriş bilgilerini sorgular.

Bu örnekte Local bir bilgisayara SQL Server ve AdventureWorks database’i kurulmuş varsayılmaktadır. Örnek çalıştırıldıktan sonra tüm çıktılar browser’a basılır.

< ?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");

/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Unable to connect.";
     die( print_r( sqlsrv_errors(), true));
}

/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."";

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

PDO ile Bağlantı

Aşağıdaki örnek ise aynı işlemi gerçekleştirmek için PDO_SQLSRV sürücüsünü kullanır.

< ?php
try {
   $conn = new PDO( "sqlsrv:Server=(local);Database=AdventureWorks", NULL, NULL);
   $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}

catch( PDOException $e ) {
   die( "Error connecting to SQL Server" );
}

echo "Connected to SQL Server\n";

$query = 'select * from Person.ContactType';
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
   print_r( $row );
}

Kaynak: http://msdn.microsoft.com/en-us/library/cc296205%28v=sql.90%29.aspx


23
Apr 12

Windows 7 ile SSH Key Generation

SSH sunuculara bağlanmak için gerekli keylerin nasıl üretileceğini anlatan yardım dosyasını içermektedir.

http://www.serkankonakci.com/?p=1626 adresindeki yönergeler takip edilerek windows makinaya ssh client kurulur. Bu sayede CMD siyah ekrandan ssh komutları çalışır hale gelir.

Daha sonra aşağıdaki komut girilir.

ssh-keygen -t rsa -C "My Windows Key"

Bize aşağıdaki soru yöneltilir, enter ‘le geçilir.

You should see:
Generating public/private rsa key pair.
Enter file in which to save the key (/u/.ssh/id_rsa):

Bizden şifre isteyecektir

Press 'Enter' here to accept the default
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Press enter to leave the passphrase empty.

Daha sonra dosya Kullanıcı bilgilerinizin olduğu adrese kaydedilir. Bu adrese aşağıdaki komut ile ulaşılabilir.
Genelde kullanıcı adınızın olduğu dizini işaret eder.

C:\Users\serkon>echo %USERPROFILE%
C:\Users\serkon

Kullanıcı profilinin olduğu yerdeki .ssh klasörünün içerisine 2 adet dosya oluşturur. Birisi public diğeri private keylerin olduğu 2 adet dosyadır.

Your identification has been saved in c/Users/serkon/.ssh/id_rsa.
Your public key has been saved in c/Users/serkon/.ssh/id_rsa.
The key fingerprint is:
7e:f5:7e:11:ec:4d:2c:36:02:1d:a4:89:4a:3a:b7:b5 My Windows Key

Belirtilen adresteki id_rsa.pub public key açılarak kopyalanır.

C:\Users\serkon>notepad C:\Users\serkon\.ssh\id_rsa.pub

Açılan dosyanın içeriği yaklaşık şu şekilde olacaktır.

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq/9IAUH
OBaagayPGPItqx8cuebGiCdR7an5o6XYefcWgeNww8gYNjOUWs3TSw7if6o4GnG/4Jwk/f8abaG9BYv/OpLlpeV
rgkKWhVL56yWgd8Pbry3y6yM/S3T3lfYYdfbzo8JecHFnFssaCdYXbftg2qcvfRq/iXaoHQlJzUkr5zpu1pyD7Pd
M/1H6YlBlP18Ge+lAfgLZd9x8nxMNAq+0zrozitIRC/kR5LE7HbJWBrFhFZQqFpVSSXwIZDpou6Js7c5GP2S/0
O+z2FvrbjvP9g4/mrRv48a3R/0tc4U0GWlAFMp6W/CZjaYQe74/3Y2rGvYLyh762AqVagWOnnmw== My Windows Key

Daha sonra ilgili sunucuya gidilir ve oraya paste edilir.


27
Feb 12

GlassFish ile MySQL Connection Pooling

GlassFish’in admin ekranından MySQL connection için gerekli ayaların nasıl yapıldığını ve neler ihtiyaç duyulduğunu yazacağım

Gereksinimler

  • MySQL J/Connector (http://dev.mysql.com/downloads/connector/j/3.1.html)
  • Glassfish Web Server
  • MySQL database

Reçete

  1. İndirilen connector extract edildiğinde çıkan Jar dosyasını Glassfish web serverin kurulu olduğu dizinde “lib” klasörüne kopyaladım (C:\glassfish3\glassfish\lib).
  2. Glassfish web server admin ekranına giriş yapıp, JDBC sekmesi altındaki Connection Pool linkine tıkladım. Ve New butonuna basarak yeni bir tane instance yarattım.
  3. javax.sql.DataSource ve MySqli seçtim ve Next e bastım.
  4. portNumber: 3306
    URL:jdbc:mysql://localhost:3306/test
    user:root
    password:xxx bilgilerini girdim. Burada URL yazarken tamamını büyük karakterlerle yazmak gerekir.
  5. Kaydettim ve Pinglediğimde sorunsuz çalıştı.

Kaynaklar

https://blogs.oracle.com/davisn/entry/create_mysql_jdbc_connection_pool

http://www.arthurbuliva.com/node/54

http://www.albeesonline.com/blog/2008/08/06/creating-and-configuring-a-mysql-datasource-in-glassfish-application-server/

NOT
%GLASSFISH%/lib
%GLASSFISH%/domains/domain1/lib
%GLASSFISH%/domains/domain1/lib/ext

Use “exit” to exit and “help” for online help.
asadmin> stop-domain localhost
Waiting for the domain to stop …
Command stop-domain executed successfully.
asadmin> start-domain localhost
Waiting for localhost to start …………….
Successfully started the domain : localhost
domain Location: C:\glassfish3\glassfish\domains\localhost
Log File: C:\glassfish3\glassfish\domains\localhost\logs\server.log
Admin Port: 4848
Command start-domain executed successfully.
asadmin>


06
Feb 12

View Hidden Programs and Services in Startup Applications in Linux Mint 12

Type the following command at the prompt and press Enter.

sudo sed -i ‘s/NoDisplay=true/NoDisplay=false/g’ /etc/xdg/autostart/*.desktop

The command changes the line “NoDisplay=true” to “NoDisplay=false” in the the .desktop files in the autostart directory. We recommend that you copy and paste the command above.

http://helpdeskgeek.com/linux-tips/view-hidden-programs-and-services-in-startup-applications-in-linux-mint-12/

http://helpdeskgeek.com/linux-tips/view-hidden-programs-and-services-in-startup-applications-in-linux-mint-12/

wmic:root\cli


17
Jan 12

PHP escaping inputs and filtering outputs

I’ve spent more time than probably necessary lately to find the best solution to escaping inputs and filtering outputs from your PHP script.

I made the mistake of “over sanitizing” user inputs by first running them through PHP’s filter_var function immediately when capturing the request, then running the data through mysql_real_escape_string(), and then passed it off to PDO, which automatically escapes the bound parameters for you. I ran into problems with special characters, namely single and double quotes because filter_var would convert them to their html_entities or ascii equivalents and store them in the database as such while other data in the application escaped the quotes with a backslash. Rather than go through all the tests I ran, I’ll provide the solution I found that handles inputs best.

Do not convert quotes or any special characters to their ascii equivalents by using htmlspecialchars() or filter_var($var, FILTER_SANITIZE_STRING)
Use PDO or mysql_real_scape_string prior to inserting into the database
When outputting the data, use stripslashes() and htmlentities().

The htmlentities() is important so characters such as a double quote followed by a greater than sign won’t break your html input. If they’re converted to their ascii character, they’ll still print properly and won’t break your html. Also, it’s worth noting that if you enter the value “nick\s” in an input field and save it to the database, the value will be stored as “nick\\s” and when you use stripslashes() on this, only one of the two backslashes will be removed, which is the desired behavior.

Kaynak: http://nickbartlett.com/wordpress/php-escaping-inputs-and-filtering-outputs/


01
Jan 12

HTML5 ile Drag & Drop Upload

HTML ve PHP ile kolayca sürükle bırak yaparak sunucuya dosya yüklemek için güzel bir kod.

HMTL5 ile dosya uploadı yapmak istediğim bir uygulama yazmam gerektiğinde elimde olan bu çok beğendiğim kodu kullanmak için wp’e eklemek istedim. Olurda bir gün bu tarz birşeye ihtiyaç duyarım nerede diye aramayım.

Dosyayı ne olur ne olmaz ben html5-file-upload‘ı buraya upload edeyim ve yine de kaynağını da ekleyim.


11
Dec 11

Resin JavaEE web server

Java tabanlı web sitelerini genelde Tomcat ya da Oracle iPlanet web sunucularında çalıştırıyorum.

Ama Tomcat sayfaları render ederken biraz sorun çıkarmaya başladı. Sayfaların daha doğru render edilmesi ve gereksiz zaman kayıplarından kurtulmak için alternatif ve ücretsiz çözümler aradım. Çözüm olarak Resin Java EE web sunucu görünüyor. Yönetim paneldinden uygulamalar yönetilebiliyor, sorun giderme ve istatistiklerden faydalanabiliniyor. Hemen hemen tüm sistemlerde çalışabilmektedir.

Kurulum için gerekli tgz uzantılı dosyayı indirip extract ettikten sonra terminal ekranında aşağıdaki komutu çalıştırdım.

mac:resin-pro-4.0.24 serkon$ ./configure

Sonuç:

Resin Configuration summary:

  RESIN_HOME  : /usr/local/share/resin-4.0.24
      root    : /var/www
      conf    : /etc/resin
      log     : /var/log/resin
      plugins : common resin_os resin resinssl
  JAVA_HOME: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

    + 64-bit JNI in -I/System/Library/Frameworks/JavaVM.framework/Headers
    + JNI CFLAGS:
    + poll() for keepalives
    +
        OpenSSL include: /usr/include
        OpenSSL lib:
        OpenSSL libraries:  -lssl -lcrypto
mac:resin-pro-4.0.24 serkon$ make
mac:resin-pro-4.0.24 serkon$ make install
bash-3.2# bin/resin.sh start

ile sunucu başlatılır.

Daha sonra yönetim ekranı şifrelerini belirlemek için 127.0.0.1:8080 adresine girilir ve alttaki alanda kullanıcı adı ve şifre üretilir. Gelen açıklamadaki adımlardan birini yapmak yönetim ekranına girmek için yeterlidir. Ben resin.properties içerisine ürettiğim şifreleri girdim. Resin’i indirmek için bu adrese gidilir.