Linux’ta Birkaç Komut – find

Bazen bir proje içerisinde veya hangi dosyada olduğunu merak ettiğiniz yazı vb. bir içerik oldu mu ? Örneğin bilmemne_fonksiyonu hangi dosyada ? ya da bilmemne_degiskeni hangi dosyada gibi bir arama gereği duydudunuz mu ? Ben / Biz duyduk ve linux üzerindeki nimetlerden yararlanalım dedik.

Linux üzerinde aranan kelime hangi dosyada ?

Komut ;
# find /DOSYA_YOLU -type f -print | xargs grep “ARANACAK_KELIME_VB

Örnek ;
# find /www/var/html/ -type f -print | xargs grep “clear_db_(

Peki aradığımızı bulduk hemde birkaç dosyada çıktı. Çokta bir önemi yok. Birden fazla dosyayı aynı anda değiştirmek istiyorsanız ise;

Komut ;
# find /DOSYA_YOLU -type f -exec sed -i ‘s/ARANAN_KELIME/YENI_KELIME/g’ {} \;

Örnek ;
# find /www/var/html/ -type f -exec sed -i ‘s/clear_db_(/clear_database_(/g’ {} \;

 

Umarım işinize yarayan ufak komutlar olmuştur..

nginx-generator ile Reverse Proxy Oluşturma

Herhangi bir panel olmadan düz bir linux sunucu üzerinde NGINX ile birlikte Reverse Proxy yapmak isterseniz nginx-generator toolu ile birlikte hızlıca işlem yapabilirsiniz.

Örnek;

nginx-generator \
--name diplomasizmuhendis.com \
--domain diplomasizmuhendis.com \
--type proxy \
--var host=(127.0.0.1  -- localhost) \
--var port=8080 \
/etc/nginx/sites-enabled/diplomasizmuhendis.com


Domaininizi belirttikten sonra “–var host=” bölümünde ister localhost ister 127.0.0.1 veya sunucy IP adresini yazabilirsiniz. Network konfigürasyonunuza göre yapacağınız senaryoya göre değişecektir. Bu arada sunucunun IP adresi yerine Reverse Proxy yapan sunucu ile Application sunucunuz farklı olabilir 🙂

“–var pot=8080” local olarak çalışan uygulamanızın hangi portta çalışacağını belirtmeniz gerekiyor.

Reverse Proxy harici olarak NGINX konfigürasyonlarınızıda hızlıca nginx-generator ile yapabilirsiniz.

Linux Bash Script ile MYSQL’den Değer Alma

Linux üzerinde BASH script ile ufak bir işlem yaptırırken MYSQL üzerinden değer almamız gerektiğinde aşağıdaki kod parçası işinizi görecektir. Aynı zamanda sadece değeri almak istiyorsanız GREP komutundan sonraki kolon adını değiştirmeniz yeterli olacaktır.

$(`mysql DATABASE_NAME -e ‘SELECT COLUMN FROM TABLE_NAME‘ | grep -v “COLUMN“`)

Bash script üzerindeki MYSQL sorgularınızın çalıştırılabilir olması için user bilgilerine ihtiyaç olacaktır.

Bu adresteki kaynak üzerinden detaylara ulaşabilirsiniz..

MongoDB Veritabanı Üzerindeki Tüm Kayıtlar

MongoDB ile ufak denemeler sırasında veritabanı üzerindeki toplam kayıt sayısını merak etmiştim. Yabancısı olduğum MongoDB ilk başlarda biraz zorlasada bazı konularda çok da yormadı bizi. Merak sonrası küçük bir kod bloğu ile işlemin yapılabildiğini gördüm. JavaScript ( Tam olarak böyle olmasa da 🙂 ) kodları ile birlikte ufak değişiklikler yapıp Collection’lara ait analizler yapabilirsiniz.

