12
Jan 14

Jquery ile Mevcut URL Bilgilerini Almak

Sayfa üzerindeki formda yapmış olduğum değişiklikleri kaydetmek istedim ve bunun için ajax ile belirli bir adrese değişiklikleri gönderip tekrar bulunduğum sayfaya gelmesini istedim.

Bulunduğum sayfayı da aşağıdaki gibi parametreler ile detaylıca alabiliyorum.

Örnek

http://www.refulz.com:8082/index.php#tab2?foo=789

Parse Sonuçları
host: www.refulz.com:8082
hostname: www.refulz.com
port: 8082
protocol: http
pathname: index.php
href: http://www.refulz.com:8082/index.php#tab2
hash: #tab2
search: ?foo=789

var x = $(location).attr('');
$(location).attr('href'); // http://www.refulz.com:8082/index.php#tab2 
$(location).attr('pathname'); // index.php

27
Oct 13

Windowsun İşletim Sisteminin Kaç Bit Olduğunu Öğrenmek

Uygulama kurulumu esnasında karşılaşılan en sık sorulardan biri de 64bit mi 32bit mi uygulama indirmem gerekiyor sorusu heralde.

Windows’un kaç bit olduğunu öğrenmenin kolay bir yolu var aslında. Bunun için Windows+R tuşuna basarak açılan pencereye (ya da Başlat / Çalıştır) sıra ile aşağıdaki komutlar yazılır.

cmd
wmic os get osarchitecture

Geri dönüş değerleri ise şudur

C:\Users\serkan>wmic os get osarchitecture
OSArchitecture
64-bit

Artık kurulum yapılacak makinanın mimarisini biliyoruz.


14
Oct 13

USB Bootable Mac OS X Installer

USB üzerinden kurulabilir bir Mac OS X için yapılması gerekenleri kısaca tarif etmeye çalışacağım. Uygulama kullanarak bootable usb oluşturma hakkında daha önce bir bir anlatım yapmışım ancak bu anlatım manuel olarak nasıl gerçekleştirildiğini kapsamaktadır.

  • Gizli dosyaların gösterimini etkin hale getirmek gerek. Terminal.app uygulamasını açarak sırayla aşağıdaki iki komut çalıştırılır.
    defaults write com.apple.Finder AppleShowAllFiles YES
    killall Finder
    
  • İndirilmiş Mac OS X installer’ı sisteme mount edilir ve içerisinden çıkan install Os X.app üzerinde sağ klik ile “Show Package Content” seçilerek içerisine girilir.
  • “Contents/SharedSupport” klasörüne gidilir. Burada “InstallESD.dmg” dosyası görülecektir. Bu dosyaya da iki kere tıklanarak mount edilmesi sağlanır.
  • Mount işlemi tamamlandıktan sonra gizli “BaseSystem.dmg” dosyası mount edilmiş olarak karşımızıa çıkacaktır.
  • Disk Utility programı açılır. USB disk seçilerek “Partition Layout” dan en üsteki “1 partition” seçilerek Mac OS Extended (Journaled) olarak formatlanır.
  • Daha sonra sol taraftan mount edilen BaseSystem.dmg dosyası seçilir. Burada “Restore” tabına gelinir. Destination alanına USB disk sol taraftan sürükleyerek bırakılır
  • Yükleme işlemi tamamlandıktan sonra USB disk kendiliğinden açılacaktır (OS X Base System) ve içerisinde System/Installation klasörü olacaktır. Buraya gidilir ve Package kısayolu buradan silinerek referans verdiği yerdeki tüm paket buraya kopyalanır.
  • USB driver artık bootable oldu. Restart ederken Alt (option) tuşuna basılı tutarak sistem açılır

05
Oct 13

What is the differency between Permission and Privilege?

I decide the write some article in English. I want to improve my grammer. Maybe sometime or frequencly i make mistake but I know you can understand what i want to talk about.

So, differency about to things is simple: In computer security, a permission is quite different from a privilege.

