@YeniHarman abi her nedense androide başladığım günden beri o şahısı hiç sevmedim :D bende kitaplardan anlamıyorum tam tersi senin durumun :) uml konusunda yüzeysel birşeyler gstermişlerdi okulda. Yüzeysel değilmiş. Sadece ne olduğunu ğretmişler :) videoyu izledim az kaldı bir kaç desen daha kaldı. Devam edeyim ben en iyisi. Kitap alacağın zaman banada syler misin birkez daha deneyeyim kitap işini. @motka, hocam profesyonellik ve bilmek farklı şeyler :) biz sadece bildiğimizi sanıyoruz ama bu insanlar profesyonel :D o yüzden yapacak bişey yok yetişmeye çalışacağız :D ben teşekkür ederim Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

-> Githup link yazmışsın, github olarak değiştirmelisin. -> Secret Key'i kod içine hardcoded yazmışsın ve onu github'a commitlemişsin. Pek doğru bir yntem gibi grünmedi bana. -> Proje, Class, Method, değişken... isimlendirmelerine daha fazla zaman ayır, isimlendirme çok nemli. -> Kodda standardın yok gibi. Daha düzgün grünen kod yazmalısın. Linter kullan mesela. IDE'lerin neredeyse tamamında kod formatlayan araçlar var: PhpStorm -> https://www.jetbrains.com/help/phpstorm/reformatting-source-code.html Android Studio -> https://stackoverflow.com/a/16580200/637724 Eclipse -> https://stackoverflow.com/a/15655127/637724 -> Java tarafında şu şekilde notasyon kullanma, git C# yazarken kullan ama Java'da kullanma :) static String _URL; static String _SecretKey; public static String get_SecretKey public static void set_SecretKey public static String get_IVKey -> Java'da package isimleri küçük harflerle yazılır, sendeki geleneğin dışında olmuş: package com. example. mhmdalmz. SecureTheApi. Security; -> APK dosyasını da commitlemişsin. . gitignore dosyasını daha efektif kullanmalısın. -> Madem ki unit test yok, isimlendirmeler düzgün değil, comment de yok, bari JavaDoc yaz. -> Hardcoded String kullanmaktan kaçın: Toast. makeText(getApplicationContext , "Please Check UserName or Password", Toast. LENGTH_SHORT). show ; ->Bir de kullandığın dilin yazıım kurallarına uymaya çalış. Sen hiç kaval çaldın mı?

Oy oy oy. 15 sene ncesi PHP yazımı. 1. Sınıf ismiyle dosya ismi aynı olsun ki autoloader kullanabilesin. 1,5. Klasr hiyerarşisini oluştur. 2. Autoloader kullan. 3. Design patternleri kullan. 4. Sınıf dışında fonksiyonun olmasın. Hangi sınıf kullanıyorsa onun elemanı olsun ya da genel bir kullanımı varsa ilgili sınıfın ya da util sınıfının statik elemanı olsun. 5. MB stringlerle düzgün çalışıyor mu? PHP ile ne zaman mb string uğraşsam sıkıntı yaşadım. 6. Sistemin benim sunucumda çalışıp çalışmayacağını denetleyen bir test yazsan iyi olur . 7. Proje adı, yaptığı iş ile uyumlu değil. RestAPI'yi grünce bayağı bi uyarlama sandım ben. Seninki sadece şifreleme yapan bir proksi. Ona gre isim versen çok daha güzel olurdu. Olaylara karışmayın!

