Fatih ÇELEN

Bırak dağınık kalsın…

javascript ilk harf büyütme.

function kCap(iO){
iO.value = iO.value.replace(/([\wöçşğüıİ])/gi,
function(a, b){return b.replace(“I”,”ı”).toLowerCase()}).replace(/(^[a-zöçşğüı]|[\s][a-zöçşğüı])/g,
function(c, d){return d.replace(“i”,”İ”).toUpperCase()});
}

http://jsfiddle.net/28bbd/

aslında ilk olarak bu işin js ile yapılıbileceğine kenetlenmişken. Google aramalarında css ile daha basit şekilde çözülebileceğini gördüm.

text-transform: capitalize;

iyi çalışmalar.

Asp.net çerezlerde türkçe karakter sorunu

Asp.net ile çerez işlemleri yapıp türkçe karakter sorunu yaşıyorsanız sorunun çözümü için verdiğiniz değerdeki türkçe karakterleri şifreleyip yazarak ve gösterimde de şifreyi decode edip alarak bu sorunu çözebilirsiniz. Şifreleme için kendi algoritmanızı kullanacağınız gibi aşağıdaki kod bloklarından da istifade edebilirsiniz.

Şifreleme

HttpCookie cookie = new HttpCookie("kullanici");
cookie.Expires = DateTime.Now.AddMonths(12);
cookie.Values.Add("KAd", Server.UrlEncode("Fatih Çelen"));
Response.Cookies.Add(cookie);

Çözme

HttpCookie cookie = Request.Cookies["kullanici"];
if (cookie != null)
{
txtKullanici.Text = Server.UrlDecode(cookie.Values["KAd"]);
}

Yemek yiyen filozoflar örneği – Dining Philosophers Problemi

Resim1

Yemek yiyen filozoflar örneği, literatüre Dijkstra tarafından kazandırılmıştır ve eş zamanlı işlem yönetimini (concurrent process management) sembolize eder.Filozoflar bu problemde ya makarna yerler yada düşünürler yani aynı işi birarada yapamazlar.

Masada filozof sayısı kadar tabak ve tabakların arasında birer çatal vardır. Filozoflar makarnayı tek çatalla yemek zor olduğu için 2 çatalla yiyebiliyorlar. Maalesef her filozofa bir çatal düşüyor ve yemeğe hepsi aynı anda başlıyorlar. Bu yüzden hepsinin elinde birer tane çatal olmasına rağmen, hepsi diğer çatalı bekliyor ve hiçbiri yemek yiyemiyor. Böylece sonsuza kadar aç kalıyorlar!

Problemde karşılaşılan birinci sorun hepsi iki yanındakini birden almaya kalkarsa, bu durumda, eş zamanlı işlemlerde karşılaşılan yarış durumu (racing condition) ortaya çıkacaktır ve hangisi önce davranırsa o yemeğini yiyebilecektir.Belki de hepsi bir çatal alacağından hiçbiri yiyemeyecektir.Yada bir diğeri yesin diye hiçbiri çatal almayıp aç kalabileceklerdir. . Bu tip problemler, genelde kıtlık problemi (starvation) olarak düşünülebilir.

Problemde karşılaşılan diğer bir sorun ise ölümcül kilitlenmedir (deadlock). Yanlış bir tasarım sonucunda, tek çatal alan ve çatalı bırakmak için diğer filozofun bırakmasını bekleyen bir filozof sistemi kilitleyebilir. Bu da problemde bulunan ikinci risktir.

Son olarak problemin tanımında, filozoflar birbiri ile konuşamaz kuralı getirilmiştir. Aslında filozoflar birbiriyle çatallar üzerinden iletişim kurmaktadır. Örneğin sağındaki veya solundaki filozofun o anda çatalı alıp almaması, yanındaki filozoflar hakkında bilgi vermekte ve bu da üstü kapalı bir iletişim olarak kabul edilmektedir.Çözümlerin tamamında iletişim sadece çatalların durumuna göre sağlanmaktayken, sadece son çözüm olan chandy misra çözümünde filozoflar doğrudan birbiri ile iletişime geçebilmektedir.

Problemin çözümü için geliştirilen algoritmalar;
1. Rastgele süre çözümü (Random Solution)
2. Garson çözümü (Conductor Solution)
3. Monitör Çözümü (Monitor Solution)
4. Chandy Misra Çözümü (Chandy Misra Solution)
Rastgele süre çözümü (Random Solution)