A permission is a property of an object, such as a file. It says which agents are permitted to use the object, and what they are permitted to do (read it, modify it, etc.).

A privilege is a property of an agent, such as a user. It lets the agent do things that are not ordinarily allowed. For example, there are privileges which allow an agent to access an object that it does not have permission to access, and privileges which allow an agent to perform maintenance functions such as restart the computer.


12
Jul 13

Soldan Sağa Kayan Popup

Daha sonradan düzeltmek üzere buraya hazırlamış olduğum bir scripti eklemek istiyorum.

/* Pop Up Left to Right*/
/*		body						{overflow: hidden;}
 * 		.container					{position: relative; width: 200%; height: 100%; overflow: none;}
 * 		.content					{position: absolute; left: 0px; right:0px; height: 100%;}
 * 		.popup						{position: absolute; left: 0px; right: 50%; height: 100%;  background-color: #10786e; z-index: 4; opacity: 0.6;}
 * 		.popup  div					{zooom:1; display: inline-block; white-space: nowrap;}
*/

/*
jQuery.fn.popup = function(speed, type) {
	var animSpeed = (speed == null) ? 600 : speed;
	var easeType = "easeOutCubic";
	$(".container").stop().animate({"left" : -$(".popup").width()}, animSpeed, easeType);
	$(".popup").addClass("popupActive");
	//$(".content").animate({"opacity":"0"},1000);
	//$(".popup").animate({"opacity":"1"},1200);
	$(".popClose").click(function(){
		$(".popup").removeClass("popupActive");
		//$(".content").animate({"opacity":"1"},1200);
		//$(".popup").animate({"opacity":"0"},1000);
		$(".container").animate({"left" : 0}, animSpeed, easeType);
	});
};
*/

22
Jun 13

Javascipt ile Daktilo Efekti

Bir elemen içerisindeki texti başka bir elemanın içerisine sanki daktilo ile yazıyor efekti oluşturur.

Html Kodu

<div class="wrap">
  <a href="#" class="start">Click to print</a>
  <div class="test" data-text="Augue ac adipiscing quis, arcu auctor! Elementum. Non vel
vel augue odio et in et est, integer, porta sed parturient rhoncus habitasse! Et porttitor duis pulvinar 
pulvinar proin ac augue ac sagittis scelerisque, elementum integer eros. Sed, nec! Porta, dapibus in quis 
elementum penatibus adipiscing, nec adipiscing adipiscing purus lacus odio dolor diam a, elementum etiam? 
Placerat, etiam eros porttitor, tincidunt nunc sit nascetur purus risus sed adipiscing augue, porta a proin. 
Pid platea pid dignissim adipiscing dapibus dolor turpis placerat augue et urna, mauris porttitor ut ac, ut 
mid. Pid, est vut placerat mattis lectus! Mattis in mus, augue scelerisque in. In velit, dictumst ut mus 
tincidunt dapibus? Est, velit vel? Risus pulvinar penatibus ut amet sociis, est 
montes."></div>
</div>

Javascript Kodu

Proje içerisine Jquery eklenmesi gerekir.

 /**
 * http://pixelhunter.me/
 * 
 * text {String} - printing text
 * n {Number} - from what letter to start
 */
function typeWriter(text, n) {
  if (n < (text.length)) {
    $('.test').html(text.substring(0, n+1));
    n++;
    setTimeout(function() {
      typeWriter(text, n)
    }, 100);
  }
}

$('.start').click(function(e) {
  e.stopPropagation();
  var text = $('.test').data('text');
  typeWriter(text, 0);
});

23
May 13

MAC OS X Üzerine Subversion Command-Line Client Kurulumu

Mac Os X üzerine SVN kurmak için ya da SVN’i güncellemek için aşağıdaki adımları gerçekleştireceğim.

Makinamda Mac Os X Lion (10.8.3) sürümü var ve terminal ekranından “svn” komutunu çalıştırdığımda bana sisteme yüklü bir svn sunucunun olduğunu söylüyor. Biliyorum ki, SVN 1.6.x ile 1.7x sürümleri arasında repoyu aktarma esnasında sıkıntı çıkarmaktadır. Bu nedenle SVN’imi güncellemek istiyorum.

