Adana’nın Kozan ilçesinin Acarmantaş/Bucak Köyünde doğdu, İlkokul 1.sınıfta (1989) ilk bilgisayarı olan Commodore 64′e sahip oldu (38911 Byte Free) ve ilk programcılık tecrübelerini amcasının oğlundan aldığı ve diğerini hatırlamadığı 2 garip basic kitabı ile o bilgisayarda başladı. Kareli defterlerinin arkasında hep, kenarlarında 1,2,4,8…..256 gibi değerler olan diktörtgen alanların içini boyayarak girafikler çizdi ve onları ekrana aktarıp, for-next’ler ile bir oradan bir buradan uçurdu. Sonra Erkan Kaynak ile tanıştırıldı onu tanıyınca programlama dünyasında yalnız olmadığını anladı ve çalışmalarına onunla devam etti. Erkanın ilk yaptığı ve joistickten kontrol edilen tekme atan adamını (First Kick) görünce büyülendi. Ve sonunda ekrana farklı 7 adete kadar farklı grafik koymanın yolunu buldu. (Dünyasının değiştiği andır).
Orta 1′de saçların 3 numaradan fazla uzatılamadığı bir zamanlarda (1993-4) Commodore’dan Amiga 500′e terfi etti, jim power, turrican I-II-III, giana sisters, gods… gibi bir sürü oyunla çocukluğunu çürüttü, fantavision gibi yazılımlarda animasyonlar yapmaya çalıştı, arkadaşları ile mortal combat oynarken ölünce adam değiştiren disketide değiştirir gibi kurallar içat etti.
Sonra liseli oldu; saçları 3 numara olmaktan kurtuldu artık kırmızı gravat, mavi ceket, gri pantolon ve acıcıkta olsa saçlarının önünü uzatabiliyordu artık. Sonra sonra sakalları çıktı, hormonları asileşti, aşklara kaldı. Çok can yaktı, çok canı yandı. Hep yaktığından çok yandı. Şimdi Nilay var gözlerinde, kalbinde, aklında… Bahar bahar gözleri ile hep yanında olsun ister, hep özler :/
Ama hep çok sevdi Ahmet YALNIZ’la binaların çatılarında, günısıların camlarına uzanıp çekirdek eşliğinde yıldızlara bakmayı, konuşmayı, susuşmayı. Sulama kanallarında yüzdü, bahçelerden mutelif meyvalar çaldı, siyah camlı arabalarda üçyüz-beşyüz, üçyüz-beşyüz ritimli müzikler ile akşamlara kadar piyasa yaptı.
Lise bitti, yıl 1998 olduğunda ilk PCsine kavuştu. Pentium-166, 16 MB Ram, 2.5 GB HDD, 2 Mb S3Viridge Ekran kartı olan o zamanın en iyi 2. bilgisayarı idi.
Sonra QBasic, Vb Basic, 3d Studio Max… gibi şeyler ile uğraşırken bir yandanda üniversite derdi başladı. Eski ÖYS ile bir türlü istediği yere yerleşecek kadar ders çalışmadı. Sonra ÖSS (çalışmadanda bir yerlere girebilir sınavı) ile Süleyman Demire Üniversitesi, Fen-Edebiyat fakültesi, Kimya bölümünü kazandı (1999).
Giderken yalnız değildi yanında Kürşat ÇABUK’ta vardı, aynı yeri kazanmışlardı. Kürşat ile kaderleri orada birleşmişti! 99′u takip eden yıllarda hep paralel olaylar yaşayacaklardı; aynı zamanda “Adana bizi adam etmez” deyip Adana’yı terk edecekler, aynı zamanda atanacaklar ve hep paylaşacaklardı, hep “iyiki varsın gardaş” cümlesi olacaktı hayatlarında.
Üniversite’ye geldi hayatnın belki iyi, belki kötü ama en değişik zamanlarını yaşamaya başladı ama hiç kopmadı bilgisayarından programlarından, programlamadan,,, bir sürü insan tanıdı bir çok dost edindi. Sadece sohbet ettiği değil dostları olmadı! Hayatını değiştirenler oldu arasında (Şuanki işine sahip olmasına sebep Tarık gibi)…
Üniversite bitti; Adana’ya döndü (2004); bir süre dershanede Kimya öğretmenliği yaptı, Sonra KoçNET’te bölge sorumlusu olarak görev yaptı, sonra bir grafik ajansında 3d Animasyonlar yaptı, sonra askere 307 K.D. olarak istanbula gitti.
Askerlik bitti; Nizamiyeden çıktığında nereye gideceğini bilemedi… Ne onu bekleyen bir işi vardı, ne de başka birşey… Yeniden başlamalıydı mücadele… Umutlu değildi, hevesli değildi. Sonrasında Abileriyle internet kafe açtı, Tarık KABAK onu çalıştığı üniversiteye Web Tasarımcı olarak çağırana kadar kafeyi işletti.
Ve Mehmet Akif Ersoy Üniversitesin’de çalışmaya başladı (2006). Yeniden Ispartadaydı! Yapmaktan en çok keyif aldığı işi yapıyor, sevdiği şehirde yaşıyor, sevdiği arkadaşlarıyla birlikteydi.
4-5 ay gibi kısa bir süredei’sini bile bilmediği ingilizce sınavından başarılı oldu, kadroya geçti ve halen aynı üniversitenin bilgi işleminde Web Teknolojileri Uzmanı olarak görev yapıyor …
Sorun ; Bugünlerde daha önce yazılmış personel programınının yenisi yazarken eski database verilerini kullanmam gerekti. Kullanırken verilerin gereksiz yere iki tabloya bölündüğünü fark ettim ve birleştirmeye karar verdim.
TABLO1
kullaniciSicilNo Ad Soyad
01 Can Yastıoğlu
TABLO2
kullaniciSicilNo BirimID BolumID
01 3 1
Aşağıdaki gibi alanları oluşturduktan sonra. Sıra ikinci tablonun içeriklerini ilk tabloya aktarmaya geldi.
TABLO1
kullaniciSicilNo Ad Soyad birimID bolumID
01 Can Yastıoğlu NULL NULL
TABLO2
kullaniciSicilNo BirimID BolumID
01 3 1
//
//
//tablo1 deki kullaniciSicilNo'su ile tablo2'deki kullaniciSicilNo'su birbirine eşit olan kayıtları bulup uygun olan alanları birbirine eşitleyen sql satırı.
update tablo1, tablo2 set tablo1.birimID = tablo2.birimID, tablo1.bolumID = tablo2.bolumID
where tablo1.kullaniciSicilNo =tablo2.kullaniciSicilNo
//
//
Bu sql satırımızı uyguladığımızda tablo1′deki verilerimiz aşağıdaki şekilde olacaktır.
TABLO1
kullaniciSicilNo Ad Soyad birimID bolumID
01 Can Yastıoğlu 3 1
Bu şekilde çok rahatca yapabiliyordum, lakin asıl sorun keyinide elimle girmem gereken bu durumda array_push işimi görmüyordu yada ben becerememiştim Biraz google araştırmasından sonra array_marge ile yapılabileceğini gördüm ve yaşadığım rahatlama mütişti
Arkadaşlar smooth seçeneğini seçmediğim için görüntü çok hızlı hareket etmiş ve inanılmaz gözü yoruyor :/ Lakin şimdilik bununla idare edin yeninisi hazırlayacağım
Sakallarının uzamasını bekleme, kısa iken kesmek her zaman daha az söylenmeye neden oluyor.
Çalışırken asla messenger, facebook açma sen fark etmesen bile performansın en az %60 azalıyordur. Ara verdiğin zamanlar açar kafa dağıtır tekrar kapatırsın.
Tuvalete girerken mutlaka okuyacak birşeyler al yanına. Hiç kitap okumuyorum diyen biriysen bile yılda en az 12 tane kitap okursun haberin olmaz.
Bazen boş durun, sıkılın, aylak aylak dolaşın! Yaptığınız şeyin adı hiçbirşey yapmamak olsun
Yol boş bu saatte polis felan olmaz deyip kırmızı ışıkta geçme 120 TL ye mal oluyor
Şim bu yazımızda; mesela hepsiburada laptopları seçersin o otomatik olarak senin nerede olduğunu bir yerde
Ana Sayfa > Bilgisayarlar > Taşınabilir Bilgisayar > Laptoplar
şeklinde gösterir ya onu yapacağız
Hatta kendi yazdığım sistemimde resimle göstereyim
Bannerin altında hangi menüyü tıkladıysak oraya kadar nerede olduğumuzu gösteriyor. Ve istersek geriye doğru linklere tıklayarak üst kategorilerede geçebiliyoruz. Gayet kullanışlı bir sınıf oldu.
Şimdi nasıl yapacağımızı görelim.
Menünün tutulduğu basit database yapısı aşağıdaki gibi.
Bukadarcık bir database ile sonsuz kategori oluşturabilirsiniz. Sonsuz kategorideki menüyü nasıl oluşturacağınızı buradaki yapıdan anlamış olursunuz Onu başka bir yazıda daha basit anlatacağım.
Yukarıda görüldüğü üzere bir menuUstID dediğimiz stunda menünün hangi menü altında olacağı görülüyor. menuUstID = 0 olanlar ise ana menüler.
Şimdi menü ID = 7 olduğu bir durumda bizim kodumuz nasıl işlemeli onu düşünelim.
Öncelikle 7. menü kime bağlı, bakıyoruz menuUstID = 6 yani menuID=6 olanmenüye bağlı. Bu durumda 7. menünün menuUstID’sini öğrenmem gerekiyor.
Şuan buraya kadarını bulduk : A-B Ürün > A-B-A Ürün
Bu adımda ikinci üst menüyü tespit edeceğiz. menuID=6 olanın menuUstID=3′müş yani menuID=3 olan menünün alt menüsü imiş
Yani şuraya kadar geldik : A Ürün > A-B Ürün > A-B-A Ürün
Bu şekilde menuIstID=0 olana kadar dönen bir sınıf yazmamız gerekiyor. menuUstID=0 oluncada başına bir Ana Sayfa linki koyarsak bu iş tamamdır
Şimdi bunu yapacak olan kodumuzu inceleyelim;
index.php de bannerin altına yazdığım kod aşağıdaki gibi.
<?php
if (isset($_GET['m'])){
$str = new str;
echo '<a href = "index.php" class="linkLocationBar">ANA SAYFA </a>';
$str->locationMake($_GET['m']);
}
?>
Ne yaptığı gayet açık değil mi?
Eğerki adres satırından m (menuID) diye bir değişken geliyorsa bizim str class’ımızın içinden locationMake fonksiyonunu çalıştırıyor ve menuID’sini locationMake fonksiyonuna gönderiyor.
Şimdi asıl class’mıza gelelim. Artık sıra adımların kod halini yazmaya geldi. Aslında çok çok basit bir yapısı var görünce şaşırabilirsiniz Çünki bu konular herkesin gözünü çok korkutur. (En azından benimkini zamanında çok korkutuyordu.)
<?php
class str {
public $locationBar = array();
function locationMake ($menuID){
if (isset($menuID)){
$menuID= mysql_real_escape_string($menuID);
$mysql = new mysql;
$menuSorgu = $mysql->select('menu','menuID='.$menuID, '*', '*', false);
$menuAd = $mysql->result($menuSorgu, 'menuAd');
$menuID = $mysql->result($menuSorgu, 'menuID');
$link = ' -> <a href = "?m='.$menuID.'">'.$menuAd.' </a>';
$locationBar[] =$link;
$menuUstID = $mysql->result($menuSorgu, 'menuUstID');
if ($menuUstID!=0){
$this->locationMake ($menuUstID);
}
$locationBar = array_reverse($locationBar);
foreach ($locationBar as $key=>$satir){
echo $satir;
}
}
}
?>
3. Satırda str adında bir class tanımlıyoruz,
5. Satırda class içinde kullanacağımız değişkeni ve türünü tanımlıyoruz, neden array tanımladım? Çünki menüyü tersten okuyacağımız için önce arraya’a alıp sonra ters çevirip ekrana basacağız.
7. Satırda str class’ı içinde yeni bir fonksiyon ve bu fonksiyona göndereceğimiz değişkenleri tanımlıyoruz
9.Satırda eğerki menuID varsa diyoruz. Aslında çok gerekli bir satır değil Zaten menuID olmasa index.php ‘deki class’ı çağıran kodumuz str->locationMake fonksiyonunu çağırmaz
11. Satırda GET ile gelen değişkenimizin içindeki zararlı olabilecek şeyleri temizliyoruz.
13. Satırda kendi yazdığım mysql Select fonksiyonuna sorgu gönderiyorum. Sorgumuzda tıklanmış olan menu’nun satırını okuyorum ve bağlı olduğu menunun ID’sini alıyorum yani menuUstID’yi. Tüm class’ları içeren dosyayı yazının sonunda vereceğim.
14. Satırda tıklanmış olan menünün adını alıyorum.
15. Satırda gereksiz yere tekrardan menünün ID’sini alıyorum gibi görülsede değil neden olduğunu ilerde anlayacaksınız
16. Satırda tıklanmış menü için link oluşturuyoruz yani ->A-B-A Ürün olan kısımı
17. Satırda oluşturduğumuz link’i locationBar dizi değişkenimize atıyoruz.
18. Satırda seçili olan menünün kime bağlı olduğunu soruyoruz.
20. Satırda eğerki ustMenuID=0 değilse yani bir ana menü değilse şunu yap diyoruz.
21. Satırda en janjanlı yere geliyoruz! Hala menuUstID=0 olmadığına göre bir üst kategori daha var demektir. O zaman fonksiyonumuzu tekrar çalıştırıyoruz ve bu sefer üstteki menünün ID’sini gönderiyoruz. Ve menuUstID=0 olana kadar bu işlem devam ediyor. Yani yukarıya doğru linkler oluşuyor! 15. Satırda neden menuID’yi GET ile gelenden değilde yeniden database’den okuduğumu burada anlamış oluyoruz Üst menülerin ID ‘lerini alabilmek için 15. satır var.
23. Satırda başta linklerin tersten oluşacağını söylemiştim. Şimdi tersten olan linkleri array_reverse komutu ile tersten sıralıyoruz.
Merhabalar arkadaşımızın birisinin sorusunu ve çözümünü sizlerle paylaşmak istiyorum.
Hepimiz için faydalı olacağını düşünüyorum.
Ben bilgisayar uzerine master yapiyorum. Su anda PHP Mysql appointment/randevu web sitesi hazirliyorum. Fakat butun siteyi tamamladim ama bir turlu booking kismini yapamiyorum. Bu arada benim PHP uzerine fazla bir bilgim yok:). Sizi googledan buldum hastane randevu programini indirdim. Ama benimkine uyarlayamadim. Benim web sitem bir kuafore randevu sistemi. Oncelikle musteri takvimden randevuyu istedigi gunu seciyor, sonra istedigi saati seceneklerden seciyor ve istedigi servisleri secenekler seciyor. Her servisin bir zamani var. Bunlar servis tablosunda yani databse de var. Musteri istedgi servisleri sectikten sonra istedigi kuaforude seciyor ve buna gore randevu aliniyor.
Benim Booking tablomda bu kategoriler var:
1.Booking Id
2.Client Id/musteri numarasi
3.staff id/ kuafor numarasi
4.booking start/ randevu baslama saati
5.booking end/randevu bitme saati
6.booking date /randevu gunu
Butun secenekleri son sayfaya SESSION ile getirdim, Her eklenen servisin zamani birbirine eklemeyi basardim ve onu bir variable icine koydum. Yani elimde istenilen randevu saati var(booking start), randevunun bitecegi saat var(booking end), istenilen tarih var(booking date) ve hangi musteri oldugu(client Id) ve hangi kuaforden(staff id) randevu istedigi var.
buraya kadar hersey tamam. Sorun: mysql queryde. Oyle bir query yazmam lazim ki , bir musteri randevu aldiginda baska bir musteri ayni saattaki , ayni gundeki ve ayni kuaforle randevu alamasin. Ben bunu uc haftadir deniyorum olmuyor. Bana yardimci olursaniz sevinirim. tesekkurler.
Son günlerde neyemi gülüyorum?
Canım sıkıldığında neşemi neylemi buluyorum?
Sabahları işe neden geç kalıyorum?
İşte neden uykusuz zombi gibi dolaşıyorum?
Tabiki The Bing Band Teory yüzünden!
1 yıl kadar önce birinci sezonu indirmiş, izlemeye başlamış 1-2 bölüm sonra çok başarılı bulmayıp friends’i tekrardan izlemeye başlamıştım
10 gün kadar önce bilgisayarımı temizlerken o bir yıl önce indirdiğim The Bing Bang Teory Season 1 klasörünü gördüm. CMD+BackSpace yapmadan önce klasöre girip rasgele bir bölüme tıkladım. Ve bir türlü kapatamadım
Dizi; dört ileri zekaya sahip genç ve bir sıradan garson kızın arasında geçen dizinin meğerse ilk bir kaç bölümü bence çok kötüymüş yada ben ilk izlediğimde havamda değilmişim. Bir kaç bölüm sonra gerçekten çok başarılı bir hal alıyor
Şuan 2. Sezonu izliyorum ve bazen dizime vura vura, dövüne dövüne gülüyorum Okadar bilimsel şakalar varki senaryoda bazen diziyi durdurup googleda bahsi geçen şakayı arıyorum Hiç şaka olmasa Sheldon Cooper karakterinin mimiklerine gülüyorum inanılmaz bir oyunculuk. ve Sheldon’un ev arkadaşı Leonard Hofstadter oda inanılmaz bir oyunculuk sergiliyor. Ama yinede Sheldon diyorum başka birşey demiyorum.
Bu aralar izleyecek birşey bulamıyorsanız şiddetle öneriyorum.
Bayramın geçmek bilmeyen ilk gecesinde Robin Hood’u izlemeye karar verdim lakin pek tatmin olmadım.
Filmi, hakkında hiç bir fikrim yokken, ne bir yorum, ne bir tavsiye üzerine izledim belki çok beğenenler olmuştur ama ben tatmin olmadım.
Neden olmadım;
-Filmlerde en çok dikkat ettiğim şeylerden birisi müzikleridir lakin bu filmden geriye aklımda hiç bir ezgi kalmadı.
- Bazı sahneler üzerinde fazlaca durulmuş, bazı sahnelerinde okadarı kesilmişki ne oldu nasıl o adam oraya geldi felan diye insan sormadan edemiyor.
-Başrollerin savaşın içinde ki, savaşan hallerini hiç sevemedim :/
-Senaryo beklediğim gibi değildi (hırsız polis senaryosu değil) lakin çok iyide değildi dolu dolu bir senaryo, dolu dolu bir savaş filmi, dolu dolu….. dolu birşey değildi. Öylesine bir film tadı kaldı ağzımda.
Neleri sevdim;
-Ortaçağ çok güzel betimlenmişti. Harika detaylar vardı; Din yüzünden insanların ölmesi, sörde olsan kölede olsan “ne olursan ol vergi vereceksin arkadaş” hissi, yemeklerin üzerinde dolaşan fareler, fakir zengin herkesin çalışması, düzensizlik, çok hoştu…
-Film boyunca Robin’in birilerinden çalıp birilerine verecekler hissi vardı onu boşa yaşadığımı anladığım için senariste teşekkür ederim.
-Cate Blanchett kesinlikle yüzüklerin efendisindeki karakterinden çok daha güzeldi Oysaki oradaki karakterin (Gladriel) tarifsiz bir güzelliği olmalıydı
Php 1999 senesinde tanıştırılmak zorunda kaldığım bir webprogramlama dilir. Öncelikle nasıl tanıştırıldım ondan bahsedeyim
Sene 1999-2000 Süleyman Demirel Üniversitesinde Kimya bölümünü kazanmışım ve ilk yılımı okuyorum. Okulun web takımına parttime girmek için başvuruyorum. Elemelerde iki kişi kalıyoruz. Ve okulun tüm siteleri asp tabanlı olduğu halde bize php bilip bilmediğimizi soruyorlar. (O zamanlar iki dil bilmek çok lüks) Diğer kişi ben biliyorum dedi bende biraz kızarak ‘hiç php sitemiz yok neden lazım?’ diye sordum. O zamanki bizi sınav yapan hocamız. Bize asp bilen lazım ikinizede bir proje vereceğim 15 gün içinde kim daha güzel yaparsa onu alacağım dedi. Bende bilen varken ben ne ara öğrenip, ne ara yapacağım diyerekten pes ettim ve işi o arkadaşa kaptırdım.
O hınçla eve gittim ve hemen bir kitap edinip neymiş bu php dedim ve asp ile benzerliği yüzünden bir hafta içinde neredeyse asp ile geldiğim kıvama geldim. Ondan sonrada bir kaç proje hariç hiç asp’ye dönmedim.
Formlarda her defasında mysql’den veri alan bir Drop Down List kullanırken şuna bir class yazayım diyor ve aman bir kere için yazmaya değmez deyip normal bir şekilde veri çektirip ekrana aktarıyordum. Tabi böyle yapınca birde veriyi editlerken aynı kayıda denk gelince select yaptırma felan biraz sevimsiz bir hal alıyordu. Az önce şeytanın bacağını kırdım ve bir tane yazdım
Şimdi mysql class’ımla birlikte vereceğim kod DDL (dropdownlist bundan sonra DDL diyeyim) oluşturuyor. mysql sınıfı biraz karmaşık ve kalabalık görülebilir takılmayın siz ona çok kullanışlıdır ama
Şimdi nasıl mı yapıyor anlatmadan önce koduna bir göz gezdirelim;
class form {
function createDD ($table, $where, $cols, $order, $name, $class = NULL, $chooseID=NULL){
$mysql = new mysql;
$data = $mysql->select($table, $where, $cols, $order, false);
echo '
';
while ($satir = $mysql->fa($data)){
if ($satir[$cols[0]] == $chooseID){
$selected = 'selected="selected"';
}else {
$selected = '';
}
echo '
';
}
echo '
';
}
}
Peki nasıl kullanılacak ;
$form = new form // sınıfımızı oluşturduk
$form->createDD('kisiler', 'departmanID=2', array('kisiID', 'kisiAd'), 'kisiAd ASC', 'kisiID', $class = 'DDL', $chooseID=2);
Şimdi burada kişiler tablosundan departmanID=2 olan kisiID ve kisiAd stunlarını, kisiAd ‘a göre sırala, kisiID adlı bir dropdownlist içine yaz, class’ı ise DDL olsun, ve kisiID=3 olanı seç (selected) dedik.
Tüm databaseli projelerimde kullandığım mysql sınıfım aşağıdaki gibidir. Insert, delete, update… gibi özelliklerini burada vermedim kalabalık yapmaması açısından. İsteyen olursa ekleyebilirim çok yararlı çok pratik…
class mysql {
var $query;
var $result;
var $hostname_db = "localhost";
var $database_db = "ttk";
var $username_db = "ttk";
var $password_db = "ttk";
public $db;
function open(){
$db = mysql_pconnect($this->hostname_db, $this->username_db, $this->password_db) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($this->database_db, $db);
mysql_query("set names 'utf8'");
}
function __construct() {
$this->open();
}
//----
function select ($table, $condition, $cols, $order='*', $debug=false){
if ($order!='*'){
$order = ' order by ' . $order;
} else {
$order = ' ';
}
if(is_array($cols)){
foreach($cols as $id => $ref){
$fields[] = mysql_real_escape_string($id);
$vars[] = mysql_real_escape_string($ref);
}
$cols = ' ';
for($i=0;$i1){
$this->query = 'SELECT ' . $cols . ' FROM `'.$table.'` WHERE '.$condition. ' ' . $order;
if($debug){
print_r($this->query);
}
else{
$sonuc = mysql_query($this->query) or die(trigger_error(mysql_error(), E_USER_ERROR));
return $sonuc;
}
}
else{
$this->query = 'SELECT '.$cols.' FROM `'.$table.'` '. $order;
if($debug){
echo '< pre>';
print_r($condition);
echo '< / pre>';
print_r($this->query);
}
else{
$sonuc = mysql_query($this->query) or die(trigger_error(mysql_error(), E_USER_ERROR));
return $sonuc;
}
}
}
function fa($result){
$sonuc = mysql_fetch_assoc($result);
return $sonuc;
}