24 Nisan 2017 Pazartesi

SİSTEM MÜHENDİSLİĞİ (SYSTEM ENGINEERING)

Sistem mühendisliğinin temel görevi; grafiksel notasyonlar yardımı ile farklı açılardan bakarak bir sistemi modellemektir. 
Modeller mevcut sistemin analiz edilmesinde ya da yeni geliştirilecek bir sistemin özelliklerinin anlaşılmasını sağlamak için kullanılabilir. Yeni oluşturulacak bir sistemin modellenebilmesi için sistem paydaşlarından(stakeholders) bilgiler alınmalıdır. Bir projenin paydaşları en basit şekilde şirket içi ve şirket dışı paydaşlar olarak ayrılabilirler. Şirket içi paydaşlara örnek olarak projede ya da sistem inşasında bulunan diğer birimler, kişiler gösterilebilir. Şirket dışı paydaşlar ise müşteriler ya da son kullanıcılar olarak düşünülebilir. 

Bir sistem modellenirken 4 farklı perspektiften incelenmelidir. 
Harici (External) : Bu perspektiften sistemin dış görünüşü, kullanıcı ya da müşteri arayüzleri modellenmeye çalışılır. Sistem sınırlarının ve sistemin çalışacağı ortamın belirlenmesi bu basamakta yapılır.
Etkileşim (Interaction) : Bu perspektifte sistemin çevresi ve çevresi ile olan etkileşimleri modellenmeye çalışılmalıdır. Örneğin sistemin çevresi ise haberleşmesi vb.
Yapısal (Structural) : Sistemin statik yapısal özellikleri ve iç modülleri bu basamakta modellenmelidir. 
Davranışsal (Behavioral) : Sistemin etkilere verdiği tepkiler yani girdi kaynaklarından gelen bilgiler ile sistemin çalışma algoritmaları bu basamakta modellenmelidir. 

Yukarıda açıklanan modellemeler için genel bir standart olarak UML kullanılmaktadır. Bir sistemin modellenebilmesi için Activity, Use-case, Sequence, Class, State diyagramlarının oluşturulabilir. Bu şekilde em sistem özellikleri çıkartılmış hem de proje için bazı dokümanlar oluşturulmuş olur. Ayrı gerekli araçlara sahip isek bu modeller kullanılarak proje kodlarının belirli bir kısmıda oluşturulabilir. 


6 Şubat 2017 Pazartesi

ARM CORTEX-M

Cortex-M çekirdeğine sahip MCU'ler; tüketici elektroniği, düşük maliyetli endüstriyel kontrol uygulamaları, güç yönetim sistemleri, otomotiv elektroniği ve ses işleme gibi uygulamalara cevap verebilecek düşük maliyetli bir MCU ailesi oluşturmak amacı ile tasarlanmıştır. Bu aile içerisinde tasarlanan çekirdeklerin özelliklerinin kısaca inceleyeceğiz.

Cortex-M4

  • Cortex-M3 çekirdeğinin kontrol ve sinyal işleme yeteneklerinin arttırılması ile ortaya çıkmıştır. 
  • Cortex-M3 çekirdek özelliklerinin yanı sıra DSP (digital signal processing) eklentisi ve FPU (floating point unit) desteği mevcuttur. 
  • Integer işlem performansı M3 çekirdeği ile aynı olsa da DSP performansı açısından M4 çok daha verimlidir.
  • 32-bit çoklu çarpma (multiply-accumulate), MAC, ünitesine sahiptirler. Bu ünite sayesinde 16 ya da 32 bitlik sayıların birbirleri ile çarpımları tek işlemci çevriminde (single cycle) yapılabilmektedir. Bu özellik sayesinde CPU kaynak gereksinimi azaldığından enerji tüketimi düşmektedir. 
  • SIMD (single instruction multiple data) komutları ile özellikle sinyal işleme uygulamalarında çoğunlukla kullanılan filtre ve PID işlemleri verimli bir şekilde yapılabilmektedir. Kısaca açıklamak istersek tek çevrimde tek komutla 2(16-bit register) ve daha fazla - 4 (8bit register) - değişken aynı anda toplama ya da çıkarma işlemine sokulabilir. 
  • FPU sayesinde single-precision matematiksel işlemler ve veri transferi desteklenmektedir.

30 Ocak 2017 Pazartesi

XBEE (ZIGBEE) MODÜLLER

Xbee Nedir?


Xbee kartları birbirleri ile kablosuz haberleşebilen modüllerdir. Basit bir bağlantı ve ayardan sonra  bu haberleşme modülleri rahatça kullanabilir ve projelerinize yeni bir boyut kazandırabilirsiniz. Kısaca “Xbee nedir?” Sorusuna cevap verdikten sonra konu ile ilgili “Peki ama hangi Xbee?” Sorusuna cevap vermeye çalışalım şimdi de...

Xbee modülleri kullandıkları protokole, haberleşme frekansına, anten tiplerine ve güçlerine göre sınıflandırabiliriz. Bu kadar farklı sınıflandırmaya rağmen Xbee modullerin hepsi aynı pin dizilimine sahiptir. Bu da projenizi yaparken herhangi bir sorun yaşamanız durumda farklı güçte, farklı anten tipinde ya da farklı protokolde haberleşebilen bir modülü herhangi bir donanımsal değişiklik yapmadan eski modülünüzün yerine kullanabilmenize olanak sağlar. Fakat göz ardı edilememsi gereken bir konu da aynı pin dizilimine sahip olsalarda ileri seviye bazı özelliklerinin modüller arasında farklı özellikler göstermesidir.

Xbee Nedir, Zigbee Nedir?

Bilindiği gibi Xbee modüller Digi firması tarafından üretilmektedir ve 2.4GHz frekansında haberleşmektedirler.

Xbee : Series 1 olarak adlandırılan modüller IEEE 802.15.4 ağ protokolünü kullanmakta ve hızlı point-to-multipoint(bir noktadan çok noktaya) ya da peer-to-peer(birebir) iletişime izin vermektedir. Yüksek hızda veri alış verişine izin veren bu modülleri aldığınızda herhangi bir ayarlama yapmadan kullanabilmeniz mümkün(Tabi bazı ayarı yapmanız haberleşme kalitenizi arttıracaktır). Peer-to-peer iletişim için bu modüller daha hızlı ve daha iyi sonuç verdiğinden bu tarz bir iletişimde bu modülleri kullanmanızı öneririm. Bunun yanı sıra en önemli nokta bu modüller sadece Series 1 modüller ile haberleşebilmektedir. Farklı seride ya da haberleşme frekasında çalışan bir xbee ile haberleştirmeye çalışmanız boşa zaman kaybıdır, denemyin üzülürsünüz J

Zigbee : Series 2 modüller Zigbee olarak isimlendirilebilir. Bu isimlendirmenin temel sebebi bu modüllerin Zigbee protokolünü kullanmasıdır. Bu modüller ile mesh network(örgüsel ağ) kurulabilmektedir. Zigbee protokolü ile ilgili detaylı bilgiyi burada bulabilirsiniz.

