Kod Panosu

Kopyala, Yapıştır, Hatırla, Kodla..

Placeholder Yazılabilen, Şifreler İçin De Kullanılabilen, TabIndex Alabilen TextInput

Orijinal CaptionTextInput Class’ı için bkz. Spark TextInput with Caption (Watermark)

package components
{
	import flash.events.FocusEvent;

	import mx.core.UIComponent;

	import spark.components.TextInput;

	import spark.skins.mobile.TextInputSkin;

	public class CaptionTextInput extends TextInput
	{
		private var _displayAsPassword:Boolean;
		private var _showsCaption:Boolean;
		private var _caption:String;

		public function CaptionTextInput()
		{
			super();
			//	bunu yapmazsak tabIndex calismaz
			this.setStyle("skinClass", Class(spark.skins.mobile.TextInputSkin));
			this.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
			this.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
		}

		[Bindable("change")]
		[Bindable("textChanged")]
		override public function set text(value:String):void {
			this._showsCaption = false;
			super.displayAsPassword = _displayAsPassword;
			super.text = value;
		}

		override public function set displayAsPassword(value:Boolean):void{
			if(!this._showsCaption){
				super.displayAsPassword = value;
			}
			_displayAsPassword = value;
		}

		override public function get text():String {
			if (this._showsCaption) {
				return "";
			}
			else return super.text;
		}

		/**
		 * The value to be shown if the textfield has no text (this.text == '')
		 */
		public function set caption(value:String):void {
			if (super.text == "") {
				super.displayAsPassword = false;
				super.text = value;
				this._caption = value;
				this._showsCaption = true;
			}
		}

		private function onFocusIn(ev:FocusEvent):void {
			if (this._showsCaption) {
				this._showsCaption = false;
				super.displayAsPassword = _displayAsPassword;
				super.text = "";
			}
		}

		private function onFocusOut(ev:FocusEvent):void {
			if (this.text == "") {
				this._showsCaption = true;
				super.displayAsPassword = false;
				super.text = _caption;
			}
		}
	}
}

