Javascript Kategorisi

04 Sep 2017

Otomatik Arama Tamamlama Sistemi Mantığı (HTML/CSS/JS)

Küçük bir yan projem için otomatik arama tamamlama sistemi implement etmem gerekiyordu. Bu tür bir sistem oluşturmadan önce her zaman için çok zaman alacağını düşünüp kendime stres yapmama rağmen çok da karışık veya uzun süren bir sistem olmadığını, sadece adımları doğru takip etmek gerektiğini düşünerek bu adımları sıralayacağım bir yazı yazmak mantıklı olabilir diye düşündüm. […]

03 Sep 2017

Javascript ile Malware Scriptler ve Tersine Mühendislik

Blogumdaki bu yazı ile birlikte yaklaşık 1 ay sürdürmeyi planladığım, o gün içerisinde karşılaştığım en ilgi çekici olduğunu düşündüğümü bilgiyi veya veriyi her gün bu blogda paylaşmayı planlıyorum. Bu yazıda paylaşacağım konu ise Javascript ile kodlanmış malware scriptler olacak. Youtube'da Colin Hardy isimli bir siber güvenlik üzerine videolar yapan kanala rastgeldim. Kanalda birçok farklı alanda […]

07 May 2017

iOS Safari: SVG Elementlerinde Manipülasyona İzin Vermiyor

En son yazdığım 2 yazı iOS Safari üzerinde çalışırken karşılaştığım sorunlar ile alakadardı. Bu yazı da aynı şekilde iOS Safari'nin bir diğer saçmalığı konusunda not düşmemden ibaret. iOS Safari: SVG Elementine CSS Filter Uygulamak Elementi Yok Ediyor iOS Safari: HTML5 Video Thumbnail .load() Kullanmadan Yüklenmiyor! Yeni karşılaştığım sorun, SVG elementi ve SVG elementi içerisindeki elementlerin […]

04 Mar 2017

iOS Safari: HTML5 Video Thumbnail .load() Kullanmadan Yüklenmiyor!

HTML5 video elementini kullandığım ve iOS safari'de çalışması gereken bir proje üzerinde çalışırken fark ettiğim bir durumu sizlerle paylaşmak istiyorum. Video elementine aşina olmayanlar için küçük bir hatırlatma yapalım; HTML Kodu; <video width="320" height="240" controls id="video"> <source src="video.mp4" type="video/mp4"> </video> Javascript Kodu; let video = document.getElementById("video"); video.play(); // Video'yu başlatacak. video.pause(); // Video'yu durduracak. Benim […]

24 Oct 2016

iOS Safari ve WebView’de Rubber Band Efektini Kaldırmak

Web sitesi veya uygulaması Safari üzerinde çalışırken, yukarı doğru kaydıracak bir içerik olmamasına rağmen kullanıcı yukarı doğru kaydırdığında oluşan elastik "daha fazla yukarı gidemezsiniz" durumuna Rubber band effect diyoruz. Bu efekti bazı durumlarda, özellikle webview üzerine gömülü Cordova benzeri sistemlerde kaldırmanız gerekebilir. Bu yazıda birkaç şekilde bu efekti nasıl de aktive edebileceğimiz üzerine birkaç not […]

02 Oct 2016

SVGO – SVG Optimize Etme/Sıkıştırma Aracı

SVGO, nodejs ile yazılmış, svg vektör grafiklerinini kayıpsız sıkıştıran, (optimize eden) güzel bir konsol uygulaması. Ayrıca nodejs tabanlı olması açısından, Javascript uygulamarı içerisine de istenirse rahatlıkla gömülebiliryor. npm install -g svgo Komutu ile npm üzerinden global olarak yükleyerek konsol uygulaması olarak kullanabilirsiniz. Konsol uygulamasında bilmeniz gereken bazı komuşlar şu şekilde; svgo [Secenekler] [Argumanlar] // Genel […]

21 Sep 2016

MD Formatında Javascript Kod Dökümantasyonu – JSDoc2md

