Lambda, programlamada herhangi bir tanımlayıcıya gerek duymayan fonksiyondur. Bir fonksiyonu tek bir satırda yazabilmenize olanak sağlar. Lambda, fonksiyonel programlama dillerinde veya diğer birinci sınıf fonksiyonlara sahip dillerde bulunabilir. (C, C++, Java, Kotlin…)
Lambda fonksiyonunu kod olarak nasıl yazarız ona bakalım.
Lambda fonksiyonu,
(Parameter1, Parameter2) -> { Code Block } şeklinde tanımlanır.
Örneğin lambda kullanmadan kullanıcı adını alan bir kod parçacığı oluşturalım.
fun name(myName: String) { print(myName) } name(“Nisa”)
Aynı örneği lambda fonksiyonu ile gerçekleştirelim.
val name = { myName: String -> print(myName) } name(“Nisa”)
Gördüğünüz üzere Lambda fonksiyonları sayesinde daha az kod ile daha hızlı geliştirme sağlayabilirsiniz.
Higher-Order Fonksiyonlar
Higher-Order fonksiyonlar parametre olarak bir veya birden fazla fonksiyon alabildiği gibi sonuç olarak bir fonksiyonu da geri döndürebilirler.
Higher-Order Fonksiyonları kod olarak nasıl yazarız ona bakalım.
Örnek olarak, iki sayı alan ve sonucunda bu iki sayının toplamını bize döndüren bir Higher-Order fonksiyonu yazalım.
fun main() {
higherOrderFunc("Toplama",15,5, ::addition)
}
fun higherOrderFunc(operationType: String,
num1 : Int,
num2 : Int,
operation:(Int,Int) -> Int) {
println(operationType)
print("İşlem sonucu : ")
println("${operation(num1,num2).toString()}")
}
fun addition(a:Int,b:Int) : Int{
return a+b
}
Bu kod parçacığında Higher-Order fonksiyonumuz operationType, num1, num2 ve operation fonksiyonunu parametre olarak alıyor. Bu fonksiyon sonucunda bize ilk olarak işlem türünü (operationType) yazdırarak aldığı 2 sayıyı işleme sokuyor ve sonucu bize geri döndürüyor.
Umarım sizler için faydalı bir yazı olmuştur. 🤓
Son olarak, Temel Programlama Notlarına ulaşabileceğiniz bir repo bırakıyorum.
Enum sınıflar numaralandırma işlemlerinin yazılımdaki karşılıklarıdır. Tek bir tipteki veriyi gruplandırmak ve daha temiz kod yazabilmek adına enum classları kullanabiliriz.
Proje içerisinde bazı durumlarda koşula göre uygulamayı çalıştırmak gerekebilir. Örneğin uygulamamızda hem admin hem de user’a göre özelleştirilmiş iki farklı ekran var. Burada admin tipine 0 değerini, user tipine de 1 değerini atayarak gerekli koşul sağlandığında o ekranı gösterebiliriz. Peki nasıl yazabiliriz?
if(type==0) { //admin tipinde gösterilecek olaylar } else if(type==1) { //user tipinde gösterilecek olaylar }
Gördüğünüz üzere bu kod çok da temiz ve anlaşılır bir kod değil. Bir süre sonra 1 veya 0 ifadesinin hangi tipe ait olduğunu bulmak işimizi zorlaştırabilir. Tam da bu noktada enum classları kullanırız.
Gelin bir enum class oluşturalım;
enum class USER_TYPE(val id: Int) {
ADMIN(0),
USER(1)
}
if (type == USER_TYPE.ADMIN) {
//admin tipinde gösterilecek olaylar
}
else if (type == USER_TYPE.USER) {
//user tipinde gösterilecek olaylar
}
Bu kod bir önceki kod blogumuza göre çok daha anlaşılır bir yapıya sahip. Artık admin veya user kullanıcısının id numarasını kolayca kontrol edebileceğimiz bir USER_TYPE class’ımız bulunmakta.
Sealed Classes Nedir?
Sealed classlar enum classların genişletilmiş halidir. Enumlar tek bir değişken tipi tutabilirken Sealed sınıflar içerisinde farklı veri tipleri barındırabilir. Enum classlardaki tek tip değişken sorunuyla karşılaşmamız durumunda gerçekleştirmek istediğimiz birçok işlemi gerçekleştiremeyebiliriz. Bu durumda ise sealed classlardan faydalanabiliriz.
Örneğimizi ilk olarak enum classları kullanarak gerçekleştirmeye çalışalım.
Öğrenci ders kayıt sistemimiz olsun ve öğrenciler derslere kayıtlı olsun.
Lessons adında bir data class oluşturalım ve öğrencinin ders kayıt sistemi üzerinden bu dersleri görüntüleyebiliyor olalım.
data class StudentInfo(var name: String, var age: Int)
Bu bilgileri enum class içerisinde parametre olarak alacağız.
Sınıfımızda iki öğrenci ve kayıt oldukları dersler bulunuyor. Burada Nisa isimli öğrenci Python dersinde bulunan kaydını iptal etmek istiyor. Bu durumda sonradan silinen kayıtların bilgisini de tutmak isteyebiliriz.
Örneğin derslerden ayrılan kişiyi DeletedRegistrations olarak adlandıralım. Dersten kaydı silinen öğrencilerin o derse ait bilgileri elimizde bulunmadığı için elimizdeki parametreler boş olarak kalacaktır. Enum classlar tek bir veri türü içermesinden dolayı ise DeletedRegistrations’ı kullanmamız mümkün olmayacaktır. Çünkü enum class’ımız bizden bir parametre bekliyor olacak. (StudentInfo(var name: String, var age: Int))
Bu durumda ise devreye sealed classlar girmektedir. Sealed class kullanarak;
sealed class StudentRegistrations
data class PythonLesson(val info: StudentInfo) : StudentRegistrations()
data class AndroidLesson(val info: StudentInfo) : StudentRegistrations()
object DeletedRegistrations : StudentRegistrations()
bu şekilde DeletedRegistrations objemizi oluşturabilir ve kullanabiliriz.
Enum Class ile Sealed Class Farkları
Enumlar tek bir değişken tipi tutabilir, Sealed Sınıflar ise her bir state için farklı değişken tipi tutabilirler.
Enum classlarda tanımlanan bir parametre varsa tüm değerler oluşturma anında bu veri set edilmeli. (Sistemden bir kişiyi sildik deletedUser isimli değişkene silinen kişiyi atadık fakat burada değerler boş olacağından dolayı parametreler boş kalacaktır. Enum classlarda da tek tip veri barındırabildiğimiz için bunu yapabilmek mümkün olmayacaktır. Sealed class’ta ise bu işlemi gerçekleştirebiliriz.)
Sealed classlar’dan nesne üretemeyiz. (Soyut oldukları için)
Enumlar sabit değerler ifade etmek için kullanılır.
enum class USER_TYPE(val id: Int) { ADMIN(0), USER(1) }
Bu yazımda kendi edindiğim bilgi ve tecrübelerden yola çıkarak, mobil geliştirme sürecine yeni başlayacak veya benimle birlikte bu yolda olanlar için mini bir yol haritası olmak istedim. Aslında tam öyle de denilmez belki ama ne denir bilemedim, yazının sonunda kendiniz karar verirsiniz. 😂 Eksik gördüğünüz yerleri tamamlamaktan lütfen çekinmeyin. 🙃
İlk olarak en temelden alacağım, isterseniz geçin buraları. 😁
Mobil Uygulama Nedir?
Mobil cihazlarda kullanılmak üzere, her an elimizin altında bulunan akıllı mobil cihazlar üzerinden kolayca bilgiye ulaşma imkanı veren yazılımlar, mobil uygulamalardır.
Örneğin, telefonunuz üzerinden alışveriş yaptığınız, bankacılık işlemlerinizi hallettiğiniz, oyun oynadığınız, mesajlaştığınız platformların hepsi birer mobil uygulamadır. Bu uygulamaları geliştiren kişiler ise“mobile developer” olarak adlandırılır. Yani biz. 😁
Yol haritasına geçmeden önce değinmem gereken bir yer daha olduğunu düşünerek mobil uygulamalarda işletim sistemleri başlığına ufacık bir değineceğim. 🌸
Mobil Cihazlar için İşletim Sistemleri
Mobil cihazlarımızda popüler olarak kullanılan iki tür işletim sistemi bulunmaktadır. Bu İşletim sistemleri : Android ve iOS işletim sistemleridir.
Android işletim sistemi, Google tarafından Linux üzerine inşa edilerek geliştirilmiştir ve Android işletim sistemindeki uygulamalara Google Play Store, Huawei App Gallery, Amazon Appstore, Samsung Galaxy Apps gibi uygulamalar üzerinden erişilebilir.
iOS işletim sistemi ise Apple tarafından üretilen bir işletim sistemi olup uygulamalara Apple App Store üzerinden erişilebilir.
Uygulama yayınlama kısmında, Android için tek seferlik $25, iOS için ise yıllık olarak ödenen $100 gibi bir ücreti bulunuyor.
Minik bilgileri de aldık, süper. 😁
Platformlar arasında Android’i seçtiğinizi varsayıyorum ve peki neden Androidişletim sistemi diye soruyorum. (Kendime)
Öncelikle Android işletim sistemi günümüzde en çok kullanılan ve açık kaynak olan bir işletim sistemidir. Açık kaynak bir işletim sistemine sahip olması herhangi bir sorun oluştuğunda daha çabuk çözüme ulaşmasına, her geliştiricinin geliştirebilmesine ve özelleştirebilmesine olanak sağlar. Ve son olarak Macbook’suz yazılımcı sayılmasak da Windows ve Linux üzerinde çalışarak da Android Developer olabiliriz. 😂
Peki Android Geliştirmeye Nasıl Başlayabilirim?
Android uygulamalar geliştirmek istiyorum fakat nereden başlayacağımı bilmiyorum. Daha önceden herhangi bir yazılım bilgim yok yapabilir miyim? diye sorularla gelen sevgili arkadaşlarım evet yapabilirsiniz. Nereden başlayacağınız kısmında da şimdi ben yardımcı olmaya çalışacağım. ⭐️
İlk olarak daha önce herhangi bir yazılım deneyiminiz yok ise algoritma mantığınızı geliştirebilmeniz açısından bir süre algoritma üzerinde durmanızı öneririm. Yazılım da bir işlemin gerçekleştirilebilmesi için bir planlama yapılması ve bu plan için de gerekli olan bütün adımların belirlenmesi gerekir. Bu planlamanın terimsel ifadesine de algoritma denir. Dolayısıla algoritma tarafını halletmeniz kod yazmanızda büyük katkı sağlayacağını düşünüyorum.
Peki sonrasında ne yapacağız? Gelin bakalım neler yapıyoruz. 🥳
Programlama Dili
Platformu seçtik, neden Android diye de sorguladık. Sıra geldi ben bu Android serüvenine hangi programlama dili ile başlayabilirim?
Android geliştirme sürecinde aklımıza gelen iki programlama dili var. Bunlar; Java ve Kotlin.
Peki bunların birbirinden artısı veya eksisi nedir?
İlk olarak şunu söylemeliyim ki hiçbir programlama dilinin bir başka programlama diline göre bir üstünlüğü yoktur. Projenizde nelere ihtiyacınız var is bunları değerlendirmeniz gerekir. Geliştirmek istediğiniz proje için en doğru ve en avantajlı dil hangisi ise o kullanılır.
Sorumuza geri dönelim 🙂
Ben Android geliştirme sürecime Java dili ile başlamıştım. Bunun en büyük sebeplerinden biri Java dilini hali hazırda öğreniyor olmam, Backend tarafında birkaç kez çalışıp dile aşina olmamdı. Bunun dışında da Java tarafında hiçbir zaman kaynak sıkıntısı çekmezsiniz. Sizden önce sorulabilecek tüm sorular sorulmuş ve cevaplanmıştır. Java’nın köklü bir dil olması bana bu açıdan çok fayda sağladı.
Kotlin diline gelecek olursak, Java dilinden geçen biri olarak kullanımı, yazımı çok daha kolay. Android geliştirme sürecine yeni başlayacaklar için Kotlin ile başlamalarını öneririm.
Kotlin dili Java dilindeki tüm gereksiz ve uzatılmış işlemleri daha kısa ve kolay şekilde yapmanızı sağlar. Bence ikisinin de birbirine göre avantajları var ama kotlin yazmak işi çok daha hızlı hale getiriyor. Java’da binlerce tanım yapmanız gerekirken, Kotlin çoğu zaman bunu hazır olarak sunar.
Bir projede Kotlin dilinin veya Java dilinin yetmediği durumlar ile de karşılaşabilirsiniz. Bu durumda, Java ve Kotlin yapısı birbirine çok benzer olduğundan bu iki dil arasında herhangi bir sıkıntı yaşamazsınız ve gerektiğinde projeleriniz içerisinde iki dili de aynı anda kullanabilirsiniz.
Java ve Kotlin dilini aynı anda projede kullanabiliyor olmamızın sebebi ise, iki programlama dilinin de JVM üzerinde çalışıyor ve derlenirken byte code’a dönüştürülüyor olmasından kaynaklıdır.
Dil seçimimizi yaptık, artık öğrenme aşamasında o dil ile devam edeceğiz. Peki nasıl ilerleyeceğiz?
Her sene düzenli olarak Android Geliştiriciler için hazırlanan bir yol haritası mevcut. Bu yol haritasına göre ilerleyebilirsiniz. Burada en temelden Android paketleri nedir, mobil geliştirme de hangi diller kullanılır, Manifest dosyası nedir, Activity ve Fragment nedir gibi gibi başlıklar bulunuyor.
Öğrenme aşamasında bu bahsettiğim tüm kavramlar ile karşılaşacaksınız fakat ben yine bir düzene göre bir akış belirlemek istiyorum diyorsanız yol haritasına bakmanızda fayda var ve bence mutlaka bakın. 🥳
Daha detaylı ve yeni başlayanlar için çok daha anlaşılır bulduğum, her konuya tek tıkla ulaşabilir bir yol haritası içinde mutlaka buraya bir bakın. Size çok fazla yardımcı olacaktır. 🌸
Yol haritasında da bulunan ve benim de Android Geliştirme sürecinde en önemli bulduğum iki konu var. Bunlar Android Lifecycle ve Fragment Lifecycle. Bu iki konuyu kavramanız geliştirme aşamasında size çok fayda sağlayacaktır. Eklemiş olduğum gistler üzerinden veya Android Developers üzerinden konulara ait bilgilere ulaşabilirsiniz.
Android Geliştirme Sürecinizde Sık Karşılaşabileceğiniz Kütüphaneler
Retrofit :
REST API’leri Java interfacelerine dönüştürmeye yarayan, sıkıcı AsyncTask bloklarından kurtaran, GET, POST gibi işlemlerinizi annotation ile kolaylıkla halledebilen bir kütüphanedir. Veri alışverişleri gerektiren uygulamalarınızda bol bol kullanacaksınız. 🌸
GSON :
GSON, Java nesnelerini JSON’dan serialize ve deserialize etmek için kullanılan bir Java kütüphanesidir. API’lerle iletişim kurarken Retrofit ile beraber kullanıldığında işleri çok daha basitleştiren bir yapısı vardır.
Room :
SQLite yapısını bize daha kolay hale getiren bir kütüphanedir. Derleme esnasında SQL sorgularını doğrular. Daha anlaşılır ve sade kod yazmamıza olanak sağlar.
Dagger 2 :
Dagger 2, bir dependency injection kütüphanesidir. Sınıfların birbirine olan bağımlılığını azaltmak için kullanılır. Bir sınıf icin gerekli olan bir objeyi sınıfın içerisinde oluşturmaktansa dışarıda oluşturup sınıf içerisine veriyi saglar. Dolayısıyla sınıf nasıl oluşturulduğunu bilmek zorunda olmaz ve bu durumda iki sınıf arasındaki bağımlığı azaltmaya yardımcı olur. Bir projedeki neredeyse en önemli şeylerden biri projenin bağımlılığını en aza indirgemektir.
Hilt :
Dagger’ın üzerine inşaa edilmiş olan hilt kütüphanesi, jetpack tarafından önerilen bir dependency kütüphanesidir. Dagger kütüphanesine göre daha kolay entegre edilir.
Koin :
Bir başka dependency kütüphanesi olan koin ise, kotlin dili yazılmıştır ve basit ve güçlü bir kütüphanedir. Dagger kütüphanesine oranla daha basit bir yapısı vardır.
Glide :
Androidde resimler ile ilgili bir iş yapacaksanız Glide ile tanışmanızda da fayda var. Ana amacı internet üzerindeki bir resmi indirip imageView’de göstermenize yarayan bu kütüphanenin bunun yanında indirilen görseli önbelleğe alma, boyutlandırma, herhangi bir hata durumunda çıkacak olan görseli belirleme, görseli döndürme, sadece network üzerinden değil cihaz içersinde bulunan bir görselide gösterebilme gibi özelliklere sahip.
Picasso :
Picasso bizler için resmin yüklenmesi ve işlenmesi olaylarını kolaylaştıran kullanımı kolay bir kütüphanedir. Bu işlevlerinin yanı sıra; indirilen görseli önbelleğe alma, boyutlandırma, herhangi bir hata durumunda çıkacak olan görseli belirleme, görseli döndürme, sadece network üzerinden değil cihaz içersinde bulunan bir görseli de gösterebilme gibi özelliklere sahip.
Coil (Coroutine Image Loader) :
Kotlin Coroutines tarafından desteklenen bir görüntü yükleme kütüphanesi olan coil, hızlı, kullanımı kolay ve modern bir kütüphanedir.
RxJava :
RxJava bir reactive programming kütüphanesidir. Observer/Observable mantığıyla, asenkron ve event-base tabanlı çalışır.
Coroutines :
Coroutines kütüphanesi, asenkron olarak çalışan kodu daha basit hale getirmemize olanak sağlayan bir asenkron tasarım modelidir. Geliştirdiğimiz uygulamanın yanıt vermemesi veya gelen cevapların uzun sürmesi gibi durumlarda kullanıcı etkileşimini engellemek adına arka planda işlemleri yürütmemize yardımcı olan kütüphanedir.
Mimari Yapılar (Architecture) :
Öncelikle neden bir mimari yapıya ihtiyaç duyarız? Mimari yapıları açıklamadan önce buna bir göz atalım.
Teste dayalı uygulama geliştirmeyi kolaylaştırır.
Yazma ve okuma için kodları basitleştirir.
Katmanlı yapısı sayesinde karışıklığı engeller.
Tüm katmanlar arasındaki bağımlılığı azaltmaya yardımcı olur.
Mimari yapılar ve detayları ile ilgili daha fazla bilgi için repoya göz atabilirsiniz.
Design Patterns (Tasarım Desenleri) :
Tasarım desenleri, sıkça karşılaşılan ve birbirine benzeyen sorunları çözmek için geliştirilmiş esnek kalıplardır.
Programlama dili gözetmeksizin; sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl olmaları gerektiğini açıklayan yöntemlerdir.
Tasarım desenleri bize ne sağlar?
Hepimiz bir şey kodlarken gözümüzden kaçan, yada o an hatırlayamadığımız ve ileride bize sorun teşkil edecek hatalar yapabiliriz. İlk başta bunu engeller. Ortak bir dil konuştuğumuz için özellikle takım çalışmalarında büyük kolaylık sağlar. Bir koda baktığınızda “bu adam hangi kafayla bunu yazmış?” sorununu çözer. 😁
Tasarım desenleri ve detayları ile ilgili daha fazla bilgi için repoya göz atmayı bence ihmal etmeyin. 🙂
Web Servis :
Verilerinizi web sayfanız dışında tüm cihazlara göndermek istediğinizde devreye Web Service kavramı girer. Web Service ile platform bağımsız tüm cihazlara veri aktarımı gerçekleştirilir. Facebook’da mesajlaşırken karşılıklı olarak mesajların hem web sayfasına hemde Facebook Messenger uygulamasına gelmesini Web Service sağlar. Messenger uygulaması, Android, IOS, Wİndows Phone işletim sistemli cihazlarda çalışması Web Service kavramının gücünü kanıtlamaktadır.
Kısaca Web servisler platform bağımsız olmak üzere bir çok uygulama, cihaz ya da nodeun birbiri ile iletişim kurmalarını sağlayan yapılardır.
Daha fazla bilgi için repoyu ziyaret edebilirsiniz. 🙂
Bunlar öyle hap bilgi olsun ayak üstü diye ekledim, projelerinizde kullanırken daha anlaşılır olacaktır. 😄
Bunlar dışında, bol bol proje geliştirin o konuyu anlayana dek gerekirse bakarak yapın. Bir süre sonra zaten öğrenmiş olacaksınız. 🥳
Java dili ile ilgili bilgi almak isterseniz hazırlamış olduğum repoya da bir göz atabilirsiniz.
Kotlin dili ile ilgili soru cevap şeklindeki bilgilere de gist üzerinden ulaşabilirsiniz.
Android Geliştirme sürecinizi tamamladınız ve artık Google Play Store’a uygulama çıkmak isterseniz de şuradan size yardımcı olabilirim. 🥇
Herkese merhabalar, bu yazımda google play’de uygulamarımızı nasıl yayınlayabileceğimizden bahsedeceğim. 🤓
Uygulama geliştirme süreci bittiğinde en keyifli kısım uygulamamızı yayınlama sürecidir. Gelin bu keyifli sürece nasıl dahil olabiliriz ona bakalım. 😋
İlk olarak yayınlamak istediğimiz uygulamamızı Android Studio üzerinden açıyor ve Gradle Scripts kısmına geliyoruz. 👀
Module alanında bulunan build.gradle kısmına giriyoruz ve burada defaultConfig ayarlarında bulunan versionCode ve versionName kısımlarını düzenliyoruz. ilk defa yayına çıkacağınız bir uygulama ise 1 ve 1.0 olarak kalabilir fakat düzenleyip güncelleme attığınız bir projede bu kısımları düzenlemeniz gerekmekte. örneğin 1.0 ‘ı 1.1 yapmak gibi. 🤪
Gerekli alanları tamamladıktan sonra sync now diyerek bu kısmı tamamlamış oluyoruz. 😎
Gelelim apk veya bundle çıkarma sürecimize. 🤩
Google play de bir uygulama yayınlamak istiyorsak, ide’mizde bulunan Build sekmesinde Generate Signed Bundle/APK seçeneğine tıklıyoruz. 🤌🏻
Burada karşımıza iki seçenek çıkıyor. App bundle ve APK. 😱
Bu iki dosya arasındaki farklara bakacak olursak,
→ App Bundle dosyaları, apk dosyalarına göre daha küçük boyutlara sahiptir.
→ App Bundle dosyaları kurulum esnasında daha hızlı kurulur. Ve kurulduktan sonra diskte daha az yer kaplar.
→ App Bundle yapısı ile isteğe bağlı dağıtım sunulabilir.
→ Google Play tarafında tercih edilen paket yapısı App Bundle yapısıdır.
APK veya Bundle ı seçtikten sonra karşımıza şöyle bir alan çıkıyor. 🧚🏻♀️
Daha önceden yayınlamış olduğumuz bir uygulama ise bu önceden oluşturmuş olduğumuz .jks dosyamızı ve gerekli alias ve passwordleri kaybetmememiz gerekiyor. 🙅🏻♀️
İlk defa yayına alacağımız bir proje ise create new kısmından, .jks uzantısını vererek bir dosya oluşturuyoruz. Bu adımlarda eklenilen alias ve password kısmını unutmayın ve jks dosyanızı kaybetmeyin. ❌
Ardından next diyor ve şöyle bir ekran ile karşılaşıyoruz,
Google play’de yayınlama esnasında release kısmından build almamız yeterli. Finish diyerek build alınmasını bekliyoruz. 👵🏻
Sıra geldi artık google play store işlemlerine. 🏆
Play store a giriş yapıp güncelleme atacağımız uygulamaya giriyoruz. Veya yeni bir uygulama ise bu sağ köşede bulunan uygulama oluştur butonuna tıklıyoruz. 🛠
Oluştur butonuna tıkladıktan sonra gerekli alanları dolduruyoruz. 📝
Bu adımdan sonra da kontrol panelindeki adımları tamamlamamız gerekiyor ve sonrasında önceden yayınlanmış olan bir uygulamayla eşit hale geliyoruz ve yazının bundan sonraki kısmında yayınlanmış yayınlanmamış diye ayıra ayıra anlatmama gerek kalmıyor. 💃🏻
Buraya kadar her şey tamam ise son adıma geçelim. 🎖
Sol menüde bulunan üretim kategorisine giriyoruz ve sağ üstten yeni sürüm oluştur diyoruz.
Sonraki adım da ise build aldığımız apk veya bundle’ı ve sürüm notlarını ekleyerek kaydet diyoruz.
Ardından sürümü inceleme butonu aktif hale geliyor ve ona tıklayarak artık google play’de onaya göndermiş oluyoruz. Onaylandıktan sonra kullanıcılara açık hale geliyor. 🥰
İlk yayınlama tecrübeniz hayırlı olsuuunn. Umarım sizlere yardımcı olabilmişimdir. 🥳
Bu yazımda Android Studio’da en çok kullandığım ve sizler içinde eğlenceli/yararlı olabileceğini düşündüğüm pluginleri listeleyeceğim. ✍️
Hadi başlayalım. 😅
⏰ Tabnine
Android Studio kullanıp hala Tabnine pluginini kullanmıyorsanız zamanınıza yazık etmişsiniz diyebilirim. Build sürelerimiz zaten yeterince zamanımızı alıyor. 🥲
Tabnine, kodlarımızı daha kolay ve hızlı bir şekilde tamamlamamıza yarayan, oldukça yararlı bulduğum ve zamandan tasarruf ettiren müthiş bir plugin. Github Copilot’un Android hali gibi düşünebilirsiniz. 🥰
Android Studio’nun yavaşlığı üzerine bir de emülatör yavaşlığı mı? 🥴 Tam da bu esnada sevgili Scrcpy yardımımıza koşuyor. Bu plugin ile fiziksel cihazlarınızın ekranını IDE üzerinden görüntülenmesini sağlayabilirsiniz.
JSON dosyalarını sınıflara ayırmak mı? Ah ne yorucu ve sıkıcı bir iş derken tam da bu esnada bu plugin bizlere çok fayda sağlıyor. Bu plugin ile JSON’ları daha hızlı bir şekilde Kotlin data sınıflarına dönüştürebiliyoruz.
Android tarafında push işlemleri için gerekli verileri ekledikten sonra Android Studio üzerinden kolay bir şekilde push notification gönderme olanağı sağlayan güzel bir plugin.
Şimdiye kadar olan pluginlerimiz faydalı kısımlardı şimdi gelelim biraz Android Studio’yu renklendirme kısmına, bence bu kısım daha keyifli. 🤩
🌈 Nyan Progress Bar ❤️❤️❤️❤️
Kendisiyle tanıştığımdan beri kariyer hayatımı renklendiren aşık olduğum plugindir kendisi. 😂 Build süresi malum uzunca zamanımızı aldığı için ekranda ordan oraya giden bir kedi görmek benim hoşuma gidiyor, sizinde gideceğinden eminim. O yüzden buyrun aşağıdaki linke. 😍
Yukarda bahsetmiş olduğum progress bar’ın pokemonlu hali bu plugin. Her build esnasında farklı bir pokemon karakteriyle karşılaşmak isterseniz bu plugini kullanmalısınızzz.
Herkesin görünce Nisa bu ne dediği ama benim ordan oraya koşan kedi pluginim kadar sevdiğim müthiş pluginlerden biri. Yazdığım kod ortalığı yakar etraf ateş alır diyorsanız benim gibi 💅🏻, bu plugin tam size göre. Kodunuzu yazarken ateşler atıyor, silince ekrana kocaman bir boom yazısı geliyor falan filan ben eğleniyorum. Bence sizde bir bakın. 😎
Bu blog yazısında firebase kullanarak uygulamaya bildirim nasıl gönderilir ondan bahsedeceğim.
Bu işlem için ilk olarak Firebase adresi üzerinden bir hesap oluşturmanız gerekiyor. Kayıt/Giriş işlemleri sonrasında yukarıda bulunan menüden konsola git (Go to Console) seçeneğine tıklıyor ve Add Project seçeneği ile yeni bir proje oluşturuyoruz.
Buraya kadar ki aşamların hepsi firebase üzerinden bir proje oluşturma adımları olduğu için detaylı olarak anlatmadım. 🙂 Gelelim firebase ile push notifications işlemlerimize,
İlk olarak yapılması gereken Firebase Console üzerinden cloud messaging kısımına giriyoruz. Burada hangi platformda push notification entegresi yapılmak isteniyorsa o platform seçilerek devam edilir Biz bu aşamada Android yapacağımız için Android görseli olan ikona tıklamamız gerekmektedir. 🙂
Bu seçim işleminden sonra uygulamamız hakkında bazı bilgiler isteyecek sonrasında ise uygulamamız ile firebase arasında bağlantı sağlayacak olan google-services.json konfigürasyon dosyasını verecektir. Bu dosyayı uygulamanızın dosyasının içinde app paketi altında koymalısınız.
Sync Now demeyi unutmadan devam edelim. 🙂
Sırada bildirim işlemleri 😀
İlk olarak uygulamamızın uygulama modülü dizinindeki project/build.gradle dosyasına aşağıdaki kod parçacığını ekleyerek firebase bildirimleri için gerekli implementasyonu uygulamamıza dahil ediyoruz :
İşlemlerin çoğu tamam 😀 Şimdi Android Studio üzerinden kendi paketlerimiz içinde bir Kotlin/Java class’ı oluşturup Firebase Messaging Service’i özelleştirerek uygulamamız içerisinde kullanacağız. 🙂
MyFirebaseMessagingService class’ı bir Service class olduğu için (FirebaseMessagingService’den extends ettik çünkü.) kendisi otomatik çalışacaktır ve içindeki onTokenRefresh() methodu uygulama ilk kurulduğunda ve Token oluştuğu zaman otomatik olarak çağırılacak olan methoddur.
onTokenRefresh() methodu ise Token değiştiğinde otomatik olarak çalışır .Burada kullanılan token kullanıcının unique ID’si olmaktadır.
MyFirebaseMessagingService.class :
package com.google.firebase.quickstart.fcm.java;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import androidx.core.app.NotificationCompat;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.google.firebase.quickstart.fcm.R;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
/**
* NOTE: There can only be one service in each app that receives FCM messages. If multiple
* are declared in the Manifest then the first one will be chosen.
*
* In order to make this Java sample functional, you must remove the following from the Kotlin messaging
* service in the AndroidManifest.xml:
*
* <intent-filter>
* <action android:name="com.google.firebase.MESSAGING_EVENT" />
* </intent-filter>
*/
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// [START_EXCLUDE]
// There are two types of messages data messages and notification messages. Data messages
// are handled
// here in onMessageReceived whether the app is in the foreground or background. Data
// messages are the type
// traditionally used with GCM. Notification messages are only received here in
// onMessageReceived when the app
// is in the foreground. When the app is in the background an automatically generated
// notification is displayed.
// When the user taps on the notification they are returned to the app. Messages
// containing both notification
// and data payloads are treated as notification messages. The Firebase console always
// sends notification
// messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options
// [END_EXCLUDE]
// TODO(developer): Handle FCM messages here.
// Not getting messages here? See why this may be: https://goo.gl/39bRNJ
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
if (/* Check if data needs to be processed by long running job */ true) {
// For long-running tasks (10 seconds or more) use WorkManager.
scheduleJob();
} else {
// Handle message within 10 seconds
handleNow();
}
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
// [END receive_message]
// [START on_new_token]
/**
* There are two scenarios when onNewToken is called:
* 1) When a new token is generated on initial app startup
* 2) Whenever an existing token is changed
* Under #2, there are three scenarios when the existing token is changed:
* A) App is restored to a new device
* B) User uninstalls/reinstalls the app
* C) User clears app data
*/
@Override
public void onNewToken(String token) {
Log.d(TAG, "Refreshed token: " + token);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// FCM registration token to your app server.
sendRegistrationToServer(token);
}
// [END on_new_token]
/**
* Schedule async work using WorkManager.
*/
private void scheduleJob() {
// [START dispatch_job]
OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(MyWorker.class)
.build();
WorkManager.getInstance(this).beginWith(work).enqueue();
// [END dispatch_job]
}
/**
* Handle time allotted to BroadcastReceivers.
*/
private void handleNow() {
Log.d(TAG, "Short lived task is done.");
}
/**
* Persist token to third-party servers.
*
* Modify this method to associate the user's FCM registration token with any
* server-side account maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// TODO: Implement this method to send token to your app server.
}
/**
* Create and show a simple notification containing the received FCM message.
*
* @param messageBody FCM message body received.
*/
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
String channelId = getString(R.string.default_notification_channel_id);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle(getString(R.string.fcm_message))
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId,
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
Bu kısımları kendi isteğinize göre özelleştirirsiniz. 🥳 Ben burada nedenine nasılına değinmedim, çünkü direkt bu şekilde de kullanabilirsiniz. Daha detaylı bakmak ister ve özelleştirmek isterseniz firebase dokumanına bir göz atabilirsiniz. 🙂
Firebase Console üzerinden Push Notification Gönderilmesi :
Firebase üzerinden Push Notification gönderilmesi için öncelikle Firebase Console üzerinden Cloud Messaging sayfasına gidiyoruz. Burada send first message ekranı bizleri karşılıyor. Buraya tıklandığında aşağıdaki gibi bir ekran ile karşılaşmaktayız.
Burada göndermek istediğimiz bildirimi özelleştirerek, gerekli ayarları yaptıktan sonra send butonu ile bildirim gönderme işlemini tamamlıyoruz.
Dilersek direkt olarak uygulama paketine, belli bir topic ismine göre de uygulamaya bildirim gönderebilmekteyiz. Örneğin bir haber uygulamasında kullanıcı yalnızca spor ile ilgili haberlerin bildirimini almak istiyor ise yalnızca spor topic i ile o kullanıcıya bildirim göndeririz. Bunu koda nasıl dökeriz, gelin bakalım 🙂
MongoDB nedir konusuna değinmeden önce ilk olarak edinmemiz gereken bilgi veri tabanının ne anlama geldiğini öğrenmektir. Peki veri tabanı nedir? Veri tabanı, ihtiyacımız olan bilgileri bir yerde depo etmemizi sağlayan bir depolama sistemidir. Günümüz teknolojisinde bulunan uygulamaların hemen hemen hepsinde veri tabanı bağlantıları bulunur. Veri tabanları üzerine depolanan bilgiler, daha sonra kullanılabilir ve üzerlerinde değişiklikler yapılarak daha anlamlı bilgiler elde edilebilir.
MongoDB nedir, MongoDB 2009 yılında C++ programlama dili ile geliştirilen ve açık kaynak kodlu olarak yazılan bir NoSQL veri tabanı uygulamasıdır. MongoDB veri tabanı uygulamasında her kayıt bir doküman olarak ele alınır. Bu dokümanların her biri json formatında depo edilir. Daha önceleri veri tabanı ile ilgili temel bilgiler edinenlerinde bildiği gibi veri tabanlarında pek çok yapı bulunmaktadır. Örneğin table yapısı MongoDB’de collection, row yapısı document, column yapısı ise field değerini almaktadır.
MongoDB genel olarak hızın önemli olduğu projelerde yerini almaktadır. Büyük veriler ile çalışanlar için hem hız hem performans açısından MongoDB veri tabanı kullanması projenin yararına olacaktır. Performans olarak oldukça hızlı olsa da MongoDB veri tabanını kullanırken oldukça dikkatli olunmalıdır. Bunun sebebi ise MongoDB veri tabanının hiçbir kuralı ve standardı olmadığından karmaşık sorguların hazırlanması SQL ile hazırlanan bir veri tabanına kıyasla daha zor olabilmektedir.
Günümüz teknolojisinde birçok programlama dili için driver desteği bulunmaktadır. NoSQL de içerisinde driver desteği bulundurması ile en çok tercih edilenler arasında yerini almaktadır. Gelin NoSQL nedir daha detaylı ele alalım.
MongoDB Nedir? NoSQL Nedir?
NoSQL veya Not Only SQL, adından da anlaşılacağı üzere içerisinde SQL komutları barındırmayan bir veri tabanı yapısıdır. NoSQL içerdiği veri tabanlarının yapısına göre 4 gruba ayrılmaktadır. Bu gruplar,
Doküman Tabanlı
Verileri doküman şeklinde veri tabanı deposunda saklayan bir veri tabanı çeşididir. MongoDB doküman tabanlı veri tabanı yapısı içerisinde yerini almaktadır.
Anahtar / Değer Tabanlı
Verileri anahtar veya değer olarak saklayan veri tabanı çeşididir.
Grafik Tabanlı
Verilerin depolanmasını graf teorisine göre veri tabanı içerisinde saklayan bir veri tabanı çeşididir.
Sütun Tabanlı
Verilerin depolanmasını satır satır yapmak yerine sütun sütun biçiminde saklayan bir veri tabanı çeşididir.
Nano Teknoloji Nedir? Atom ve molekül maddelerinin en küçük birimlerini ifade edebilmek ve maddeleri atomik boyutlarıyla birlikte kontrol edebilmek amacı ile kullanılan ve 1 ila 100 nanometre arasında değişiklik gösteren teknoloji çalışmalarıdır Atomlar üzerine atomlar ekleyerek yeni maddeler elde edebilmek ve mevcut yapıdaki moleküllerin yapısında değişiklikler meydana getirerek yeni maddeler oluşturmak üzerine çalışan teknolojidir. Bu teknolojinin birçok kullanım alanı bulunmaktadır. Kullanım alanlarına göz atacak sorularsak,
Malzeme ve İmalat Alanında
Malzemelerin hatasız üretilmesi ve imalatlarda yeni yöntemlerin üretilmesini sağlar.
Nano elektronik ve Bilgisayar Teknolojisi Alanında
Daha az enerji ile kapasite bakımından daha büyük olmasını sağlar. Elektronik devre elemanları ile tasarım adına da değişiklikler meydana getirecektir.
Havacılık ve Uzay Çalışmalarında
Nano yapısı taşıyan malzemelerin, daha sağlam, daha hafif ve hava koşullarına daha dayanıklı olması sebebiyle roket ve uzay istasyonlarında büyük önem taşımaktadır.
Tıp ve Sağlık Alanında
Nano barındıran aygıtlar ile tıp alanında hastalıkların teşhisi ve tedavisinde yeni yöntemler geliştirilecektir. Hastalıklı yapıların bu teknoloji ile yok edilmesi ve onarılması gereken hücrelerin onarılabilmesi hedeflenmektedir.
Çevre ve Enerji Alanında
Bu teknoloji enerjiyi verimli kullanmasıyla, enerjinin depolanması ve üretilmesi konusunda uygulamaları bulunmaktadır.
Biyoloji ve Tarım Alanında
Biyoloji alanında, bu teknoloji ile yeni kimyasal maddeler veya ecza malzemeleri sağlanabilmektedir. Tarım alanında da birçok işlevi bulunmaktadır. Tarım alanındaki kullanım alanına örnek verecek olursak, yetiştirilen bitkileri zarar verecek organizmalara karşı koruyabilmek için üretilen kimyasal maddeler.
Savunma Sanayi Alanında
Bu teknoloji ile geliştirilmiş malzemelerin daha sağlam ve dayanıklı olması sebebiyle savunma alanında da bu yapılar kullanılmaktadır. Bu teknolojiye, kamera lensleri üretimi, pil, geçirmeli elektron mikroskopları, varis çorapları, termoelektrik üretimi yapan kaplamalar, kendi kendini temizleyen camlar, halılar veya boyalar, deterjanlar, dezenfektanlar, seramik kaplamalar, güneş kremleri gibi örnekler verebiliriz. Bu teknolojinin gelişmesiyle ve kullanım alanları genişledikçe hayatımıza sağladığı avantajlar da bir o kadar artmaktadır. Bu teknolojinin avantajlarını sıralayacak olursak,
Daha seri üretim sağlar.
Az maliyet.
Ürün kalitesini arttırır.
Zamandan tasarruf ettirir.
Güvenli yaşam sunar.
Ulusal gelir düzeyini yükseltir.
Teknolojinin gelişim hızını arttırır.
Nano Teknolojinin Gelişimi
Ulusal Nano Teknoloji Giriş Merkezini kuran Mihail C. Roco bu teknolojiyi, 4 nesile ayırmaktadır.
Birinci Nesil
Bu nesilde geliştirilen teknolojiler pasif haldedir. Tek bir görevi yerine getirmek için oluşturulan nesildir.
İkinci Nesil
Çok görevli maddeler olarak adlandırılan, aktif olarak işlemler yapan nesildir.
Üçüncü Nesil
Binlerce farklı sistemin birleşmesiyle ortaya çıkan ve bu sistemlerin birbirleriyle iletişim kurabilmesini sağlayan nesildir.
Dördüncü Nesil
İç içe geçmiş sistemleri karmaşık bir halden düzenli bir hale getiren sistemlerdir.
Yaşadığımız zamandaki kullandığımız teknolojilere göre şu anlık yalnızca ikinci nesilde bulunan teknolojileri kullanabilmekteyiz. İkinci nesildeki ürünler ciddi ilerlemeler oluşturabilmeyi sağlayacak bir nesildir.
Nano Teknoloji Kullanılarak Üretilen Ürünler Nelerdir?
Yaşantımızın hemen hemen her alanında bu teknolojiden faydalanmaktayız. Bizlere sağladığı avantajlar doğrultusunda bu gelişen teknoloji ile birçok ürün üretilmiştir.
Kurşun Geçirmez Yeleklerdeki Kaplamalar
Bu teknoloji üretilen malzemeler daha sağlam olduğundan dolayı kurşun geçirmez yeleklerde de bu teknolojiden yararlanılmıştır. Bu sayede verdiği zarar azaltılabilir hale gelmiştir.
İş Aletleri
İş aletlerinin daha uzun ömürlü ve daha sağlam olmasını sağlar.
Biranın Tazeliğini Korumak İçin Sağlanan Alaşımlar
Hem maliyeti azaltabilmek hem de tazeliği koruyabilmek için bira şişelerinde de bu teknolojiden faydalanılmıştır.
Genetik Testler
Doğru dozu ayarlayabilmek oldukça zor iken bu teknoloji ile genetik testlerin yapılabilirliği daha kolay bir hal almaktadır.
Otomobil Cilaları
Uzun süre temizliğin devam edebilmesi için bu teknoloji oldukça iş görmektedir.
Güneş Panelleri
Bu teknoloji ile üretilen güneş panelleri daha az enerji kullanmasının yanı sıra maliyeti de oldukça düşürüyor.
Gebelik Testleri
Gebelik testlerinde de kullanılan bu teknoloji ev içerisinde kendi başımıza yaptığımız gebelik testlerinin sonucunu bizlere daha kolay bir şekilde vermektedir.
Daha Uzun Ömürlü Tenis Topları
Her alanda olduğu gibi tenis toplarında da bu teknolojiden faydalanarak topun havayla temasına izin verilerek topların daha uzun ömürlü hale gelebilmesi sağlanıyor.
Kanamayı Hızlıca Durdurma
Kanamaları durdurmak bazı zamanlar oldukça güç haline gelebilmektedir. Özellikle burun kanamalarını durdurmak bayağı zamanımızı alabilmektedir. Fakat bu geliştirilen teknoloji ile, üretilen ürünü burnunuza takarak saniyeler içerisinde burun kanamanızdan kurtulabilmektesiniz.
Türkiye’deki Nano Teknolojisinin Durumu Nedir?
Günümüzde ülkemiz adına teknoloji alanında önemli adımlar atılmaya başlanmıştır. Türkiye Bilim Merkezleri Vakfı’nda teknoloji atölyesi bulunmaktadır ve Türkiye’de bu teknoloji alanında çalışma gerçekleştiren 13 adet şirket bulunmaktadır.
Fonksiyon nedir? Fonksiyon, bir diğer adı ile metot, kod satıları arasındaki uzun uzadıya yazılmış kodları azaltmak için kullanılan, zamandan tasarruf ettiren ve bir işi daha kolay bir şekilde yapmamızı sağlayan kod parçacıklarıdır. C# programlama dilinde bu kod parçacıkları ikiye ayrılır;
Dönüşü olmayan fonksiyonlar
Dönüşü olmayan fonksiyonlara basit bir örnek verecek olursak C# programlama dilinde ekrana işlemi basmamızı sağlayan Console.WriteLine metodunu verebiliriz. Bu metot yalnızca yazdığımız kodun konsol üzerine yazılmasını sağlar ve geriye döndürdüğü hiçbir değer yoktur. Bir de gelin C# programlama dilinde kod üzerinden örneklendirelim.
void Toplama()
{
int sayi1=5;
int sayi2=10;
int sonuç=sayi1+sayi2;
}
Yukarıda yazmış olduğumuz kod gördüğünüz üzere yalnızca kendi içinde işlemleri yapar, dışarıdan hiçbir veri almaz ve hiçbir veri vermez. Dönüşü olmayan fonksiyonlar void ifadesi ile başlar.
Return (dönüş) olan fonksiyonlar
Dönüşü olan fonksiyonlar oldukça geniş bir yelpazeye sahiptir. Çünkü geri dönüşlü işlemleri, int, string, bool, list, array ve daha birçok değişken ile sağlayabiliriz. Bu yazımızda birçoğunu ele alacağız. Return yani geri dönüşü olan fonksiyonlara örnek verecek olursak Console.ReadLine metodunu verebiliriz. C# programlama dilinde Console.ReadLine metodu, yazıldığı kod satırındaki veriyi almak için kullandığımız bir değerdir ve aldığı veriyi dışarıya aktarır. Dolayısı ile geri dönüşlü metotlar arasında yerini almaktadır. Bir de dönüşü olan fonksiyonları en çok kullanılan geri dönüşlü değişkenler için kod üzerinde inceleyelim.
INTEGER dönüşlü fonksiyonlar
int Toplama(int sayi1,int sayi2)
{
int sonuc = sayi1 + sayi2;
return sonuc;
}
Bu örnekte int değişkeni dışarıdan gelecek olan iki sayıyı toplayarak bize sonucu döndürecektir.
String dönüşlü fonksiyonlar
string Birlestir(string veri1,string veri2)
{
string sonuc = veri1 + veri2;
return sonuc;
}
String dönüşlü fonksiyonda verdiğimiz örnekte ise, dışarıdan gelen iki string tipindeki verili alarak değeri geri döndürmektir. Dolayısı ile burada bir return işlemi bulunmaktadır.
Bool dönüşlü fonksiyonlar
bool Girdi(int sayi)
{
if(sayi % 2 == 0)
return true;
else
return false;
}
Bool fonksiyonunun sonucu daima true veya false olarak döner. Bu örnekte de, dışarıdan alınan sayının tek mi çift mi olduğunu kontrol eden bir kod parçacığı bulunmaktadır. Eğer çift bir sayı ise sonucumuz true, tek bir sayı ise sonucumuz false olarak dönecektir. Burada da gördüğünüz gibi dışarıdan bir veri alma ve ardında bir sonuç geri döndürme işlemleri yer almaktadır.
Dizi fonksiyonları
int[] Veri(int baslangic,int bitis)
{
int[] sonuc = new int[bitis-1];
return sonuc;
}
Elde edilen verileri dizi olarak döndüren bu fonksiyon, dışarıdan gelen iki sayıyı başlangıç ve bitiş değeri olarak alarak geri döndürmektedir.
List fonksiyonları
List fonksiyonları da veri konusunda hiçbir kısıtlama bulunmamaktadır. Dolayısı ile her türlü veriyi List fonksiyonu içerisinde kullanabilmeniz mümkündür.
public List<string> FileFind(string path)
{
List<string> dosyalar = new List<string>();
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] getfiles = di.GetFiles();
foreach (FileInfo veri in getfiles)
{
dosyalar.Add(veri.ToString());
}
return dosyalar;
}
Yukarıdaki örnekte bir klasör içerisinden dosya taramasını gerçekleştiren bir kod parçacığı bulunmaktadır. Bu örnekte de diğer geri dönüşlü fonksiyonlarda olduğu gibi burada da bir geri dönüşlü bir işlem bulunmaktadır.
Nesnelerin interneti nedir? Nesnelerin akıllı cihazların belli protokoller içerisinde birbirleriyle iletişim kurmasını sağlayan sistemlerdir. Nesnelerin interneti adından yola çıkılarak, yalnızca cihazların internete bağlanması olarak ele alınmamalıdır çünkü nesneler, algılayıcılar ve tanımlayıcılar ile de iletişim kurabilmektedirler. Nesneler algılayıcılar veya tanımlayıcılar ile iletişim haline geçtiklerinde durum bilgilerini güncelleyebilecek yeteneklere sahip olurlar.
Nesnelerin internetine akıllı saatleri örnek olarak gösterebiliriz. Akıllı saatler ile hem ilerlediğimiz mesafeyi hem de kalp ritimlerimizi öğrenebileceğiniz sensörler bulunmaktadır. Akıllı saatler ile tarafımıza sağlanan bu veriler hayatımızı düzene koyabilmemiz için önemli bilgiler sağlamaktadır. Bu örnekteki nesnelerin interneti nedir diyecek olursanız, akıllı saat ve sensörlerin arasındaki iletişimdir.
Nesnelerin İnterneti Nedir Bize Sağladığı Avantajlar Nelerdir?
Nesnelerin interneti gerek çalışma ortamında gerekse gündelik yaşantımızda bize birçok avantaj sunmaktadır,
İş süreçlerini izleyebilme imkanı sağlar.
Müşteri deneyimini geliştirmemize yardımcı olur.
Zamandan tasarruf ettirir.
Maddiyat açısından tasarruf sağlar.
Çalışan bireylerin verimliliğini arttırmayı sağlar.
İş modellerine uyarlanabilir.
İş kararlarını daha doğru alabilmeyi sağlar.
Elde edilen kazancı arttırmaya yardımcı olur.
Günlük hayatımızda edinmemiz bilgilere daha kolay ulaşmamızı sağlar.
Nesnelerin İnterneti Nedir Kullanım Alanları Nedir?
Nesnelerin interneti hemen hemen hayatımızın her alanında yerini almaktadır. Bu alanlardan bazıları,
Çevre
Tarım
Enerji
Kamu Düzeni ve Güvenliği
Ulaşım
Sağlık
Günlük hayattaki kullanım alanları olarak sıralayabiliriz.
Nesnelerin İnterneti Örnekleri
Nesnelerin internetinin örnekleri gün geçtikçe şüphesiz artmaya devam edecektir. Nesnelerin internetine birkaç örnek olarak,
Akıllı Termostat
Bu ürün evinizdeki rutininizi öğrenerek ev sıcaklığını size göre ayarlayabilmektedir. Ev sıcaklığını ayarlama esnasında bir sorun oluştuğunda size bildirim göndererek bilginize sunmaktadır. Isıtma ayarlarını otomatik olarak size göre belirlemesinin yanı sıra ısıtma seçeneklerini de mobil uygulamanızı indireceğiniz cihaz üzerinden manuel olarak da ayarlayabilmeniz mümkündür.
Akıllı Priz
Akıllı telefonunuz üzerinden prize takılan herhangi bir ürünün çalışıp çalışmayacağını kontrol edebilir ve dilerseniz tek tık ile prizi kapatabilir ya da açabilirsiniz.
Sağlık Monitörü
Sağlık monitörü hastaneye gitmenize gerek kalmadan ev içerisinden muayene olmanızı sağlayacak özellikteki üründür.
Akıllı Kilit
Akıllı kilit sayesinde evinizin kapısına geldiğiniz anda kapı size açılır ve çıktığınız zaman otomatik olarak kilitlenir. Evinize davet ettiğiniz bir kişiye de bu kilitlerden verebilir ve istediğiniz zaman cep telefonunuz üzerinden aktif veya pasif hale getirebilirsiniz. İsteğinize bağlı olarak şifre girerek kapınızın açılması seçeneği sunulmuştur. Bu seçeneklerde cep telefonunuzun yanınızda olmasına gerek yoktur şifre ile girebilmeniz mümkündür.
Akıllı Hayvan Besleyici
Bu ürün hayvanınız için en doğru mamayı ve miktarı seçer. Bunun yanı sıra mamasının biteceği zamanlarda mamasının alınacağı satıcıyla iletişime geçerek mama alımını sağlar.
Araba Takip Adaptörü
Araba takip adaptörü arabanıza dair her türlü bilgiyi size sunabilen özellikteki üründür.
Kamu Aydınlatması
İstenilen zamanda ve istenilen enerji seviyesine göre ayarlanabilen aydınlatmalardır.
Robotik kodlama nedir, robotik kodlama eğitimi kod yazmaya teşvik eden bir kodlama çeşididir. Kodlama ile dünyamızda gelişen her türlü teknoloji ile anlaşabiliriz. Robotik kodlama yapabilmek için kod bilgisine gerek duyulmaz. Çocuklar için eğlenerek kod yapısını öğrenilebilmesi için kod programları tasarlanmıştır. Çocuklarımız robotik kodlama ile problem çözme becerilerini geliştirir, akış diyagramlarını öğrenir, analitik düşünme becerilerini geliştirir ve kodlama nedir nasıl yapılır gibi temel bilgileri kavrar. Robotik kodlama ile hem üretip hem de keyifli zaman geçirmiş olurlar.
Kod yazmak ile ilgili hiçbir bilginiz olmayabilir fakat Steve Jobs’ın da dediği gibi, bilgisayar programlamayı herkes öğrenmeli. Çünkü bu sizlere düşünmeyi öğretir.
Her yaşa uygun robotik kodlama eğitimi bulabilirsiniz. Özellikle çocuklar için oyun oynayarak kodlama öğrenilmesini sağlayan uygulamalar mevcut. Bunun için dünyanın en büyük online kodlama eğitimi veren code.org sitesini ziyaret edebilirsiniz. Code.org kodlamayı Angry Birds gibi oyunları kullanarak öğretiyor. Üstelik Türkçe dil seçeneği de mevcut. Bir diğer seçenek ise, Kodu. Kodu, Microsoft tarafından kurulmuştur. Kodu, çocuklar için yarışmalar düzenleyerek kodlamaya teşvik eden bir uygulamadır.
Kodlama yapabilmek için yazılım uzmanı veya bir programcı olmak zorunda değilsiniz. Basit programlar yazarak kendinizi belli bir seviye geliştirebilirsiniz, bunun için pek çok kaynak mevcut. Siz yeter ki isteyin. Peki kodlama nedir kod yazmanın faydası nedir?
Kodlama analitik düşünme becerisi kazandırır.
Olay ve durumlar arasında farklı bir bakış açısı sağlar.
Yaratıcı düşünmeye katkı sağlar.
Problem çözme yeteneğini gelişir.
Sistematik düşünmeyi sağlar.
Makinaların çalışma mantığı daha kolay kavranır.
İnternet Üzerinden Kodlama Nasıl Öğrenilir?
İnternet üzerinden kodlama öğrenebilmek için birçok online kaynak mevcut. Bunlara bir göz atalım,
Code.org
Code.org ile oyun oynayarak kodlama öğrenebilirsiniz.
Scratch
Scratch, 8 ile 16 yaş arasındaki çocuklar için tasarlanmış kodlama ortamıdır.
Tynker
Tynker eğitim platformu ile görsel programlama dilinin mantığını öğrenebilirsiniz.
Kodable
Kodable, ilkokul öğrencilerine özel olarak hazırlanmış kodlama ortamıdır.
Codespark
Codespark, 4 yaş ve üzeri çocuklar için tasarlanmış olup, çocukların kendi 3D oyunlarını tasarlayabilmesini sağlayan, temel kodlama mantığını öğreten eğitim platformudur.
Kodu
Kodu, çocuklar için tasarlanmış kodlama yarışmaları düzenleyen eğitim platformudur.
Youtube
Youtube üzerinden birçok kodlama eğitimi veren kanal bulmanız mümkün. Youtube ile hem izleyip hem de uygulayarak kısa bir zaman içinde kodlama temellerinizi oluşturabilirsiniz.
Robotik Kodlama Eğitimi Veren Kurumlar Var Mıdır?
Robotik kodlama eğitimini Milli Eğitim Bakanlığı’na bağlı okullar dışında bazı kurumlar da ücretsiz olarak vermektedir. Bunlar; Kodlama Derneği, İSMEK, Vodafone – Habitat Yarını Kodlayanlar Projesi kapsamında ücretsiz eğitim vermektedir.
Ücretli olarak verilen robotik kodlama eğitimleri de bulunmaktadır.
Bitcoin herhangi bir banka ile bir ilişiği bulunmayan elektronik olarak sunulan bir para birimidir. 2008 yılında Satoshi Nakamato tarafından kurulan bu para birimi, virgülden sonraki 100 milyonuncu basamağa kadar gidebilmektedir. Kripto para birimi olarak da anılmaktadır.
Bitcoin satın alıp satmanın en kolay yolu kripto para alım satım platformlarıdır. Bu platformlara kayıt olurken kimlik bilgilerinizi ilkeler gereği vermek zorunlu tutulmuştur fakat bazı platformlar kimliksiz olarak kısıtlı işlemler yapabilmeye olanak sağlamıştır. Bitcoin hesabı nasıl açılır diye direk ele alacağımız bir platform bulunmamaktadır. Yerli borsalarda açtığınız hesaplar bitcoin hesabı olarak ele alınmaktadır. Bitcon hesabı oluşturabileceğiniz birkaç platform,
BtcTurk
Paribu
Konim
Bitexen
Binance.com
Gobaba
Blockhain
Seçtiğiniz platform’a ilk olarak kayıt işleminizi gerçekleştirmelisiniz. Bitcoin hesabınızı oluştururken güvenli bir şifre ile oluşturmaya özen göstermelisiniz. Seçtiğiniz platforma göre kayıt işleminizin incelemelerden 1-2 gün sonra aktif hale gelecektir. Hepsi bu kadar!
Bitcoin Hesabı Nasıl Açılır Bitcoin Nasıl Kazanılır?
Bitcoin kazanabilmenin birçok yolu bulunmaktadır. Bu yolları genel olarak 3’e ayırabiliriz. Bunlar, çalışarak, üreterek veya ticaretini yaparak kazanmaktır. Sizler için en kolay 5 bitcoin kazanma yöntemlerini derledik.
Çalışarak Bitcoin Kazanmak
Çalışarak bitcoin kazanabilmek için birçok platform bulunmaktadır. Bu platformlarda hizmetiniz karşılığında bitcoin kazanabilirsiniz. Bu platformlardan bazıları,
Cryptogrind
Jobs4Bitcoins
Angle.Co
21.Co
BitWAGE
Coinality
Crypto.jobs
Bitcoin Ticareti Yaparak Bitcoin Kazanmak
Hizmet karşılığında bitcoin kazanabilmenizin yanı sıra bitcoin ticareti yaparak da bitcoin kazanabilmeniz mümkün. Bu yöntemdeki amaç, kripto paralarını maliyeti düşük iken satın alıp değer yükselirken satışa sunmaktır.
Kredi Vererek Bitcoin Kazanmak
Kredi vererek de bitcon kazanabilirsiniz. Bitcoinlerinizi alıp bir kenara bırakmak yerine, bitcoinlerinizi ödünç vererek kullanabilirsiniz. Ödünç işlemleriniz için de platformlar mevcuttur. Bunlar,
Bitbond
BTCPOP
KIVA
Musluklardan Bitcoin Kazanmak
Kolay olarak bitcoin kazanmanın bir diğer yolu ise bitcoin musluklarından bitcoinler elde etmektir. Bitcoin muslukları, bir web sitesinde veya uygulamalarda bir captcha veya verilen bir görevi tamamlanması karşılığında bitcoin kazanma yöntemidir. Yapılan her görev için bitcoin kazanabilirsiniz.
Yardım Ederek Bitcoin Kazanmak
İnsanların istekleri doğrultusundaki amacı yerine getirerek doğru cevabı verdiğinizde bitcoin kazanabilirsiniz. Bu yoldan bitcoin kazanabilmek için, bitfortip masaüstü uygulamasını indirerek kullanabilirsiniz.