31 Tem 2015

ZPL (Zebra Programming Language) ile Tükçe Sorunu (Turkish character problem solution)

Merhaba,

Öncelikle biraz ZPL programa dili kullamından bahsedeceğim.

Özel karakterler ile oluşturulan text 'in DocumentDataType "RAW" formatı ile gönderilmesi ile ZPL destekli yazıcının bu formata uygun çıktı vermesi şeklinde gerçekleştiriliyor.


ZPL ^ karakteri ile belli harflendirmeler kullanılarak oluşturuluyor.
Dökümana ^XA kodu ile başlayıp ^XZ kodu ile bitiriliyor.

^CI – Encoding ayarlanıyor, (Türkçe karakter kullanılabiilmesi için hex kodu yazılması gerekiyor, bu sebeple encoding 28 kullanılmalı, ^CI28 şeklinde)
^CIa,s1,d1,s2,d2,...

^FT – Field Typeset ile karakterlerin pozisyon ayarlanıyor.
^FTx,y,z

^A@ İstenilen fontu çağırmak için kullanılır (bu arada Arial gibi özel fontlar istenildiğinde yazıcının uygulaması ile yazıcı EPROM'una font yazılıp aşağıdaki örnekteki gibi kullanılabilir,
Buradan öğrenebilirsiniz )
^A@o,h,w,d:o.x  
o: yön belirteci, h = karakter yüsekliği, w = karakter genişliği
d = drive location of font, o = font name, x = extension
(burada d yazıcı epromundaki font path'i, benim gibi windows path vermeyi denemeyin :) )

^FH – Field Hexadecimal Indicator ile hexadecimal kod yazmaya olanak tanınıyor.
^FHa a burada default'da kullanılan ^ ve ~ karakterleri hariç hex tanımlamada ayırıcı rolü oynayacak karakterdir. Default değer _ 'dur, örneğin hex codu 7e olan değer ^FH tag'i içinde _7e olarak tanımlanır.

^FD – Field Data ve ^FS – Field Separator basılacak string  bu iki tag arasına yazılır.

Örnek kod aşağıda görünmektedir.
^XA
^CI28
^FT100,50^A@N,17,18,E:ARI000.FNT^FH^FD _C3_9C_C5_9E_C3_96_C4_B0_C4_9E_C3_87 Hello^FS
^FT100,71^A@N,17,18,E:ARI000.FNT^FH^FD _C3_BC_C5_9F_C3_B6_C4_B1_C4_9F_C3_A7 Wold!^FS
^XZ
Kodun Çıktısı
ÜŞÖİĞÇ Hello 
üşöığç World!

burada arial fontu yukarıdaki linkteki metod ile ARI000.FNT adında yazıcı içerisine download edilmiştir.

Türkçe karakterlerin doğru şekilde çıkması için encoding doğru şekilde yapılandırılmalıdır. Doğru encoding verilmediği taktirde hex kodları çözülemeyecektir. Ayrıca Hex kodlarının ^FH tag'i ile kullanımına dikkat edilmelidir.

14 May 2014

Jquery Fancybox Basit Örnek, fancybox-thumbs

her resim için aşağıdaki div'den ekleyin

<div class="fancybox-thumbs" data-fancybox-group="grup1" src="/img.jpg" href="/img.jpg"> </div>

src ve href resmin yolu, data-fancybox-group grup adı (büyütünce allta gözükenler aynı grupta oluyor)

projeye html sayfasına aşağıdakileri en sonuna eklenecek

src'ler js dosyalarının yolu.


<script type="text/javascript" src="/fancybox/jquery.fancybox.js"></script>
<link rel="stylesheet" type="text/css" href="//fancybox/jquery.fancybox.css" media="screen"/>
<script type="text/javascript" src="/fancybox/jquery.fancybox-thumbs.js"></script>
<link rel="stylesheet" type="text/css" href="/fancybox/jquery.fancybox-thumbs.css" />

    <script type="text/javascript">
        $(document).ready(function () {
            $('.fancybox-thumbs').fancybox({            
                closeBtn: true,
                nextClick: true,
                helpers: {
                    title: {
                        type: 'inside'
                    },
                    thumbs: {
                        width: 50,
                        height: 50
                    },
                    buttons: {}
                },
                padding: 5
            });
        });
    </script>

29 Tem 2013

Team Foundation Server (TFS) - Changeset ve Shelveset

Shelving workspace'de bekleyen değişikliklerin server'a atılmasını ve istek dahilinde workspace'den silinmesine olanak tanır. Oluşturulan shelveset serverdan gerekli yetkiye sahip herhangi bir kullanıcının workspace'ine geri alınabilir.      

Changeset ve Shelveset Arasındaki Farklar
Changeset notlar, commentler, ve linklerden oluşan bir grup kaynak kodları revizyonları grubudur. Shelveset de aynı şekildedir fakat versiyonlanmış bir şekilde tutmaz. Her ikisi de TFS üzerinden tutulur, ve yetkisi olan herhangi bir kullanıcı workspace'ine çekebilir.

shelveset değiştirildiğinde eskisine erişilemez, silinebilir.

Bekleyen değişikliklerin server'a atılmaya hazır olmadığı veya atılmaması gerektiği durumlarda kullanılabilir. Kullanımı için 5 senaryosu vardır.

 - Başka göreve geçilip yarıda bırakılan çalışmanın server'da tutulması.
 - Server'a check'in edilmeden önce grup üyeleri ile paylaşma.
 - Server'a check'in edilmeden önce gözden geçirme amaçlı.
 - Tamamlanmayan çalışmanın yedeğinin alınması.
 - Tamamlanmayan çalışmanın başka bir grup üyesi tarafından tamamlanması.

Kaynak: MSDN

16 Kas 2012

Linq To XML Örneği

XML



CLASS

public class INPUT
{
    public string GGUID { get; set; }
    public string TABLE { get; set; }
    public string NAME { get; set; }
    public string VALUE { get; set; }
}

INSERT

public void InsertItem(INPUT _item)
{
XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));                      

    doc.Element("NAV").Add(new XElement("INPUT",
                 new XElement("TABLE", _item.TABLE),
                 new XElement("VALUE", _item.VALUE),
                 new XElement("NAME", _item.NAME),
                 new XElement("GGUID", _item.GGUID)
             ));
    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

