Category

Yazılım

Category

Agile yazılım geliştirme denildiği zaman akla ilk olarak Scrum metodolojisi gelmektedir. Bu yazımda da Scrum içerisinde yer alan ve birçok takım tarafından atlanan bir yapı olan Sprint Demo’dan bahsedeceğim. Scrum metodolojisi yazılım ekipleri için bir çok fayda sağlamaktadır. Scrum takımların geliştirme hızını artırır ve müşterilerin isteklerine daha hızlı ve güvenilir şekilde cevap verilmesine yardımcı olur. Bunları sağlarken de bazı adımlarını uygulamanızı bekler. Bu yazı içerisinde uzun uzun backlog, product owner vb. kavramlardan tek tek bahsetmeyeceğim, yazının konusu gereği Sprint ve Sprint Demo nedir ondan bahsedeceğim. Sprint Nedir? İlk olarak, Sprint, Scrum içerisindeki iş parçalarının belirli periyotlara bölünerek takip edilmesinin sağlandığı yapıya verilen isimdir. Ürün geliştirilirken hazırlanmış olan backlog’lar (iş parçaları) genellikle 1-4 hafta arasında belirlenen süreler içerisinde tamamlanacak şekilde iş…

Derleyiciler, yazdığımız yüksek seviyeli kodları bilgisayarların veya mikroişlemcilerin rahatça çalıştırabilmesi için makine kodlarına dönüştürmeye yarayan, bu dönüşüm işlemi esnasında da çeşitli optimizasyon işlemleri sayesinde sistemden maksimum verim elde etmeyi amaçlayan araçlardır. Arkaplanda çalışan sistemleri karışık olduğu için genelde es geçilir ancak derleyicilerin bize sağladığı optimizasyon seviyeleri kadar bizim de yapmamız gereken bazı optimizasyon işlemleri vardır. Bu yazı serisinde derleyicinin otomatik olarak yaptığı optimizasyonlardan ve geliştiricinin yapabileceği optimizasyonlardan bahsediyor olacağım. Geliştirici gözüyle bakıldığı zaman derleyiciler tüm işlemleri otomatik olarak yapıyor olarak görünür. Örneğin; GCC derleyicisinde derleme işlemi sırasında kullanabileceğiniz optimizasyon flag’leri (bazı kelimelerin direkt Türkçe çevirisinin anlamlı olmayacağını düşündüğüm için İngilizce karşılığını kullanmayı tercih ediyorum.) vardır. Onlar sayesinde kodunuzu hangi seviyede optimize etmek istediğinizi ayarlayabilirsiniz. Her zaman maksimum optimizasyon flag’ini kullanmak…

Yazdığımız kodlar içerisinde birçok uyarı ve hata ile (“warning” ve “error”) karşılaşırız. Kullandığımız derleyiciler bu uyarı ve hataları derleme sırasında bizim için ortaya çıkartır ve buna bağlı olarak düzeltilmesi gereken yerlerde bu düzenlemeleri yaparız. Birçok derleyici bunu kendi içerisinde yaparken harici olarak yapılma ihtiyacı olan durumlar da olmaktatır. Bu işleme statik analiz adı verilir. Statik analiz işlemini gerçekleştirmek için de birçok araç mevcuttur. Bu yazımda CppCheck aracı ile nasıl statik analiz yapabileceğimiz hakkında bilgi vermeye çalışacağım. Statik Analiz Statik analiz, kodu derlemeden (yani pre-compile) tespit edilebilecek hataları tespit ederek bunları düzeltmemize olanak tanır. Bu sayede oluşabilecek bug’ları erken dönemde tespit etmeye ve tanımlanmamış davranışları ve tehlikeli kod yapılarını (undefined behaviour ve dangerouscoding constructs) tespit etmeye odaklanır. Aşağıda kullanabileceğiniz bazı statik…

