Visual Studio Code | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar visual studio code

ionicframework ile cross-platform uygulama geliştirirken emulator kullanımı

26 October 2016 Yorum yapılmamış

ionicframework ile htmljavascriptcss (hatta typescript ve sass) kullanarak cross-platform uygulama geliştirebiliyoruz.

Cross-Platform projemizi tamamen ücretsiz ve tüm platformlarda varolan Visual Studio Code editorü ile geliştirebiliyoruz.

Visual Studio Code ile geliştirdiğimiz ionicframework projesini nasıl debug edebileceğimizi ve emulator‘u nasıl kullanabileceğimizi inceleyeceğiz.

Öncelikle projeyi oluşturmak istediğimiz dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidelim ve aşağıdaki kodları çalıştıralım;

Bu komutun şablonu;

Proje şablonu olarak aşağıdaki hazır template’lerden birini belirleyebilirsiniz;

Proje oluşturulduktan sonra Visual Studio Code ile ilgili dizini açalım ve projenin dosyalarını aşağıdaki gibi gördüğümüzden emin olalım;

Sol taraftaki panelden Debug butonuna tıklayalım ve Debug Panel‘i açalım;

Ayarlar butonuna (Debug Panel‘de gözüken çark simgeli buton) bastığımızda gelen Select Environment seçeneklerinden Cordova seçeneğini seçiyoruz.

Böylece sistemimizde bulunan emulatorlerden istediğimiz bir tanesini seçerek ve yeşil çalıştır butonuna basarak projeyi emulator üzerinden debug etmeye başlayabiliriz;

Projeyi emulator üzerinde debug etmeye başladığımız andan itibaren Visual Studio Code içerisinde emulator‘ün çeşitli sensorlerine sahte sinyaller gönderebileceğimiz bir panel açılıyor.

Böylece istediğimiz sensörlere istediğimiz değerleri göndererek, farklı durumlarda uygulamamızın cihazda çalışmasını simule edebiliriz.

ASP.NET Core projelerinde Kestrel adresini belirleme

12 June 2016 Yorum yapılmamış

Bu makaleyi okumadan önce Asp.Net Kategorisindeki diğer makalelerimi okumanızı tavsiye ederim.

AspNet Core 1.0 projelerinde Kestrel Application Server’ın çalışacağı adresi değiştirmek isteyebilirsiniz.

Hemen örnek proje oluşturacağımız dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidiyoruz ve aşağıdaki kodları çalıştırıyoruz;

Yeni oluşturduğumuz projeyi çalıştırmak için aşağıdaki komutu çalıştırmamız yeterli;

dotnet run

Proje http://localhost:5000 adresinden çalışmaya başlayacak, istediğimiz tarayıcıyı açarak http://localhost:5000 adresi aracılığıyla projeyi kullanabileceğiz.

Program.cs dosyası içerisinde yeralan Main() methoduna aşağıdaki kod parçasını ekleyecek olursak projenin çalıştırılacağı adresleri değiştirebiliriz;

Main() methodu aşağıdaki gibi bir hale gelmiş olmalı;

AspNet Core 1.0 MVC6 projesine InMemory Caching desteği eklemek

07 February 2016 Yorum yapılmamış

Bu makaleyi okumadan önce Asp.Net Kategorisindeki diğer makalelerimi okumanızı tavsiye ederim.

Caching (önbellekleme) sayesinde elde etmesi uzun sürecek verilere çok daha hızlı bir şekilde ulaşabiliriz.

Hemen yeni bir Asp.Net Core 1.0 MVC 6 projesi oluşturalım ve InMemory Caching ekleyelim.

Öncelikle örnek projeyi oluşturmak istediğimiz dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidiyoruz ve aşağıdaki kodları çalıştırıyoruz;

yo aspnet
// Empty Application seçeneğini seçiyoruz
// Projeye inmemorycaching ismini veriyoruz

cd inmemorycaching
code .

Visual Studio Code açıldıktan sonra project.json dosyasını açıyor ve içindeki dependencies kısmına aşağıdaki satırı ekliyoruz;

"Microsoft.AspNet.Mvc": "6.0.0-rc1-final"

Böylece Empty Application tipindeki AspNet Core uygulamamıza MVC 6 paketini kullanacağımızı söylemiş olduk. Fakat paket henüz projemizin olduğu dizine indirilmedi. Bunun için Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinde aşağıdaki kodu çalıştırıyoruz;