ZB(Zigbee) modüller daha önce kullanılan Series 2 Z.Net modüllerin yeni bir firmware ile piyasaya sürülmesi ile kullanılmaya başlanmıştır. Eğer elinizde hala Z.Net modülünüz varsa bu modüle Zigbee modül firmware’ini yüklemeniz mümkün. Bu işlem için Z.Net to Zigbee linkindeki dosyayı indirip gerekli dokümanlardaki adımları izleyerek modülünüzdeki firmware’i güncelleyebilirsiniz. Bu modüllerde yine kendileri ile aynı haberleşme frekansına ve protokole sahip (yani Series 2) modüller ile haberleşebilmektedirler. Temel olarak iki kullanım modu vardır : Transparent mod ve API mod. Kısaca bu modları açıklamak istersek Transparent mod AT komutları ile kontrol edilebilen ve AT komutları kullanılmadığında gelen veriyi direk karşı tarafa transfer etmek için kullanılan moddur. API mod ise daha ileri seviye kullanıcılar için modül özelliklerine daha hakim bir ağı kontrol edebilmek için kullanılır. Gönderilecek veriler bir veri paketi içerisinde alıcı belirlenerek gönderilir. Bu veri paketleri içerisinde alıcı modüle AT komutları gönderilerek karşıdaki modül özellikleri ve davranışları kontrol edilebilir.

Series 2B modüller, Series 2 modüllerin donanımlarının geliştirilerek güç tüketimlerinin daha performanslı hale getirilmesi sonucu oluşmuşlardır. Yine Series 2 modüller gibi Zigbee protokolünü kullanırlar ve bu modüller ile haberleşebilirler.

900 Mhz Modüller : Bu modüller yukarıda açıkladığımız modüllerden farklı olarak 900MHz haberleşme frekansında çalışmaktadırlar. Bu sebeple Series 1, Series 2 ve Series 2B modüller ile haberleşemezler. Bu modüller iki farklı firmware ile piyasada satılmaktadır. İlk DigiMesh, ikincisi ise point-to-multipoint fakat hangisini alırsanız alın donanım olarak bir farklılık bulunamadığından firmware’ler birbirlerine dönüştürülebilir ya da yüklenebilir. Projenizdeki kullanım amacınıza göre istediğiniz firmware’i yüklemekte özgürsünüz. Tabi bu modüllerin en önemli özelliği 2.4 GHz’de çalışan yukarıdaki modüllere göre haberleşme mesafelerinin daha fazla olmasıdır. Tabi bunun doğal sonucu olarak veri aktarım hızınız diğer modüllerdeki gibi 250Kbps değil 156Kbps’a düşecektir.

XSC Modüller : Temel olarak 900MHz’lik modüller ile aynı olmakla birlikte haberleşme mesafesinin daha da arttırılması için tasarlanmış modüllerdir. Bu modüller ile birlikte yüksek kazançlı bir anten kullandığınızda yaklaşık 24km’lik bir haberleşme mesafesine sahip olabilirsiniz demek isterdim ama (datasheet’inde yazan bu) bu mesafe uygun hava koşulları uygun şartlar dümdüz bir arazi vs... gibi bir çok şartı beraberinde getiriyor J Tabi mesafe bu kadar uzamışken veri aktarım hızını düşürmemek olmaz 10Kbps ile sınırlısınız maalesef J

Kısaca modüllerin donanımlarını, firmware’larını ve protokollerini açıkladıktan sonra geçelim antenlere...

Chip Anten : Modüller üzerinde bulunan ufak chiplerdir, anten görevi görmek için tasarlanmıştır. Ama artık son zamanlarını yaşamaya başlamıştır PCB antenli modüller yaygınlaştığı için üretimleri durdurulma noktasına geldi L

PCB Anten : Çoğu wireless haberleşme modülünde, Usb wireless sticklerinizde ve diğerlerinde PCB üzerinde kendini belli eden adeta ben burdayım diye bağıran ve ucu herhangi bir yere bağlanmayan bir yol görmüşsünüzdür. Hııhh o işte PCB anten J

Wire Anten : Modüller üzerinde görebileceğiniz siyah ya da beyaz kaplamalı bir tel görürseniz o wire antendir. Uydu yokken özellikle öğrenci evlerinde kullanılan TV anteni yerine çatal sokma mantığının bir benzeridir. Tel işte deyip geçmeyin terminolojide adı dipol’dür bi hesabı kitabı vardır mutlaka J

u.FL : Antenden çok u.FL bağlantılı harici bir anteni bağlamanız için gerekli bağlantı konnektörüdür. Elinizde daha önceden kullandığınız u.FL bağlantılı bir anteniniz varsa ya da modülün antenini bir kutu dışına çıkartmak istiyorsanız kullanmanızı öneririm.

RPSMA : Bildiğimiz kablosuz modem antenlerine benzer antenleri bağlayabilmeniz için gerekli konnektörün bulunduğu modül tipidir. Yüksek kazançlı bir anten kullanarak haberleşme mesafenizi arttırabilir ya da küçük Xbee modüllere kendinin bir kaç katı büyük anten takarak elalemin içinde modülünüze heybet katabilirsiniz.

Bazı Sorulara Cevaplar

Series 1 modüller series 2 modüllerle haberleşebilir mi?
Hayır haberleşemez. Series 1 modüller sadece series 1 modüller ile haberleşebilir. Piyasa şu anda Series 1 olarak satılan 1mW’lık ve 60mW’lık modüller bulunmaktadır. Bu modüller kendi aralarında haberleşebilir. Series 2 modüllerde kendi aralarında ve Series 2B modüller ile haberleşebilir. Series 2 ya da 2B olarak piyada şu anda 2mW ve 50mW’lık modüller satılmaktadır.

Güç ya da anten çeşidi farklı olurda modüller haberleşebilir mi?
Evet haberleşebilir. Haberleşme için gücün ya da anten çeşidinin bir önemi yoktur önemli olan kullanılan protokol ve haberleşme frekansıdır. Örneğin 2mW’lık PCB antenli bir modül ile 50mW’lık RPSMA antenli bir modül haberleşebilir. Aynı durum 1mW’lık ve 60mW’lık modüller içinde geçerlidir.

Peki 900MHz’lik modüller 2.4GHz’lik modüllerle haberleşebilir mi?
Bu soruyu sorulmamış kabul etmek isterdim ama bunu da sordular. Haberleşmez, haberleşebilemez...

Elimde eskiden aldığım Z.Net modüller var, bu modüller artık işe yaramaz mı oldu?
Hayır Z.Net modülleri Zigbee firmware versiyonuna yükseltebilirsiniz. Aynı şekilde Zigbee firmware’na sahip modülleride Z.Net’e çevirmeniz mümkün.

Xbee ile kameradan görüntü aktarabilir miyiz?
Aktarabilirsiniz ama çok kaliteli ve hızlı bir sistem beklemeyin bol bol donacaktır ve çok az frame gönderebilirsiniz haberiniz olsun.

ARDUINO UNO VE L298 İLE STEP MOTOR SÜRME

