genel-sorular

MySQL Process Takip Etme

Kendinize özel bir web sunucusu yönetiyorsanız ve bu sunucuda birden fazla MySQL ve binlerce tablonuz varsa bu sunucuda zaman zaman MySQL sorunlarının yaşanması normaldir ancak bu sorunların ne kadar kısa sürede çözüldüğü oldukça önem arz eder.

MySQL servisinde / sunucusunda hangi işlemde yüksek istek aldığı yada MySQL sunucusun nerde kitlendiğini işlem süresinin nerde uzadığını tespit edebilmek için SSH ile öncelikle sunucuya bağlanıyoruz.

Sunucu bağlantısı sonrasında MySQL ile SSH üzerinden bağlantı yapmalıyız bunun için öncelikle MySQL Root şifresini öğreniyoruz

cat /usr/local/directadmin/conf/mysql.conf

sonrasında MYSQL Bağlantımızı sağlıyoruz

mysql -u root -p

burda cat ile öğrendimiz şifremizi yazıyoruz ve anlık olarak MYSQL query leri listelemek için aşağıdaki komutu kullanıyoruz.

SHOW FULL PROCESSLIST;

 

projem-var

Hangi Yazılım Dili Öğrenilmeli ve Nereden Başlanmalı – 2022

Öncelikle en popüler olan yazılım dili ile başlanmalıdır, hangi dil ile başladığınızın ilk etapta bir önemi bulunmuyor, burda dikkat edilmesi gereken tek unsur en popüler dille başlamak olacaktır, hangisi demekten ziyade stack overflow üzerinden en popüler dili tespit etmek ve ilk kodumuzu “Merhaba Dünya” yı bu dille yazmak gerekir.

Yazılım mimarisini yani bilgisayar ile konuşmayı öğrendikten sonra gerisi sadece yazım tipini öğrenmektir. Kodlama proje geliştirilerek öğrenilir, kitap okur gibi bir yazılım dilini öğrenmek imkansızdır, evet genel sık kullanılan fonksiyonları ezberlersiniz ancak bunlar size bir değer katmayacaktır sadece işinizi kolaylaştırır ama bir algoritma geliştirmeyi bilmiyorsanız öğrendiğiniz bu fonksiyonlarda hiç bir işinize yaramayacak.

İlk etapta başlanması gereken nokta algoritma dır yani bir bilgisayar gibi düşünebilmektedir bu ne demek dersekte;
Bilgisayarlar baktığınız zaman dünyanın en akılsız cihazlarıdır , siz ne derseniz onu gerçekleştirir, sizin verdiğiniz komutlar dışında bir işlemi gerçekleştiremez, e diyeceksiniz yapay zeka ne o zaman, kabaca bir tabirle buda aslında programcısının belirlemiş olduğu direktifleri yerine getirir. Bir yapay zekanın bir şeyleri öğrenmesi ve karar verebilmesi için sizin ona çok fazla data vermeniz ve o datalar karşısında neler yapması gerektiğini önceden belirlemeniz gerekir.

Algoritma geliştirmeyi öğrenmek için ise günlük hayatta farkettiğiniz sizi meşgul edecek konuları yazılıma çevirin . Örnek bilgisayarınızın masaüstü resimlerini bir siteden otomatik olarak indirmeyi deneyin bunun için basit bir bot yazabilirsiniz, yada cep telefonunuz için gelir gider takibi yapabileceğiniz sıklıkla nelere para harcadığınızın istatistiğini çıkarabilecek bir yazılım yapın.

