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

Arşiv

Etiketlenen yazılar type

ASP.NET MVC ile resim içerisine metin gömme (Steganography)

01 October 2016 Yorum yapılmamış

Aldığım ilginç bir maili cevaplarken internette Steganography diye birşeye denk geldim. Bir resmin pixellerinin renk değerlerini bir metni veya dosyayı içerecek şekilde değiştirmeye ve böylece resim ile birlikte gizlice metin veya dosya transfer etme anlamına geliyor.

Aşağıdaki youtube video‘sunda Visual Studio içerisinde bir ASP.NET MVC projesi oluşturacak, dosya upload edecek bir html sayfası oluşturacak, upload edilen resmin içerisine istediğimiz metni gizleyeceğiz.

Öncelikle Index.cshtml içerisine aşağıdaki html kodlarını yazalım;

HomeController.cs dosyasına aşağıda kodlarını bulacağınız Index() action ekleyelim;

Video‘da kullandığım PowerPoint sunumuna aşağıdan erişebilirsiniz.


HTML5 video element özellikleri

25 March 2016 Yorum yapılmamış

Web sayfalarında multimedia oynatmak için HTML5 ile yeni birkaç element ve Javascript API hayatımıza girdi.

Bu makalede HTML5 ile yeni gelen <video> element’ini inceleyeceğiz. Hemen yeni bir html sayfası oluşturalım ve video elementini incelemeye başlayalım.

Visual Studio Code editörünü açalım ve istediğimiz dizinde video.html dosyasını oluşturalım, içerisine en temel HTML5 kodlarını aşağıdaki gibi ekleyelim;

Öncelikle <body></body> tagları arasına yeni bir <video></video> element ekliyoruz. Sayfayı kaydedip tarayıcıda açtığımızda ekranda herhangi bir şey görmüyoruz, çünkü hiçbir özellik verilmemiş olan video elementi ekranda gözükmez.

Basitçe video elementine src attribute tanımlayarak sayfada video‘nun görüntülenmesini sağlayabiliriz, örneğin;

Sayfayı tarayıcıda açtığımız zaman, video‘nun orjinal boyutlarında siyah bir dörtgen görmemiz lazım;

Fakat bu noktada video‘yu başlatmak, durdurmak, ses seviyesini değiştirmek gibi şeyleri yapamıyoruz. Eğer video elementine controls attribute ekleyecek olursak, video‘yu başlatabileceğimiz, durdurabileceğimiz, ilerlemesini takip edebileceğimiz çeşitli butonlar video’nun altına eklenecek, örneğin;

Farklı tarayıcılar farklı video formatlarını desteklerler, yukarıdaki örnekte olduğu gibi eğer sadece mp4 formatını kullanacak olursak bazı kullanıcılar video’yu izleyemeyecekler.

Sayfada video elementinin src attribute’ünü kullanmak yerine, source elementinden birkaç tane kullanabiliriz, böylece birden fazla formatta aynı video’yu video elementine ekleyebiliriz, örneğin;

Artık mp4, webm ve ogg formatlarından birini destekleyen tüm tarayıcılarda videomuz oynatılabilecek. video element içerisine istediğimiz kadar format için istediğimiz kadar source element ekleyebiliriz.

Eğer video‘nun orjinal boyutlarında değil, bizim istediğimiz boyutlarda ekranda görüntülenmesini istiyorsak, yapmamız gereken video elementine width ve height özelliklerini vermek olacak, örneğin;

Eğer video’nun orjinal boyutları ile orantılı boyut belirlersek, video ilgili alanda gösterilir, eğer orantılı boyut belirlemezsek, video ilgili alanın ortasına gelecek şekilde boyutlandırılır, soldan-sağdan veya üstten-alttan kalan boşluklar siyah renk ile doldurulur.

Birçok tarayıcı, sayfadaki video elementinde bulunan video’yu önceden yüklemeye başlar, böylece video oynatılacağı zaman kullanıcı bir miktar yüklenene kadar beklemek zorunda kalmaz.

İstersek bu özelliğin farklı şekilde davranmasını video elementinin preload özelliğine vereceğimiz değer ile sağlayabiliriz.

preload=”none”

Bu durumda, video başlatılana kadar ekranda hiç yer kaplamayacak, siyah arkaplan gözükmeyecek, video uzunluğu dakika/saniye cinsinden bilinmeyecek. Video başlatıldığında video’nun boyutu bulunacak ve boyutu kadar yer kaplamaya başlayacak.

Mobil cihazlarda görüntülenecek video’lar için tavsiye edilen özellik budur. CSS ile video’nun görüntüleneceği alana stil verip, video başlatılana kadar hiç yüklenmemesi sağlanabilir.

preload=”metadata”

Bu durumda, video’nun ne kadar büyük olduğu bilgisi otomatik olarak okunur ve gerekli alanı kaplamaya başlar. İstersek CSS ile stil verebiliriz, vermesek bile en azından video alanı, dakika/saniye cinsinden uzunluğu sayfada gözükür.

İstersek autoplay özelliğini kullanarak, video’nun sayfa açıldığında otomatik olarak oynatılmaya başlanmasını da sağlayabiliriz, örneğin;

Ayrıca loop özelliğini kullanarak, video’nun sonuna gelindiğinde otomatik olarak başa dönerek tekrar oynatılmasını sağlayabiliriz, örneğin;

Eğer video alanının video oynatılana kadar siyah kalmasını istemiyorsak, poster özelliğini kullanabiliriz, örneğin;

Eğer video’nun sessiz oynatılmasını istiyorsak, muted özelliğini kullanabiliriz, örneğin;

