.NET Developer

by Volem March 18, 2011 14:41

Position

Software Developer 

Required Qualifications

Knowledge 

• Knowledge of database architecture and design
• Knowledge of ASP.Net, C#
• Knowledge of Ms SQL, Ajax, Html, Css
• Knowledge of software development
• New and emerging technologies
• English
 
Competences
 
• Team player
• Problem Solving skills
• Analytical minded
• Result driven
• Responsibility
• Technical understanding
• Flexible
 
Experience
 
• Minimum 3 years software development experience.
 
Education
 
• University degree in Computer Science or related area.

Location

Istanbul/Turkey

Tags: ,

Hayat | Yazılım | C# | Web

Localization for ASP.NET

by Volem January 07, 2011 10:42

ASP.NET'te coklu dil destegi vermek icin size kod tekrarini onleyecek bir yapidan bahsetmek istiyorum. Bildiginiz gibi resource dosyalarini kullanarak asp.net icin coklu dil destegini saglayabiliyorsunuz. Yapmaniz gereken uygun isimde resx dosyalarini Global Resources ya da Local Resources klasorleri altina eklemek ardindan da secilen dil icin sayfanin Culture ve UICulture ozelliklerini ayarlamak. Bunun icin benim kullandigim(yazdigim) bir LanguageManager kutuphanesinden bahsedecegim. Yaptigi is basit olarak verilen sayfanin culture ozelliklerini ayarlamak. Ornekten de goreceginiz gibi bir adet siniftan olusuyor.. Kodu genel olarak anlatmayacagim, basit bir yapi var gorulecegi uzere.. LanguageManager'in dil destegi icin kullandigi yapi dil bilgisini session'da tutmasi.. Normalde dil enumeration bilgisi bu class icinde yer almamali ancak kodun calistirilabilir bir durumda olmasi icin bu sinifin icerisine ekledim. Dikkat edilirse ApplyLanguage metodu virtual bir metod ve eger isterseniz bu sinifi inherit ederek dili ister veritabanindan isterseniz cookieden ya da istediginiz herhangi bir servisten okuyacak hale getirebilirsiniz. Bu amacla dispose metodu da virtual olarak set edilmistir ancak Session info icin dispose gerekmiyor o yuzden icerigi bos birakildi ancak ornegin dil bilgisini veritabanindan okursaniz dispose da veritabani baglantisini kapatma islemini yapabilirsiniz..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;
using System.Globalization;

namespace Acquistor.Managers
{
    public class LanguageManager : IDisposable
    {
        private System.Web.UI.Page Page;

        public enum Language
        {
            TR,
            EN
        }

        public LanguageManager(System.Web.UI.Page Page)
        {
            this.Page = Page;
        }

        public virtual void ApplyLanguage()
        {
            if (Page.Session["Language"] == null)
            {
                Page.Session["Language"] = Language.TR.ToString();
            }
            switch (Page.Session["Language"].ToString())
            {
                case "TR":
                    SetPageCulture("tr", "tr-TR");
                    break;
                case "EN":
                    SetPageCulture("en", "en-US");
                    break;
                default:
                    SetPageCulture("tr", "tr-TR");
                    break;
            }
        }

        private void SetPageCulture(string uiCulture, string culture)
        {
            Page.UICulture = uiCulture;
            Page.Culture = culture;
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(uiCulture);
        }

        #region IDisposable Members

        public virtual void Dispose()
        {

        }

        #endregion
    }
}
Gelelim bu kodu nasil kullanacaksiniz.. Tabii ki dilini guncellemek istediginiz sayfanin InitializeCulture metodunu override ederek, ama benim tavsiyem genelde tum sayfalarinizda bunu yapmak isteyeceginizi dusundugumden bu isi tanimlayacaginiz base page icerisinde yapmaniz ve sayfalarinizi bu base pageden inherit etmeniz. Boylece tek bir yerden butun sayfalariniza coklu dil destegini vermis olursunuz. Hemen nasil kullanabileceginizi de ufak bir kod ile gostermeye calisayim...
protected override void InitializeCulture()
{
    using (LanguageManager lm = new LanguageManager(Page))
    {
        lm.ApplyLanguage();
    }
    base.InitializeCulture();
}
Umarim isinize yarar.. Herkese kolay gelsin.

Tags: , ,

C# | Web

Hosting JQuery at Google CDN

by Volem January 06, 2011 10:23

Merhabalar,

Web development'la biraz icli disli olan herkes JQuery'yi kullanmis veya duymustur. Genellikle yapilan JQuery'nin official sitesine gidip size uygun bir versiyonu indirip ardindan da projenize dahil etmektir. Bugun size bunu yapmanin farkli bir yolunu ve neden boyle yapmaniz gerektigini anlatacagim.

JQuery kutuphanesini projenize yuklemeyin :). Simdi ne sacmaliyorsun diyeceksiniz ama biraz sabir diyorum.

Herhangi bir kullanici sitenize ilk defa baglandigi zaman veya temporary internet files klasorunu bosalttigi zaman JQuery'yi sistemine indirir eger ki siz

