Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (fallback through xdebug.client_host/xdebug.client_port)


Bu hatayı Laravel ile çalışmak için Composer kurulumu sırasında aldım. Hatayı araştırdığımda PHP debug işlemi için php.ini dosyasında xDebug için yaptığım bir ayarın her zaman değil tetiklendiğinde devreye girmesini sağlamak gerekiyormuş. gerekli açıklamaları bulduğum @stackowerflow linkini paylaşıyorum. Kolaylıklar.

https://stackoverflow.com/questions/65162856/xdebug-step-debug-could-not-connect-to-debugging-client-tried-localhost900

#Google Dijital Atölye Kursları


Merhaba. İşletme sahibi veya çalışanı olarak, şirketinizin daha geniş kitlelere ulaşmasını ve dijital dünyaya açılmasını planlıyorsanız bu yazı ilginizi çekecektir. Dijital pazarlamaya başlamak isteyen, içerik pazarlama, dijital reklamcılık, mobil pazarlama ve online alışveriş ile ilgilenenler için Google güzel bir kaynak sağlamış. Google üyeliğinizle ücretsiz olarak katılabileceğiniz sertifikalı Dijital Atölye eğitimi ile ilgili bu bilgiyi sizlerle de paylaşmak istedim.

Kaynak: https://learndigital.withgoogle.com/dijitalatolye

Remote SSH Eklentisi ile Visual Studio Code


Geliştiriciler halihazırda kullandıkları lokal makineleri üzerinde aşağıdaki şekilde Git ile Bitbucket vb. bulut repo ortamlarından yararlanarak uzak geliştirilmelere devam edilebilmektedir. Geliştirim sürecine katkıda bulunmak, yerel ortamın hazırlanması sürecini hızlandırmak ve bu işlemler için harcanan zamanı en aza indirmek amacıyla;

Aşağıdaki infografikte (Şekil 1) belirtildiği şekilde adımlar takip edildiğinde, uzaktaki linux sunucuya VSCode ile Remote SSH aracılığıyla bağlanılıp, kullanıcı /home dizini altına uzak repodan kodlar çekilerek kolaylıkla geliştirme yapılabilecektir. Bu sayede yeni katılan bir geliştirici geliştirme ortamı hazırlanmasına gerek duymadan hızlıca takıma entegre olarak ürün kodunu geliştirmeye başlayabilecektir.

Şekil 1: Remote Development Environment

Çalışmanın temelinde detayları ayrı bir makalemizde belirteceğimiz Container mimarisi kullanılarak Dozkerize edilmiş (Veritabanı Sunucuları, Uygulama Sunucuları ve Yazılımı) teknolojik bütünleşik altyapımız bulunmaktadır. Şekil 2‘de altyapısı gösterilen Visual Studio Code Remote – SSH eklentisi sayesinde fiziksel veya sanal uzak makinelere erişim sağlanarak geliştirme yapılabilmektedir. Günümüzde geliştiriciler normal bir dizüstü bilgisayarda mevut olandan daha fazla depolama alanına, işlemci gücüne ve/veya belleğe ihtiyaç duyabilmekteler. Bu nedenle özel geliştirici sanal makinelerine veya fiziksel sunuculara ihtiyaç duymaktadırlar ki özellikle karmaşık projelerle çalışırken…

Remote SSH architecture
Şekil 2: Remote Development with Remote SSH on Visual Studio Code

Önemli Not: Visual Studio Code Remote SSH ile bağlantı yapılırken eğer local makinenizde Windows işletim sistemi kullanıyorsanız; bağlantı sağlanırken uzak sunucu işletim sistemi Linux olarak seçilmelidir. Eklenti kurulduktan sonra bağlantı sağlanırken Resim 1‘deki hata ile karşılaşabilirsiniz. Hatanın çözümü için SSH bağlantısı için seçtiğimiz Resim 2‘deki konfigürasyon dosyamızın bulunuğu .ssh dizininin tam yolunu SSH bağlantı ayarlarındaki Resim 3‘deki alana tanımlamak sorunu çözecektir.