Bildiğiniz gibi bipolar step motorlarda 4 adet kablo bulunmaktadır. Genellikle bu kablo renkleri sabit olmakla birlikte eğer farklı renklerde kabloları olan bir step motora sahipseniz motor datasheetinden fazlara karşılık gelen kablo renklerini bulmanız mümkün. Bizim kullandığımız step motor 1.8 derece adım açısına sahip 12V ve anma akımı 330 mA olan bir servo motor...

Şimdi bağlantıları nasıl yapacağımıza bakalım:

Kablo Rengi
Kablo Harf Karşılığı
Motor Sürücü Pini
Kırmızı
A
OUT1
Yeşil
C
OUT2
Sarı
B
OUT3
Mavi
D
OUT4

Tablodaki şekilde motor kablolarını DC motor sürücümüzün çıkışlarına bağladıktan sonra, motor için gerekli beslemeyi de harici olarak pil ya da benzeri bir kaynaktan alabilirsiniz. Burada dikkat etmeniz gereken motor beslemesini Arduino'dan almamanız aksi takdirde kartınızı yakabilirsiniz.

Bağlantıları yaptıktan sonra aşağıdaki programı yükleyerek motorunuzun dönüşünü izleyebilirsiniz.

#include <Stepper.h>
#define STEPS 200  // motor 1.8 derece oldugundan 360/1.8
Stepper stepper(STEPS, 12, 13);  // yon pinleri dc motor surucude 12 ve 13. pinler
void setup() {
  // motor surucu pwm pinleri enable olarak kullanilacak
  pinMode(3,OUTPUT);
  pinMode(11,OUTPUT);
  stepper.setSpeed(30);
  digitalWrite(3,HIGH);
  digitalWrite(11,HIGH);
}

void loop() {
  // motor 200 adim ileri (1 tur)
  stepper.step(200);
  delay(1000);
  // motor 200 adim geri (1 tur)
  stepper.step(-200);
  delay(1000);
}

Kodda görüldüğü gibi Arduino Step motor kütüphanesini kullandık, kullandığımız motor sürücü de L298'in input pinleri 2 adet dijital pin ile kontrol edildiğinden Stepper stepper(STEPS,12,13); şeklinde sadece iki adet yön pini kullandık.

Anma gerilimi 5V dan düşük olan motorlarınız için başka step motor sürücüleri kullanmanızı öneririm. L298 lojik besleme gerilimden daha yüksek bir motor besleme gerilimi ile çalıştığından bu tip durumlarda size sıkıntı çıkartabilir.

ARDUINO UNO VE A4983 İLE STEP MOTOR KONTROLÜ

Bu projemizde 12V 330mA'lik bir bipolar step motoru A4983 step motor sürücü kullanarak kontrol edeceğiz. Kontrol ederken motor yönü için iki adet buton kullanacağız. Kısaca sistemin yapacağı butona basılı tutuldukça motoru döndürmek olacak. Diğer butona basıldığında da motor diğer yöne dönecek. Basit şekilde A4983 bağlantılarına bakacak olursak,


VMOT ve GND pinleri motor besleme pinleridir. Bizim motorumuz 12V olduğu için besleme olarak 12V kullanacağız. Motor çıkışları 1A,1B,2A,2B şeklinde gösterilmiş. Aşağıdaki şekil ile karşılaştıracak olursa ;
1A --> Faz A Kırmızı Kablo
1B --> Faz C Yeşil Kablo
2A --> Faz B Sarı Kablo
2B --> Faz D Mavi Kabloya bağlanacak.

Motor kablolarının altındaki GND pini de Arduino GND pinine bağlamamız gerekiyor. Bu şekilde Arduino, Motor Sürücü ve Besleme Kaynağı arasındaki GND birleştirmesi oluşmuş olacak. Bu motor sürücü üzerinde regülatör olduğundan A4983 ve Arduino için gerekli olan 5V beslemeyi motor sürücüden alabiliriz. Bununu için aşağıdaki resimde bulunan 5V besleme jumper'ını kısa devre etmemiz gerekiyor.


Şekildeki gibi kartın sol üst köşesindeki GND ve 5V pinlerini Arduino'nun 5V ve GND pinlerine bağlayarak Arduino için gerekli beslemeyi de sağlamış olduk. Enable pinini Arduino UNO'nun dijital 4. pinine, STEP pinini dijital 3. pine, DIR pinini de dijital 2. pine bağladıktan sonra motorumuzu sürmek için gerekli bağlantıları tamamlamış olduk. Micro step adımlama kullanmak isteyenler bu pinleri de dijital pinlere bağlamalılar. Motor kontrol için kullanacağımız iki adet butonu da Arduino UNO'nun dijital 7 ve 8. pinlerine bağlayarak bağlantılarımızı bitirmiş olduk.


Arduino Kodu : 

int yon = 2;  // DIR
int ste = 3; // STEP
int en = 4; // ENABLE
int button_up = 7; // BUTTON 1
int button_down = 8; // BUTTON 2

void setup(){
  pinMode(en,OUTPUT);
  pinMode(yon,OUTPUT);
  pinMode(ste,OUTPUT);
  pinMode(button_up,INPUT);
  pinMode(button_down,INPUT);
  digitalWrite(en,LOW); // ENABLE PINI LOW AKTIF
}

void loop(){
  // BUTTON 1 E BASILI TUTULDUGU SURECE ILERI DOGRU DON
  if(digitalRead(button_up) == HIGH){
    delay(50);
    if(digitalRead(button_up) == HIGH){
      digitalWrite(yon,HIGH);  // YON ILERI
      while(digitalRead(button_up) == HIGH){
        digitalWrite(ste,HIGH);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
        digitalWrite(ste,LOW);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
      } 
    }
  }
  // BUTTON 2 YE BASILI TUTULDUGU SURECE GERI DOGRU DON
  if(digitalRead(button_down) == HIGH){
    delay(50);
    if(digitalRead(button_down) == HIGH){
      digitalWrite(yon,LOW);  // YON GERI
      while(digitalRead(button_down) == HIGH){
        digitalWrite(ste,HIGH);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
        digitalWrite(ste,LOW);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
      }
    }
  }
}

ARDUINO UNO

Arduino Uno, ATMEGA328 mikrodenetleyicisi tabanlı bir geliştirme kartıdır. 14 adet dijital giriş çıkış pinine ( 6 adet PWM pini) ve 6 adet analog giriş pinine sahiptir.
Bu geliştirme kartının en önemi avantajlarından biri geliştirme kartına gerek olmaksızın direk olarak USB'den programlanabilme ve düşük akım gerektiren işlemler için USB beslenebilme özelliğidir. Bunun yanı sıra 7 ile 12V arasında çıkış verebilen bir adaptör ile de beslenebilir. Adaptör girşinden ya da Kart üzerinde bulunan Vin pininden 12V'a kadar besleme verilebilir. 
Kart üzerinde bulunan ATMEGA328 işlemcisi 32KB Flash, 2KB SRAM, 1KB EEPROM belleklerine sahiptir. 


