Ana içeriğe atla

Kayıtlar

AI/LLM Tabanlı Ürünlerde Product Engineer Perspektifi

Yapay zekâ artık sadece araştırma laboratuvarlarının konusu değil; doğrudan ürünlerin merkezine yerleşmiş durumda. Özellikle LLM (Large Language Model) tabanlı sistemlerin yaygınlaşmasıyla birlikte, klasik yazılım geliştirme yaklaşımları yerini daha hibrit bir modele bırakıyor: hem mühendislik hem de ürün düşüncesini aynı anda gerektiren bir yaklaşım. Bu noktada “Product Engineer” rolü öne çıkıyor. Peki bu rol tam olarak neyi ifade ediyor ve neden bu kadar önemli hale geldi? Product Engineer Nedir? Geleneksel yazılım geliştirme süreçlerinde roller genellikle nettir: Yazılımcı kod yazar Ürün yöneticisi ne yapılacağını belirler Tasarımcı arayüzü oluşturur Ancak AI ürünlerinde bu sınırlar bulanıklaşır. Product Engineer , yalnızca “verilen işi yapan” kişi değildir. Aynı zamanda: Problemi anlayan Kullanıcı davranışını analiz eden Çözümün teknik ve deneyim tarafını birlikte düşünen bir hibrit roldür. Örneğin bir chatbot geliştirirken sadece “API bağlamak” yeterli değ...

1960’lardan Bir "Shimmer" Hikayesi: Annemin Nakışı ve Yapay Zeka Tasarımı

Dijital dünyada her gün binlerce kez karşılaştığımız, "bir şeyler yükleniyor" ya da "yeni bir fikir doğuyor" anlamına gelen o parıltı (shimmer) ikonuyla, 1960’larda el emeğiyle işlenmiş bir kanaviçenin yan yana geleceğini kim düşünebilirdi? Geçtiğimiz günlerde annemin gençlik yıllarında, yaklaşık 60 yıl önce işlediği amatör bir nakış çalışmasına dikkatli bakınca önemli bir şey fark ettim. Üzerinde hepimizin aşina olduğu o kadim soru yazılıydı: "Bugün Allah için ne yaptın?" Ancak asıl şaşırtıcı olan, yazının hemen sağ alt köşesinde parıldayan o küçük yıldız simgesiydi. Tasarımın Zaman Yolculuğu: Nakıştan Piksel Sanatına Nakış, özü itibarıyla aslında tarihin ilk pixel art (piksel sanatı) örneğidir. Her bir iğne darbesi bir piksele tekabül eder. Annem, 1960'ların kısıtlı imkanlarıyla o dönemde belki de sadece estetik bir "boşluk doldurucu" olarak gördüğü o yıldızı oraya işlerken, farkında olmadan 21. yüzyılın en ileri teknoloji diliyle konuşuyo...

Web Sitelerinde Kullanıcı Rızası ve Google Analytics Entegrasyonu: Neden ve Nasıl?

 Dijital dünyada kullanıcı gizliliği artık bir tercih değil, yasal bir zorunluluktur. Eğer bir web siteniz varsa ve ziyaretçi trafiğini analiz etmek için Google Analytics kullanıyorsanız, kullanıcılarınızdan izin almadan veri toplamanın ciddi sonuçları olabilir. Bu yazımızda, kullanıcı rızasının önemini inceleyecek ve PHP kullanarak basit ama etkili bir rıza yönetim mekanizmasını nasıl kurabileceğinizi öğreneceğiz. 1. Kullanıcı Rızası (Consent) Neden Önemli? Web sitenize giren bir kullanıcının davranışlarını takip etmek, aslında onun kişisel verilerine dokunmak demektir. İşte rıza almanız için 3 temel sebep: Yasal Uyumluluk (KVKK & GDPR): Türkiye’de KVKK , Avrupa’da ise GDPR yasaları, kullanıcıların çerezler (cookies) aracılığıyla takip edilmeden önce bilgilendirilmesini ve onayının alınmasını şart koşar. Dijital Etik ve Güven: Ziyaretçilerinize verilerini nasıl kullandığınızı sormak, markanızın şeffaflığını ve profesyonelliğini gösterir. Veri Kalitesi: Google’ın yeni Con...