JSDoc, javascript kodlarınıza eklenen yorumları kompile ederek, HTML halinde sayfalar şeklinde dökümantasyona çeviren güzel bir konsol uygulaması. Bunun yanında, JSDoc2MD isimli ve yine JSDoc üzerine oluşturulmuş bir diğer güzel uygulama ile, kodlarınızın dökümantasyonunu tek sayfa halinde md formatında çıktı olarak da alabiliyorsunuz. jsdoc-to-markdown @Github Uygulamayı npm üzerinden yükledikten sonra; npm install jsdoc-to-markdown Fonksiyon ve class'larınız […]

21 Sep 2016

Javascript Mantıksal Karşılaştırmaları: == ve === Arasındaki Fark

Bu yazıda, birbirine çok benzeyen 2 mantıksal karşılaştırma olan == ve === veya != ve !== arasındaki temel farktan bahsedeceğiz; == karşılaştırıcısı, karşılaştırılan değerlerin birbiirine eşit olup olduğunu kontrol etmeden, ikinci değeri ilk değere cast etmektedir. === karşılaştırıcısı, == karşılaştırıcısında olduğu gibi herhangi bir type değişikliği yapmadan, karşılaştırılan değerlerin aynı tipte olduğunu varsayarak kontrol yapar. […]

15 Sep 2016

ES6 Import İfadesi ve Yöntemleri

Bildiğiniz gibi, Javascript'in ES5 standartında, javascript dosyaları arasında import veya export benzeri native bir mekanizma bulunmuyordu. Bu önemli özellik, yeni standart ES6'daki import-export statement ile kullanılabiliyor. 2 dosya arasında özellikle fonksiyon ve class'ların import edilebiliyor olması, ES6'nin temeldeki mantığı olan, javascript'i daha modüler hale getirme felsefesini destekliyor. Import Yöntemleri Klasik kullanımını şöyle özetleyebiliriz; import {elemanim} […]

07 Sep 2016

Javascript’te Türkçe Karakterleri Büyütüp Küçültmek – toLocaleUpperCase()

Javascript'te küçük harflerden oluşan bir string'i büyük hale getirmek için, .toUpperCase() veya küçük hale getirmek için .toLowerCase() metodlarını kullanıyoruz. Bir örneğini şöyle gösterelim; var sebze = "patates"; console.log(sebze.toUpperCase()); // PATATES çıktısını verir Fakat, eğer büyük hale getirmeye çalıştığımız string Türkçe karakterler içeriyorsa, bu durumda bu metodlar bazı tarayıcılarda veya tarayıcı motorlarında işe yaramamakta; Bu tip […]

27 Aug 2016

CSS’de Transition İptal Etme – Durdurma İşlemi

Özellikle Angular gibi, view tarafında DOM objelerinin fazla değişmediği uygulamalarda, CSS'in transition özelliği ile animasyon yönetimi sağlıyorsanız, bazı durumlarda Javascript tarafında bir olay gerçekleştiğinde, animasyonun durmasını veya gerçekleşmemesini isteyebiliyorsunuz. Ben bu durumla karşılaştığımda, biraz baş ağrısı yaşadıktan sonra, transition öldürülecek DOM objesinin, transition özelliğini geçici olarak overwrite etme çözümü ile sorunumu çözdüm. Basit bir şekilde […]

26 Aug 2016

Javascript Array.filter() Metodu ve Kullanımı

Önceki yazılarımdan birisinde array prototipinin .map() özelliğinden bahsetmiştik. Ayrıca göz atabilirsiniz. Bu yazıda bir diğer, kullanım alanı az olmasına rağmen kodlamayı hızlandıran array metodu filter()'ın nasıl kullanıldığından bahsedeceğim; Filter, array içinde, array ile alakadar verileri kullanarak, istenilen durumlara göre array'i filtrelemenizi sağlayan bir metoddur. Map metodu gibi, her array elemanı için boolean dönen bir fonksiyon […]

