Otomatik Mühendis

Tinycards

Luis von Ahn‘ın liderliğinde geliştirilen Duolingo‘nun ekibinden yeni bir mobil uygulama; Tinycards.

Bilgileri ezberlememizi kolaylaştıran flashcard yöntemini şimdi gerçek hayattaki basitlikle bu mobil uygulamada bulabilirsiniz. Aynı basitliği kart destesini oluştururken de korumuşlar. Otomatik Mühendis olarak bizim oluşturduğumuz desteleri https://tiny.cards/users/olcaybayram adresinden görebilirsiniz. Uygulamayı indirerek de bu destelerden yararlanabilirsiniz. Şimdilik sadece iOS için uygulaması bulunuyor.

Desteler;

  • HTTP Verbs & Status Codes
  • Git Commands
Okumaya devam »


Google Books API'den Konum Hatası

Code 403 Cannot determine user location for geographically restricted operation

Google AppEngine veya Heroku üzerindeki uygulamanızda Google Books API’a erişimde aşağıdaki hatayı almanız muhtemeldir.

Code 403: Cannot determine user location for geographically restricted operation

Hata mesajında da belirtildiği gibi kullanıcının konumu belirlenemediği için bu hata oluşmaktadır. Bunun da önüne geçmek için Google Books API clientıyla çağrı yaparken request’in header bilgilerine country parametresini de eklemeliyiz. Bu parametre Java ve .Net kütüphanelerinde public set edilebilir değildir. Bu sebeple request oluşturulurken RequestInitializer methodunda bunu eklemeliyiz.

Java için çözümüne bakabilirsiniz veya aşağıdaki örnekte olduğu gibi C# için uygulanışını görebilirsiniz.

Okumaya devam »


ASP.NET Core Sitesini Konsol Parametleriyle Çalıştırmak

ASP.NET Core uygulamasını içeren .dll dosyası KestrelHttpServer sunucusu sayesinde IIS’e ihtiyaç duymadan ayağa kalkabilmektedir. Bir konsol uygulaması gibi çalışmaktadır.

Örnek senaryomuz; Heroku cloud platformuna kurduğumuz uygulamamız ayağa kaldırıldığı sırada server.urls parametresi ile belirli bir portu dinlemeye zorlanmaktadır. ASP.NET Core uygulamaları ön tanımlı olarak 5000 portu üzerinden çalışırlar. Bu durumda uygulamamız istenen portu dinlemeyecektir.

cd /app/heroku_output && dotnet ./Libton.dll --server.urls http://+:54372

Heroku platformunda dotnet cli‘a gönderilen bu komutta istenen port değişken olarak verilmektedir.

Konsol uygulamalarında çalıştırma sırasında parametreler vererek program içerisinde bunları kullanabiliriz. Bu yeteneği uygulamamıza kazandırabilmek için NuGet Package Manager üzerinden Microsoft.Extensions.Configuration.CommandLine referansını ekleriz.

Daha sonra Program class’ında ki Main methodunda, komut satırı parametrelerini ayar parametlerine dönüştürerek, WebHostBuilder’a bu ayarları aktarırız.

Bu çalışma sonunda Program.cs dosyamız aşağıdaki hali alır.

Okumaya devam »


Yazılımcı Blogları

Yazılımcı bloglarının güncel listesi

Sindre Sorhus’ blog - Yeoman ve TodoMVC‘nin geliştiricisi

Mike Mengell

Brett Slatkin - Tavsiye yazısı: What’s awful about being a {software engineer, tech lead, manager}?

StrathWeb by Filip W.

Burak Tungut - “Algoritma ve Programlama Mantığı” ve “Asp.Net Web API ve Mimari Özellikleri” kitaplarının yazarı

Gökhan Gökalp - “Asp.Net Web API ve Mimari Özellikleri” kitabının yazarı

Ahmet Rende

Halil ibrahim Kalkan - ASP.NET Boilerplate‘in geliştiricisi

Tayfun Yaşar

Tuğba Üstündağ

Okumaya devam »


Test Attribute ve Annotation'ları

Çeşitli test frameworklerinde sıklıkla kullanılan Attribute ve Annotation'lar

Aşağıdaki tabloda NUnit, MSTest, xUnit.net ve JUnit test frameworklerinde sıklıkla kullandığımız Attribute ve Annotation’ları açıklamarıyla birlikte görebilirsiniz.

JUnit için en iyi örnekleri Guru99 sitesinde bulabilirsiniz.

NUnit MSTest xUnit.net JUnit Açıklama
[TestFixture] [TestClass] - - Class’ın test içerdiğini belirtir.
[Test] [TestMethod] [Fact] @Test Method’un test case’i olduğunu belirtir.
[OneTimeSetUp] [ClassInitialize] IClassFixture @BeforeClass Testler başlamadan önce tek sefer çalışacak method.
[OneTimeTearDown] [ClassCleanup] IClassFixture @AfterClass Testler tamamlandıktan sonra tek sefer çalışacak method.
[SetUp] [TestInitialize] Constructor @Before Her testten önce çalışacak methoddur.
[TearDown] [TestCleanup] IDisposable.Dispose @After Her test tamamlandıktan sonra çalışacak methoddur.
[Ignore] [Ignore] [Fact(Skip=”reason”)] @Ignore Test case olmasına rağmen çalıştırılmasını istemediğimiz methodları bununla işaretleyebiliriz.
[Category(“”)] [TestCategory(“”)] [Trait(“Category”, “”)] @Category(*.class) Testleri kategoriler halinde sınıflandırmamızı sağlar.
Okumaya devam »