Yaz stajı sonrası tecrübelerimi paylaşmak adına çekmiş olduğum bir seri.
İçerik Hazırlanıyor.
Yaz stajı sonrası tecrübelerimi paylaşmak adına çekmiş olduğum bir seri.
İçerik Hazırlanıyor.
Bitbucked nedir?
Genelde kod paylaşımı ve ekip çalışmalarında ortak bir havuz oluşturmak için kullanılan depolama sistemlerinden biridir. Tabi paylaşmak istediğiniz yazı, tanıtıcı dokuman, ders dokumanı gibi şeyleride paylaşmak mümkün.
Ekip çalışmalarında projeyi yönetmek için kullanacağınız araçlar sayesinde tek bir proje ekip olarak çalışmayıda mümkün kılar.
Neden Bitbucket derseniz :
özellikleri benim tercih sebebim oldu.
Bitbucket’e aşağıdaki linkten üye olunuz:
Ve Alttaki linkten yönetim aracını indiriniz.
Kurulum ve kullanım için videoya göz atınız:
Kullanım ayrıntıları
Daha fazla bilgi için :
Bitbucket Dokumanları:
SourceTree Dokumanları:
Genel Git Dökümanları:
Bu Eğitim vidyosuda Nesneye dayalı programlama prensiplerine bağlı kalınarak aşşağıda ki konular işlenmeye çalışılmıştır. Ayrıca kod test edilerek ve debug işlemleri ile incelenerek geliştirilmiştir.
Delete işlemleri ilk iki class için yapılmış diğer classlarda zaman almaması için gerçeklenmemiştir.
Konular – İçerik:
4 adet class(Karakter,Dugum,BagliListe, Yonetim,) + Main.cpp oluşturularak Bir bağlı liste üzerinde ekleme işlemleri gerçekleştirildi.
Sorularınız ve Önerilerinizi yorum yazarak belirtebilir diğer okurlarada takıldığınız konularda bilgi aktarımını sağlayabilirisiniz.
Dökümanlar ve Kodlar: https://www.dropbox.com/sh/llycfi61is4yreo/AAD5tukR3meWxgYUVGTW_k8_a?dl=0
Abdullah Salih BAYRAKTAR
Bir bilgisayar programcısının ödeve(projeye) bakması gereken açıyı anlatmya çalıştım.
İçerik :
Birkaç aksaklık (girişte biraz heycan, static 🙂 ) olsada, faydalı olması dileğiyle…..
Dökümanlar:
https://www.dropbox.com/sh/jwar422ozjtxo36/AAAH0osmak05V8rJTuWbZ3ZBa?dl=0
Not: İlk anlatılan dökümanda(ödev dokumanı): Sepet içinde çivilerin bulunmsa durumu değilde, Sepetlerin Çiviye asılamsı durumu istenmiş görselde de gösterilmiş. Yani harfler Çivi değil.
Keywordler: Veri yapıları, Ödev1, Sakarya Üniversitesi, Bir yaklaşım, Problem Çözme, Algortima geliştirme, Ödev yapmak, Bilgisayr Mühendisliği, c++
Yanıyordu seni, beni ısıtmak için
Yanıyordu bir şey; senin için, benim için
Yanıyordu tabi ki Allah (c.c.) rızası için
Sadece yanmıyordu yakıyordu aslında
Kömür, yok yok petroldü sanki
Belki yürekti: senin ki, benim ki
Evet evet bu özeldi
Yakıyordu kendini
Sadece ısıtmak içindi seni, beni
Neredeydi harbi?
Suriye’de yok yok Filistin’di sanki
Yanıyorduk kardeşim dünyada harbi…
Abdullah Salih BAYRAKTAR
Bu şiir 01.07.2014 tarihinde Bombalanan Gazze için yazılmıştır. Biliyoruz ki ölmek mümin için son değil, kutlu bir başlangıçtır.
Bu yazımda hem bir algoritmadan hemde C# taki ilk kapsamlı form uygulamamdan bahsedeceğim.
Ekran Göörüntüsü
Kodların GitHub linki: https://github.com/AbdullahBay/Uygundagilim
Çalıştırılabilir Dosya: https://www.dropbox.com/s/429xrtjky5q2odk/ayrik.exe
Abdullah Salih BAYRAKTAR
Alıntı yaparken link veriniz.
Bu yazımda Cmd de Java Konsol uygulamasını nasıl çalıştırabileceğimizi anlatacağım.
Çalıştırılabilir jar (.exe gibi) oluşturma işini eclipse’te export yardımıyla yapabiliyoruz.(bu sadece bir seçenek ve ben bu yazımda sadece bundan bahsedeceğim.)
1. Package Explorerda Projemize sağ tıklıyoruz
2. Export’a tıklıyoruz
3. Java/Runnable JAR File seçiyoruz
4. Yeni ekranda oluşacak jarık konumunu seçiyoruz(Export destination). Launch Configuration seçeneği altında çalışacak olan ana sınıfı seçiyoruz. Eğer kullandığımız kütüphaneler varsa “Package required libraries into generated JAR” seçeneğini seçmeyi unutmuyoruz.
5. Finish ile sonlandırıp jarımızı oluşturuyoruz.
Bilgisayarınızda javanın kurulu olduğunu varsayıyorum. Ki zaten java yoksa eclipse çalışmayacaktır. Ayarları yapmaya başlayalım.