DELETE

public void DeleteItem(string GGUID)
{
    XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
    doc.Elements("NAV").Elements("INPUT").Where(s => s.Element("GGUID").Value == GGUID).Remove();

    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

17 Eyl 2011

Jquery İle input İçeriğini Temizleme onfocus, onblur ( Asp.net MVC )

var clearMePrevious = '';
        // focus'da içeriği temizle
        function focusFunc(strInputName) {
            if ($('#' + strInputName).val() == $('#' + strInputName).attr('title')) {
                clearMePrevious = $('#' + strInputName).val();
                $('#' + strInputName).val('');
            }
        }
       
        // Blur'da eski içeriği döndür
        function blurFunc(strInputName) {
            if ($('#' + strInputName).val('')) {
                $('#' + strInputName).val(clearMePrevious);
            }
        }
<input type="text" onblur="blurFunc('query');" onfocus="focusFunc('query');" id="query" name="query" title="Aranacak kelimeyi giriniz" value="<%= Request.QueryString["query"] ?? "Aranacak kelimeyi giriniz" %>" />

12 Eyl 2011

C# .Net Reflection Kullanım Örneği

Örneğin test namespace'i ile oluşturulan projenin dll'ini ele alalım.

[C#]
namespace Test 
public class Calculator 
 {
public Calculator() { ... } 
private double _number; 
public double Number { get { ... } set { ... } } 
public void Clear() { ... }         private void DoClear() { ... } 
public double Add(double number) { ... } 
public static double Pi { ... } 
public static double GetPi() { ... }
 } 
}  



[C#]
// dynamically load assembly from file Test.dll 
Assembly testAssembly = Assembly.LoadFile(@"c:\Test.dll");

// get type of class Calculator from just loaded assembly 
Type calcType = testAssembly.GetType("Test.Calculator");

// create instance of class Calculator                                                                                    
 object calcInstance = Activator.CreateInstance(calcType); 

// get info about property: public double Number                                                                  
PropertyInfo numberPropertyInfo = calcType.GetProperty("Number"); 

// get value of property: public double Number                                                                       
double value = (double)numberPropertyInfo.GetValue(calcInstance, null); 

// set value of property: public double Number                                                                       numberPropertyInfo.SetValue(calcInstance, 10.0, null); 

// get info about static property: public static double Pi       
PropertyInfo piPropertyInfo = calcType.GetProperty("Pi"); 

// get value of static property: public static double Pi                                                           
double piValue = (double)piPropertyInfo.GetValue(null, null); 

// invoke public instance method: public void Clear()                                                           
calcType.InvokeMember("Clear",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,     null, calcInstance, null); 

// invoke private instance method: private void DoClear()
calcType.InvokeMember("DoClear",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,     null, calcInstance, null); 

// invoke public instance method: public double Add(double number)                                 
double value = (double)calcType.InvokeMember("Add",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,     null, calcInstance, new object[] { 20.0 }); 

// invoke public static method: public static double GetPi()                                                 
double piValue = (double)calcType.InvokeMember("GetPi",     BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public,     null, null, null); 

// get value of private field: private double _number                                                            
double value = (double)calcType.InvokeMember("_number",     BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,     null, calcInstance, null);





KAYNAK:  http://www.csharp-examples.net/reflection-examples/

Reflection ile Execute Edilen Metod'un Namespace, Class Adı, ve Metod adını alma

protected string CurrentName
  {
    get
    {
      StackTrace st = new StackTrace(true);
      MethodBase mb = st.GetFrame(1).GetMethod();
      return mb.ReflectedType.Namespace + "." + mb.ReflectedType.Name + "." + mb.Name;
    }
  }

25 Ağu 2011

MVC Bind Prefix Kullanımı (View içerisinden model'e bind etme)

Prefix ile yani view içerisindeki elemanların isimlerinden model'e bind etmek için aşağıdaki örneğe bakabilirsiniz.
Mvc view page (.aspx) sayfası içerisinde tanımlanan elemanlardan bind etmek istediklerinizin isimlerini aşağıdaki örnekteki gibi ön-ek (prefix) ile birlikte vermelisiniz.
<select name="k.isim"> </select>
<input type="text" name="k.soyisim" />
istediğiniz ön-ek'e sahip elemanları bind edip metod paramatresi olarak aşağıdaki şekilde metod'a verebilirisiniz.
public ActionResult KullaniciKaydet([Bind(Prefix="k")]Kullanici objKullanici){}
Eğer birden çok elemanı controller tarafında bir nesnenin field'ları olarak atamak istiyorsanız bu yöntem sizin için çok kullanışlı olacaktır. Tek satır kod ile nesnenin tüm field'larını doldurabileceksiniz.
Kullanıcı tarafından kesinlikle dolmasını istemediğiniz nesne field'ını "exclude" ile belirleyebilirsiniz. Bu nesnenin "KullanıcıId" field'ı bind edilmeyecektir.
 public ActionResult KullaniciKaydet([Bind(Prefix="k", Exclude="KullanıcıId")]Kullanici objKullanici){}

23 Ağu 2011

ASP.NET C# Klasörden Alınan Dosyaları Oluşturulma Tarihine Göre Sıralama

objPicture = Directory.GetFiles(Server.MapPath("/image/t/")).ToList
                   
//Dosyaları oluşturulma tarihine göre sırala
 var di = new DirectoryInfo(Server.MapPath("/image/t/"));
 FileSystemInfo[] files = di.GetFileSystemInfos();
 var ObjOrderedPictures = files.OrderByDescending(i => i.CreationTime);
                   

   foreach (var thumnpic in ObjOrderedPictures) { 
       string strTemp = thumnpic.FullName.Split('\\');                          
   }

4 Ağu 2011

Web Adresinin Öncelikli Olarak Bakılacağı İp’yi Belirleme

Host dosyası içerisine girdiğiniz web adresinin öncelikli olarak bakılacağı ip'yi girebilirsiniz.
"C:\Windows\System32\drivers\etc" yolunda bulunan host dosyasını text editörü ile açıp sonun istediğiniz adresi ip'si ile birlikte aşağıdaki şekilde girip kaydetmelisiniz.

127.0.0.1       localhost127.0.0.1       localhost
192.168.1.234 www.google.com

artık bilgisayarınızdan www.google.com adresine gittiğinizde sisteminiz öncelikle 192.168.1.234 ip adresine bakacaktır..



28 Tem 2011

SQL 2008 CLR Aktif Etme

SQL 2008 'de CLR 'ı aktif etmek için aşağıdaki queryi yazıp çalıştırmanız yeterlidir.
EXEC sp_configure 'clr enabled' , '1' ;
reconfigure;

27 Tem 2011

IIS 7.0 (Win server 2008) Üzerinde Çalışan Wordpress Resim Upload Problemi

Bu sorunun 2 nedeni var
1- Eğer resimleri türkçe karakter ile yüklüyorsanız isimlerdeki karakterler bozulduğu için resimler bulunamamakta. Türkçe karakter kullanmadan yüklenirse sorun ortadan kalkabilir.
2- Eğer sorun Türkçe karakter'den kaynaklanmıyorsa büyük ihtimalle klasör yazma izninden kaynaklanıyordur. Normal olarak herhangi bir işlem yapmadığınızda upload ettiğiniz resimler "wp-content\uploads" içerisine yüklenmektedir. Bu klasöre yükleme yapabilmek için (IIS tarafından otomatik oluşturulan) IIS_USRS kullanıcısı için full yetki verilmeli, fakat full yetki de verilse Wordpress (ya da IIS üzerinde çalışıtırılan herhangi bir PHP site) IIS server üzerinde çalışan sitede upload sorunu oluşmakta.
 
Sorunun çözümü ise gayet basit;
              
           Application Pools –> (wordpress'inizin application pool'u) –>Advanced Settings –> Process Model –> Identity –> Built-in Service –> Network Service Olarak seçilmeli
           Sites  –> (wordpress siteniz) –> Authentication –> Anonymous Authentication –> Sağ click –Edit –> "Application pool identity" seçilmeli.
Artık resimlerinizi Windows 2008 IIS üzerinde çalışan Wordpress sitenize rahatlıkla yükleyebilirsiniz.
(Çalışmazsa bir de bu linke bakınız)

25 Tem 2011

ASP.NET: [System.Diagnostics.DebuggerNonUserCodeAttribute()] Hatası

.aspx veya .ascx uzantılı sayfalarımıza yazdığımız c# kodları bilindiği üzere <%%> tagları arasına yazılmakta. Bu sayfalardaki kod yoğunğu çok fazla olduğu zamanlarda sayfa içerisindeki parantezler karışabiliyor. Bu parantezlerin birine tıklayarak nerede kapandığını görebiliyoruz fakat gözden kaçırdığımız bir tanesi derleme esnasında olmasa da debug anında hata ortaya çıkmakta. Eğer bütün parantezleri teker teker kontrol edip hepsinin başlangıç ve bitiş yerlerini görüp eksiksiz olduğuna emin olursanız bu hata ortadan kalkacaktır.

12 Tem 2011

Wordpress Anketi Yan Menüde Yayına Alma

Anketler bölümünden anket oluşturulduktan sonra eğer ana sayfada yan menüde göstermek istiyorsanız  anketin kodunu ( anketlerin listelendiği bölümden yayınlama istediğiniz anketin üzerine gelerek "Embed & Link" linkini tıklayıp " WordPress Shortcode" kısmından "[polldaddy poll=5220000]" şeklindeki kodu kopyalayailirsiniz)  Görünüm  - > Bileşenler sekmesinden "Metin" bileşenini sürükleyip yan menü içerisine bırakarak içierisine bu kodu yapıştırıp kaydetmelisiniz.

Dikkat edilmesi gereken bir nokta eger widget (metin kutusu) olarak yan menuye anket koymaniz durumunda ayni anketi post olarak yayınlamamak gerekmesi. Böyle bir çakışma olduğunda sorun oluşabiliyormuş.

28 Haz 2011

Vshell FTP Ayarları

- User database açılmalı (Common > Advanced) altından ve txt db yolu seçilip açılmalı (txt dosyasının izinlerini inherit(miras) almamalı ve sadace system ile administrator'a açık olmalı)


User database e kullanıcılar eklenmeli


- "Access Control" dan erişime açılacak kullanıcılar seçilmeli. 
(default gelen "Everyone" kullanıcısı için sadece Logon Allow yapılmalı)


- Seçilen kullanıcılar için sadece SFTP ve Logonlar Allow yapılmalı (sadece SFTP'ye erişebilmeleri ve logon olabilmeleri için).


- Virtual roots'dan site yolu seçilip allow(erişim izinli) ve deny(yasaklı) kullanıclar seçilmeli.


- Virtual roots'da default tanımlı kullanıcılara açık ise kapatılmalı (Everyone kullanıcısı dahil edilmiş ise kaldırılmalı). (çünkü root içerisindeki diğer klasörlere ve root a erişimi sağlıyor)