19 Kasım 2014 Çarşamba

C# Görüntü İşleme ( Renkleri Ters Çevirme)

Öncelikle merhaba arkadaşlar.

Görüntü işleme ile ilgili pek bir bilgim yok. Bugün bir başlangıç yapayım dedim. Renkleri ters çevirme mantığını düşündüm. İsterseniz mantık kuralım öncelikle.

Şimdi 1x1 pixel bi resim var diyelim rengi siyah değerleri ise byte cinsinden en yüksek değeri alır. yani r=255, g=255,b=255 Bunu ters çevirmek için ise byte türünün en yüksek değeri olan 255 den çıkartarak beyaz rengi elde ederiz.

r=255-255
g=255-255
b=255-255

8 Eylül 2014 Pazartesi

Python Döviz Kurları App

Merhaba arkadaşlar.

İTÜ özgür yazılım kulübü tarafından düzenlenen "PYTHON" eğitimi finali vermiş bulunmaktadır ve bitirme tezi olarak bizden merkez bankasından döviz kurlarını çekip kendi aralarında dönüşüm yapmamızı istediler. Bende kendi kafama göre düşünüp bir şeyler yaptım. Windows'da bir türlü türkçe karakter sorununu çözemedim ama olduğu kadar işte. Bunun için linuxa geçmeyi düşünüyorum. Python yazarken gerçekten çok kolaylık sağlıyor. Bende yarım günde yazdığım kodları sizinle paylaşayım.(Normalde 1 saatlik iş ama kontroller hakkında yeterince tekrar yapmamışım bunu anladım)

2 Ağustos 2014 Cumartesi

Beynimiz

Maksat kültür olsun.
İnsan o kadar müthiş bi varlık ki. En basitinden göz mesela 526 megapixel çözünürlükte saniyede 25 frame çekiyor. 526 megapixel 2.5 gb olduğuna göre saniyede 62,5 gigabyte görüntü işliyor beynimiz. Bu  sadece görsel işlemler birde bunun karar alma  yapıları var. beynimiz 9 saniyede 15 karar alıyormuş ve karar alırken işlediği anıları da hesaplarsak(benim matematiğim yetmedi) Rahat bir 100 gb veri işleme vardır yani. 1 sn de 100 gb veri işleme. :) İnsan beyni işte bu kadar müthiş bir şey.

22 Temmuz 2014 Salı

Tkinter GUI Editor

Merhaba arkadaşlar. O kadar aramama rağmen bir türlü tkinter sürükle bırak destekli bir gui editörü görmedim bende hemen açtım visual studiomu başladım geliştirmeye. Şu daha 100 satır kod yazmadım ama yaptığım işi çok kaliteli olduğunu görüyorum. Programı yazar yazmaz ilk sizinle paylaşacağım. Çok etkili bir proje olacak gibi geliyor. Bu projede destek olacak kimse varsa irtibat kursun. Her türlü yardım kabul edilir. :) Şimdi sıkıntı çektiğim tek konu Tkinter(python) komutlarını tam bilmiyor olmam. Yani bir butonun konumunu belirlemek için bir saat araştırma yaptım sonunda buldum ama uğraştırdı yani. Bana tkinter nesne ve özelliklerini belirten bir dökümana ihtiyacım var. Ha birde properties ekranına ihtiyacım var(güzel bi companent lazım o konuda vs de vardı galiba ama bulamadım işte).
Neyse dediğim gibi yardımlarınızı bekliyorum.(Hatta çorluda olan varsa bi cafede oturup birşeyler yazabiliriz.)

15 Temmuz 2014 Salı

"Google'dan Teşekkür Mektubu Alan Türk Çocuk" YALANI