Abdullah Salih BAYRAKTAR
Bu kurulum Ubuntu 12.04 LTS ve Linux Mint 15 sürümlerinde denenmiştir
Lampserver:
1. Uçbirimi açıyoruz. sudoapt-getinstalllamp-server^
2. indirmeyi başlatmak için “y” diyoruz.
Phpmyadmin:
1. Uçbirimi açıyoruz. sudoapt-getinstallphpmyadmin 1. indirmeyi başlatmak için “y” diyoruz.
2. Otomatik ayarlama için http sunucusu seçmemiz isteniyor (alternatifler) :Nginx (engine-x, njinx), apache ve Lighttpd (lighty);
3. Komut satırında kontrolü etkinleştirilsin mi?(Configuredatabaseforphpmyadminwithdbconfig-common?) Yes
4. Şifre phpmyadmin için:
5. Mysql için pasword:
6. Pasword kontrol: tekrar gir:
7. Do thisfirst: sudogedit /etc/apache2/apache2.conf
8. addthislinesomewhere: Include /etc/phpmyadmin/apache.conf
9. andfinallyrestartapache: sudo/etc/init.d/apache2 restart
Not: bağlantı hatası veya başka hata alıyorsak app-get i güncellememiz gerekebilir.
Update komutu : sudoapt-getupdate
Örn hata: Err http://us.archive.ubuntu.com/ubuntu/ quantal-updates/main php5-common amd64 5.4.6-1ubuntu1.4 404 NotFound [IP: 91.189.91.15 80] Err http://security.ubuntu.com/ubuntu/ quantal-security/main php5-common amd64 5.4.6-1ubuntu1.4
Tek tek kurulum:
1. sudoapt-getinstall apache2
2. sudoapt-getinstallmysql-server
3. sudoapt-getinstall php5 libapachveyasudoapt-getinstall php5 php5-gd php5-mysql php5-curl php5-cli php5-cgi php5-dev
Bir mikro denetleyici (PİC, MCU veya µC), aşağıda sayılan bileşenlerle tek bir tümleşik devre üzerinde üretilmiş malzemeye denir.
|
![]() |
Bir bilgisayar mühendisinin yazdığı kodları bilgisayar dışında daha somut bir platformda görmek ister diye düşünüyorum. Sizde böyle düşünüyorsanız bunun kolay yolu bir Mikrodenetleyici (PİC) ile çalışmaktır. Tabi bu iş kolay olduğu kadar öğrenci için ucuz bir iş değil ne yazık ki. Fakat bir 100 tl bütçe ayırarak temel malzemeleri elde edebilirisiniz.
İlk projemde Kullanılan malzemeler ve fiyatları:
| Malzeme adı ve adet | Fiyatı |
| 1 Adet 16f877A Mikro denetleyici | 8,00tl |
| 1 adet 10kohm‘luk direnç | 0,10tl |
| 2 adet 220ohm‘luk direnç | 0,20tl |
| 3 adet led | 0,30tl |
| 1 adet 4kmhz lik kristal | 1,00tl |
| 1 er metre kırmızı mavi kablo | 1,00tl *emin değilim |
| 2 adet 22 pfarad kondansatör | 0,50tl |
| 1 adet usb uzatma kablosu | 1,00tl |
| 1 adet Küçük Buzzer | 1,00tl |
| ARA TOPLAM | 13,10TL |
| 1 adet PIC programlayıcı(Pickit 2) | 85,00tl |
| TOLAM | 98,10TL |
Yukarıda da görüldüğü gibi aslında çok maliyetli olmayan bir uğraş fakat bir seferliğine bir adet PİC-Programlayıcı almanız gerekiyor. Hatrı sayılır bu parayı vermezseniz benim gibi 3 ay boyunca evde devre kurmaya uğraşır durursunuz. Şevkiniz kırılmaz ise bu uğraşlar insana tecrübe ve elektronik bilgisi katıyor o bir gerçek.
Bu konudaki tavsiyem meslek lisesinde veya üniversitede iseniz hocalarınızdan veya okuldan temin etmeniz ya da konu ile ilgili bir ödünç tanıdıktan almanız.
Kodumuzu Yazalım
Bunun için bir IDE(Entegre Geliştirme Ortamı) ‘ye ihtiyacımız var. Ben ilk uygulamamda Micro C-IDE sini kullandım. IDE’ler arasında farklılıklar var o yüzden hangisine karar
verdiyseniz o IDE ile yazılmış kodlara bakmanız yoksa ilk başta kafanız çokça karışır. Aslında mantık aynıdır fakat ifade tarzı (syntax) farklı olduğu için kavramak zor olur.
Kodumuzu görelim ve açıklamaya devam edelim.
Micro C programını kurup çalıştırıyoruz.
File->New->NewProject diyoruz.
Açılan Wizard dan Proje ismi, kaydedilecek yer, Micro işlemcinin Adı(16F877A) ve Kristal hızını (4.000000mhz) seçiyoruz. Diğer ayarlara şuan bakmadan Finish’i görene kadar next diyoruz.
Editör sayfamızda aşağıdaki kod bloğu karşımıza geliyor
void main() {
}
Açılan Pencereye aşağıda gördüğümüz kodu yazıyoruz
void main ()
{
trisb=0; // trisX=0; ile o porta ait 8 bacağı çıkış olarak ayarlıyoruz.
trisc=0;
portb=0b11111111; // portX= 0b11111111 ile çıkış bacaklarınapotansiyel (volt) gönderiyoruz.
portc=0b11111111;
while(1)
{
portb= 0b11111111;
portc.rc7=0;
delay_ms(200);
portb= 0b00000000;
portc.rc7=1;
delay_ms(200);
}
}
Burada ikili (binary) sayı sistemini kullanıyoruz. Bu yüzden değerirn başında “0b” bulunuyor ve bu sayının binary olduğunu ifade ediyor.Ondan sonra gelen 8 rakam sırası ile port bacakların potansiyel (volt) değerlerini belirliyor. Bu değerler digital çıkışta 0 için 0-Volt iken 1 için (-5)-Volt oluyor.
portb=0b11111111; değeri ile bportınun 0 dan 7(dahil) ye kadar olan 8 bacağının (-5)-Volt çıkış vermesini sağlıyor. Aynı işlemi portc içinde tekrarlıyoruz.
Programın sürekli çalışması için Sonsuz döngü [ while(1) ] içine alıyoruz ve içeride yapılacak işlemleri döngü parantezleri [ { kodlar } ] içerisinde sırayla tanımlıyoruz.
Döngü kod bloğumuz sırayla
Kodumuzu yazdık, derlemeden önce kullancağımız kristalle ilgili ayarı yapmamız gerekiyor. Bunu için
Project->Edit Project e tıklıyoruz ve açılan pencerede PİC Türümüzün seçili olduğunu görüyoruz(16F877A). Aşşağıdaki ayarları sırası ile yapıyoruz.
Ve kodumuzu Mikro işlemcinin anlayacağı dile çeviriyoruz(derliyoruz). Derleme işlemini Ana menüdeki (Build->Build) tuşlarına basarak gerçekleştiriyoruz. “Finished successfully “ yazısını altta bulunan Message Penceresinde gördüğümüzde kodumuz sorunsuz derlenmiş ve ihtiyacımız olan (PİC imizin anlayacağı kod) <projeadı>.hex uzantısı ile oluşuyor.
Kodu Bilgisayar ortamında deneyelim(Proteus):
Proteus Programını bilmiyorsanız bu bölümü geçiniz. Ama bu işle uğraşacaksanız öğrenmenizi tavsiye ederim.
Bu kodun çalışmasını bilgisayar ortamında denemek için devre çizme araçlarından biri olan proteus’ta gerçekleyelim.
Proteusu kuruyoruz ve devremizi proteus-isis arayüzünde oluşturuyoruz. Ve PİC’in üzerine 2 kez tıklayarak Program file : kısmına .hex uzantılı dosyanın konumunu gösteriyoruz.
Devrenin simülasyonunu görmek için sol alt taki başlat butıonuna basıyoruz ve her şey yolunda ise ışıkların yanıp sönmesini görebiliyoruz.
Devre Kurulumu
Biraz elektronik bilgisi birazda araştırma ruhu varsa iş yürüyor. Azmin elinden kurtulacak bir şey yoktur.
Önce resmi görelim ve sonra resim üzerinden konuşalım. Buradan daha açık gözüktüğünden dolayı proteus devreside gözden geçirilebilir.
Not: PİC de bacaklar 1. Bacak PİC üzerinde girinti şeklindeki nokta ile belirilmiştir ve u şeklinde 1 den 40 a kadar gider (16F877A da 40 bacak var).
Burada önemli olan şu ki 1. Bacak reset bacağıdır ve 0-volt verildiğinde PİC’i durdurur (resetler). Ortamdaki koşullardan etkilenmemesi içi o bacağa 5- volt bağlanması gerekir. Burada potansiyel direnç üzerinden geçirilir ki bu şekilde PİC’inistenilen potansiyeli alması fakat fazla akıma maruz kalmaması sağlanır.
Hangi paçanın hangi bacağa bağlanacağı Proteus çıktısında bacak numaralarıyla gösterilmiştir.
Devreyi kuralım ve bir adet usb kablosu ile 5 voltluk gerilimi borda verelim. Enerji kaynağı olarak hem bilgisayardan hemde bir pirizden yararlanabilmek için Bir usb uzatma kablosunun Dişi kısmını keserek Kırmızı(5 volt) olan kabloyu + volta, siyah (0 volt) kabloyu ise – volta(torak-ground) yani toprağa bağlıyoruz.
Programı PİC’e atmak.
Bu işlem için Yukarıda bahsettiğimiz PİC programlayıcıya ihtiyacımız var. Bu konuda farklı markaların farklı ürünleri var. Biz PİCkit 2 programlayıcısını kullanacağız.
Programlayıcının CD sinden veya web sitesinden indirdiğimiz Programı bilgisayarımıza kuruyoruz. PİCkit2 cihazını usb üzerinden bilgisayarımıza bağlıyoruz. Programı başlatıyoruz. Ve karşımıza gelen ekranda PİC in algılandığını ,ismini , ve yazmaya yazır olunduğu bilgilerini göreceğiz. Program üzerinde Vdd PİCkit2 kısmındaki volt değeri Otomatik ayarlanmadı ise volt değerini 5 Volt a ayarlıyoruz.
Bu işlemlerden sonra: “File->İmportHex” i seçerek hex uzantılı dosyanın konumunu programımıza gösteriyoruz. Konum gösterme işlemi bittiğinde(Tamama Tıkladığımızda ) ,Program memory kısmında hez kodunun 16 sayı sisteminde gösterildiğini göreceksiniz.
PİC bilgileri doğru ve yıkarıda bahsedilen ayarlar yapıldı ise Write butonuna tıklayarak Kodun PİC’ e aktarılmasını sağlıyoruz .
PİCkit2 den PİC’i söküyoruz ve devrede yerine takıyoruz. ( Bu işlemler sırasında PİC’in yanmaması için devreye elektrik vermemiş olmamız gerekiyor) .
PİC imizi devreye takıp Usb den aldığımız 5 voltu devreye veriyoruz ve devrenin çalıştığını gözlemliyoruz.
Linkler
PİC Programlayıcı :http://www.delab.net/PICKit2-Programmer,PR-1.html
PİC Programlayıcı Resmi sitesi : http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805&redirects=pickit2
Direnç skalası : http://www.biltek.tubitak.gov.tr/gelisim/belektronik/resistor.html
Bu yazımızda işaretçilerden bahsedeceğim. İşaretçi= Adres tutucu=Pointer;
İşaretçiler bellekten aldığınız yerin adresini tutmada kullanılır. Bir işaretçiyi “ int *pIsaretciAdi; ” şeklinde kodlayarak oluştururuz. İşaretçilerin başlarına p harfini koyarız ki onun işaretçi olduğunu unutmayalım. Sizde bunu standart haline getirseniz iyi olur.
İşaretçiler bellekten aldığınız yerin adresini tutmak için c/c++ dilinde vardırlar.
Stack (dinamik olmayan) hafızada oluşturduğumuz değişkenlerin adresleri değişken adında tutulduğu için zaten bellidir o yüzden tekrar bir işaretçiye genelde ihtiyaç duyulmaz. Fakat kullanmakta mümkündür.
Örnek verecek olursak
int a; // dediğimizde stackden yer almış oluruz ve
//bunun adresini zaten “a” değişkeni tutuyordur.
int* pA=&a; // şeklinde a’nın adresini yinede tutabiliriz.
Fakat dikkat edilmesi gereken bazı hususlar vardır. Bir stack verisi kod bloğu bittiğinde silinir.
Yani
{
int a=5;
int* pA=&a;
return pA;
}
Diyerek döndürdüğünüz pointerın (pA) tuttuğu adrese erişmek istediğinizde kod bloğu bitmiş olan a değişkeninin yeri boşaltılmış (serbest bırakılmış) olacağından hatalı erişim sağlamış olacaksınız, sadece hatalı olsa iyi belki o hücreye başka programlar tarafından farklı değerler yazılmış olma ihtimali ile karşılaşacak, yanlış değerle işlem yapacaksınız yada başka programın kullandığı hücreyi kullanarak diğer programaın akışını bozacaksınız.
Bu durumu gidermek istersek pA pointerının tuttuğu adresi (yeri) de heapten almalıyız.
{
int* pA= new int;
*pA=5;
return pA;
}
Bu ise yukarıda görüldüğü gibi “ int * pA= new int; “ şeklinde alınır.
Burada yapılacak en büyük hata tek int’lik yer alınmasına rağmen
*(pA+1)=25; /*veya*/ cout<<pA[2]; // ikiside hatalı
Sıfırıncı hücre dışındaki hücrelere erişimin sağlanmasıdır. Bu tamamen sizin kontrol etmeniz gereken bir durumdur.(genelde bu hata döngülerde programcının gözünden kaçar)
Şu unutulmamalı ki her pointer bir adres tutar. Ve işaretçinin adı yazıldığında tuttuğu adrese, başına “*” koyduğunuzda adresteki değere, başına “&” koyduğunuzda ise işaretçinin adresine ulaşırsınız.