Şuanda en popüler dil PYTHON , çünkü öğrenmesi basit diğer dillerde öğrenmeyi zorlaştıracak bir çok yapı bu bilde yok , her işlem için özel sınıflar daha önceden yazılmış siz sadece projenize kütüphaneyi import edin fonksiyonu tanımlayın datayı verin ve size istediğiniz sonucu versin. Diğer dillerde bu sınıflar oldukça az o yüzden öğrenmesi biraz zor olabiliyor. Bir java da uzak sunucudan bir veri çekebilmeniz için minumum 20 satır kod yazarsınız . PYTHON ile bu işlemi tek satırda çözersiniz, aynı şekilde PHP içinde bu zor olacak cURL kütüphanesini kullanmak için 10 satır tanımlama yaparsınız . React için dersek burdada aynı şekilde tek satırda işleminizi çözebilirsiniz ancak syntax yapısını çözmeniz anlamlandırmanız için orta seviye bir yazılımcı olmanız gerekir.

Python ile yazılıma başlayıp; for, while, if, else gibi döngü ve koşullandırmaları öğrendikten sonra hangi alanda proje geliştirmek sizin hoşunuza gidecekse ona yönelin, ben php öğrendim burda iş bulamam ilerleyen süreçte ne yaparım diye düşünmeyin , bir dilin yapısını öğrenmeniz sadece bir gününüzü alacaktır , iyi bir algoritma geliştiricisi ve yazılım mimarisine tam hakimseniz farklı dili öğrenmeniz bir günü geçmeyecektir. Öğrenmek kelimesi burda biraz yanlış olabilir çünkü dilleri öğrenmek demek o dilin tüm temel fonksiyonlarını bilmek demektir buda çok gerekli bir durum değil aslında.

Dilin temel fonksiyonlarını öğrenmeniz zaman alacaktır daha doğrusu bu işlemi konuşur gibi yapmanız için zamana ihtiyacınız var kullandıkça öğrenilir, bunun içinde ortadan daha üst seviyede bir ingilizceye ihtiyacınız var türkçe olarak bir kaynak aramak ve sorununuzun çözümünü bulmanız sizi çok yorar ve yıldırır bu yüzden aradığınız fonksiyonun kısa bir açıklamasını google ladığınız zaman direk fonksiyon karşınıza çıkacaktır.

Öğrenme esnasında diğer dikkat edilmesi gereken konu hata okuyabilmektedir, sizin yazdığınız kod çalışmıyorsa bilgisayar size bunun neden çalışmadığını söyler bu hata sonucundan kodunuzda düzenleme yapmalısınız, işte bu hata kodlarını okuyabilmenizde ne kadar ingilizce bildiğiniz ile ilgili. Bundan seneler öncesinde bu hata loglarıda çok anlaşılır değildi size bir hata log numarası verir kenara çekilirdi ama artık diller editörler ile bu hata kodlarının neye karşılık geldiğini size anlamlı cümleler halinde terminalden söyler, hala mı anlamadınız o zaman bu hata kodunu google a direk yazın karşınıza o sorunla karşılaşmış diğer kişilerin çözümleri çıkacaktır.

Yazılım öğrenmek için nasıl bir sisteme (bilgisayara) ihtiyacım var ?
Aslında bu sorunun cevabı günümüzde çok kolay çünkü web,mobil yada bilgisayar programı geliştiriyorsanız çok aman aman özellikli bir bilgisayara ihtiyacınız yok , oyun yada 3D bir proje geliştiriyorsanız bu aşamada daha güçlü bilgisayarlara ihtiyacınız olacak . Bu yazımızda başlangıç olduğu için sadece editör açabilen herhangi bir bilgisayarda yazılım geliştirebilirsiniz.

Yazılım için en iyi editör nedir ?
Bu yazımın yazıldığı tarihte en iyisi VsCode Studio , ilerleyen süreçte yöneticileri saçma kararlar alarak editörü yavaşlatmaz, topluluklar da desteğini bu editörden çekmezse bu böyle gider gibi. Editör ler tecrübelerime göre beş yılda bir değişir , değişir derken her beş yılda bir daha iyi bir alternatifi çıkar, editör seçerken ne kadar geniş bir topluluğu var yada ne kadar plugin geliştirilmiş bunları inceleyerek seçilebilir. Editör seçimi neden önemli , kodunuzu yazarken daha size hatanın yerini gösterir, pluginler sayesinde daha hızlı kod yazarsınız , temel fonksiyonları size yazarken hatırlatır , kodlardaki girintileri kendisi ayarlar vs…

 

