Friday, December 19, 2008

ülkeler listesi dizisi

hep lazım olur.
php dizi formatından türkçe ülkeler dizisi .

http://snippets.dzone.com/posts/show/4915

Monday, December 1, 2008

yazılım geliştirirken profesyonel metotları kullanma

geçenlerde wikipedi de dolaşırken çeşitli program geliştrime metotlarına rasladım. en ilgimi çeken de "moscow method" . şöyle ki:

  • M - MUST have this.
  • S - SHOULD have this if at all possible.
  • C - COULD have this if it does not affect anything else.
  • W - WON'T have this time but WOULD like in the future.
link - > http://en.wikipedia.org/wiki/MoSCoW_Method tabiki başka metotlarda var link. fakat dediğim gibi bu en sade ve gerçekci olanı. Bu metotdu ve benzerlerini biraz irdelemek gerek. Performasnı ve verimliliği kesinlikle artıcaktır.

moscow ile alaklı daha detaylı bir bağlantı buldum :  http://www.coleyconsulting.co.uk/moscow.htm

Wednesday, November 19, 2008

smarty dizi elemanlarını bir section'a çıkartırken

şunun gibi "0" dan başlayan bir dizi oluşturmuştum,yazarak.

$dizi2 = array("0" => "zmf","1" => "kdf","2" =>"fpm"); // biraz uzunca aslında
$sistemim->assign('array2',$dizi2); // array2 kullancam

sonra bunu evvela {foreach} ile sötereyim  göstereyim dedim ve öyle yazdım. ardından vazgeçtim ve bir tabloya şöylesine atıverdim

<table>
{section name=rows loop=$array2}
<tr bgcolor="{cycle values="#152569,#502569"}"> <td>
{$array2[rows]}
</td></tr>
{/section}
</table>
bir de ne göreyim son elemanım görünmüyor.
foreach ile tüm listeyi saydırabilirken bu şekilde olmadı.
elemanları "1", "2"... gibi 1 den başlayarak isimlendirdiğimde ise sorunum düzeldi.

diğer framework leri bırakıp smarty ye başlamam  çok olmadı (iki hafta gibi), ama ilk hatamı yaptım (ve hala nedenini anlamadım) , demek biraz daha incememem gerekmiş.

Tuesday, November 4, 2008

adobe spry xmldataset vs ie6 uyuşmazlığı

xml parse işini spry daha iyi yapar heralde diye ona devretmiştim görevi ki; gördüm ki ie6 (internet explorer 6) ile spry xmldataset hata verdi.

çözüm: spry eski sürümün kullanmaktaymışım. güncel sürümünü yükleyince sorun kalmadı. fakat hala spry le xmldataset konusunda tereddütlerim var. ısınamadım.

Friday, October 24, 2008

T_PAAMAYIM_NEKUDOTAYIM

php ile bişeyler bişeyler yazıyodum. orda "double colon" kullandım "::" yanlış kullandığıı hatadan sonra anladım ama hatayı anlamadım :
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';' in ....\test.php on line 3

sonra gördüm ki php.net de sahiden gerçek bir hata kodu.
bu listede kendisi de yer almakta : bknz: http://www.php.net/manual/en/tokens.php 
biraz da wiki den arayınca anladım ki ibranice :: demekmiş. bu bir çeviri unutması da olabilir isteyerekte bırakılmış bir ibare olabilir. böyle olmasının temel nededi ana geliştiricinin israil asıllı olması denmekte:  bknz: http://en.wikipedia.org/wiki/PHP
başta biraz komik gelince yanlız olmadığımı gördüm :

Monday, July 28, 2008

disabled option seçeneği ve i.e. karmaşası

aşağıdaki kodu hemen hemen çoğu çalışmamda kullanmışımdır. yani bir seçeneği etkisizleştirilmiş combobox denebilir.

<select> <option>abcde</option> <option disabled="'disabled'">abcde2</option> <option>abcde3</option></select>