İşaretçiye ihtiyaç stack (dinamik) hafızadan alınan verilerin adreslerinin sadece bir seferliğine yani alınırken erişilir olmasından kaynaklanır.
new int[2];
Yazılması durumunda hafızadan 2 integerlik yer alınacak new fonksiyonu tarafından dizinin ilk adresi döndürülecektir fakat siz bu adresi tutmazsanız size ait olan yere tekrardan ulaşamazsınız.
İşte bu dönen adresleri tutmak için oluşturulmuş tipler pointerlardır.
int* pA= new int[2]; // 2 integer kadar yer alındı ve
//dönen adres pA pointerına atandı.
*pA=5; // ilk adreste bulunan yere 5 atandı.
pA[1]=7; // ikinci adreste bulunan yere 7 atandı
Burada atama işleminde pointer iki şekilde kullanılmıştır.
a) “*pA” pA bir adres tutucusuydu, önüne yıldız (*) konulduğunda o adresteki veriye erişim sağlanmış olur.
a. Diğer hücrelere erişmek için ise *pA, *(pA+1), *(pA+2), *(pA+3)… şeklinde kodlanır.
b. Buradaki “pA+1” toplanan sayı yani +1 diğer değişkene geçmek demekti. Değişkenin türü int ise ,integer 4 baytdir, (pA’nın tuttuğu adres+4) anlamına gelir.

