Posted by & filed under Genel.

Yazımda önemli olduğunu düşündüğüm kısımları biraz daha açtım ancak bu kısımları isterseniz atlayabilirsiniz.Aslında bu konu oldukça dallı budaklı ( bu dallardan birçoğu hakkında benimde bilgim yok ) bir yapı.Yani birkaç sayfa ile bunu açıklamak yetersiz olacaktır ancak size genel bir fikir verebilir.

İşletim sistemlerinden bahsettiğimizde ilk akla gelenler genelde Windows , Linux Mac OS gibi popüler işletim sistemleridir.Ancak dünyada yüzlerde değişik işletim sistemi bulunmakta , bazıları benzer temelleri paylaşmakta bazıları ise tamamen farklı yapılandırmalara sahiptir.

İşletim sistemleri listesi : http://en.wikipedia.org/wiki/List_of_operating_systems

Bu yazımızda genel olarak UNIX® tabanlı işletim sistemlerinden bahsedeceğiz yani buda Linux ve Apple OS X işletim sistemlerinin atalarına değineceğimiz anlamına geliyor.Tabi yazımın tamamını okumadan ne nedir öğrenmek isterseniz aşağıdaki resmi incelemenizi tavsiye ederim.

 

http://upload.wikimedia.org/wikipedia/commons/7/77/Unix_history-simple.svg

UNIX® 1969′larda AT&T (American Telephone and Telegraph Company / Amerikan Telefon ve Telgraf Şirketi ) çalışanları tarafından Bell Labs’da ( Telefon o günlerde en popüler teknolojilerden olduğundan olsa gerek :Bell Telephone Laboratories) geliştirildi.İlk olarak assembly dilinde yazılıdı.

İşin zorluğunun anlaşılması için assembly dilinden biraz bahsedecek olursak ; assembly alt seviyeli bir didir ve makina diline yakın diller arasından yer alır.Günümüzde doğrudan donanım manipülasyonları,aşırı optimizasyon gereken durumlar,sınırlı kaynakların maksimum kullanımı veya yüksek seviyeli dilin mevcut olmaması durumunda kullanılmaktadır.Kısacası zor bir dildir.Aşağıda c ve assembly ile yazılmış Merhaba Dünya kodları ;

C

#include<stdio.h>

int main()
{
printf(“Hello World\n”);
return 0;
}

Assembly

title Hello World Program

dosseg
.model small
.stack 100h

.data
hello_message db ‘Hello World!’,0dh,0ah,’$’

.code
main proc
movax,@data
movds,ax

movah,9
movdx,offset hello_message
int21h

movax,4C00h
int21h
main endp
end main

1973 yılında UNIX® C diliyle nerdeyse tamamen yazıldı.1974 yılında Illinois üniversitesinde lisanslanmasıyla herşey başlamış oldu.Bu noktadan sonra UNIX® gelişim süreci dallanıp budaklandı. AT&T tarafından ,ticari diğer satıcılar tarafından,kar amacı gütmeyen kuruluşlarca veya Kaliforniya Üniversitesi, Berkeley ( University of California, Berkeley ) gibi üniversiteler tarafından geliştirilmeye devam edildi.Burada Kaliforniya Üniversitesi, Berkeley’in kısaltmasına dikkat çekmekte yarar var yani BSD.

İlerleyen zaman içerisinde UNIX® The Open Group ( Bir endüstri standartları konsorsiyumu) tarafından marka hakları alındı.Böylece UNIX-LIKE veya UNIX Benzeri işletim sistemleri kavramı ortaya çıktı.

1980′lerin başında UNIX® akademik alanda oldukça benimsendi.Özellikle BSD ticari alanda popüler bir temel oluşturdu.Solaris, HP-UX, Sequent, AIX, ve Darwin gibi sistemlerin ortaya çıkmasını sağladı.Burada özellikle DARWIN’e dikkat çekmek gerekir.Çünkü günümüzde Apple OS X ve iOS’unun temelini oluşturmaktadır.Ancak burada tamamen BSD üzerine kurulu bir yapı değil BSD ve diğer sistemlerin parçalarını kullanan bir yapıdan bahsetmekteyiz.

Burada aklımızda bulunması gereken aslında UNIX® başlangıçta geliştiriciler için yazdıkları uygulamaların birçok platformda çalışabilmesi için bir çatı/tezgah görevi gören bir yapı olarak tasarlandı.

UNIX® sistemleri birçok elemanla birlikte ana kontrol programından oluşur ve bu ana kontrol programına çekirdek veya oldukça sık duyduğumuz KERNEL adı verilmektedir.Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür.Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar bellekte kalır.