genelde çalışamalarımı farklı browserlarda denerim hele ki i.e. de mutlaka denerim.
bi hata gariplik yapacağından emin olduğum için.

ama bu kadar bi garip olay olamaz. option için disabled özelliği i.e. de hiç çalışmıyomuş meğer.

şoku atlattıktan sonra birinin şu çözümünü gördüm (aynı konuya değinen siteler google link )

<!--[if lte IE 7]>
<script>
function ativaOptionsDisabled(){
var sels = document.getElementsByTagName('select');
for(var i=0; i < sels.length; i++){
sels[i].onchange= function(){ //pra se mudar pro desabilitado
if(this.options[this.selectedIndex].disabled){
if(this.options.length<=1){
this.selectedIndex = -1;
}else if(this.selectedIndex < this.options.length - 1){
this.selectedIndex++;
}else{
this.selectedIndex--;
}
}
}
if(sels[i].options[sels[i].selectedIndex].disabled){
//se o selecionado atual é desabilitado chamo o onchange
sels[i].onchange();
}
for(var j=0; j < sels[i].options.length; j++){ //colocando o estilo
if(sels[i].options[j].disabled){
sels[i].options[j].style.color = '#CCC';
}
}
}
}
window.attachEvent("onload", ativaOptionsDisabled)
</script>
<![endif]-->



(tabi fonksiyonu window.attachEvent yerine body içinde onload içinde yazabilirsiniz)

Monday, July 21, 2008

spry ile ikili koşul sağlama

xml verileriyle uğraşırken spry kullanmak aklıma geldi.
genelde o accordion şeysi için kullanırdım ama şimdi daha dinamik bi şekilde kullanayım dedim. (Dreamweaver ile çok daha kolay kullanılıyo, görsel bi şeysi sayesinde)
gerçekten çok işe yaradı.
1. bir adet spry dataset oluşturdum (gayet pratik)
2. ardıdan verileri şöyşe listeledim (sadece şuna sevindim iki kere ard arda spry:if kullanarak bi çeşit AND bağlacı yaptım.. ama OR yapması daha uzun olmakta bu mantıkla ... spry ile if için OR ya da AND bağlaçları için daha iyi bir yol varsa da bilmiyorum. üşendim aranmadım fazla. spry:if dökümanları içinde yoktu.)

<div spry:region="ds1" class="bildiri_liste">
<ul spry:repeatchildren="ds1">
<li>
<span spry:if="'{title}'.toUpperCase().indexOf(filtre.toUpperCase())!=-1">
<a href="#" spry:if="'{author}'.toUpperCase().indexOf(filtre2.toUpperCase())!=-1" onClick="updateTab('{file}');">
{title}
</a>

</span> </li>
</ul>
</div>

Tuesday, July 15, 2008

lightbox clones incelemesi

piayasada bir çok lightbox benzeri script mevcut. bunları bi kısmı yui, bi kısmı prototype ve daha başka kütüphaneler kullanmakta.
seçim yapmak zor oluyosa :) benim çok sevdiğim bir inceleme sayfası var.

http://planetozh.com/projects/lightbox-clones
bu sayfada çeşitli filtrelemelerle aradığınız lightbox türünü bulabilirsiniz.

Saturday, July 5, 2008

yenilenen sayfa istemiyoruz

"küçük boyutlu içeriklerde yenilenen sayfalar istemiyoruz" desturuyla hareket etmek gerek.
bence (heleki içerik statikse) içeriği tek sayfa içinde bi elemana (div, span ya da iframe olabilir) yüklemek gerek. mutlaka gerek. her defasında tarayıcıyı yormaya gerek yok. yorulan sadece tarayıcı değil, sayfa yenilenmesi ile ekranda meydana gelen kıpırtı ile ziyaretçinin gözleri de yorulur ve hatta bu katarakta kadar gider (önemsiz bi not).
burda div elemanına yükledim.
linklerin onclik eylemine get_text fonksiyonumu koymak çok mantıklı gelmişti bana.
linklerin onclik eylemine get_text fonksiyonumu koymak çok mantıklı gelmişti bana.
.... href="#" onclick="get_text(15)".... gibi

