#10yearschallange

Bir furya vardı #10yearschallange diye, geçenlerde bir takipçimin eski dosyalarımı benimle paylaşmasından sonra baktım ki tarihler 2009’u gösteriyor, o zaman dedim bir #10yearschallange yapmalıyım diye kendi kendime 😀 Neyse efenim, lafı çok uzatmadan.

Seslenirken Yarınlara [Tayfun Erbilen]

Uzun zaman sonra müzik için ilham geldi 🙂 Yazılım bilimi ve kablosuzkediyi içine alan 3 dörtlük yazdım ve söylemeye çalıştım, seviyorum ve eğleniyorum böyle şeyleri yaparken 😀

Şimdi geldiğim noktadan seslenirken yarınlara,
her iki lafı(n|m)dan biri olmuş lan sanki para.
Başlarda eğlenirdim, konuşarak delirirdim,
İzlemezdi kimse ama ben kendimi iyi bilirdim..

..demek zordu ama bu sektörde çoktu.
İki kod yazınca kendine ünvanı koydu,
başladı çalışmaya, ah bizimle yarışmaya,
kendi bile bilmezdi ama bu iş çok zordu..

Sormaktan çekinmeyen, bildiklerini söyleyen,
birinin derdi olduğunda, bi şekil destekleyen,
kablosuzsa kedinin, yazılımsa bilimin,
söyleyin lan artık bana, yoksa ayarı dilimin..

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

phpStorm’da Compile Edilen Dosyaları Otomatik Sunucuya Yüklemek

Eğer phpStorm’da deployment özelliğini kullanıyorsanız, ve değişiklik yapılan dosyaları otomatik yüklüyorsanız ancak SCSS gibi css için ya da gulp gibi front-end için bir compiler kullanıyorsanız ve compile edilen dosyaları otomatik yüklemediğini fark ettiyseniz, bunun bir problem olduğunu düşünmüşsünüzdür. Benim gibi yıllarca bunun çözümünü aratmayıp buda böyle çalışıyor dediyseniz vay halinize 😀

Bugün bu yazımda size bunun böyle olmadığını, compile edilen dosyalarında otomatik yüklenmesi için ufak bir ayar açmanız gerektiğini göstereceğim.

phpStorm’u açtıktan sonra yukarıdaki menüden sırasıyla Tools > Deployment > Options.. kısmına girin. Açılan pencerede ise aşağıda görünen kısmı işaretleyin.

Evet artık değişiklik olan dosyalarında otomatik olarak yüklenecek, hadi hayırlı olsun büyük bir yükten kurtulduk.

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