ücretsiz ssl

Apache Server Let’s Encyrpt install

Linux server üzerinde kurulmuş olan Apache HTTP server için Let’s Encyrpt kurmak için aşağıdaki döküman yeterli olacaktır , şimdi neden bu kadar uğraşıyoruz panel kurup kullansak olmaz mı dersek . Aslında olmaz çünkü bazı durumlarda panel kullanılması doğru değil örneğin bir video server kullanıyorsak yada sadece API servislerinin çalışacağı bir server kuruyorsak yada sadece tek site yayınlayacağıız bir server konfigre ettiysek burda web panellerden birini istemeyeceğiz. Ücretsizler var denildi gibi buda olmuyor çünkü ücretsizlerin çoğu ya opensource yada projeye başlanmış kullanılır olmuş ancak geliştirilmeye devam edilmemiş , işte burda kalan yerden sizin devam etmeniz gerekir, buda ayrı uğraş en iyisimi web server panel ; direactadmin , cpanel yada plesk değilse o işe hiç girmeyin.

Konumuza dönecek olursak , apache server da ücrestsiz SSL sertifikası aktif etmek için aşağıdaki kod satırlarını ssh ile bağlandıktan sonra sırayla uygulayacaz.

yum -y update
yum -y install mod_ssl
yum -y install epel-release
yum -y install yum-utils
yum -y install certbot-apache
certbot --apache

Otomatik SSL Sertifikası Yenileme

crontab -e
* */12 * * * /usr/bin/certbot renew >/dev/null 2>&1
react-native-dersleri-ogren

React Native Türkçe

React Native ile uygulama geliştirirken yaşanan en büyük zorluklardan biriside türkçe kaynak bulma zorluğudur , aslında bu bilişim sistemleri ile uğraşan herkesin ortak sorunu diyebiliriz, bilgisayar konusunda kendinizi geliştirmek istiyorsanız tek yol ingilizce öğrenmeniz olacaktır .

İngilizce bilginiz günlük olarak kullandığınız ingilizce olarak düşünmemeliyiz burda teknik dil kullanılıyor ve sokak dili ile maalesef sadece benzer aynısı değil.

brkdgn bloğunun temel amacı react native , php yada js ile uygulama geliştirecek yada hobi amacıyla bu dillerden birine yönelecek kişi veya kurumlara yardımcı olmaktır , bazı temek fonksiyonların kullanımı ve dilin temel gerekliliklerini anlattığım bir çok makalem bulunuyor bunlardan tamamen ücretsiz olarak herkes faydalanabilir, anlaşılman konularda ve ziyaretçilerin anlamlandıramadığı ve konuya hakim olduğumuz konularda oldukça yardımcı olmaya çalışıyoruz. Sizinde anlamadığınız konular varsa veya anlatılmasını talep ettiğiniz fonksiyon yada algoritmalar varsa dilimizin döndüğünce bilgimizin yettiğince anlatmak isteriz. Unutmayalım bilgi paylaştıkça çoğalacaktır.

Mobil uygulama geliştirirken android veya ios üzerinden uygulama geliştireceksek türkçe kaynak bulma hususunda çok zorluk çekmiyoruz çünkü bu diller evveliyattan beri var uzun zamandır piyasada olduğu için bir çok sorunla sizden önce başkaları karşılaştı ve çözüm buldu sonrasında paylaşımı seven bilgi kıskanmayanlar bu konularda internet üzerinden bir çok paylaşımda bulundu , ancak bu hususta her yeni bilginin sorunu olduğu gibi bilinirlik sorununu react native ile uygulama geliştirirkende yaşıyoruz, bu sorun şuan için oldukça normal hatta bundan yaklaşık 2 sene öncesinde react native geliştiricileri “freamwork yazanlar” bile bazı sorunların çözümünü bilmiyordu . Dil geliştikçe topluluğu arttıkça sorunlar çözüldü topluluk genişledi ve güzel tartışma ortamları oluştu ve dolayısıyla react native şuanki halini aldı.