function get_text(url){
var xmlHttp = null;
if (window.XMLHttpRequest){xmlHttp = new XMLHttpRequest();}

else if (window.ActiveXObject){xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
else { }

xmlHttp.open('GET', url, false);
xmlHttp.send(null);
return xmlHttp.responseText;
}


function icerik(id){
var page=id+".php"; // bu dinamik olarak da oluşturulabilir
// mesela ->
// var page="get.php?content="+id;
var htm_icerik=get_text(page);
document.getElementById("divvvv").innerHTML =htm_icerik;
// document.getElementById("iframe1").src =page;
// eğer var olan sayfaları yüklemek isteseydim de bunu yapardım
}

Friday, July 4, 2008

yalınlık, fakat basitlik değil -1

bu bir yazı serisi olacak.

alt: yalın navigasyon istemiyoruz

Evet sitelerin bilhassa teperlinde çeşitli kategori ya da içeriğie yönlendirici ana bağlantılar vardır. navigasyon kısmı...
bu bağlantıların yalın halleriyle bırkıldığı siteler bazı durumlarda beni biraz soğutmuştur.
esasen temel üşengeçlik şu olsa gerek;
tepeye konacak (genelde bir "li" tagı içinde sırlanmış) menü elemanlarına şu stilin uygulanması:

#navigation{
height:2.2em;
line-height:2.2em;
width:758px;
margin:0 1px;
background:#578bb8;
color:#ffffff;
}

#navigation li{
float:left;
list-style-type:none;
border-right:1px solid #ffffff;
white-space:nowrap;
}

#navigation li a{
display:block;
padding:0 10px;
font-size:0.8em;
font-weight:normal;
text-transform:uppercase;
text-decoration:none;
background-color:inherit;
color: #ffffff;
}


böylesi daha iyi olurdu. hem daha belirgin hem abartı değil. tabi duruma göre değişir. sadece yalınlığı tercih eden webmaster kişilerine ufacık bi öneri olarak yeni nesil css mantığı üzerinde (aslında yeni değil) biraz çalışmaları yada zaten biliyorlarsa sevmeleri. Bilhassa yoğun program yazan kişiler bu konuya özen göstermeli sunacakları program ne kadar iyi olursa olsun karşıdaki insan şeysi sunum anında tasarımsal gözlemlerini ağırlıklı olarak tutuar.

Monday, June 30, 2008

checkbox kullanmak istemediğimde

checkbox kullanmak istemediğim bi zaman yazmıştım. çok pratik geldi gözüme.
aşağıda yapmak isteiğim anlaşılıyo aslında. fakat biraz eksik yazdım.
önemli bir nokta : burdaki li ögelerini block görünümlü ve hover eyleminde de değişken özellikle yaparsanız daha güzel olur.

<ul>
<li><a href="#" onclick="select_PG(this); return false;" id="PG_1">Attachments, Adhesives, Sealants and Fixings </a></li>

<li><a href="#" onclick="select_PG(this); return false;" id="PG_2">Bogies, Suspension, Wheels and Axles </a></li>

<li><a href="#" onclick="select_PG(this); return false;" id="PG_3">Brakes, Couplers and Draw Gear </a></li>

<li><a href="#" onclick="select_PG(this); return false;" id="PG_4">Cables, Hoses and Connectors </a></li>

<li><a href="#" onclick="select_PG(this); return false;" id="PG_5">Computer Hardware and Software, Control and Monitoring Systems </a></li>

<li><a href="#" onclick="select_PG(this); return false;" id="PG_6">Controls, Electromechanical Equipment and Drives </a> </li>
</ul>