Belleğe yüklenmiş Linux çekirdeğe, modüller vasıtasıyla dinamik olarak kod eklenebilir. Örneğin bir ethernet kartı sürücüsü, çalışan işletim sistemine modül ile tanıtabilir. Aynı şekilde kullanılmayan modüller dinamik olarak bellekten silinebilir.

İşletim sistemi uygulamalari ile hardware arasinda soyutlama sağlayan, sanal bellek yönetimi, iç işlem iletişimi, işlem sıralaması gibi hizmetler sunan, iletişim ağı için tcp/ip, ipx/spx gibi protokol suitleri, dosya sistemlerine erişim için apiler sunan, sistem çağrılarına cevap veren işletim sisteminin kalbidir. İşletim sistemini ayakta tutmaya yarar.

Bu kadar bilgiden sonra UNIX® ve BSD hakkında azda olsa bilgimiz var peki Linux ve OS X’i nereye koyarız ve nasıl adlandırırız ?

Linux ve OS X UNIX benzeri ( UNIX-like) işletim sistemleridir.MAC OS X için ;Mac OS X aslen BSD ve Mach mikroçekirdeği üzerine kurulu, açık kaynak bir işletim sistemi olan Darwin’e dayanır.BSD temelinde olduğundan UNIX® benzeri dememizde hiçbir sakınca yoktur.Biraz daha açarsak Darwin Linux,FreeBSD’e benzer, MAC OS X arayüzü KDE veya Gnome’a benzer ve MAC OS X’in bu arayüz sistemi gnome ve kde gibi açık kaynak kodlu değildir.Başka bir açıdan bakarak açıklarsak MAC OS X kerneli açık kaynak kodlu olmakta birlikte , kullanıcı arayüzü ve birlikte gelen uygulamalar açık kaynak kodlu değildir.

Linux ise birçok dağıtıma sahip olmakla birlikte açık kaynak kodlu linux çekirdeğini kullanır.UNIX® benzeri bir işletim sistemidir.Yukarıda bahsi geçen dağıtım genel olarak tam bir işletim sistemidir.Kullanıcılar için farkları paket yönetim sistemleri, masaüstü ortamları ve yönetim araçlarıdır.

Daha açıklayıcı olması için aşağıdaki grafiği incelemenizde fayda var.

http://tr.wikipedia.org/wiki/Dosya:Linux_Distribution_Timeline.svg

Başlığımızda yok ama hadi biraz windows ve Bill Gates’den bahsedelim.Bu bilgilerin doğruluğu hakkında kesin bilgiye sahip değilim ve aşağıdaki hikayemiz tamamen alıntıdır.Ve hikayemiz şöyle başlar ;

New Meksiko’nun en büyük şehirlerinden biri olan Albuquerque’da elinde çeyrek milyon dolarlık stok bulunan Ed Roberts hesapmakinası kitleri hazırlamaya başladı ancak çip üreticisi “Texas Instruments and National Semiconductor” tam bir hesap makinası yapınca bu kitleri satamadı.

 

Sonrasında Ed Roberts bilgisayar yapmaya karar verdi ve INTEL’e oldukça fazla çip alırsa fiyatları düşürüp düşüremeyeceklerini sordu.Olumlu sonuç alan Ed ALTAIR adlı bilgisayar kitini üretmeyi başardı ve bir çip ücretine bunları sattı.Henüz okumakta olan Bill Gater Altair hakkında yazıyı okuyarak yazılım yazma umuduyla Ed’le buluştur.Sonuç olarak bir BASIC versiyonu ve diğer bilgisayarlar için oyunlar yazdı.

 

Bu sıralarda Steve Jobs ve Steve Wozniak ilk Ev bilgisayarından milyon dolarlar kazandı.Büyük firmalar bir süre bu ikiliye gülselerde Apple karını her yıl artırmaya devam etti.Sonunda IBM Apple ile yarışacak bir bilgisayar yapmaya karar verdi ve işletim sisteminin tamamen kendilerinin olmasını istediler.Bu noktada IBM Bill Gates’e böyle bir işletim sisteminin olup olmadığını sordu ve Bill’de hemen evet cevabını verdi.Ancak Bill’in böyle bir işletim sistemi yoktu.Hemen araştırmaya koyulan Bill Seatle DOS adında bir işletim sistemi geliştiren iki kişiye rastladı ve tüm şirketi satın aldı.Sonrasında bu şirkete Microsoft adını verdi ve IBM’e satarak milyoner oldu.
Seatle DOS ev yapımı bilgisayarlar için geliştirilmişti hiçbir zaman büyük firmalar,ağlar veya güvenlik için bir işletim sistemi olmadı ve büyük oranda hatalıydı.Bu hatalar ev yapımı bilgisayarlarda önemsizdi ancak temellerdeki bu problem sonra ortaya çıkacaktı.

 