Öncelikle varsa mevcut SVN sürümünü kontrol ediyorum.

Serkans-iMac:~ serkank$ svn help
Subversion command-line client, version 1.6.18.

Bu adresten Apache Subversion 1.7.x sürümünü indiriyorum. İndirdiğim dosyayı extract ederek kuruluma hazır hale getiriyorum. Daha sonra terminal ekranında kurulum dosyalarının olduğu pathe giderek aşağıdaki komutları sıra ile çalıştırıyorum.

cd /Users/serkank/Downloads/Temp/SVN/subversion-1.7.9
./configure
make
sudo make install

Bu komutları ardı ardına çalıştırdığımda SVN başarılı bir şekilde kuruldu. Terminal ekranından “svn help” ile sürümünü sorguladığımda hala eski svn client cavep verdiğini gördüm. Eski SVN “/usr/bin” pathinden yanıt veriyor, yenisi ise “/usr/local/bin” altında kurulu. PATH dosyasının içerisine girerek sıralamayı değiştirdiğimde sıkıntı ortadan kalktı.

cd /etc
open paths

Sıralamayı şu şekilde ayarladım:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

Şimdi sorgulama yaptığımda yeni yüklediğim svn command-line clienttan yanıt alabiliyorum

Serkans-iMac:~ serkank$ svn help
Subversion command-line client, version 1.7.9.

28
Mar 13

Tasarım Yaparken Nelere Dikkat Ediyorum

Tasarım yaparken dikkat ettiğim hususları not edeyim istedim. Bunlar aslında sadece bir bölümü. Yazmadığım daha bir çok şey var. Örneğin size gelen istekler, o günkü halet-i ruhiye, haftabaşı mı sonu mu olduğu, kaç bardak kahve içtiğin vs gibi …

  1. Hedefi ön plana çıkarmak: Açılan sayfada, önemli olan noktaları öne çıkaran baskın alanlar oluşturarak, kullanıcının dikkatini hedefe yönlendiren tasarım yaratmaya dikkat ederim.
  2. Esneklik: Her platformda ve tarayıcıda doğru bir şekilde görüntülenebilmesini sağlayacak tasarım gerçekleştirmeye gayret ederim.
  3. Kategorizasyon: Sayfanın hiyerarşisini oluştururken büyük çaba sarfetmek gerek. Gelişi güzel gruplandırılmış sayfalar hem tasarımcının hem de kullanıcının işini zorlaştırır.
  4. Bütünlük: Çok abartılı olmayan ve birbirleriyle uyumlu objeler kullanmanın, tasarımın başarısını artırdığını düşünüyorum. Bu nedenle tablolarda, butonlarda, menülerde aynı hissiyatı uyandıracak çizimler yaparak bütünlüğün bozulmamasına dikkat ediyorum.
  5. İkonlar: İkonlar çok karmaşık bir mevzu kafamda. Çoğu zaman kullanmayı tercih etmiyorum. Kullansamda eskilerin yaptığı gibi değilde; tek renk kullamyı tercih ediyorum, ki genelde bu koyu gri renk tonlarında oluyor. Son zamanlar uygulama arayüzü geliştirmekte olduğum için çok sayıda ikonla haşırneşir oldum. Bence typografinin olduğu yerde ikon çok da şart değil. Ancak iyi seçilmiş bir font ile oluşturulmuş metin ve iyi seçilmiş bir renk ile oluşturulmuş ikonun bir arada olduğu tasarımların da yerini hiçbirşey dolduramaz.
  6. Okunabilirlik: Bence her şey burada başlar. Font tasarımın bel kemiğidir. Dikkatli seçilmelidir ve iyi ayarlanmalıdır. Aynı seviyedeki içeriği aynı boyutta, daha düşük seviyedekileri küçük boyutta kullanmak gerekir. Font iyidir üzerinde en çok durulacak konudur.
  7. Renk: Ben bir renk seçerim ve o rengin tonlarıyla devam ederim. Bütünlüğü bozmamaya yarar bu genelde. Farklı renkleri kullandığım da olur. Ne zaman ki birşey diğeriyle zıt etki yaratacak işte o zaman. Zaten biliniyordur bu; yeşil her zaman olumlu, kırmızı her zaman olumsuzdur. Bilinen standartlar var onlara uymaya dikkat ederim.
  8. Kullanıcı potansiyeli: Uygulamayı kimlerin kullanacağı da önemli. O uygulamayı kullanacak kişilerin bilgisayar deneyimi, yaş ortalaması vs. bunlar biliniyorsa şekiller renkler boyutlar değişir. Ki ben genelde kamu sektöründe hizmet verdiğim için kullanıcıların beklentilerini az çok tahmin edebiliyorum.