function select_PG(_element){
document.getElementById("productGroups_div").innerHTML+= _element.innerHTML+ " <br> ";
document.forms["mainForm"].productGroups.value+= _element.innerHTML+ " <br> ";

// _element.style.background="#CCCCCC";
_element.className ="PG_active"; //bu stil dosyamda veya satılarımda belirttiğim bi stil

}

function clear_PG(){
var i;
var _i="";
for(i=1;i<49;i++){
_i="PG_"+i;
document.getElementById(_i).className="";
}

document.getElementById("productGroups_div").innerHTML=" ";
document.forms["mainForm"].productGroups.value=" ";
}

parolayı tekrarla işleminde hızlı kontrol

parolayi tekrarla işleminde hızlıca kullandığım bir çözüm:

"password" türünde iki ayrı input yerleştirilir (adları password ve password2 olsun) ve altına bi de "span" veya "div" tagı açılarak id değeri olarak "uyariParola" gibi bişey verilir.

ardından "body" tagından hemen sonra şu script yazilir:

function parolaKontrol(_pass2){
_pass= document.forms["mainForm"].password;
if(_pass2.value != _pass.value){
document.getElementById("uyariParola").innerHTML="Your must enter the same password";
}
else if(_pass2.value == _pass.value){
document.getElementById("uyariParola").innerHTML="OK";

}

}


ardından ikinci input içinde şu yazılır

<input type...... onkeyup="parolaKontrol(this);"/>

bazıları ajax şeysi diyebilir fakat bence ufacık bi javascript zamazingosu, bi çeşit "hayat kurtarır", " az ama öz" denen şeylerden yada kendini gerçekleyememiş programcıların deyimiyle "saklanılası ve günü gelip işe yarayacağı vakit açılıp bakılası script"

artık ikinci alana bir üsttekinin aynı değerini girmezsem uyari alanında uyari mesaji çıkacak. doğru girdiğim an ise "OK" gibi güzel bi mesaj çıkacak.
biraz daha dusunursek genel bir degisken ile (passAyni=false; gibi) formun post olmasını da bu islemin dogruluna bağımlı hale getirebiliriz elbet.

Thursday, May 22, 2008

Permission denied to call method XMLHttpRequest.open

Problem: XMLHttpRequest ile herhangi bir domain üzerinden ya da local çalışırken başka bir alan adına sahip bir makineden veri çekmeye kakıştığımda şu hatayı aldım:


Error: uncaught exception:
Permission denied to call method XMLHttpRequest.open

Türkçesi:
XMLHttpRequest.open methodunun çağrılması için gerekli izniniz yok


Çözüm:

önbilgi: bu işlemin adı cross scripting. Ararsanız bir çok kaynak bulacaksınız.

Öğrendim ki bu bir sistem hatası değil (olamaz da zaten). bu kullandığım tarayıcının bir uyarısı ve önlemi. firefox 3.0 kullanmaktaydım. i.e. 6 denemek istedim (yani en güvensiz olanı). çözüm olarak güvensiz bir tarayıcı kullanın.

kullandığım javascript

function post_eyle()
{
xmlHttp=ajax();
if (xmlHttp==null)
{
alert ('Tarayıcınız Ajax Desteklemiyor!');
return;
}

var url='https://......com/index.php';
var sc ='test=test';
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.setRequestHeader('Content-length', sc.length);
xmlHttp.setRequestHeader('Connection', 'close');
xmlHttp.onreadystatechange=SonucGetir;
xmlHttp.send(sc);
}
function SonucGetir()
{
if (xmlHttp.readyState==4 && xmlHttp.status == 200)
{
document.getElementById('sonuc').innerHTML=xmlHttp.responseText;
//alert(xmlHttp.responseText);
}
}
function ajax()/* Bu fonksiyonu c/p ile alın ve olduğu gibi kullanın bir zarar yaratmaz.. */
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{
xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
}
return xmlHttp;
}

Friday, May 9, 2008

[php] auto barcode