MongoDB tarafında tavsiyem olarak şunu söyleyebilirim.  I/O ( input / output – giriş / çıkış ) işlemlerinin yapıldığı bir sistem üzerinde oldukça stabil çalıştığını gördük. İlerleyen süreçte bir sıkıntı çıkartmaz ise birçok NoSQL projelerinizde oldukça rahat bir şekilde kullanabilirsiniz. Kurulum sırasında veya ilk başlarda klasik SQL’den farklı gelecektir. Korkmayın alışırsınız. 🙂

Her bir Collection’a ait kayıt sayıları için aşağıdaki kod bloğunu kullanabilirsiniz.

var collections = db.getCollectionNames();

print( 'Veritabanı üzerindeki Collections:' );

var total = 0;
for(var i = 0; i < collections.length; i++){
var name = collections[i];

if(name.substr(0, 6) != 'system')
print( name + ' - ' + db[name].count() + ' satır bulunuyor.. ' );
}

Toplam kayıt sayısını merak ediyorsanız aşağıdaki kod bloğunu kullanabilirsiniz.

var collections = db.getCollectionNames();

var total = 0;
for(var i = 0; i < collections.length; i++){
var name = collections[i];

if(name.substr(0, 6) != 'system')
total += db[name].count();
}

print( 'Toplam Satır Sayısı : ' + total )

MongoDB ile ufak bir maceramız oldu. Mümkün olduğunda öğrendiklerim-izden paylaşımlar yapmaya çalışacağım.

Not : Bu komutlar Navicat üzerinde çalıştırılmış olup, Output sekmesinden görüntülenmiştir.

Python’dan Ufak Kod Parçaları – 2

Python ile işlemlerimizde MySQL / MariaDB bağlantıları için aşağıdaki yöntemleri kullanabilirsiniz.

Veritabanı bağlantıları için mysql.connector ‘ü kullanıyoruz.

import mysql.connector

db_log = []

db_conn = mysql.connector.connect(
host="127.0.0.1",
user="USER",
password="PASSWORD",
database="wi_syslog"
)
db = db_conn.cursor()

Bağlantıyı sağladıktan sonra SELECT ve INSERT işlemleri için 2 adet ufak fonksiyona ihtiyacımız olacak. İşin kolayına kaçmak bazen rahatlık olabiliyor 🙂

PHP’den gelen alışkanlığımız için SELECT işleminden sonraki gelen satırların KEY => VALUE serisine benzer yapabilmek için aşağıdaki fonksiyon bizlere yardımcı oluyor. Okumaya devam et “Python’dan Ufak Kod Parçaları – 2”

Python’dan Ufak Kod Parçaları – 1

Python ile normal çalışma zamanı haricinde Debug yaparken bazı noktalarda Print yapmak isterseniz aşağıdaki gibi bir Fonksiyon ile işinizi kolaylaştırabilirsiniz.

import sys
def debug( debug ):
if 'debug' in sys.argv:
print( debug )

Argüment ( parametre ) yöntemi ile yapıyoruz. CLI üzerinde dosyanızı çalıştırıken, dosyaya argüment göndermeniz yeterli.


sudo python test.py debug

Okumaya devam et “Python’dan Ufak Kod Parçaları – 1”

Arada Bir Alt Gr Tuşunun Çalışmaması

Yazılım ile uğraşan herkesin en çok kullandığı kısayol fonksiyon tuşlar vardır elbet. Örneğin PHP kullananlar için $( Dolar ) işareti. Bu karakterler, tuşlar dilden dile farklılık göstermektedir tabi ki. Fakat benim moralimi bozan, sinirlerimi tepeme zıplatan, klavyeyi yumruklama sebebim olan Alt Gr + 4  kısayol fonksiyonu arada bir çalışmıyor. Özellikle de PHP ile geliştirme yaparken en çok ihtiyaç olan karakter kısayolu çalışmayınca insan kendinden geçiyor.

Önce problemin hızlıca nasıl ekarte edebileceğimize bir bakalım sonra da çözümüne bakalım. Okumaya devam et “Arada Bir Alt Gr Tuşunun Çalışmaması”

PHP Dosyasının Derlenip HTML Çıktısı Alınması

