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
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
Brett Slatkin - Tavsiye yazısı: What’s awful about being a {software engineer, tech lead, manager}?
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ı
Halil ibrahim Kalkan - ASP.NET Boilerplate‘in geliştiricisi
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. |