Ümit KÖSE https://umiitkose.com Anlatılacak daha çok şey var Sat, 07 May 2022 12:35:47 +0000 tr hourly 1 https://wordpress.org/?v=5.6.8 86674653 Clean Code – 3. Yorum Satırları https://umiitkose.com/2022/05/clean-code-3-yorum-satirlari/?utm_source=rss&utm_medium=rss&utm_campaign=clean-code-3-yorum-satirlari https://umiitkose.com/2022/05/clean-code-3-yorum-satirlari/#respond Sat, 07 May 2022 12:35:47 +0000 https://umiitkose.com/?p=2953 Comments : “Kötü kodun yorumu olmaz, yeniden yaz !” Kitap yorum satırında açıklama yapmaya karşı çıkıyor. Nedeni ise eski, güncel

The post Clean Code – 3. Yorum Satırları first appeared on Ümit KÖSE.

]]>
Comments : “Kötü kodun yorumu olmaz, yeniden yaz !” Kitap yorum satırında açıklama yapmaya karşı çıkıyor. Nedeni ise eski, güncel olmayan ya da yanlış yorumlayan yorum satılarlarının kod üzerinde anlamsızlığa neden olduğunu belirtiyor.

Yorum satırı kısaca sizin kötü olan kodunuzu gizlemek için danıştığınız işlemler olduğunu anlatıyor. Her yorum satırı yazdığınızda kodunuzdaki değişken, metot, sınıf isimlendirmelerinde yetersiz bir yerler olduğunu düşünün.

Gerçek sadece tek bir yerde bulunabilir: kod. Yalnızca kod size gerçekten ne yaptığını söyleyebilir. Gerçekten doğru bilginin tek kaynağıdır. Bu nedenle, yorumlar bazen gerekli olsa da, bunları en aza indirmek için önemli miktarda enerji harcayacağız. Hangisi daha anlaşılır ?

Faydalı bir yorum satırı nasıl olmalı ? Regular expression ifadesindeki kullanımı iyi olabilir, yine de sınıf olarak adı anlaşılır şekilde tutmak ve metotla destekleyerekte kodu anlaşılır kılabiliriz.

Bazen bir kodu çalıştırmadan önce işlemler yapılması gerekmektedir. Test için bir kodu çalıştırmadan uyarı verilecekse  @Ignore kullanın. TODO ise bir kodta yapılacak işlemler için bıraktığımız notlardır. Kullanmakta sakınca olmaması ile birlikte arada göz gezdirmek oldukça iyidir

Kötü bir yorum satırı ise nelerden oluşur. Çoğunluğu aslında kötü yorum satırları oluşturuyor. Eğer bir işi yapıyorsan burada yorum satırı ile mırıldanma. Zaten senin yaptığın işi kodun anlatmalı. Gerçekten Catch bloğundaki yorum satırına yazar dışındaki birinin ihtiyacı var mı ?

Yakalama bloğundaki bu yorum ne anlama geliyor? Açıkça yazar için bir şey ifade ediyordu, ancak anlam o kadar da iyi gelmiyor. Görünüşe göre, bir IOException alırsak, bu, hiçbir özellik dosyası olmadığı anlamına gelir; ve bu durumda tüm varsayılanlar yüklenir. Ama tüm varsayılanları kim yükler? loadProperties.load çağrısından önce yüklendiler mi? Yoksa loadProperties.load istisnayı yakaladı mı, varsayılanları yükledi ve ardından bizim yok saymamız için istisnayı iletti mi? Yoksa loadProperties.load, dosyayı yüklemeye çalışmadan önce tüm varsayılanları yükledi mi? Yazar, yakalama bloğunu boş bıraktığı gerçeği konusunda kendini teselli etmeye mi çalışıyordu? Veya -ki bu korkutucu olasılıktır- yazar daha sonra buraya gelip varsayılanları yükleyecek kodu yazmasını mı söylemeye çalışıyordu ?

Tek çaremiz, neler olup bittiğini anlamak için sistemin diğer bölümlerindeki kodu incelemek. Sizi o yorumun anlamı için başka bir modüle bakmaya zorlayan herhangi bir yorum sizinle iletişim kuramadı ve tükettiği bitlere değmez.

Redundant Comments ile aslında kodu hızlıca göz gezdirip anlayacağımıza gereksiz olarak yorum satırıyla zaman kaybettiğimizi vurguluyor.

Zorunlu yorumlar, Her işlevin bir javadoc’u olması gerektiğini veya her değişkenin bir yorumu olması gerektiğini söyleyen bir kuraldır. Bunun gibi yorumlar sadece kodu karıştırır, yalanları yayar ve genel bir kafa karışıklığına ve düzensizliğe yol açar.

Tomcat içerisinde bulunan bir kod parçacığı ve içerisi çok fazla yorum satırı ile doldurulmuş.

Gürültü Yorumları, zaten kodta açıklanan bişeyi açıklamamaya çalışan kodlardır. Oldukça gereksiz.

Aslında benimde eklediğim ve kolaylığını düşündüğüm kodun kim tarafından eklendiği de kitap tarafından gereksiz yorum olarak görülüyor. Nedeni şu ki zaten bir versiyon kontrol sistemi kullanıyorsun ve herşey kayıtlı. Neden kodu kirletiyorsun. Catch, while, try nerede bittiğini yazdığımız yorum satırları da gereksizdir, günümüz ide’leri bu konuda gayet başarılıdır.

Eğer kodunda yorum satırına eklenmiş bir kodun varsa artık bunu da yapma. Sen zaten kullanılmayacağını biliyorsun, sil geç. Korkak alıştırma elini. Eğer kullanılmayacak ve gereksizse sil gitsin. Local history ya da vcs ‘ler ne güne duruyor, gerektiğinde bulursun.

Kodunla ilgili fazla bilgi içeren yorum satırları mı var, sil gitsin. Kimsenin işine yaramayacak..

Bu bölüm kısaca 1. bölümde işlediğimiz anlamlı isimlendirmeler ile kodu olabildiğince az bir şekilde yorum satırına (hatta hiç!) ihtiyaç duyacağını belirtiyor. Bölüm 5 ‘te görüşürüz. 🙂

The post Clean Code – 3. Yorum Satırları first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2022/05/clean-code-3-yorum-satirlari/feed/ 0 2953
Clean Code – 2. Fonksiyonlar https://umiitkose.com/2022/05/clean-code-2-fonksiyonlar/?utm_source=rss&utm_medium=rss&utm_campaign=clean-code-2-fonksiyonlar https://umiitkose.com/2022/05/clean-code-2-fonksiyonlar/#respond Sat, 07 May 2022 11:41:47 +0000 https://umiitkose.com/?p=2940 Fonksiyonlar : Programlama da yaptığımız herşeyin temelinde fonksiyonlar yatmaktadır. Başlıca java da bir text metin yazdırmaya çalışsak bile main metotu

The post Clean Code – 2. Fonksiyonlar first appeared on Ümit KÖSE.

]]>
Fonksiyonlar : Programlama da yaptığımız herşeyin temelinde fonksiyonlar yatmaktadır. Başlıca java da bir text metin yazdırmaya çalışsak bile main metotu içerisinde yazmamız gerekiyor. Kitap 2. bölümde (aslında 3.) fonksiyonlardan bahsediyor.

Kitap bu bölümde bir fonksiyon paylaşıyor, aşağıdaki fonksiyon zamanında yazılmış bir proje için geliştirilmiş. Hadi 3 dakikanız var ve bu fonksiyon ne iş yapar çözün deniyor.

3 dakika içerisinde muhtemelen kodu anlamadınız. kod çok fazla sayıda tuhaf tanımlama ve çoklu if ifadesinden ötürü karmaşıklaşmış. Peki aşağıdaki kod ne iş yapıyor ?