DPDK ile ilgili hazırlamış olduğum bir sunum sırasında Türkçe içerik eksikliğini görerek, aldığım notları derlediğim bir içerik oluşturmak istedim. Benim de içerisine yeni dahil olduğum bir yapı olduğu için vereceğim bilgiler tecrübelerden daha çok araştırdığım yabancı kaynakların derlenmesi sonucu ortaya çıkmış oldu. Bazı terimlerin Türkçe karşılığı anlamsız kaldığı için ve bu alanla ilgilenen insanların halihazırda bu terimleri bildiğini varsaydığım için İngilizce olarak kullandım. Kısaca DPDK’nın tarihinden bahsederek başlamak istiyorum. Data Plane Development Kit yani DPDK, 17 Eylül 2010’da BSD (Berkeley Software Distribution) lisansı ile yayınlandı. 2013 Nisan’dan itibaren dpdk.org üzerinde tamamen bağımsız ve kendi topluluğu olan bir hal aldı. Mikroişlemci üreticileri ve mimari geliştiriciler tarafından da desteklenerek projenin büyümesi hızlandırıldı. Günümüzde ise Linux Foundation tarafından destekleniyor. DPDK’nın amaçladığı ana iş…

Bir önceki yazımda bir dizin içerisindeki dosyaların isimlerinin nasıl değiştirileceğini anlatan bir Python script’i paylaşmıştım. Bu yazımda ise bir dizin içerisindeki görsel boyutlarının nasıl küçültüleceğini hakkındaki script’imi (python image resize) paylaşacağım. Görsel küçültme işlemi için yararlandığım kaynak: https://www.techtrekking.com/how-to-compress-images-using-python/ Şimdi ise bu işlemi bir dizin içerisindeki tüm dosyalar üzerinde nasıl gerçekleştireceğimize bakalım. İlk olarak Python Image Library olarak da bilinen PIL (Pillow) paketini pip ile sisteminize dahil etmeniz gerekiyor. pip install Pillow Eğer Python 2.x ve 3.x versiyonlarını aynı sistemde kullanıyorsanız bu işlemi yaparken pip3 kullanmanız gerekebilir. Yukarıdaki script içerisinde ‘path’ değişkeni ile script’i çalıştıracağımız dizinin adresini alıyoruz ve bu ana dizin yolumuz oluyor. ‘extensions’ değişkeni ise bir liste halinde bu script’ten etkilenmesini istediğiniz dosya türlerini içerisinde tutuyor. ‘files’ değişkeni sayesinde…

Python dili ve kullanım alanları hakkında bilgi sahibi değilseniz araştırarak ne kadar kuvvetli bir dil olduğunu öğrenebilirsiniz. Şu an çalıştığım yerde Raspberry Pi üzerinden GPIO işlemleri yapmak için, hem masaüstü hem de Raspberry Pi ekranı için görsel arayüzler tasarlamak için ve de bazı hayatınızı kolaylaştırabilecek kod blokları yazarak iş yükünüzü çok kolay bir şekilde azaltabilmenize fayda sağlıyor. Üzerinde çalıştığımız bir projede içerisinde neredeyse 2.000 JPG, PNG ve PDF dosyası olan bir klasör vardı ve bizden ilk aşama için istenilen şey bu görsellerin hepsinin ismindeki boşlukların “-” ile değiştirilmesi, tüm Türkçe karakterlerin Unicode karakterlere dönüştürülmesi ve tüm görsel adının küçük harf olmasıydı. Belki 20-30 dosya için bu işlemi el ile yapmak daha kolay bir yol olabilir ancak söz konusu 2.000 dosya…