Ya arkadaş yalan atıyorsun bari usturuplu at. Hani küçükken biri birşey deyince söylerdik ya Yalancıyı Miksinler mi? Miksinler a.q Alayınızı miksinler. Teşekkür mektubuymuş Adsense den 100$ lık reklam yayınlayan herkese veriyorlar. Gönderiyorlar o mektubu. Senin hesaba göre 2010 yılında google bana 12 ay boyunca teşekkür etti. :) Valla atarlandım. Birde site açmış kendi haberini yapmış. http://www.mentalistler.org/iletisim-3/sah-mat.html sittimini salaa.
Googleye Enis Getmez yaz gör millet nasıl kabartmış.


Geçtiğimiz hafta Perşembe ve Cuma günü sözde bazı teknoloji sitelerinin ve hatta büyük haber sitelerinin de haber yapma gereği duyduğu bu saçmalığa çok kızdım.

Öncelikle bu haber bize ülkemizdeki haberciliğin ne kadar basit ve ucuz olduğunu gösterdi. “Ne yazarsan yaz tıklarlar“ mantığını geçiyorum. Hit almak için abuk sabuk manşeti herkes atıyor. Sorun bilginin doğruluğunun kontrol edilmemesi.

Python da çıkmak istiyor musunuz diye sormak (Tkinter)

Merhaba arkadaşlar. Son zamanlarda python diline merakım ve kendimi geliştirme isteği ile karşıma çıkan püf noktaları anlatmaya devam ediyorum. Püf noktaları diyorum çünkü yazdığım yazılara bakınca ben ders anlatmıyorum sadece deneyimimi ve keşfettiğim püf noktalarıni sizin ile paylaşıyorum.


Neyse konuya geri döneyim hemen


# -*- coding: UTF-8 -*-
from sys import exit#çıkış işlemini yakalayabilmek için
from Tkinter import * #tkinter görsel form oluşturmak için.
import tkMessageBox #ekranda soru sorabilmek için.
def kapa():#Kapa Adındaki Fonksiyonumuz.
    a=tkMessageBox.askyesno("Çıkış","Programı Kapatmak İstediğinize Emin misiniz?")#Kapatmak İsteyip istemediğinizi size soruyor
    if(a==True):#Eğer evet derse
       root.destroy()#Programı kapatıyor.
root = Tk()#Formu Yaratmak için.
root.protocol("WM_DELETE_WINDOW", kapa)#kapatılmak istendiğinde çalıştırılacak fonksiyona yönlendirdik.
root.mainloop() # Formun ekranda kalması için bir tür sonsuz döngü gibi birşey.

Örnekler.

9 Temmuz 2014 Çarşamba

Python _ (Alt tire) Özelliği

Merhaba arkadaşlar. Öğrendikçe yazacağım dil olan python hakkında ufak bir özellik göstermek istiyorum. Hoşuma da gitti yani. :) Neyse meseleye geçeyim.

Python da alt tire fonksiyonu üstte yazdığın stringi temsil ederi. Araştırdığım yerde pek faydasını görmeyeceksiniz dese de hoş bir özellik yani. Hemen bir örnekle anlatayım.

>>> 'http://'
'http://'
>>> _
'http://'
>>>_+'enesmy.blogspot.com/'
'http://enesmy.blogspot.com/'

>>> yazdıklarım kodlar, >>> yazmayanlar da çıktısı oluyor.

7 Temmuz 2014 Pazartesi

Visual C# Chart kullanımı ( Grafik )

Merhaba arkadaşlar.
Size bugün Chart yani grafik kullanımını anlatacağım.
Öncelikle Chart ne işe yarar?
Chart bildiğin grafik( Çubuk,pasta,çizgiler,eğilim çizgileri vs) hazırlamak için kullanılan bir tür Microsoft tarafından geliştirilen Component'dir. Bir çok projede iş görür niteliktedir ve tasarımını renklendirerek iyileştirebiliyorsunuz. Microsoftun sitesinde yazdığı gibi 'Microsoft Chart for .NET Framework 3.5 SP1' den itibaren bulunur ve .net framework 2.0 de yoktur.(Şahsen aradım). Chart Componentinden ufak bir ekran görüntüsü.