Arduino UNO Pinleri

Vin : 7 - 12V arasında besleme giriş pinidir. Adaptör girişinden karta besleme verildiğinde aynı gerilim değeri bu pinde de görülebilir. Örneğin adaptör girişinden karta 12V verdiğinizde Vin pininde göreceğiniz gerilim değeri yaklaşık 12V'dur(adaptör girişi ile bu pin arasında akım koruma için bir adet diyot konulmuştur bu diyotun yönü sebebi ile kartı Vin pininden beslediğinizde adaptör girişinde verdiğiniz besleme değerini göremezsiniz).
5V/IOREF : Bu iki pin kart üzerinde kısa devredir. Bu pinlerden 5V vererek kartı besleyebilirsiniz. Kartı harici bir adaptör ile , Vin pininden ya da  USB'den beslediğinizde bu pinlerden 5V çıkış alabilirsiniz.
RESET : Mikrodenetleyicinin reset pinidir. Bu pini 0V(GND)'a çektiğinizde mikrodenetleyici içerisindeki kod baştan başlayacaktır. Flash ve EEPROM belleklerde olan değerler kaybolmayacak ve değişmeyecektir fakat RAM değerleriniz sıfırlanacaktır.
3.3V : Kart üzerinde bulunan regülatör sayesinde kartı herhangi bir güç girişinden beslediğinizde bu pinden 3.3V 50mA çıkış alabilirsiniz. Bu pin sadece çıkış içindir bu pinden 3.3V vererek kartı besleyemezsiniz. 
GND : 0V referans voltajı yani bildiğimiz ground(toprak) pini :)
0(Rx) : UART Rx pinidir. Seri haberleşme(TTL UART, RS232 değil) işlemleri yapılırken kullanılır. Seri haberleşme için kullanılmadığından normal bir dijital giriş çıkış pini olarak kullanılabilir.
1(Tx) : UART Tx pinidir. Seri haberleşme(TTL UART, RS232 değil) işlemleri yapılırken kullanılır. Seri haberleşme için kullanılmadığından normal bir dijital giriş çıkış pini olarak kullanılabilir.
2 : Dijital giriş çıkış pinidir, harici kesme kaynağı pini olarak da kullanılabilir.
3 : Dijital giriş çıkış pinidir, harici kesme kaynağı ya da PWM pini olarak da kullanılabilir.
4 : Dijital giriş çıkış pinidir.
5 : Dijital giriş çıkış pinidir, PWM pini olarak da kullanılabilir.
6 : Dijital giriş çıkış pinidir, PWM pini olarak da kullanılabilir.
7 : Dijital giriş çıkış pinidir.
8 : Dijital giriş çıkış pinidir.
9 : Dijital giriş çıkış pinidir, PWM pini olarak da kullanılabilir.
10 : Dijital giriş çıkış pinidir, SPI protokolü kullanılırken CS(Chip Select) pini olarak ya da PWM pini olarak da kullanılabilir.
11 : Dijital giriş çıkış pinidir, SPI protokolünde MOSI(Master Out Slave In) pini olarak ya da PWM pini olarak da kullanılabilir.
12 : Dijital giriş çıkış pinidir, SPI protokolünde MISO(Master In Slave Out) pini olarak da kullanılabilir.
13 : Dijital giriş çıkış pinidir, kart üzerinde bu pine bağlı  bir led bulunmaktadır. İlk denemenizi yaparken bu pini kullanabilirsiniz. 
GND : GND : 0V referans voltajı yani bildiğimiz ground(toprak) pini :) (13. pinin yanındaki)
AREF :  Analog referans gerilimi, analog dijital çevirici pinleri kullanılırken bu pinde görülen gerilim değeri referans alınarak bu değere göre hesaplamalar mikrodenetleyici tarafından yapılmaktadır. Bağlantısız bırakıldığında referans değer 5V olarak alınmaktadır. 
SDA : A4 pini ile kısa devredir.10 bit çözünürlükte ADC(Analog Digital Converter) pini olarak ya da I2C protokolünde SDA(Serial Data) pini olarak da kullanılabilir.
SCL : A5 pini ile kısa devredir.10 bit çözünürlükte ADC(Analog Digital Converter) pini olarak ya da I2C protokolünde SCL(Serial Clock) pini olarak da kullanılabilir.
A0 : 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir.
A1 : 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir.
A2 : 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir.
A3 : 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir.
A4: 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir. Ayrıca bakınız SDA...
A5 : 10 bit çözünürlükte ADC pinidir. ADC pini olarak kullanılmadığında dijital giriş çıkış pini olarak da kullanılabilir. Ayrıca bakınız SCL...

ARDUINO NEDİR?

Arduino temel olarak fiziksel sensörlerden veri alabilmeniz ve fiziksel çıktılar yaratabilmek için kullanabileceğiniz küçük bir bilgisayardır. Biz bu mini bilgisayarlara mikroişlemci ya da mikrokontrolör diyoruz. Mikroişlemci ile mikrokontrolör arasındaki farkı basit bir şekilde açıklamak istersek bir bilgisayarın işlemcisi mikroişlemci, bilgisayar ana kartınız ve hard diskinizin birleşimi ise bir mikrokontrolördür diyebiliriz. Bu noktada Arduino üzerinde bir mikrokontrolör bulunan bir prototip geliştirme kartıdır. Arduino’yu benzerlerinden ayıran en büyük özellik donanımın(PCB) ve yazılımın açık kaynak kodlu olmasıdır. Ayrıca Arduino’da istediklerinizi yapabilmek için yazmanız gereken programı oluşturduğunuz arayüzde tamamen ücretsiz ve açık kaynak kodludur.
Arduino etkileşimli nesneler geliştirmenize, çeşitli sensör ve anahtarlardan girdiler almanızı, motor, lamba, led... gibi çıktı ürünlerini kontrol edebilmenize yardımcı olur. Basit bir örnek olarak bir ışık sensöründen girdi alarak bu sensörden gelen girdiye göre ledleri açıp kapatma yoluyla kendi gece lambanızı yapabilirsiniz. Bunun yanında kendi bilgisayarınızda oluşturacağınız bir arayüz ile Arduino ile haberleşerek girdi ve çıktılarınızı bilgisayarınız üzerinden kontrol edebilirsiniz.

Neden Arduino?

Piyasada bulabileceğiniz pek çok benzer mikrokontrolörler ve bu mikrokontrolörler ile oluşturulmuş geliştirme kartı bulunmaktadır. Bunlara nazaran Arduino’yu öne çıkartan başlıca özellikleri;
  • Kullanımının kolay olması,
  • Programlayıcı gerektirmeden USB üzerinden programlanabilmesi,
  • Benzerlerine göre Arduino’nun daha ucuz olması,
  • Tüm işletim sistemlerinde çalışabailmesi,
  • Basit ve kolay kullanılabilir bir programlama arayüzü olması,
  • Açık kaynak kodlu bir geliştirme kartı olmasından dolayı çok fazla dokümana, örnek projeye ve ücretsiz kütüphaneye sahip olması,