Yakın zamanda yaptığımız bir websitesinde iletişim ve diğer formlar için Contact Form eklentisini kullanmamız istendi. Ancak bu eklentiyi kullanırken “Failed to send your message. Please try again later or contact the administrator with another method.” (İletinizi gönderme başarısız oldu. Lütfen daha sonra tekrar deneyin ya da yönetici ile başka bir yöntemle iletişime geçin.) şeklinde bir hata ile karşılaştık. Biraz araştırma yaptıktan sonra sorunun Wordpress’in SMTP ayarlarından kaynaklandığının farkına vardık. Bu da hosting firmamızın mail fonksiyonlarını kapatmasından kaynaklanıyor. Kapatılmadığı taktirde ciddi bir spam mail tehlikesi ile karşı karşı kaldığımız için otomatik olarak kapalı olarak geliyor ve biz bu ayarları yapılandırarak artık özel olarak kullanabilir hale geliyoruz. SMTP açılım olarak Simple Mail Transfer Protocol (Basit Posta Aktarım Protokolü) demektir. Yani sizin gönderdiğiniz…

Yakın zamanda yaptığım siteyi hızlandırma ve optimizasyon çalışmalarının faydasını görmeye başladım. Yaptığım çalışmalar neticesinde – sunucu süresi dışında – olabilecek maksimum hıza ulaştığımı söyleyebilirim. Bir kaç yazıda bana sıkıntı çıkartan hız problemlerinin önüne nasıl geçtiğimi anlatacağım. Bu yazımızın konusu ise Pagespeed değerimizi oldukça olumsuz etkileyen <link> olarak çağırdığımız Google Fonts sorununu nasıl çözebiliriz? Google Fonts’a girerek bir font seçtiğiniz zaman onu sizden <link> şeklinde eklemenizi tavsiye ediyor, aynen şu şekilde: <link href=”https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,900&amp;subset=latin-ext” rel=”stylesheet”> Ama siz bu şekilde bir ekleme yaptığınız zaman Pagespeed size aşağıdaki uyarıyı veriyor ve hızınızı %10 civarında etkileyen bir azalış gösteriyor. Peki bu sorunu nasıl çözebiliriz? Bazı linklerimizi alıp footer’a taşısak bile Google Fonts sorunu o şekilde çözülemiyor malesef. Bunun için küçük bir javascript kodu yazmamız lazım.…

CSS hemen hemen her programlama dili gibi yıllardır durmaksızın geliştiriliyor. Bu yazımda Flex modülü ile gelmiş olan 2 özelliği nasıl kullanabileceğimizden bahsedeceğim. Flex modülü hizalama ve bölümlendirme üzerine çok büyük yeniliklerle geldi. Bunlardan 2’si de justify-content ve align-items özellikleri. Bu iki özellik, nesnelerin yatay ve dikeyde nasıl hizalanacaklarını belirler. justify-content Flex özelliğine sahip olan bir kapsayıcının yatay eksende nasıl hizalanacağını ayarlar. Objeler başta mı, ortada mı, sonda mı, aralıklı mı dizileceğine karar vermemizi sağlar. Bu kararı vermek için 5 parametre kullanır: flex-start: Nesneler kapsayıcının başından başlayarak dizilirler. space-around: Nesneler arasında eşit boşluklar bırakılır. space-between: İlk nesne başta, son nesne sonda olacak şekilde nesneler eşit olarak kapsayıcının içerisinde dizilirler. center: Nesneler tam ortalı olacak şekilde hizalanır. flex-end: Son nesne en sağa yaslanacak şekilde hizalanır. align-items Bu…

Wordpress alt yapılı bir siteniz varsa geliştirirken takıldığınız noktalardan birisinin de <head> etiketleri arasında yer alan javascript dosyalarının otomatik olarak footer’a taşınmamasıdır. Malesef bunu elinizle yapmanız gerekiyor. Bu noktada devreye Wordpress tarafından geliştirilmiş ve çok güzel şekilde çalışan bir fonksiyon giriyor. wp_enqueue_scripts() fonksiyonu içerisine girdiğiniz dosyaları otomatik olarak footer’a taşıma işlemini yapıyor. Ben bunu kendi kullandığım yöntem ile anlatacağım. Öncelikle bir fonksiyon oluşturarak içerisine bazı veriler girmem gerekiyor. Bu veriler ilk olarak daha önceden tanımlı bir dosya için geçerliyse onu iptal etmek ve yeniden footer’da gösterilmek üzere tanıtmak oluyor. Functions.php dosyamızı açarak aşağıdaki gibi kodlarımızı giriyoruz. https://gist.github.com/316c7c74623c458df3338bcb7def4d88 Bu kodu kullanarak Wordpress tarafından default olarak gelen ve eklentilerden kaynaklanan javascript dosyalarınızı footer’a taşıyabilirsiniz. Burda kullandığımız wp_register_script() fonksiyonu içerisine 5 parametre alır.…