problem: bir .mdb dosyadan hazırlanmış olan kişisel bilgi listesindeki kişilere herhangi bir algoritma ile bir şekilde barcode oluştur ve mail ile bu kişilere barcode larını pdf olarak gönder.Tabi bu barcode lar gerçek hayatta kullanılabilir olmalı ve test edilmeli. barcode lara göre kişileri ayıracağız . kişilerin barcodelarını okutmak için ve ayırmak için bir windows programı yap.

çözüm: farklı kütüphaneler ile yaptım. bir kaç gün sonra kodları sunarım. ancak evvela finaller bitmeli.
ancak kullandığım kütüphane http://chir.ag/tech/download/pdfb adresinde ikamet etmekte ve son derece başarılı bir kütüphane. üstelik ücretsiz. ayrıca barcode metini yazarken ve pdf üzerine döşerken kullandığım harika ve ücretsiz başka bir kütüphane FPDF ( http://www.fpdf.org ) kütüphanesi ki bu da gerçekten harika ve pratik bir çözüm.
mdb dosyaına ile bağlanıp verilerimi çektim ve listedim. şu şekilde:
yukarda bahsettiğim iki paketi yada sadece fdpf pakeiti indirip bir yere açtım. ardından php ile mdb dosyalarına bağlanma işlemini kolaylaştıran kütüphane olan class_mdb.php kütüphanesini indirdim. ancak nerden indirdimhatırlamıyorum. kütüphanenni üst kredi bilgisini şurda. aranarak hemen bulunur.
/*
* Filename.....: class_mdb.php
* Class........: mdb
* Aufgabe......: open *.mdb MSAccess files
* Erstellt am..: Donnerstag, 17. Juni 2004, 23:32:07
*
* Wirtschaftsinformatiker IHK
* www.ingoknito.de
*
* Peter Klauer
*/


Sonra şablon pdf dosyamı oluturudum ve yazıların gelceği alanları ekranımda pixel cetvel ile ölçerek not aldım. ve pdf dosyamı şu kodlardakine benzer bi şekilde oluşturdum:
bu dosya fpdf içinde. ayrıca pdfb kütüphane dizini de aynı yerde olmalı.

require("pdfb/pdfb.php"); // bu önemli

class PDF extends PDFB
{
function Header()
{
// şu an için gereksiz. ama uzun pdf dosyalarda gerekli
}

function Footer()
{
// şu an için gereksiz. ama uzun pdf dosyalarda gerekli
}
}


$pdf = new PDF("p", "pt", "letter");


$pdf->setSourceFile("demo.pdf");
$tplidx = $pdf->ImportPage(1);


$pdf->AddPage();
$pdf->useTemplate($tplidx);

// pdfb/pdfb.php içindeki BarCode() fonksiyonuna
//bakarak daha başka parametrelerini öğrenmek gerek..
// şu an için yerleşim (x,y) genişlik (w,h) ve link parametreleri olduğunu öğrendim.
// Code 128-B barcode
$pdf->BarCode("HasanTayyar", "C128B", 298, 180, 288, 88, 1, 1, 2, 5, "http://hasantayyar.blogspot.com", "PNG");

// UPC-A Barcode // bu da bi barkod çeşidi ama ben en genel olan code-128 i kullandım.
$pdf->BarCode("73725735882", "UPCA", 300, 300);

$pdf->Output();
$pdf->closeParsers();


sonuçta dinamik olaraktan oluşan pdf dosyasını ayrı ayrı kaydetmek yerine talep zamanında oluşturmak en iyisi oldu.

amaç

bu blog da amaçlarım:
(teknik konularda imla kurallarına öndem göstermeden -büyük harf kuraına dahi uymadan- yazarım :) )
1. yeni öğrendiğim ve paylaşmak istediklerimi ve deneyimlerimi paylaşmak
2. karşılaştığım sorunlara bulduğum çözümleri paylaş, çeşitli teknik konulara değinmek