Resim 1: Windows Ortamında Olası Hata Ekranı
Resim 2: Remote SSH için Local Konfigürasyon Yolunun Kopyalanması
Resim 3: Remote SSH için Local Konfigürasyon Dosyası Yolunun Belirtilmesi (CTRL+Shift+P)

Yardımcı Kaynaklar:

Hibrit Mobil Uygulama Geliştirme Hakkında


Mobil uygulama geliştirme tamam da nedir bu hibrit arkadaş dediğinizi duyar gibiyim 🙂 Ben de araştırma yaparken bu soruyu sormuştum kendime. Açıkçası cevabını öğrenmek için biraz araştırma yaptığımda karşıma Phonegap ve Apache Cordova platformları çıktı. Peki bunlar tam olarak ne işe yarıyordu, hibrit yapı ile arasındaki bağlantı neydi? Bu doğrultuda yaptığım araştırmada, mobil uygulama geliştirme için hangi yöntemin doğru olacağından hareketle mobil mimari yaklaşımlardan bahseden aşağıda paylaştığım resmi ile karşılaştım.

outsystems-native-web-hybrid-infographic-l

Yukarıda sunulan resimden de anlaşılacağı üzere, Mobil uygulama geliştirme yöntemleri, zaman, maliyet ve deneyim kısıtları da düşünülerek ele alındığında Single Page Application (SPA) olarak nitelendirilen;

1. Mobil işletim sisteminin (Android, IOS, Windows Mobile vb.) kendi dilinde yani Java, Swift veya C, C# gibi programlama dilleri kullanılarak yalnızca geliştirildiği platformda çalışabilecek nitelikte Native Mobile,

2. HTML, CSS, JS Kütüphaneleri (Bootstrap, Ionic, Jquery vb.) ve Javascript Framework çatıları (Angular, React, Vue vb.) ile Web teknolojileri kullanılarak PhoneGap veya Cordova gibi ara katman platformlar sayesinde istenilen mobil platforma uygun (.apk .ipa .exe olarak) build ve deploy edilebilecek Hybrid Mobile,

3. Son olarak sadece web teknolojileri altyapısı kullanılarak hatta Responsive Web ve/veya Progressive Web niteliği kazandırılarak çıkarılan Mobile Web uygulamalar olarak sınıflandırılabilmektedir.

Faydasını Gördüğüm #Komutlar…


genisoimage -input-charset iso8859-1 -allow-limited-size -v -J -r -V WINDOWS8IMAGE -o /home/mr.ram/Desktop/Windows8.iso /run/media/mr.ram/HRM_CCSA_X64FRE_TR-TR_DV5/

Bu genisoimage komutu ile CentOS işletim sistemli bilgisayarda belirttiğimiz bir dizin yapısı içerisine DVD okuyucudaki kurulum medyasının imajını alabilirsiniz.

rpm -qa kernel linux sürümünde mevcut kernel listesini gösterir.

mysqlcheck –auto-repair DATABASE_NAME or TABLE_NAMES…

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ‘%aranacak_ifade%’ ORDER BY TABLE_NAME

This mysqldumpslow comes bundled with mysql-server.
mysqldumpslow /var/log/mysql/mysql-slow.log

Following will show top 5 query which returned maximum rows. It can find queries where you missed LIMIT clause. A common performance killer!
mysqldumpslow -a -s r -t 5 /var/log/mysql/mysql-slow.log

Most frequency queries sometimes turned out to be unexpected queries!
mysqldumpslow -a -s c -t 5 /var/log/mysql/mysql-slow.log

“Filesystem type exfat not configured in kernel” Hatası


Merhaba. Dosya sistemi farklı bir USB bellek vb. medyayı Linux işletim sistemine sahip bilgisayara taktığınızda başlıktaki hata ile karşılaşmış olabilirsiniz. Hatayı araştırmadan önce sanal Windows bilgisayarımda denediğimde açılıyor ancak CentOS yüklü makinemde açılmıyordu. Aslında buna gerek kalmadan kolay bir çözümü varmış, deneyip açtığını gördükten sonra bunu paylaşmak istedim.

