Tuesday, December 29, 2009

MSSQL Error : String or binary data would be truncated. The statement has been terminated.

Hayatta yapmadığım şeyi yaptım ve veri tipini nvarchar() olarak tanımlarken büyüklüğü hakkında hiç düşünmeden "10" dedim. nvarchar(10)


sonra olan oldu ve
String or binary data would be truncated. The statement has been terminated.

Aradan sinir dolu dakikalar geçince gördüm ki hata veri alanın yetersiz olmasından. nvarchar(50) yaptım ve hatadan kurtuldum

Siz siz olun verilerinizin olası büyüklüğü hakkında değerlendirme yapmadan alanlarınızı tanımlamayın.

Monday, December 28, 2009

asp.net - gridview hücrelerindeki verileri html olarak formatlasın

Zaten ne demeye varsayılan olarak html formatlamıyorsa anlamadım.
Şöyle yapmak gerekebilir :

protected void raporGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[index].Text = Server.HtmlDecode(e.Row.Cells[index].Text);
        }
    }


yok yok ben neden yıllardır asp.net'ten uzak durduğumu şimdi anladım. işim biter bitmez php ile devam!

Tuesday, December 22, 2009

asp.net repeater içinde kayıt numarası

Kayıtın kaçıncı kayıt olduğunu (indisini) böyle alabilirsiniz : Container.ItemIndex

yani :

<asp:repeater id="Repeater1" runat="server">
        <itemtemplate>
                Kayıt : <%# Container.ItemIndex %>
        </itemtemplate>
        <separatortemplate>
                <br />
        </separatortemplate>
</asp:repeater>

Tuesday, December 1, 2009

Wordpress Kategori Hariç Etmek

YENİ ÖĞRENDİM

Wordpress template fonksiyonlarını yeni yeni irdeliyorum.
Wordpress'de yazıları listelemek için query_posts kullanırız. query_posts ile istediğim kategorileri listelerken istemediğim kategorileri de "kategori id" başına "-" (eksi işareti) koyuyorum.

query_posts("cat=1,2,-3,-8");

Saturday, October 17, 2009

web içeriğini sql cümleleriyle sorguluyorum

TAVSİYE EDİYORUM

php ile web içerikleri çekerken sql sorular gibi içerik sorgulamak için bunu kullanıyorum. Yani istediğim elemanları seçmek için oldukça fantastik bir class : htmlSQL
 "a PHP class to query the web by an SQL like language"


Örnek üzerinden deneyerek karar veirn : http://www.jonasjohn.de/lab/htmlsql/?url=2&q1=1&q2=8&q3=0


--


Kısa süreli deneyimim sonrasında gördüm ki oldukça işlemci yoran ve çok yavaş bir yöntem. Ancak hala "tavsiye ediyorum" etiketini kaldırmadım çünkü bir o kadar da eğlenceli.

Saturday, September 26, 2009

server-side değil "Client-side PHP"





Yine bir gün stumble yaparken şu js kütüphanesi ile karşılaştım : http://phpjs.org/

Asıl amacı php fonksiyonlarını client-side çalışır yapabilmek. Bir de kılıfı var; diyor ki : PHP.JS kullanarak, client-side teknolojiler ile çok uğraşan PHP geliştiricilerini hızladırabilir.

Bir de özetle şöyle demişler :
"PHP.JS is an open source project in which we try to port PHP functions to JavaScript. By including the PHP.JS library in your own projects, you can use your favorite PHP functions client-side."

İlk bakışta eksik yanı mutlaka çok olacaktır, ancak meseleyi irdeleyince php.js kullanan bir kütüphane daha buldum ki o daha tatmin edici geldi : http://www.harmony-framework.com
Harmony henüz beta ve kendilerini şöyle özetliyorlar :

Harmony's goal is to bring php in the browser, thus developing on the server and on the client side using only one language. PHP, which is simple to use and known by thousands, is a perfect fit. No needs to learn javascript any more. The conversion between the two language is instantaneous! (Learn what you cannot do).



Konuyu irdelemek için
http://phpjs.org
http://www.harmony-framework.com/

Friday, September 18, 2009

jquery09 spotlights at slideshare

NOT DÜŞTÜM

slideshare.net de dokümanları gezerken ana sayfada jquery09 spotlights altında ilgi çekici bir kaç sunu buldum. Birisini de geçen hafta ben eklemiştim. Bir çırpıda jquery deneyimi yaşatan, başlangıç için heveslendiren bir sunuydu. Şöyle göz atın bence. Hatta indirip jquery kullanmasını tavsiye ettiklerinize gönderiverin. Diğer seçilmiş sunular da şu adreste : http://www.slideshare.net/tag/jquery09


Bu sununun yazarı :
• Kyle Bradshaw
Front End Web Developer
• Blog - http://somedirection.com
• AIM - kyledbradshaw
• Twitter - @ky

Thursday, September 17, 2009

php ile pdf işlemlerimi artık tcpdf ile yapıyorum

ÖĞRENDİM
TAVSİYE EDİYORUM

PHP ile pdf işlerim için bunca zamandır pdfb (fpdf+barcode) kullanıyordum ama artık daha iyi olduğunu düşündüğüm bir sınıf var : TCPDF

TCPDF'de de barkod özelliği eklenmiş.
Ayrıca örnekleri incelediğimde pdfb den eksik kalır yanı olmadığını gördüm.

