Ekşi Sözlük kullanıcı entrylerini web scraper ile çekmek

Ekşi Sözlük kullanıcı entrylerini web scraper ile çekmek

Ekşi sözlük, gündemin hızlı aktığı ve binlerce kullanıcı tarafından yorumlandığı, aynı zamanda niş bir konu hakkında detaylı bilgilerin elde edilebildiği veya o konu hakkında bilgi paylaşımı yapılabilen text tabanlı bir sosyal ağdır. Ekşi Sözlük, popülaritesinin artmasıyla beraber üçüncü parti Ekşi Sözlük uygulamalarını da ortaya çıkardı. Şükela Reader, EkşiCep gibi uygulamaların Ekşi Sözlük resmi uygulamalarının yerini tutmasıyla, Sözlük API gereksinimi günden güne arttı. Her ne kadar Ekşi Sözlük resmi API hizmeti sunmasa…

‘Flutter/Flutter.h’ file not found çözümü

‘Flutter/Flutter.h’ file not found çözümü

Flutter/flutter.h file not found hatasının basit bir çözümünü yazacağım bu yazıda bu hatanını neden kaynaklandığını ve çözümü için nasıl bir yaklaşım izleyebileceğinizi anlatacağım. Genellikle stackoverflow üzerinde pod init, pod install, rm podfile.lock gibi komutların sırayla yapılıp bu hatanın çözülebileceğini ve iOS buildini alabileceğinizi düşünürsünüz. Öncelikle tavsiye edilen bazı adımları tekrarlayalım: Birinci çözüm: İkinci çözüm: Üçüncü çözüm: Tüm çözümler tükendiyse ya? Bu durumda probleme yakından bakmamız gerekiyor ve logları okumamız gerekiyor. Hatanın…

SingleChildScrollView nedir?

SingleChildScrollView nedir?

SingleChildScrollView, Flutter üzerinde sayfaların, widgetların kaydırılabilir olmasını sağlayan basit bir widgettır. Genellikle Column ve Row gibi birden çok child widgeta sahip widgetların sayfaya sığmaması durumunda sayfayı kaydırılabilir yaparak widgetların sıkışmamasını sağlar. SingleChildScrollView widgetı hem vertical (yukarıdan aşağıya) hem de horizontal (sağdan sola) şekilde çalışabilir. Default olarak Axis.vertical olarak gelir. Bir kaydırılabilir Scaffold örneğini inceleyelim: Öncelikle SingleChildScrollView widgetının sayfa üzerinde yerleşebilmesi için bir Size’a ihtiyacı vardır. Tüm sayfanın kaydırılabilir olması için Scaffold…

EVDS döviz kurları API kullanımı

EVDS döviz kurları API kullanımı

Elektronik Veri Dağıtım Sistemi (EVDS) üzerinden döviz kurlarını çekmek için öncelikle EVDS üzerinde bir hesap açıp API key edinmeniz gerekiyor. Türkiye Cumhuriyeti Merkez Bankası’nın günlük güncellediği döviz kuru bilgileri aynı zamanda geçmişe doğru da uzanıyor ve bu verilerle beraber istatistiksel hesaplamalar da yapılabiliyor. EVDS Verileri EVDS üzerinde hangi para birimlerinin sistemde kayıtlı olduğuna dair bir bilgi göremedim. Bu yüzden tüm döviz kurlarını tek tek elimle çıkarttım ve string olarak bir listeye…

Flutter API kullanımı ve JSON parçalama

Flutter API kullanımı ve JSON parçalama

Flutter uygulamalarında API (Application Program Interface) kullanımı konusuna ve API servislerinden dönen JSON tipindeki verilerin nasıl parçalandığına dair bilgilendirici ve cheat sheet tarzı bir yazıya hoşgeldiniz. Seçeceğim API kaynağını Public-APIs isimli kaynaktan buluyorum. Burada istediğiniz konuya dair ücretsiz API hizmetlerini bulabilirsiniz. Dummy veriler ile uğraşacağımız bu yazıda küçük bir uygulama için kolları sıvayalım. Hazırlık Projemizi oluşturalım ve uygulamamızın içerisine http paketini ekleyelim. VS Code kullanıyorsanız eklentiler kısmından “cas van luijtelaar” isimli…

Supabase: Firebase alternatifi

Supabase: Firebase alternatifi