Böylece, kullanıcı video’nun sesini açmadıkça, video sessiz olarak oynatılacaktır.

HTML TextArea elemanına girilebilecek karakter sayısını sınırlamak

17 September 2010 7 yorum

HTML‘de metin kutularına (<input type=”text” />) girilebilecek karakter sayısını maxlength özelliği ile kısıtlayabiliyoruz;

<input type="text" id="AdSoyad" maxlength="75" />

Fakat TextArea elemanı için maxlength özelliği yer almamaktadır.

Eğer TextArea elemanı için maxlength özelliğini sağlamak istersek, sayfamıza javascript kodu eklememiz gerekir.

Örneğin, ilgili TextArea elemanına 100 karakterlik bir sınır koymak istiyorsak, aşağıdaki javascript kodunu sayfamıza ekleyebiliriz;

<script type="text/javascript">
	function TextAreaKarakterSayisiDogrula()
	{
		var sonSayi = 100 - document.getElementById("Adres").value.length;
		if (sonSayi >= 0)
		{
			document.getElementById("KalanKarakterSayac").innerHTML = sonSayi;
		}
		else
		{
			document.getElementById("Adres").value = document.getElementById("Adres").value.substring(0, 100);
			document.getElementById("KalanKarakterSayac").innerHTML = 0;
		}
	}
</script>

<textarea id="Adres" onkeyup="TextAreaKarakterSayisiDogrula()" cols="20" rows="5"></textarea>

Kalan karakter sayısı : <span id="KalanKarakterSayac">100</span>

Örnek kodu herhangi bir html sayfasına koyarsanız, farklı tarayıcılarda sorun çıkartmadan çalışacaktır.

C# Uygulamalarında XML Dokümantasyonu Kullanmak

18 February 2010 1 yorum

C# ile Uygulama Geliştirirken Yorum Satırlarını Kullanmak yazımda başladığım konuya XML Dokümantasyonunu eklemem gerekir.

Geleneksel C-tarzı yorum satırlarına ilave olarak C# geliştirilen kodların Xml Dokümantasyonunu otomatik olarak çıkartabilmek için, güçlü yorum operatörlerine sahiptir.

Bu yorum operatörleri (///) ile başlayan satırlara yazılır.

Aşağıdaki listedeki operatörler, derleyici (compiler) tarafından tanınır ve desteklenir;

<c> Tek satırı C# kodu olarak işaretler. Örneğin: <c>string AdSoyad = “Engin Polat”;</c>
<code> Birden çok satırı C# kodu olarak işaretler.
<example> İlgili satırları “örnek kod” olarak işaretler.
<exception> Exception sınıfını dokümante eder. (Derleyici(compiler) tarafından kontrol edilir)
<include> Başka bir dokümantasyon dosyasından yorum ekler. (Derleyici(compiler) tarafından kontrol edilir)
<list> Dokümantasyona liste ekler.
<param> Method parametresini dokümante eder. (Derleyici(compiler) tarafından kontrol edilir)
<paramref> Kelimenin parametre olduğunu işaretler. (Derleyici(compiler) tarafından kontrol edilir)
<permission> Öğeye erişim belirleyicisini dokümante eder. (Derleyici(compiler) tarafından kontrol edilir)
<remarks> Öğeye açıklama ekler.
<returns> Method’un dönüş tipini dokümante eder.
<see> Başka bir parametreye çapraz-referans ekler. (Derleyici(compiler) tarafından kontrol edilir)
<seealso> Açıklamaya “buna da bakın” parçası ekler. (Derleyici(compiler) tarafından kontrol edilir)
<summary> Öğenin kısa açıklamasını dokümante eder.
<value> Özelliği (property) tanımlar.

Örnek olması açısından, aşağıdaki Matematik sınıfını dokümantasyonu ile birlikte yazıyorum;

//Matematik.cs
namespace Engin.Polat
{
	///<summary>
	///  Engin.Polat.Matematik sınıfı.
	///  İki rakamın toplanmasına yaran
	///  Topla method'unu içerir.
	///</summary>
	public class Matematik
	{
		///<summary>
		///  İki rakamın toplanmasını sağlar.
		///</summary>
		///<example>Örnek olarak: Topla(3, 5);</example>
		///<returns>Toplama işleminin sonucu (int)</returns>
		///<param name="x">Toplama işleminin ilk rakamı</param>
		///<param name="y">Toplama işleminin ikinci rakamı</param>
		public int Topla(int x, int y)
		{
			return x + y;
		}
	}
}

Derleme sonucu oluşan Xml dokümanı aşağıdaki gibidir;

<?xml version="1.0"?>
<doc>
	<assembly>
		<name>ConsoleApplication4</name>
	</assembly>
	<members>
		<member name="T:Engin.Polat.Matematik">
			<summary>
				Engin.Polat.Matematik sınıfı.
				İki rakamın toplanmasına yaran
				Topla method'unu içerir.
			</summary>
		</member>
		<member name="M:Engin.Polat.Matematik.Topla(System.Int32,System.Int32)">
			<summary>
				İki rakamın toplanmasını sağlar.
			</summary>
			<example>Örnek olarak: Topla(3, 5);</example>
			<returns>Toplama işleminin sonucu (int)</returns>
			<param name="z">Toplama işleminin ilk rakamı</param>
			<param name="y">Toplama işleminin ikinci rakamı</param>
		</member>
	</members>
</doc>

Dikkat ederseniz, derleyici (compiler) bizim için ve elementlerini eklemiştir. Her element’i name özelliğine sahiptir ve değer olarak öğenin tam adını içerir.

Değerin ilk harfi özel bir anlam taşır;

T : Type
F : Field
M : Member