Ekim 26, 2016 07:59 by Volkan Atasever
Bir mühendis veya developer veya yazılımla uğraşan kişi asla microsoft’cu, linux’cu veya open source’cu olamaz. Tabi gönül ister her yazılım open source olsun. O noktaya doğru gidiyor aslında hangimiz linux üstünde yazılmış driverları inceliyor ve yeni bir linux paketini geliştirmek için o kodu okuyor bu tartışılır. Eğer böyle bir şey yapmayıp ürün geliştiriyorsanız open source olmasından daha çok esnekliği ve geliştirilebilirliği çok önemli. Zaten ekstra bir çok özellikleri uygulamalarımıza yeri geldiğinde kütüphane dahi yazarak biz ekleyebiliyoruz. Görmediğimiz kısımda da uygulama ile işletim sistemi arasında çağrılar yapılmakta. Açıkçası C dili ile ve Windows API’leri ile basit bir pencere yapmaya kalktığımda yıllar önce 1000 satırdan fazla kod yazdığımı çok net hatırlıyorum. Önemli olan yeni bir özellik kazandırabiliyorsam programa gerektiğinde istediğim bellek bölgesine ulaşıyorsam daha doğrusu ihtiyaç duyduğumda ulaşabiliyorsam benim için yeterli. Son yıllarda pointer'larla fazla işim olmuyor açıkcası.
Çok fazla duyduğum bir soru ise visual studio ve üstünde yaptığım yazılımlar için lisans bedeli ödeyecek miyim veya ticari kullanıma yönelik uygulamalar yapabilir miyim oluyor. Eğer ücretsiz bir versiyon (community edition gibi) kullanıyorsanız .NET ortamındaki bir dili kullandığınız için ücret ödemezsiniz. Çok deneyimli olmayan bazı geliştirmeye hevesli arkadaşlar malesef aspragas haberleri yayabiliyorlar.
MS tarafında eğer sql server express kullanmayacaksanız ve ticari bir uygulama yapacaksanız lisanslar tabi ki ücretli. Ama .NET veya C# kullandığınız için illaki MS’in ürünü SQL Server kullanmak zorunda değilsiniz. Çok sayıda veri tabanı mevcut. Oracle, mysql, mariadb , mongo vs. Kullanabilirsiniz. Onun için önemli olan geliştirme ortamınızın ve dilin güçlü olması gerektiğini unutmayın.
Tags: yazılım dili, yazılım ortamı
Bir Geliştiricinin Alet Çantası
Ekim 26, 2016 02:03 by Volkan Atasever
Şu anda çok fazla kullandığım bir kaç aracı sizinle paylaşmak istiyorum. Eğer bir yazılım ekibi olarak çalışıyorsanız. Bir kaç alete ihtiyacınız olacak. Burada geniş kapsamlı iç çözümlerimizden veya geniş kapsamlı uygulamalardan bahsetmeyeceğim. Temel olarak bazı araçları sizlere listeleyeceğim. Aslında çok fazla sayıda da değil.
1. 1-) Trello
2. 2-) Bitbucket
3. 3-) Visual Studio
4. 4-) Android Studio
5. 5-) Xcode
6. 6-) Xamarin
7. 7-) Notepad++
8. 8-) Winrar
9. 9-) Photoshop
Trello tüm projelerinizi ve işlerinizi organize edebileceğiniz ve ekipler oluşturabileceğiniz bir uygulama. Trello.com adresinden kullanmaya başlayabilirsiniz. Gold sürümü hariç tamamen ücretsizdir. Bu ücretsiz sürümde gayet yeterli olmakta. Hem cep telefonu hem de tablet versiyonlarıda mevcut.
Yazılım projelerinde scrum uygularken trelloyu kullandım. Ve bu ihtiyacımada cevap verdiğini söylemek isterim.
Bitbucket ise tüm versiyon kontrolü işlemlerini yapabileceğiniz ve yazılımcıların çoğununun haberdar olduğu git temelli bir cloud versiyon kontrolüdür. 5 kişiye kadar ekiplerde ücretsizdir. Bir üst paket aylık 10 dolar gibi cüzi bir rakam ödenmesi gerekmektedir. Zaten 5 kişilik ekipten daha büyük işler yapıyorsanız proje gelirlerinin de yüksek olduğunu düşünürsek 10 dolar oldukça komik bir rakam kalmaktadır.
Visual Studio, windows ortamında bir developer için tam bir alet çantası. Web, windows, entegrasyon ve bir çok işinizi yapmanızı sağlıyor. Bu yazıyı okuyanlar visual studio ile ilgili oldukça bilgi sahibi olduğunu düşünüyorum. Android Studio ve Xcode ise mobil platformlara hükmetmeniz açısından oldukça önemli. Xamarin ise şimdilik çok büyük bir proje yapmasamda cross platform için araçlarımda her daim saklı tuttuğum bir teknoloji.
Tags: alet çantası, bir geliştiricinin araçları, geliştirici araçları
Software4Galaxy Şirketi ve Teknolojik Gelişmeler
Ekim 26, 2016 01:28 by Volkan Atasever
Uzun zamandır bloguma post atamıyordum. Daha doğrusu kod parçaları veya sıradan kod makaleleri ile her zaman sizlerle olmayacağım. Artık proje yönetimi, yönetim ve bilişim dünyasıyla ilgili yeni yazılarda bulabileceksiniz blogumda. Eski yazılarıma zaten ulaşabiliyorsunuz.
16 mart 2016 tarihinde Software4Galaxy Limited şirketimi kurdum ve Genel müdür olarak çalışmalar yapmaktayım. Aslında bu bilişim dünyasında yöneticilik pozisyonunda ki ilk görevim değil. 2004 senesinden beri bilişim dünyasında profesyonel çalışmalar yapmaktayım. Son yıllarda takım lideri ve proje yöneticisi olarak bir çok çalışmalarım oldu. Müşteriler ile satış toplantıları dahil.
Şu anda bir girişimci ve yakın bir zamanda 1 senelik bir limited şirketi olacak firmamda ise joker bir pozisyonda çalışmak zorundayım. Şirketler bir anda büyük ekipler barındırmıyor.
Ekip kurarken bir çok insanla da tanışma fırsatı elde ettim. Sizlere biraz da bu kısımlardan bahsetmek istemekteyim. Bir çok iş görüşmesi yaptım ve deneme süresinde ayrılma kararı aldığımız arkadaşlar oldu.
İş görüşmelerinde yeni mezun arkadaşlarla da çok fazla şekilde diyaloglar kurdum. Piyasada yetişmiş insan gücünden dem vurulduğunu sosyal medyada da çoğu sefer bazı profesyonel olmayan şirketlerin çok fazla bilgi birikimi istediği şeklinde geri bildirimler alıyordum. İş alımlarımı oldukça sade tutmaya çalışmıştım. Bir insan kaynakları departmanı olmadığı için bu görev bana düşüyordu.
Malesef çoğu yeni mezun gerçekten kendini geliştirmeden yüksek ücretler talep edebiliyordu. 5 sene deneyimli birinin aldığı maaşın fazlasını istediklerine şahit oldum. Sosyal medyada dem vurulan noktalardan biri ise ünivesite okumayan yazılımcıların olduğu güruhtu. Bizim işini iyi yapıyorsa diploma şartı aramak gibi bir isteğimiz olmamıştı. Tabi ki onca iş görüşmesi ve 3-4 arkadaşla çalışınca bazı çıkarımlarımız oldu. Üniversite okumamış iş görüşmesine gelen bir kişi işte çalışırken sadece bildiği yerleri söylemesi gerektiğini ve sadece oralardan sorumlu tutulmasını istedi. Anladığım kadarıyla yeni bir şeyler öğrenmek gayreti içinde olmayacaktı. Aynı zamanda 4 gün sonra memurluk sınavı mülakatı olacağını 4 gün müsade etmemizi eğer kazanırsa gelmeyeceğinide belirtti. Gerçekten iş görüşmesine gelenler oldukça cesaretli davranışlar sergiliyordu.
Burada anlatmak istediğim bazı şirketlerin çok şey istediğini ve yeni mezunlara şans verilmediği söylemiydi. Bunu fazlasıyla yaptığımı düşünüyorum. Malesef yeni mezun arkadaşlardan oluşan bir ekibin çokta başarılı olduğunu söyleyemem. Diğer şirketlerde incelediğimde yeni mezun arkadaşların ivmelenmesinin 5-10 sene veya daha üstü deneyimli olan kişiler arasında olduğuydu. Yani yeni mezunlardan bir ekip kurmaktan daha çok 5-10 sene deneyimli developerlardan oluşan bir ekip kurduğunuzda yanlarında sayıya oranla %20-%30 arası yeni mezun yerleştirdiğinizde performans artışını görebiliyorsunuz.
Malesef yeni nesil veya yeni mezun dediğimiz yeni kuşakta oto kontrol ve iç disiplin ancak bu kişilerden oluşmuş deneyimli bir ekibin içinde birebir temas olduğu sürece geçerli olabildiğini gördüm.
Bundan sonraki yazılarımda da teknik makaleler çok fazla yazar mıyım bilmiyorum ama proje yönetimi, yönetim ile ilgili yazılarda bulabileceksiniz.
Bu arada C# 6.0 kitabım yakın bir zamanda ikinci baskısını C# 7.0 olarak yapacak. Şu anda yeni bir iki bölüm ve güncellemeleri yapmaktayım.
Yeni mezun arkadaşların çok fazla üstüne gittiğimin farkındayım bu yazımda ama siz de bir yeni mezun olarak iş yaşamınıza başlayacaksanız mutlaka iş disiplini, iş etiği gibi konularda da yazılım geliştirdiğiniz kadar iyi olmalısınız. Sadece okulla yetinip iş aramak değil en azından bir konuda kendinizi geliştirmiş olarak iş dünyasına adım atmalısınız.
Tags: yeni mezun, yeni nesil, yeni developer, yeni
Assembly Öğreniyorum - 2
Ekim 22, 2015 02:45 by Volkan Atasever
Merhabalar arkadaşlar. Bu dersimizde Arm işlemcilerle Assembly öğrenmeye devam edeceğiz. Aynı zamanda kısa kısa problem çözümlerine de yer vereceğim. Bu sayede aktif alıştırmalar yapmanıza olanak sağlanacaktır. Örneğin bir kod yazdığımızda bunun 1 ve 0 lar ile değeri nedir veya 32 bitlik bir sistem de 64 bitlik 2 sayıyı nasıl toplarım gibi mantıksal sorulara da cevap arayacağız.
32 bitlik bir sistemde 64 bitlik 2 sayıyı nasıl toplarım sorusunun cevabını vermek isterim öncelikle.
Toplam c ve toplanan iki sayı a ve b olsun. Bu durumda 32 bitlik 2 register kullanmak zorundayız. ARM işlemcimizde toplam register sayısı 16 tanedir. Registerlarımızında kısıtlı olduğunu unutmayalım. Bunun için sayıyı 32 bitlik 2 parçaya bölmemiz gerekir
Burada asıl mesele r serisi registerlarımızı kullanırken ilk 32 bitlik bölümde elde olduğu zaman ne yapmamız gerektiğidir. Eldeyi tutmassak sonucu yanlış hesaplamış oluruz. Bunun için c sayısını r4 e veya r3e ekleyeceğiz. S statüs komutu ile c registerı oluşturulur ve elde buraya yazılmış olur.
Bu kısma değindikten sonra ARM işlemcimizde birden fazla komut kullanabileceğimizden bahsetmeliyiz.
TEQ, TST, CMP, CNG Gibi komutlardır.
Cmp komutu ise iki sayı arasında karşılaştırma yapar Compare kelimlerinin kısaltılmışıdır. Bu işlemi ise iki sayıyı birbirinden çıkartarak yapar eğer fark 0 değilse bu durumda sayılar eşit değildir.
Diğer bir örneğimiz ise;
4 ile bir sayıyı çarpacaksanız 4 ile çarpmazsanız sayınız 2 bit sola kaydırırsınız Bu da 2 üzeri 2 ile çarpmak anlamına geliyor.
i kaydırmak 2 üstü i ile çarpmak demektir.
sağa kaydırma ise tam sayı bölmedi. 3 ü 2 ye bölerseniz 1 elde edersiniz aynı şekilde i bit sağa kaydırırsanız 2 üzeri i ye bölmüş olursunuz.
kaydırma işlemleri için c bayrak registerıda kullanılıır. yani status registerı değiştiriliyor bu durumda.
LSL ---------> Logical Shift Left
LSR ----------> Logical Shift Right
ALSL, ALSR komutları ise aritmetik kaydırma yapmak için kullanılır.
Diğer önemli bir sorun ise;
Bir sayının negatifini almak için o sayının 2’ye tümleyeneni almanız gerekmektedir.
-9 sayıyı - ye çevirmek için 2ye tümleyeni alınacak
-9 u 2 ye tamsayı bölmek istiyorum bunun için 1 bit sağa kaymalı
LSR -9,1 ------------> 0111 1011 -> bu negatif değil
ASR -9,1 ----> 1111 1011 -----> farkı son biti tekrar kendine yazıyor bu sayede negatiflik duruyor son bit MSB’dir. Yani işaret bitidir.
Assembly öğrenirken karşımıza çıkacak en önemli 3 konu şöyledir;
2- Komut Formatları
3- Adresleme Modları
add r1,r2, #5
add r1,r2,r3, lsl #5
add r1,r2,r3,lsl r4
armda dallanma nasıl oluyor
armda 3 tip akışı değiştiren durum mevcut
1. si şartsız dallanma
herhangi şartı gözetmeden nereye isteniyorsa oraya dallanır komutumuz B komutudur.
2. si şartlı dallanma
B den türetilmiş komutlardır
BEQ durum registerınıdaki Z bitine bakıyor ve 1 se yürütülüyor durum registerındaki Z biti 0 sa komut yürütülmüyor
bunu da öncesindeki işlem sağlıyor.
AŞAĞIDA ÇIKARTMADA SIFIR oluşmussa z biti 0 ise yürütülmeyecek 1 ise yrütecek
Bazı eklerin anlamları şöyledir;
NE -> not equal
GT -> greater than
AL -> always
CS -> carry set
PL -> N clear yani pozisitfse
3. durum komutun şartlı yürütülmesidir.
alt programa dallanma için BL komutunu kullanıyoruz.
geri dönüş adresini bir yerde saklamamız lazım o da Link Register(LR). bu sayede geri dönmemiz gerekli yordam bittikten sonra
BL link registerda PC registerına kayıt yapmış olur. PC Program Counterdır. R0 dan R15 e kadar
genel amaçlı register var R15 de PC registerıdır.
yordama parametre nasıl yollayacağım içiçe 100 yordam çağıracaksam geri dönüşleri nasıl yapacağım
bunun çözümü stackdir
registerlar stacke yedeklenmelidir
bellek bir stack gibi kullanıyoruz. kimi stack kimi heap kimi interrupt için kullanılacak. hepsi ram bellek üzerindedir.
4 tip stack var
yukarı genişleyen stack TOS -> Top Of Stack
yukarı genişleyen stack stack pointer yazılabilecek boş noktayı gösteriyor
aşağı doğru genişleyen stack aşağı tepesini gösterir
aşağı doğru genişler stack point yazılacak boş noktayı aşağıya doğru gösterir.
Tags: assemly, arm, assembly öğreniyorum, arm assembly, register, komutlar, komut seti