<script type="text/javascript" src="/js/jQuery.min.js"/></script>

gibi bir kod eklemisseniz. Tamam bu normal diyeceksiniz ancak JQuery'yi google api ile yuklerseniz daha once google'a girmis bir userin (%99 ihtimal) sizin bu dosyanizi indirmesine gerek kalmayacaktir. Dolayisiyla bu sayfanizin yuklenmesine bir hiz katacaktir. Content delivery network kisaca CDN hizmeti veren google'dan istediginiz JQuery'i versiyonunu yuklemek size baglanan kullanicinin ayni zamanda en yakin CDN server'indan bu dosyayi indirmesini saglayacaktir ki bu da ayrica bir hiz saglar. CDN hizmeti veren baska kurum ve kuruluslar olmasina ragmen google'in bu hizmeti bedava vermesi ve herkesin google kullaniyor olmasi onu 1 numara yapiyor.

Bunun disinda baska bir performans avantaji google serverlari sizin serverinizdan cok daha hizli bu kesin.. Dolayisiyla cok hit alan bir sayfaniz varsa bu download trafigini google cdn serverlarina aktarmak size yine avantaj saglayacaktir. Ayrica browserlarin buyuk bir cogunlugu serverlara gereksiz fazla yuklenmeyi engellemek icin host basina ayni anda en fazla 2 connection acmaktadir. Bu da su demek oluyor www.volkanmetin.com.tr'ye baglandiginizda bu hostun oldugu server'dan content indiriliyor + google analytics verisi isleniyor + facebook ve twitter connection yapiliyor ve bunlarin her biri 2 paralel process ile indiriliyor. Dolayisiyla CDN kullanirsaniz bu hosttan indirecegi content'i daha rahat indirecektir. (Parallel calisma artacak)

Anladik avantajlari var peki google CDN kullanarak JQuery'i nasil yukleyecegiz. Iste 2 method.. 1.si google'in onerdigi, 2.si good old fashioned method...

Buradan hangi versiyonlarin google cdn'de host edildigine bakabilirsiniz.

<script type="text/javascript"
        src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
  // Burada istediginiz versiyonu yukleyebilirsiniz..
  google.load("jquery", "1.4.4");
 
  google.setOnLoadCallback(function() {
    // Burasi da $(document).ready() icin kullanabileceginiz alternatif..
  });
</script>

<script type="text/javascript"
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
   
  });
</script>

Tags: , ,

Yazılım | Web

JQuery ile Sessionı açık tutmak

by Volem October 11, 2010 14:23

Her ne kadar bir kullanici icin session'i surekli acik tutmak kullanici bilgisayar basinda degilse(afk), guvenlik acigi olustursa da bazi durumlarda ornegin sayfada bir session suresinden daha uzun bir is yapiliyorsa gerekli olabiliyor. Bunu yapmanin 3-4 degisik yolu var. Genel mantik sayfaya kullanicinin bilgisi disinda bir server istegi gondermektir. O zaman en basit akla gelen (ASP.NET icin) update panel icerisine bir bos timer yazip interval olarak ornegin 1 dakika verirsek bunu basaririz. Ancak bunun dezavantaji kullanici browserini kapatsa dahi session server tarafinda tutuldugu icin hicbir zaman sonlanmaz ve zamanla cok kullanicili sistemlerde sunucumuz asiri yuklenir. Madem asp.net update panel + timer olayini begenmedik, bunu javascript ile client side tarafindan gelen bir request ile yapabiliriz. Boylece browser kapanirsa bizim session da zamani gelince sonlanacaktir.

<img id="imgSessionAlive" width="1" height="1" />
<script type="text/javascript" >
    var counter;
    counter = 0;
    function KeepSessionAlive() {
    counter++;
    var img = document.getElementById("imgSessionAlive");
    img.src = "http://YourWebSiteUrl.com/RefreshSessionState.aspx?c=" + counter;
    setTimeout(KeepSessionAlive, 60000);
    }    
    KeepSessionAlive();
</script>

Yukaridaki javascript işimizi gayet iyi gorecektir. 1 adet 1x1 resim ve dakikada bir bunun image source ozelligini serverdan istiyormus gibi yapiyoruz. Ancak populer JQuery ile ayni isi yapmak cok daha kisa ve kolay. Cunku server request yapmak icin illa da bir html kontrole ihtiyacimiz yok. Bir ajax post ile sorunumuzu cozuyoruz.

<script language="javascript" type="text/javascript">
    function KeepSessionAlive() {
    $.post("http://YourWebSiteUrl.com/RefreshSessionState.aspx");

    setInterval(KeepSessionAlive, 60000);
    }
    KeepSessionAlive();
</script>

Umarim işinize yarar..

Tags: , ,

Web

Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen | Modified by Volem

RSS
View Volkan Nazmi Metin's profile on LinkedIn

RevolverMap

Son Eklenen Yazılar

Yazar Hakkında

Sosyal, evli, çocuklu, karısını ve kızını çok seven, gezmeyi seven, spor yapmak isteyen bir mühendis