Filozofların problemi çözmek için tamamen rastgele davranması öngörülür. Filozoflar, bir çatal aldıktan sonra ikincisini alabilirse yemeğini yer. Şayet ikinci çatalı alamazsa rastgele bir süre ikinci çatalın boşalmasını bekler.Eğer yanındaki çatalı bırakırsa yemeği yer yada bu süre içerisinde çatalı bırakmazsa yemeği yemeden elindeki çatalı yanındakinin yemesi için bırakır.Sistem rastgelelik üzerine kurulduğu için başarıya ulaşması beklenmez.

Garson çözümü (Conductor Solution)

Bu çözümde masanın etrafında bir garsonun dolaşması ile çözüm üretilmeye çalışılmıştır. Garson, sürekli olarak masada boş duran ve filozoflar tarafından yemek için kullanılan çatalların sayılarını takip etmektedir. Bir şekilde her filozof, masadan çatal alabilmek için garsonun iznini istemek zorundadır. Şayet garson izin vermezse filozof masadan çatal alamaz.Eğer ki garson bütün filozoflara yemek imkanı sunarsa deadlock ihtimalinden kurtulmuş olunur ve her filozof aç kalmadığı için kıtlık problemi(starvation) ile karşılaşmaları engellenir.

Örneğin garsonun masayı saat yönünde döndüğünü ve bir filozofu başlangıç kabul ettiğimizi düşünelim.O anda işaretlediği filozof yemek yiyor, sonraki yemiyor , sonraki yiyor ve böylece kaç filozof varsa, sırayla bir yiyor bir yemiyor şeklinde düşünülebilir. Bu durumda her filozof yemek yemek için yeterli çatalı buluyor demektir.7

Monitör Çözümü (Monitor Solution)

Bu çözüm, garson çözümüne çok benzemektedir. Amaç sırasıyla her filozofun bir yiyen bir de yemeyen şeklinde sıralanmasıdır. Burada her filozof belirli bir sırayla sıralanmaktadır (örneğin saat yönünde veya saat yönünün tersi istikamette) ardından kendinden önceki filozofun durumunu kontrol ederek yemek yiyorsa yemez, kendinden önceki filozof yemek yemiyorsa bu durumda kendisi yemek yer.

Tek sayıda filozof olması durumunda yemek yeme eyleminin masada bir dalga şeklinde bir noktadan başlayarak sürekli döndüğü görülebilir. Şayet filozof sayısı çift ise bu durumda sürekli aynı filozoflar yemek yerken diğer filozoflar ölecektir. Bir çözüm olarak, şayet toplam filozof sayısı çift ise, sırasıyla tek ve çift filozoflara yemek yedirmek bir çözüm olabilir. Örneğin önce 1,3,5 numaralı filozoflar yemek yerken, sonra 2,4,6 numaralı filozoflar yemek yiyebilir.

Chandy Misra Çözümü (Chandy Misra Solution)

Çözümün en önemli özelliği, merkezi bir karar mekanizmasını ortadan kaldırması ancak buna karşılık, filozoflar birbiri ile konuşamaz kuralını çiğnemesidir. Bu çözüm, geliştiren iki kişinin ismi ile anılmaktadır (K. Mani Chandy ve J. Misra). Çözüm 4 adımdan oluşmaktadır.
Bu Adımlar;
1. Her filozof ikilisi için bir çatal üretilir ve bu çatal en düşük sayı sahibi olan filozofa verilir. Her çatal kirli veya temiz olarak işaretlenebilir ve başlangıç durumunda bütün çatallar kirlidir.

2. Bir filozof, bir kaynak kümesini kullanmak istediğinde (yani yemek yemek istediğinde), komşusu olan çatalları kullanmak zorundadır. Elinde olmayan (ihtiyacı olan) bütün çatallara bir talep yollar.

3. Bir filozof, elindeki bir çatal için talep aldığında, şayet elindeki çatal temizse kullanmaya devam eder, şayet çatal kirli ise, çatalı masaya koyar. Ayrıca masaya konan çatal temiz olarak işaretlenerek konulur.