react-native-dersleri-ogren

React Native map() foreach fonksiyonu

React native veya JS ile veya React ile JavaScript alt yapısına sahip tüm FreamWork lerde kullanılan map() fonksiyonun kullanımına değineceğiz, bu fonksiyon aslında PHP de ve diğer bir çok dilde yer alan foreach() fonksiyonu ile aynı işleve sahip ama yazılım işlemi biraz farklıdır .

PHP de foreach kullanırken eğer dizi elemanlarının KEY değerlerine erişerek döngü oluşturmak istiyorsak yazım şeklimiz;

php foreaceah

yukarıdaki gibi olacaktır , React Native ile map kullanırken yani dizi ile ilgili bir işlemimiz olacaksa map() fonksiyonunu kullanacaz ve daha net anlaşılması için değişken isimlerini değiştirmeden bir örnek göstermek istiyorum ;

js map

yazım şeklimiz yukarıdaki gibi olacaktır , key ile alınan değer dizinin yada objenin elemanlarının index(key) değeridir value ise objenin kedisidir. Yazımızda react native ile kullanımına değineceğimiz için iki farklı kullanım şekli bulunuyor . Aslında yazımları aynı ancak JSX standartlarına uygun şekilde return() içerisinde kullanımını göstereceğim .

Öncelikle bir fonksiyon içinde yazım şekline bakalım ;

react native map

daha net anlaşılması için tam bir React Native fonksiyonu yazdım burda görüldüğü gibi herhangi bir fonksiyon içerisinde kullanımına değindim , örnekte dizinin içi boş görünüyor dizinin içerisini uzak sunucudan(API) veri çekerek doldurulabilir. React Native ile foreach() kullanmak aslında bu kadar basit , diğer bir kullanım şekli ise FlatList bileşeni kullanmadan diğer return içerisinde diziyi telefon ekranına yazdırmak istersek aşağıdaki kullanımı kullanacaz, return içerisinde JS değişkenlerini kullanmak için {} parantezleri içerisine yazıyorduk burdada aynını gerçekleştirecez tek fark maplenen her dizi, obje elamanının return edilmesi gerekir ,

react native implement map func

iki kullanım arasındaki fark birinci kullanımda API ile gelen verinin işlenmesi için kullanılır yani bir kullanıcı datası çekilmiştir, sonrasında uygulamamızda bununla ilgili filtrelemeler yapılıp yeni dizinin içerisine tanımlanır ve bu datanın kullanıcı ile etkileşime geçmesi (gösterilmesi) için ikinci kullanım ile ekrana basarız.

genel-sorular

Centos SSH Sensors Check

Linux Centos sunucularda sunucu değerlerinin takip edilmesi gerekebilir render sunucusu yada web sunucusu olarak kullandığımız sunucularımızın CPU sıcaklı değerlerini takip ederiz ki yüklenme durumlarını görebilelim .

Centos sunucumuza SSH üzerinden bağlantı sağlayalım ve aşağıdaki kodları sırasıya uygulayım ;

 
  sudo yum install lm_sensors
  sudo sensors-detect

sensor tarama modülümüzü yükledik şimdide çıktımıza bakalım

 

 sensors

 

Direct Admin CustomBuild Update

Direct admin her geçen gün kendini geliştiren ve sürekli yeni özellikleri bünyesine ekleyen dev paneller arasında hızla yükselmeye devam eden bir web hosting kontrol panelidir.

Direct admini ilk versiyonundan beri kullananlar bu değişimi çok iyi farkedeceklerdir, direct admin en stabil centos 7 sunucularda çalışır ve bu sunucuları SSH üzerinden kolayca update ile güncelleyebiliriz peki http yada mysql yada curl gibi ekstra pluginlerin son versiyonlarını nasıl kullanabiliriz .