dnu restore

Artık Startup.cs dosyasını açabilir ve projemizde Mvc kullanmaya başlayabiliriz. Öncelikle ConfigureServices() methodu içerisinde uygulamamıza Mvc‘yi tanıtıyoruz;

public void ConfigureServices(IServiceCollection services)
{
	services.AddMvc();
}

Bu noktada Configure() methodu içerisinde Mvc‘yi kullanabilir, yapılandırabiliriz;

app.UseMvc(routes =>
{
	routes.MapRoute(
		name: "default",
		template: "{controller=Home}/{action=Index}"
	);
});

AspNet Core 1.0 üzerinde geliştirdiğimiz projemizde artık MVC 6 yapılandırıldı.

İlk action methodumuzu yazmak için projenin olduğu dizinde Controllers dizini oluşturalım. Bunun için aşağıdaki komutları Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinde çalıştırabiliriz;

mkdir Controllers

Visual Studio Code editörüne dönerek Controllers dizininde HomeController.cs dosyasını oluşturuyoruz ve içerisine Index() methodunu aşağıdaki gibi yazıyoruz;

using Microsoft.AspNet.Mvc;

namespace inmemorycaching.Controllers
{
	public class HomeController : Controller
	{
		public string Index()
		{
			return "";
		}
	}
}

Bu noktaya kadar http://localhost:5000 adresine girdiğimizde boş bir sayfa ile karşılaşacağımız uygulamayı hazırladık.

project.json dosyasını açalım ve dependencies kısmına aşağıdaki paketi ekleyelim;

"Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final"

Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinde aşağıdaki kodu çalıştıralım;

dnu restore

Artık projemizde caching (önbellekleme) yapabiliriz. Öncelikle Startup.cs dosyasını tekrar açalım ve ConfigureServices() methodunun içini aşağıdaki gibi değiştirelim;

services.AddCaching().AddMvc();

Şimdi HomeController.cs dosyasını açıp aşağıdaki şekilde güncelleyebiliriz;

public class HomeController : Controller
{
	private IMemoryCache cache;

	public HomeController(IMemoryCache _cache)
	{
		cache = _cache;
	}

	public string Index()
	{
		var start = DateTime.Now;

		IEnumerable<int> rakamlar;

		if(!cache.TryGetValue("Rakamlar", out rakamlar))
		{
			rakamlar = Enumerable.Range(1, 10000);

			cache.Set("Rakamlar", rakamlar);
		}

		return $"10.000 öğeli listenin elde edilme süresi : {(DateTime.Now - start).TotalMilliseconds} ms.";
	}
}

Öncelikle HomeController sınıfı içinde IMemoryCache tipinde cache değişkenini tanımladık.

using kısmına Microsoft.Extensions.Caching.Memory namespace’ini eklemeyi unutmamalıyız.

HomeController sınıfının constructor‘ında IMemoryCache tipinde bir parametre aldık ve cache değişkeninde sakladık.

Index() action methodunda içerisinde 10.000 adet rakam saklayacağımız değişkenimizi tanımlıyoruz.

cache değişkeninin TryGetValue() methodu aracılığı ile liste değişkenini cache‘teki liste ile doldurmaya çalışıyoruz.

Eğer dolduramazsak, cache‘e 10.000 rakamlı değişkeni ekliyoruz.

Index() action method’unun başında ve sonunda aldığımız iki zaman değişkeni aracılığı ile arada geçen zamanı hesaplıyoruz ve ekranda gösteriyoruz.

http://localhost:5000 adresine ilk ziyaretimizde 10.000 elemanlı diziye yaklaşık 6 saniye içerisinde ulaşabildiğimizi görüyoruz.

Takip eden ziyaretlerimizde ise 0 milisaniye içerisinde aynı diziye ulaşabiliyoruz;

IMemoryCache interface‘inde tanımlı olan Set() methodu ile cache‘e eklediğimiz nesnenin belli bir süre sonra otomatik olarak cache‘ten silinmesini istiyorsak, MemoryCacheEntryOptions sınıfından yeni bir instance çıkartıp, SetAbsoluteExpiration() methoduna istediğimiz süreyi TimeSpan tipinde vermeliyiz;