14
Mar 13

İç İçe Geçmiş Sınıflar (Nested Classes)

Only nested classes can be static. By doing so you can use the nested class without having an instance of the outer class

class OuterClass{
    public static class StaticNestedClass{
    }

    public class InnerClass{
    }

    public InnerClass getAnInnerClass(){
        return new InnerClass();
    }

    //This method doesn't work
    public static InnerClass getAnInnerClassStatically(){
        return new InnerClass();
    }
}

class OtherClass{
    //Use of a static nested class:
    private OuterClass.StaticNestedClass staticNestedClass = new OuterClass.StaticNestedClass();

    //Doesn't work
    private OuterClass.InnerClass innerClass = new OuterClass.InnerClass();

    //Use of an inner class:
    private OuterClass outerclass= new OuterClass();
    private OuterClass.InnerClass innerClass2 = outerclass.getAnInnerClass();
    private OuterClass.InnerClass innerClass3 = outerclass.new InnerClass();
}

Sources :

On the same topic :


01
Jan 13

Total Finder ile Dosya Yönetimi

Daha önceki yazımda Finder’ın CUT özelliğini nasıl aktif hale getirdiğimi bahsetmiştim. Ancak bu özellik aktif olsa bile işe yaramıyordu. Hatta dosyanın kaybolmasına neden oluyor bir daha geri alamıyordum. Mac OS X ile gelen Finder uygulamasının özellikleri arasında Cut yani (Kes) olmaması nedeni ile alternatif bir çok uygulama araştırdım.

Bunlar içerisinde en çok işime yarayan ve bir çok ekstra özellikler ile işimi kolaylaştıran bir uygulamaya rastladım. TotalFinder beni bir çok sıkıntıdan kurtararak işlerimi kolaylaştırdı ve bir dosya yönetim uygulamasında olmasını beklediğim özellikleri karşılamamı sağladı. Bu nedenle yeni bir Mac OS kurulumunda yaptığım ilk şeylerden birisi de TotalFinder‘ın sitesini ziyaret ederek uygulamanın güncel versiyonunu indirip sistemime kurmak oluyor.

Finder Cut

Normalde finder ekranında CMD+X yapınca cut etme özelliği mevcut lakin bu özellik disabled bir özellik. Açmak için şuna ihtiyaç var:

defaults delete com.apple.finder AllowCutForItems

Visor

Linux’da dosya yönetim işlerini kolaylaştıran bir uygulama vardı. Adını şimdi hatırlamıyorum. CTRL + CTRL tuşu gibi bir kombinasyon seçildiğinde otomatik olarak dosya yönetim ekranı aktif oluyor ve kolayca işlem yapabiliyorsunuz. Total Finder ile de bu kolayca yapılıyor. Visor ile CTRL ye 2 kere basıldıpında pencere otomatik olarak açılıyor ve işlemleri tamamladıktan sonra yine aynı yöntemle ortadan kaybolabiliyor. Total Finder’a rastlamamdaki etkende bu idi zaten. Google da o uygulamanın MAC deki versiyonuna benzeri olarak karşıma çıkmıştı.

Google Benzeri TAB ile Pencereleri Yönetme