Yapılabilecekler örnekleri ile şöyle sıralanmış :

  1. Simple PDF with default Header and Footer: [PHP] [PDF]
  2. Simple PDF without Header and Footer: [PHP] [PDF]
  3. Custom Header and Footer: [PHP] [PDF]
  4. Cell stretching: [PHP] [PDF]
  5. Multicell: [PHP] [PDF]
  6. WriteHTML and RTL support: [PHP] [PDF]
  7. Independent columns with WriteHTMLCell: [PHP] [PDF]
  8. External UTF-8 text file: [PHP] [PDF]
  9. Image: [PHP] [PDF]
  10. Multiple columns: [PHP] [PDF]
  11. Colored Tables: [PHP] [PDF]
  12. Graphic Functions: [PHP] [PDF]
  13. Graphic Transformations: [PHP] [PDF]
  14. Javascript and Forms: [PHP] [PDF]
  15. Bookmarks (Table of Content): [PHP] [PDF]
  16. Document Encryption: [PHP] [PDF]
  17. Independent columns with MultiCell: [PHP] [PDF]
  18. Persian and Arabic language on RTL document: [PHP] [PDF]
  19. Non unicode / Alternative config file: [PHP] [PDF]
  20. Multicell complex alignment: [PHP] [PDF]
  21. writeHTML alignment: [PHP] [PDF]
  22. CMYK colors: [PHP] [PDF]
  23. Page Groups: [PHP] [PDF]
  24. Object Visibility: [PHP] [PDF]
  25. Object Transparency: [PHP] [PDF]
  26. Text Clipping: [PHP] [PDF]
  27. Barcodes: [PHP] [PDF]
  28. Multiple page formats: [PHP] [PDF]
  29. Set PDF viewer display preferences: [PHP] [PDF]
  30. Colour gradients: [PHP] [PDF]
  31. Pie Chart Graphic: [PHP] [PDF]
  32. EPS/AI vectorial image: [PHP] [PDF]
  33. Mixed font types (TrueType Unicode, core, CID-0): [PHP] [PDF]
  34. Clipping masks: [PHP] [PDF]
  35. Line styles with cells and multicells: [PHP] [PDF]
  36. Text Annotations: [PHP] [PDF]
  37. Spot Colors: [PHP] [PDF]
  38. NON-embedded CID-0 CJK font: [PHP] [PDF]
  39. HTML Justification: [PHP] [PDF]
  40. Booklet (double-sided pages): [PHP] [PDF]
  41. File attachment: [PHP] [PDF]
  42. Image with Alpha Channel Transparency: [PHP] [PDF]
  43. Disk caching: [PHP] [PDF]
  44. Move and delete page: [PHP] [PDF]
  45. Table Of Content with Bookmarks: [PHP] [PDF]
  46. Text hyphenation: [PHP] [PDF]
  47. Transactions and UNDO: [PHP] [PDF]
  48. Table header and rowspan: [PHP] [PDF]
  49. TCPDF methods in HTML: [PHP] [PDF]
  50. Experimental 2D Barcode: [PHP] [PDF]
  51. Full page background: [PHP] [PDF]
  52. Digital Signature Certification: [PHP] [PDF]
  53. Javascript functions: [PHP] [PDF]
  54. XHTML Form: [PHP] [PDF]



Tuesday, September 15, 2009

gmail kullanıcı dostudur, size öneriler sunar

Gmail kullanmayı seviyorum. Çünkü her zaman pratik ve kullanıcı dostu.

Geçen yeni bir özelliğini fark ettim.
Sürekli mesaj attığım bir grup mail adresi var. Bir kere de bu grubun sadece bir bölümüne mesaj atacaktım ki gmail bana "şunları da ekleyebilirsin" diye gruptaki diğer adresleri gösterdi.

Friday, September 11, 2009

Hızlı Yol Tarifi Formu

TAVSİYE EDİYORUM

Eğer oldukça pratik bir şekilde google maps yol tarifi vermek isteseydim bir form koyardım ve bu formu google maps e post eylerdim. Şöyle ki:

<form action="http://maps.google.com/maps" method="get">
   Konum <input type="text" id="saddr" name="saddr" />
   <input type="hidden" id="daddr" name="daddr" value="Ankara, Türkiye" />
   <input type="submit" value="Yol Tarifi Al" />
</form>


İsterseniz hemen deneyin:

Konum

Saturday, September 5, 2009

javascript kullanarak iphone, android, blackberry uygulamalar

ÖĞRENDİM
TAVSİYE EDİYORUM


Sadece javascript bilgimle iphone uygulaması geliştirmenin bir yolunu daha buldum : http://phonegap.com
Henüz denemedim. Videolarına baktım ve dökümanları inceldim. Tam aradığım bir geliştirme kiti.

Aslında bizim jquery john bundan bahsetmiş aylar evvel. Ancak ben epey geriden geliyorum anlaşılan.

Tuesday, August 4, 2009

jquery validation eklentisi select elemanı neden i.e.'da hata verir

ÇÖZDÜM-BULDUM

Uzuncadır jquery validation eklentisini kullanırım fakat geçen çok üzücü bir olay yaşadım :)
şöyle ki; hiç yapmadığım bir şey ama dalgınlıklat "select" elemanının "option" larına "value" değerini vermemişim. Bu şekilde de o"option" içindeki metin "value" olarak alınabiliyor zaten. Ama standart olmuyor.