Bu aşamada direct admin costumbuild 2.0 yardımcı olacak plugin olarak yüklenen ve tüm servisleri ve buildleri kontrol edebileceğimiz bu plugin sayesinde sorunsuz güncellemeler ve re-build ler sağlayabiliriz. eğer costumbuild 2.0 kurulu ise yine güncelleme işlemlerimize SSH üzerinden gerçekleştirmek isteyebiliriz bu durumda aşağıdaki satırları SSH üzerinden sırasıyla uygulamalıyız.

 
cd /usr/local/directadmin/custombuild
./build update
./build all d
./build rewrite_confs

 

java-script-dersleri

JS Timer Count Down – Geri Sayar

Javascript ile belirlenen zamandan geriye sayım için bir sayaç yapmak oldukça basit bir işlem , bu yazımızda geri zaman sayar yapacaz.

Öncelikle HTML alanını oluşturalım  ;

<span id="sayac"></span>

Sonrasında JS Fonksiyonumuzu yazalım

 
 $(function(){
     var saat = 12;
     var dakika = 0;
     var saniye = 0;
     var sayac = setInterval(function(){
            if(dakika == 0 && saniye == 0){
                saat--;
                saniye = 60;
                dakika = 60;
            }
            if (dakika != 0 && saniye == 0) {
                dakika--;
                saniye = 60;
            }
            if (saniye != 0) {
                saniye--;
            }
            if(saniye == 0 && dakika == 0 && saat == 0){
                clearInterval(sayac);
            }
            $("#sayac").html(saat+":"+dakika+":"+saniye)
     },1000)
 })

 

geri sayım sayacımız hazır artık projelerimizde kullanabiliriz,

react-native-dersleri-ogren

Neden React Native

React native bir cross platform uygulama geliştirme kütüphanesi-dilidir , Neden react native sorusuna en güzel yanıt ne yapmak istiyoruz sorusuna verilecek cevap ile aynı olacaktır.

Ne yapmak istiyoruz sorusu ile aynı cevap dedik çünkü bir programlama diline başlamak için öncelikle ihtiyaçlarımızı belirlemeliyiz sonrasında o dil ile ilgili kendimizi geliştirmeliyiz.

React native ile neler yapılabilir ?

“Write once run anywhere”

React native ile yazdığımız kod satırlarını Android , IOS , WEB platformlarının tamamında tek çıktı ile kullanabiliriz (istisnai componentler mevcut) .  React native ile bir web sitesinin daha doğrusu web uygulamasının mobil uygulamasını kolaylıkla JS bilgisi ile geliştirebiliriz, sonrasında alınan çıktı ile andrıid ve ios alanlarında derleme sağlanır ve mobil uygulama geliştirilmiş olur , Facebook iddiasına göre react native gerçekten “Native” imiş, ki bunu biz geliştiriciler yada kullanıcılar olarak performans tarafında kolaylıkla anlayabiliyoruz.(İonic vs. kullanınca)

Neden React Native ?

Bu soru için en güzel cevap yazım kolaylığı ve anlaşılabilir bir dil olması bunun sebebide JavaScript ile yazıyor olmamız , JS yıllardır Web için FrontEnd olarak kullanıldı ve yılların vermiş olduğu geliştirilme süreci ile stabiletisini kazanmış güçlü bir dil , JS alt yapısını kullanarak geliştirilen dilde component eklemeleri taglama ile ekleniyor ve bu yapısı neredeyse HTML ki bu yapıya JSX deniyor .  Eğer web dünyasına uzak değilseniz ve stabil bir yeni versiyon mobil uygulama geliştirme dili arıyorsanız bu React Native olacaktır çünkü Flutter gibi kendi içinde yeni ve sıfırdan yazılmış bir dil üzerine kurulmadı(Dart) ayrıca React native topluluğu oldukça fazla bunun en pozitif avantajı ise bir sorun ile karşılaştığınızda kolayca çözüm bulabiliyorsunuz.