Total Finder ayrıca Finder’da olmayan TAB özelliği ile kolayca birden fazla yan yana açılmış ekranlar oluşturabiliyor ve ekranda oluşan pencere karmaşasından kurtarıyor kullanıcıyı.

Dosyalar En Üstte

Finder’daki bir diğer sıkıntı da dosyaların Tür’e göre sıralanmasına rağmen hala aralarda kalması. Bu benim gibi Windows’tan MAC’e geçiş yapan kişiler için bir sıkıntı oluşturabiliyor. Alışık değilim. Dosyalar benim için her zaman en üstte durmalılar.

Sistem Dosyalarını Gösterme

Normalde Finder sistem dosyalarının gözükmesini istemiyor. Bunu yine Terminal ekranına komut girerek yapabiliyorsunuz ancak gelen özelliği ile bu mümkün değil. Total Finder bunu da kolaylaştırıyor. Kolayca menüden sistem dosyalarını göster ya da sakla diyebiliyorsunuz.

Dosya Yolunu Kopyalama

Bir dosya açtığımda bu dosya ile terminal ekranında bazı işlemler yapmak istediğimde tek tek terminal ekranına dosyanın ya adresini giriyordum ya da Finder’ın “Get Info” seçeneğini kullanarak ayrı bir pencerede dosya yolunu kopyalıyordum. Bunu Total Finder ile yapmak çok kolay dosya üzerine sağ klik yaparak dosya yolunu (Path) kolayca alabiliyorsunuz.

Dual Mode

Dual mode ile yan yana aynı pencere içerisinde 2 ekran açarak herhangi bir başka ekrana geçiş yapmadan sürükle bırak ile dosya kopyalama, taşıma işlemlerini kolayca yapabiliyorsunuz.

Bu nedenlerle Total Finder’ı indirmek için buraya gitmeniz gerekir.


06
Dec 12

String Bir Değerden Son Elemanı Çıkartmak

Herhangi bir String ‘in sonuncu elemanını bu değerden çıkarmak istediğimde yapılması gereken işlemi bazen unuttuğum oluyor.

Bunu bazen PHP, JAVA bazende JavaScript ile yapmam gerekiyor. Hafızama güvenmediğim ap açık belli.

PHP ile String değerin sonuncu karakterini çıkartma

Toplamda 3 farklı yöntem ile yapılabilir. Bunlardan bir tanesi

// substr function
echo "substr: " . substr($string, 0, -1);

İkincisi

// substr_replace function
echo "substr_replace: " . substr_replace($string ,"",-1);

Üçüncüsü de

$string = "This is test string..";
// rtrim function
echo "rtrim: " . rtrim($string, ".");

Javascript ile String Değerin Sonuncu Karakterini Çıkartmak

Bunun için aşağıdaki method kullanılabilir.

var newString = "Hello World!".slice(0, -1);

Bir string değeri diziye bölerek sonuncu elemanını almak için aşağıdaki yöntem kullanılabilir.

var url = "http://www.serkankonakci.com/son/eleman";
	alert(url.substring(url.lastIndexOf('/') + 1));

Input file methodu ile load edilmeye çalışılan bir dosyanın adını almak istenirse aşağıdaki kod kullanılmalıdır.

$file = $('input[type=file]').val();  // Çıktısı c:/fakepath/filename.html
var fileName = $file.split('/').pop().split('\\').pop();
alert(fileName); // Çıktısı filename.html

Java ile Değer Çıkartma

Son karakter için de string değerin length’ini alıp 0 ile str.length()-1 arasını seçerek çıkarılabilir.

public class HelloWorld{
       public static void main(String []args){
          String str = "12345678901234567";
          System.out.println(str.substring(0,(str.length()-1)) );
       }
   }

04
Dec 12

URL Rewrite Modül’ü ile HTTP isteklerini HTTPS’e Redirect Etmek

IIS 7x sunucusu üzerinde hizmet veren siteye gelen HTTP isteklerini HTTPS protokolüne yönlendirmek istedim.