21 Aug 2016

Javascript ile Klavye Tuşu ile Div Açıp/Kapatmak

Az önce gördüğüm bir mail'de, mantık olarak gayet basit olan küçük Javascript örneği üzerine bir soru aldım; Soru şöyle ki; klavyede bir tuşa basıldığında bir divi açmak veya kapatmak isteniyor. Burada kullanacağımız özellikler onkeydown olayı ve keyCode tanımlayıcısı. Mantıksal olarak, keyCode'u istenilen tuş olan tuşa basıldığında, dom elementini manipüle edeceğiz. Örneğimizde nasıl yapacağımızı görelim; var […]

20 Aug 2016

Javascript Array.map() Metodu ve Kullanımı

Javascript array veri tipinde, her bir array elemanı için gerçekleştirilmesini istediğimiz fonksiyonlar olduğu durumlarda map() metodu gerçekten çok işe yarar bir özellik. var array = [5,10,22,4]; var array2Kati = array.map(function(sayi){ return sayi * 2; }); console.log(array2Kati); Konsol çıktısı: Array [ 10, 20, 44, 8 ] Buna ek olarak map() metodu ile yeni bir array döndürmek […]

10 Aug 2016

Dexie.js ile Daha Rahat IndexedDB Kullanımı

Dexie.js, indexedDB için bir wrapper kütüphanesidir diyebiliriz. Eğer indexedDB kavramına yabancıysanız, indexedDB'yi, tarayıcılar tarafından standart olarak kullanılan client-side veritabanıdır diyebiliriz. Peki indexedDB'nin kendi programlama arayüzü yerine bir wrapper'ı neden kullanıyoruz? IndexedDB, aslına bakarsanız çok karışık ve javascript'in geliştiği kodlama yönüne göre farklı şekilde gelişmiş bir API, bu nedenle geliştiricilere yabancı veya itici gelebiliyor. Dixie.js ile […]

06 Aug 2016

Aygıt Orientation (Tutuş Biçimi) Değişiklikleri ve Mobil Uygulamalar

Web teknolojileri ile mobil cihazlar için uygulama geliştirirken işimize yarayabilecek önemli bir bilgi, cihazın tutuluş tipidir (dik/yatay) diyebiliriz. Bu tip durumlarda, screen objesinin altında sunulan orientation değişkenini screen.orientation olmak üzere kullanabiliriz. Bu değişken bir obje dönmekte ve obje şu tip bir yapıya sahip; { type: "landscape-primary", angle: 0, onchange: null, ownerGlobal: Window → newtab } […]

30 Jul 2016

Javascript Yazıyı Ses’e Çevirme Eklentisi (TTS): ResponsiveVoice.org

ResponsiveVoice.com, google tarafından geliştirilen ses motorları üzerinden, javascript üzerinde sunduğunuz string değişkenini istediğiniz dile çeviren bir api'a sahip. Anladığım kadarıyla mantığı, sizin request ettiğiniz kelimeyi kendi sunucusunda generate ederek size bir ses dosyası olarak sunuyor- bu ses dosyasını oluşturdukları javascript api'ı ile HTML5'in ses özellikleri ile sayfanıza ekliyor. Gayet güzel bir eklenti, kullanımına bir göz […]

29 Jul 2016

Touch Aygıtlarda Tıklama Gecikmesini Kaldırmak: fastclick.js

Mobil tarayıcılarda, tıklama (click) olayı dokunmatik aygıtların dokunmaya başlamasından (touch-start) 300ms sonrasında gerçekleşmektedir. Bu durumun önüne geçmek için kullanımı çok basit olan fastclick.js kütüphanesini kullanabiliriz. Mobile Safari iOS 3+ Chrome iOS 5+ Chrome Android (ICS) Opera Mobile 11.5+ Android Browser 2. versiyona kadar. PlayBook OS 1+ Tarayıcılarında bu eklentiyi kullanabilirsiniz. Kullanımı; Head bölümünde viewport ayarlarını […]