Visual c# Chart
Chart Ekran Görüntüsü


Örneklerle anlatmaya geçeyim hemen.


Chart componenti toolbox da data sekmesinin altında mevcuttur. ordan sürükleyerek formumuza ekleyelim.
Boyutlarını ve kişisel ayarlarınızı yapın ve kod kısmına geçelim hemen.

Ben network kim ne kadar dosya indirmiş kim ne kadar dosya yüklemiş onların takibini yaptığım için grafiği de ona göre hazırlayacağım.

            this.chart1.Titles.Clear();//Chart da varsayılan olarak gelen başlıkları temizliyoruz.
            this.chart1.Series.Clear();//Chart da varsayılan olarak gelen series (Liste) temizliyoruz.
            this.chart1.Series.Add("Download");//2 adet çubuk türü olacak biri upload diğeri download. Downloadı ekledik.
            this.chart1.Series.Add("Upload");//Uploadı ekledik
            this.chart1.Series[0].Color = Color.Red;//Downloadın rengini belirledik.(Grafiksel iyileştirmek için)
            this.chart1.Series[1].Color = Color.Orange;//Uploadın rengini belirledik.
            for (int i = 0; i < 7; i++)//Ben 7 adet kayıt gösteriyorum çünkü bu stilde ekrana 7 adet kayıt sığıyor.
            {
                this.chart1.Series[0].Points.AddXY(kisi[i].ToString(), double.Parse(down[i].ToString())/1024.0/1024.0);//x parametresi altta yazacak yazıyı belirliyor y ise o yazının değerini belirliyor.
                this.chart1.Series[1].Points.AddXY(kisi[i].ToString(), double.Parse(up[i].ToString()) / 1024.0 / 1024.0);//Burda o kişiye birde upload değeri eklememize yarıyor. Ben kb olarak aldığım değeri gb ye çevirmek için 2 kez 1024 e bölüyorum.
            }

Bu arada kisi, up, down değişkenleri bende arraylist isterseniz siz string, int ve double dizi değişkenlerle de bu işlemi yapabilirsiniz.

İşin basit tarafını anlatmak gerekirse.

1- Başlık Eklemek: chart1.Series.Add("Başlık Tanımı");
2- Değer Eklemek:chart1.Series[int türünde seri ID değerini yazıyoruz yada string olarak başlık tanımı yazılabilir"].Points.AddXY("Burda Kalemin Tanımını Giriyoruz", "Burda da double yada int türünde değeri giriyoruz.")/1024.0/1024.0);


Bir çok değişik grafikleme özelliğine sahip. Misal pasta diliminden tutun da noktalı değerlere kadar bir çok çeşidi vardır. Bilmek istediğiniz çeşidini yorum olarak attığınızda size 24 saat içinde örnek uygulamasını hazırlar makaleye eklerim. Şu an sadece çubukların ihtiyaç olacağını düşündüğüm için böyle bir anlatım yolu izledim.


Yorumlarınız benim için önemli google içinde

6 Temmuz 2014 Pazar

Python Eğitimleri

İstanbul Teknik Üniversitesinde Güray YILDIRIM tarafından düzenlenen İTÜ GNU Python Eğitimine dahil olduğum sürece göreceğim eğitimleri hem sizinle paylaşıp hem de kendimi geliştireceğim. 
Hepimize hayırlı olması dileği ile.

30 Haziran 2014 Pazartesi

ArrayList Kullanımı

ArrayList object türünde liste oluşturmamızı ve bir çok problemden kurtulmamızı sağlayan bir tür dizi değişkendir. En büyük özelliği her türden yani object olarak verileri saklamasıdır. Veri türünüz ister int ister string ister form ister resim isterse de buton olsun hepsini saklar ve siz isteyince geri döndürür. Yada sizin hazırladığınız bir veri türünü de ekleyebilirsiniz. ArrayList değişkenini kullanabilmek için using kısmına system.collection eklememiz lazım.
using System.Collections;
 Hadi şimdi ilk değişkenimizi tanımlayalım ve içinde işlemler yapalım.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace erreylist

27 Haziran 2014 Cuma

Bilgisayara IP numarası ile bağlanıyorum ama ismi ile bağlanamıyorum

Windows server yüklü olan bilgisayara \\ipadresi ile bağlanıyordum ama \\bilgisayarismi ile bağlanamıyordum. Sorunun çözümünü bir türlü bulamadım. Hani serveri kurcaladım clientle uğraştım falan artık illallah ettim. Hemen bi kurnazlık geldi aklıma ve bende clienti kandırma kararı aldım. Gittim host dosyasına 
[Bilgisayarın IP adresi] [Bilgisayarın İsmi]
satırını ekledim. Sorun düzeldi. İdeal bir çözüm oldu yani öyle probleme böyle çözüm :)