Wordpress ile çalışırken karşılaşılan sorunlardan birisi the_excerpt() fonksiyonunda sadece yazı olan içerikleri alması ile birlikte içerik içerisindeki tüm yazısal özellikleri (kalın, eğik yazı vs.) kaldırıp düz yazı haline gelmesi ve the_content() fonksiyonunda ise tüm içeriği ekrana bastırmasıdır. Bunun için çeşitli çözümler mevcut. Mesela the_excerpt() fonksiyonunu istediğiniz kelime veya harf kadar kısaltarak ekrana bastırabiliyorsunuz. Ama eğer istediğiniz şey bu değil de the_content() fonksiyonu ile görseller dahil tüm içerikleri çekip ekrana düzenli bir şekilde bastırmak ise bunun için kullandığım kodu kullanabilirsiniz. Kod tam olarak sizin içeriğinizi </p> taglarına bölüyor ve ondan önceki içeriği alıyor ve sizin kullanımınız için bunu bir diziye atıyor. Siz de istediğiniz yerde istediğiniz şekilde kullanbiliyorsunuz. https://gist.github.com/4bf54b3d146671dab7a5b41da86685a1 the_content() fonksiyonu yerine icerik_paragraflama() fonksiyonunu kullanırsanız artık sadece içeriğinizdeki ilk paragraf ekrana…

Merhaba, yine yaklaşık 20 günlük bir aranın sonunda yazıyorum. Farketmişsinizdir, bu yazımı farklı bir tema üzerinden okuyorsunuz şu an. Uzun zamandır severek kullandığım “Independent Publisher” temasını kaldırarak yerine kendi kodladığım, daha minimal ve hoş görünümlü olduğunu düşündüğüm temamı aktif ettim. Tasarımlar olarak hugogiraudel.com sitesinin tasarımını kullandım. Tasarım çok hoşuma gitti ve Wordpress temasını aradım ama bulamadım. Ben de bu yüzden sıfırdan ve kendimce istediğim yerinde oynayabileceğim bir tema çıkartmak istedim ve ortaya bu tema çıktı. Temayı yaparken sade olmasını istedim ve ne kadar fazlalık varsa kaldırdım. Yazıyı ve kategolerimi ön plana çıkartmaya çalıştım. Görsel olarak ortaya bu şekilde bir şey çıktı – ama geliştirmeye devam ediyorum – Arkaplanda ise daha önce hiç yapmadığım kullanımlar yaptım ve siteyi hem hız yönünden…

Front-end projelerinde belirli standartlar kullanılarak projeyi geliştirdiğimiz zaman hem yapısal olarak oturmuş bir şekil ortaya çıkıyor hem de tekrardan düzenlememiz gerektiğinde kolay bir şekilde gerekeni yapabiliyoruz. Tasarımın yapısını oluştururken belirli bir ızgaraya uygun şekilde yaparsak, hem sabit ölçülere göre işlem yapmış oluruz hem de gözü yormadan ve görünümü göze hoş gelecek şekilde kodlamalar yapmış oluruz. Ben bu konuda, bu güne kadar çeşitli sistemleri denedim. Yakın zaman önce ise severek takip ettiğim Baran Somaklı tarafından hazırlanmış olan oldukça sade bir Grid Sistem Framework’ü ile karşılaştım. Birkaç projemde kullandıktan sonra bana çok pratik geldiğini farkettim ve sizinle paylaşmak istedim. Düşük boyuta sahip olduğu için temayı şişirmiyor, 2 küçük düzenleme ile hemen kullanmaya başlayabiliyorsunuz. Artık, yazın da gelmesiyle birlikte kullandığım, gördüğüm framework’leri, eklentileri…