$ rpm -qa | grep -i exfat ile yüklü exfat paketleriini kontrol edebilirsiniz. Aşağıdaki komutlarla gerekli exfat dosya sistemi paketlerini yüklemelisiniz. Yeniden mount ettiğinizde veya belleği çıkarıp taktığınızda Linux işletim sistemi bellek dosya sistemini okuyacaktır. Hoşçakalın.

$ sudo yum install exfat-utils
$ sudo yum install fuse-exfat

Site Güvenlik Web Uygulaması Geliştirilmesi Hk.


Merhaba. Başlangıç sürümünün geliştirmesini tamamladıktan sonra aktarmak istediğim ve geliştirmeye devam ettiğim bir projeyi burada da paylaşmak istedim. Site Güvenlik Web Uygulaması olarak geliştirilen bu proje öncelikle lütfen bir web sitesi güvenliği olarak anlaşılmasın. Fiziksel anlamda blok gruplarından oluşan bir sitenin giriş ve çıkışları için kullanılan ve ziyaretçilere verilen giriş kartlarının kullanım durumunu görebilmek, mevcut kayıtlar içerisinden sorgulama yapılabilmek, site güvenliğine yardımcı olabilmek vb. daha birçok açıdan fayda sağlayacak bir mobil-web uygulaması geliştirmek ve bunu bir sistem haline getirebilmek amaçlanmıştır.

Bu kapsamda geliştirlen uygulama, site bölgesine giriş-çıkış için gereken tüm işlemler (kart teslim, giriş, çıkış, personel, ziyaretçi, blok, listeleme, sorgulama, içerdekiler, iletişim, vb.) hem daha güvenli hem de hızlı biçimde yapılarak kayıt altına alınabilecek, gerektiğinde geriye dönük sorgulama yapılabilecek, site sakinlerinin ve blok bilgilerinin listelenmesiyle de kolayca iletişim sağlanabilecek nitelilktedir. Uygulama sayesinde siteye gelen araç-yaya ziyaretçi giriş-çıkışları sistematik olarak kayıt ve takip edilebilmekte (kime, nereye, ne maksatla, ne zaman, nasıl vb.), içerideki araç-yaya ziyaretçi ruhsat ve kimlik bilgileri anlık olarak takip-kontrol edilebilmektedir. Geliştirilen bu sistem sayesinde amaçlanan aşağıdaki işlemler hedeflendiği gibi kolaylıkla ve sistematik biçimde yerine getirilebilmektedir.

  • Tanımlı kullanıcı ve yetkileriyle sisteme kontrollü biçimde giriş sağlanması,
  • Bilgi panosu üzerinden güncel duyurulara ve sayısal bilgilere erişim sağlanması,
  • Ziyaretçi işlemleri kapsamında yaya ziyaretçi bilgilerinin sisteme kaydedilmesi,
  • Ziyaretçi işlemleri kapsamında araçlı ziyaretçi bilgilerinin sisteme kaydedilmesi,
  • Daha önce gelen ziyaretçi bilgilierinin otomatik olarak veritabanından alınması,
  • Gelen ziyaretçi bilgileri kullanılarak önceki bir kaydı güncelleyerek yeni kayıt imkanı,
  • Verilen kart numaralarının takibi, fiziki olarak kontrolüne katkı sağlanması,
  • Tüm kayıt işlemlerinde ön tanımlı veriler kullanarak kayıt işleminin hızlandırılması,
  • Dinamik içerik sağlayarak kayıt için gerekli bilgilerin otomatik olarak sağlanması,
  • Giriş yapılan tüm ziyaretçiler için aynı sayfadan kolaylıkla çıkış işlemi yapılabilmesi,
  • Daha önceki günlerde girmiş ancak ilerleyen bir tarihte çıkış yapacakların seçilebilmesi,
  • İçeride mevcut tüm ziyaretçi vb. giriş yapanların tek bir ekranda görüntülenebilmesi,
  • Belirli tarihe göre filtreleme işlemi yapılabilmesi, gerektiğinde mevcut listeyi yazdırabilme,
  • Ziyaret öncesi site sakini tarafından verilen bilgilerin ön kayıt olarak saklanabilmesi,
  • Site içerisindeki tüm blok ve personel ve iletişim bilgilerine bir yerden erişilebilmesi,
  • Personel veya blok bazında giriş-çıkış yapan ziyaretçi kayıtlarının sorgulanabilmesi,
  • Giden-yeni gelen personel bilgileri için mevcut kayıtlar üzerinde güncelleme yapılabilmesi,
  • Yıl içerisinde yapılan ziyaretlere ilişkin istatistiksel verilerin grafikle sergilenmesi,
  • Uygulama içerisinden ilgililere, bölgeye ulaşım ve iletişim bilgilerinin sergilenmesi,
  • Uygulama gelişimi için kullanıcılardan geri dönüş alabilmek için uygulamaya veya sürece ilişkin görüş ve önerilerin sistem üzerinden girilebilmesi, kontrolü ve düzenlenmesi.