Bu kod ile önceki kod aslında aynı işlevi yapıyor, sadece 2. kod daha açık, tüm detaylar anlaşılmasada test stringine sahip ise teardown ve setup kısmına bazı parametreler göndererek eklemeler yapıp bize sayfanın htmlini döndürdüğünü, bir test frameworkü olduğunu düşünebiliriz.

SMALL (Küçük): Kural 1 – Fonksiyonlar küçük olmalıdır. Kural 2 – Kural 1 ‘den de küçük fonksiyonlar yazmalıyız. Kitap bize fonksyionun en fazla 20 satır olması gerektiğini vurguluyor ve 1 satır 150 karakter uzunluğunda olmamalı diyor.

Yukarıdaki kod daha da küçük yazılırsa bunun gibi olur, kitapta basit bir hikaye anlatıyor, hikayede ana vurgu kodunuzdaki fonksiyonlar sadece tek bir şey yapacak kadar kısa olmalıdır.

1 Şey Yap : Fonksiyonlarda bu kuralı bir prensip haline getirmeliyiz. ilk kod’ta buffer oluşturma, sayfa getirme, sayfada arama, paths ‘leri oluşturma ve html getirme gibi çok şey yapıyor. son kod ise test sayfalarına setup ve teardownsları dahil ediyor. “FUNCTIONS SHOULD DO ONE THING. THEY SHOULD DO IT WELL. THEY SHOULD DO IT ONLY.” -> Kitap fonksiyonlar için bir şey yapmalı iyi yapmalı ve sadece bunu yapmalıdır diyor.

Switch ifadeleri : Switch ifadelerini küçültmek zordur. Doğası gereği switch ifadesi N tane işlem yapabilir. Fakat küçük seviyeli bir sınıfa gömebiliriz ve tekrarlamasının önüne geçebiliriz. Buna imkan sağlayan şey polimorfizmdir.

Aşağıdaki fonksiyonda bir kaç problem vardır. İlki büyüktür ve her employee tipi eklendiğinde büyüyecektir. Bundan ötürü SRP ve OCP ‘yi ihlal ediyor ve kod parçası birden fazla iş yapıyor.

Kodun çözümü abstract factory ‘dir. Abstract factory içerisine metotlar ekliyoruz. EmployeFactory ‘i interface oluşturuyoruz. Bu interface ‘i implemente eden bir sınıfta switch ifadesini artık metot değil Employee abstractindaki metotları alacak sınıflara dönüştürdük.

Kısaca Employee sınıfından türeyen sınıflar artık polimorfik olarak switch ‘teki türüne göre çalıştırılacak. Clean Code 1 ‘deki gibi fonksiyon isimlerini yaptığı işi açıklayacak şekilde iyi seçmeniz gerekiyor. Fonksiyona verilen ismin uzun olmasından da korkmayın.

Fonksiyon parametresinin ideali sıfırdır. Maks. 3 argümanlı fonksiyonlar kabul görürken 3 ‘ten fazlası gözden geçirilmelidir. Genel olarak 1 parametreli fonksiyonlar ya bir şeye dönüşüyor (InputStream fileOpen(“MyFile”)) yada bize soru soruyordur (boolean fileExists(“MyFile”)).

event tabanlı işlemler içinse dikkatli olun ve yazdığınız isimlendirme çok açıklayıcı olsun (void passwordAttemptFailedNtimes(int trials)). Boolean fonksiyonlar ise birden fazla iş yapar. Tehlikeli ve ayırılmalıdır.

2 ve 3 ‘ten fazla parametreli fonksiyon varsa bu argümanlardan bir kaçı sınıf ile sarmalanmalıdır.

Bir fonksiyon kullanırken içeriğinin bir yan etkisi olup olmadığını kontrol edin. Misal aşağıdaki kod ‘ta bir gizli kod vardır. Kullanıcının parolasını kontrol ediyor gibi görünse de içerisinde oturumla ilgili bir işte yapmaktadır. Tehlikelidir.

fonksiyonlar ya bir şey yaparlar ya da bir şeylere cevap verirler fakat 2sini aynı anda yapamazlar. Misal aşağıdaki kod if içerisinde kullanılırsa kafa karışıklığına neden olur. Bunu gidermek için resimdeki gibi kullanılmalıdır. public boolean set(String attribute, String value);

 

Kitap Fonksiyonlar bölümünün sonunda Dont Repeat yourself ile kodun kopyalandığı kısımların temizlenmesi gerektiğine vurguda bulunuyor. Bu tarz metotları yazmanın nasıl bir makale yazılıyor ve sürekli düzeltiliyorsa, kod tarafının da düzeltilmesi gerektiğini söylüyor.İlk başta tekrarlayan yapılan, çok fazla parametre alan fonksiyonlar olsa da sonrasında düzeltildiğini anlatıyor. Tabi bunu yaparken test sınıflarını da yazıyor ve kodu test ediyor. Kısaca fonksiyonlar dilin fiili, sınıflar isimleridir.

Son söz : Usta yazılımcılar kodlarında programı yazmaktan ziyade hikaye anlatmayı tercih ederler. Yazdığınız kod o kadar açık ve temiz olmalı ki okuyan kişi tüm parçaları anlamalıdır. 

 

The post Clean Code – 2. Fonksiyonlar first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2022/05/clean-code-2-fonksiyonlar/feed/ 0 2940
Anlamlı İsimlendirmeler https://umiitkose.com/2022/05/anlamli-isimlendirmeler/?utm_source=rss&utm_medium=rss&utm_campaign=anlamli-isimlendirmeler https://umiitkose.com/2022/05/anlamli-isimlendirmeler/#respond Sat, 07 May 2022 11:24:20 +0000 https://umiitkose.com/?p=2928 Bir çok kod parçası yazabilir, projeler geliştirebiliriz. Fakat yazdığımız kodu sadece biz anlıyorsak, burada sorun vardır. Fonksiyonundan, sınıfına, parametresinden, paketine

The post Anlamlı İsimlendirmeler first appeared on Ümit KÖSE.

]]>
Bir çok kod parçası yazabilir, projeler geliştirebiliriz. Fakat yazdığımız kodu sadece biz anlıyorsak, burada sorun vardır. Fonksiyonundan, sınıfına, parametresinden, paketine herşeyi doğru bir isimlendirmeyle anlatmalıyız.

İsimlendirme zaman kaybettiriyor gibi görünse de gerçekte doğru isimlendirme çok zaman kazandırıyor. Aşağıdaki örnekte misal “d” ne işe yarıyor. İyi bir kod açıklama satırına ihtiyaç duymamalı. Tartışılabilir bir konu fakat bende bunu savunuyorum. Kitaptaki iyi isimlendirmeler :
Aşağıdaki kod bloğunu ilk bakışta okuyabildiniz mi ? Bu kodu çalışma arkadaşınız yazsaydı ne derdiniz ? Sıkıntı belli kod basit fakat açık değil.
  • theList ‘te ne var ?
  • theList’in ilk elemanı neden önemli ?
  • 4 ‘ün bize anlatmak istediği şey ne ?
  • Dönen liste ile ne yapabilirim ?

Kodun mantığını değiştirmeden, düzeltirsek. Ne değişti ? Oyunun mayın tarlası olduğunu düşünürsek, metot ismi anlamlandı, theList bize oyun tahtası olduğunu anlattı, 4 aslında işaretlenmiş bir değer, 0 ise bize lokasyonu ifade ettiğini anlatmaya başladı. İyi kod kendini anlatır.

Benim en çok yaptığım hatalardan birine gelelim. Liste isimlendirmeyi nasıl yapıyorsunuz ? Ben list’i accountList gibi isimlerle tanımlıyorum. Kitap zaten bunun List olduğunu ve List gibi bir ifadeye ihtiyacın olmadığını söylüyor. Accounts, accountGroup gibi tanım yap diyor.

