Home » Archive by category 'Diğer Diller'
Google Maps çoklu Marker ekleme

Google maps api kullanarak bir noktayı işaretleme olayına marker diyoruz. Bir raporda harita üzerinde bayilerimizi bulundukları şehirlere göre işaretlemem gerekiyordu fakat şehir adeti arttıkça aranan şehrin bulunamaması gibi bir problem oluşuyor. Bunun sebebi de şehirlerin isimlerini bir servise gönderip geriye koordinatları almakla ilgili..
(daha fazla…)

Pi sayısının paralel bilgisayarlarla hesaplanması

Geliştirme ortamı ve kullanılan süreçler aşağıdaki gibidir;
    ° Bilgisayarlara Pardus 2009 işletim sisteminin kurulması
    ° Bilgisayarlarda tam yetkili (ssh protokollü) aynı kullanıcı adı ve şifreye sahip kullanıcı oluşturulması.
    ° Bilgisayarlara gcc (C derleyicisi) ve OpenMPI (Mesaj Tabanlı Paralel Programlama Modeli) paketlerinin kurulması.
    ° Pi sayısını hesaplayan kodun MPI kütüphanesi ile C programlama dili kullanılarak yazılması
    ° Programın derlenmesi
        $mpicc MPIdeneme.c – o ck
    ° Programın tek bilgisayarda çalıştırılması
        $mpirun –np 10 ck
    ° Programın birden fazla makinada birden fazla süreçle çalıştırılması
        $mpirun –H 192.168.1.5 –H 192.168.1.3 –np 10 ck

MPI Nedir?
    MPI başta dağıtık bellekli sistemler olmak üzere paralel algoritma yazmaya yarayan bir kütüphane standardıdır.Bir programlama dili değildir.MPI kütüphanelerinin C, C++ ve Fortran dili aileleri için sürümleri bulunmaktadır.MPI, “mesaj geçme” mantığına dayalıdır. Değişik işlemciler, birbirleriyle iletiler sayesinde haberleşirler.

MPI kütüphanesine ait bazı fonskiyonlar;

MPI_Init(&argc,&argv)
    MPI_Init fonksiyonunu bütün kodlarınıza eklemeniz gerekmektedir. MPI_Init fonksiyonuna komut satırından da parametre verebilirsiniz ama mecbur değilsiniz. MPI_Init size bir değer dönmektedir bu “MPI_SUCCESS” olursa kod geri kalan MPI_X fonksiyonlarını kullanabilecektir, eğer bu değer dönmezse MPI_X fonksiyonlarını kullanamazsınız.

MPI_Comm_size(comm,&size)
   
Bu fonksiyonumuz proses sayısını bize vermektedir. Genellikle “comm” kısmına MPI_COMM_WORLD üst fonksiyonu yazılmaktadır.

MPI_Comm_rank(comm,&rank)

    Bu MPI fonksiyonu çağıran prosesin sırasını vermektedir. Başlangıçta bütün prosesler 0 veya -1 değerlerini almaktadır. Daha sonra MPI tarafından sıraya sokulunca bütün prosesler numaralandırılmaktadır. Aşağıda ki örneğimizde göreceğimiz gibi makineler 0 dan başlayarak rank(sıra) alacaklardır.

MPI_Get_processor_name(&name,&resultlength)
    İşlemcinin adını ve adın uzunluğunu dönmektedir.

MPI_Wtime( )
    Double deger olarak paralel kodun çalışmaya başlamasından sonra geçen zamanı vermektedir.

MPI_Send(buf, count, datatype, dest, tag, comm)
    Bir sürecin bir diğerine değişken göndermek istediği zaman bu fonksiyon kullanılır. Tek bir değişken gönderilebildiği gibi tamamen bir dizi veya bir dizinin bir kısmı da bir kerede gönderilebilir.

MPI_Recv(buf, count, datatype, source, tag, comm, status)
    Bir süreç, başka bir sürecin gönderdiği değişkeni veya değişkenleri bu fonksiyon yardımıyla alır.

MPI_Finalize( )
    Bütün işlemlerimizden sonra MPI_Finalize diyerek işlemlerimizi sonlandırıyoruz.

MPI_REDUCE(data, result, count, type, op, root,comm)
    Bu fonksiyonumuz N tane makinede oluşmuş sonuçları derleyerek ana proses’ te result dizisinde saklamaktadır. Geri kalan değişkenlerden count “reduce”(alınmış veri) sayısını, type alınan verilerin türlerini, op yapılan alınma işlemlerinin sonuçlarını, root verilerin alındığı prosesleri ve son olarak comm haberleşme ortamının adını (MPI_COMM_WORLD) almaktadır.

