JavaScript Intl.NumberFormat Nesnesi

Bazı durumlarda elimizdeki mevcut para değerini yani numeric değeri formatlayıp ülkeye ve dile uygun hale getirmek gerekiyor. Bunu javascript tarafında yaparken eskiden eklenti vs. kullanırdım. Ancak artık javascript’te Intl.NumberFormat nesnesi hayatımızı kurtarıyor.

Önce örneklendirerek konuyu anlayalım, sonra kodlara dökeriz.

1200 değeri bizim para değerimiz olsun. bu formatı TL cinsinden türkiye’de göstermek isteseydim şöyle olması gerekirdi;

₺1.200,00

Eğer bunu $ cinsinden türkiye’de göstermek için formatlamak gerekseydi oda şöyle olacaktı;

$1.200,00

Tabi bu eğer türkçe olarak görmek istersek bu şekilde, atıyorum amerikalılar için formatlamak gerekseydi şöyle gözükecekti;

$1,200.00

Arada bazı noktalama işareti farklılıkları ve bazende currency simgesinin sağda ya da solda olması gibi durumlar oluyor. Tabi bu kuralları biz tek tek bakıp ona göre yapmak yerine javascript’te Intl.NumberFormat nesnesini kullanacağız. Şimdi yukarıdaki örneklerimiz kodlara dökelim.

let moneyFormat = (locale, currency) => {
return new Intl.NumberFormat(locale,
{
style: 'currency',
currency: currency
}
);
};

Burada bir fonksiyon haline getirdim daha kolay kullanalım diye. Şimdi sırasıyla 1200₺ türkiye için, 1200₺ türkiye için ve 1200$ amerika için para formatlarını ayarlayalım.

console.log(moneyFormat('tr-TR', 'TRY').format(1200)); // ₺1.200,00
console.log(moneyFormat('tr-TR', 'USD').format(1200)); // $1.200,00
console.log(moneyFormat('en-US', 'USD').format(1200)); // $1,200.00

Eğer currency gözükmesin isterseniz fonksiyondaki style: ‘currency’ kısmını kaldırabilirsiniz. Bu kadar 🙂 Herkese iyi kodlamalar.

Daha fazla detay için;
https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat

MySQL/PHP ile Tüm Tabloları Truncate Etme (Temizleme)

Bir projede kurulum yaparken tüm tabloları temizlemem gerekiyor. Tek tek elle yapsam olmaz, tablo adlarını bir diziye aktarıp truncate etsem saçma olur. Bunun için information_schema’ı kullanarak tabloları çektim ve döngüye sokarak temizleme işlemi yaptım. Yani sql sorgum şöyle;

SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema IN("db_adi", "db_adi2")

Burada concat ile değerleri birleştirince tüm tablolarıma ait otomatik truncate kodu çıkmış oldu. Şimdi bunu php ile birleştirdiğimizde;

<?php
// pdo db bağlantı işlemleri ..

$query = $db->query('SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN("mvc")')->fetchAll(PDO::FETCH_ASSOC);

foreach ($query as $row){
echo $db->query(current($row))->fetch();
}

Not: Eğer SQLSTATE[42000]: Syntax error or access violation hatası alıyorsanız, foreach’den önce yani sorguları çalıştırmadan önce FOREIGN_KEY_CHECKS değerini 0’a eşitleyip deneyin. Yani;

<?php
// pdo db bağlantı işlemleri ..

$query = $db->query('SELECT CONCAT("TRUNCATE TABLE ", table_schema, ".", TABLE_NAME, ";") FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN("mvc")')->fetchAll(PDO::FETCH_ASSOC);
$db->query('SET FOREIGN_KEY_CHECKS=0')->fetch();
foreach ($query as $row){
echo $db->query(current($row))->fetch();
}

İşte bu kadar 🙂 Benim hazırladığım BasicDB sınıfında ise son versiyonunu indirdikten sonra şu şekilde kullanmak yeterli;

<?php
// basicdb bağlantı işlemleri ..
$db->truncateAll();

Bu metod içerisinde AUTO_INCREMENT değerleride 1’den başlayacak şekilde ayarlanıyor. Dilerseniz kendi şu sql sorgusu ile tablolarınızın başlangıç değerlerini de ayarlayabilirsiniz.

ALTER TABLE `db_adi`.`tablo_adi` AUTO_INCREMENT = 1; # 1 ya da kaçtan başlayacaksa o

Sıfırdan PHP ve MySQL Derslerim Artık Ücretsiz!