26 Haziran 2014 Perşembe

Bilişimcinin Günü Ne Kadar Berbat Geçebilir?

Bugün bir bilişimcilerin başına gelebilecek en berbat olayı anlatayım sizlere.
Sabah iş yerine geldim herkes benim masamda beni bekliyor. Selam selam. Direk konuya girdiler sağ olsunlar. Tüm fabrikada bilgisayarlar arızalı. Akşam bilgisayara girememiş kimse kayıtları. Neyse bir bakayım dedim koca fabrikayı 7 kez tavaf ettim sonra sorunun kaynağının server odasında olduğunu anladım. Sonra da dikkatimi çekti server kabinin yeri değişmiş. Allah Allah. Kabinin içini bir inceledim ve sorunun kaynağını buldum. Sorunu bulmak kolay oldu yani koca fabrikayı 7 kere dolaştım ama buna rağmen konuşuyorum kolay oldu. Çünkü asıl zor iş kabinin içinde. 72 adet patch panel ucunu söküp yeniden çaktım. İşte şimdi de işi bitirdim de eve gideceğim. Ama kaç yıldır bilişimciyim böyle stres yaşamadım. Kabinin yerini değiştiren ve o bütün kabloları kopartan arkadaşa erotik dolu sevgiler. Bu sıkıntımı paylaştığım sizlere de selamlar.

23 Haziran 2014 Pazartesi

Alışveriş Siteleri Çıktı Mertlik Bozuldu

Alışveriş sitelerini hepimiz biliriz. Girersin, ürünü seçersin, ödemeyi yaparsın ve onlar size bir kutu gönderir. İsterseler telefonunuzu yada bilgisayarınızı gönderir isterlerse de hıyarı soyup size gönderirler.
Örn: Telefon sipariş etti, kutudan salatalık çıktı MYNET Haber

Acayip acayip işler işte. Neyse konuya dönelim.Teknoloji alışverişi sitesine girdik ama bütün teknoloji satan sitelere giriyoruz. Hani vatancomputer, darty, bimex, gold, hepsiburada bla bla bla. Alacağımız ürün belli ve bulduk. Alacağız kararlıyız ama en ucuzu hangisinde ise ondan alacağız. A 500 tl, B 500 tl C 500 tl D 500 tl, E 499.99 tl. En ucuz hangisi? Tabi ki E mağazası. Adamalar 1 kuruş daha ucuza satıyor. Hemen sepete ekle, alışverişi tamamla falan saldırırız ama o iş öyle olmaması lazım işte. Bunun kargo parası var, müşteri memnuniyeti var. Bir bakıyorsun 499.99 tl ye satan mağazada 30 tl kargo çıkıyor 500 tl ye satan mağazada ise 5 tl. Hatta kimisi benden diyor yani gel al ben ödeyeceğim kargo ücretini. Alışverişi yaptın ürün kapına geldi aaaa bunun şarj cihazını göndermemişler. Sonra bir bakıyorsun ki telefonlarına çıkmıyorlar. Müşteri hizmetleri diye bir numara koymuşlar ama o müşteri siz değilsiniz sanki açan yok telefonu. Bir yerde yanlış yaptın neresi orası söyleyeyim hemen firmanın müşteri kitlesi memnun mu firmadan. Ben mesela mutlaka Google'ye Şikayet Var diye yazınca ilk siteden arattırırım. Firma hakkındaki şikayetler var mı yada hangi tarz şikayetler var. Müşterilere nasıl cevaplar veriyor. Müşterilerin geri dönüşü olumlu mu olumsuz mu. Çok önemli bir kavram. Sonuçta sektörümüz bilişim sektörü ve alacağımız ürün her sitede olmuyor. Bazıları ismini ilk defa duyduğumuz siteler olabiliyor. Bu yüzden Şikayetleri ve geri dönüşleri çok önemlidir. Bu dediklerim sadece e ticaret siteleri için değil yerel yada global firmaları da aratabilirsiniz.