27 Jul 2016

Javascript’te İki Array veya Objenin Birbirinin Aynı Olması Kontrolü

Bu yazıda iki array veya obje değişkenenin birbirinin aynısı olup olmadığının kontrolünü Javascript'te nasıl verimli bir şekilde gerçekleştirebiliriz sorusuna cevap arayacağız. İsterseniz öncelikle bir array değişkenini göz önüne alalım. //1. array var arr1 = ["patates", "domates", "patlıcan"]; //2. array var arr2 = ["patates", "domates", "patlıcan"]; Bu örnekte 1. ve 2. array birbirinin aynısı mıdır? İlk […]

10 Jul 2016

Responsive Resim Galerisi Oluşturmak (PhotoSwipe)

PhotoSwipe, plain javascript tabanında responsive resim galerileri oluşturmanıza yardımcı bir javascript eklentisidir. Kullanımı gayet basit, arayüz olarak çok rahat bir şekilde kişiselleştirilebilen bir yapıya sahip. Ek olarak github'un da yardımı ile birçok önceden hazırlanmış arayüze de sahip. Şahsen, PhotoSwipe'ı beğeniyor olmamın en büyük sebeplerinden birisi, herhangi başka bir kütüphaneye ihtiyaç duymuyor olması. Piyasada bulunan çoğu […]

07 Jul 2016

Javascript’te “use strict” Ne İçin Kullanılır?

"use strict"; komutu genellikle Javascript dosyasının başında belirtilen ve yazılacak Javascript kodunun strict modunda (nizami - katı) execute edinilmesinin istendiğini belirtir. Burada nizami mod olarak bahsettiğimizi şöyle açıklayalım; bazen baştan savma yazılan kodlarda örnek vermek gerekirse, değişken tanımlarken degisken = "wow"; şeklinde var betimleyicisini kullanmıyoruz. Bu tip durumlarda javascript motoru değişkenin tanımlanmamış olduğunu görüp bizim […]

06 Jul 2016

Javascript Obje Protipleri ve Kullanımı (Object Prototypes)

Eğer blogumu takip ediyorsanız son zamanlarda ES6 ile alakadar yazılar yazıyordum. Bu yazıda hali hazırda ES5 standartı içinde kullanımı olan Javascript'in harika bir özelliği olan Prototipleme ve kullanımından bahsedeceğim. Aslına bakarsanız prototipleme, ES6 ile gelen (gelecek olan) class özelliğinin sadece construction kısmını yapan, aynı prototip üzerinden birden fazla obje oluşturmanıza ve sonrasında bu objenin yapısını […]

05 Jul 2016

Javascript ile Bir Objenin Tüm EventListenerlarını Kaldırmak

Bugün yine üzerinde çalıştığım bir projede sabahlarken, recursive bir şekilde oluşturmaya çalıştığım ve her seferinde bir elemente verdiğim eventListener fonksiyonunu değiştirmem gerekiyordu. Burada eventListener fonksiyonları hakkında bilmemiz gereken şey, assignable şekilde değil, stackable şekilde çalışıyor olduklarıdır. Yani; var btn = document.getElementById("btn"); btn.addEventListener("click", fnc1); btn.addEventListener("click", fnc2); Bu tür bir düzende btn div'ine tıklandığında hem fnc1() hem […]

02 Jul 2016

ECMAScript 6 Arrow Fonksiyon Notasyonu Kullanımı

ES6 ile gelen özellikler arasında en beğendiğim özelliklerin başında gelen arrow notasyonu, kodlama sırasında büyük bir pratik sağlıyor. Arrow notasyonu (=>) alışageldiğimiz biraz da "gereksiz" syntaxa sahip satır içi Javascript fonksiyonlarını daha kolay ve okunur hale getirmeyi sağlıyor. Şöyle basit bir örnek verelim; function ikiyekatla(sayi){ return sayi * 2; } console.log(ikiyekatla(5)); Bu örnek gayet basit […]

29 Jun 2016