@YeniHarman, FİKİR : Sınıf ismiyle dosya ismi aynı olsun ki autoloader kullanabilesin. AutoLoader nedir bilmiyorum. FİKİR : Klasr hiyerarşisini oluştur. Klasr hiyerarşisini php de genelde kendim elle veriyorum rneğin stok lar ile ilgili işlem yapacaksam ajax/StokAjax/StokEkle. php şeklinde devam eden bir hiyerarşi yaparım genellikle. FİKİR : Autoloader kullan. Autoloader nedir bilmiyorum. FİKİR : Design patternleri kullan. Design patternde genellikler AhmetTopuTut şeklindedir static olan değişkenlerime _ koyarım Interface de varsa I ile başlarım başka bir zelliği yok. Yani uzun zamandır yazdığım kod stilim bu şekildedir. Kendi Stillerinize rnek verir misn abi? FİKİR : Sınıf dışında fonksiyonun olmasın. Hangi sınıf kullanıyorsa onun elemanı olsun ya da genel bir kullanımı varsa ilgili sınıfın ya da util sınıfının statik elemanı olsun. rnek bi kod alabilir miyim anlamadım :( FİKİR : MB stringlerle düzgün çalışıyor mu? PHP ile ne zaman mb string uğraşsam sıkıntı yaşadım. Abi sadece rusçanınkini denedim sanırım o da çalışıyordu fakat küçük birşey denedim , . bunlar calısıyordu bir test ederim abi. FİKİR : Sistemin benim sunucumda çalışıp çalışmayacağını denetleyen bir test yazsan iyi olur . Bunun için Maven'in nasıl yapıldığını android'e projeyi nasıl compile ettirebleceğimi pek bilmiyorum github kullanmayı da yeni yeni ğreniyorum. FİKİR : Proje adı, yaptığı iş ile uyumlu değil. RestAPI'yi grünce bayağı bi uyarlama sandım ben. Seninki sadece şifreleme yapan bir proksi. Ona gre isim versen çok daha güzel olurdu. Geliştireceğim abi projede bir takım eksiklikler var benim de grdüğüm onları da zamanla güncelleyeceğim. Uyarlamadan kastın nedir abi biraz aydınlatır mısın :) Çok teşekkür ederim. @JPriest, -> Githup link yazmışsın, github olarak değiştirmelisin. Sorarlar likteki p yi hiç mi grmedin be adam diye :) -> Secret Key'i kod içine hardcoded yazmışsın ve onu github'a commitlemişsin. Pek doğru bir yntem gibi grünmedi bana. Secret Key'i başka bir şekilde saklayamam ki abi? Sanırım XML De saklı lan SecretKey den bahsediyorsun. Yada keylerin public olarak dışarıya erişime açık olması yani bunu kullanacak kişinin key'i değiştirmesi veya okuyabilmesinden bahsediyorsun tam anlamadım. -> Proje, Class, Method, değişken... isimlendirmelerine daha fazla zaman ayır, isimlendirme çok nemli. Genelde Türkçe yazdığımdan mecburen alıştım türkçe yazmaya çok fazla ingilizce kelime de bilmiyorum. Isimlendirmelerim de bu yüzden ktü olabilir. Şayet still den bahsediyorsan buna alıştığım için byle yazmaya devam ediyorum. Kendi kod stilini atarsan inceleyebilirim ve çok sevinirim :) ->Kodda standardın yok gibi. Daha düzgün grünen kod yazmalısın. Linter kullan mesela. IDE'lerin neredeyse tamamında kod formatlayan araçlar var: Design Patternlere gz atacağım gibi grünüyor :) Bunu YeniHarman, JPriest ve dhmm sylüyorsa vardır bi bildikleri :) -> Java tarafında şu şekilde notasyon kullanma, git C# yazarken kullan ama Java'da kullanma :) : -> Java'da package isimleri küçük harflerle yazılır, sendeki geleneğin dışında olmuş: Bilmiyordum -> APK dosyasını da commitlemişsin. . gitignore dosyasını daha efektif kullanmalısın. Direk Allah ne verdiyse upload ettim Android studio hata verdiğinden tüm proje dosyalarını github içerisine attım Github desktop ile. Github da yeniyim bilmiyorum -> Madem ki unit test yok, isimlendirmeler düzgün değil, comment de yok, bari JavaDoc yaz. JavaDoc hiç aklıma gelmemişti :) Unit test ve bir çalışan android uygulaması ekleyeceğim çalışır bir sisteme entegre edip. -> Hardcoded String kullanmaktan kaçın: Projelerimin hepsinde XML dosyasındadır isimler vs. Yarın bürgün türkçeleştirilirse veya japonlar kullanmak isterse dili rahatlıkla değiştirebilmek için. Bunda gerek duymadım sadece ->Bir de kullandığın dilin yazıım kurallarına uymaya çalış. UserName Benim değişken ismim hangi kafayla yazdıysam hiç dikkatimi çekmedi :) teşekkür ederim abi sanada herşey için. @dhmm, her dilin kendine has standartları mevcut sanırırm. Yazım şekli bakımından. Ek olarak zelden birkaç soru soracağım sana :) MhmdAlmz tarafından 24/Haz/17 18:09 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Kesin doğru ya da kesin yanlış kod olmadığı için bilindik design patternin kullanıp kullanılmaması gereği tartışılabilir fakat şyle bir şey düşün: Kodunda şifreleme yapan sınıfın sadece bir kopyasını kullanman lazım . Yani o sınıfın her zaman bir tane rneğinin yaşadığından emin olmalısın. O zaman singleton pattern'i kullanabilirsin. Singleton patternin gerekliliği konusundaki tartışmayı geçiyorum . Kodun doğru çalışması için Secret key'inin 50 karakter uzunluğunda olmasının zorunlu olduğunu düşünelim. Yani kurucu metod 50 karakter uzunluğunda bir katar almalı. function construct { if (count != 50) { ... // eee burada ne olacak? ... O zaman şu çıkıyor? Exception mı fırlatmalıyım? Olabilir fakat benim ilk tercihim olmaz. Neden bilmiyorum. Belki C kkenli olduğumdan belki de exceptionların C++'ta sıkıntılı olduğunu bildiğimden. Exception handling bana gre değil:) Çok daha kolay olduğunu düşündüğüm yntemler var. Ayrı bir init metodu mu yazmalıyım? Olabilir fakat benim yine tercih edeceğim bir şey değil. Neden ikinci bir metot çağrısına ihtiyaç duyuyorum ki? C++ ile kod yazsam tercihim bu olurdu ama. Üçüncü şık olarak ben bunu bir statik sınıf metodu ile üretsem ve sınıfın kurucu fonksiyonuna her zaman gereken değerleri yollasam? Bence uygun bir çzüm. Oldu mu sana factory pattern. Yine koduma dnüyorum. Bana işimi yapabilmem için rastgele sayılar gerekiyor. Rastgele sayı üreten birden fazla sınıf var fakat bunların bazıları PHP X sürümünde yok. Ben Y sınıfını direkt kodumda kullansam bu sefer X+1 sürümüne tek bir iş için gebe kalacağım. Bunun yerine A, B, C sınıflarını aynı interface'i uyarlayacak şekilde genelleştiririm ve bu arayüzü sınıfımın kurucusuna parametre olarak alırım. Artık sınıfımın değişkenleri arasında o arayüzün referansı dışında bir şey tutmama da gerek kalmaz. Bu da etti mi sana dependecy injection. Daha adını bilmediğim ama kullanmış olduğum patternler de var. Mesela Facade. Hatta mvc kodlar yazıp sonradan mvcnin ne olduğunu ğrenmişliğim var. %100 gerekli mi? Bence hayır. Kullanmalı mıyım? Kullansam iyi olur. Tabi iyi ğrendikten ve gerçekten işimi kolaylaştıracağına inandıktan sonra. Yoksa acele işe anti-patternler karışır. En basitinden hebele hübele yazdığım bir kodda gayet rahat god object oluşabiliyor. Bu en basit tanımıyla birden fazla işi yapan bir nesne oluşturmak anlamına geliyor. Bir fonksiyon birden fazla işi yapmaması gerektiği gibi bir nesne de mantıksal olarak birden fazla grevi gerçekleştirmemeli. rneğin senin sınıf hem http requesti alıp hem işleyip hem de ekrana bastırmamalı. Szün zü, yukarıdaki işlemler çoğu zaman 100 satırda yapabileceğin işi 300-400 satıra da çıkarabilir. Mantık çerçevesinde buna karar vermen lazım. En nemlisi de koduna dkümantasyon ve açıklama yazmadığın zaman kodunu kullanacak yazılımcıdan sağlam küfürler yiyebileceğindir. Yani dkümantasyonsuz kod, en güzel kod olsun, bir işe yaramaz. Olaylara karışmayın!