Flex Mobile Projenizden Çağırdığınız BlazeDS Servislerinizi NetBeans Üzerinden Debug Etmek

  1. https://www.adobe.com/go/lc_blazeds_turnkey adresinden BlazeDS Turnkey’i indirin ve zip dosyasını masaüstüne açın.
  2. http://netbeans.org/downloads/ adresinden NetBeans’in full paketini indirin, varsayılan ayarlarla kurun ve açın.
  3. File > New Project > Java Web > Web Application > Next yolunu takip edin.
  4. Project Name: TestApp
  5. Next butonuna tıklayın.
  6. Karşınıza gelen Server and Settings ekranında Add… butonuna tıklayın.
  7. Apache Tomcat’i seçin Next  butonuna tıklayın.
  8. Karşınıza gelen ekranda Server Location’ın yanındaki Browse… butonuna tıklayın.
  9. Masaüstüne açtığınız “blazeds-turnkey…” adlı klasörün içie girin, “tomcat” adlı klasöre tek tıklayın ve Open butonuna tıklayın.
  10. Username: NetBeans
  11. Password: PASS
  12. Create user if it does not exits seçeneğinin seçili olduğundan emin olun ve Finish butonuna tıklayın.
  13. Karşınızdaki ekranda önce Next sonra da Finish butonuna tıklayın.
  14. Soldaki proje ağacında bulunan WEB-INF klasörünün içindeki “web.xml” dosyasına sağ tıklayın ve silin.
  15. Masaüstüne açtığınız “blazeds-turnkey…” adlı klasörün içine girip tomcat > webapps > blazeds > WEB-INF yolunu takip edin.
  16. Bu klasörün içindeki “flex” klasörünü ve “web.xml” dosyasını sürükleyip NetBeans’de açık olan projenin içindeki WEB-INF klasörünün üzerine bırakın.
  17. Yukarıdaki adımda projeye bıraktığınız “web.xml” dosyasını NetBeans üzerinden açın ve “<!– begin rds ” ve “end rds –>” yazan iki satırı silin.
  18. Yine aynı dosyanın içindeki “<param-value>true</param-value> ” değerini “<param-value>false</param-value> ” olarak değiştirin.
  19. Proje ağacının en üstündeki TestApp’e sağ tıklayın ve Properties’i seçin.
  20. Açılan pencerede Run kısmına gidip “Display Browser on Run” seçeneğinin işaretini kaldırın ve OK butonuna tıklayın.
  21. Proje ağacında bulunan Libraries’e sağ tıklayıp Properties’i seçin.
  22. Açılan pencerede Add Library…’ye, ardından Create…’e  tıklayın.
  23. Library Name: BlazeDS
  24. Library Type: Class Libraries
  25. OK butonuna tıklayın.
  26. Açılan pencerede Add JAR/Folder…’ı tıkladıktan sonra masaüstüne açtığınız “blazeds-turnkey…” adlı klasörün içine girip tomcat > webapps > blazeds > WEB-INF > lib yolunu takip edin.
  27. Ctrl+A tuşlarına basarak burada bulunan tüm .jar dosyalarını seçip Add JAR/Folder butonuna, ardından da Yes butonuna tıklayın.
  28. Ekrandaki pencerelerde sırasıyla OK, Add Library ve OK butonlarına tıklayın.
  29. File > New File… > Java > Java Class > Next yolunu takip edin.
  30. Class Name: EchoService
  31. Package: services
  32. Finish butonuna tıklayın.
  33. Ekrana gelen yeni class’a “public String doEcho(String s) {return s;} ” şeklinde yeni bir metod ekleyin ve kaydedin.
  34. Soldaki proje ağacından WEB-INF > flex > remoting-config.xml dosyasını açın.
  35. </service> satırından hemen önceki satıra <destination id=”EchoServiceDestination”><properties><source>services.EchoService</source></properties></destination> ifadesini yapıştırın ve kaydedin.
  36. Flash Builder’ı açın.
  37. File > New > Flex Mobile Project yolunu takip edin.
  38. Project name: TestApp
  39. İki kere Next dedikten sonra Application server type’ı Java seçip hemen altından da BlazeDS’i işaretleyin.
  40. Root folder: C:\Documents\NetBeansProjects\TestApp\web
  41. Root URL: http://localhost:8400/TestApp
  42. Context root: /TestApp
  43. Output folder: C:\Documents\NetBeansProjects\TestApp\web\apk
  44. Validate Configuration’a tıkladıktan sonra Finish’e tıklayın.
  45. Data > Connect to BlazeDS…’e tıklayın ve No passwords required kutusunu işaretleyip OK deyin.
  46. Açılan ekranda EchoServiceDestination’ın yanındaki kutuyu işaretleyip Finish’e tıklayın.
  47. NetBeans’e dönüp doEcho metoduna breakpoint koyduktan sonra Debug > Debug Project’e tıklayın.
  48. Tekrar Flash Builder’a dönüp önce alt kısımda bulunan Data/Services tabına tıklayın, ardından doEcho’ya sağ tıklayıp Test Operation… deyin.
  49. Açılan ekranda Test butonuna tıkladığınızda NetBeans’e koyduğunuz breakpoint’in çalıştığını göreceksiniz.

Terminalde INSERT, DELETE, HOME, END vs. Tuşlarına Basınca Tilda (~) Çıkması

Terminalde INSERT, DELETE, HOME, END vs. tuşlarına bastığınızda ekranda ~ yazıyorsa ~/.inputrc dosyasının sonuna aşağıdaki satırları ekleyerek sorunu giderebilirsiniz. Bu dosya mevcut değilse oluşturmanız gerekir.