4. Bir filozof yemek yedikten sonra çatalı kirli olarak işaretler. Şayet bir filozof, daha önce bir çatalı talep ettiyse, çatalı temzileyerek masaya koyar.
Açıklamak gerekirse çatallara kirli ve temiz şeklinde numaralar verilir.Çatalın talep edilmesi veya edilmemesi durumu kirli veya temiz olma durumuna göre belirlenir.Çatalın üzerinde talep olması çatalın kirli olduğu anlamına gelmektedir. Her çatal sadece talep eden filozof tarafından kullanılacağı için de kullanma işlemi öncesinde tek bir filozofa atama yapılmış oluyor. Ayrıca filozofların talep işleminin gerçekleşebilmesi için iki çatalın birden atamasının yapılması gerekmektedir.

Burda deadlock oluşma ihtimalini ortadan kaldırmak için numaralandırma yapılmıştır. Yani filozofların hepsi aynı önceliğe sahip olduğu durumlarda bir kilitlenme ihtimali bulunmakla birlikte, bu ihtimali bertaraf etmek için her filozofa bir numara verilmiş ve bu numaraya göre en düşük değere sahip filozof öncelikli olmuştu.r.Bir diğer sebep olan kıtlık sorunu ise çatalların temiz yada kirli olma ihtimali ile engellenmiştir.

Mailenable blackliste düşen IP’yi değiştirme

Eğer IP blacklistler tarafından listeleniyorsa gönderdiğiniz maillerin adreslerine ulaşımında sıkıntı yaşayacaksınız, spama düşme ve delivery mesajlarıyla başınız bir süre ağrıyacaktır. Çözüm için blacklistlerden ip adresini sildirmeniz veya farklı (temiz) bir ip kullanarak maillerinizi göndermeniz gerekmekte. Mail Enable da

Services and Connectors -> SMTP (sağ tık)-> Properties -> Outbound

bölümünden mailin gönderileceği IP adresini değiştirebilirsiniz. Default seçeneği sunucuya tanımlı olan ana IP adresini kullanır.

Tekrar spama düşmemek için saatlik bazda gönderilecek olan mail adedine sınır getirilebilir. Mailenable standart versiyonda bu seçenek mevcut değil profesyonel versiyona geçmek gerekir.

İstemcide, zararlı olabilecek bir değer Request.Form algılandı mvc

Formlardan gelen verilerin içerisindeki html elemanları yüzünden bu hatayı alıyoruz. Genellikle bir editör kullandığımızda bu problemin çözümü için asp.net form uygulamalarımızda mevcut sayfa nın özelliklerine

validateRequest=false;

değerini ekleyerek veya web.config dosyamızda <system.web> tağı içerisinde

<pages validateRequest=”false” />

ile çözüme kavuşabiliriz.

Eğer .net 4.0 ve üzeri bir proje başlatmışsak yukarıdaki çözüm işimizi görmeyebilir. .net 4.0 projelerinde web.config ayarlarımızda <system.web> tağı icerisine

<httpRuntime requestValidationMode=”2.0″/>

değerini eklememiz gerekir. Bu ayarlardan sonra uygulama güvenliğini sağlamak için biraz kafayı yormak gerekir.

Resim Yüklemeden önce önizlemesini almak

function readURL(input) {

    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}

$("#imgInp").change(function(){
    readURL(this);
});
</pre>
<form id="form1" runat="server">
    <input type='file' id="imgInp" />
    <img id="blah" src="#" alt="your image" />
</form>

Önizleme

SyntaxHighlighter dil kodları

WordPress blogunuzda kod yayınlıyorsanız, kodlarınızın editörde göründüğü gibi gözükmesini sağlayan eklentinin adı SyntaxHighlighter. Eklentiyi kurup etkinleştirdikten sonra kod bloklarını göstermenin bi kaç farklı yolu var.

[ code ] [ /code ]
[ php ] [ /php ]

gibi.

Bana en kolay gelen

[ code language=”” ] tagına language parametresini vermek oldu. language parametresinin alabileceği dilleri aşağıda yazdım. detaylı bilgi burada

  • actionscript3
  • bash
  • clojure
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • erlang
  • fsharp
  • diff
  • groovy
  • html
  • javascript
  • java
  • javafx
  • matlab (keywords only)
  • objc
  • perl
  • php
  • text
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • vb
  • xml

Response.Write("Merhaba Dünya");