XYZControllerForEfficientHandlingOfStrings ve XYZControllerForEfficientStorageOfStrings gibi ufak değişiklikler içeren isimlendirmeler vermemeliyiz. 1 ile l ya da 0 ile O ‘nun karıştığını unutmamamız gerekiyor.

Bir scope’ta aynı isimden 2 değişken tanımlayamayacağımıza bu değişkenler arasında kelime oyunu yaparız, yapmamaya çalışın. Eğer isim farklıysa anlamda farklı olmalıdır. Örneğin a1,a2 gibi isimlendirme yerine source destination gibi isimlendirme kullanın.

Farklı isimlerde sınıflarınız varsa anlam olarakta farklı olmasına özen gösterin. ProductInfo ya da ProductData gibi farklı 2 sınıf anlam olarak çok yakındır ve projeyle ilgilenen kişiyi zorda bırakabilir.

nameString ya da todayDate gibi isimlendirme yapmamak gerekir, name zaten float olamaz ki. Today normalde date olması gerek hadi değil bunu zaten çağırırken tipinden anlarız. Bunun gibi durumlarda değişkenlere Variable, Int vs eklemeye gerek yok.

Misal aşağıdaki kod’tan ne anlarsınız ? genymdhms ‘yi generationTimestamp olarak mı okudunuz ? Kısaltmaları dikkatli kullanmaya özen göstermek gerek. 2 nedeni var, biri kodun okunabilirliğine ciddi zarar veriyor, 2. ‘si ilk kodu sesli okuyup arkadaşınıza anlatmaya çalışın.

İsim olarak yapmış olduğunuz tanımlama daha sonrasında yapılacak aramaylada kolay ve rahat bulunmalıdır. Eğer tek harf kullanıcaksan local değişkende kullan fakat bir sabitte vs anlamlı isimler kullan.

Kitapta aslında sabit ‘i neden kullanmak gerektiği, neden işlemleri bölmemiz gerektiğini aşağıdaki kod parçacığında anlatıyor. Kod aynı kod, fakat isimlendirme koda çok ama çok fark katıyor.

Sınıf İsmi tanımlanırken isim Customer, WikiPage, Account, AddressParser gibi “isim” ya da isim tümcesi olmalıdır. Sınıf adında Info, Manager, Processor, Data gibi sözcüklerden kaçınılmalıdır.

Metot ismi tanımlarken fiil ya da fiil tümceciği olacak şekilde tanımlanmalıdır. Örneğin deletePage, save, postPayment gibi isimler kullanılmalıdır. Pojo sınıflar içinde get, set ve is prefix ‘i içeren javabean standartına göre isimlendirmeler tercih edilmelidir.

Projede her zaman bir kelime seçmeye özen gösterin. Misal bir yerde fetch, bir yerde get, farklı bir yerde retrieve kullanmayın.

Address sınıfınız firstName, lastName, street ve state değişkenlerine sahip olsun. Address sınıfını okumasaydınız state ve street değişkenlerinin hangi sınıfa ait olduğunu düşünürdünüz ? addrState gibi sınıf adını belirterek, gereksiz bağlamdan kaçacak şekilde geliştirmeliyiz.

Kitabın bu bölümünde son olarak burada yazılanları uyguladıkça kodun kalitesinin artacağını belirtiyor. Önemli olan kodun çalışabilirliğinden ziyade ekipçe çalışılan projelerde arkada bırakılan kodun başkaları tarafından anlaşılması daha önemlidir.

Son Söz :

Herkes derleyicinin anladığı kodları yazabilir fakat bir insanın anladığı kod yazmak bunu yazmaktan daha zordur.

The post Anlamlı İsimlendirmeler first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2022/05/anlamli-isimlendirmeler/feed/ 0 2928
Mobil Uygulama İndirme Sayısını Arttırma – ASO https://umiitkose.com/2021/05/mobil-uygulama-indirme-sayisini-arttirma-aso/?utm_source=rss&utm_medium=rss&utm_campaign=mobil-uygulama-indirme-sayisini-arttirma-aso https://umiitkose.com/2021/05/mobil-uygulama-indirme-sayisini-arttirma-aso/#respond Sat, 29 May 2021 10:52:01 +0000 https://umiitkose.com/?p=2891 Mobil uygulama yazdınız ama indirme sayınız artmıyor mu ? Bu yazıda bu sorunuzun cevabını vererek, uygulamanızın indirme sayısını arttırmaya çalışacağız.

The post Mobil Uygulama İndirme Sayısını Arttırma – ASO first appeared on Ümit KÖSE.

]]>
Mobil uygulama yazdınız ama indirme sayınız artmıyor mu ? Bu yazıda bu sorunuzun cevabını vererek, uygulamanızın indirme sayısını arttırmaya çalışacağız. Haydi başlayalım.

Öncelikle Mobil uygulamalardan reklamlar aracılığıyla para kazanmayı ve uygulamanızı hangi pazara göre seçeceğinizi bir özet olarak aşağıdaki yazıda anlatmaya çalıştık.

Reklam ile Mobil Uygulamalardan Para Kazanmak

Bir uygulama çıkarmaya karar verdiniz, sonrasında başladınız kolları sıvayıp uygulamayı geliştirmeye. Zaman harcadınız, emekler verdiniz, hatta sabahladınız. Uygulamayı markete yayına aldınız. Çok heyecanlıyız.

Bir süre sonra uygulamanın istediğiniz kitleye ulaşamadığını gördünüz. Moral bozukluğu, üzüntü, hayal kırıklığına uğradınız.

Son durumumuz bu..

Buradan sonra ne yapmalıyız. Uygulama çıkarırken hepimizin güzel hayalleri var. Emekleri var. Uygulama çıkardıktan sonra aslında işler bitmiyor. Yeni başlıyor. Siz geliştirici olarak işinizi yaptınız, artık farklı bir yönünüzü ortaya çıkarmanız gerekiyor. Biraz pazarlama, birazda başka insanlar gözünden uygulamanıza bakma vakti geldi.

Burada anlatıcaklarım Kendi uygulamam olan Tabu uygulaması üzerinde yapmış olduğum ilk geliştirmeden bu yana 6.5 ay geçmiş ve toplam 60k ‘ya yakın indirilmeye ulaşan bir uygulamayı anlatmaktadır. Uygulamayı incelemek isterseniz linki aşağıda paylaşıyorum.

Uygulamayı çıkardıktan sonra yapılacaklar Listemizi oluşturarak başlayalım.

 

  • Başlangıç

Bir kullanıcı Tabu oyunu oynamak istiyor, tahmini olarak tabu kelimesini google play ‘de aratıyor diyelim. Markette bu keyword ‘e göre çıkan uygulamalar aşağıdaki gibidir.

Şimdi herkese birkaç soru sormak isterim,

Hangi uygulamayı indirirsiniz ?

Bu kısmı bir istatistiğe ya da teknik bir çalışmaya dayandırmadan kendi tahminlerimi söyleyeceğim. İlk olarak ilk 3 sıra çok ama çok önemli. 1. sıradaki uygulama en çok indirilen uygulamadır. Örneğin Nisan ayında 1. sıradaki uygulama 100k ‘ya yakın indirilirken 8. sırada göreceğiniz benim uygulamam 6k ‘ya yakın indirilmiştir. Farka bakın, uçurum resmen..

Her zaman hedefiniz burada ilk 3 ‘e girmeye çalışmak olmalı. Ama 1. olursanız bu pazardaki en çok indirilen uygulama siz olursunuz. (Tabu kelimesini aratan kullanıcılar için.)