Netice olarak diyeceğim şu eskiden pazardan alırdık donumuzu. Bel lastiklerine bakardık sıkar mı acaba diye hatta orada kabin olurdu girerdik denerdik. Şimdi denemek için bile kapıya getirtiyoruz ürünü. Flash bellek almak istiyoruz. Cebimizde 30 tl para var ama gidipte öyle 8 - 16 gb değil bize 32 gb flash lazım. Marka önemli değil. Firmalara bakıyorsun bakıyorsun 50 tl den aşağı yok. İnsanın içinde bir burukluk oluyor be. Hani sormak istiyor insan.

"Abi be 30 tl ye olur mu bu filaşş."

Visual Csharph XML Teknolojisi ile Döviz Kuru Çekme

Merhaba arkadaşlar.
Bugün döviz kuru çekeceğiz.
Döviz kurunu merkez bankasının xml servisinden alacağız. Bilmeyenler için döviz kuru xml sayfası

http://www.tcmb.gov.tr/kurlar/today.xml

XML okumak için önce xml referansını ekleyelim ve bu sayede .net companentlerinin faydasını görelim.

                    using System.Xml;
Sonra bu döviz kurunu listview e aktaracağımız için ekrana bi listview ekleyelim. Özellikleri şöyle olacak

19 Haziran 2014 Perşembe

Ağdaki Bilgisayarların Adlarını Öğrenmek

İş yerindesiniz ve elinizde ipler var. Siz gidip gidip bilgisayar ismine bakıyorsunuz. Oluyor mu? Tabi ki de olmuyor. Öncelikle yapmanız gereken şey basit. Kendi ip adresinizi öğreneceksiniz ve bu sayede de hangi bacaktan ipleri listeleyeceğini karar veriyorsun. Mesela ben 10.1.2.x kullanıyorum. Buna ek olarak istesem  10.1.3.x de kullanabilirim. Yani ağında hangi bacaklar kullanılıyor. Tek bacak kullanıyorsan işin basit. tek döngü ile işin biter ama 2 - 3 bacak kullanıyorsan hatta aynı anda farklı bloklar kullanıyorsan işin uzar gider. Size tek bacaklı bir ip blokundan anlatacağım.

Neyse önce ip adresimizi öğrenelim.

 System.Net.Dns.GetHostByName(Net.Dns.GetHostName).AddressList(0).ToString()

Bize ip adresimizi döndürüyor. Bu sayede sistemde hangi bacağı kullandığımızı öğreniyoruz. Şimdi split ile bloklar ayıralım.

 Dim bloklar() As String =  System.Net.Dns.GetHostByName(Net.Dns.GetHostName).AddressList(0).ToString().Split(".")

Bloklara ayırdık. şimdi ip blokları her biri byte den meydana geldiği için yani ip bloklarının her biri byte türündedir. Bu blokları for kodu ile byte.minvalue den byte.maxvalue ye kadar gezdirelim. Bu sayede kendi bloğumuzda bulunan bütün ipleri gezmiş olacaktır. sonrada bunları listboxumuza ekleyelim.