Uzmanlık mı, Ezber mi? Yazılım İş İlanlarının Görünmeyen Gerçeği

Yazılım sektöründe son yıllarda en sık karşılaştığımız sorunlardan biri, iş ilanları ile piyasanın gerçekliği arasındaki mesafenin giderek açılmasıdır. Özellikle web geliştirme alanında, belirli bir teknolojiye “tam uyumlu” aday arayışı, deneyimli geliştiriciler için bile ciddi bir bariyer haline gelmiş durumda. Bu yazıyı, WordPress’in henüz 2.x sürümlerinde (2008) kurumsal tema ve eklenti geliştirmiş, farklı dönemlerde farklı teknolojilerle üretim yapmış bir geliştirici olarak kaleme alıyorum. Teknolojiler Değişir, Deneyim Sabit Kalmaz mı? WordPress bugün, 10–15 yıl öncesindeki WordPress değildir. Block Editor, Block Themes, Elementor, Full Site Editing gibi yaklaşımlar; sistemi neredeyse baştan aşağı dönüştürmüştür. Bu nedenle “6 yıl WordPress deneyimi” ifadesi, hangi dönemde ve hangi araçlarla sorusu sorulmadan tek başına anlamlı değildir. Benzer şekilde, klasik tema yapısını bilen bir geliştiricinin bugün güncel WordPress ekosistemine adapte olması mümkündür; ancak bu adapta...

Modern Web Standartları: SEO ve Performans Optimizasyonu Rehberi

 Bir web projesinin başarısı, sadece görselliğiyle değil; kullanıcı deneyimi (UX), erişilebilirlik, SEO ve performans gibi "kaputun altındaki" teknik detaylarla ölçülür. Yakın zamanda bir web projemizde gerçekleştirdiğimiz kapsamlı revizyon sürecini ve Lighthouse skorlarını maksimize etmek için uyguladığımız teknikleri bu yazıda derledik. 1. Erişilebilirlik (Accessibility) İyileştirmeleri Webin herkes için eşit derecede ulaşılabilir olması bir tercih değil, zorunluluktur. Bu doğrultuda şu adımları uyguladık: Görsel ve ARIA Etiketleri: Tüm görsellere anlamlı alt metinleri eklendi. Sadece ikon içeren (sosyal medya butonları gibi) elemanlara, ekran okuyucuların ne olduğunu anlaması için aria-label tanımlamaları yapıldı. Form Erişilebilirliği: İletişim formlarındaki her input , bir label etiketiyle ( for niteliği kullanılarak) eşleştirildi. Bu, hem ekran okuyucular hem de tıklama kolaylığı açısından kritik bir dokunuş. Hiyerarşik Yapı: Başlık etiketlerinin (h1...h6) sırası...

Yazılım Şirketlerinde Personel İletişiminin En Büyük Hataları

Yazılım sektörü, hızlı değişen teknolojiler, dağıtık ekipler ve yoğun proje temposu nedeniyle iletişim açısından benzersiz zorluklar taşır. İyi bir iletişim, ekiplerin verimliliğini artırırken, hatalı iletişim motivasyonu düşürür, hatalara yol açar ve hatta yetenek kaybına neden olur. Ne yazık ki, birçok yazılım şirketi, personel ile iletişimde tekrarlanan hatalar yapıyor. Bu yazıda, en yaygın olanları inceleyelim ve nasıl önlenebileceğine dair önerilerde bulunalım. 1. Belirsiz ve Yetersiz İletişim Yazılım geliştirme süreçlerinde gereksinimlerin net olmaması, en büyük sorunlardan biri. Proje yöneticileri veya ürün sahipleri, task'leri yeterince detaylandırmadan atadığında, geliştiriciler yanlış varsayımlarla ilerler. Bu, scope creep'e (kapsam genişlemesine), gecikmelere ve yeniden çalışmalara yol açar. Öneri: Her task veya user story(kullanıcının amacı)'yi kabul kriterleriyle birlikte tanımlayın. Toplantılarda netlik sağlayın. Jira gibi iş yönetim yazılımlarını etkili k...

Ubuntu 11.04'de PostGreSql ve PhpPgAdmin Kurulumu