Dün uzun uzun bir videolu anlatım yapmayı planlamıştım bu konuda, ancak şimdi düşünüyorum da çokta önemli değil uzun uzun anlatmak. 1 sene 3 ay önce udemy’de ücretli olarak yayınladığım kursumu, raf ömrünün dolduğunu düşündüğüm ve daha iyisilerine yer açması adına ücretsiz olarak yayınlamaya karar verdim.

2017 yılı benim hayatımın en kötü yılı olmuştu, gerek maddi gerek manevi. Bu dönemde çıkardığım bir kurstu, ilk ücretli kursumdu. Paralı eğitime karşı değilim, hakkıyla yapıldığı sürece. Fakat ilk kursumun acemiliğindendir belki, yeterince hakkını verdiğimi düşünmüyorum. Bundan dolayı, temel eğitimleri ücretsiz olarak paylaşmakta bir problem görmedim.

Eğer kursu daha önceden parayla satın alıpta bu duruma itirazını olan arkadaşlarım varsa ( ki olmayacağını umarım ) paralarını iade edemem 🙂 Fakat bir sonraki çıkaracağım kurs için ücretsiz kuponları bende hazır, merak etmesinler.

Doğru olduğunu düşündüğüm bir şeyi yapmaya karar verdim, kahretsin ki fazla tez canlıyım 🙂 O yüzden düşündüğümü hemen yapma gibi kötü bir huyum var. Neyse, umarım bu temel dersler birilerinin gelişimine fayda sağlar. Kursu alan arkadaşlarım, sizlere sesleniyorum. Sayenizde şu an bu kurs videolarına ücretsiz erişebilecek bir sürü insan, bolca dua alacağız 🙂

Hoşçakalın, sevgiyle kalın.

CSS’de Değişken Kullanımı

Herkese merhaba, bu yazımda sizlere CSS’de native olarak değişkenlerin kullanımını anlatmak istiyorum. Değişkenlere başlamadan önce sizlere bir sözde sınıftan bahsetmek istiyorum.

:root

:root sözde sınıfı, en üst düzey ebeveyn öğesini temsil eder. Yani bir html sayfada bu html etiketi anlamına geliyor. Fakat css’in kullanım alanlarının artmasıyla örneğin svg ve xml’de kullanılırken, :root sözde sınıfı başka bir öğeyi temsil ediyor olabilir.

Örnek bir değişken tanımlaması

Genelde değişkenleri tanımlarken başına iki tane tire işareti koyulması gerektiği söyleniyor. Ancak ben tiresizde denediğimde çalışıyordu, yine de ayırt edici olması adına başına iki tire koyarak :root içerisinde global bir değişen tanımlayalım.

:root {
--color: green;
}

Değişkenlerin kullanımı

Değişkenleri kullanırken var() fonksiyonunu kullanacağız. Örneğin yukarıdaki değişkeni bir etiketin rengi olarak belirlemek istersek;

h3 {
color: var(--color);
}

Local olarak değişken tanımlamak

:root içerisinde biz global olarak değişkenimizi tanımladık. Yani orada tanımlanan değişken sayfanın tamamında kullanılabilirdi. Ancak local olarak belli bir scope’u kapsayacak şekilde oluşturmak istersek, html etiketini seçip değişkeni oluşturuyoruz.

.box {
--color: blue;
}

Artık .box divinin içinde kullanılan değişken değer olarak maviyi alacak. Çünkü local tanımı bu şekilde yapmış olduk.

jQuery ile Değişkenlerin Değerini Değiştirmek

Genelde jQuery kullandığımız için bundan da bir örnek vermek istiyorum. Örneğin yukarıda oluşturduğumuz renk değişkenini jquery ile dinamik olarak ayarlamak istersek;

<input type="color" id="color">
<script src="jquery.min.js"></script>
<script>
$('#color').on('input', () => {
$(':root').css('--color', $(this).val());
});
</script>

Terminal’de Bulunduğumuz Dizini phpStorm ile Açmak

Videolarda sublime ile kolayca klasörü açtıklarında sinir oluyordum, ufak bir araştırma ile bunu phpStorm içinde yapmak mümkünmüş. Efenim öncelikle terminalde ilgili klasöre girdikten sonra şu kodu çalıştırırsanız;

open -a PhpStorm ./

./ yazdığım için mevcut dizini phpStorm ile açacaktır. Bu çok uğraştırıcı derseniz bi alies tanımlayıp kısa olarak kullanabilirsiniz. Terminalde bir alies oluşturun, adını feriha koyun.

alias feriha ='open -a PhpStorm'

Artık bir klasörü phpStorm’da açmak için ferihayı kullanabilirsiniz.

feriha ./

Kolaylıklar dilerim 🙂