Hangi uygulama sizin dikkatinizi çekiyor ? 

Bence uygulama indirmenizi yukarıdaki sorudan sonra en çok etkileyen durum uygulamanızın görünüşü. İnsanlar markete geldiklerinde ilk 3 uygulamayı denemiş, incelemiş ve beğenmemiş olabilir. İşte size aradığınız fırsat. Hangi uygulama daha dikkat çekiyor. Hangi uygulamayı tercih ederiz diye sorarsanız ve bu yalnızca sizin açınızdan değilde, çevrenizdeki insanlara sorarak, ux deneyimlerini de yaparak fikirler alabilirsiniz.


Peki ilk sıralara yükselmek için neler yapılmalı !

Bu soru için başlangıç altındaki başlıkları inceleyerek deneme yanılmalar, iyi analizler yapmamız gerekmektedir.

  • Uygulama Projesinin adı :

Bir uygulama yazarken projenizin bir adı olmakta. Burada iyi bir isim seçmek benim için önemli bir seçenektir. Misal com.umiitkose.tabu_anlatbakalim gibi bir isimle projenizi oluşturmanız gerekmektedir. Kendimle özleşmiş olan umiitkose ile uygulama ismini oluşturmak istemekteyim. Google ‘da biri umiitkose.com ‘a ulaşmak isterken ister istemez umiitkose ile yazmış olduğum uygulamaya ulaşabiliyor. Örneğin ilk sayfa ‘da Sessiz Sinema gelmektedir.

Kısaca burada kullanacağınız anahtar kelime bir anda google ‘dan sizin uygulamanızı kullanıcı indirmesini sağlattırabilir.

Çok etki etmese de bu durum ufakda olsa etki ediyor olabilir. Sıradaki en önemli kısma geçelim.

  • Uygulamanızın Karşılama Ekranı Nasıl olmalıdır ?

Burada öncelikle tabu uygulamasının mevcuttaki görüntüsünü paylaşayım..  Google play ‘de arama yapan kullanıcı başlangıç başlığında sizin logonuzu, uygulama isminizi gördü ve sizin uygulamanızı incelemek için tercih etti diyelim. Aşağıdaki ekranla karşılaşıyor.

Burada kendinize şunu sorun, Ben bu uygulamayı indirir miyim ? bunu bence çevrenizdeki insanlara da sorarak fikir sahibi olmaya çalışın. En önemlisini en sona sakladım, yarıştığınız diğer uygulamalara bakarak neyi iyi yaptıklarını incelemenizde fayda vardır. O uygulamanın nasıl bir arayüzü logosu olduğunu inceleyin.

 

Uygulamanızın en önemli 2 tane kullanıcıyla karşılaşan özelliklerinden biri burasıdır. Nedenlerini söyleyecek olursak;

  1. Direk kullanıcı uygulama ismini görüyor.
  2. Arama ‘da kullanıcağınız uygulama ismi önde çıkmanıza neden oluyor.

Peki neye göre uygulama adını ve kısa açıklamasını seçeceğiz.

burada benim kullandığım keywordtool.io web sitesi. Burada yayına çıkacağınız uygulamayla ilgili aramalar yapın. Kendinize bir kelime ismi belirleyin. Örneğin Tabu uygulamasının yanında benim için anlat bakalım kelimesi de önemli. Bu iki kelimeyi uygulamanızın adına ve kısa açıklamasına, uzun açıklamasında kullanın. Arada sizin anahtar keyword’unuze ek bir kelime ya da bir harf değişimi bile olmuş olabilir. Bunun için keywordtool.io ‘da yeniden incelemeler yapmakta fayda olabilir.

 

  • Keyword, Uygulama açıklaması nasıl girilmeli.

Google size 4000 harfe kadar uygulama açıklaması girmenizi istiyor. Keywordtool.io ‘da tabu için bir arama yaptınız ve size kelimeler geldi. İşte en az 3000 harf içerecek bir açıklama yazmanız en doğrusu olacaktır. Çünkü sizi kullanıcı farklı kelimelerle de arayabilir. İşte buradaki açıklamanız sizin uygulamanızın daha önde görülmesini sağlayacaktır.

 

Yukarıda uygulama ismini açıklarken en önemli 2 kriterden biri uygulama ismi demiştik, diğeri ise uygulamanın logosudur. Hatta isme göre daha önemlidir. Nedeni ise kullanıcı direk olarak uygulamanın logosu ile göz teması kuruyor. Hangisini indirirsinize yine de geliyor. Bence hangisi daha çok dikkat çekerse onu seçmeliyiz.

  • Uygulamanızın resimleri

Kullanıcı sizin uygulamanızı incelemeye karar verdi, hala indirmedi. İşte burada en önemli şeylerden biri uygulamanızın tanıtım resimleri. Burada eğer destekleniyorsa tablet resimleri eklenmelidir. Bu resimleri oluşturmanız için internette çok fazla uygulamalar bulunmaktadır.

  • Uygulama yorumlarının ve puanının önemi

Bir uygulamanın aldığı yorum, oylama vs uygulamanızı yükleyecek kullanıcıları etkileyecek bir diğer önemli faktördür. Burada organik olarak 257 kişiden geri dönüş almışım. Bu kısımda kullanıcıların görüşlerine önem vermekte fayda var. Gelen tüm kullanıcı geri dönüşleri incelenerek eğer mantıklı ve olabilecek bir şey ise uygulamaya güncelleme atmanızda fayda vardır. Örneğin ses eklenmesini isteyen bir kullanıcının talebini hızlı bir şekilde karşılamıştım.

 

  • Uygulamanın hangi kitle ‘ye hitap etmesi gerektiğine karar vermek

Google play sizin uygulamanızın çocuklara yönelik olup olmadığıyla ilgili ilk yayına çıkarken bir anket doldurmanızı istiyor. Bu ankette benim ilk yaptığım şey eğer ki ben ilk başta kullanıcı kazanmak amaçlı isem ailelere yönelik olarak oyunları çıkıyorum. Reklam ile birlikte bu konuda güncelleme yapılması isteniyor diye hatırlıyorum. Sonrasında ise uygulamadan para kazanmak için bu durumu güncellemek zorunda kalmıştım. Sizde özellikle çocuklara hitap eden bir uygulama yayına çıkıyorsanız bunu göz önünde bulundurun.

  • Reklam varsa politikanız nasıl olmalı

Kesinlikle bunu bence göz önünde bulundurun. Eğer yaş olarak çocuklara hitap eden bir uygulama ise örneğin benim uygulamam, iddia, politika vs gibi bir çok konuda reklamı kısıtlamanız önerilir. Bu konuda ailelerden çok sayıda olumsuz geri dönüş almamış olursunuz. Admob ‘un reklam politikasını incelemenizi öneririm.

  • Uygulamanızın boyutu ?

Bence bir diğer önemli konu da bu. Mobil telefonlar gün geçti hafızası genişleyen cihazlar olsa da bir çok kullanıcı yeni cihazları hızlı bir şekilde ulaşamayacaktır. Bazı kullanıcılar için de bu önemli bir konu olacaktır. Özellikle telefon hafızası dolduğunda silinen uygulama olmamak önemlidir.

  • Uygulamanızdaki crashleri çözmenin önemi

Firebase analitik ‘le birlikte crashlytics kullanıyorsanız uygulamanız yayına çıktığından itibaren hata olan kullanıcıları hızlı bir şekilde sorunlarını çözmeye çalışın. Unutmayın Örneğin Android 4.4 sürümünü de destekleyen bir uygulama yayına aldıysanız hata durumunda tüm bu sürüme sahip kullanıcılar hata alacaktır. Ya hiç bu sürüme destek vermeyin, ya da hızlıca sorunu çözmeye çalışın. Karar sizin.