Sonuç olarak aceleyle yazılan Seattle DOS veya QDOS (Quick and Dirty Operation System – 4 ayda yazılmış- ) Microsoft DOS’un temellerini oluşturur ki Seatle DOS’da o günlerce ev kullanıcıları için yazılmış olan CP/M’in bir başka kopyasıdır.

 

Steve Jobs ve Steve Wozniak UNIX® ve CP/M dünyasından uzakta geliştirmelerine devam ettiler.Çıkan tüm çiplerin yeni özelliklerini kullanan sistemler yazmak konusunda oldukça beceriliydiler.Bu yüzden Apple bilgisayarları daha iyi daha hızlı çalışmaktaydılar.IBM/DOS bu özelliklere sahip değildi yeni çiplerin yeni özelliklerini kullanmada sıkıntı yaşadılar.Eski programlar yeni çiplerde çalışmıyordu.Bu yüzden Apple herzaman bilindik PC’lerden daha verimli oldu.Ancak günümüzde Apple’da UNIX®’i seçti ve daha ucuz Intel CPU’lar kullanmaya başladı.

 

İşte bu yüzden DOS güvenlik tarafında hep problem yaşadı ancak MAC ve Linux UNIX®’den düzgünce kopyalandıkları için birçok problem zaten çoktan bulunmuş ve kapatılmıştı.

KAYNAKLAR :

http://en.wikipedia.org/wiki/AT%26T

http://en.wikipedia.org/wiki/UNIX®-like

http://en.wikipedia.org/wiki/UNIX®

http://en.wikipedia.org/wiki/Darwin_(operating_system)

http://en.wikipedia.org/wiki/Altair_8800

http://en.wikipedia.org/wiki/List_of_operating_systems

http://tr.wikipedia.org/wiki/Linux

http://en.wikipedia.org/wiki/Single_UNIX®_Specification

http://en.wikipedia.org/wiki/Berkeley_Software_Distribution

http://en.wikipedia.org/wiki/Bell_Labs

http://en.wikipedia.org/wiki/MS-DOS

http://en.wikipedia.org/wiki/Mac_OS_X

http://UNIX®.stackexchange.com/questions/4091/is-linux-a-UNIX®

http://www.cetinia.net/2012/12/bsd-nedir.html

http://kb.iu.edu/data/agom.html

http://en.wikipedia.org/wiki/The_Open_Group

http://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

http://en.wikipedia.org/wiki/86-DOS

http://www.patersontech.com/Dos/Micronews/paterson04_10_98.htm

http://en.wikipedia.org/wiki/MS-DOS

http://en.wikipedia.org/wiki/CP/M

http://en.wikipedia.org/wiki/C_language

http://en.wikipedia.org/wiki/Digital_Equipment_Corporation

 

Posted by & filed under Genel, Php.

Bu sorunun cevabı için oldukça uzun bir araştırma sürecine girdim.Asıl amacım her ne kadar profesyonelliğe erişemesemde php dışında da bir programla dili öğrenmekti.Her ne kadar bu arayışımın sonuna varmamış olmasamda bununla ilgili bilgileri yazının sonunda paylaşacağım.

Servisleri incelerken front end ve back end developer/geliştirici terimlerini kullanacağım.Tam Türkçe karşılıkları pek hoş durmadığından bu şekilde kullanmayı tercih ettim.Kısaca bahsetmek gerekirse ;

Front End Developer

Aslına bakılırsa geniş bir kapsama ve değişik açıklamalara sahip olsada genel olarak ; istemci tarafı geliştirme işlemlerine verilen bir addır.

Bu aşama tasarım aşamasından başlayıp html,css,js gibi aşamalardan sonra geliştirme diliyle (php,asp,ruby) bağlanmasıyla sonlanan kısma verilen addır.Bu konu oldukça geniş olarak açıklanabilecek olsada şimdilik bu kısa tanım bizim için yeterlidir.

Back End Developer

Aslına bakılırsa bütün süreci bir otomobil olarak düşünürsek back end development tarafı bu işin motorudur diyebiliriz.İsteklerin alınması, işlenmesi ve depolanması gibi birçok seviyede işlem yapılmaktadır.