Site Güvenlik Web Uygulaması, SiteWApp kısa adıyla, Client-Server mimaride, Mobil ve Web tabanlı, MySQL vertabanını kullanan, Apache vb. uygulama sunucularda çalışabilen PHP ve AngularJS dillerinin bir arada kullanıldığı hibrit bir projedir. Hibrit yapıda, mimari tasarım kalıbı olarak MVC (Model View Controller) modelini kullanan bir uygulamadır. Projenin tasarım kısmında uyumluluğu ve görselliği sağlamak için Bootstrap kullanılmıştır. Geliştirme ortamı olarak, ihtiyaç duyulan client-server veri bağlantı ortamı XAMPP aracı ile sağlanmış, geliştirme aracı olarak Visual Studio Code ve desteklediği kodlama, versiyonlama eklentileri kullanılmaktadır. Kod veriyson takibi için Git versiyonlama aracı kullanılarak proje dizini ile entegrasyonu sağlanmıştır. Responsive Web Page (RWP) biçimde ve Single Page Application (SPA) olarak geliştirilen uygulamaya hem browser üzerinden, hem aynı ağda bulunan iş istasyonları, mobil cihazlar (telefon, tablet vb.) üzerinden ilgili host adresine girilerek erişilebilmekte, işletim sistemleri ve diğer platformlarla uyumlu biçimde sorunsuzca görüntülenebilmektedir.

Proje kapsamında, sistemin geliştirilmesi süresince Fizibilite Çalışması, Gereksinim Analizi, Teknik Tasarım, Yazılım Geliştirme, Uygulama ve Birim Testleri, Entegrasyon ve Deployment süreçlerinin takip edildiği Waterfall (Şelale) modeli işletilmiştir. Şelale yönteminde yazılım geliştirme süreci özetle; analiz, tasarım, kodlama, test, sürüm ve bakım gibi safhalardan oluşur. Bununla birlikte kodlama tekniği olarak, standart HTML, JavaScript ve CSS ile yani bilinen web teknolojileri aracılığıyla geliştirilecek uygulama içerisinde DOM (Document Object Model) üzerinde işlemler yapmak, uygulama olaylarını kontrol etmek, dinlemek ve belirli zamanlarda tetiklemek, zamanlama, notification gibi bildirimler yapmak oldukça zahmetli olabilecekti. Bu nedenle, pure javascript modellemek yerine bu işlemleri otomatik olarak gerçekleştiren, geliştiricinin uygulamasına odaklanmasını sağlayan harici javascript frameworklerinden AngularJS kullanılmıştır. Projeyi test etmek ve uygulama sürecini göstermek gerekirse, uygulama arayüzleri, modüller, bölümler, yöntemler, veritabanı bağlantısı, programlama çatısı, dizin ve veritabanı yapısını içeren temsili görseller ile kaynak kodu aşağıda belirtilmiştir.

Kaynak Kodu: https://github.com/denizobi/SiteWApp