Supabase’i tanıyalım Supabase, Firebase alternatifi olan bir backend servisi. Firebase alternatifi olarak öne çıkıyor olsa da veritabanı yapısı olarak NoSQL yerine SQL tercih ediyor. Birçok özelliği Firebase’den daha gelişmiş olan Supabase’in yapabildiği birçok şey var. Authentication, Database ve Storage hizmetlerinin yer aldığı serviste resmi Javascript client kütüphanesi barındırıyor. Fakat bir Flutter developer olarak ihtiyacım olan Dart paketi idi ve ekip tarafından geliştirilen Supabase Flutter kütüphanesini buraya bırakıyorum. 🙂 Supabase sizin için…

Flutter inAppPurchase entegrasyonu [Android]

Flutter inAppPurchase entegrasyonu [Android]

Flutter uygulamalarında uygulama içi satın alma nasıl entegre edilir anlatacağım bu yazıda yalnızca Android için olan kısmı konu alacağım. Bir sonraki yazımda ise doğal olarak iOS tarafını ele alacağım. 🙂 Yazılan uygulamalarda premium satışı, harcanabilir ürünlerin satışı (uygulama içi kredi, puan vs.) ile geliştiriciler gelir elde edebilir. Ayrıca harcanamayan ürünlerle (reklamları kaldır, premium satın al vs.) ile de gelir elde edilebilir. Apple tarafında dört farklı satın alma tipi olmasına rağmen Android…

Flutter Keys nedir? Nasıl kullanılır?

Flutter Keys nedir? Nasıl kullanılır?

Flutter’da bulunan, state yönetimi ve objelerin yönetimini sağlayan keys, Flutter widgetlarının ID’sidir. Stateless ve Stateful başta olmak üzere tüm widget tiplerinin sahip olduğu bir niteliktir. Başlangıçta çok işinize yaramasa da ilerleyen zamanlarda kompleks UI elementleriyle, animasyonlarla çalışırken ihtiyacınızın olacağı bir sınıftır. Yazının devam eden kısımlarında key, anahtar olarak bahsedilecektir. Anahtarlar, liste tipi widgetların elementlerini yeniden düzenlemek için kullanılır. Bu düzenleme setState ile yapılabilir fakat her insert/remove gibi operasyonlarda devasa büyüklükteki bir…

Flutter’da Firebase ile Auth işlemleri

Flutter’da Firebase ile Auth işlemleri

Flutter 2’nin çıkışıyla beraber Flutter öğrenilmeye ve sektör tarafından benimsenmeye başlandığı şu günlerde muhtemelen eskiye nazaran daha çok kişi Flutter ile ilgili döküman arıyor, Stackoverflow’da geziyor ve pub.dev üzerinden paketleri inceliyor. Bu çoğalan ilgiden, Firebase de nasibini alacaktır ve Firebase gibi servislerin geliştiriciler arasında daha da popüler olacağını tahmin edebiliyorum. Bu yüzden Firebase ile ilgili yazılarıma devam etmem gerekiyor ve bugünün konusu Authentication işlemleri. Firebase’de mail ile kayıt olmaktan tutun, cep…

Dart web server oluşturmak [Rehber]

Dart web server oluşturmak [Rehber]

Dart programlama dili ile web server oluşturmayı konu alacağım uzun soluklu yazıma hoşgeldiniz. Okumaya başlamadan önce çayınızı, kahvenizi hazırlayın. Dart programlama dilinin temelinden itibaren yola çıkacağımız bu yazıda bazı kütüphaneleri de beraberinde kullanarak bir web server nasıl oluşturulur, nasıl deploy edilir elim döndüğünce anlatacağım. 🙂 Dart diline bir bakış Dart programlama dilinin asıl kullanım amacı nedir? Dart, kendi websitesinde de belirttiği üzere bir client optimized programlama dilidir. Peki bu ne anlama…

Hive kullanımı & TypeAdapter ile çalışmak

Hive kullanımı & TypeAdapter ile çalışmak

Önceki yazılarımda bahsettiğim, Flutter uygulamalarda key-value biçiminde çoklu değer tutabilen Hive veritabanının kullanımı konusunda bir giriş yapmıştık fakat devamını getirememiştik. Hive veritabanıyla çalışırken primitif tipleri veritabanına sıralı biçimlerde veya key-value biçiminde ekleyebilirsiniz. Fakat eğer Hive kullanıyorsanız asıl amacınız TypeAdapter ile çalışmaktır. Peki nedir bu TypeAdapter? Bir Hive sınıfı oluşturmak ve bu sınıfı Hive veritabanına yazmak istiyorsunuz diyelim. Elinizde varolan bir sınıfı TypeAdapter kullanarak Hive’ın anlayacağı bir şekle getirebilirsiniz. Eğer otomatik olarak…