Bunu gerçekleştirmek için yaptığım araştırma sonucunda URL Rewrite Modülü’nün yüklenmesi gerektiğini öğrendim. Bir diğer yöntem de Error Sayfası oluşturarak window.location ile 403.4 – SSL required sayfasına gelen istekleri https’e çevirerek redirek etmek olabilir. Bu method için buraya göz atılabilir.

URL Rewrite Modül 2.o rol tabanlı yeniden isimlendirme mekanizması ile kullanıcının talep etmiş olduğu URL’in sunucuda işlenmeden önce değiştirilmesini ve oluşturulan içeriğin kullanıcılara gönderilmeden önce düzenlenmesini sağlar.

Modülü indirmek için

rewrite_2.0_rtw_x64.msi 6.1 MB

Modülün Update’ini indirmek için

rewrite_2.0_rtw_x64_KB2749660.msp 320 KB

Modülün kurulumunu yapıp sunucuyu yeniden başlattıktan sonra Web.config dosyasına aşağıdaki kod parçası eklendiğinde tüm HTTP trafiği HTTPS’e yönlendirilecektir.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{REQUEST_URI}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

URL Rewrite Modülü’nün kullanımı ile ilgili diğer bir örneği incelemek için burası ziyaret edilebilir. Bu örnekte QueryString olarak verilen bir URL’i nasıl bir Folder yapısına dönüştürüldüğü açıklanmaktadır.

Konu ile ilgili daha fazla bilgiye buradan ulaşılabilir.

via Download URL Rewrite Module 2.0 for IIS 7 (x64) from Official Microsoft Download Center.


26
Nov 12

Fiddler ile CURL Request/Response Takip Etme

Fiddler bir Web Debugging Proxy’sidir. Bilgisayar ile internet arasındaki tüm HTTP(S) trafiğini loglayarak gelen giden içeriği kontrol etme imkanı sunar.

Fiddlerın sitesine buradan gidilebilir. Eğer Fiddler ile curl request-response görmek istiyorsak, CURL’e Fiddler’ın proxy adresini bildirmemiz gerekir. Bunu yapabilmek için komutu -x parametresi ile kullanmak gerekir.

curl -x 127.0.0.1:8888 http://www.serkankonakci.com

Eğer gidilecek URL https ise parametreyi -k ile beraber kullanmak gerekir. Bu parametre ile CURL’un SSL doğrulaması iptal edilecektir.

curl -k -x 127.0.0.1:8888 https://www.google.com

21
Nov 12

Java ile Basic Authentication

Java ile HTTP Basic Authentication yaparak içerisindeki verileri analiz etmem gerekti.

Aşağıdaki kod ile bunu nasıl yaptığımı örneklemeye çalıştım. İlerleyen dönemlerde tekrar kullanacağımı biliyorum. Not edeyim biryerlere.

package connection;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import connection.MyBase;
@WebServlet("/urlConnection")
public class urlConnection extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public urlConnection() {
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		URL url = new URL("http://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx?0.6777986267115921");
		//URL url = new URL("http://www.kamusm.gov.tr");
		HttpURLConnection connect = (HttpURLConnection)url.openConnection();
		String encoding = "httpwatch:fsdf";
		encoding =  MyBase.encode(encoding.getBytes());
		connect.setDoInput(true);
		connect.setRequestMethod("GET"); 
		connect.setRequestProperty("Content-Type","text/html"); 
		connect.setReadTimeout(5000);
		connect.setConnectTimeout(5000);
		connect.setRequestProperty("Authorization","Basic " + encoding);
		connect.connect();
		InputStream in = connect.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		StringBuilder sb = new StringBuilder();
		String line;
		while ((line = br.readLine()) != null) {
			sb.append(line);
		}
		String content = sb.toString();
		System.out.println(content);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

}

Bu arada base64 converter için hazır bir kod kullanıyorum. MyBase.class ile bir veriyi base64 olarak encode edebiliyorum.

package connection;

public class MyBase {

	private final static char[] ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
			.toCharArray();

	private static int[] toInt = new int[128];