Tam bu sırada yaptığım formu i.e.'da denemek istedim ki select elemanı seçildiğinde veya seçilip başka bir elemana tıklandığında hatayı aldım 
"Nesne gerekli"
sayfayı debug yaptığımda ise kırılan satırın şurası olduğunu gördüm.
case 'select':
var options = $("option:selected", element);
return options.length > 0 && ( element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);

Sonra fark ettim ki "option" lar için hiç "value" girmemişim.
Hepsi şu şekildeydi:
<option>metin</option> 
<option>metin2</option>

Tabi bunu Jörn düşünmesi gerekliydi. Benim gibi dalgınlar böyle kullanabilir ve buna bir önlem almak gerekirdi.  Neyse olayı erkenden farkedip hemen müdahale ettim.
Gıcıklık olsun diye hala "value" eklemedim onun yerine case içerisine "options[0].attributes['value']" olup olmadığını kotrol edip duruma göre "option" içindeki metni aldım.
ama daha kolay bir yol olarak siz her "option" için bir "value" eklemeyi unutmayın.

Wednesday, July 29, 2009

php ve excel tabloları

TAVSİYE EDİYORUM

php ile excel tabloları görnütülemek için şimdiye kadar hep phpclasses.org daki bazı pratik sınıfları kulanmıştım.
Ancak bugün çok daha pratik ve kullanışlı bir "php excel reader" buldum ve hemen denemeye başladım.

Hücrenin formatını ve stilini çok daha kolayca alabilir ve excel de sunulduğu şekliyle html olarak gösterebilirsiniz.


Konuyu irdeleyin: http://mattkruse.com/2008/12/24/php-excel-reader/

Friday, July 24, 2009

ftp sunucumu yerel bir dizine bağlamak

ÖĞRENDİM

Bazı sevdiğim php editörlerin ya ftp desteği yok ya da zahmetli bir eklentisi var. Ben de sıkıldım ve google'a sordum acaba bir ftp sunucusu en kolay nasıl yerel dosya sistemine bağlanır diye. Sonra baktım ki bunun çok kolay bir yolu varmış.

http://curlftpfs.sourceforge.net/

hemen şöyle indirdim kurdum. Ufacık bir şey zaten.

sudo apt-get install curlftpfs


sonra da şöyle bağladım :

curlftpfs ftp://kullanici:parola@sunucum.com/  /home/hasantayyar/public_html/sunucum


Artık /home/hasantayyar/public_html/sunucum dizinine girdiğimde ftp sunucumun içeriğini görüyorum.

Araştırırken bir de alternatif bulmuştum. Denemek için gözatılabilir.
http://www.howtogeek.com/howto/ubuntu/how-to-mount-a-remote-folder-using-ssh-on-ubuntu/

Konuyu irdelemek derinlemesine için:
http://www.belgeler.org/man/man8/man8-mount.html

http://en.wikipedia.org/wiki/Mount
http://wiki.linux-sevenler.org/index.php/Mount
http://www.linux-ntfs.org/doku.php?id=howto:mount
http://www.belgeler.org/glibc/glibc-Mount-Unmount-Remount.html

Thursday, July 23, 2009

jquery işlemlerinde setTimeout kullanmak

NOT DÜŞTÜM

Jquery ile geçiktirme meselesinin çok sorulduğunu farkettim. Şaşırdım. Halbuki javascript ile bir farkı yok ki?
Ancak tabi ki daha düzenli kullanmakta fayda var.
Bu alttaki iki satırı jquery yükledikten hemen sonra çalıştırırsanız elinizde "timeout" diye bir fonksiyon olur. Yaptığı çok özel bir şey yok. Sadece jquery işlemerinizde daha kolay kullanılabilir hale getirilmiş setTimeout fonksiyonundan ibaret.
$.fn.timeout = function(t,f){
 this.each(function(){setTimeout(f,t); }); 
 return this; };

Şöyle üç şekilde kullanımına örnek verdim