"\e[1~": beginning-of-line
"\e[2~": quoted-insert
"\e[3~": delete-char
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[7~": beginning-of-line

Linux Üzerinde MongoDB Sunucusu Kurmak

sudo apt-get install mongodb-server
sudo mkdir -p /data/db
sudo chmod 0755 /data/db
sudo chown [kullanici_adi] /data/db

Ubuntu Terminal’de CMD Tarzı Otomatik Tamamlama

Varsayılan olarak Ubuntu terminali bir komutun bir kısmını yazıp tab tuşuna bastığınızda Windows’daki CMD gibi bulunduğunuz satır içinde yazdığınıza benzer komutları sırayla dolaşmak yerine yeni bir satırda muhtemel komutların bir listesini gösterir. CMD tarzı otomatik tamamlama özelliğini aktifleştrimek için önce

gedit ~/.bashrc

komutunu çalıştırın ve açılan ekranın en altına şu satırı ekleyip kaydedin:

bind '"\t":menu-complete'

Ardından bu özelliği büyük/küçük harf duyarsız bir şekilde kullanmak için

gedit ~/.inputrc

komutunu çalıştırın ve şu satırı ekleyip kaydedin:

set completion-ignore-case On

Elemanların Tarayıcı Tarafından Hesaplanmış Yüksekliklerini Çekmek

jQuery‘nin innerHeight ve outerHeight fonksiyonlarını kullanarak örneğin bir div’in browser tarafından hesaplanmış dinamik yükseklik değerlerini çekebilirsiniz.

JavaScript: Unary + Operator

Eğer siz de benim gibi JavaScript’te string’leri integer’a çevirmek için parseInt fonksiyonuna alternatif bir yazım arıyorsanız tek taraflı (unary) + operatörünü kullanabilirsiniz.

Örnek:

var nums = ['100','300','400','60','40'], 
    num = 0;

for (var i = 0; i < nums.length; i++) {
    num += +nums[i];
}

alert(num);  // 900

Ayrıntılı bilgi: http://xkr.us/articles/javascript/unary-add/

Thanks to: Vitaliy Petrychuk

Node.JS: NPM ile Kurduğunuz Modülleri package.json Dosyasına Kaydettirmek

Node.JS projenize NPM kullanarak dahil etmek istediğiniz modülleri

npm install <moduladi> --save

veya

npm install <moduladi> -S

şeklinde kurarsanız kurduğunuz modüller package.json dosyasındaki dependencies bölümüne kaydolur.

Böylece node_modules klasörünü hariç tutup sadece projenize ait olan kodu başka bir kaynağa taşımanız durumuna sadece

npm install

komutuyla projenizde kullandığınız tüm modülleri tek seferde çekmiş olursunuz.

Github Hesabınızla HTTP Üzerinden Clone ve Push İşlemleri Yapmak

Eğer internete okuldan veya işyerinden bağlanıyorsanız ve SSH ve/veya HTTPS ile ilgili kısıtlamalar mevcutsa GitHub hesabınızla ilgili işlemlerinizi HTTP üzerinden gerçekleştirebilirsiniz.

Repository’nizi Clone ederken GitHub’ın size verdiği

https://github.com/snowy73/HelloGit.git

formatındaki adresteki https’i http’ye çevirip

http://github.com/snowy73/HelloGit.git

formatında bir adres kullanırsanız, Push işlemi esnasında git client’ı size GitHub kullanıcı adınızı ve şifrenizi sorar. Bu bilgileri doğru bir şekilde girdiğiniz takdirde Repository’nize başarılı bir şekilde Push işleminde bulunursunuz.

Kaynak: Smart HTTP Support – Github Blog

Çalışan BAT Dosyasının Diskte Bulunduğu Yolu Bilmesi

Çalışmakta olan bir BAT dosyasının disk üzerinde nerede bulunduğunu %~dp0 değişkeniyle çekebilirsiniz.

%~dpI değişkeni %I’ıncı argümanın sürücü harfinin (d) ve yolunun (p) birleştirilmiş halidir. Her BAT dosyasının ilk argümanı da kendisi olduğundan dolayı %~dp0 terimi BAT dosyasının kendi yolunu temsil eder.

Aşağıdaki örnek nmp.cmd örnek alınarak hazırlanmıştır. Önce BAT’ın bulunduğu klasörde node.exe’nin bulunup bulunmadığı test edilir. Yoksa node.exe ortam değişkenlerinin yardımıyla çalıştırılır. Varsa doğrudan çalıştırılır. %* ise BAT dosyasına gönderilen diğer argümanları node.exe’ye paslamak için kullanılmaktadır.

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe" "%~dp0\.\node_modules\nodemon\nodemon.js" %*
) ELSE (
  node "%~dp0\.\node_modules\nodemon\nodemon.js" %*
)

Ayrıntılı bilgi için:

for /?