Zamlı benzin :)
bir karikatür gördüm, paylaşmak istedim.

bir karikatür gördüm, paylaşmak istedim.

Pergamum isimli Avusturalyalı bir metal grubu; Bach, Bethoven ve Vivaldi nin ünlü senfonilerinin toparlanmış ve yorumlamış.
Gerçek bir performans, özlenen eski gerçek metal müzik tadı…
Video’yu livevideo.com’da seyretmek için tıkla.
Şehirdışına çıkmıştım. 5 gün kadar. Çıkarken acelem olduğundan dolayı sigortaları kapattım, çıktım. Zaten normali de budur sanırım.
Geldiğimde, internete giremiyordum. Bağlıyım şebekeye, sorun yok lakin ip adresi alamıyorum. Saat 10 civarı idi. Aradım hemen Tellcom müşteri hizmetlerini. Standart prosedürü uyguladık beraber. Modem aç kapa, şebeke den gelen kabloyu çıkart öyle modemi aç sonra tak falan. Bir türlü olmadı. Çözemeyince yandaki arkadaşına sordu müşteri temsilcisi. Genel arıza mı var diye. Yanındaki arkadaşı yok dedi, duydum.. Durdu durdu genel arıza var beyefendi dedi. Yemedim doğal olarak. Komşuma sordum var mı internet diye var dedi.
Saat 11 civarı tekrar aradım. Genel arıza yok beyefendi, ip alamıyorsunuz 48 saate kadar size geri dönecekler dediler. Ne 48 saati dedim, aaa quiknet pardon 24 saat dedi. Dedim ki; ürünü satarken, “7/24 sitenizde teknik ekip oluyo. Bi durum olunca yarım saat içinde müdahele ediyolar.” diyorsunuz. Nerede bu teknik ekip? “Çok yoğunlar beyefendi…”
Ertesi gün saat 2 civarı. Arıyorum diyorum ki; bak oradan biri si ip adresi verecek bana topu topu. Hemde statik ip. bakıyolar, statik ip değil sizinki diyolar. Hemen önümdeki faturanın tutarını ve numarasını söylüyorum, Ödediğim statik ip ücretini söylüyorum evet statik ip imiş diyolar. Size dönecekler diyolar. Gün içinde defalarca görüşüyoruz olmuyo. O gün saat 5 civarı idi sanırım. Arıyolar beni, gene modemi açtırıyo, kapattırıyo modeminiz bozuk diyo. Size hemen gelecekler, modemi değiştirip gidecekler diyo.(Not; modem; 5 gün kapalı kaldığı için bozulmuş. Hiç kapatmayacak mışız. Olur mu böyle saçma şey?) Ondan sonra şu 7/24 bizim sitede nöbet tutan, yarım saat içinde müdahele edebilen teknik ekibi organize eden bayan arıyo. Burcu hn. Ertesi sabaha randevu alıyo. Bugün olmaz mı diyorum, mümkün olursa bugün göndericem olmadı yarın sabah diyo.
36 saattir internet yok. Sabah gelecekti elemanlar. Öğlen 2 oldu halen yok. Arıyorum arıycaklar sizi diyolar. Bu sefer 444 222 0 dan değil, Burcu hn.’ı beni aradığı 0507 li numaradan geri arıyorum ve ulaşıyorum. Hemen gönderiyorum diyo. (Not; konuştuğum kişi gene Burcu Hn. Siz arkadaşımla görüşmüşsünüzdür benim haberim yok diyor…)
Bu arada internet geri geliyo. Hani modem bozuktu? Yok öyle bişey. Aaa ne güzel diyorum. Lakin şöyle bir durum söz konusu. Ben niye statik ip kullanıyorum? İşim gereği birçok SQL Server’a bağlanıyorum ve bağlandığım SQL Server’larda benim ip adresime bağlantı yetkisi veriliyo.
(Sanırsam IP alamadığım için, ip adresimi değiştirmiş, başka bir ip adresi atamışlar… Ve şuan ki statik mi bilemiyorum…)
Bir bakıyorum ki; Statik ip adresim değişmiş. Arıyorum, 24 saate size dönecekler diyolar. O 24 saat bitti, üstüne 2 tane daha 24 saat bitti. Halen ip adresim farklı. Ben her ay para veriyorum IP adresim değişmesin diye. Kendi projelerimde kullandığım SQL Server’da şuanki IP adresime yetki verdim fakat diğer SQL Server’lara halen ip adresim farklı olduğu için giremiyorum.
Ben niye para veriyorum Statik IP’ye; IP adresim değişmesin diye. Peki ben niye hala tellcom kullanıyorum? Çünkü 2 yıllık kontratım var. Peki Hizmet Kalitesi/Sinir katsayısı oranı nedir? Kesinlikle sinir katsayısı oranı çok daha fazla.. Peki satarken ki bahsettikleri teknik ekip nerede? Bilmiyorum…
Zamanında kendime aldığım, ve diğerlerine göre çok daha fazla bir ücret ödediğim zyxel modemimi, quiknet e geçmem sebebiyle rafa kaldırmıştım. Babam adsl alınca, bari babam kullansı diye babama verdim.
Bikaç hafta geçtikten sonra yıldırım düşmesi sebebiyle modem arızalandı.
Bir pazar günü zyxel.com.tr ye girdim, telefon numarası 7/24 yazıyordu, şaşırdım. Aradım hemen görüştüm. Modemi karşı ödemeli olarak gönderin dediler. Ne fatura istediler ne bişey. Sadece fatura ismi ve seri numara ile garantiye gönderdik.
2 gün sonra geri aradılar. Tekrar aynı adrese mi gönderelim diye
3. gün modem elimize geldi. Adaptörü bozulmuş, değiştirmişler.
Beni sevindiren nokta; 7 gün 24 saat telefonla destek başta olmak üzere, karşı ödemeli kargo ile göndermem ve 3. gün modemin tamir olmuş ve yeni yazılım yüklenmiş şekilde elimde olması.
Zyxel’e buradan teşekkürlerimi iletmek istedim.
Tablomuzu oluşturalım,
create table Kategori ( KategoriID int identity(1,1), UstKategoriID int, Ad nvarchar(20), constraint pkKategoriID primary key(KategoriID), constraint fkKategoriUstKategoriID foreign key(UstKategoriID) references Kategori )
Örnek verilerimizi girelim.
insert Kategori (Ad) VALUES('Bilgisayar')
insert Kategori (Ad) VALUES('Telefon')
insert Kategori (Ad) VALUES('saat')
insert Kategori (UstKategoriID, Ad) VALUES(1,'Masaüstü Bilgisayar')
insert Kategori (UstKategoriID, Ad) VALUES(1,'Dizüstü Bilgisayar')
insert Kategori (UstKategoriID, Ad) VALUES(1,'Netbook')
insert Kategori (UstKategoriID, Ad) VALUES(1,'Server')
insert Kategori (UstKategoriID, Ad) VALUES(2,'Tek Sim Kartlı')
insert Kategori (UstKategoriID, Ad) VALUES(2,'Çift Sim Kartlı')
insert Kategori (UstKategoriID, Ad) VALUES(2,'3 Sim Kartlı')
insert Kategori (UstKategoriID, Ad) VALUES(3,'Analog')
insert Kategori (UstKategoriID, Ad) VALUES(3,'Dijital')
insert Kategori (UstKategoriID, Ad) VALUES(3,'GPSli')
insert Kategori (UstKategoriID, Ad) VALUES(3,'Mp3 çalarlı')
ID’si 8 olan kategorimizin üstündekilerle beraber select sorgumuzu çalıştıralım
;WITH cte AS (
SELECT 0 AS sira, KategoriID, Ad, UstKategoriID
FROM Kategori WHERE KategoriID=8
UNION ALL
SELECT p.sira + 1, c.KategoriID, c.Ad, c.UstKategoriID
FROM Kategori c
INNER JOIN cte p ON p.UstKategoriID = c.KategoriID
)
SELECT
KategoriID,
Ad,
UstKategoriID
FROM cte ORDER BY sira DESC
Bilgisayarımda geliştirirken problem çıkmadı fakat servera gönderdiğim zaman MasterPage’imde bile ı,ğ,ş harfleri problemli görüntüleniyordu. Uzun bir süre kafayı yedikten sonra dikkatimi çekti. Aynı sayfayı kendi bilgisayarımda açtığım zaman bir problem yok; server’da edit etmeye kalktığım zaman Türkçe karakterler görüntülenemiyor. Fakat diğer PHP sitelerde sorun olmuyor.
Denetim masasından Regional and Language Settings’de Advanced sekmesinde; “Language for non-Unicode programs” kısmının İngilizce’ye ayarlı olduğunu farkettim. Türkçe’ye değiştirdim, gerekli dosyaları Windows 2003 cdsinden yükledim, yeniden başlattım. Sorun ortadan kalktı.
Artur’u bilenler satır ve pompalı tüfeği aynı cümlede okuyunca içlerinden oha diyodur. Artur gibi; nüfusunun çoğu emekli subaylardan oluşan bir site burası. İçinde jandarma karakolu bulunan, özel bir arazi.
Eeee ne oldu? Civar sitelerden eğlenmeye geliyorlar artur’a. Gelmeyin diyen yok. Kapıda para veriyosunuz giriş bileti alıyosunuz tesislerimizden faydalanıyosunuz. Buraya kadar herşey normal.
Son 2 yada 3 senedir bir grup var. Aslında siteye girişleri yasak. Ama içeride tanıdıkları olduğu için giriyorlar. Disko’ya girmeleri de yasak. Ama çok ciddi alkol tükettikleri ve ciddi paralar harcadıkları içn alınıyorlar. “tatildeydim” yazımda bahsettiğim birisi fenere yada galatasaray’a küfüretmiş hatırlamıyorum hangisi. Aynı arkadaş…
Duyduğum kadarıyla; sene başında bir arkadaşımıza kafayı takmışlar. Her gördükleri yerde saldırmışlar. Korkudan İstanbul’a dönmüş. Sezon bitti, bunlar gitmiştir diye bikaç gün kafa dinlemeye gelmiş o arkadaşımız. Meğer gitmemişler… Kavga çıkar. Fakat bu sefer saldıran grup kişi olarak az, hedef grup fazla. Sonu malum… 2 gün sonra intikam almaya geliyorlar.
Ben sininin altında ki basket sahasında oturuyordum. 60-70cm lik bir satır gördüm havada uçuşuyo. Camlar kırılıyo… Masalar uçuşuyo… Her tarafta bağırışlar çağırışlar… Biri bağırıyo motordan pompalı tüfeği alın diye. O anda ne oluyosa oluyo jandarmanın sirenini gören saldırgan grup kaçıyo… Ardından aranıyo taranıyo saldırgan grup bulunuyo. Sonuç ne? Elde var 0 kocaman bi 0!!!
Geriye kalan görüntüler arasında kızgın Artur sakinleri jandarma’ya derdini anlatmaya çalışıyo. Biz burada böyle şeyler yaşamak istemiyoruz diye.
Valla yazarken tedirgin oldum. O saldırgan grupdan biri kazara bu yazıya denk gelir; banada saldırırlarsa diye…
İlk telefonda konuştum. Hallederiz gel dedi. Fiyat sordum sen gel hallederiz dedi. İçimde pek iyi şeyler oluşmadı ilk konuşmada. Sonra bir arkadaşım gerçekten iyi usta dedi. Gittim… Muhabbet arasında benim arabam çoktan lifte çıkmış, tamirata başlamıştı. Sabah 9 da girmiştim, akşam 9 da çıkmıştım. Gün boyu benden başka araç alamamıştı. Akşam 9 civarı borcumu sordum; bana öyle bir rakam çıkarttı ki; hem sevinç hem şok ikisini birarada yaşadım. Diğer servislerin verdiği fiyatın yarısını istedi. Çok teşekkür ettim ve gittim.
Ertesi hafta tekrar gittim, tekrar aklımdaki rakamın altına çıktım. tekrar gittim tekrar…
Tanışalı 6 ay oldu. Ben ki; arabasını servise bırakırken anahtar bırakmayan; aracımı emrecan volvo’ya bırakırken içinden ruhsatı almaz oldum.
Orada bir Hüseyin usta var. Dükkan sahibi. Manyaklık derecesinde dürüst. Haketmediği parayı asla almaz. Hakkı neyse onu alır. Fazlasını değil. Asla faiş fiyattan parça satmaz. Artık yedek parça alırken hiçbiryere sormuyorum. Direk Hüseyin abi’me gidiyorum.
Birde Selçuk usta var. Motor kaputunu açmışsa kesinlikle motorun içine giren biri. Hatta selçukcharger diye espirisi oldu. +1 beygir
Volvo sahiplerine kesinlikle tavsiye ediyorum. Hem işçilik kaliteleri, hem fiyatları hemde insaniyetleri açısından. Genelde kesinlikle oraya git çok iyi servis mutlaka oraya git diye insanların boğazına yapıştığım için komisyon alıp almadığımı soruyorlar. Kesinlikle yok öyle bişey
. Peki bu adamların kötü huyu yok mu? vaaaar.
Araba almaya niyetlendiğim sıra alacağım arabayı götürdüm, abi ıvır zıvır masraf söyle de indirim yaptırtayım diyorum ben yalan söylemem beni biliyosun diye araç sahibinin gözü önünde on numara araba kaçırma dedi
öyle bi dürüst yani
DataGridView’da ki gibi paging yapmak istiyoruz elimizdeki datalist’e. Dünya kadar hesap kitap işlerinin yanısıra; Microsoft SQL Server da MySQL’de olan LIMIT fonksiyonu yok. Hep yakınırım bundan. MySQL de paging sırasında LIMIT 20,10 dediğimiz zaman 20. satır dan başla 10 adet getir diyebiliyoduk. Bunun Microsoft SQL Server’da ki karşılığı upuzun sql kodları. Row numaralarını alacaksın da onları bi satıra atacaksın da between ile çekeceksin de ölme eşşeğim ölme
PagedDataSource’u kullanabilmek için elimizdeki tüm satırları vermemiz gerekiyor. Bu da sunucuyu cidden yoran bir işlem. Öteki türlü elle vermek gerekiyor herşeyi. Alternatif çözümlerden birisi de; PagedDataSource’a bağladığımız DataTable’ ı cachelemek. Cache derken tüm sayfayı değil. sadece DataTable’ı cachelemek. Akla hemen şu soru geliyor. Kategorilere göre ürün listeleten bir sayfam var. Datatable ı cache lerse hangi kategoriye girsin o süre boyunca aynı kategoriyi gösterir.
Eğer; Cache[KategoriID.ToString()] gibi birşey kullanırsak yada Cache["Kategori" + KategoriID.ToString()] o kategoriID ye göre datatable ımızı cacheleriz. evet bolca ram götüren bir işlem. Fakat özellikle çok tablo, çok sorgu ile çalıştığı zaman gerçekten çok süratli çalışıyor.
Yapacağımız örnekte KonuID’ye göre cache ledim.
KonuID değişkenini viewstate de arıyor. yoksa querystring de bakıyor. oradada yoksa 1 döndürüyor.(debugging sırasındaki üşengeçliğim için 1 döndürüyor
) aynı şey currentpage için de geçerli. currentpage değişkenimiz mevcut sayfa yı tutuyor. ona göre paging yapıyor.
public int CurrentPage
{
get
{
object o = this.ViewState["_CurrentPage"];
if (o == null)
if (Request.QueryString["CurrentPage"] != null)
{
return Convert.ToInt32(Request.QueryString["CurrentPage"])-1;
}
else
return 0;
else
return (int)o;
}
set
{
this.ViewState["_CurrentPage"] = value;
}
}
public int KonuID
{
get
{
object o = this.ViewState["TeknikKonuID"];
if (o == null)
{
if (Request.QueryString["TeknikKonuID"] != null)
{
return Convert.ToInt32(Request.QueryString["TeknikKonuID"]);
}
else
return 1;
}
else
return (int)o;
}
set
{
this.ViewState["TeknikKonuID"] = value;
}
}
Bu arada altrepeater ve ustrepeater adlı iki datalistimiz daha var. Biri üstte öteki altta
Repeater olmasının sebebi runtime da button eklemem. LinkButton değil buton. Sayfa ajax olduğu için; linkbutton sayfayı komple postback yapıyor. Button un stilinden buton izlenimini kaldırabiliyorum.
protected void Listele()
{
PagedDataSource pagedSource = new PagedDataSource();
DataTable dt;
if (Cache[KonuID.ToString()] == null)
{
//cache de yok. oluşturalım...
dt = new DataTable();
}
else
{
//cache de ki mevcut datatable ı kullanalım...
dt = (DataTable)Cache.Get(KonuID.ToString());
}
pagedSource.DataSource = dt.DefaultView;
pagedSource.AllowPaging = true;
pagedSource.PageSize = 10;
pagedSource.CurrentPageIndex = CurrentPage;
altRepeater.Controls.Clear();
ustRepeater.Controls.Clear();
if (dt.Rows.Count <= 10)
{
altRepeater.Visible = false;
ustRepeater.Visible = false;
}
else
{
altRepeater.Visible = true;
ustRepeater.Visible = true;
}
Label lbl = new Label();
lbl.Text = “Sayfa: “;
Label lbl2 = new Label();
lbl2.Text = “Sayfa: “;
ustRepeater.Controls.Add(lbl);
altRepeater.Controls.Add(lbl2);
ToplamSayfa = pagedSource.PageCount;
for (int i = 0; i < pagedSource.PageCount; i++)
{
if (i == CurrentPage)
{
Label lb = new Label();
lb.Text = “” + (i + 1).ToString() + ““;
Label lb2 = new Label();
lb2.Text = “” + (i + 1).ToString() + ““;
ustRepeater.Controls.Add(lb2);
altRepeater.Controls.Add(lb);
}
else
{
Button btn = new Button();
btn.Text = (i + 1).ToString();
btn.CommandName = (i).ToString();
btn.Click+=new EventHandler(lb_Click);
Button btn2 = new Button();
btn2.Text = (i + 1).ToString();
btn2.CommandName = (i).ToString();
btn2.Click += new EventHandler(lb_Click);
btn.BackColor = Color.White;
btn.Style.Add(HtmlTextWriterStyle.TextDecoration, “underline”);
btn.Style.Add(HtmlTextWriterStyle.PaddingLeft,”3px”);
btn.BorderWidth = 0;
btn2.Style.Add(HtmlTextWriterStyle.TextDecoration, “underline”);
btn2.Style.Add(HtmlTextWriterStyle.PaddingLeft, “3px”);
btn2.BorderWidth = 0;
btn2.BackColor = Color.White;
altRepeater.Controls.Add(btn2);
ustRepeater.Controls.Add(btn);
}
}
DataList1.DataSource = pagedSource;
DataList1.DataBind();
}
protected void lb_Click(object sender, EventArgs e)
{
CurrentPage = Convert.ToInt32((sender as Button).CommandName);
Listele();
}
protected void OncekiSayfa_Click(object sender, EventArgs e)
{
CurrentPage–;
Listele();
}
protected void SonrakiSayfa_Click(object sender, EventArgs e)
{
CurrentPage++;
Listele();
}
Ve cache kullanan pagerımız hazır. Unutmamamız gereken; yeni bir ürün eklendiğinde veya listelenen birşey değiştiğinde Cache.Remove(KonuID.ToString()); ile cache den datatable ımızı silmemiz. Bu arada cache de default olarak 15 dakika kalıyor. gayet uygun bir süre.
Umarım uykusuzlukdan dolayı eksik yazmamışımdır.