Derleyen Emre Tekelioğlu
Kaynaklar;
http://www.mpi-forum.org/docs/mpi21-report.pdf
http://en.wikipedia.org/wiki/Message_Passing_Interface
http://www.grid.org.tr/etkinlikler/egitim/sunumlar/mpi_ornekleri.pdf http://ab.org.tr/ab03/tammetin/114.pdf
http://www.emresururi.com/mpich2/mpich2_rehberi_v1_2.pdf

Projenin orjinal PDF dökümanını ve kaynak kodlarını indirmek için Tıklayın !

Css ile hazırlanmış Web 2.0 butonlar

Daha dün hiç bir şey yazmayacağım diyordum bugün yazıyorum, elimde değil dayanamıyorum. Geçenlerde bir projede kullanmak üzere kendimce css ile web 2.0 butonlar hazırlamıştım. Tasarımdan çok fazla anlamadığımı her seferinde dile getiriyorum ama inanıyorum ki bu butonlar birilerinin işine yaracaktır. Dosyaların içerisinde .psd dosyası da bulunuyor, css kodlarıyla da oynayarak istediğiniz gibi şekillendirebilirsiniz.

Css web 2.0 butonlar

Sosyal imleme mekanızması yapmak.

Kaç zamandır aklımdaydı siteme sosyal imleme mekanızması eklemek. Öcelikle sosyal imleme nedemek kabaca bunu anlatmaya çalışayım. Beğendiğiniz bir siteyi veya bir yazıyı tekrar lazım olur diye tarayıcılarımızda bulunan Sık Kullanılanlar kısmına ekliyoruz ve ne hikmetse bilgisayarımıza format atarken genellikle yedeklemeyi unutuyoruz ve hepsi birden siliniyor. Yada kendi bilgisayarımız başında değilken sık kullanılanlara erişmemiz mümkün değildir.  Bağlantılarımızı saklayıp insanlarla paylaşabileceğimiz sitelere, sosyal imleme sitesi diyoruz. Özellikle Facebook gibi sosyal ağların popüler olduğu günümüzde bu ağlarda haber, resim ve video paylaşımlarıda epeyce popüler. Şimdi düşünelim kullanıcı sitemizdeki bir yazıyı çok beğendi ve Facebook’ da bunu arkadaşlarıyla paylaşmak istiyor. Eğer sitemizde paylaşım için herhangi bir bilgi yoksa %99 kullanıcı paylaşımdan vazgeçiyor, varsa bir tıkla işini hallediyor ve sitemizin ciddi anlamda ziyaretçi kazanmasını sağlıyor. Uzun lafın kısası Web 2.0 ile birlikte popüler olan bu paylaşım tarzı bize güzel şeyler sunuyor. Geçelim mekanızmamızı yapma işlemine;

Öncelikle JavaScript ile birlikte küçük bir yapı kuracağız, amacımız yeni bir imleme sitesi eklerken çıkarırken kolaylık olsun. Kodlarda anlatılacak çok fazla bir şey bulunmuyor, baktığınızda basit bir yapı olduğunu zaten anlayacaksınız.

Farklı bir imleme sitesi eklemek isterseniz, if bloklarına bir yenisini ekleyecek olduğunuz sitenin adresi ve değişken kısımları şeklinde ekleyebilirsiniz.  Buradan bitmiş halini indirebilir, demosu içinse bu yazının altına bakabilirsiniz ;) bu arada dosyaları indirdiğinizde diğer sosyal paylaşım sitelerinin logolarını kendimce bonus olarak sizlere sunuyorum :)

function sosyalAdres(gelen)
{
  var baslik = encodeURI('Eklencek yazının başlığı');
  var adres = escape('Eklenecek yazının içeriği');
  var pencereAyar = "height=700,width=800,titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=1";
  var sAdres='';

  if(gelen==1)
  sAdres="http://www.facebook.com/sharer.php?title=" + baslik + "&u=" + adres;

  if(gelen==2)
  sAdres="http://www.google.com/bookmarks/mark?op=edit&bkmk=" + adres+ "&title=" + baslik;

  if(gelen==3)
  sAdres="http://digg.com/submit?url="+adres+"&title=" + baslik;

  if(gelen==4)
  sAdres="http://del.icio.us/post?url="+adres+"&title=" + baslik;

  if(gelen==5)
  sAdres="http://reddit.com/submit?url="+adres+"&title=" + baslik;

  window.open(sAdres.replace(/amp;/gi,''),null,pencereAyar);
}