Uygulamaya Giriş Ekranı: Bu ekranda önceden tanımlı, uygulamaya giriş yetkisi olan kullanıcı adı ve şifresi ile giriş yapılabilmekte, hatalı giriş işleminde uyarı mesajı verilmektedir.


Bilgi ve Duyuru Panosu: Site kayıt işlemlerine ilişkin genel bilgilendirmelerin yapıldığı ve istatistiksel verilerin sergilendiği modüldür.


Ziyaretçi Kayıt Defteri: Ziyaretçi bilgileri ile ilk giriş işlemlerinin ve daha önceden giriş yapılmış ise otomatik olarak hızlıca yeni girişin yapılabildiği, giren ziyaretçilerin çıkışının da aynı liste üzerindeki fonksiyonlarla yapılabildiği ve tarihe göre listelendiği modüldür.


Araç Kayıt Defteri: Araç bilgileri ile ilk giriş işlemlerinin ve daha önceden giriş yapılmış ise otomatik olarak hızlıca yeni girişin yapılabildiği, giren araçlı ziyaretçilerin çıkışının da aynı liste üzerindeki fonksiyonlarla yapılabildiği ve tarihe göre listelendiği modüldür.


Haber Verilen Ziyaretler: Ziyaret öncesi site sakinleri tarafından güvenlik biriminin aranarak haberdar edilmesini, bildirilen ziyaret bilgilerinin kaydedilmesini sağlayan modül.


Site Sakinleri Listesi: Site sakinlerinin listesinin sergilendiği, güncellenebildiği ve üstteki arama paneli ile birlikte sorgulama işlemlerinin yapılabildiği modüldür.


Site Blok Listesi: Site bloklarının listesinin sergilendiği, blok bazlı listelemenin yapılabildiği ve üst arama paneli ile birlikte sorgulama işlemlerinin yapılabildiği modüldür.


Hakkında ve İletişim Bilgileri: Görüş öneri bildiriminin bulunduğu modülde olup iletişim ve ulaşım bilgilerinin sergilendiği, görüş-öneri girişinin yapılabildiği bölümdür.


Mevcut Ziyaretçi Sorgulama: Daha önce ziyarete gelmiş yaya-araçlı ziyaretçi bilgilerinin hem kayıt girişinde hem de çıkış işlemi yapılacağında görüntülendiği modal popup biçimindeki alandır.

Git & GitHub’da “This branch is X commits ahead” veya “Y commits behind” Mesajı Hk.


Git local kod deposu için veya GitHub hesabınızda tanımlı başka bir hesaptan fork edilerek alınmış bir kod deposu için başlıkta da belirtildiği gibi This branch is X commits ahead ve/veya This branch is Y commits behind mesajı ile karşılaşmış olabilirsiniz. Bu mesajdan da anlaşılacağı üzere fork edilmiş olan reponun önde veya geride olduğunu, yani kendi repomuzla eşit olmadığını ifade etmektedir. Bu durumda, aşağıdaki komutlarla öncelikle forklanarak klonlanan local repodaki (downstream) değişiklikler commitlenir. Tüm değişiklikler GitHub reposuna push edildikten sonra uzak repo (upstream) tanımlanarak local repodaki söz konusu eşitsizlik merge edilerek sorun giderilebilir. Yaptığınız değişikliklerin uygun olması halinde Pull Request talebi ile de ana reponun sahibi tarafından güncellenmesi sağlanabilir. Pull Request ile ilgili daha detaylı açıklamaya https://kodcu.com/2015/03/pull-request-nedir-nasil-yapilir/ bağlantısından erişebilirsiniz.

git clone https://github.com/downstream/repository.git

git add . (yapılan tüm değişiklikler sahneye eklenmiştir)

git commit -m "değişiklikler localde ilk commitle kaydedilir"

git push origin ile mevcut repo GitHub reposuna gönderilir.