ECMAScript 6 ile String ve Değişken Gömme Özelliği

Javascript ile stringlerin yönetimi konusunda bazen sıkıntılar çıktığını 3 yılık JS yazan birisi olarak söyleyebilirim. Bazı durumlarda ' ve " ile sıkıntılı durumlarda kalabiliyorsunuz, sayfadaki break karakterleri ile de sıkıntılı çalışan stringler ES6 ile revize edilip gerçekten kolay bir hale getirilmiş. Anlatmaya çalıştığım şeyi şöyle göstereyim. var degisken = "değişkenin ilk satırı ikinci satır üçüncü […]

28 Jun 2016

ES6 Varsayılan Fonksiyon Parametreleri Özelliği Kullanımı

ES6'in, syntax olarak birçok kolaylık sağlayacak özelliği beraberinde getirdiğinden bahsetmiştik. Bu özelliklerden birisi, çoğu tarayıcı tarafından da implement edilmiş olan bir değişkene default değer atama özelliği. Bu özelliği bir örnek ile gösterelim; window.onload = varsayilanF(); function varsayilanF(text){ if(!text){ text = "varsayılan yazı"; } console.log(text); } Bu kod için varsayılan fonksiyonu için text değişkenin boş gönderdik. […]

28 Jun 2016

ECMAScript 6’nın Hangi Özelliklerini Tarayıcılar Destekliyor?

Önceki yazılarımızda Javascript'in yeni versiyon serisinden bahsetmiştik. Fakat önemli olan, an itibari ile ES6'nın her özelliğini her tarayıcı üzerinde kullanabilir miyiz? Burada bahsetmemiz gereken önemli bir diğer bilgi, her tarayıcının, bahsettiğimiz standartları kendilerinin implement ettiğidir. Şöyle ki, Google Chrome ES6 ile gelen X özelliğini tarayıcısına implement etmişken, Mozilla Firefox bu özelliği henüz implement etmemiş olabilir. […]

27 Jun 2016

ECMAScript 6 (ES6) Nedir? Nasıl Kullanılır?

ES6 (ECMAScript 6), Javascript'in 2015 yılında belirlenen yeni standartlarını temsil eder. Bazı kaynaklarda ES 2015 olarak da geçer. Ayrıca ECMAScript standartı ve bu standartın tarihini şu yazıda okuyabilirsiniz. An itibari ile tarayıcılar tarafından geçerli standart olarak kulllanılan ES5.1 standartına, Javascript'in evrimine paralel olarak gelen birçok yeniliği içinde kapsayan ES6'nın kilit ve temel özelliklerine ilerleyen zamanlarda […]

26 Jun 2016

ECMAScript, Javascript Standartları ve Geçmişi

Javascript, diğer web teknolojilerinde olduğu gibi bir standarta sahiptir. Bu standarta ECMAScript (Kısaca ES) adını veriyoruz. Bu standartın versiyonlaması da tam sayılarla yapılıyor. Örneğin an itibari ile çoğu tarayıcı tarafından kullanılan versiyonun ECMAScript 5 (5. versiyon) olduğunu söyleyebiliriz. Javascript'in erken zamanlarında ES1 ve ES2 tam olarak tanımlandı diyemeyiz. ES3 ilk defa Javascript versiyonunun düzgün şekilde […]

26 Jun 2016

HTML5 Local Web Storage Kullanımı

HTML5’in en sevdiğim özelliklerinden birisi kullanıcının aygıtında veri depolayabiliyor olması. Bunu biraz daha açarsak, web uygulamanızı ya da internet sitenizi kullanan cihazların tarayıcıları yardımı ile 5MB’a kadar yerel veri depolayabiliyorsunuz. 5MB sınırının başlangıçta biraz sinir bozucu gibi olduğunu düşünebilirsiniz fakat genel anlamda sadece o kullanıcıların kullanacağı verilerin sınırlı -5mb’ı geçmeyecek- olduğunu ve çoğu kötü amaçlı […]