js:
$(document).ready(function(){
 
  $("#metin").click(function(){  
   $(this).timeout(1000,function(){
   $("#icmetin").html("1 saniye sonra gelen mesaj");
    $(this).timeout(2000,function(){     
     $("#icmetin").append("
ilk 1 saniyelik ekleyiş ardından 2 saniye sonra gelen gelen mesaj");
    }); 
   })
   .timeout(2000,function(){     
    $("#icmetin").append("
 2 saniye sonra gelen gelen mesaj");
   });
  });
});

html:

<a href="#" id="metin">tikla</a> <div id="icmetin"></div>

şurada çalıştırarak görebilir : http://jsbin.com/ivetu
ve burada da kodları değiştirip deneyebilirsiniz : http://jsbin.com/ivetu/edit

---
Farkettim ki yukarıdaki çok karışık geliyor insanlara. halbuki kullanım kolaylığını göstermek için çeşitli şekillerde örnek vermişdim. Neyse, hasılı, nihayetinde şöyle de kullanabilirsiniz:

Alıntı :

  1. $(document).ready(function() {  
  2.    window.setTimeout(function() {  
  3.      // islem islem islem  
  4.    }, 1000);  
  5. });  

Tuesday, July 21, 2009

web cronjob

TAVSİYE EDİYORUM


Çok sevdiğim ve yakın zamanda iki farklı şekilde işime yarayan bir hizmeti ve deneyimimi anlatayım.
http://www.cronme.org/
Kurucusu Serkan servisi şöyle özetliyor :).
CronMe is a free web based cron service.

Bu servis ile düzenli aralıklarla yapılmasını istediğim işleri web üzerinden kontrol edebiliyor ve takip edebiliyorum (verdiği bir rss adresi ile her an takip edebiliyorum). Yakın zamanda iki şekilde kullandım.

1. Veritabanı yedekleme.
(Evet başka yolları da var fakat bu şekilde kullanımı çok hoş.)
İlk olarak çalıştığında istediğim veritabanını bir ftp dizinine yedekleyen bir php dosyası hazırladım. Sonra cronme panelinen bu işlemi haftalık olarak ayarladım.

2. Veritabanı sıkıştırma.
Sürekli şişen bir veritabanıma haftalık manuel sıkıştırma yapıyordum. bunun için bir php dosyası hazırladım ve cronme üzerinden haftalık olarak ayarladım.


Beğenirseniz ve paranız varsa bağış yapmayı unutmayın. Sitenin sol altındaki "Donate" butonuna basarak kolayca bağış yapabilirsiniz.

konuyu irdelemek için:
cronme anasayfa : http://www.cronme.org/
cron nedir? (wiki) : http://en.wikipedia.org/wiki/Cron
cron nedir? (k. özdeir) : http://www.skorp.eu/2006/10/07/linux-cron-crontab-cronjob-nedir/

fakat google sites yasaklı

Başından beri garip bir deneyim olan google pages artık aktif olmayacak (zaten uzun bir süredir yeni kayıt almıyorlardı). Sürekli uyarı mesajı atıp durdular "Bak kapatcaz ona göre. Dosyalarını falan google sites a alabilirsin. Bak bizdensöylemesi" şeklinde. İyi de sevgili google bizim ülkemizde google sites yasaklı.

Yasaklı olmasına rağmen "şöyle bir deneyim de sonra kullanmam zaten" derseniz hosts dosyanıza ekleyeceğiniz ip adresi şu olmalı. Ben dosyalarımı yükledim . Hızlı, güzel ve temiz bir hizmet. Ama faydalanamayacağız sanırım.

209.85.227.102 sites.google.com

Saturday, June 20, 2009

css deneylerim - üçgen

çok güzel css deneyleri ile karşılaştım bu gün. Biraz biraz denemelere başladım ben de.
Herkes gibi css ve üçgen meselesine uzaktan giriş yaptım:


benim üçgen modelim şöyle oldu:
(css ile sadece dik kenar üçgen çizmek için bir prototiptir. yükseklik, taban uzunluğu, konum ve renk değiştirilebilir.)
css:
<style type="text/css" media="screen">
  .ust {
  position:absolute; 
  left:150px; top:100px;/* konumlandır */   }

  .ust div {
    border-left-color: transparent;
    border-style: solid;
  }
  .ic{
  border-width: 0 0 /* taban: */ 300px /* yükseklik : */ 200px;
  border-bottom-color: #955;
  }
</style>
html:
<div class="ust">
<div class="ic"></div>
</div>
sonuç:

biraz oynayınca şuna benzer çıktılar da elde edilebilir.



konuyu irdelemek için:
http://www.tantek.com/ (css ve geometrik şekiller ile ilgili ilk incelediğim site)
http://www.tantek.com/CSS/Examples/polygons.html (yöntemler harika)

webkit sevimlidir

NOT DÜŞTÜM


sevimlidir çünkü oval köşeler yapmak için sizi uğraştırmaz, geçiş efekti için javascript yazmanıza gerek kalmaz (tek neden bu değil elbette). Kolaycı bir yaklaşımı vardır.

Bugün öğrendim ki; renk geçişini şöyle sağlayabiliyormuşum:
  1. bir link için normal ve :hover durumları yazılır:
  2. a{ background-color: #239; color: #fff; padding:10px;}
    a:hover{ background-color: #932; color: #020202; }
  3. Sonrasında da bügün örendiğim ve renk geçişini sağlayan şu kod
    a {-webkit-transition-duration: .33s; -webkit-transition-property: color, background;}
Geçiş süresini ayarlayarak daha hızlı veya yavaş bir geçiş yapılabilir. Ancak bu elbette mozilla ff ve ie için çalışmayacak olan bir koddur! Sadece webkit için. Chrome ve Safaride deneyebilirsiniz.

Zannederim biraz performansı düşürüyor. Abartmamak lazım. Örneğin şu blog da tüm oval köşeler ve geçişler çok kullanılmış.

Not: CSS3 ile zaten bu tarz işlemler standart olma (galiba) aşamasında efendim :
http://www.w3.org/TR/css3-transitions/

konuyu irdelemek için:
  1. http://css-infos.net/property/-webkit-transition-duration
  2. http://developer.apple.com/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/css/property/-webkit-transition-duration
  3. http://webkit.org/blog/138/css-animation/
  4. http://www.w3.org/TR/css3-transitions/

Thursday, June 11, 2009

cURL ile İlk SSL url

Normel de şöyle kullanıyorum:

// method = POST/GET// adres = "http://..."
// veri = "a=deneme&b=deneme_deger2"

$ch  = curl_init(); // cURL oturumu baslatildi.
$url = $method == 'GET' ? $adres."?".$veri : $adres;  // get ? post
curl_setopt($ch, CURLOPT_URL,$url."");
if($method == 'POST') {
        curl_setopt($ch, CURLOPT_POSTFIELDS,"$veri");
 }
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_REFERER,$referans);
curl_setopt($ch,CURLOPT_USERAGENT,$ajan);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("application/x-www-form-urlencoded"));
$veri=curl_exec($ch);
echo $veri;

işte güvenli sayfalar için şu üst bilgiyi vermem gerekmekteymiş.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);