	static {
		for (int i = 0; i < ALPHABET.length; i++) {
			toInt[ALPHABET[i]] = i;
		}
	}

	/**
	 * Translates the specified byte array into Base64 string.
	 * 
	 * @param buf
	 *            the byte array (not null)
	 * @return the translated Base64 string (not null)
	 */
	public static String encode(byte[] buf) {
		int size = buf.length;
		char[] ar = new char[((size + 2) / 3) * 4];
		int a = 0;
		int i = 0;
		while (i < size) {
			byte b0 = buf[i++];
			byte b1 = (i < size) ? buf[i++] : 0;
			byte b2 = (i < size) ? buf[i++] : 0;

			int mask = 0x3F;
			ar[a++] = ALPHABET[(b0 >> 2) & mask];
			ar[a++] = ALPHABET[((b0 < < 4) | ((b1 & 0xFF) >> 4)) & mask];
			ar[a++] = ALPHABET[((b1 < < 2) | ((b2 & 0xFF) >> 6)) & mask];
			ar[a++] = ALPHABET[b2 & mask];
		}
		switch (size % 3) {
		case 1:
			ar[--a] = '=';
		case 2:
			ar[--a] = '=';
		}
		return new String(ar);
	}

	/**
	 * Translates the specified Base64 string into a byte array.
	 * 
	 * @param s
	 *            the Base64 string (not null)
	 * @return the byte array (not null)
	 */
	public static byte[] decode(String s) {
		int delta = s.endsWith("==") ? 2 : s.endsWith("=") ? 1 : 0;
		byte[] buffer = new byte[s.length() * 3 / 4 - delta];
		int mask = 0xFF;
		int index = 0;
		for (int i = 0; i < s.length(); i += 4) {
			int c0 = toInt[s.charAt(i)];
			int c1 = toInt[s.charAt(i + 1)];
			buffer[index++] = (byte) (((c0 << 2) | (c1 >> 4)) & mask);
			if (index >= buffer.length) {
				return buffer;
			}
			int c2 = toInt[s.charAt(i + 2)];
			buffer[index++] = (byte) (((c1 < < 4) | (c2 >> 2)) & mask);
			if (index >= buffer.length) {
				return buffer;
			}
			int c3 = toInt[s.charAt(i + 3)];
			buffer[index++] = (byte) (((c2 < < 6) | c3) & mask);
		}
		return buffer;
	}

}


16
Nov 12

Verileri XML Properties Dosyasına Aktarmak

Aşağıda bir properties objesi içerisinde tutulan bir veriyi xml dosyası şeklinde nasıl kaydedileceğinin örneği yer almaktadır.

Veriyi bir xml içerisine bastırmadan önce bazı ifadeleri aşağıdakiler ile güncellemek gerekecektir.

< to &lt;
> to &gt;
& to &amp;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class PropertiesXMLExample
{
    public static void main(String[] args) throws IOException
    {	
    	Properties props = new Properties();
    	props.setProperty("email.support", "donot-spam-me@nospam.com");

    	//where to store?
    	OutputStream os = new FileOutputStream("d:/email-configuration.xml");

    	//store the properties detail into a pre-defined XML file
    	props.storeToXML(os, "Support Email","UTF-8");

    	System.out.println("Done");
    }
}

D:\email-configuration.xml dosyası aşağıdaki gibi olacaktır.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>Support Email</comment>
	<entry key="email.support">donot-spam-me@nospam.com</entry>
</properties>

Properties Objesi içerisine XML Dosyasından Veri Okuma

Bunu yapmak için aşağıdaki kod kullanılabilir.

package com.mkyong;
 
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
 
public class PropertiesXMLExample
{
    public static void main(String[] args) throws IOException
    {	
    	Properties props = new Properties();
 
    	InputStream is = new FileInputStream("c:/email-configuration.xml");
    	//load the xml file into properties format
    	props.loadFromXML(is);
 
    	String email = props.getProperty("email.support");
 
    	System.out.println(email);
 
    }
}

Kaynak: http://www.mkyong.com/java/how-to-store-properties-into-xml-file/