Aslında bu tarz yazılım dilleri yeni çıkıyor ve neredeyse hepsi JS üzerinde kuruluyor ve tek kod yazımı ile tüm cihazlarda çalışacak diller hedefleniyor bunun tek sebebi artık teknoloji çok ilerledi ve herkes kolaylıkla teknoloji alanında uzamanlaşabiliyor ve kendi ekosistemini oluşturuyor , ilk zamanlarda  Symbian vardı sonra IOS sonra Andorid sonra Windows Mobil sonra derken sonra sonra onlarca mobil işletim sistemi bulunuyor ve çoğu işletim sistemi kendine göre üstün özellikleri var ama gelişim konusunda ekosistem farklılıklarından dolayı kısır kalıyor ve güçlü olamayan (yazılımcı yopluluğunu toplayamayan) silinip gidiyor. işte bu farklılıkları yok etmek için oluşturulan bu diller içinde en mantıklı react çünkü çoğu düzene karşı çıkmadan geliştirme yaparak kendi eko sistemini oluşturdu.

 

Linux Centos 7 Uzak Masaüstü Bağlantısı

Linux işletim sistemleride Windows gibi masaüstü desteği bulunmaktadır ve uzak bağlantı ile sorunsuz bir masaüstünden bilgisayar kullanma deneyimi yaşayabiliriz.

Daha önce bir çok sürümde ve linux dağıtımında tecrübelerim oldu ve bunların içerisinde en az sorun yaşadığım dağıtım Centos 7 ve masaüstü olarak ise GNOME oldu. Bu makalede düşünce yapısı olarak daha çok uzak sunucuda kurulum üzerinde durdum ancak kendi masaüstü bilgisayarınızdada linux kullanabilirsiniz ve Linux dağıtımı olarak ubuntu veya pardus kullanabilirsiniz ancak uzak sunucu olacaksa bu mutlaka Centos olmalıdır.

Öncelikle sunucumuza terminal bağlantısı sağlayalım sonrasında mutlaka öncelikle bir güncelleme yapalım  ;

 

 
 yum update -y

güncellemeyi yaptık sonrasında uzak bağlantıyı kuralım böylece sunucuya uzak bağlantı ile masaüstüne bağlanabiliriz ;

 
 sudo yum install -y epel-release
 sudo yum install -y xrdp
 sudo systemctl enable xrdp
 sudo systemctl start xrdp

Eğer sunucuda Firewall aktif ise ki bu centos 7 nin bazı sürümlerinde default olarak aktif geliyor bazılarında pasif geliyor hatta bazı sürümlerde firewall hiç bulunmuyo biliyor bu yüzden bu satırlarda Firewall Disabled çıktısı alırsanız şaşırmayın yada yanlış giden birşeylerin olduğunu düşünmeyin .

  
 sudo firewall-cmd --add-port=3389/tcp --permanent
 sudo firewall-cmd --reload

Artık GNOME desktop kurabiliriz ve böylece uzak bağlantı ile bilgisayara bağlandığımızda sorunsuz bir masaüstü ile karşılaşabiliriz.

 
 sudo yum groupinstall "GNOME DESKTOP" -y

artık kurulum tamamlandı ve bundan sonra GNOME default ayarlarını yapalım

 
 systemctl get-default
 sudo systemctl set-default graphical.target
 sudo systemctl isolate graphical.target

GNOME kurulumuda tamamdır artık sorunsuz bir uzak bağlantı (Uzak masaüstü bağlantısı) sağlayabileceğimiz bir sunucumuz bulunuyor .

NOT :

GNOME Kaldırmak istiyorsak aşağıdaki satırları sırasıyla uygulayabiliriz ;

 
 sudo yum groupremove -y "GNOME Desktop"
 sudo yum autoremove -y