Thursday, June 4, 2009

Mandelbrot Büyük Adammış

Fractal setler arasında en sevdiğim Mandelbrot'dur. Wiki'ye sordum tam istediğim cevabı verdi. En anlaşılır biçimiyle Mandelbrot seti algoritması (pseudocode olarak)

For each pixel on the screen do
{
 x = x0 = x co-ordinate of pixel
  y = y0 = y co-ordinate of pixel

  iteration = 0
  max_iteration = 1000

  while ( xx + yy = (22)  AND  iteration  max_iteration )
  {
    xtemp = xx - yy + x0
    y = 2xy + y0

    x = xtemp

    iteration = iteration + 1
  }

  if ( iteration == max_iteration )
  then
    color = black
  else
    color = iteration

  plot(x0,y0,color)
}


Konuyu irdelemek için bağlantılar
http://en.wikipedia.org/wiki/Mandelbrot_set#
http://www.codeproject.com/KB/cpp/mandelbrot_obfuscation.aspx (c++ ile Mandelbrot seti)
http://local.wasp.uwa.edu.au/~pbourke/fractals/mandelbrot/ (The Mandelbrot At A Glance)
http://snippets.dzone.com/tag/mandelbrot

Wednesday, June 3, 2009

Jquery Animasyonlarında Dikkat Edilmesi Gereken Önemli Bir Nokta

Bu sabah jquery ile yaşadığım kötü hatıra ile not etme gereği duydum

Sıradan bir menü efekti için mouse linklerin üzerine geldiğinde linklerin sağa doğru animasyonunu sağlayan kod kabaca şu şekilde olabilir.

$(document).ready(function() {    
$('ul a')        
  .hover(
  function() {$(this).animate({ left: 30 });}, 
  function() { $(this).animate({ left: 0 });});
  });
Görmek için: http://jsbin.com/oyaxe
Kodu daha yakın incelemek/düzenlemek için: http://jsbin.com/oyaxe/edit

Fakat yukarıdaki örnekde mouse hızlıca linklerin üzerinden bir kaç gez gidip geldiğinde linklerin tüm animasyonu tamamlamak için animasyonları kuyruğa koyar ve mouse artık başka yerde olsa bile önceki hareketinin tetiklediği animasyonlar bir süre devam eder. Bu önemli nokta genellikle atlanıyor. Bunun önüne geçmek için animate() fonksiyonundan hemen önce stop() fonksiyonu kullanılmalı. Şöyle ki:
$(document).ready(function() {    
$('ul a')        
  .hover(
  function() {$(this).stop().animate({ left: 30 });}, 
  function() { $(this).stop().animate({ left: 0 });});
  });
Görmek için : http://jsbin.com/ayizi/
Kodu daha yakın incelemek/düzenlemek için: http://jsbin.com/ayizi/edit


Etraflıca bakınmanız için ek bağlantılar:
http://docs.jquery.com/Effects/stop
http://docs.jquery.com/Effects/animate
http://docs.jquery.com/API/1.3/Effects

Thursday, May 28, 2009

Google Chart Api'den Çok Memnunum

TAVSİYE EDİYORUM

Bir süredir google chart api kullanıyorum ve gerçekten hayat kurtarır bir etken. kod kalabalığını yok eden oldukça sevimli ve bir o kadar da profesyonel bir api. Detaylar ve örnekler kendi sayfasında verilmiş.

Yampanız gereken tek şey parametreleriniz "<img" içinde "src" a eklemek. Eğer daha da tembelseniz birisi google chart api için sihirbaz yapmış : http://www.jonwinstanley.com/charts/

Kısa bir kaç örnek:
<img src="http://chart.apis.google.com/chart?
chs=400x200
&chco=859999|efe0a0|889955
&chd=t:60,10,30
&cht=p3
&chl=friendfeed|facebook|twitter|myspace"
alt="Sample chart" />
çıktısı:

<img src="http://chart.apis.google.com/chart?
cht=lc
&chs=400x200
&chco=0077CC
&chd=t:27,25,60,31,25,39,25,
31,26,28,80,28,27,31,27,
29,26,35,70,25" />
çıktısı:

<img src="http://chart.apis.google.com/chart?
cht=s
&chco=954141
&chd=t:12,87,75,41,23,96,68,71,34,9|98,60,27,34,56,79,58,74,18,76|84,23,69,81,47,94,60,93,64,54&chxt=x,y&chxl=0:|0|20|30|40|50|60|70|80|90|10|1:|0|25|50|75|100
&chs=400x200" />
çıktısı:

Monday, May 25, 2009

Greasemonkey ilk denemem

Greasemonkey ile herhangi bir twitter profilinden son güncellemeyi aralılarla kontrol edip herhangi bir sayfanın üzerinde tek satır olarak görüntüleyeceğim. Tabiki sadece bir prototip.
Greasemonkey ile jquery hiç kullanmamıştım bu vesileyle onu da kullanmış oldum.
Eğer kodu buradan okuyamıyorsanız :  http://pastebin.com/f6e5cbbe3