olarak sıralanabilir. Sizde bu kolaylıklarla tanışmak isterseniz google’da Arduino diye aratmanız yeterli olacaktır. Şimdiden iyi eğlenceler...

SUBVERSION KULLANIMI - 2

Subversion Kullanımına Başlarken Veri Havuzu Oluşturma

Bir projeye başlamadan önce o proje için SVN sunucunun kontrol edebileceği ve kodlarımızın güvenle saklanabileceği bir veri havuzuna ihtiyaç duyulmaktadır. Kullanıcı sabit diski üzerinde yerel bir veri havuzu oluşturulabilir bu şekilde kişisel projelerinizde sunucuya gerek kalmadan TortoiseSVN programını kullanabilirsiniz.

Öncelikle sabit diskiniz üzerinde boş bir klasör açmanız gerekmektedir. Daha sonra bu klasör üzerinde sağ fare tuşu ile tıklayarak “Create respository here” komutunu çalıştırmanız gerekmektedir. Bu işlemden sonra boş klasörümüz SVN programı için yerel veri havuzu olarak kullanılacaktır.


Proje Ekleme

Veri havuzu oluşturulduktan sonra , izlenilmek istenen dokümanları veri havuzuna eklememiz gerekmektedir. İzlenilmek istenen dokümanın bulunduğu klasör üzerinde sağ tıklayarak “import” komutunu çalıştırmamız gerekmektedir.

Bu komut işletildikten sonra dokümanın ekleneceği veri havuzunun belirlenebilmesi için bir diyalog kutusu karşımıza çıkmaktadır. Bu diyalog kutusunda “URL of respository” kısmına kullanacağımız veri havuzunun adresi girilmelidir. Biz yerel bir veri havuzu kullandığımız için file:///c:/Users\ugur\Desktop\svn_repo/trunk/project şeklinde bir yol göstermemiz gerekmektedir. Bu şekilde izlemek istediğimiz dokümanımızın olduğu “project” klasörü içerisindeki dosyalarımız veri havuzumuzda “trunk” klasörü altına atılmış olacaktır.

Bu penceredeki diğer bir bölme ise “Import Message” bölmesidir. Bu kısma eklemek istediğiniz proje ile iligli notlar ekleyebilirsiniz. Dikkat etmeniz gereken en önemli nokta URL girilirken yerel veri havuzu kullanıyorsanız file:/// şeklinde bir belirteç kullanmanızdır.

Çalışan Kopya Kontrolü

Veri havuzuna dosyalarımızı ekledikten sonra bu dosyalar üzerinde işlem yapmaya başlayabiliriz. Burada önemli olan nokta dosyaların otomatik olarak güncellenmediğini göz ardı etmemektir. Şimdi yapacağımız değişiklikler ve takipler için bir klasör oluşturup bu klasör içerisinde “Checkout” komutunu çalıştırmamız gerekmektedir. Checkout işleminden sonra dokümanımızın çalışan kopyası klasörümüze indirilmiş olacaktır. Bu kısımda görüleceği gibi veri havuzumuzdan çekilen her dosya üzerinde yeşil bir tik işareti olacaktır. Bu işaret dosyanın import edilen versiyon ile aynı olduğunu göstermektedir.

Şimdi indirdiğimiz dosya üzerinde bir değişiklik yapalım ve bu değişikliği kaydedelim. Değişiklik kaydedildikten sonra dosya üzerindeki yeşil tik işareti kırmızı ünlem işaretine dönüşecektir. Bu işaret bize veri havuzundaki dosya ile çalışan kopya olarak indirdiğimiz dosyanın farklı olduğu göstermektedir.


Dosyada Yapılan Değişiklikleri Kontrol Etmek

Dosyada yapılan değişiklikleri görebilmek için dosyamızın üzerine sağ tıklayıp “Diff” komutunu çalıştırmamız gerekmektedir.


Dif komutu çalıştırıldıktan sonra şekildeki  pencere açılacaktır. Pencerenin sol tarafında dosya içeriğimizin eski hali sağ tarafında ise yeni hali görülmektedir. Yapılan değişiklik bir alt satıra geçip “hacettepe bilisim” satırının eklenmesidir. Görüldüğü gibi eklenen satırın başında artı işareti bulunmaktadır.

Bu aşamadan sonra değişiklik yaptığımız dosyamızın yeni halini veri havuzuna göndermek için “Commit” komutu çalıştırılmalıdır. Commit komutu çalıştırıldıktan sonra dosyamız üzerindeki kırmızı ünlem işareti tekrar yeşil tik işaretine dönüşecektir.

Dosyamızı commit ettikten sonra bir önceki versiyon ile arasındaki farkları görebiliriz. Böyle bir durumda “Dif with previous version” komutu çalıştırılarak önceki versiyon ile aradaki farklar görülebilmektedir. Bununla birlikte “Show log” komutu ile dosya ile ilgili yapılan bütün değişiklikler tarih, saat ve değiştiren kişi bilgileri ile birlikte görülebilmektedir.

Yapılan Değişiklikleri Geri Almak

Dosyada yapılan değişiklikleri geri almak için Show log komutu ile karşımıza çıkan pencere istediğimiz versiyon üzerinde sağ tıklayarak “Revert to this edition” komutunu kullanarak dosyamızı eski haline geri döndürebiliriz. Bu işlemi yaptıktan sonra dosyamızı veri havuzuna tekrar commit etmemiz gerekmektedir.


TortoiseSVN Tarafından Kullanılan Simgeler


Normal : Veri havuzu ile aynı revizyonda ve durumda olan dosya anlamına gelir.
Readonly : İstemci tarafından sadece okunabilir dosya anlamına gelir.
Modified : İstemci tarafından değiştirilmiş ve henüz commit edilmemiş dosya anlamına gelir
Locked : Dosyanın istemci tarafından kilitlenip diğer istemcilerin erişimine kapatıldığı anlamına gelir. Deleted : Sunucudan silinmiş dosya anlamına gelir.
Added : Sunucuya eklenmek için zamanlanmış dosya anlamına gelir.
Ignored : Versiyon sistemi tarafından göz ardı edilmiş dosya anlamına gelir. Bu tür doya içn bir versiyonlama işlemi yapılmaz.
Non-versioned : Versiyon kontrol sistemine dahil edilmemiş fakat sunucuda bulunan dosya anlamına gelir.
Conflicted : Sunucuya update sırasında çakışma olan dosya anlamına gelir.


SUBVERSION KULLANIMI

Öncelikle kullanılacak SVN arayüzü seçilmelidir. SVN sunucudan kod ya da dokümanları çekebilmeniz için çeşitli arayüzler tasarlanmıştır. Bu arayüzler kullanılan işletim sistemine ve yazılım geliştirme platformuna göre değişiklik gösterebilir. Örn : TortoiseSVN, VisualSVN, UberSVN vb.