Merhaba değerli okuyucular; Bugün sizlere postgresql kurulumuyla ilgili bir yazı yazacağım. Umarım sizlere faydalı olur. Yalnız bu kurulumu yapmadan önce sistemimde lamp'ın kurulu olduğunu belirtmek istiyorum. Webcodez sitesinden lamp kurulumuyla ilgili bilgi alabilirsiniz. Şimdi sıra geldi postgresql ve yardımcı araçlarını kurmaya. 1. Öncelikle ubuntu yazılım merkezi'ni açın. Burada postgresql, pgadmin 3 ve phppgadmin programlarını arayıp kuruyoruz. 2. Artık programlar kuruldu. Fakat bazı ayarlar yapmak mecburiyetindeyiz. Postgresql veritabanını başlatmak zorundayız. sudo /etc/init.d/postgresql start komutu ile postgrsql başlamış oldu. 3. Şimdi ise postgres kullanıcısı için bir şifre vermemiz gerekiyor. sudo passwd postgres kullanacağımız şifreyi tekrar ederek giriyoruz. böylelikle postgres kullanıcı adına istediğimiz şifreyi atamış olduk. 4. Artuk pgadmin 3 programı ile postgreslq veritabanına erişim sağlayıp veritabanı ve kullanıcı oluşturabiliriz....

Windows, Docker ve VSCode ile Kusursuz PHP Debug Ortamı Kurulumu

Windows üzerinde PHP geliştirirken performans sorunları ve "dosya yolunda çalışmama" gibi hatalardan sıkıldınız mı? Bu rehberde; Apache, MySQL ve Xdebug 3 kullanarak, VSCode ile tam senkronize çalışan, yüksek performanslı bir geliştirme ortamını nasıl kuracağınızı anlatıyorum. ⚠️ Gereksinimler Windows 10/11 (WSL 2 yüklü olması önerilir). Docker Desktop. VSCode. 1. Proje Yapısı Öncelikle projenizin ana dizininde ( C:\Users\user\htdocs_debug ) aşağıdaki klasör ve dosyaları oluşturun: /html (Kodlarınız burada olacak) /mysql_data (Veritabanı verileriniz burada saklanacak) docker-compose.yml Dockerfile 2. Docker Yapılandırması docker-compose.yml dosyanıza aşağıdaki içeriği ekleyin. Bu yapı, Apache'yi 8888 portunda, MySQL'i ise 3312 portunda çalıştıracaktır: YAML version: '3.8' services: web: build: . container_name: phpserver_debug ports: - "8888:80" volumes: - ./html:/var/www/html extra_hosts: -...

PDO Kullanımında bindParam ile bindValue Arasındaki Farklar

 bindParam, PDOStatement::execute()  çalışmadan önce tanımlanmış değer neyse ona göre çalışır. bindValue ise kendisinden önce tanımlı değişken değeri neyse onu çalıştırır.  Basit bir örnek ile açıklayalım. <?php $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password'); // bindParam ile sorgu $name = "Hasan Yıldız"; $age = 38; $stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)"); $stmt->bindParam(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':age', $age, PDO::PARAM_INT); $age = 21; //execute çalışmadan önce değeri değiştirdik. Veritabanına age => 21 olarak eklenecek. $stmt->execute(); // bindValue ile sorgu $name = "Hasan Yıldız"; $age = 35; $stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindValue(':age', $age, PDO::PARAM_INT); $age ...

Klasöre Atılan Dosyaları Visual Studio'da Solution Explorer İçinde Göstermek

Merhabalar; Visual Studio projemize direk windows arayüzünden dosya veya klasör attığımızda Solution Explorer  icinde bu içeriği göremiyoruz.  Bunun çözümü için aşağıdaki maddeleri sıra ile uygulamanız gerekiyor. 1) Öncelikle sağ tarafda görünen refresh ve show all files iconlarını tıklıyoruz. 2) Bunu yapınca bin ve obj klasörleri de görünüyor. Ancak kafamız karışmasın diye sadece ihtiyacımız olan dosyaları görünür hale getireceğiz. 3) test1 ve test2 klasörleri görünmesini hedeflediğimiz klasörler. İstediğimiz klasör veya dosyayı sağ tıklayıp Include in Project diyoruz ve işlem tamamlanıyor. İşte bütün işlem bu kadar. Hepinize iyi çalışmalar dilerim.