Bu yukarıdaki anlattığım herşey Android için ASO – App Store Optimization ‘a girmektedir. Daha fazla bilgi için bununla ilgili yazıları inceleyebilirsiniz.


Yazımızın sonuna geldik. Okuduğunuz için teşekkür ederiz.

Uygulamayı incelemek isterseniz tekrardan linkini bırakıyorum.

https://play.google.com/store/apps/details?id=com.umiitkose.anlatbakalim_tabu_kelime_oyunu

Haftaya Uygulamayı markete aldıktan sonra yapacağımız analizleri göreceğiz.

Sağlıcakla kalın..

Sosyal medya hesaplarımı da aşağıda paylaşmaktayım. Soru sormak isteyen, yazıya katkıda bulunmak isteyen herkesi beklerim.

Okuduğunuz için teşekkür ederim.

 

 

 

 

 

 

The post Mobil Uygulama İndirme Sayısını Arttırma – ASO first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/mobil-uygulama-indirme-sayisini-arttirma-aso/feed/ 0 2891
Reklam ile Mobil Uygulamalardan Para Kazanmak https://umiitkose.com/2021/05/reklam-mobil-uygulamadan-para-kazanmak-reklam-geliri-saglamak/?utm_source=rss&utm_medium=rss&utm_campaign=reklam-mobil-uygulamadan-para-kazanmak-reklam-geliri-saglamak https://umiitkose.com/2021/05/reklam-mobil-uygulamadan-para-kazanmak-reklam-geliri-saglamak/#respond Sat, 22 May 2021 07:01:33 +0000 https://umiitkose.com/?p=2877 Mobil uygulamadan reklam geliri sağlamak isteyenler için kendi yaşamış olduğum deneyimleri çok uzun olmayacak şekilde anlatıyor olacağım. Detayları başlık başlık

The post Reklam ile Mobil Uygulamalardan Para Kazanmak first appeared on Ümit KÖSE.

]]>
Mobil uygulamadan reklam geliri sağlamak isteyenler için kendi yaşamış olduğum deneyimleri çok uzun olmayacak şekilde anlatıyor olacağım. Detayları başlık başlık sonraki yazılarda paylaşmaya çalışacağım.

Şuana kadar kazandığım pasif geliri paylaşarak başlayacak olursam toplam 2.200 TL üzerinde bir para kazandım. Ne kadar zamanda oldu derseniz 700 TL’si yaklaşık 2018 yılında olmuştu ama sonrasında Döviz uygulamamı kaldırmıştım. Şimdi ise çıkardığım Tabu oyunu, sessiz sinema, adam asmaca vs ile de ayda ortalama 200 TL geliyor. Pasif gelir hemde yattığımız yerden ohh mis..

 

Uygulamaları inceleyecek olan olursa, uygulamalarıma aşağıdaki adresten inceleyebilirsiniz.

Uygulamalarım için resme tıklayabilirsiniz –>

Döviz uygulaması artık kaldırıldı ama aşağıdaki gibiydi.

 

soruları yanıtlayalım ve sizlerden gelecek diğer sorular olursa buraya eklemeye çalışacağım.

Ne yapmalıyız ile başlarsak,

Öncelikle benim görüşüm kendinize bir uygulama alanı belirleyin. Misal play ‘de hangi alanda eksik var ya da hangi uygulamalar bu alanda boy gösteriyor. Ben eğer olabiliyorsa onlardan neyi farklı yapabilirim. Burada aynı işi yapmasına rağmen tasarımı kolaylaştırmak, daha görsel bir arayüz sunmak bile olabilir. En önemlisi ne biliyor musunuz ? Denemekten asla vazgeçmeyin. Bir uygulama çıkarın ve o uygulamalayla hedefinizi kazanana kadar denemeler yapın. Yapmış olduğunuz yanlışı elbet düzelteceksiniz Ama yanlış yapmadan öğrenemiyorsunuz.

Uygulamalarıma çok fazla zaman harcayamıyorum, sizde eğer böyle diyorsanız başka bir firmanın apisini kullanarak bence uygulamanızın tüm bağımlılığına o apiye bağlamayın. Ya da büyük bir firmanın (Örneğin instagram) apisini kullanın. Apide bir değişiklik olduğunda sizin uygulamanızda da sorun olacaktır. Döviz uygulamasının kaldırılmasının ana nedeni oydu. Bir firmadan almıştım, Başka firmaların sunmuş olduğu apiler uygulamadaki isterlerimi karşılamıyordu.

Yukarıdaki durumdan dolayı artık bende uygulamaya json, xml, veritabanı bağımlılığını kendi içerisinde olmasını sağlatıyorum. Eğer veriyi web servis aracılığıyla almam gerekiyorsa bunu da yine kendim yapıyorum. Bu veride real time olarak değil değişmeyen bir formatta olmasına özen gösteriyorum. Uygulama alanımı da belirledikten sonra bu veri durumuda benim için uygunsa başlıyorum yazmaya. Yazması çok uzun sürmüyor. Uygulamanın ASO ‘su kadar uygulamayı yazmaya zaman ayırıyorum.

Mobil Uygulama çıkarırken Ülkenin bir önemi var mı ?

Gelelim benim yanlışıma, çok fazla zaman ayıramıyorum diye hızlı çıkarmak hedefiniz olabilir ama burada pazarı çok iyi seçmelisiniz. Pazarı neden mi iyi seçmeliyiz ? Hemen bir görselle anlatıyım.

Admob kullanıyorum. Yukarıdaki uygulamalarımı Ülke bazlı filtrelediğimde en sağdaki kolon tıklama sayısı ve yanındaki kolonda bu sayıya karşılık gelen reklam geliri. Amerika’dan biri tıkladığında, 115 tıklamaya 108 TL. Bunun neredeyse 55 katı olan ülkemden bir kullanıcı reklama tıklandığında ise yalnızca 420 TL para kazanmışım.

Yani Amerikadan 1 kişinin reklama tıklaması yaklaşık Türkiyeden 16 kişinin reklama tıklamasına eş değer. Bu durum diğer ülkelerde de fark ediyor. Şimdi siz uygulamanızı hangi ülkeye göre çıkarırsınız ? Türkiye pazarını zaten iyi analiz edebiliriz, bu yüzden bence ilk dil seçeneği olarak İngilizce çıkarılmalı, Amerikadaki uygulama keyword’lerine göre de analiz yapılarak uygulamayı yayınlayın. Türkiyemiz için zaten bunu kolaylıkla yapabilirsiniz. Hedef müşteriniz ilk yurtdışı olsun. Uygulamayı yazarkende bunu göz önünde bulundurun.

Reklam yerleşimi ile ilgili hatalardan Tabu uygulaması özelinde benim de hatam olmuş olabilir. Ama şuan için hedefimin üstünde.

Yakın zamanda bu denemeleri yapacak uygulamalar çıkarıyor olacağım. İleride bu durumu da paylaşıyor olurum.

Ülkelerde önce çıkmak için kullanılan aso uygulamalarıyla ilgili bir yazı paylaşıyor olacağım. Bu işin en önemli kısmı ASO, bu konuda Celil Bozkurt ‘un Mobile growth videolarını öneririm. Markette uygulaması olan kullanıcıların deneyimlerini paylaşıyor.

Mobile Growth İstanbul Aso Sohbetleri

Aso Kaynakları 

Bu paraları nasıl kazanırım ? Mobil uygulamadan reklam ile para kazanabilir miyiz ?

Bu yazı aslında bu soruları cevaplamak için yazıldı. Öncelikle Admob kullanıyorum ben ama diğer reklam veren firmaları da inceleyebilirsiniz, admob kullanarak başladınız. Sizde uygulamanızı admob ekleyerek para kazanabilirsiniz.

