Kod Panosu
Kopyala, Yapıştır, Hatırla, Kodla..
Bir Web Servis’i C# Class Library’si (DLL) İle Consume Etmek
Yazar 22/05/2013
Örnek olarak http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx?wsdl adresindeki servisi C#’da yazdığınız bir DLL vasıtasıyla ve nihâi olarak VBScript ortamında consume etmek istediğinizi varsayalım.
DLL’in oluşturulması
1- Visual Studio’yu açın ve File > New > Project.. > Visual C# yolundan bir Class Library projesi oluşturun.
2- Yukarıda verilen adresten servis referansınızı ekleyin.
3- “C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin” yolundaki guidgen.exe’yi çalıştırın ve bir GUID üretin. (Ör: E38E0011-D037-4e7b-AB0E-BDB725A9D2F4)
4- Class’ınızı aşağıdakine benzer bir hâle getirin.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.ServiceModel;
using ServiceLib.ServiceReference1;
namespace ServiceLib
{
[ComVisible(true)]
[ProgId("ServiceUser")]
[Guid("E38E0011-D037-4e7b-AB0E-BDB725A9D2F4")]
public class ServiceUser
{
public string test(string email)
{
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", this.GetType().Assembly.Location+".config");
EmailVerNoTestEmailSoapChannel proxy = new ChannelFactory("EmailVerNoTestEmailSoap12").CreateChannel();
ReturnIndicator res;
res = proxy.VerifyEmail(email, "");
return res.GoodEmail.ToString();
}
}
}
5- Proje özellikleri ekranında Signing’in altında Sign the assembly kutucuğunu işaretleyin, yeni bir imza üretin ve ayarları kaydedin.
6- Projeyi build edin.
DLL’in Sisteme COM Objesi Olarak Register Edilmesi
7- Console’dan C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /codebase “C:\projenize\giden\yol\ServiceLib.dll” komutunu çalıştırın.
DLL’in VBScript Ortamında Kullanılması
dim myObj
set myObj = CreateObject("ServiceUser")
MsgBox myObj.test("q@q.com")
şeklinde bir .vbs dosyası oluşturun ve dosyayı çalıştırın.
Kaynakça
http://bytes.com/topic/c-sharp/answers/829749-change-default-config-file-name
http://www.dirkstrauss.com/programming/calling-a-net-dll-from-vbscript
MongoVUE
Yazar 05/04/2013
MongoDB veritabanınızı yönetmek için önerebileceğim grafik arayüz MongoVUE bu adresten indirilebilir.
Flex Mobile İçin Kenarlarda Esnemeyen Scroller
Yazar 18/01/2013
http://code.google.com/p/avladov/source/browse/trunk/flex4/src/com/avladov/components/Scroller.as
overshootEnabled = false yapmayı unutmayın.
Flex Mobile veya AIR Desktop ile SQLite Veritabanı Kullananlara Notlar
Yazar 12/01/2013
- FlexORM kullanırsanız datanızı SQLite veritabanı gibi değil, RAM’de duran bir ArrayCollection gibi yönetirsiniz. Bu da datayı compenentlere bind ederken büyük kolaylık sağlar.
- Genelde async bağlantı kullanmanız tavsiye edilir (SQLConnection.openAsync()) ama böyle yaprasanız her DB çağrısına bir Responder yazmak zorunda kalırsınız ve sonuçta kod spagettiye döner, maintain edemezsiniz. Benim tavsiyem sekron bağlantı kurmak ve datayı listelerken bir sayfalama mekanizması kulanmaktan yana. Bunu yapmak için http://www.riaspace.com/paged-list-loaded-from-sqlite-in-adobe-air adresindeki makaleyi incelemenizi tavsiye ederim.
- FlexORM ve sekron bağlantı kullanarak AsyncListView’e sayfalandırılmış data doldurmayı denediğim örnek projemi https://github.com/snowy73/PersonelLite adresindeki repositoryden incelleyebilirsiniz. ÖNEMLİ NOT: Bu projede kullanılan FlexORM kaynak kodu v0.8.2′den clonelanmış ve bir miktar değiştirilmiştir (https://github.com/snowy73/PersonelLite/blob/master/src/flexorm-degisiklikler.txt)
- AIR’ın SQLite veritabanlarını şifreleme yöntemi çoğu veritabanı yönetim aracına uymadığından projenizi ilk başta şifrelenmiş veritabanı kullanacak şekilde başlatırsanız veritabanı büyüdükçe yönetmek zorlaşır. Ama development ortamında şifresiz veritabanı kullanıp projeyi production ortamına aktarmadan önce veritananınızı https://github.com/probertson/air-sqlite/blob/DB-copy-dev/src/com/probertson/data/DBCopier.as adresinde bulabileceğiniz classı kullanarak şifreleyebilirsiniz. Bu classı düzgün bir şekilde kullanmak için ilgili repository’nin DB-copy-dev adlı branch’ini kullanmanız gerekir.
Placeholder Yazılabilen, Şifreler İçin De Kullanılabilen, TabIndex Alabilen TextInput
Yazar 07/01/2013
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
Yazar 04/01/2013
- https://www.adobe.com/go/lc_blazeds_turnkey adresinden BlazeDS Turnkey’i indirin ve zip dosyasını masaüstüne açın.
- http://netbeans.org/downloads/ adresinden NetBeans’in full paketini indirin, varsayılan ayarlarla kurun ve açın.
- File > New Project > Java Web > Web Application > Next yolunu takip edin.
- Project Name: TestApp
- Next butonuna tıklayın.
- Karşınıza gelen Server and Settings ekranında Add… butonuna tıklayın.
- Apache Tomcat’i seçin Next butonuna tıklayın.
- Karşınıza gelen ekranda Server Location’ın yanındaki Browse… butonuna tıklayın.
- 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.
- Username: NetBeans
- Password: PASS
- Create user if it does not exits seçeneğinin seçili olduğundan emin olun ve Finish butonuna tıklayın.
- Karşınızdaki ekranda önce Next sonra da Finish butonuna tıklayın.
- Soldaki proje ağacında bulunan WEB-INF klasörünün içindeki “web.xml” dosyasına sağ tıklayın ve silin.
- Masaüstüne açtığınız “blazeds-turnkey…” adlı klasörün içine girip tomcat > webapps > blazeds > WEB-INF yolunu takip edin.
- 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.
- 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.
- Yine aynı dosyanın içindeki “<param-value>true</param-value> ” değerini “<param-value>false</param-value> ” olarak değiştirin.
- Proje ağacının en üstündeki TestApp’e sağ tıklayın ve Properties’i seçin.
- 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.
- Proje ağacında bulunan Libraries’e sağ tıklayıp Properties’i seçin.
- Açılan pencerede Add Library…’ye, ardından Create…’e tıklayın.
- Library Name: BlazeDS
- Library Type: Class Libraries
- OK butonuna tıklayın.
- 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.
- 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.
- Ekrandaki pencerelerde sırasıyla OK, Add Library ve OK butonlarına tıklayın.
- File > New File… > Java > Java Class > Next yolunu takip edin.
- Class Name: EchoService
- Package: services
- Finish butonuna tıklayın.
- Ekrana gelen yeni class’a “public String doEcho(String s) {return s;} ” şeklinde yeni bir metod ekleyin ve kaydedin.
- Soldaki proje ağacından WEB-INF > flex > remoting-config.xml dosyasını açın.
- </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.
- Flash Builder’ı açın.
- File > New > Flex Mobile Project yolunu takip edin.
- Project name: TestApp
- İki kere Next dedikten sonra Application server type’ı Java seçip hemen altından da BlazeDS’i işaretleyin.
- Root folder: C:\Documents\NetBeansProjects\TestApp\web
- Root URL: http://localhost:8400/TestApp
- Context root: /TestApp
- Output folder: C:\Documents\NetBeansProjects\TestApp\web\apk
- Validate Configuration’a tıkladıktan sonra Finish’e tıklayın.
- Data > Connect to BlazeDS…’e tıklayın ve No passwords required kutusunu işaretleyip OK deyin.
- Açılan ekranda EchoServiceDestination’ın yanındaki kutuyu işaretleyip Finish’e tıklayın.
- NetBeans’e dönüp doEcho metoduna breakpoint koyduktan sonra Debug > Debug Project’e tıklayın.
- 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.
- 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ı
Yazar 28/08/2012
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
Yazar 12/08/2012
sudo apt-get install mongodb-server sudo mkdir -p /data/db sudo chmod 0755 /data/db sudo chown [kullanici_adi] /data/db
Elemanların Tarayıcı Tarafından Hesaplanmış Yüksekliklerini Çekmek
Yazar 30/07/2012
jQuery‘nin innerHeight ve outerHeight fonksiyonlarını kullanarak örneğin bir div’in browser tarafından hesaplanmış dinamik yükseklik değerlerini çekebilirsiniz.