cache.Set("Rakamlar", rakamlar, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(30)));

SASS (scss dosyaları) nedir?

03 February 2016 Yorum yapılmamış

Web tabanlı uygulamalarda html sayfalarını göze daha hoş gözükür hale getirmek ve kullanılabilirliği artırmak için css stillerini kullanırız.

Web tabanlı uygulama geliştirirken genelde uygulamaya özel renkler, fontlar, görseller, vs kullanırız. Bu renkleri, fontları, görselleri, vs css dosyalarının içerisinde sürekli kullanmamız gerekir.

Örneğin, uygulamamızda linklerin kırmızı gözükmesini istiyorsak css dosyasına uygun stili yazarız, butonların da kırmızı gözükmesi gerekirse, css dosyasına yeni bir stil ekleyerek gene kırmızı rengi kullanmamız gerekir.

Yukarıdaki örnekten devam edecek olursak, kırmızı renk ve tonları css dosyalarında belki onlarca defa kullanılmış olacak.

Eğer uygulamanın kırmızı değil, mavi tema ile gözükmesini istersek css dosyalarını açıp, kırmızı renk kodlarını mavi ile değiştirmemiz, kırmızı rengin tonlarına karşılık gelen mavi tonlarını bulup css dosyalarındaki stilleri güncellememiz gerekecek.

Eğer css dosyasının başında değişkenler, fonksiyonlar tanımlayabilseydik ve stillerde bu değişkenleri, fonksiyonları kullanabilseydik, değişiklikleri çok daha kolay yapabilecektik.

SASS ve LESS, tam olarak bu sorunu çözmeye çalışıyorlar.

Bu makalede SASS‘ın nasıl çalıştığını inceleyeceğiz, hemen örnek projemizi oluşturmak istediğimiz dizini Visual Studio Code ile açıyoruz ve içerisinde index.html ve package.json dosyalarını oluşturuyoruz;

index.html dosyasının içeriği;

<html>
	<head>
		<link rel="stylesheet" href="css/style.css" />
	</head>
	<body>
		<header>
			<h1>Örnekler ile SASS</h1>
		</header>
		<article>
			<p>Bu örnekte SASS'ın nasıl kullanıldığını inceliyoruz</p>
		</article>
	</body>
</html>

package.json dosyasının içeriği;

{
	"name": "polatengin-sass-ornek",
	"description": "SASS Örnek Projesi",
	"version": "1.0.0",
	"private": true
}

Eğer daha önce kurulumunu yapmadıysak node-sass paketini npm üzerinden kurmamız gerekiyor. Eğer aşağıdaki komutu daha önce çalıştırdıysanız, tekrar çalıştırmaya gerek yok.

npm install -g node-sass

package.json dosyasına eklenebilecek scripts bölümü ile npm aracının birden fazla komutu, parametreleri ile birlikte bir defada çalıştırmasını sağlayabiliriz, aşağıdaki scripts parçasını ekleyelim;

"scripts": {
	"build-sass": "node-sass --include-path scss scss/main.scss css/style.css"
}

Böylece npm run build-sass komutunu çalıştırabileceğiz ve node-sass bizim için scss/main.scss dosyasını derleyip, css/style.css adı ile kaydedecek. Denemek için hemen Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidelim ve aşağıdaki kodu çalıştıralım;

npm run build-sass

Projemizin olduğu dizinde css dizininin oluşturulduğunu ve içerisine style.css dosyasının eklendiğini görebiliriz, henüz scss/main.scss dosyası boş olduğu için css/style.css dosyasının içerisi de boş.

html dosyasını tarayıcıda açıp içeriğini görebilmek için bir web server‘a ihtiyacımız olacaktır, eğer bilgisayarınıza daha önce bir web server kurmadıysanız, npm üzerinden http-server web server‘ını kurabiliriz;

npm install -g http-server

Eğer daha önce yukarıdaki kodu çalıştırdıysanız, tekrar çalıştırmanıza gerek yok.

Artık aşağıdaki komutu çalıştırarak http-server web server‘ını çalıştırabiliriz;

http-server

İstediğimiz tarayıcıyı açarak http://localhost:8080 adresine gidersek, aşağıdaki ekranı görmemiz lazım;

index.html dosyasında css/style.css dosyasını link elementi ile eklediğimiz için şu anda scss/main.scss dosyasına SASS kodlarını yazmaya başlayabiliriz.