İlk olarak google play ya da ios market olan appstore için üyelik açmanız lazım. Sonrasında google admob için bir başvuru yapmanız lazım. Google bu süreçte size pin yollayacak kontroller filan, uzayabiliyor. Şimdiden başlatmada fayda var.

Admob hesabı açıldı, herşey tamam diyorsanız markete uygulamayı attınız. Artık ya eş dost ‘a uygulama indirteceksiniz, ya reklam vereceksiniz ya da sizin yapmış olduğunuz anahtar kelimelerle markette uygulama ön plana çıkacak ve aramayı yapan kişi indirecek.

Bununla ilgili Aysel AYDIN ‘ın ASO yazısını da markete uygulamayı eklemeden önce incelemenizde fayda var.

Bundan sonrası reklam stratejinizi iyi belirlemekte fayda var.

Ad Format başlığındaki reklamları hem uygulama için hem de ne olduğuyla ilgili araştırma yapabilirsiniz.

https://developers.google.com/admob/android/interstitial

Bu yazıdan çok kopmamak için reklam türlerini de burada bıraktım, yakında yeni yazılarda daha fazla bilgi paylaşıyor olacağım.

Yazı eski yazı, yakında düzeltirim ama süreci takip etmek için aşağıdaki yazıyı inceleyebilirsiniz.

Android Studio Admob (Reklam) ve Google PLAY

Kaç indirmeye ne kadar kazanırım ?

İndirme uygulamadaki reklam kazancını belirleyen önemli bir faktör. Müşteri olmadan para gelmeyecektir. Fakat burada en önemli durum indirme sayısı değil kullanıcı elde tutma sayısı. Uygulamanızı indiren kaç kullanıcı uygulamanızı silmemiş ? Şuanda Tabu uygulaması için konuşacak olursam toplam 50k+ üzerinde indirmeye sahip. 10k uygulamayı telefonunda tutan ve günde 400-700 arasında aktif olan kullanıcım var. Bu kullanıcıların çoğu Türkiye ‘den.

50k kullanıcı bir uygulama 650 TL 5 ayda kazanabiliyor gibi düşünebilir miyiz ? Buradaki sayıların aslında bir önemi yok. Uygulama çıkarırken ülkenin bir önemi var mı ?  sorusu aslında bu sorunun cevabını veriyor. İndirme vs ‘den ziyade nerede indirildiği, kaç tıklama olduğu ne kadar kullanıldığının önemi var. Pazarının Amerika pazarıdır 50k indirdiğim uygulama 600 tl kazanırken siz 9k kazanabilirsiniz. Pazarı iyi seçmek çok önemli.

Yazıyı kısa ve anlaşılır olarak yazmaya çalıştım. Üzerine her bir konu için saatlerimizi harcamamız gerekir. Kısaca durum bu ama. Yeni yazılarda yukarıdaki başlıkların, Asonun detaylarına giriyor olacağız. Eğer yazıyı beğendiyseniz paylaşmayı unutmayınız.

Sosyal medya hesaplarımı da aşağıda paylaşmaktayım. Soru sormak isteyen, yazıya katkıda bulunmak isteyen herkesi beklerim.

Okuduğunuz için teşekkür ederim.

 

 

Not : Geçen seneden itibaren kotlin öğreniyordum, android ‘in Jetpack kütüphanelerine hazırlık olsun bakalım vs derken güzel bir temel oluşturdum. Bu konuda Kekod ‘a ve Gökhan hocaya çok teşekkür ederim. Sizde sektör üzerine bilgiler alabilirsiniz ve kotlin ile mobil uygulama üzerine geliştirmeler yapabilirsiniz. Yayınlar sıfırdan başladı.

The post Reklam ile Mobil Uygulamalardan Para Kazanmak first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/reklam-mobil-uygulamadan-para-kazanmak-reklam-geliri-saglamak/feed/ 0 2877
BigInteger BigDecimal Nedir, Nasıl kullanılır ? https://umiitkose.com/2021/05/biginteger-bigdecimal-nedir-nasil-kullanilir/?utm_source=rss&utm_medium=rss&utm_campaign=biginteger-bigdecimal-nedir-nasil-kullanilir https://umiitkose.com/2021/05/biginteger-bigdecimal-nedir-nasil-kullanilir/#respond Wed, 19 May 2021 11:34:42 +0000 https://umiitkose.com/?p=2862 BigInteger BigDecimal dersine hoşgeldiniz, Int, long, short, byte ve float, double ‘ın bazen isterlerimizi karşılamadığı durumlar var. Daha fazla bilgi

The post BigInteger BigDecimal Nedir, Nasıl kullanılır ? first appeared on Ümit KÖSE.

]]>
BigInteger BigDecimal dersine hoşgeldiniz, Int, long, short, byte ve float, double ‘ın bazen isterlerimizi karşılamadığı durumlar var. Daha fazla bilgi için Kotlin özelinde anlattığım Numbers dersini inceleyebilirsiniz. Ders için Tıklayın.

2 üzeri 64 -1 sayısı long’un alacağı en yüksek değerdir, double içinde geçerli bu durum. Peki üstü bir sayı gelirse ne olacak. İşte bu durumlarda bizi kurtaracak olan şey bigInteger, bigDecimal sınıfları.

bigInteger, bigDecimal sınıfları değişmeyen (immutable) ve üzerinde her işlem yaptığınızda yeniden nesne oluşturmanızı gerektiren sınıflardır.

Bir değeri bigInteger’a atamak için valueOf değerini kullanıyoruz. başka bir sınıf eğer bigInteger değerini almak isterse intValueOf, longValueOf ile tip dönüşümü yapabilir.

Şimdi hadi birlikte örneklerimizi yapalım.

12312412412412415124124213123123124123123123123 -> sayısını long, int ile ifade edebilir misiniz ?

edemeyiz, bunu bigInteger’la ifade etmek için :

BigInteger bigInteger=new BigInteger("12312412412412415124124213123123124123123123123");

kullanılır.

BigInteger bigInteger=new BigInteger("12312412412412415124124213123123124123123123123");
BigInteger bigInteger1=new BigInteger("121412421");

System.out.println(bigInteger1.min(bigInteger));

for (int i =1;i<9999999;i++){
bigInteger = bigInteger.add(BigInteger.valueOf(i));
}

System.out.println(bigInteger);

Misal bigIntegerlar arasında matematiksel işlemler yapabilirsiniz.

Aynı işlem ‘i bigDecimal içinde uygulayabiliyoruz.


BigDecimal bigInteger=new BigDecimal("12312412412412415124124213123123124123123123123.0");
BigDecimal bigInteger1=new BigDecimal("121412421.0");

System.out.println(bigInteger1.min(bigInteger));

for (int i =1;i<9999999;i++){
bigInteger = bigInteger.add(BigDecimal.valueOf(i));
}

System.out.println(bigInteger);

Yazımızda sona geldik, okuduğunuz için teşekkür ederiz.

The post BigInteger BigDecimal Nedir, Nasıl kullanılır ? first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/biginteger-bigdecimal-nedir-nasil-kullanilir/feed/ 0 2862
JAVA JAR Dosyası Oluşturma ve Jar Çalıştırma https://umiitkose.com/2021/05/java-jar-dosyasi-olusturma-ve-jar-calistirma/?utm_source=rss&utm_medium=rss&utm_campaign=java-jar-dosyasi-olusturma-ve-jar-calistirma https://umiitkose.com/2021/05/java-jar-dosyasi-olusturma-ve-jar-calistirma/#respond Tue, 18 May 2021 19:10:00 +0000 https://umiitkose.com/?p=2844 Merhaba Arkadaşlar, Bugün java ‘da jar dosyası oluşturmayı ve oluşturduğumuz jar dosyasını projemizde çalıştırmayı göreceğiz. Argümanlı bir örneğimiz olacak. Intellij