Anlatım aşamasında şu anda en yaygın olarak kullanılan TortoiseSVN arayüzünü referans alınacaktır. Öncelikle bir SVN sunucuya ihtiyaç duyulmaktadır. SVN sunucu olarak Google Code ya da SourceForge gibi bilinen alanların da kullanılabildiği gibi, http://beanstalkapp.com adresinden küçük bir ücretsiz SVN sunucusu da elde edilebilinir. Eğer tek başınıza çalışıyorsanız ya da profesyonel bir amaç ile kod yazmıyorsanız belleğinizden yerel bir veri alanını da kullanabilirsiniz. SVNServer alanınızı ayarladıktan sonra http://tortoisesvn.net/downloads.html linkinden işletim sisteminize uygun TortoiseSVN programını indirip kurabilirsiniz.

Programı kurduktan sonra sunucudan çekilecek dosyalar için bir klasör açıp bu klasörü ”create respository here” komutu ile ilgili klasörü SVN klasörü haline getirilmesi gerekir.

SVN Komutları

Yerel SVN klasörü oluşturulduktan sonra aşağıdaki SVN komutlarını kullanmaya başlayabilirsiniz.
Import : Halihazırda Svn’de yer almayan bir projeyi Svn sunucusuna göndermek için kullanılan komuttur.
Checkout : Svn’de yer alan bir projenin çalışan kopyasını yerel klasörünüze almak için kullanılan komuttur.
Export : Svn’de yer alan bir projenin çalışan kopyasını almadan ilgili dosyayı yerel diskinize kopyalamak için kullanılan komuttur.
Commit : Dosyanızın çalışan kopyası üzerinde yaptığınız değişiklikleri SVN sunucusuna göndermek için kullanılan komuttur
Update : Dosyanızın çalışan kopyasının sunucudaki versiyonu ile senkronize edilmesi için kullanılan komuttur.
Branching/Tagging : Genel pratik olarak kaynak kodunuzun en güncel hali Trunk klasörü altında tutulmaktadır. Geliştirme sırasındaki tüm değişiklikler Trunk klasörü altında gerçekleştirilir. Kullanıma hazır hale gelen versiyonlar ise Tag klasörü altında versiyon numarası bazında açılan klasörlerde arşivlenir. Taglar genel olarak değiştirilmezler ve arşivleme amaçlı kullanılırlar. Deneysel amaçlı çalışmalar ise Branches klasörü altında tutularak denemeler bu klasör altında bulunan dosyalarda gerçekleştirilir.
Revert : Dosyanızın istenilen bir revizyona döndürülmesi için kullanılır.
Diff : Güncel dosyanız ile diğer versiyonlar arasındaki farklılıkları görebilmeniz için kullanılır.
Show Log : Üzerinde çalışan dosyada ne zaman ve kim tarafından değişiklik yapıldığını gösterir.
Export : Çalışan kopyalarınızın bulunduğu klasörden farklı bir klasöre versiyon bağımsız olarak
dosyaları alabilmeniz için kullanılır.
Get Lock : Üzerinde çalıştığınız dosyayı kilitleyerek diğer istemcilerin bu dosya üzerinde değişiklik yapmasını önleyebilmeniz için kullanılır.

SVN - Veri Havuzu

Subversion bilgi paylaşımı için merkezileştirilmiş bir sistemdir ve bu sistemin çekirdeğini veri havuzu (respository) oluşturmaktadır. Veri havuzu ilgili bilgileri ağaç dosya yapısı ile tutmaktadır. Sınırsız sayıda istemci bu veri havuzuna bağlanarak buradaki dosyalar üzerinde okuma ve yazma işlemi gerçekleştirebilir.

Subversion veri havuzunu normal bir dosya sunucusundan ayıran en büyük özellik dosyalarda yapılan bütün değişikliklerin tutulmasıdır, hatta bu tutulan değişiklikler arasında dosyaların silinmesi yeniden adlandırılması ve yerlerinin değiştirilmesi de bulunmaktadır.

Subversion dosyaların tutulmasında kopyala-değiştir-birleştir yapısını kullanmaktadır. Bu modelde her istemci veri havuzundan çalışan bir kopyayı kendi veri alanına çekerek gerekli işlemleri yapmaktadır. Bu şekilde istemciler paralel bir şekilde çalışabilmektedirler. İstemciler kendi değişikliklerini yaptıktan sonra dosyaları birleştirerek son halini verebilmektedirler.


SVN - Çalışan Kopya

Subversion çalışan kopya dosyaları basit bir ağaç dizini yapısı içinde bulunan dosyalardan oluşmaktadır. Bu dosyalar istemci tarafından istenildiği gibi değiştirilebilmektedir. Yapılan bu değişiklikler istemci isteyene kadar diğer istemcilere yansıtılmaz.

Çalışan kopya dosya dizini içerisinde bazı ekstra dosyalarda bulunmaktadır. Bu dosyalar Subversion tarafından oluşturulan ve subversion komutlarının çalıştırılabilmesi için gerekli olan dosyalardır.


SVN – Veri Havuzu URL’leri

Subversion URL’leri standart bir söz dizimi kullanmaktadır. Sunucu adı ve port numarası URL’nin bir parçası olabilmektedir. file:// erişim metodu genellikle yerel erişim için kullanılır ayrıca bir network ana makinesi üzerinden file://hostname/path/to/repos şeklinde kullanılan UNC dizinlerinde de kullanılmaktadır. Yerel makineler için ana makine adı yerine yerel makine adı kullanılmalı ya da file:/// kısmı üçlü slash ile gösterilmelidir.

SVN –Revizyonlar

Dosyalar üzerinde yapılan değişiklikler ya hep ya hiç mantığı ile yapılmaktadır. Yapılan değişikliklerin tamamı dosya üzerinde uygulanamaz ise hiç bir değişiklik yayınlanamayacaktır.


Yayınlanan her değişiklik veri havuzunda farklı bir ağaç yapısı oluşturacak ve bu yapıya yeni bir numara verilecektir. Oluşturulan bu yeni yapı revizyon olarak adlandırılmaktadır. Numaralandırma işlemi her oluşturulan ağaç yapısı için bir önceki numara bir arttırılarak yapılır.


Revizyon numaraları oluşturulan ağaç numaralarının dizi numarası olarak da düşünülebilir. Boş klasör yerleştirildiğinde adres sıfır olarak işaretlenir. İlk dosya eklemesi ile birlikte adres yani versiyon bire yükseltilir.


Branching/Tagging/Merge

Versiyon kontrol sisteminin bir başka yeteneğide bir dosyayı bölebilme ve dosyanın geri kalanına dokunmadan değişiklikleri bölünen yeni dosya üzerinde yapabilme yeteneğidir. Genellikle yazılım test aşamalarında çıkan hataların dağıtılarak revize edilmesi için kullanılır. Küçük modüller halinde gruba dağıtılan bu hatalar düzeltilerek tekrar ana kod ile birleştirilebilir. Bu dağıtma işlemine Subversion Branching adını vermektedir. Dağıtılan bu parçaların birleştirilmesi ise Merge olarak adlandırılır.

Olası Hatalar

