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

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>

Yaş oldu 26!

Şaka bir yana 21 yaşına girdim diyeli daha 5 sene olmuş şu yazımda son paragrafta yazmışım 🙂 Şimdi göz açayıp kapayıncaya kadar 26. yaşıma geldim, daha yeni yeni farkına varıyorum akıp giden zamanın, birikmiş anıların, öğretici tecrübelerin ve bitmek bilmeyen sevgilerin.

Bu sene doğum günümde 5 sene önce olduğu gibi yine İstanbul’dayım, hayat beni bir yerlerde döndürüp duruyor ama dur bakalım çıkar yakında kokusu 😀

Yalnız pastadaki nargile efsane değil mi ya 😀