The post JAVA JAR Dosyası Oluşturma ve Jar Çalıştırma first appeared on Ümit KÖSE.

]]>
Merhaba Arkadaşlar, Bugün java ‘da jar dosyası oluşturmayı ve oluşturduğumuz jar dosyasını projemizde çalıştırmayı göreceğiz. Argümanlı bir örneğimiz olacak.

Intellij IDEA ‘da boş bir proje oluşturun. Projeniz JAVA SE olsun.

İçerisine Main.java dosyasını ekleyin ve main metodu yazın.

public class Main {
    public static void main(String[] args) {
        System.out.println("Merhaba Jar, Ben Çalıştım.");
    }
}

Jar dosyası oluşturmak için:

File- Project Structure açın. Artifacts ‘a gelin.

Sonrasında + Tuşu ile JAR ve From modules with dependencies ile jar ‘ı oluşturun.

Apply diyerek çıktık.

Build Arfacts dediğimizde artık aşağıdaki gibi bir jar dosyamız elimizde.

jar dosyasını linux ‘ta jdk yüklü olan bir yerde java -jar jar-example.jar ile çalıştırabilirsiniz. Burada büyük ihtimal 2 tür hata alınabilir.

1-> No Main Classes Found hatası alırsanız bilin ki yukarıdaki main metot yok.

2-> “no main manifest attribute” hatası alırsanız kullanıdığınız yapıya ait çözüm için : https://stackoverflow.com/questions/9689793/cant-execute-jar-file-no-main-manifest-attribute incelemenizi öneririm.

Kısaca çözüm ise aşağıdaki gibi jar oluştururken manifest ‘i seçin. Denediğinizde hata devam ediyor olacak. Bu hata çözümü içinde, Manifest src/main/java ‘da oluşuyor, bunu src/main/resources klasörüne alın. sorun çözülür.

Şimdi java ‘yı çalıştırdık. Peki argüman nasıl alıcaz. Argüman durumunu anlatıcak olursam,

java -jar java-example.jar biseyYap diye ilgili jar ‘ı çalıştırdınız. biseyYap burada jar ‘a verilen bir argümandır. Bu argümanla kodunuzdaki main metotu içerisinde herhangi bir şey yapabilirsiniz. Yeter ki siz bir sorun tanımlayın.

Burada String dizisinin programda Args değişkeni ile argüman alınıyor. Yani siz bir jar dosyası oluşturacaksınız. string[] args dizisini kullanarak gelen argümanın değerine göre kontrol yapabilirsiniz.

Örneği ise, aşağıdaki gibi kod yazdım.

public class Main {
    public static void main(String[] args) {
        if(args[0].equals("biseyYap")){
            System.out.println("Birşey yaptım");
        }
    }
}

Çalışması içinde Edit configurations kısmında Program Arguments ‘e argümanımı geçtim. biseyYap argümanı geçmeniz gerekiyor.

Çalıştırdık, ve sonuç. Ekranda bişey yaptım cevabı görülecektir.

Kısaca java ‘da jar oluşturmayla ilgili çok temel bilgileri paylaşmış bulunuyorum.

İyi Okumalar.

The post JAVA JAR Dosyası Oluşturma ve Jar Çalıştırma first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/java-jar-dosyasi-olusturma-ve-jar-calistirma/feed/ 0 2844
Tip Nedir ? Dinamik ve Statik Tipler & Derlenen Yorumlanan Diller https://umiitkose.com/2021/05/tip-nedir-dinamik-ve-statik-tipler-derlenen-yorumlanan-diller/?utm_source=rss&utm_medium=rss&utm_campaign=tip-nedir-dinamik-ve-statik-tipler-derlenen-yorumlanan-diller https://umiitkose.com/2021/05/tip-nedir-dinamik-ve-statik-tipler-derlenen-yorumlanan-diller/#respond Mon, 17 May 2021 18:56:00 +0000 https://umiitkose.com/?p=2838 Merhaba Arkadaşlar, Bir programlama dili öğrenmeye başladık, ilk öğrendiğimiz konu değişkenler, bir değişkenin alabileceği değerler kümesini ise tip olarak öğrendik.

The post Tip Nedir ? Dinamik ve Statik Tipler & Derlenen Yorumlanan Diller first appeared on Ümit KÖSE.

]]>
Merhaba Arkadaşlar,

Bir programlama dili öğrenmeye başladık, ilk öğrendiğimiz konu değişkenler, bir değişkenin alabileceği değerler kümesini ise tip olarak öğrendik.

Örneğin bir sayı ise int, double, float, short vs. gibi primitive tipli değişkenlerimiz olabilir.

a diye bir değişkenimiz ve değeri 3. a ‘nın tipi nedir ? sayısal bir değer alan bir tip olması beklenir değil mi ?

a ‘nın sayı olduğunu programlama dili nasıl anlıyor ? Kısaca Tip, verinin mi değişkenin mi bir özelliğidir ?

Örnek olarak 2 tane değişken tanımlayalım.

int a = 3;

a=3

burada işte Tip ‘ler 2 ‘ye ayrılarak açıklanıyor.

1.Statik Tipler : Derleme zamanında tip ‘i belirlenen ve çalışma zamanında değişmeyen tip türü statik tip ‘tir. C/C++, Go gibi diller derleme ve çalışma zamanında tip ‘in analizlerini yapıyor. IDE size type ‘le ilgili hataları compile ettiği zaman söylüyor. (java ‘ya strong typed’da denir. Kuralları keskindir)

2. Dinamik Tipler : a=3 dediğimizde a ‘nın tip’nin ne olduğu derleme zamanında bilinmez. Değişkenin tip ‘i yoktur, tip bilgisi burada veriye aittir. Yani derleme zamanında tipinin olmadığı, çalışma zamanında tipinin belirlendiği ve değişebildiği diller tipsiz, dinamik tipli dillerdir. Örneğin Python, Javascript gibi diller.

Aslında şunu diyebiliriz. Derlenen diller tipli, yorumlanan diller tipsiz’dir. Tabi bu zorunlu değildir. Derlenen, yorumlanan dil nedir ?

Bilgisayar bizim konuştuğumuzdan biraz farklı konuşuyor. Bizim yazdığımız kodu anlamıyorda low level olan bir dil ‘i işlemciler işleyebiliyor. Bunun için bizim yazdığımız programı low level ‘a dönüştürmemiz gerekiyor.

Low level ‘a neden dönüştürme ihtiyacı duyuyoruz diyorsanız, cevabı her işletim sistemi farklı dosyaları çalıştırır. Örneğin windows .exe dosyasını çalıştırırken, Linux ‘ta .out çalıştırılır. Biz işte her bir işletim sistemi için bişeyler yazmak yerine compiler low level ‘a bizim yerimize dönüştürüyor.

Derlemek : Yazmış olduğumuz kodu alıp farklı bir formata dönüştürmektir. Bu formata dönüştüren araca derleyici denir. Örneğin java derleyicisini kullanarak .java dosyalarını .class dosyalarına dönüştürür. Derleyicilerin bize sağladığı en büyük fayda kodun çalışma zamanında önce derleme zamanındaki hataları görerek kodumuza müdahale etme imkanı vermesidir. Bu özellik java gibi sert kurallara sahip bir dil için fayda sağlamaktadır. Sürekli kod yazıyoruz ama hata çıkıyor. Bunu siz her kodu çalıştırdığınızda mı görmek istersiniz, yoksa bize bir uyarıcı bunu söylesin düzeltelim mi. İşte bu uyarıcı derleyici oluyor.

Örn : Fortran, Go, Pascal, C++

