Bir süredir Mac’imde ekran görüntüsü almak için Shottr kullanıyorum. Hafif, hızlı ve ihtiyacım olan hemen her şeyi yapan bir uygulama. Özellikle ekran görüntülerinin üzerine hızlıca ok, kutu veya blur eklemek için oldukça pratik.
Fakat macOS 27’ye geçtikten sonra garip bir sorun yaşamaya başladım.
Shottr normalde macOS’un menu bar’ında sessizce çalışmaya devam ediyor. Bir screenshot aldığımda Shottr penceresi açılıyor, işimi yapıyorum ve pencereyi kapatıyorum. Uygulama ise arka planda çalışmaya devam ediyor.
Kod yazarken özellikle C# gibi bir OOP dil kullanınca her şey derli toplu olsun istiyorum. Çalıştığım projede Program.cs dosyasının Service katmanından eklenen Dependency Injection’larının epey kalabalık olması ve daha da eklenecek şeylerin olması sinirimi bozdu.
Program.cs dosyası ne işe yarıyor?# .NET projelerinde Program.cs, uygulamanın başlangıç noktasıdır (entry point). Uygulamanın çalıştığında ilk olarak buradaki Main metodu veya WebApplication yapılandırması çalışır. Özetle;
Uygulamanın giriş noktasını tanımlar DI Container (Dependency Injection) servislerini burada tanımlarsın Middleware pipeline burada oluşturulur Uygulama ayarlarını yükler (appsettings.json vs.) Web server (Kestrel) burada başlatılır Kötü vaziyet# 1 2 3 4 5 6 7 8 9 builder.Services.AddScoped(typeof(IRepositoryAsync<>), typeof(RepositoryAsync<>)); builder.Services.AddScoped(typeof(IService<>), typeof(Service<>)); builder.Services.AddScoped<BilmemNeService>(); builder.Services.AddScoped<BilmemNeGenelService>(); builder.Services.AddScoped<BilmemNeMobilBildirimService>(); builder.Services.AddScoped<IDegisikServis, DegisikServis>(); builder.Services.AddScoped<IBaskaBirService, BaskaBirService>(); Çözüm# Hal böyle olunca projede bir DependencyInjections klasörü açmak gerekti. İçine modül bazlı bir yapı kurdum.
Calistigim projelerin birinde kullanici veritabanina kurum adini kendi string olarak giriyor. Tabii bu degerin alindigi inputta bir standart konulmamis. Haliyle veriler uppercase, camelcase, lowercase, capitalized words vb. turlu turlu farkli sekilde kaydedilmis. Bu da gunun sonunda veriyi getirip gruplama yaparken problem yaratiyordu. Koyulduk Gemini ile ise :)
Ilk is olarak veriyi degistirmeden once dogru seyi yaptigimdan emin olmam gerek. O yuzden belirli bir id ile select atip hem mevcut veriyi hem de degistirdigimde gormek istedigim veri icin ornekler cagiriyorum.
Jetbrains IDE’lerine alışkın olanların çok sık kullandığı tuş kombinaslarından biri SHIFT tuşuna iki kere basmaktır. Bu alışkanlığımıza Visual Studio Code’da da devam edebiliriz.
Ubuntu server üzerinde çalışan bir uygulamamda klasik CRUD işlemleri yapılırken, form data ile giden veriler sonunda başlıktaki hatayı aldım. Kullanıcı sisteme 1.2MB büyüklüğünde bir PDF yüklemeye çalışmış.
Geçenlerde Laravel projelerine merak sardım. Hızlıca auth sistemleri oluşturmak, direkt rest api destekli kod yazmak epey keyifli. Neyse bu başka yazıların konusu. Laravel yazarken debug yapmak için dd ya da ddd yapmak epey işlevsel sonuçlar döndürüyor ama yine de insan IDE içerisinden debug pointler ile akışı takip etme ihtiyacı duyuyor. Bunun için de XDebug kurmak gerekliymiş.
Herkese selam, işim sebebiyle bu aralar sık sık Django kurcalıyorum. Tabii hobi amaçlı geliştirilen yazılımlar genelde lokalde ve tıkır tıkır çalışıyor. Çünkü projeyi public yapma derdin yok, güvenlik sıkıntın yok vs. İşte geliştirdiğimiz uygulamaları bir serverda ayağa kaldırdığımız için projeyi debug moddan çıkarmak gibi bazı aksiyonlar gerekiyor.
E normali bu!# Kesinlikle katılıyorum normali bu, böyle olmalı ama daha önce hep lokalde çalışınca debug:false durumlarını test etmemiş oluyor insan 🙂 Proje bitti, hadi servera atalım, dur atmadan da debug:false yapalım diyorsun ve taa daa! CSS’ler falan mortingen. Sonra dökümantasyona bakayım dur diyorsun ve Django ağabeyimiz diyor ki, eğer debug modda çalışmıyorsan statik dosyalarını render etmekle falan ben daha uğraşmam.
Ubuntu kullananlar bilir, apt update ve apt upgrade çok sık yazdığımız komutlardır. Bunlar uygulamaları güncellemek için kullanılır. Malum Windows son zamanlarda WSL falan derken epey yanladı Linux cephesine 🙂 Şimdi de bu komut satırından güncelleme topuna girmiş gibi görünüyor.
Nasıl yapıyoruz peki? Powershell’i açıp, “winget upgrade” yazıp enter’layın.
Geçenlerde bir proje için modelden gelen numarayı arama ihtiyacı doğdu. Sonrasında araştırınca url launcher paketi ile bunun gerçekleştirildiğini gördüm. Hatta paket sadece arama yapmak için değil, adı gibi tüm url açma işlemleri için kullanılıyor. Örn: web linkleri açmak, sms atmak, e-mail göndermek gibi.
Herkese selam, bu yazı aslında kendime not gibi olacak çünkü her yeni projeye başlarken komutları biliyor da olsam teyit etmek amaçlı dokümantasyonlardan kontrol ediyorum. Bu yüzden derli toplu bir şekilde blogta dursun istedim.