Front ve Back End Development kısımları arasındaki sınır kesin hatlarla çizilmemekle birlikte günümüzde MVC vb yapıların çoğalmasıyla front ve back end developerlar arasındaki çizgi yavaş yavaş daha çok ortaya çıkmaktadır.Bu iki taraf içinde daha verimli ve rahat bir durum oluşturur.

FACEBOOK’UN ARKASINDA NELER VAR ?

Facebook front end ve back end kısımlarında birçok programlama diline ve birçok teknolojiye ev sahipliği yapsada işin güzel tarafı front end tarafında bildiğimiz Linux ,Apache,Mysql ve PHP teknolojilerini kullanmaktadır.Bunu yanında memcached önbellekleme sunucu sistemini kullanır.

Php aslına bakılırsa facebook gibi devasa bir proje için zorlu bir platform olsada başarıya ulaştılar ve bu yüzden facebook yazılımcılarını saygıyla selamlıyorum.

Aslında bundan birkaç yıl önce mysql içinde php için yazdığım gibi eleştirisel bir not düşebilirdim ama son yıllardaki değişim sürecini takip edemedim.

Peki Facebook arka tarafta neler kullanıyor ?

Aslına bakılırsa bir veya birkaç dil,teknoloji ve yazılım değil birçok dil ve teknoloji kullanmakta.Ve burada yazılacak olanlar sanırım sadece bilinenler.

İlk olarak açık kaynak kodla desteklediği/kullandığı sistemlere facebook’un geliştirici sayfasında bu konu başlığı üzerinden ulaşabiliriz.

Bu sayfadaki teknolojilere yer vermeyeceğim ama incelemenizde oldukça fayda var.Bunun yanında kullanılan açık kaynak kodlu yazılımların facebook’ta host edilen yansılarınada buradan ulaşabilirsiniz.

Temelde ise C++ sanırım baş aktör olmak üzere Java,Python ve adığı ilk defa duyduğum Erlang dilleri kullanılmakta.

Bahsedilmeden geçilemeyecek husus ise Php için Hiphop‘tur.Hiphop kısaca php kodunu optimize edilmiş C++ koduna çevirir.Daha sonrasında ise bu kod makine diline çevrilir.

TWITTER’IN ARKASINDA NELER VAR ?

Twitter front end tarafında Ruby on Rails framework’ü üzerinde çalışmaya başlamış ancak yavaş yavaş Java ve Scala’ya bölgesel olarak geçişe başlamıştır.

Bu konuda okudum birkaç makaleye dayanarak CPU performansı bakımından ROR’un yetersiz kaldığı söylenmekte.Ancak ROR’un bir framework olduğu gerçeğini göze alınca çokda şaşılası bir gerçek olmadığı aşikardır.Bu konuda yazımın sonunda ufak birkaç ekleme yapacağım.

Tweetler sanırım hala MySQL veritabanında tutulsada yine birkaç yazılımla güçlendirildiği belirtilmekte.

 

Bölüm 1 Sonu

Tersine Mühendislikle Çıkarılmış Facebook Database Yapısı

Facebook database schema

Facebook Nasıl Çalışır ?

http://www.makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained/

Twitter Ruby Bırakabilir

http://ruby.about.com/b/2011/04/09/twitter-is-slowly-abandoning-ruby.htm

Posted by & filed under Codeigniter, Jquery, Php.

Nedenini kesin olarak söyleyemesemde bazen kodlarımız arasına ekstra boşluklar girdiğini fark ederiz.Oldukça can sıkıcı bir durumdur.Çözümü sanırım birçok editörde olsada benim kullandığım Sublime Text 2′de şöyledir; CTRL+H ile bul ve değiştir özelliğini aktifleştirin \n\n ifadesini bul  kısmına ve \n ifadesini değiştir kısmına ekleyin.Sonrasında soldaki butonlardan Regular Expression tıklayın ve Replace All’a basarak ekstra boşluklardan kurtulun.

 

 

Posted by & filed under Genel, Yararlı Servisler.

Eğer iki bilgisayar kulanıyor tek mouse ve klavye kullanmak istiyorsanız Synergy aradığınız ücretsiz açık kaynak kodlu yazılım.Nasıl kurulacağı konusunda youtube’da birçok videodan yararlanabilirsiniz.Synergy ile klavye ve mouse kullanabilirken basit yazıları iki ekran arasında kopyalayıp yapıştırabilirsiniz.Kurarken servis olarak kurmanız giriş ekranlarında şifre yazarken size kolaylık sağlayacaktır aksi taktirde yine 2 ayrı klavye mouse kullanmanız gerekecektir.