@Lightsaber, hocam baktım da sanırım UML ve USE CASE diagramı kapsayan birşey bu. Kodun işlevini falan açıklamak için sanırım bunları da belirli standartlara uydurmuşlar. Doğru mu? repository pattern, singleton patter de araştırayım @TeRRoR olabilir hocam :) MhmdAlmz tarafından 24/Haz/17 21:38 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Mürit ve Müridelerim, 1-2 ay nce yazdığım android den gnderilen API isteklerini şifrelemek adlı programımı github'a koydum. Projeyi detaylı bir şekilde http://mhmdalmz.com/index. php/2017/06/24/android-php-veri-trafigini-sifreleme/ burada anlattım. Github Link : https://github.com/MhmdAlmz/SecurePhpRestAPI Github Link : https://github.com/MhmdAlmz/SecureAndroidRestAPI Linkler buradadır. nerileriniz benim için nemli şurayı veya şurayı düzeltebilirsin veya şu kodu şyle yapsan daha iyi olur senin için gibi nerileriniz nelerdir? Atış serbest. Github'a projeyi koyarken bir hayli zorlandım projeyi sanırırm doğru bir şekilde ekleyebildim. Mod: Konuları doğru kategorilere açmaya zen gsterelim. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

@MhmdAlmz kardesim. PHP-PSR a bir goz at. http://www.php-fig.org/psr/ Burada PHP icin bir nevi standartlar vardir. Autoload ve v. s. buradan bakarak uygulayabilirsin. Autoloader kullanirsan dependency manager ile istedigin package'i ekleyebilirsin projelerine. Ayrica namespace kullan PHP de. Daha duzenli klasor hiyerarsin olur. Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