b) “pA[1]” Adres tutan pA pointerina indis verilince derleyici içine erişilmek istediğini anlıyor ve [ ] indisin içindeki değer ne ise o indisin ifade ettiği hücreye işlem yapmaya başlıyor.
a. Diğer hücrelere erişmek için pA[0], pA[1], pA[2], pA[3]… gibi kullanılabilir. Resimde görmek için tıklayınız.
Küçük bir program üzerinden anlatmaya devam edelim. Bu program aşağıda yazılan işleri sırası ile yapacaktır:
1. Stackden bir pointer yeri alacak
2. Sonra o pointer’a heapten aldığımız 5 int’lık yerin ilk adresini tutacak
3. Bu 5 elemanlı dizinin 5 elamanına (indisi^4) atanacak (ilk for)
4. Ve sonra Değer ler tek tek bastırılacak. (ikinci for)
Pointer-Örnek:
#include<iostream>
using namespace std;
int main ()
{
int* pIsaretci= new int [5];
for (int i = 0; i < 5 ; i++)
{
*(pIsaretci+i)=i*i*i*i; // i^4= i*i*i*i;
}
for (int i = 0; i < 5; i++)
{
cout<<"Deger "<<i<<"= "<< pIsaretci[i]<<endl;
}
return 0;
}

Resim: Program ekran çıktısı
Uygulamada işaretçi ile olan iki erişim yöntemini de kullandık.
1. *(pIsaretci+i)
2. pIsaretci[i]
Tek dereceli işaretçilerde kapalı parantezli yöntem daha anlaşılır ve kullanışlı oluyor.
Tüm içerik Abdullah Salih BAYRAKTAR tarafından hazırlanmıştır.