test3.user.js

// ==UserScript==
// @name           test3
// @description    tayyar test3
// @copyright      2009, Hasan Tayyar BEŞİK 
// @license        GPL version 3 or any later version (http://www.gnu.org/copyleft/gpl.html)
// @include        *
// ==/UserScript== 

// jQuery eklendi
var jq = document.createElement('script');
jq.src = 'http://jquery.com/src/jquery-latest.js';
jq.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(jq);

// jQuery yüklenme durumu kontrolü
function GM_wait() {
 if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
 else { $ = unsafeWindow.jQuery; twit_kontrol(); }
}
GM_wait();

function twit_kontrol(){

var obje = document.createElement("div");
obje.innerHTML =  '<div style="width:100%;height:25px;z-index:100; background:#7FDFF8;color:#050505;position:relative; top:0" id="twits"></div>';
document.body.insertBefore(obje, document.body.firstChild);
var siteName = 'htayyar';
$.getJSON(
'http://search.twitter.com/search.json?callback=?&rpp=50&q=from:' + siteName,
 function(data) {
 $.each(data, function(i, tweets) {
 if(tweets[0].text !== undefined)
 $('#twits').append('<span>' + tweets[0].text + '</span><br />');
 });
 }
);
var st=setTimeout("twit_kontrol()",2000); 
}

Friday, May 22, 2009

ip adresinden ülke, bölge, şehir öğrenmek için ücretsiz bir api kullanıyorum

TAVSİYE EDİYORUM ÖĞRENDİM

http://iplocationtools.com "Free IP address geolocation, API and fraud detection tools"

Bu ücretsiz api ile ip adresinin konumunu bulabilirsiniz. %90-%95 doğruluk oranı verilmekte. Nadiren yakın bölgeler çıkabiliyor. Örneğin İzmir için bazen Manisa çıkabilir ki bunun nedeni de muhtemelen oradaki internet ağı ile ilgili.

Bu apinin php ile nasıl kullanılacağı bu sayfada güzelce yazılmış : http://iplocationtools.com/ip_location_api.php

Veriyi varsayılan olarak XML formatta alıyorsunuz. Ancak JSON olarak da alabilirsiniz.

# xml çıktı verir : http://iplocationtools.com/ip_query.php?ip=120.120.120';# json çıktı verir : http://iplocationtools.com/ip_query.php?ip=120.120.120&output=json';# callback fonksiyonu ekleyebilirsiniz şöyleki# http://iplocationtools.com/ip_query.php?ip=120.120.120&output=json&callback=fonksiyonum
Güzel yanı bir kerede birden fazla sorgu yapabilirsiniz.
# http://iplocationtools.com/ip_query2.php?ip=120.120.120.100,121.121.121.100&output=json


Bir avantajı daha varki o da ip adresi yerine domain yazabilirsiniz.
# http://iplocationtools.com/ip_query2.php?ip=google.com&output=json

Detay bilgiler değil sadece ülke adının öğrenmek için daha temiz çıktı veren bir sayfası daha var bu apinin.
# http://iplocationtools.com/ip_query_country.php?ip=120.120.120.120&output=json

Ayrıca tüm veritabanını indirebilirsiniz. Bunu sevdim çünkü çoğu yer satıyor.
http://iplocationtools.com/sql_database.php

Kullanıp memnun kalırsanız(memenun kalmamak elde değil) lütfen donation butonuna basıp birazcık bişeyler gönderiverin.

Kullanıcıya güvenme 1 - Form Submit Butonunu Etkinsizleştir

TAVSİYE EDİYORUM

Çoğu uygulamada görüp hala kendi uygulamalarımda yapmadığım bir durumdur. Bir formda "Submit" tuşuna basıldıysa kullanıcının tekrar tekrar o tuşa basmasını engellemek gerek. tembel olduğum için kısaca tüm formlara bu özelliği şu şekil ekliyorum artık


// <form> bütün form tagleri
$('form').submit(function(){// submit olduğu vakit
        $('input[type=submit]', this).attr('disabled', 'disabled');
});

Thursday, May 14, 2009

last.fm verilerinizi php ile çekin

Aslında temel amacım tüm verileri indirmek. Fakat tüm verileri çekmek için last.fm api yeterli gelmiyor. bundan dolayı profil sayfasında curl ile dolaşarak ayrıştırmam gerkecek.

curl olmadan last.fm api'si sayesinde last.fm verilerinizin bir kısmını xml olarak çekebilirsiniz.
örneğin şunlar çekilebiliyomuş : topalbums, topartists, toptracks, friends, activefriends, neighbours, replytracker, recentactivity, recenttracks, tags, taggeditems, artisttags, albumtags, tracktags, journals, weeklychartlist, weeklyartistchart, weeklytrackchart, weeklyalbumchart, profile, manualrecs, wikirecs, recentlovedtracks, recentbannedtracks, events, playlist, systemrecs, friendevents, eventsysrecs, tasteometer

xml adresi şuna benziyor: http://ws.audioscrobbler.com/1.0/user/[username]/topartists.xml