scss/main.scss dosyasını açalım ve değişkenlerimizi tanımlayalım;

$arkaplan: #03a9f4;
$yazi: #9c27b0;
$yazi-tipi: "Helvetica";

Değişkenlerimizin isimlerini $ işareti ile başlatıyoruz, böylece SASS derleyici css dosyasını oluşturacağı zaman, $ işareti ile başlayan isimlerin değişken olduğunu anlayabiliyor. Değişkenleri kullanmak için main.scss dosyasına aşağıdaki kodları ekleyelim;

body {
	background-color: $arkaplan;
}
header {
	color: $yazi;
	font-family: $yazi-tipi;
	margin-left: 10px;
}
article {
	color: $yazi;
	font-family: $yazi-tipi;
	padding: 15px;
}

Böylece body elementinin background-color özelliği $arkaplan değişkeninin değerine, header elementinin color özelliği $yazi değişkeninin değerine, font-family özelliği $yazi-tipi değişkeninin değerine, margin-left özelliği sabit 15px değerine, article elementinin color özelliği $yazi değişkeninin değerine, font-family özelliği $yazi-tipi değişkeninin değerine, padding özelliği sabit 15px değerine sahip olacak.

http-server web server‘ını kapatalım, önce SASS dosyasını css dosyasına dönüştürelim (derleyelim) ve http-server web server‘ını tekrar çalıştıralım;

npm run build-sass

http-server

css/style.css dosyasını açarsak, içerisinde aşağıdaki stillerin tanımlı olduğunu görebiliriz;

body {
	background-color: #03a9f4;
}
header {
	color: #9c27b0;
	font-family: "Helvetica";
	margin-left: 10px;
}
article {
	color: #9c27b0;
	font-family: "Helvetica";
	padding: 15px;
}

SASS dosyalarında öntanımlı bazı fonksiyonları da kullanabiliriz, örneğin yukarıdaki örnekte yeralan article elementinin arkaplan renginin sayfanın arkaplan renginden biraz daha açık bir renge sahip olmasını istiyorsak, article elementinin stil‘ine aşağıdaki kodu ekleyebiliriz;

background-color: lighten($arkaplan, 15%);

Böylece article elementinin background-color özelliği, $arkaplan değişkeninin değerinin %15 daha açık rengine sahip olacak. lighten() fonksiyonu ilk parametresinde renk değerini, ikinci parametresinde açık hale getirme miktarını alır.

Benzer şekilde darken() fonksiyonu ilk parametresinde aldığı renk değerini ikinci parametresinde aldığı miktar kadar koyu hale getirebilir.

http-server web server‘ını kapatalım, önce SASS dosyasını css dosyasına dönüştürelim (derleyelim) ve http-server web server‘ını tekrar çalıştıralım;

npm run build-sass

http-server

css/style.css dosyasını açarsak, içerisinde aşağıdaki stillerin tanımlı olduğunu görebiliriz;

body {
	background-color: #03a9f4;
}
header {
	color: #9c27b0;
	font-family: "Helvetica";
	margin-left: 10px;
}
article {
	color: #9c27b0;
	background-color: #47c4fd;
	font-family: "Helvetica";
	padding: 15px;
}

Yukarıdaki scss/main.scss dosyasında hem header hem de article elementinin color ve font-family özelliklerinin olduğunu ve aynı değerlere sahip olduklarını görüyoruz. SASS dosyalarında tanımlayabileceğimiz @mixin değişkenleri sayesinde birden fazla stil özelliğine tek bir değişkende birleştirebilir, istediğimiz yerde @import tanımlaması ile kullanabiliriz;

@mixin renk-font {
	color: $yazi;
	font-family: $yazi-tipi;
}
header {
	@include renk-font;
	margin-left: 10px;
}
article {
	@include renk-font;
	background-color: lighten($arkaplan, 15%);
	padding: 15px;
}

http-server web server‘ını kapatalım, önce SASS dosyasını css dosyasına dönüştürelim (derleyelim) ve http-server web server‘ını tekrar çalıştıralım;

npm run build-sass

http-server

css/style.css dosyasını açarsak, içerisinde aşağıdaki stillerin tanımlı olduğunu görebiliriz;