Yorumlamak: Bir kod yazdık, kodun satıları incelenerek bunun byte code’a çevirilmesine yorumlamak deniyor. Makine kodu oluşturmadan direk çalıştırıyoruz. Derlenen dillere göre daha yavaştır.

Örn : PHP, Python, Ruby, Javascript

Burada php, python vs derlenmiyor diye düşünmüyor. Direk olarak bu kodu yazıp çalıştırabilirsiniz. IDE vs kullanılmadığı için bu kanıyı kabul olarak görün. Eğer bir Python, php IDE ‘si kullanıyorsanız kodlar önce derlenecektir, sonrasında ise yorumlanacaktır. Yani sizin kod üzerinde yapmış olduğunuz her hata derleyi otomatik derlediği için size görünecektir.

Derlenen dili farklı bir işletim sisteminde çalıştırmak için yeniden derlemeye ihtiyaç duyarken, yorumlanan dilde buna ihtiyaç yoktur. Platform’dan bağımsızdır. Yorumlanan dil işletim sistemi üzerinde direk çalışır. Java ‘da yorumlanan bir dil olduğu için bilgisi aşağıdadır, java ‘nın .class dosyası olan her platformda çalışması beklenir.

Hem yorumlanan, hem de derlenen dil var mıdır ? Evet vardır, Java hem derlenir, hem yorumlanır. Java derleyeci ile hatadan arınıyor, bytecode ‘lardan oluşan .class dosyalarına dönüştürüyor. JVM ile de bytecode ‘lar çalışma zamanında yorumlanıyor. JVM yorumlanan dillerde yaptığı gibi direk okuduğunu çalıştırıyor. Bu durum bize hem platformdan bağımsızlık, hemde kodu etkin bir şekilde yazmayı sağlıyor.

Yazıyı okuduğunuz için teşekkür ederim.

Kaynakça ve daha fazla bilgi için Akın Kaldıroğlunun Nesne merkezli programlamaya giriş dersini öneririm.

https://www.udemy.com/course/java-ile-nesne-merkezli-programlamaya-giris/

https://medium.com/@msenell/derleyi%CC%87ci%CC%87-compiler-ve-yorumlayici-interpreter-%C3%BCzeri%CC%87ne-bi%CC%87r-deneme-d8656619ef6

The post Tip Nedir ? Dinamik ve Statik Tipler & Derlenen Yorumlanan Diller first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/tip-nedir-dinamik-ve-statik-tipler-derlenen-yorumlanan-diller/feed/ 0 2838
Php ‘de Metot ve Değişken Çağırma https://umiitkose.com/2021/05/php-de-metot-ve-degisken-cagirma/?utm_source=rss&utm_medium=rss&utm_campaign=php-de-metot-ve-degisken-cagirma https://umiitkose.com/2021/05/php-de-metot-ve-degisken-cagirma/#respond Thu, 06 May 2021 18:42:11 +0000 https://umiitkose.com/?p=2834 Php için bir sabit’in, static bir değişkenin, static bir metotun ya da normal bir değişkenin this ile mi yoksa self

The post Php ‘de Metot ve Değişken Çağırma first appeared on Ümit KÖSE.

]]>
Php için bir sabit’in, static bir değişkenin, static bir metotun ya da normal bir değişkenin this ile mi yoksa self ile mi çağırılacağı bazen kafa karışıklığı yaratabiliyor. Aşağıdaki örnekte nasıl çağrıldıklarıyla ilgili bilgileri paylaşmaktayım.

class DegiskenCagirma {

const sabit = 'sabit' ; // sabitlere dolar işareti koyulmuyor.

static $statik = 'static' ;

public $pub = 'public' ;

private $priv = 'Private' ;

protected $prot = 'Protected' ;


public function goster () {

echo ' sabit: '.self::sabit;

echo ' static: '.self::statik;

echo ' public: '.$this->pub;

echo ' private: '.$this->priv;

echo ' protected ornegi : '.$this->prot;


}
//static metot..

static function gizle() {

return false;

}

}


$ornek = new DegiskenCagirma( ) ;

$ornek->goster( ) ;


sinifornegi::gizle(); // statik metodlar nesne oluşturulmadan da böyle kullanılabilinir.

$ornek->gizle(); // boyle de kullanabiliriz.

The post Php ‘de Metot ve Değişken Çağırma first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/05/php-de-metot-ve-degisken-cagirma/feed/ 0 2834
FTP Nedir ? & SFTP Nedir ? Kullanımları.. https://umiitkose.com/2021/04/ftp-nedir-sftp-nedir-kullanimlari/?utm_source=rss&utm_medium=rss&utm_campaign=ftp-nedir-sftp-nedir-kullanimlari https://umiitkose.com/2021/04/ftp-nedir-sftp-nedir-kullanimlari/#respond Tue, 20 Apr 2021 15:08:00 +0000 https://umiitkose.com/?p=2831 Komut satırından kullanan var mı bilemiyorum fakat ssh kısmında eksik olduğum protokol olan ftp ve sftp konuları üzerine yazı yazmak

The post FTP Nedir ? & SFTP Nedir ? Kullanımları.. first appeared on Ümit KÖSE.

]]>
Komut satırından kullanan var mı bilemiyorum fakat ssh kısmında eksik olduğum protokol olan ftp ve sftp konuları üzerine yazı yazmak istedim.

21 Numaralı portu kullanan ftp ve 22 numaralı portu kullanan sftp ikiside dosya transferi için kullanılıyor. Birinde başında “s” harfi dikkatinizi çekmiştir. Secure (Güvenli) ifade ediyor. Ona daha sonra değineceğiz.

FTP -> İnternete bağlı 2 bilgisayar arasında dosya transferi hizmeti veren protokol.

Komutlar ile iki bilgisayar arasında dosya/veri paylaşımı yapabiliyorsunuz.

FTP yapabilmek için;

  • İki makinenin internet adresine
  • İlgili dosyaların yolu vs
  • İnternet erişimi ve ftp kurulmuş bilgisayar

FTP Kullanımı :

ftp ya da sftp ile makine adı yazılması.

ftp makineadı || sftp makineadı

SFTP ‘nin ftp ‘den farkı :

SFTP, FTP’den farklı olarak, birden fazla dosya transfer işlemi, aktivite kaydı, temel dizin işlemleri (oluşturma, listeleme vb.), sunucu üzerinde dosya erişimi düzenleme ve uzak sunucular arasında dosya işlemleri yürütme gibi avantajlar sunan bir dosya transfer protokolüdür.

FTP ve SFTP Komutları :

  • Dir : dosyaları listeleme
  • Ls : dosyaları sayfa sayfa ya da detaylı bilgi halinde göstermeye yarar
  • Get : Dosyaları almaya
  • Mget : birden fazla dosya almaya
    • Örneğin mget zip.* || mget a.txt b.txt
  • Put: Dosya göndermeye yarar
  • Mput : Birden fazla dosya gönderme, mget ile aynı kullanım.
  • Delete: dosya silme
  • Binary: zip, exe, resim formatlı uygulamaların dosya aktarımında binary modunda gönderileceğini söyler.
  • Mkdir: ftp yapılan yerde dizin oluşturma
  • Rmdir : ftp yapılan yerde dizin silme
  • Lcd: ftp ortamından çıkmadan, kendi makinenizde dizin değiştirmenizi sağlar
  • Close : FTP Bağlantısını kapatır.
  • Quit: ftp ortamından çıkar ve bağlantıyı kapatır.

En popüler ftp programları : Filezilla, Winscp kullanabilirsiniz.

The post FTP Nedir ? & SFTP Nedir ? Kullanımları.. first appeared on Ümit KÖSE.

]]>
https://umiitkose.com/2021/04/ftp-nedir-sftp-nedir-kullanimlari/feed/ 0 2831