18 Haziran 2014 Çarşamba

Textbox Yazı Yazma Sihiri

Sihir mi değil mi bilmiyorum ama MYO da okurken hocamın gösterdiği ve çok hoşuma giden bir taktik göstermek istiyorum size.

Hani bazı programlarda textboxa yazıyı yazarken yazı rengi yeşil oluyo başka bir textboxa geçince o textboxun rengi yeşile dönüyo eski textbox normal halini alıyor. Bla bla bla. Projenize görsellik olarak hoşluk katacaktır.

Öncelikle olayları belirleyelim. Mesela Textboxa tıkladığımızda enter olayı meydana geliyor yani textbox a focuslanmışsın demektir. Neyse form üzerine textboxu attıktan sonra event kısmından enter olayına fare ile çift tıklayarak ekrana gelecek olan kodlara gerekli düzeltmeleri yapınız. Komutlar aşağıda.

17 Haziran 2014 Salı

Eventteki Sender ve E değişkenleri (object sender, EventArgs e)

Merhaba arkadaşlar.
Bu yazımda size Visual C# yada Visual Basic de butona çift tıkladığımızda
object sender, EventArgs e
değişkenlerinin ne işe yaradığını anlatacağım.

Öncelikle sender den başlıyorum.

Tıklanan bir butondan örnek vermek istiyorum anlatırken. Şimdi Buttona tıkladın. Object Sender o butonu temsil eder. Kısaca Nesneyi temsil ediyor. Sender objesini kendi türüne yani butonda butona, checkboxda checkboxa parse ederseniz daha rahat işlem yaparsınız. Çok detaya girmeden bir işlem yapacaksanız otomatik Control nesnesine pars etmenizi öneririm. Bu sayede aynı methodu birden fazla kontrolde kullanırken sorun yaşamazsınız. Yani checkbox ve textboxa enter(içine girdiğimizde) dediğimizde kalınlığını koyu yapıp leave(içinden ayrıldığımızda) eski inceliğine geri döndürebiliriz. Basit olsun diye butondan örnek vermek gerekirse aşağıdaki kodu bir inceleyin.


private void button_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    btn.Enabled = false;
}


13 Haziran 2014 Cuma

Okulda öğrendiğimiz gibi toplama yapan program

Bir çoğumuz hatırlar. Okulda toplamayı şema şeklinde yapardık. Örnek vermek gerekirse

      30
      40
+_____
      50

c# da yaparken ise genelde işlem hep arka planda otomatik hesaplar. Peki biz bunu tek tek nasıl hesaplarız?

Öyle bi mantık yürütmeliyiz ki program değil biz hesaplayalım. Elde olan sayıyı elinizde tutarak hesaplayalım. Bir blogda görmüştüm bu yapacağımız örnek bir yarışmada sorulmuştu. O zamanlar o yazı dikkatimi çekmemişti. Hatta hiç bakmadım bile girişi okudum puff dedim kapattım. Şimdi ise bir kahramanlık yapıp eskiden boş verdiğim bu programı yazmaya karar verdim. Sizinle de paylaşacağım ve tek tek satır satır hesaplayacağım. Adım adım anlatacağım.

11 Haziran 2014 Çarşamba

Merhaba Dünya

Console.WriteLine("Merhaba Okurlar.");

Print 'Blogumda C# ağırlıklı makale ve hayat ağırlıklı yazılar yazacağım'

Echo "Bu demek değil ki alternatifler de olmayacak.";

printf("Olacak elbet Mesela: VB.NET, ASP.NET, SQL, PYTHON, ACTION SCRIPT ve kodları aklımdan çıkmayan ama ismi aklımda durmayan nice diller.");

print("Bir yazılımcınn günlüğünü okuyacaksınız.")

document.write('Neyse. Şimdilik Herkese');

<html><body><p><b>Merhaba Dünya</b></p></body></html>