örnek bazı adresler şöyleki:
http://ws.audioscrobbler.com/1.0/user/hasantayyar/topartists.xml
http://ws.audioscrobbler.com/1.0/user/hasantayyar/topalbums.xml
http://ws.audioscrobbler.com/1.0/user/hasantayyar/toptracks.xml

xml yapısını görmek için adresi herhangi bir tarayıcı ile açıp kaynağına bakarsanız node adlarını göreceksiniz. sonrasında ise aşağıdaki örneği baz alıp verilerinizi çekebilirsiniz.

Şöyle bi kaç şey denedim örneğin:

demo (topartist için): http://hasantayyar.tekabul.com/last.fm.api.demo.php 
kod (topalbums için örnek kodlar)
<?php
$user = "hasantayyar";  // last.fm user name
$xml=array(
"topalbums"=>"topalbums.xml",
"topartists"=>"topartists.xml",
"toptracks"=>"toptracks.xml"
//...
);
// sunlar olabilir:  topalbums, topartists, toptracks, friends, activefriends, neighbours, replytracker, recentactivity, recenttracks, tags, taggeditems, artisttags, albumtags, tracktags, journals, weeklychartlist, weeklyartistchart, weeklytrackchart, weeklyalbumchart, profile, manualrecs, wikirecs, recentlovedtracks, recentbannedtracks, events, playlist, systemrecs, friendevents, eventsysrecs, tasteometer

// ben şimdilik topalbum icin yapiyorum

$url ="http://ws.audioscrobbler.com/1.0/user/".$user."/".$xml["topalbums"];

$xml = simplexml_load_file("$url"); // PHP4 ile çalışmaz sanırım

print "<div class='container'>";

foreach($xml->album as $album)
{
$artist = $album->artist;
 $album_image_medium = $album->image->medium;
$album_name = $album->name;
$album_url = $album->url;

echo "<div class='row'>
<div class='album_img'><img src='".$album_image_medium."'></div>
<div class='album_link'><a href='".$album_url."'>".$artist." - ".$album_name."</a></div>
<div class='clear'></div>
</div>
";

}

print "</div>";

?>

Saturday, April 25, 2009

phpmailer türkçe karakterlerin outlook ile sorunlu görünmesi meselesi

ÇÖZDÜM-BULDUM


phpmailer php uygulamalarımda tüm mail ihtiyaçlarım için biçilmiş kaftan.
Fakat bir kaç gün önce tesadüfen şunu fark ettim; gönderdiğim utf8 karakterli mailim gmail, yahoo gibi webmail-client lar üzerinden sorunsuz okunsa da outlook 2003 ve outlook 2007 ile bütün latin olmayan karakterler eksik ve doğru değildi.