Klasik PHP'den Codeigniter Geçiş Klavuzu (Controller)

 Merhaba arkadaşlar; Bu yazımızda php geliştirenlerin oldukça aşina olduğu bir mvc ürünü olan Codeigniter frameworkünün kullanımını anlatacağım. 2006 yılından beri geliştirilmesine devam edilen CI (Codeigniter), an itibari ile 3.1 sürümünde. Codeigniter 4.0 sürümünün ise yakın bir süre içerisinde çıkmasını bekliyoruz. Codeigniterın startup tarihinin oldukça eskiye dayanması ve geliştirme sürecinin halen devam  ediyor olması nedeniyle php yazılım uzmanları için doğru bir mvc frameworkü olduğunu düşünüyorum. MVC yapıısının ne olduğu konusunda internet üzerinde bir çok makale okuyabilirsiniz. Ancak ben düz php yazanların hızlı bir şekilde geçişini sağlayacak basit bir makale yazmak istiyorum. Not : Yazımın devamına sözkonusu frameworkün adını CI şeklinde ifade ederek devam edeceğim. Not : Makaleyi okumaya başlamadan önce php programlama dilinde sınıf ve fonksiyon oluşturmak, başka sınıflardandan miras almak gibi temel konular hakkında bilgi sahibi olmanız gerekiyor. ...

SQL ile Tablodan Verileri Çekmek ve Başka Tabloya Eklemek (Insert Into)

Merhaba arkadaşlar; Bu yazı içerisinde bir sql ile tabloda bulunan kayıtları herhangi bir koşul belirtmek suretiyle başka bir tablo içerisine eklemeyi anlatacağım. Aşağıdaki örnekte olduğu gibi bir tablomuz olduğunu düşünelim. Örnek table1 : id col1 col2 col3 1 hasan yıldız 233 2 ahmet demir 342 3 coşkun çakıcı 654 Örnek table2 : id col1 col2 col3 col4 5 zafer olgun 321 1 Örnek olarak table1 içerisinde id bilgisi 3 olan coşkun çakıcı kaydını çekip table2 üzerine kaydedelim. Bunun için aşağıdaki sql kodunu yazmamız yeterli. INSERT INTO table2 (col1, col2, col3, col4) ( SELECT col1, col2, col3, (1) as col4 FROM table1 WHERE id = 3)  SQL kodunu incelersek; Ekleme yapacağımız tabloyu ve kolonları belirledik İkinci kısımda SELECT komutu ile koşullu olarak başka bir tablodan verilerimizi çektik. Tabi ki farklı amaçlar için kullanıldığından kolon yapısı farklı olabilir. Bu nedenden dolayı değeri 1 olan c...

Javascript Değişkenin Boş veya Tanımsız Olduğunu Anlamak

Merhaba arkadaşlar; Javascript ile uygulama geliştiren arkadaşlar için küçük bir ipucu yazıyorum. Eğer javascript değişkeninizin boş olup olmadığını anlamak istiyorsanız aşağıdaki kontrolü kullanabilirsiniz. if ( typeof degisken == 'undefined' ) {         console. log ( 'bos' ); } else {         console. log ( 'dolu ' + degisken ); } İyi çalışmalar.

C# İle Mysql Veritabanı - Insert Into

İlk başta mysql connector'ü sistemimize kurmamız gerekiyor. Bu konu ile ilgili makaleyi aşağıdaki linkte bulabilirsiniz. MySql .net connector 6.0 ve Mysql’e erişim - Cihan Yakar using System.Data; using System.Data.SqlClient; using MySql.Data; using MySql.Data.MySqlClient; //Namspace'den önce yukarıdaki kodları eklememiz gerekiyor. Aksi taktirde programımız içindeki veritabanı ve mysql komutları çalışmayacaktır.  string baglantidegiskeni = "Server=127.0.0.1;Userid=root;Password=;Database=ogrenci;CharSet=Latin5 " ; //Connect Stringimizi bir değişkene yazıyoruz MySqlConnection baglanti = new MySqlConnection(baglantidegiskeni); // bağlantı adında bir nesne oluşturduk  try  {       baglanti.Open(); //Mysql veritabanı bağlantısını yaptık.       MySqlCommand mysqlkomutu = baglanti.CreateCommand();        //Sql  cümlelerimizi CommandText ile belirliyoruz.     ...