Mac OS X’te bir programı arka plan hizmeti olarak çalıştırmak

Evdeki Mac Mini’de sürekli olarak çalışacak Perforce sunucusu kurmak istedim, ancak sunucunun terminalden çalıştırılan, arkaplana atılamayan bir program şeklinde olduğunu gördüm. Bunu arkaplanda ve bilgisayar her açıldığında yapmak için şunu buldum. Aşağıdaki içerikte bir .plist dosyası oluşturuyoruz:

Bu dosyada işaretli satırdaki değeri çalıştırmak istediğimiz program veya script olarak düzenliyoruz. Dikkat edilecek nokta, burada kullanıcı dizinine işaret etmek için tilde ( ~) karakteri kullanılamıyor. Tam dosya/klasör yolu belirtilmeli.

Oluşturduğumuz dosyayı ~/Library/LaunchAgents/com.user.loginscript.plist olarak (veya aynı klasör altında benzer bir isimle) kaydediyoruz. Bir terminal açıp launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist  komutuyla daemon kaydını oluşturuyoruz. Bundan sonra ister logout/login yaparak, ister launchctl start com.user.loginscript  komutunu çalıştırarak programımızın arkaplanda açılmasını sağlayabiliyoruz.

Önemli bir nokta, bu işlem, programı sadece işlemin yapıldığı kullanıcı giriş yaptığında açıyor.

Kaynak: http://stackoverflow.com/questions/6442364/running-script-upon-login-mac/13372744#13372744

— Serdar

C#’ta normal dağılıma sahip rastgele sayılar oluşturmak

Çok da ciddi olmayan bir simülasyon için normal dağılımda sayılar elde etmek için Box-Muller dönüşümü kullanılabilir. Üstünkörü bir çözüm için:

Tabii burada ardışık olarak birden fazla sayı üretiliyorsa her defasında yeni bir Random nesnesi oluşturmak yerine bir defa oluşturup saklamak gerekli. Diğer yandan daha performansa yönelik ve tekrar kullanıma uygun bir kod için şu sınıf kullanılabilir:

Kaynak: Stack Overflow: Random Gaussian Variables

— Serdar

C#’ta kaydedilen XML dosyasını satırlara bölmek ve girintilendirmek

XML dosyalarının derli toplu olmasını seven takıntılı bir insan olarak; XmlWriter kullanarak veya XmlDocument’ı kaydederek oluşturduğum bir dosyanın düzgün satırbaşı yapılmış, girintilendirilmiş olmasını istedim. Çözüm XmlWriterSettings’te yatıyor.

Sonrasında settings’i XmlWriter.Create() metoduna vererek bir XmlWriter oluşturup ya bunu doğrudan kullanıyoruz, ya da XmlDocument.Save() metoduna veriyoruz.

Kaynak: Stack Overflow: What is the simplest way to get indented XML with line breaks from XmlDocument?

— Serdar

Bir Windows Forms uygulamasında konsol görüntüleme

İşimle ilgili bir uygulamada seri port üzerinden gelen veriyi görüntülemeye ihtiyacım oldu. Kalabalık arayüzde bunu ekleyecek yer yoktu, bir dolu metoduyla yeni bir form oluşturmak da istemedim. Klasik bir konsol açıp  Console.WriteLine() kullanmak işimi görecekti. Çözümü gayet basit. Uygun bir sınıfa şu metodu ekliyoruz:

Uygun bir yerde de AllocConsole() çağırdıktan sonra konsola istediğimizi yazabiliriz.

Kaynak: Stack Overflow: How do I show a console output/window in a forms application?

— Serdar