Yaptığım bir iş için lazım oldu ve ben de bu soruna bir çözüm bulma arayışına girdim. Bir resim galerisi sistemi yapıyorduk ve bunun için tüm kategorileri anasayfada gösterip, o kategorilerde yer alan ilk gönderinin resmini de bu kategori için göstermemiz gerekiyordu. Aslında mantığımız basit. Tüm kategorileri çekip bunları bir döngü içerisine alıyoruz ve gönderileri ekrana bastırıyoruz. Kodumuz şu şekilde: https://gist.github.com/54aa8eab5fa6f32cca6c58203ade806b Bu kategoriler arasından gösterilmesini istemediğiniz kategorileri kaldırmak için kodu aşağıdaki şekilde düzenlemeniz yeterli olacaktır. (Yukardaki kodun alt tarafından ulaşabilirsiniz.) İşlem bu kadar. Bu kodları döngünüz içerisine eklediğiniz zaman sitenizde yer alan tüm kategorileri, ilk gönderinin görseliyle birlikte ekrana bastıracaktır. Herhangi bir sorun olursa yorum olarak belirtin, yardımcı olmaya çalışacağım. Umarım yardımcı olmuştur.

Wordpress’te resmi kırparak boyutlandırma işlemini yapabilmek için çok uğraştım, araştırdım, denedim ve sonunda buldum. Bu yazıyı yazarak aynı sorunu yaşayanların acılarını dindirmek istiyorum. Timthumb, Vt_resize, AQ Resize gibi eklenti olmayan ama benim pek randıman alamadığım kütüphaneleri de kullanabilirsiniz ancak Wordpress’in kendi özelliğini kullanmak yerine bunları tercih edeceğinizi düşünmüyorum. Website optimizasyonu için resimler oldukça önemli yer kaplıyor. Google Pagespeed üzerinden sitenizin hız kontrolünü yaptığınız zaman resim sıkıştırma ve boyutlandırma için çok büyük yüzdelik kısım ayrılıyor. Üzerinde çalıştığım bir proje için ihtiyaç duyduğum resim boyutlandırma işleminin nasıl olduğunu size açıklamaya çalışacağım. Kodun temelinde Wordpress’in 3.5.0 sürümünde eklenen WP_Image_Editor sınıfı yer alıyor. Bu sınıf yardımıyla oluşturacağımız kod ile öne çıkarılan görselimizi alıp, tekrar boyutlandırma işleminin ardından – istersek farklı bir isimle bile olabilecek…

Geliştirmekte olduğunuz projelerde dış görünüş için font en önemli etkenlerden biridir. Eğer Türkçe içerik barındıracak bir proje geliştiriyorsanız kullanacağınız fontun Türkçe karakterleri desteklemesi önemlidir. Tema kodlarken kullandığım fontları genelde Google Fonts üzerinden çekiyorum ve bu bazı Türkçe karakter sorunlarına yol açıyor. Bu sorunu ortadan kaldırmak çok kolay ama öncelikle ekleyeceğiniz fontun içerisinde Türkçe karakter desteği olması lazım. Aksi taktirde, doğal olarak desteklemeyecektir. Evet çözüme gelelim. Fontu seçtikten sonra “Choose the character sets you want” seçeneğinin içerisinde yer alan Latin Extended (latin-ext) checkbox’ını seçili hale getirdikten sonra kodunuzu sayfaya dahil etmeniz gerekiyor. Bu kadardı. Çok basit bir işlem ve hayat kurtatıyor.