Daha Sonrasında, güzel bir görüntü için style kodlarımızı ve işin görüntü olan kısmını ekliyoruz.

	.sosyal{background-color:#f5f5f5;border-bottom:1px solid #ededed;width:715px;padding:5px 0 0 5px;cursor:default;margin-bottom:5px}
	.sosyal span{font-family:Helvetica,sans-serif;color:#0063dd;font-size:14px;font-weight:bold}
	.sosyal:hover {border-bottom:1px solid #c0c0c0}
	.sosyal img{margin-left:20px;cursor:pointer;}
	.sosyal img:hover{margin-bottom:-5px}
[/html]
 
	<div class="sosyal">
		<span>Bu yazıyı paylaşın;</span>
		<img border="0" src="img/sosyalButton/google.png" alt="bu bağlantıyı Google' e eklemek için tıklayın" onclick="sosyalAdres(2)" />
		<img border="0" src="img/sosyalButton/facebook.png" alt="bu bağlantıyı Facebook' e eklemek için tıklayın" onclick="sosyalAdres(1)" />
		<img border="0" src="img/sosyalButton/reddit.png" alt="bu bağlantıyı Reddit' e eklemek için tıklayın" onclick="sosyalAdres(5)" />
		<img border="0" src="img/sosyalButton/digg.png" alt="bu bağlantıyı Digg' e eklemek için tıklayın" onclick="sosyalAdres(3)" />
		<img border="0" src="img/sosyalButton/delicious.png" alt="bu bağlantıyı Delicious' e eklemek için tıklayın" onclick="sosyalAdres(4)" />
	</div>

Volkan arkadaşıma teşşekür ediyor ve ekliyorum.
Bu hizmeti Türkçe olarak EkleBunu sitesinden edinebilirsiniz.

Web Tasarımının Katledildiği Anlar..

Bazı insanlarda doğuştan bir yetenektir tasarım, kuralını kaidesini bilmeden tasarlar. Günümüzdeki modern web tasarımlarında görünen kısım kadar arkaplandaki modernlikte çok fazla önemli. Tasarımların neredeyse tamamı Css kullanılarak yapılıyor. Fakat haleda bazı şık sitelerin kaynak kodlarını görüntülediğimizde şaşkınlığımızı gizleyemiyoruz. Çok sevdiğim bir abim, bu işin tasarım kısmının üstadlarından denebilecek bir abim ne varki haleda eski usul tasarlıyor. Her nekadar yeniliklere ayak uydurmama adına kendini kassada ya yeniliğe uyacak yada uyacaktır. Aşşağıda basit bir örnek gösteriyorum, merak eden html editörüne yapıştırıp çıktısını görebilir. Bu adamın bir eTicaret veya Haber portalı tasarladığını düşünsenize :|

<font face=”Arial”><span id=”odeme_1″ style=”display: block; font-weight: 700″>
<font size=”2″>Kredi Kartınızla Tek Çekim Ödeme Yaptığınızda
Kartınızdan Çekilecek Toplam Tutar <u><font color=”#840018″>
KDV Dahil:&nbsp;&nbsp;</font></u></font><u><font color=”#840018″><font class=”yazi16″><font size=”2″>288,00
TL</font></font></font></u></span></font>

ASP de Querystring ile alınan bilgide Türkçe karakter problemi

Epey zamandır ASP ile uğraşıyorum türlü türlü Türkçe karakter problemleriyle karşılaştım fakat ilk kez böylesine rastladım. Google da ufak bir araştırma yaptıktan sonra sonuca ulaşamadım, hemen kolları sıvayıp bir replace fonksiyonu yazdım. Belki birilerinin işine yarar diye paylaşayım istedim.
[asp]
function tCevir(gelenveri)
gelenveri=Replace(gelenveri,”ı”,”ı”)
gelenveri=Replace(gelenveri,”ÄŸ”,”ğ”)
gelenveri=Replace(gelenveri,”ü”,”ü”)
gelenveri=Replace(gelenveri,”ç”,”ç”)
gelenveri=Replace(gelenveri,”İ”,”İ”)
gelenveri=Replace(gelenveri,”Ä”,”Ğ”)
gelenveri=Replace(gelenveri,”Ç”,”Ç”)
gelenveri=Replace(gelenveri,”Ü”,”Ü”)
gelenveri=Replace(gelenveri,”ö”,”ö”)
gelenveri=Replace(gelenveri,”Ö”,”Ö”)
tCevir = gelenveri
end Function
[/asp]