Commit işlemi sırasında eğer çalışan kopyanızın revizyon numarası ile sunucudaki revizyon numarası farklı ise hata alırsınız. Böyle bir durumda Update işlemi yapmak zorundasınız. Update işleminden sonra sizin çalışan kopyanız ile sunucudaki kopya farklı ise dosyanız “conflict” olarak işaretlenecektir. Böyle bir durumda dosyanızın iki adet kopyası diskinize yazılacaktır. Bunlardan biri sunucudaki versiyonu diğeri ise sizin çalışan kopyanızdır.


Bu çakışma durumu düzeltmek için dosyaları karşılaştırıp farklılıkları kendiniz düzeltmeniz gerekmektedir. Gerekli düzeltmeler yapıldıktan sonra TortoiseSVN’de “Resolved” fonksiyonunu kullanarak çakışma durumunun düzeltiği programa bildirilmelidir. Çakışma durumu düzeltildikten sonra yeni dosyanızı Svn sunucusuna “commit” edebilirsiniz.

SUBVERSION

Subversion Nedir?

Subversion ( SVN ) bir sürüm / versiyon takip sistemidir. SVN bir yazılımın, bir proje ilgili dokümantasyonların, kişisel ya da kurumsal belgelerin sürümlerinin yönetilebilmesi ve izlenebilmesi için kullanılmaktadır. CVS (Concurrent Versions System) programının eksik yönlerinin giderilmesi ve kararlı bir yapı oluşturulması amacı ile geliştirilmiştir. Basit anlamda SVN üzerinde çalışılan dosyaları internet ortamında tutar ve izin verilen kullanıcıların bu dosyaları kullanmalarını, değiştirmelerini yada silmelerini sağlar.

SVN 2000 yılında CollabNet firması tarafından açık kaynak kodlu olarak geliştirilmeye başlanmış ve 2001 yılında ilk sürümünü yayınlamıştır. 2007 yılında Apache bünyesine dahil edilmiş ve 2010 yılında top-level Apache projesi haline gelmiştir.

SVN Özellikleri

  • CVS’nin birçok özelliğini bünyesinde barındırır,
  • Dosyalar gibi dizinlerinde versiyonlarını oluşturur,
  • Kopyalama, silme, değiştirme, isim değiştirme gibi durumlarda SVN tarafından yeni versiyon numaraları oluşturulur.
  • CVS’ye göre daha hızlı çalışmaktadır,
  • Dosya kilitleme ve izin belirleme seçenekleri mevcuttur,
  • Dosya üzerinde yapılan değişikliklerin ve kullanım zamanlarının bilgileri tutulur ve takip edilebilir,
  • Eski versiyon bir dosya indirilebilir ve diğer versiyonlar ile aradaki farklar görülebilir,
  • Atomik commit özelliği yerelde yapılan değişikliklerin hep birlikte aktarılmasını sağlar,
  • Dosyaların Apache webserver üzerinden her yerden erişilebilir hale gelmesini sağlar,
  • Svnserve komutu ile SVN, versiyon kontrol server’ı olarak görev yapabilir.

29 Ocak 2017 Pazar

VERSİYON KONTROL SİSTEMLERİ


Versiyon kontrol sistemleri çalışma şekillerine göre sınıflandırılabilmektedir. Sadece yerel disk üzerinde lokal olarak çalışabilen sistemler olduğu gibi, bir sunucu üzerinden çalışan sistemler ve bu iki durumu birleştirecek şekilde çalışan sistemler de bulunmaktadır. 

Sadece Lokalde Çalışan Sistemler

Bu şekilde çalışan sistemlerde bir sunucu uygulaması yoktur. Versiyon kontrolü yapılacak belge ve dokümanlar yerel diskte lokal olarak saklanmaktadır.


RCS(Revision Contol System)

RCS depolama, geri alma, dosya günlüğü tutma ve revizyon birleştirme gibi işlemleri yapabilen bir revizyon takip programıdır. Sık revizyon yapılan programlar ve dokümanlar için kullanışlıdır. RCS sadece tek bir dosya üzerinde çalışmaya imkan vermektedir. Bir proje toplu olarak kontrol edilememektedir. Söz diziminin hantal olması bu sistemin kullanılışını azaltmaktadır.


CCS(Source Code Control System)

SCCS Revizyon Kontrol Sistemi (RCS) serbest bırakılana kadar Unix için baskın sürüm kontrol sistemi olarak kullanılmıştır. Bugün, SCCS genellikle eski olarak kabul edilir. Ancak, dosya biçimi hala BitKeeper ve TEAMWARE dahil olmak üzere diğer birkaç revizyon kontrolü programı tarafından dahili olarak kullanılmaktadır.


İstemci-Sunucuda İlişkisi İle Çalışan Sistemler

Bu şekilde çalışan sistemlerde dosyalar bir sunucuda tutulmaktadır. Kullanılmak istenen dosya sunucudan alınarak gerekli işlemler yapıldıktan sonra tekrar sunucuya gönderilir. Takım çalışması şeklinde geliştirilen projeler için yaygın şekilde kullanılmaktadır.

CVS(Concurrent Versions System)

CVS programı yazımızın ana konusu olan SVN programının temelini oluşturmaktadır. CVS’nin özelliklerini kısaca sıralarsak;
  • Açık kaynak kod olarak geliştirilmiş bir yazılımdır,
  • Kaynak kodların takibini kolaylaştırır,
  • Kaynak kodların tek merkezde depolanmasına ve yönetilmesine izin verir,
  • Kaynak kodların ya da kod parçalarının istenilen sürümlerine ulaşabilmenize ve üzerinde değişiklik yapmanıza olanak verir,
  • Kaynak kodların bütün sürümlerinin tutulması fazlaca disk alanına gereksinim duyacağından
  • CVS de tüm sürüm dosyaları değil sürümler arası değişiklikler tutulur,
  • Bir dosyaya birden fazla kişi tarafından erişilebildiğinden, yapılan değişiklikler herkes tarafından görülebilir ve istenilen dosya da değişiklik yapılabilir.

Dağıtık Şekilde Çalışan Sistemler

Dağıtık sürüm kontrol sistemleri daha yeni geliştirilmeye başlanmış ve daha esnek bir yapıya sahiptir. Merkezi sürüm kontrol sistemleriyle yapabilen hemen her şey dağıtık sürüm kontrol sistemleriyle de yapılabilmektedir. Dağıtık sürüm kontrol sistemlerinde, sunucu-istemci yapısına alternatif olarak, sürümlemeler için sunucuya bağlı olmak gerekli değildir. Dağıtık sürüm kontrol sistemlerinde de bir sunucu olabilir. Bu sistemlerde yazılımcı hazırladığı sürümleri lokal makinesinde belirleyebilir ve zamanı geldiğinde sunucu ile eşleştirebilir ayrıca takım arkadaşlarının sunucuya gönderdiği değişiklikleri kendi makinesindeki kodlarına kolaylıkla uygulayabilir.

Git