git remote -v ile GitHub hesabı repo bağlantısı görüntülecektir.
[mr.ram@localhost GYAppAnd]$ git remote -v
origin https://github.com/denizobi/GYAppAnd.git (fetch)
origin https://github.com/denizobi/GYAppAnd.git (push)

git remote add upstream https://github.com/upstream/repository.git
[mr.ram@localhost GYAppAnd]$ git remote -v
origin https://github.com/denizobi/GYAppAnd.git (fetch)
origin https://github.com/denizobi/GYAppAnd.git (push)
upstream https://github.com/Turkcell/GYAppAnd.git (fetch)
upstream https://github.com/Turkcell/GYAppAnd.git (push)

git checkout master ile localde master branch dalına geçilir.

git fetch upstream ile forklanan ana projenin verileri çekilir.

git merge upstream/master ile hem uzak hem local depo eşitlenir.

Centos7 VM VirtualBox Windows10 Açılış Hatası


Screenshot from 2019-04-18 01-55-19Merhaba. Yukarıdaki resimde görüldüğü üzere, Centos7 üzerinde Oracle VM VirtualBox ile çalışan Windows10 işletim sistemi kurulu sanal bilgisayarım açılırken aşağıdaki resimdeki gibi “Kernel driver not installed” hatası ile karşılaştım. Hata ayrıntısında da belirtildiği gibi “/sbin/vboxconfig/” dosyasını root yetkisi ile çalıştırdım ancak sorun çözülmedi malesef. Bu defa “Please install the Linux kernel “header” files matching the current kernel for adding new hardware support to the system.” hatası ile karşılaşmış oldum. Açıkçası benim için bu sanal pc ve içerisindeki kod ve dokümanlar önemli olduğu için sorunu çözmem gerekiyordu. Bunun üzerine biraz araştırma sonrası öğrendiğim benim için önemli bu bilgiyi sizinle de paylaşmak istedim.

hqdefault

Öncelikle bu hata mevcut linux kernel veriyonu ile virtual pc’nin kurulup aktif edildiği kernel versiyonu ile uyumlu olmadığını, daha doğrusu ilgili kernel sürümünün bulunamadığını, bu nedenle açılamadığını gösteriyor. Bunu daha iyi anlamak için yüklü kernel versiyonlarını $ rpm -qa kernel komutu ile görebilirsiniz. Bu noktadan sonra sorunun çözümü için hata ayrıntılarında belirtilen yani ihtiyaç duyulan kernel versiyonunu yüklemek gerekiyor. Bunun için gerekli olan Centos7 sürümü için yum install kernel-3.10.0-957.10.1.el7.x86_64 komutunu ile uygun kernel yüklendikten sonra (hatada belirtilen kernel sürümü) yukarıda belirtilen sudo /sbin/vboxconfig/ komutu root yetkisi ile tekrar çalıştırıldığında Windows10 yüklü virtual pc sorunsuz bir şekilde açılacaktır.

Linked Profilinin Budge Olarak WordPress Bloguna Eklenmesi


LinkedIn profilinize giriş yaptıktan sonra, “Public profile settings” ayarına girdiğinizde sağ menünün en altında “Public Profile Badge” sekmesini göreceksiniz. Buradaki “Create a Badge” düğmesi tıklandığında “Public profile badge builder” ekranı açılacaktır. Öncelikle ilk adımda LinkedIn tarafından kopyalanmak için verilen https://platform.linkedin.com/badges/js/profile.js JS bağlantısını sayfanızın uygun bir yerine ekleyin. Burada birden fazla badge seçeneği örneklerlerle gösteriliyor. Size uygun olan rozetin kaynak kodunu kopyaladıktan sonra WordPress blogunuza giriş yapıp yönetim arayüzüne geçin. Görünüm / Bileşenler kısmına bir Metin/Text alanı ekledikten sonra kopyaladığımız badge kodunu metin” alanına yapıştırın. Kaydedip güncelle ve yayımla dediğimizde blog sayfamızda istediğimiz alanda/sırada LinkedIn rozeti görüntülenecektir.

Görsellerle daha kolay anlaşılacak bir bağlantı: Buradan bakabilirsiniz