FİKİR : Design patternleri kullan. Design patternde genellikler AhmetTopuTut şeklindedir static olan değişkenlerime _ koyarım Interface de varsa I ile başlarım başka bir zelliği yok. Yani uzun zamandır yazdığım kod stilim bu şekildedir. Kendi Stillerinize rnek verir misn abi? yok design pattern o değil, kod stilin değil. programlamada bazı sık karşılaşılan senaryolar için geliştirilmiş yaygın ve genelleşmiş çzüm teknikleridir design patternler. repository pattern, singleton patter vs gibi tonla rneği var. bir de anti-patternler vardır, bunlar da yine bazı senaryolar için ibret olabilecek ktü pratiklerdir. İnsan; insan olsaydı, insan olmazdı..

@YeniHarman, Açıklamalar için ncelikle çok teşekkür ediyorum zaten teşekkür ede ede bi hal olduk orası ayrı. Sylediklerini Yazdım hafızamın en sağlam yerlerine. Bir sonraki projelerimi dediğin gibi yapmaya çalışacağım. Fakat PHP de daha hiç bir framework kullanmadım Php de genelde REST API Yazıp yani gelen parametreye uygun sonuçlar üretmekdi benim işim o yüzden 10-15 yıl nceki PHP koduymuş gibi gzüküyor evet haklısın. Patternler konusunda genel bir araştırma yaptım Şuradaki amcalar çok iyi anlatıyor olayı ki gayet mantıklı. Bir bakıma haklısın, dışarıdan bu yazacağm bir kodu kullanacak bir yazılımcı kodun ne işe yaradığını veya kendi algoritmasını ilave edip edemeyeceğini belirlemesi için patternlere ihtiyaç var. Yani Kodun okunabilirliğinin arttırılmasına ve esnekliğinin arttırılmasına. https://www.youtube.com/watch?v=vNHpsC5ng_E&list=PLF206E906175C7E07 Video burdadır burada bir çok pattern anlatılıyor sanırım 2-3 video izledim dedim bu ne :) Malesef Türkiyede Üniversitelerde Code Monkey yetişiyor biz her ne kadar YOOOO desek de :D Ya bizde sıkıntı var yada Akademik. Çok çok çok çok teşekkür ederim. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Bu konu benide baya aydınlattı. Birçok eksiğim olduğunu grdüm. Meğer yanlış yoldaymışız :) Bulduğumuz eğitim videoları ve dkümanları burada toplarsak güzel olacak. Yazanların eline sağlık.

Videodan bir şey ğrenme işine pek alışamadım. Aykut Taşdelen'in Android programlama kitabını aldım ve beğendim. Yazar c ve sistem programcıları derneği bünyesinde zaten. Aynı yazarın tasarım desenleri ve uml kitabını almayı düşünüyorum. Olaylara karışmayın!

Bence onerileri pull requestle yapalim 😀 herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//