Git versiyon kontrol programının özeliklerine kısaca bakacak olursak,
  • Fonksiyonel açıdan SVN’e benzerlik göstermektedir. Kullanım açısından en az SVN kadar kolay ve görevleri daha basit hale getiren bir kullanıcı arayüzüne sahiptir.
  • Sadece belirlenen satırlarda işlem yapılabilir.
  • Birden fazla özellik eklenerek dosyalar değiştirilebilir.
  • Hızlıdır.
  • Çalışmalar saklanabilir.
  • Lokal dallanma sağlar (local branching)
  • Tüm işlemler lokal olarak yapılır.
  • Program boyutu küçüktür.
  • İşlem yapmadan önce işlem yapacapılacak alan üzerinde önizleme yapabilmenizi sağlar.
  • Merkezi bir sistemle merkezi çalışma ağı sunar.
  • Değişiklik yapan kişilerin değişikliklerini takım liderine gösterir ve değişiklikleri dahil edip etmeyeceğini sorar.
  • Basit bir hosting sitesinden daha çok sosyal bir ağa benzeyen “GitHub” servisini sunar.
  • Öğrenmesi kolaydır.


Mercurial

Mercurial, ücretsiz versiyon kontrol yönetim aracıdır. Kullanıcılara süre sezgisel bir arayüz kullandırarak, her boyuttaki projesi için büyük avantaj sağlamaktadır. Subversion gibi kullanıcı tabanlı mimariye sahip değildir. Her kullanıcıya yerel bir kopya bırakır, bu sayede internetten bağımsız da çalıştırılabilir. Yapı tasarımı sayesinde revizyonlar arasındaki farkları kolayca algılayabilir, zaman içerinde kolayca eski versiyonlara dönülebilir.


Bazaar

Bazaar komut kümesi açısından CVS ve SVn’e oldukça benzemektedir. Hem dağıtık hem de sunucuya bağlı olarak çalışabilmektedir. Bazaar’ı diğer versiyon kontrol sistemlerinden ayıran en büyük özelliği farklı versiyon kontrol sistemleri ile çalışabilmesi ve dosya isimlerinde Unicode desteklemesidir.

VERSİYON KONTROLÜ

Versiyon Kontrolü Nedir?

Versiyon kontrolü kısaca, yazılım projelerinin kaynak kodlarının ya da oluşturulan dokümanların yönetimini yapılabilmesi ve yapılan değişiklikleri takip edebilmesidir. Oluşturulan kaynak kodların güvenilir bir şekilde saklanması, versiyonların takip edilmesi, kodun gelişimine katkıda bulunanların ve kodun kontrol altında tutulması gibi ihtiyaçları gidermek için ortaya çıkmıştır.

Eğer bir takım halinde kod geliştiriliyorsa, kod paylaşımının kolaylıkla yapılabilmesi, revizyonların kontrol edebilmesi ve bir hata durumunda kodun eski haline geri dönebilmesi gerekir. İşte bu kısımda versiyon kontrol sistemleri bize bu olanakları sağlamaktadır.

Versiyon Kontrol Sistemleri Neden Kullanılmalıdır?

  • Birden fazla kişini aynı kod üzerinde çalışabilmesine olanak sağlar,
  • Eski kod versiyonları tutulur ve istediği zaman geri dönülebilir,
  • Yazılan kodların istenilen bölümlerine erişip sadece belirli kısımlarda değişiklik yapılabilmesi sağlar,
  • Sürümler arasındaki farklılıklar görülebilir,
  • Kod güvenli bir şekilde saklanır,
  • Farklı geliştirmeler için ayrı dallar açıp paralel geliştirme işlemi yapılabilir.

Bu sebeplerden dolayı versiyon kontrol sistemlerinin kullanılması önerilmektedir. Aksi takdirde basit görülebilecek bu işlemler proje yönetim sürecinde gecikmelere ve kargaşaya sebep olacaktır.

Yazılım Versiyonu Nedir?

Bir yazılım projesi ne yazık ki ilk yazıldığı halde müşteriye teslim edilememektedir. Daha müşteriye teslim edilmeden yapılan testler sonucu tespit edilen eksiklikler ve hatalar düzeltilerek daha kararlı bir yazılım oluşturulmaya çalışılmaktadır. Bu işlemler yazılım müşteriye teslim edildikten sonra da güncelleme ve bakım adımlarında devam etmektedir. Bu sayede daha kararlı, güvenli ve çıkan yeni teknolojilere uyumlu yazılımlar yaşam döngülerini devam ettirebilmektedirler.

Bu işlemler yapılırken, yapılan her işlemden sonra kaynak kod versiyon numarası değiştirilerek hem geliştiricilere hem de kullanıcılara yazılımda değişiklikler yapıldığının bilgisi verilmektedir. Bu şekilde bir numaralandırma yapıldığında yapılan hataların nasıl düzeltildiği de görülebilmektedir bu sayede kaynak kod içerisinde bulunan benzer bir blokta aynı hatalardan kaçınılması da sağlanmış olmaktadır.

Yazılım Versiyon Numaraları Ne Anlama Gelir?

Yazılım versiyon numarası temel olarak dört bölümden meydana gelir. Bu bölümlerin daha iyi anlaşılması açısından versiyon numarası verme sistemini bir örnek üzerinden açıklayacak olursak,
Örneğin versiyon numarası v2.5.0.2154 olan bir yazılımı ele alalım;
  • 2, versiyon major numarası,
  • 5, versiyon semi-major numarası,
  • 0, versiyon minor numarası,
  • 2154, versiyon build numarası,

olarak adlandırılmaktadır. Verilen bu versiyon numarası açıklamaları yazılım firmalarının kendi uyguladıkları yazılım geliştirme süreçlerine ve politikalarına göre değişiklikler gösterebilmektedir. Örneğin build numaraları genelde son kullanıcı tarafından görülmez ya da build numarası minor numarasına dahil edilmiş halde versiyon numarası verilmiş olabilir.

Versiyon Major Numarası

Major numarası bir yazılımın sahip olduğu temel özelliklerinin değişimini simgeler yani major numarası 2 iken 3 olmuş bir yazılımda hissedilebilir değişiklikler yapılmış demektir.Örneğin önceden bir işlemi 4 sn yede yapan bir program yeni versiyonunda 2 sn de yapıyor olabilir veya yeni bir kaç özellik eklenmiş olabilir.

Versiyon Semi-major Numarası

Bu numara yazılımdaki değişikliğin yazılım genel işleyiş mantığını değiştirmeden ek özellikler eklemek şeklinde yapılan değişiklikler olduğunu gösterir. Önceki versiyonlarda kullanılan özelliklerde bir değişiklik yoktur ve kullanıcı arayüzü aynı kalır.

Versiyon Minor Numarası

Minor numarası, program arayüzündeki işleyişi ve işlevselliği etkilemeyen küçük değişiklikleri ya da kullanıcılar tarafından farkedilmeyen bazı aksaklıkların değiştirilmesi anlamına gelir.

Versiyon Build numarası

Build numarası, yazılımda olan güvenlik açıkları buglar ve uyumluluk sorunlarının giderilmesi anlamına gelir.