Flutter Engage etkinliğinin ayrıntıları belli oldu

Flutter Engage etkinliğinin ayrıntıları belli oldu

Flutter Engage etkinliğine dair etkinlik takvimi belli oldu! 3 Mart 2021 tarihinde gerçekleşecek olan etkinlikte konuşmacılar ve etkinlik konuları açığa çıktı. Beta sürümlerini takip edenler bilir ki, RaisedButton, FlatButton gibi buton widget türleri yerine ElevatedButton gibi yeni butonlar geliyor. Hem Flutter hem Dart tarafında yer alan birçok değişikliğin ele alındığı bu etkinliğin takvimi şu şekilde: Başlangıç: 9.30 AM – PST ( aynı gün akşam TSİ 8.30 ) Başlangıçta yeni ürünlerin tanıtılacağı…

Flutter HTTP paketi

Flutter HTTP paketi

Flutter HTTP paketi, Flutter uygulamalarında kullanılabilecek en temel paketlerden biridir. HTTP paketiyle birlikte API uzantılarına istek atabilir veya kendi kurduğunuz sunucunun içerisine CRUD işlemleri yapabilirsiniz. HTTP paketi uygulamanızın dış dünyayla olan ilişkisini güçlendirir. 🙂 Kullanmak için Android’te Manifest içerisinde INTERNET PERMISSION isterken, iOS tarafında izin istemenize gerek yoktur. WorldClockAPI üzerinden HTTP istekleri nasıl gönderilir göstermeye çalışacağım. Gördüğünüz üzere WorldClockAPI Post isteğini kabul etmediği için bir mesaj döndürdü. Get isteğini kabul ettiği…

Linked list nedir? Bağlı liste örnekleri

Linked list nedir? Bağlı liste örnekleri

Linked list, Türkçe adıyla bağlı liste, bir değerin yanında kendinden sonraki veya önceki değerleri gösteren referans değerlerinin yer aldığı ver yapısına verilen isimdir. Yığın (Stack), Kuyruk (Queue) gibi soyut veri yapılarını implement etmek için kullanılır. Bağlı liste yapıları en basit tabiriyle veriyi yönetme ve barındırma biçiminiz olabilir. Gerçek uygulamalarda sıklıkla kullanılan Yığın ve Kuyruk kavramlarını uygulama içerisinde yazarken bağlı listeden yararlanabiliriz. Bağlı listenin birçok çeşidi bulunmaktadır. Bunlar: Tek yönlü bağlı liste,…

Flutter’da pürüzlü gradient – shader sorunu

Flutter’da pürüzlü gradient – shader sorunu

Flutter uygulamalarında bazen resimleri veya kullandığınız Widget’ların üzerine ekstra görsellik ve ufak dokunuşlar eklemek istediğinizde shader veya gradient gibi nitelikleri kullanıyor olarak bulabilirsiniz kendinizi. Fakat sonrasında pürüzlü ve yumuşak olmayan, sert geçişlere sahip Gradient renklerle karşılaşabilirsiniz. Bunu çözmenin çok basit bir yolu vardır. Her gradient kullanımından önce titreşimi true yaparak gradient renk kullandığınız her Widget içerisinde yer alan renklerdeki pürüzü bu şekilde giderebilirsiniz. Buna shader mask olarak oluşturduğunuz resimler de dahil!…

Flutter Safe Area nedir?

Flutter Safe Area nedir?

Flutter uygulamalarında düzgün ve farklı cihazlara uygun arayüzler tasarlarken ve kodlarken bazı Widget’lardan yararlanırız. Örneğin LayoutBuilder Widget’ı ile birlikte dinamik bileşenler oluşturabilirken, Safe Area Widget’ı ile birlikte de her cihazın kullanılmaması gereken alanlarına uygun Scaffold oluşturabilirsiniz. Safe Area nasıl kullanılır? Safe Area kullanımı oldukça basittir. Bu widget ile işletim sisteminden ve cihaz tipinden bağımsız olarak ekran üzerinde kullanılmaması gereken alanlara saygı gösteren bir sayfa oluşturabilirsiniz. Öncelikle bir Scaffold oluşturun ve body…