halbuki: $mail->CharSet  ="utf-8";  yapmıştım.demekki utf8 kodlayıp göndermek yetmiyormuş.
ardından şunu da yazdım (umutsuzca, çok alakalı olmasa da: $mail->Encoding="base64";
fakat hala outlook ile sorunlu. Sonra fark ettim ki mail göndermeden önce gönderilecek maili (mysql den verileri çekerek) hazırlayan php dosyası kaydedilirken (notepad++ yüzünden) utf8 olarak kaydedilmiş.


dosyayı açtım ve farklı kaydederken kodlama olarak utf8 seçtim. sorunmu düzeldi

--
ek phpmailer ile bazı örnek uygulamalara ve detaylara şu adresten erişilebilirsiniz : http://phpmailer.codeworxtech.com/index.php?pg=examples


Örneklere doğrudan bağlantılar:
Basic Mail() Example
Advanced Mail() Example

Basic Sendmail Example
Advanced Sendmail Example

Basic Qmail Example
Advanced Qmail Example

Basic SMTP Example
Basic SMTP (no authentication)
Advanced SMTP Example
Advanced SMTP (no authentication)

SMTP / Database Example

Basic Gmail Example
Advanced Gmail Example

Basic POP before SMTP
Advanced POP before SMTP

Thursday, April 23, 2009

php ve pdf düzenleme, türkçe font sorunu, [fpdf, pdfb ve tcpdf kütüphaneleri]



fpdf (http://www.fpdf.org/) php ile pdf işleme konusunda birebir. harika bir class.
geçenlerde fdf  tabanı kullanarak (ve bir kaç ek kütüphane ile) geliştirilmiş pdfb (http://chir.ag/projects/pdfb/) paketine rastladım.barkod ekleyebiliyor ve pdf şablonlar oluştutup dinamik verilerle bu şablonlardan yeni pdf dosyalar oluşturabiliyorsunuz.

pdfb ile iki sorun çıktı karşıma

1. Hata : pdfb FPDF error: Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'

bu hatanın temel nedeni olarak pdfb nin eski fpdf sınıfı kullanması olabileceğini düşündüm. içindeki fdpdf sınıfını güncelledim. ancak hata devam etti. meğer hata pdf dosyasının oldukça yeni bir header türü içermesindenmiş. yani kısaca acrobat reader uyumluluğu eski değil, yeni pdf reader lara göre ouşturulmuş. pdf dosyamı tekrar oluşturdum fakat bu defa acrobat reader 6 uyumlu olarak sakladım. birinci sorunum çözüldü!

2. fpdf türkçe karater sorunu
bu sorunu hala çözemedim. kullandığım font dosyası (times.php) türkçe karakter içermiyor olabilir belki diye http://fpdf.fruit-lab.de/ adresinden tekrar oluşturdum fakat hala sorun devam etmekte.
--
ek
iki gün sonunda buldum. PDFB ve FPDF için utf8 karakter sorununu şu şekilde çözdüm (daha dar ifadeyle fpdf türkçe karakter sorunu).
1.http://fpdf.fruit-lab.de/ adresinden iso-8859-9 olarak TR kartakterleri de kapsayan bir fontu çevirdim.
2. Elde ettiğim "z" ve "php" dosyalarını yükledim.
3. pdf oluştururken bu fontu kullandım. şöyleki:
$pdf->AddFont('times','','times.php');
$pdf->SetFont("times", "", 10);

4. (Bu aşamada hala sorunlarım devam etti). pdf çıktısı üreten sayfayı utf8 olarak kaydettim
5. pdf de görünecek olan tüm string verilerimi iu fonksiyon le iso-8859-9 olarak kodladım.

function trsuz($str){
$str=mb_convert_encoding($str, "ISO-8859-9","UTF-8");
 return $str;
  }

 


Artık sorunum kalmadı. mysql den utf8 olarak aldığım string veriler sorunsuzca fpdf ile pdf dosyasında görünmekte :)

Yukarıda bahsi geçen font oluşturma işlemi ile uğraşmak istemezseniz yukarıdaki ben "times" için oluşturdum. Sadece indirip "pdfb\fpdf_fpdi\font" dizini içine açınız. http://sacrosancttayyar.googlepages.com/font.rar

Friday, April 10, 2009

css link / @import ve performasn meselesi

derlerki @import kullanmayın, <link> kullanarak css sayfası yükleyin.
performasn açısındanmış.
şöyle açıklamış
http://www.stevesouders.com/blog/2009/04/09/dont-use-import/

Thursday, February 12, 2009

alternatif radio button

artık radio button kullanmaktan vazgeçtim.
jquery-ui ye iyice alıştım ve artık radio button yerine şu örnekteki seçilebilir şeyleri kullanmaya karar verdim.
hem tasarımı katletmiş olmam hem de kodlaması eğlenceli olur.

Monday, February 2, 2009

curl için alternatif?

curl için daha minimal ve sunucuya kurulması gerekmeyen bir paket armaktayım. pek bir fikrim yok.
(evet pear paketindeki http_request sınıfını da kullanmak istemiyorum :) )

bazı küçük amaçlar için alternatif kodlar yazılmış sadece:

javascript googledan reset.css css-reset.com'dan

daha evvel bazı avascript kütüphanelerini google'dan yükleyerek hız ve pratiklik kazandığıma değinmiştim.
Aynı şekilde jquery, mootools gibi kütüphaneler için de googl ajax library api'den faydalandığımı yazmıştım.

çokca kullandığım bir dosya da reset.css dosyası.

bunu sürekli oluşturmak yerine css-reset.com'dan istediğim birini seçip sayfaya dahil ediyorum. bu şekilde daha fazla CDN kullanarak havaya girmiş oluyorum.
http://www.css-reset.com/
temelde hem reset.css dosyasını ordan oraya taşımamış oluyorum, ve üstelik hızlı bir sunucudan yüklüyorum, sayfama hız katabileceğini düşünerek.



---


We currently host:

- 648 bytes

- 483 Bytes

-380 bytes

- 23 bytes

css3 dışlamamak gerek...

Thursday, January 29, 2009

jquery 1.3 hız meselesi

http://nettuts.com/tutorials/javascript-ajax/everything-you-need-to-know-about-jquery-13/


hangi framework'ün kullanılması gerektiği konusunda son derece yeterli bi grafik bence.

Monday, January 26, 2009

Ajax Library Api

jquery hergün kendini daha fazla sevdirirken ben de iyice ısındım ona. aramıza bi bağ oldu.
bu bağı kuvvetlendirecek bir metot da jquery kütüphanesini uzak bir sunucudan çağırmak. bu sayede jquery kütüphane dosyasını ordan oraya taşımak zorunda kalmıyorum. hizmeti veren de google olunca hız konusu da sorun olmuyor.

ajax library api - google code sayfası

kullanabilmek için

<script src="http://www.google.com/jsapi"></script>

Diye sayfaya yüklemek gerekiyor. Hepsi bukadar.

(ajax api library ile tanışalı oldu baya ama yeni kullanmaya başladım.)

1. örneğin jquery yüklemek için:

google.load("jquery", "1.3.1"); // ikinci parametre versiyon

farklı şekillerde de yükleyebiliriz (sıkıştırılmış, paketlenmiş gibi). google code sayfasında detaylar mevcut.

google.load("jquery", "1.3.1", {uncompressed:true});

2. jqueryui yüklemek için dahi kullanıyorum :

google.load("jqueryui", "1.5.3");

3. diğer bazı kütüphaneler bile var (mootools, dojo gibi ...) .
google.load("mootools", "1.2.1");
google.load("dojo", "1.2.3"); 
google.load("yui", "2.6.0");

benim en çok kullandığım bir diğer kütüphane de swfobject kütüphanesi... bu da bu hizmet ile yüklenebilmekte!

google.load("swfobject", "2.1");

bu dosyaları "google.load" yerine doğrudan adresleri ile de yükleyebilirsiniz tabi. Hepsi google tarafından barıdırılmakta. Hız sorunu yok yani.
google code sayfasındaki dökümantasyonunda hepsinin adresiler de mevcut!