PHP ile geliştirme sırasında PHP dosyasının derlenip HTML halinin geriye RETURN edilmesi gerektiği yerler olur. Bunu Codeigniter gibi framework’ler yapmaktadır. Bilenler anlayacaktır -> $this->load->view( ‘dosya_yolu’, ‘dizi_degiskeni’, true ); yaptığımızda geri bize gönderilmiş parametreler ile birlikte derlenmiş string hali gelir.

Bu işlem çok basit olmakla birlikte genellikle sayfa yapılarında kullanılır. Peki düz bir PHP sayfası hazırlarken elinizde framework olmadığında ne yapacaksınız ? Aşağıdaki kod parçasını kendinize göre düzenleyip kullanmanız yeterli olacaktır.

function load_html( $file_path, $data )
{
extract( $data );
ob_start();
include( $file_path );
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;
}

 

Bunu yaparken dikkat etmeniz gereken tek şey include etmiş olduğunuz dosyanın yolu ve gönderilen $data değişkeninin extract edilirkenki halinin KEY değerlerinin artık birer değişken olarak kullanılmasıdır. Değişkenleri include etmiş olduğunuz dosyada rahatlıkla kullanabilirsiniz.

Bu işlemde PHP olarak derlenmeyi sağlayan olay ise ob_XX fonksiyonları sağlamaktadır.

Oracle client software version 8.1.7 or greater. Hatası hakkında

Oracle yine iş başında. Oracle ile ilgilenenler birazcık bana kızabilir ama oldum olası sevemedim şunu 😀 Bir müşterimiz ile entegrasyon yaparken eski bir yazılımımız bağlantı hatası alıyordu. Hata “System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.”  Türkçe Meali “System.Data.OracleClient, Oracle istemci version 8.1.7 veya daha sonraki sürümünü gerektirir.”

Daha öncesinde ORACLE tarafında aldığımız bir hatanın çözümü için bir yazı paylaşmıştım. C# ile geliştirilmiş olan bir yazılım üzerinde aldığımız hata idi. Yazıya buradan ulaşabilirsiniz..

Hatanın Türkçe karşılığı anlaşıldığı gibi Oracle Client nesnesinin versiyonun düşük ve eski olmasından kaynaklanıyordu. Bunun için aşağıdaki linkten ODAC’lardan yeni versiyonundan birisinin indirilip kurulum sonrası çözüldüğünü gördüm.

İndirmek biraz zahmetli. Çünkü hesap bilgileri vs. istiyor. Aynı zamanda Oracle sitesi bazen hata veriyor. Dikkat edin. Çıldırmanıza ve çılgın atmanıza sebebiyet verebilir. 🙂

https://www.oracle.com/database/technologies/dotnet-odacdev-downloads.html

Yukarıdaki linkten indirip istenirse sadece Oracle Client nesnesinin kurulması yeterli.

Okumaya devam et “Oracle client software version 8.1.7 or greater. Hatası hakkında”

IOT Denemeleri – LUA Dili

Bir zamanlar malum ülkeden Çin’den birkaç akıllı alet almıştık. Bunlardan bir tanesi WiFi üzerinden Röle açıp kapayan ufak, minnak bir cihazdı. Cihaz’ı Cep telefonu uygulaması üzerinden WiFi ayarlarını vs. yaptıktan sonra uygulama üzerinden Röle’yi açıp kapatabiliyorsunuz. Ufak bir elektrik bağlantısı ile birlikte, Kombinizi, Kapınızı, Televizyonunuzu, Evinizdeki Lambayı vs. Elektrik ile çalışan birçok şeyi cep telefonu üzerinden kontrol edebilir hale geliyorsunuz.

Bir zaman sonra bu cihazın içini merak edip açtığımızda birçok IOT severinde sevdiği ufak bir çip bizi karşıladı. ESP32. ESP32 nin üzerine Node’lardan birini yerleştirmişler. WiFi’ye de bağlanıyor, bişiler de çalışıyor. Sonra TX, RX bağlantı pimlerini görünce dedik ki acaba ? Acaba biz bunun içine girebilir miyiz 🙂 Okumaya devam et “IOT Denemeleri – LUA Dili”