body {
	background-color: #03a9f4;
}
header {
	color: #9c27b0;
	font-family: "Helvetica";
	margin-left: 10px;
}
article {
	color: #9c27b0;
	font-family: "Helvetica";
	background-color: #47c4fd;
	padding: 15px;
}

Hatta, istersek @mixin değişkenlerinin parametre(ler) almasını da sağlayabiliriz;

@mixin renk-font($renk) {
	color: $renk;
	font-family: $yazi-tipi;
}

@include ile stillere eklediğimiz yerleri de aşağıdaki gibi değiştirelim;

header {
	@include renk-font($yazi);
	margin-left: 10px;
}
article {
	@include renk-font(darken($arkaplan, 15%));
	background-color: lighten($arkaplan, 15%);
	padding: 15px;
}

Böylece renk-font isimli @mixin değişkenimiz $renk parametresi ile aldığı renk bilgisini kullanacak. header elementinde $yazi değişkenini kullanıyoruz, article elementinde darken() methoduna $arkaplan değişkeninin değerini vererek oluşan rengi kullanıyoruz.

http-server web server‘ını kapatalım, önce SASS dosyasını css dosyasına dönüştürelim (derleyelim) ve http-server web server‘ını tekrar çalıştıralım;

npm run build-sass

http-server

css/style.css dosyasını açarsak, içerisinde aşağıdaki stillerin tanımlı olduğunu görebiliriz;

body {
	background-color: #03a9f4;
}
header {
	color: #9c27b0;
	font-family: "Helvetica";
	margin-left: 10px;
}
article {
	color: #0275a8;
	font-family: "Helvetica";
	background-color: #47c4fd;
	padding: 15px;
}

AspNet Core 1.0 projesine StaticFile desteği eklemek

01 February 2016 1 yorum

Bu makaleyi okumadan önce Asp.Net Kategorisindeki diğer makalelerimi okumanızı tavsiye ederim.

AspNet Core 1.0 projelerinde eğer html, js, css, jpg, png gibi dosyalar kullanacaksanız bu makalede anlatıldığı gibi StaticFile desteğini projenize eklemeniz gerekmektedir.

Eğer StaticFile desteğini projeye eklemezseniz html, js, css, jpg, png gibi uzantılara sahip dosyaları tarayıcılarda görüntüleyemeyeceksiniz.

Hemen örnek proje oluşturacağımız dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidiyoruz ve aşağıdaki kodları çalıştırıyoruz;

yo aspnet
// Empty Application seçeneğini seçiyoruz
// Projeye aspnetcorestaticfile ismini veriyoruz

cd aspnetcorestaticfile
code .

Visual Studio Code açıldıktan sonra wwwroot dizinine index.html dosyasını ekliyoruz ve içerisine Merhaba Dünya! yazıyoruz.

Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresine dönüp aşağıdaki kodu çalıştırıyoruz;

dnx web

İstediğimiz tarayıcıyı kullanarak http://localhost:5000/index.html adresine gittiğimizde karşımıza hiçbirşey gelmediğini görüyoruz.

Az önce index.html dosyasını oluşturduk, fakat index.html dosyasının içeriğine ulaşamadık. Bunun sebebi AspNet Core 1.0 biz StaticFile desteğini ekleyene kadar wwwroot dizinindeki dosyaları servis etmez.

Hemen project.json dosyasını açıyoruz ve dependencies kısmına aşağıdaki satırı ekliyoruz;

"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final"

Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresine dönüp aşağıdaki kodu çalıştırıyoruz;

dnu restore

Böylece StaticFile servis etmek için gerekli paket projemizin olduğu dizine indirilmiş oldu.

Startup.cs dosyasını açıp, Configure() method’unu aşağıdaki şekilde değiştiriyoruz;

public void Configure(IApplicationBuilder app)
{
	app.UseIISPlatformHandler();

	app.UseStaticFiles();
}

Tekrar Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresine dönüp aşağıdaki kodu çalıştırıyoruz;

dnx web

İstediğimiz tarayıcıyı kullanarak http://localhost:5000/index.html adresine gittiğimizde, artık Merhaba Dünya! yazısını görebiliriz.

Eğer AspNet Core 1.0 uygulamalarımızda html, js, css, jpg, png gibi dosyaları kullanmak istiyorsak, StaticFile desteğini projemize eklememiz gerekiyor.