Görüntü ve Ses

İnternetten dizi ya da film indirmek istediğimizde karşımızda Motherhood_BDRip_ DTS_x264_xSCR gibi dizi ya da film adının yanında sıralanmış birtakım bilgilerden oluşan isimler görürüz. Özellikle de uygun bir altyazı aradığımızda bu bilgilerin önemi bir kez daha ortaya çıkar. Peki nedir bu bilgiler? Motherhood_BDRip_ DTS_x264_xSCR isminde geçen Motherhood filmin adını, BDRip filmin sürümünü, DTS kullanılan audio codec türünü, x264 kullanılan video codec türü ve son olarak da xSCR sürümü yayınlayan grubun adını temsil eder.

Sürümler

CAM Sinema’dan kamera çekimi demek olup, kalitesi tamamen çeken kişiye bağlıdır. Kalite olarak en kötüsüdür ancak tek avantajı piyasaya ilk çıkan release türü olmasıdır, çünkü film bir sinemalarda oynamaya başladığı gün ortaya çıkar.
Telesync TS olarak da yazılır. CAM’den farklı olarak ses kameranın mikrofonundan değil doğrudan (line) olarak alınmıştır. Yani kötü görüntü, daha iyi ses anlamına gelir. CAM release’lerden kısa bir süre sonra ortaya çıkar.
Telecine TC olarak da yazılır. Filmin dijital olarak makarasından kopyalanması ile ortaya çıkar. Görüntü ve ses kalitesi teoride DVDRIP ile aynı olmasına rağmen genellikle pratikte geçerli değildir. Özellikle renkte solma, ve sağ sol kenarlarda hafif titreşimler bulunur.
Workprint Çok az karşılaşılan bu release’lerde film henüz son halini almamıştır. Hala üzerinde çalışılan bir kopya olup bazı efektler henüz eklenmemiştir. Götüntü kalitesi, filmin kurgusunda çalışan bir adam tarafından sızdırıldığı için genellikle iyidir.
DVDSCR SCR olarak da yazılır. Ses ve görüntü kalitesi genellikle DVDRIP kadar iyidir, sadece filmin herhangi bir yerinde bazen “PROPERTY OF KUKKURİKU CORP” gibi yazılar çıkar. Bu sürümler genellikle sinema eleştirmenlerine, yöneticilere giden kopyadan çoğaltılmışlardır. DVDRIP’den kısa bir süre önce piyasaya sürülür.
R5 Region 5′in kısaltması olup, Rusya bölgesi için üretilmiş DVD’lerden üretilmiştir. Kısaca Rus DVDRip’i olarak adlandırılabilir. Görüntü kalitesi DVDRip kadar iyidir (bazen ufak tefek farklar gösterebilir) Genellikle DVDRIP’den bir süre önce ortaya çıkar.
DVDRIP Filmin DVD’si çıktıktan sonra bu bu DVD’den oluşturulmuş bir sürümdür. Kalite olarak orjinal DVD’ye çok yakındır.
BDRIP BlueRay disklerden oluşturulmuş ama mkv yada x264 gibi High definition olmaktansa standard xvid olarak yayınlanmış release’lerdir. Kalitesi ve boyutu DVDRip ile aynıdır yada çok az daha iyidir.
BRRIP BlueRay disklerden yüksek çözünürklükte (720p ya da 1080p) yayınlanmış sürümlerdir.
HDTV TV’den gelen yayının bilgisyara bir tv kartı ile analog olarak aktarılması sonucu ortaya çıkan bir sürümdür.

Sürüm ile birlikte kimi zaman film ile ilgili birtakım bilgileri belirten ifadeler kullanılır.

PROPER Film’in yayınlanan ilk sürümünün düşük kalitede olması halinde aynı ya da bir diğer bir grubun filmin başka bir sürümünü daha kaliteli olarak yayınlaması durumunda eski sürümden ayırt edici özellik olarak kullanılır.
SUBBED Yayınlanan filmin altyazılı olduğunu ve altyazının film boyunca görüntüyle birlikte encode edildiğini belirtir.
LIMITED Filmin sınırlı sayıda sinemada oynandığı anlamına gelir. Bu sayı genellikle 250 sinemanın altıdır. Genellikle kısa filmler bu etiketle yayınlanırlar.
RECODE Recode; filmin önceden yayınlanmış versiyonunun, içindeki altyazıları kaldırmak ya da renklerini düzeltmek suretiyle TMPGenc’den filtre edilen versiyonudur.

Video Codec Türleri

VCD MPEG1 tabanlı, sabit , 1150 kbit bitrate’e ve 352×240 çözünürlüğe sahiptir. Genellikle düşük kalitede küçük boyut elde etme, tek CD’ye sığdırabilme amaçlı kullanılır.
SVCD MPEG2 tabanlı, 2500 kbit’e kadar değişken bitrate değerlerine ve 480×480 çözünürlüğe sahiptir. Değişken bitrate’ten dolayı tek CD’ye sığacak uzunluk kesin bilinmemektedir.
XVCD/XSVCD Basit bir şekilde kurallara uymayan VCD olup daha yüksek birate ve çözünürlük değeri alabilirler. Sonuçta durum VCD’yi oynatacak makinenin kapasitesine bağlıdır.
DivX / XviD Multimedya platformları için tasarlanmış olup biri düşük hareket (low motion), diğeri ise yüksek hareket (high motion) olmak üzere iki codec kullanır. İki codec arasındaki değişimleri sağlayarak daha kaliteli sonuçlar elde edebilmek için SBC (Smart Bitrate Control-Akıllı Bitrate Kontrolü) adlı bir metod geliştirilmiştir. Çok yüksek işlem değeri ve karmaşık alogoritmalar ile yapıldığından dolayı DivX filmler DVD Player’larda çalışamazlar.

Video Standartları

  • PAL : Avrupa, Avustalya, Ortadoğu ve Afrika’nın bazı kısımlarında kullanılan bir renkli televizyon sistemidir. 625 yatay tarama çizgisi ve saniyede 25 kare görüntüsü vardır.
  • NTSC (National Television Standarts Committee): Başta ABD olamak yaygın olarak kullanılan bir diğer renkli televizyon sistemidir. 525 yatay tarama çizgisi ve saniyede 30 kare görüntüsü vardır.NTSC formatında olan önceden kaydedilmiş görüntü bantlarını oynatma kabiliyeti sağlar.
  • SECAM (Sequential Couleur A’Memorie): Fransa, Rusya ve NTSC ya da PAL sistemini kullanmayan ülkelerde kullanılan bir sistemdir. 625 yatay tarama satırı vardır ve saniyede 25 kare resim görüntüler.

Aspect Ratio

Bir dikdörtgenin eninin boyuna bölünerek elde edilen orandır.

FPS (Frame Per Second)

Bir saniyede yakalanan görüntü sayısıdır. fps değerinin büyüklüğü ile görüntü kalitesi arasında herhangi bir bağ yoktur. Daha fazla fps değeri sadece hareketli görüntünün akıcılığı ile alakalıdır.

High Definition (HD)

  • Interlaced: Görüntü yatay taranması esnasında yayınlanan videonun yarısı gösterilmekte ve çok kısa bir süre sonra (saniyenin 30’da 1’i) diğer yarısı gösterilmektedir. Böylece bir defalık interlaced sinyal ile görüntünün sadece yarısı gönderildiği için band genişliği korunmaktadır.
  • Progressive Scan: Görüntünün tamamı saniyeden 60′da bir hızla gelir ve sonra yerini diğer görüntüye bırakır. Böyle olunca interlaced’da resimlerin değişmesi esnasında meydana gelen küçük titremeler ortadan kalkar ve daha net bir görüntü elde edilir.

720i : 1280×720 interlaced
720p : 1280×720 progressive scan
1080i : 1920×1080 interlaced
1080p : 1920×1080 progressive scan

720 ve 1080 ifadeleri, var olan yatay hat sayısını belirtmektedir. Daha yüksek sayıda olan yatay hat ile diğer resmin geliş süresi kısalmakta ve böylece daha kaliteli bir görüntü elde edilmektedir. 720p ile 1080p arasındaki farkı eğer ekran büyük değilse net olarak görülmez, ekran büyüdükçe aralarındaki fark daha net seçilebilir. 1080i ve 1080p değerlendirilirse, duran bir nesnedeki kalite birbirinin aynı gibi görünse de görüntü kalitesi açısından asıl fark nesne harekete geçtiği zaman ayrıntılar 1080i’de bulanıklaşmaya başlar ve hareket eden nesnelerdeki ayrıntıyı en iyi 1080p verir.

Bir videonun ortalama çözünürlüğü yatay tarama hattı ile piksel sayısının çarpımı olarak değerlendirilebilir. 1080p ortamda yatay tarama hattının her birinde 1920 piksel bulunmaktadır. Bu durumda toplamda 1080 x 1920 piksel = 2073600 piksel olacaktır. Bunun yanında aynı çözünürlükte büyük ekranlı bir televizyon ile küçük ekranlı bir televizyonunda piksel sayısı aynıdır. Bir televizyon daha büyük ekranlıysa aynı çözünürlükte ekranında daha çok piksel olacak diye bir kural yoktur. Sadece büyük ekranlı bir televizyonda piksellerin boyutu artar ve artan piksel boyutunda küçük ekranlı bir televizyonda yakalanan netliğin yakalanması için belirli bir uzaklıktan bakılması gereklidir.

HD TV (High Definition Television)

HD Ready HDTV : 720p HDTV’nin diğer bir adı
Full HD HDTV : 1080p HDTV’nin diğer bir adı

HD TV ile normal TV sistemleri (NTSC, SECAM, PAL) arasındaki fark HD TV‘nin daha yüksek çözünürlük ve daha iyi bir ses sistemi sağlamasıdır. HD TV geniş ekran 16:9 aspect ratio kullanır. Bu da yatay alanda daha fazla görüntü elde edilmesini sağlar. Şu an kullanılan standart TV ler ise 4:3 gibi bir aspect ratio kullanır.

Audio Codec Türleri

Dolby Surround Üç kanala sahip olup, 100 Hz’den 7 kHz’e uzanan bir bant genişliği ile iki ön ve bir arka kanaldan oluşur.
Dolby Pro Logic Dört kanal ile Dolby Surround’un geliştirilmiş hali olup, bir merkez ve arka sesler için bir kanalı paylaşan iki elementten oluşur.
Dolby Dijital (AC3 ya da Audio Code 3 olarak da bilinir.) İki ön, iki arka, bir merkez ve bir subwoofer olmak üzere altı kanala sahiptir. Bir film çekilirken, genellikle ses en az beş mikrofonla kaydedilir (biri konuşmalar, dördü arka plan ses efektleri için). Dolby Surround ve Pro Logic’in aksine, bant genişliği 20 Hz’den 20 kHz’ye kadar uzanır. AC3 terimi kullanıcının duyamadığı ses datasını yok eden ve altı kanalda kodlanmış bir ses üreten teknolojiye bir atıftır. Genelde, AC3 ses 18 bit’de kodlanır, böylece Bir AC3 sesin standart çıkışı 384 Kbps olur (6 kanal x 18 x 48 kHz). Dolby Dijital standartının ana avantajı, DVD için dijital ses çevre standartı olmasıdır. DVD standartını tanımlayan kurallara göre, DVD üzerinde Dolby Dijital Ses kayıdı olmadan, başka hiçbir dijital ses kayıdı koyulamaz. Dolby Dijital ses kayıtlı ilk film 1992’deki “Batman Returns”dir.
Dolby Digital Plus Merkezi ABD de bulunan ATSC (Gelişmiş TV Yayın sistemleri Komitesi) tarafından yeni nesil yayıncılık uygulamalarının standardı olarak belirlenmiş bir formattır. Blu-Ray disklerde 1.7 Mbps, HD-DVD de ise 3 Mbps’e kadar veri oranlarına erişebilmektedir.
Dolby True HD Her biri 24bit/96kHz çözünürlükte sekiz kanala kadar kayıpsız çok kanallı ses formatıdır. 18 Mbps’e kadar veri oranı desteği bulunup yeni dijital ses-görüntü bağlantı türü HDMI ile uyumludur. Ses verisi ile birlikte ekstra kontrol fonksiyonları da taşınabilir. Günümüzde AV Receiver’lar ve paket ev sinema sistemleri ile geriye dönük uyumluluk taşır.
DTS Dolby Digital ses formatında olduğu gibi DTS formatında da 6 ayrı kanaldan dijital ses üretilir. DTS bazı eleştirmenlerce Dolby Digital’den sonra günümüzün en iyi alternatif sinema ses formatı olarak gösterilmektedir. Bu değerlendirme onun sahip olduğu birkaç artı yönden kaynaklanır. Dolby Digital, altı kanal ses üretimi için ses kaynağındaki stereo dijital sinyallerin bir kısmını kullanamazken, DTS daha az kayıpla bu dokunulmayan sinyalleri de okur. Dijital formatların hepsi analog sesi sıkıştırarak dijital hale getirmenin birer yöntemidir. Daha az kayıpla maksimum sıkıştırmayı yapabilen format bir adım öne geçmektedir. DTS bass sesleri (patlama ve yüksek sesleri) biraz daha öne çıkarmaktadır.
DTS-HD Master Audio Her biri 24bit/96kHz çözünürlükte 7.1 kanal sesten oluşur. Blu-Ray disklerde 24.5 Mbps, HD-DVD’de ise 18 Mbps gibi oldukça yüksek veri oranı içermektedir ki bu durum kayıpsız ses verisi taşıması anlamına gelir.
DTS-HD High Resolution Audio Master Audio versiyonuna çok yakın özellikler taşır ancak veri oranları daha düşüktür. (Blu-Ray disklerde 6.0 Mbps, HD-DVD’de 3.0 Mbps) Bu versiyon, kullanılan görüntü içeriğinin disk kapasitesini büyük oranda doldurduğu ve DTS-HD Master Audio versiyonunun kullanılmadığı durumlar için geliştirilmiştir. Versiyon yine 24bit/96kHz çözünürlükte 7.1 kanal sese imkan vermektedir.

Tip Dönüşümü

Bundan yaklaşık 4 ay önce halen çalışmakta olduğum işime henüz yeni girmiş ve geliştirilen yazılımları inceleyip anlamaya çalışıyordum ki karşılaştığım bir kod parçası beni hayretler içinde bırakmıştı. Yazılımcı arkadaşımızın C#’da TryParse isimli bir metodun varlığından haberi olmasa gerek söz konusu metodu kendisi yazmış ve bunu da pek çok yerde kullanmıştı. Veri tipleri ve tipler arasındaki dönüşüm C#’da en temel konular arasında olsa da çoğu zaman özellikle de yazılıma yeni başlayanlar tarafından göz ardı ediliyor ve ortaya karmaşık yapılar, düşük performanslı yazılımlar çıkıyor.

Değişkenler bir programlama dilinde temel verileri saklamak ve bu verileri sonradan kullanmak için kullanılan bellek bölgeleridir. C# dilinde genel olarak bir değişken tanımlaması aşağıdaki gibi olmaktadır.

<veri tipi> <veri adı>;

C# dilinde temel olarak veri tipleri ikiye ayrılır. Bunlar önceden tanımlanmış veri tipleri ve kullanıcı tarafından tanımlanmış veri tipleridir. Önceden tanımlanmış veri tipleri de kendi arasında referans tipi (reference types) ve değer tipi (value type) olmak üzere ikiye ayrılır.

Değer tipli değişkenlerin boyutu programın derlenmesi aşamasında bellidir ve bellekte stack (yığın) adı verilen bölgede doğrudan verinin kendisi tutulur. Referans tipli değişkenlerin ise boyutu programın derlenmesi aşamasında belli değildir. Bu sebeple veri stack üzerinde değil yine bellekte heap adı verilen başka bir bölgede tutulur. Stack üzerinde ise, veriye işaret eden (adres bilgilerini tutan) bir değer tipi saklanır.

Değer tipli değişkenlerde, değişkene ilk değer atanmadığında değişken otomatik olarak ilk değerini belirler. Örneğin int değişkenine 0, bool değişkenine false şeklinde atama yapılır. Referans tipli değişkenler oluşturulduğunda ve ilk değer ataması yapılmadığında ise değeri otomatik olarak null olur. Değer tipli bir değişken başka bir değer tipli değişkene eşitlendiğinde Stack bölgesinde bir veri kopyalama işlemi oluşur. Fakat referans tipli değişkenlerde, aynı veriyi gösteren farklı bir referans oluşturulur.

C# tip-korumalı bir dildir. Başka bir deyişle C# dili programda kullanılacak değişkenlerin tutacağı veri tiplerini kesin sınırlarla birbirinden ayırır. Dolayısıyla, bir değişken bildirimi yapılırken, o değişkenin veri tipi kesinlikle belirtilir. Daha sonra o değişkene atanan veriler, belirtilen veri tipinin dışına çıkamaz.

C# Tipi .NET Tipi Uzunluk(Byte) Değer Aralığı
byte Byte 1 0 – 255
sbyte SByte 1 -128 – 127
short Int16 2 -32768 – 32767
ushort UInt16 2 0 – 65535
int Int32 4 -2147483648 – 2147483648
uint UInt32 4 0 – 4294967295
long Int64 8 -1020 – 1020
ulong UInt64 8 0 – 2×1020
float Single 4 ±1.5 x 10-45 – ±3.4×1038
double Double 8 ±5.0×10-324 – ±1.7×10308
decimal Decimal 16 ±1.5×10-28 – ±7.9×1028
char Char 2
bool Boolean 1 true, false

Bir değişkenin tuttuğu verinin başka bir veri tipine dönüştürülmesine casting (çevrim) denir. C# dilinde çevirme işlemi sadece belirli özellikteki veri tipleri arasında yapılabilmektedir. Bunlar;

  • Sayısal veri tipleri
  • Kalıtım hiyerarşisi içindeki sınıflar
  • Aynı arayüzü uygulayan sınıflar
  • Farklı ama birbirleri için dönüşüm operatörleri tanımlanmış sınıflar

Çevrim işlemi, implicit (bilinçsiz) ve explicit (bilinçli) olmak üzere 2 farklı şekilde yapılabilir. C# ta genel olarak veri kaybına yol açma olasılığı olmayan dönüştürmeler (bellekte daha küçük bir alan kaplayan veri tipinden daha büyük bir alan kaplayan veri tipine dönüştürme) derleyici tarafından implicit olarak gerçekleştirilir.

int a  = 123;
long b;
b = a;  // b = 123

Implicit olarak dönüştürme yapılabilecek veri tipleri aşağıdaki tabloda listelenmiştir.

Kaynak Hedef
sbyte short, int, float, long, double, decimal
byte short, ushort, int, uint, long, ulong, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uint long, ulong, float, double, decimal
long, ulong float, double, decimal
char ushort, int, uint, long, ulong, float, double, decimal
float double

Diğer taraftan veri kaybına yol açma olasılığı olan dönüştürmeler (bellekte daha büyük bir alan kaplayan veri tipinden daha küçük bir alan kaplayan veri tipine dönüştürme) tür dönüştürme operatörü kullanılarak explicit olarak yapılabilmektedir. Bu tür dönüştürmeler tür dönüştürme operatörü kullanılmadan yani implicit olarak yapılırsa hata ile karşılaşılır.

int a;

long b = 456;

a = b;        // HATA

a = (int)b;   // a = 456

double c = 12.34;
a = (int)c;   // a = 12

Checked ve Unchecked Blokları

Explicit dönüştürmede dikkat edilecek önemli bir husus dönüştürme sonrası veri kaybının olabileceğidir. Derleyici varsayılan olarak bu durumda hata üretmez. Veri kaybı olduğunda programın hata vermesi istenen kısımlar checked blokları içine alınır. Benzer şekilde veri kaybı olduğunda programın hata vermesi istenmeyen kısımlar ise unchecked (varsayılan durum) blokları içine alınır.

int i=256;
int a=300;
byte b, c;

checked{
   b=(byte)i;
   unchecked{
      c=(byte)a;
   }
}

Tip Dönüştürme Operatörleri

Implicit ve Explicit olarak birbirine dönüşümü mümkün olmayan iki sınıfın birbirine dönüşümünü mümkün kılmak için tip dönüştürme operatörleri kullanılır.

public class Inch{
   public decimal Length { get; set; }
   public static implicit operator Cm(Inch i){
      Cm c = new Cm();
      c.Length = i.Length * 2.54M;
      return c;
   }
}

public class Cm{
   public decimal Length { get; set; }
   public static explicit operator Inch(Cm c){
      Inch i = new Inch();
      i.Length = c.Length / 2.54M;
      return i;
   }
}

Inch i1 = new Inch();
i1.Length = 5;
Cm cm1 = i1;          // Implicit casting

Cm cm2 = new Cm();
cm2.Length = 3;
Inch i2 = (Inch)cm2;  // Explicit casting

Boxing ve Unboxing

Değer tipinden bir değişkenin, object türüne implicit dönüştürülmesine boxing işlemi denir. Boxing işleminin tam tersi olan, objet türünden bir değişkenin, değer tipine explicit dönüştürülmesine ise unboxing işlemi denir.

int i1 = 123;

object o1 = i1;   // boxing

int i2 = (int)o1; // unboxing

Is ve As Operatörleri

Boxing ve Unboxing işlemleri veya sıradan bir tip dönümüşümü yapılırken değişkenin tipini dönüşüm yapılmak istenen tiple is operatörü ile karşılaştırarak çevrimin doğru olup olmadığı kontrol edilebilir.

DerivedType derivedObj = new DerivedType();

if(derivedObj is BaseType){
   BaseType baseObj = (BaseType)derivedObj;
}

As operatörü is operatöründen farklı olarak kontrol işlemini dönüştürme işleminden önce değil sonra yapılmasını sağlar. As operatörü ile yapılan dönüştürme işleminde doğru olmayan bir dönüşüm yapıldıysa hata üretilmez ancak değişken null değerini alır.

DerivedType derivedObj = new DerivedType();
BaseType baseObj = derivedObj as BaseType;
if(baseObj != null){

}

GetType ve typeof

.NET içinde herhangi bir veri tipi ile işlem yapmak için kullanılabilecek Type isimli sınıf bulunmaktadır.  Type sınıfından bir nesne elde etmek için ise başlıca iki yöntem vardır: GetType metodu ve typeof operatörü.

GetType metodu .NET’de her yapının doğrudan ya da dolaylı olarak türediği object sınıfı içinde tanımlanmış ve dolayısıyla her yapıya miras olarak aktarılmış bir metodtur. typeof operatörü ise parametre olarak aldığı tür adından türe ilişkin ilgili Type nesnesini oluşturur. Aradaki en büyük fark GetType nesneler üzerinde çalışırken, typeof sınıflar üzerinde çalışır.

MyClass c = new MyClass();

Type t1 = c.GetType();
Type t2 = typeof(MyClass);

Console.WriteLine(t1 == t2);

Int32.Parse

String tipindeki bir değişkeni int tipine dönüştürmek için kullanılan static  Int32.Parse metodunun 3 adet Exception’ı bulunur. Bunlar ArgumentNullException, FormatException ve OverflowException‘dır.

  • ArgumentNullException: Giriş değeri null olduğu zaman gerçekleşir.
  • FormatException: Giriş değeri doğru formatta olmadığı zaman gerçekleşir. Örneğin; alfanümerik bir değer gibi.
  • OverflowException: Giriş değeri Int32 sınırlarını aştığında gerçekleşir.
string metnim1 = null;
string metnim2 = "123.456";
string metnim3 = "12345678910111213141516";
string metnim4 = "123456";
int sonuc;

sonuc = Int32.Parse(metnim1); // sonuc = ArgumentNullException
sonuc = Int32.Parse(metnim2); // sonuc = FormatException
sonuc = Int32.Parse(metnim3); // sonuc = OverflowException
sonuc = Int32.Parse(metnim4); // sonuc = 123456

Convert.ToInt32

Convert.ToInt32 metodunun Int32.Parse’tan en önemli farkı, yalnızca string verileri Int32 türüne çevirmek değil, bunların dışındaki veri tiplerini de çevirebiliyor olması geliyor.

İkinci önemli fark ise Int32.Parse’ın aksine 2 exception’a sahip olması. Bunlar FormatException ve OverflowException‘dır. Convert.ToInt32 giriş verisinin null olması durumunda hata fırlatmak yerine geriye 0 değeri döndürür.

string metnim1 = null;
string metnim2 = "123.456";
string metnim3 = "12345678910111213141516";
string metnim4 = "123456";
int sonuc;

sonuc = Convert.ToInt32(metnim1); // sonuc = 0
sonuc = Convert.ToInt32(metnim2); // sonuc = FormatException
sonuc = Convert.ToInt32(metnim3); // sonuc = OverflowException
sonuc = Convert.ToInt32(metnim4); // sonuc = 123456

Int32.TryParse

Verilen string değer int tipine dönüştürülebiliyorsa geriye true değeri dönülerek işlem gerçekleştirilir. Aksi halde hata fırlatılmaz sonuç olarak 0 üretilir ve geriye false değer dönülür. Bu sebeple riskleri en aza indirdiğinden diğer dönüştürme metodlarına göre daha avantajlıdır.

string metnim1 = null;
string metnim2 = "123.456";
string metnim3 = "12345678910111213141516";
string metnim4 = "123456";
int sonuc;

bool durum = Int32.TryParse(metnim1, out sonuc); // sonuc = 0, durum = false
bool durum = Int32.TryParse(metnim2, out sonuc); // sonuc = 0, durum = false
bool durum = Int32.TryParse(metnim3, out sonuc); // sonuc = 0, durum = false
bool durum = Int32.TryParse(metnim4, out sonuc); // sonuc = 123456, durum = true

Tip Dönüştürme Kuralları

  1. Tamsayı türlerinden tamsayı türlerine tür dönüştürme operatörü ile dönüşüm yapılırken gerçekleşecek olay, checked ya da uncheckeddurumda olup olmamaya göre değişir.
    1. Eğer checked durum içerisinde bulunuluyorsa, programın çalışma zamanı sırasında kontrol yapılır. Dönüştürülecek türdeki değer, dönüştürmenin yapıldığı türün sınırları içerisinde değilse, System.OverflowException türünden hata fırlatılır.
    2. Eğer unchecked durum içerinde bulunuluyorsa, sayınının yüksek anlamlı bitleri atılacak biçimde dönüştürme yapılır. Eğer, büyük işaretli türden küçük işaretsiz türe dönüştürme söz konusuysa, yüksek anlamlı bitler atıldıktan sonra kalan kısım işaretli olarak yorumlanır. Eğer küçük işaretli türden büyük işaretsiz türe dönüştürme yapılıyorsa, büyük ürün yüksek anlamlı bitleri işaret bitiyle doldurulur ve elde edilen değer işaretsiz olarak yorumlanır.
  2. decimal türden diğer tamsayı türlerine dönüştürme yaparken,sayının noktadan sonraki kısmı atılır. Elde edilen tam kısım, hedef türün sınırları içerisine sığmıyorsa, ister checked isterse unchecked durumda olunsun System.OverflowException oluşur.
  3. float ya da double türünden tamsayı türlerine operatör ile yapılan dönüştürmede, oluşacak durum checked ya da uncheckeddurumunda olmaya göre değişir.
    1. Eğer checked durumda bulunuluyorsa, noktadan sonraki kısım atıldıktan sonra oluşan değer, hedef türün sınırları içerisinde kalıyorsa işlem başarı ile yürütülür. Fakat oktalı kısım atıldıktan sonra oluşan değer hedef türün sınırları içerisine sığmıyorsa System.OverflowException oluşur.
    2. Eğer unchecked durumda bulunuluyorsa, ve noktadan sonraki kısım atıldıktan sonra hedef türün sınırları içerisinde kalınıyorsa problem oluşmaz. Fakat eğer oluşan deeğr hedef türün sınırları içerisinde kalmıyorsa, dönüştürmeden hangi değerin elde edileceği belirsiz (unspecified) bırakılmıştır.
  4. double türden float türüne dönüştürme yapıldığında hata, mantis kısmında ya da magnitute kısmında oluşabilir. Eğer mantis kısmında bir hata oluyorsa duyarlılık en yakın float duyarlılıkla ifade edilir. Eğer magnitute hatası oluşuyorsa dönüştürmeden duruma göre pozitif ya da negatif sonsuz elde edilir.
  5. float ve double türden decimal türüne yapılan dönüştürmelerde eğer bir magnitute hatası söz klonusu ise System.OverflowException oluşur, eğer mantis hatası söz konusu ise decimal türüne en uygun ifade dönüştürme sonucu elde edilir.
  6. decimal türden float ve double türüne dönüştürme yapıldığında sayı, en yakın float ya da double sayı ile temsil edilir. Fakat eğer bir magnitute hatası söz konusu olursa System.OverflowException oluşur.

Rubik Küp

Rubik Küp ya da Türkiye’deki adı ile Zeka Küpü sanıyorum ki herkesin hayatında en az bir kez eline aldığı bir bulmacadır. İlkokul yıllarında çözmek için günlerce uğraştığımı hatırlıyorum. Tabi ki o zamanlar bu işi rastgele denemeler ile yapıyordum. Oysa her bulmacada olduğu gibi bu bulmacada da sonuca ulaşmak için çeşitli yöntemler var. Bu konudaki pek çok yöntemden en popüler olanı küpü seviye seviye çözen, biraz zaman alan ancak anlaması en kolay olan David Singmaster yönteminidir. Bununla birlikte hızlı çözüm teknikleri de bulunmaktadır. En yaygın hızlı küp çözüm yöntemi Jessica Fridrich tarafından geliştirilmiştir. Bilinen bir başka yöntem de Lars Petrus tarafından geliştirilmiştir. Rubik Küp ile ilgili derlediğim bilgilerle aşağıda ulaşabilirsiniz.

Tarihçe

Rubik Küp, geometri  ve  üç  boyutlu  şekillerle  ilgilenen Macar  heykeltıraş  ve  mimarlık  profesörü  Ernő  Rubik tarafından  1974  yılında  icat  edilmiştir. İlk oyuncak üretimi 1977’nin sonlarına doğru yapılmış  ve Budapeşte’de oyuncakçılara dağıtılmıştır. 1980 yılında David Singmaster tarafından Notes on Rubik’s Magic Cube  (Rubik Sihirli Küpü Üzerine Notlar) adlı kitapta sonradan oldukça popüler olan çözüm yöntemi yayımlanmıştır. 1981’de İngiltere’den on iki yaşındaki Patrick Bossert “You Can Do the Cube” (Küpü Siz de Yapabilirsiniz) adındaki kendi çözüm kitabını yayımlamış ve bu kitap on yedi baskıyla dünya üzerinde 1,5 milyon adet satılarak hem The Times’ın hem de The New York Times’ın en çok satan kitaplar listesine girmiştir.

1980’den 1982’ye kadar yüz milyonun üzerinde satılan Rubik Küp bu güne kadar başlıca dört şekilde piyasaya sürülmüştür:

  • 2×2×2′lik Pocket Cube (Cep Küpü),
  • 3×3×3′lük standart küp,
  • 4×4×4′lük Rubik’s Revenge (Rubik’in Öcü),
  • 5×5×5′lik Professor’s Cube (Profesör Küpü)

Çalışma Sistemi

Bulmaca yüzeyindeki yirmi altı küpçükten oluşur. Ancak her yüzün orta küpçüğü aslında merkez mekanizmaya bağlı kare bir yüzeyden ibarettir. Bu mekanizma diğer parçaların girebileceği ve hareket edebileceği temeli oluşturur. Yani küp aslında kesişen üç eksende altı orta kareyi tutan bir merkez parça ve bu merkez parçanın üzerine takılan ve üzerinde dönebilen yirmi küçük plastik parçadan oluşmaktadır.

İki tarafında farklı renk olan on iki kenar parça ve üç tarafında farklı renk olan sekiz köşe parça vardır. Her parçanın kendine özgü bir renk kombinasyonu vardır ama tüm olası kombinasyonlar mevcut değildir. Örneğin eğer beyaz ve sarı renkler karşıt yüzlerde ise hem beyaz hem de sarı renk içeren köşe parça yoktur. Bu küpçüklerin birbirlerine olan görece konumlarını değiştirmek için Küpün dış üçte bir bölümünü 90°, 180° ya da 270° çevirmek yeterli olur. Ancak bulmacanın çözülmüş hâlinde, renkli yüzlerin birbirlerine göre konumları sabittir.

Son zamanlardaki küplerde renkler şöyle dağılmıştır: Kırmızı karşısında turuncu, sarı karşısında beyaz ve yeşil karşısında mavi. Ancak sarı karşısında yeşil ve mavi karşısında beyaz olan farklı kombinasyonlara da rastlanır.

Permütasyonlar

Normal  (3x3x3)’lük  Rubik Küpü  (8!  ×  38−1)  ×  (12!  ×  212−1)/2  =  43.252.003.274.489.856.000  farklı konuma ya da matematik dili ile permütasyona sahiptir. Bu sayı (~4.3 × 1019) olarak da yazılabilir. Bu kadar fazla konumu olsa da küpler yirmi dokuz ya da daha az hareketle çözülebilir. Aslında Küpü oluşturan parçalar (8! × 38) × (12! × 212) = 519.024.039.293.878.272.000 kadar  farklı  konuma  getirilebilir  ama  bunun  yalnızca  on  ikide  biri  (1/12)  ulaşılabilir konumdur. Çünkü  tek bir kenarı değiştirebilecek ya da  tek bir köşeyi döndürebilecek hareket  sırası mümkün değildir. Bu nedenle ancak küpü söküp tekrar birleştirerek ulaşılabilecek on iki olası konum kümesinden ya da “evren”inden sözedilebilir.

Hareket Gösterim Sistemi

3×3×3  ‘lük Rubik Küpü  çözüm kitapçıklarının  çoğu David Singmaster  tarafından geliştirilen gösterim sistemini kullanarak hareket algoritmalarını tanımlar. Bu sisteme genel olarak “Küp gösterimi” ya da “Singmaster gösterimi” denir. Göreceli olan tanımlama nedeniyle herhangi bir küp için kullanılabilir.

David Singmaster Çözüm Yöntemi

  1. Bir yüzey seçilip artı yapılır ve bu artıların yan taraflara bakan uzantılar yapılır.
  2. Seçilen yüzeyde artıdan kalan kısımlar yani köşeler yapılır.
  3. Seçilen yüzey üstte kalacak şekilde orta sıra yapılır.
  4. Seçilen yüzey alta getirilerek başta altta kalan yüzeyde artı yapılır.
  5. Oluşan artının yan yüzlere bakan uzantıları yapılır.
  6. Geriye kalan köşelerde yeri yanlış olan köşeler doğru yere getirilir.
  7. Doğru yere getirilen köşeler doğru şekilde olması için yerinde döndürülür.

1. Katman Çözümü

a. Üst yüzeyde merkez renk için (+) oluşturmak

  • En alt katmanın ortasındaki karelerde üst yüzey merkez rengini ara.
  • Eğer yoksa ikinci katmandan aşağı taşı.
    [ Rx + Ax + R ]
  • İkili rengi yan yüzey merkez rengine taşı ve alt ön yüzeyi yukarı çevir.
  • Parçayı doğru yerine aldıktan sonra renkler yerinde değilse eşleştir.
    [ Ox + U+ Lx + Ux ]
  • Üst yüzeyde (+), ikinci katmanın merkezindeki renklerle, 1.Katmanın ortasındaki renkler eşleşene kadar işleme devam et.

b. Üst yüzeyin köşelerini yerleştirmek:

  • Üst yüzeyi sabit tutarak alt ve üst katmanın köşelerinde üst yüzeyin merkez rengini ara.
  • Üçlü renk uyumuna uygun köşeyi Alt katmanın sağ alt köşesine taşı.
  • Yüzeyleri Üst-Ön-Sağ olacak şekilde tutarak sağ alt köşedeki parçayı renkleriyle beraber uyumlu olacak şekilde, sağ üst köşeye yerleştir.
    [ Rx+ Ax + R + A ]

İşlem sona erince 1. Katmanı alta getir.

2. Katman Çözümü

  • İçinde üst merkez rengi olmayan üst orta kareleri yan yüzlerdeki merkezdeki rengin olduğu yüzeye taşı.
  • Üstte kalan rengi kendine uyumlu sağ yada sol yüzeye taşı.
    Sağa taşıma: [ U + R + Ux + Rx + Ux +Ox +U+ O ]
    Sola taşıma: [ Ux + Lx + U + L + U + O + Ux + Ox]
  • Eğer uyumlu 2’li renk ikinci katmanda ise yukarı taşımak için, sağda ise Sağa taşıma, solda ise Sola taşıma formülüyle, yukarı taşı.
  • Alttaki ikinci katman tamamlanana kadar işleme devam et.

3. Katman Çözümü

a.  Üst merkez renk için (+) oluşturmak:

  • [ O + R + U + Rx + Ux + Ox ]
  • ‘doğru şekli’ oluşursa ön yüze paralel tutarak (+) oluşuncaya kadar işleme devam et.

b.  Üst katmanın yan yüzey ortasındaki renkleri Merkez renklerle uyumlu hale getirmek:

  • Merkez renklerle uyumlu yüzeyleri Sağ ve Arka tarafa getir. Eğer uyumlu iki yüzey yoksa aynı Formülü kullanarak Uyumlu yüzeyleri elde edilebilir.
    [ R + U + Rx + U + R + U + U + Rx ]

c.  Köşeleri yerleştirmek:

  • Üst-Ön-Sağ yüzeylerle uyumlu köşeleri Sağ üst köşeye al.
    [ U + R + Ux + Lx + U+ Rx +Ux+L ]
  • Her köşe için alt iki katmanın yerini sabit tutup renkleri uyumlu hale getirin.
    [ Rx + Ax + R + A ]

Filmlerdeki En İyi İntihar Sahneleri

Geçtiğimiz günlerde okumuş olduğum bir yazıda en iyi başlangıç sahnesine sahip filmler listeleniyordu ki bu filmlerin arasında yer alan Wristcutters: A Love Story bana göre aynı zamanda en iyi intihar sahnelerinden birine sahiptir. İntihar pek hoş bir eylem olmasa da gerek çekim tekniği, gerek se uygulanış biçimi ile filmlerde insanı en çok etkileyen ve akılda en çok yer eden sahne olmuştur. Özellikle de sahneye arka fonda çalan harika bir şarkı eşlik ediyorsa unutulması neredeyse imkansız hale gelir. Buradan haraketle filmlerdeki en iyi intihar sahneleri nelerdir diye düşündüm ve aşağıdaki 5 maddelik listeyi hazırladım.

1. Arizona Dream

Yönetmenliğini Emir Kustarica’nın yaptığı 1993 yapımı filmin en etkileyici sahnelerinden biri Grace (Lili Taylor)’in intihar ettiği sahnedir. Grace’in giyinip süslenerek intihar için hazırlandığı anda arka fonda Goran Bregoviç imzalı Death adlı şarkı başlar ki bu şarkı bence bir intihar sahnesi için olabilecek en iyi şarkılardan biridir. Elinde silah evden dışarı çıkan Grace yağan yağmur altında ilerlemeye başlar. Onu durdurmak için gelen Axel (Johnny Deep) ve Elaine (Faye Dunaway) önünde müziğin zirve yaptığı anda tetiği çeker ve o esnada yakınlardaki bir ağaca yıldırım düşer. Death isimli bu parçanın farklı bir yorumu için Braagas – Hajde Jano bakabilirsiniz. http://www.imdb.com/title/tt0106307/

Bu yazının devamını oku

Bozcaada Tatili

30 Ağustos Zafer Bayramı’nın Perşembe gününe denk gelmesini fırsat bilip Cuma günü için de izin alarak 3 arkadaş 4 günlüğüne Bozcaada Tatili yapmaya karar verdik. Bu güne kadar giden arkadaşların öve öve bitiremediği Bozcaada’yı nihayet görecektik.

Ulaşım

Bozcaada’ya ulaşım iki farklı şekilde Gestaş tarafından sağlanıyor. Birincisi, adanın hemen karşısında yer alan Geyikli‘den kalkan ve yaklaşık yarım saat süren arabalı vapurlar, diğeri ise Çanakkale merkezden kalkan ve yaklaşık 1 saat süren deniz otobüsleridir. Biz İstanbul’dan 00:30 hareket saati ile yaklaşık 7 saat süren otobüs yolculuğunun ardından Geyikli’ye ulaştık ve 08:00 seferi ile Bozcaada’ya geçiş yaptık. Geyikli’den alacağınız vapur bileti çift yönlü olup aynı bileti istediğiniz zaman Bozcaada’dan geri dönmek için kullanabiliyorsunuz. Yayaların vapura binişlerinde herhangi bir sıkıntı yok; ancak kısıtlı kapasiteden dolayı araçlar için yoğunluk oluşabiliyor. Özellikle Bozcaada’dan dönüşte sıra için çok uzun araç kuyruklarının oluştuğunu gördük.

İlk İzlenimler

Vapura binmeden önce dikkatimi çeken bir levhada Bozcaada Belediyesi tarafından adada naylon poşet kullanımının çevreye zarar verdiği için yasaklandığı yazıyordu. Nitekim adada yaptığınız alışverişlerde naylon poşet yerine kağıt torbaların kullanıldığını hemen farkediyorsunuz. Bence son derece yerinde olan bu uygulama keşke ülkemizin diğer noktalarında da uygulansa. Vapur ile adaya ilerlerken uzaktan ağacın olmadığı, çorak bir alan üzerinde az sayıda evin kümelendiği ufak bir şehir görüyorsunuz ki bu sizde önce hayal kırıklığı yaratır gibi oluyor ancak adaya yaklaştıkça bir yanda Bozcaada Kalesi ve yanındaki marinada yer alan yatlar, diğer tarafta balık lokantaları ve önünde sıralanmış kayıklar neşenizi yerine getiriyor. Nitekim adaya ayak basıp iki katlı rengarenk cumbalı evlerin sıralandığı dar sokaklara daldığınızda adeta mest oluyorsunuz. Adaya indiğimizde bizi şiddetli sayılabilecek bir rüzgar karşıladı. Önce tatilimizin rüzgar nedeniyle kötü geçeceğini düşünerek korksak da sonradan adanın sürekli rüzgarlı olduğunu ve bu durumun bir sıkıntı yaratmayacağını öğrendik.

Konaklama

Bozcaada’da konaklamak için çok sayıda yer bulunmakta. Bunların çoğunu şehir merkezinde hemen hemen her sokakta yer alan küçük pansiyonlar oluşturuyor. Yine şehir merkezinde yer alan orta büyüklükteki otellerin yanında şehir dışında yer alan tatil siteleri de mevcut. Biz arkadaş tavsiyesi ile Bozcaada Kalesi’nin arkasında kalan ve sahile 5 dk yürüme mesafesinde olan Ege Otel‘i tercih ettik.  Eskiden Rum İlkokulu olan otelde toplam 24 oda var ve her odaya bir şairin ismi verilerek oda kapısında şairin adı ile birlikte kendisine ait bir şiirden alıntı yazılmış. (Bizim kaldığımız 6 numaralı odanın adı Ahmet Telli olarak verilmiş.) Otelin diğer pek çok noktasında da şiirlere rastlamak mümkün. Bizim hem konseptinden hem de konforundan son derece memnun kaldığımız otelde fiyatlara kahvaltı da dahil.

Yiyecek

Söz konusu yer bir ada olunca ister istemez karşınıza deniz ürünleri çıkıyor. Gerek sahil kesiminde gerekse ara sokaklarda çok sayıda balık restoranı mevcut. Ne yazık ki fiyatlar biraz pahalı ve pek çok yerde kredi kartı geçerli değil. Biz fiyat olarak biraz daha hesaplı bulduğumuz Limon adlı restoranı seçtik ve Bozcaada şarabı eşliğinde balığımızı afiyetle yedik. Deniz ürünleri dışında yemek yiyebileceğiniz az sayıdaki alternatif yerlerden biri de Sadece Köfteci adlı restoran. Adından da anlaşılacağı üzere sadece köfte siparişi verebileceğiniz bu restorana tavsiye üzerine gittik ve çok başarılı bulduk. Adada dikkat çeken şeylerden biri de pek çok insanın elinde gördüğünüz Çiçek Pastanesi’ne ait paketler. Bunun nedeni Bozcaada’nın geleneksel lezzetlerinden biri olan damla sakızlı, bademli kurabiyelerin burada satılıyor olması. Yiyecek olarak önerilebilecek son şey ise adada yetişen ve şarap yapımında da kullanılan üzümler. Çeşitli noktalarda ada halkı tarafından üzüm satışı yapılıyor ve araçları ile gelmiş olanlar kasalarca üzüm alırken bizim gibi araçsız olanlar da birkaç kilo alıp tadına bakıyor.

Şarap

Bozcaada deyince akla ilk olarak elbette şarap geliyor. Adanın geneline yayılmış bulunan bağlardan toplanan üzümler ile üretimi yapılan şaraplar Corvus, Talay, Çamlıbağ, Ataol ve Gülerada gibi üretici firmaların açmış olduğu tadım ve satış noktalarında gelen ziyaretçilerin beğenisine sunuluyor. En çok tercih edilen üretici firmanın ise Çamlıbağ olduğunu gözlemledik. Pek çok çeşidini tatma fırsatı bulduğum şaraplardan en çok hoşuma gidenler adaya özgü sarı üzümlerden üretilen vasilaki sek beyaz şarap ile yine adaya özgü kırmızı üzümlerden üretilen kuntra sek kırmızı şarap oldu. Bunların yanında kuntra üzümlerinden elde edilen mistel adındaki şarap likörünü de son derece güzel buldum.

Aktiviteler

Dört tarafı denizlerle çevrili bir yerde özellikle de yaz aylarında yapılacak şeylerin başında şüphesiz denize girmek gelir. Bozcaada şehir merkezi adanın Anadolu’ya bakan doğu kesiminde yer aldığı ve rüzgara karşı olduğu için bu bölgede denize girmek pek mümkün değil. Adanın güneybatı kesimlerinde ise denize girmek için müsait pek çok bölge bulunmakta. Bunlardan Ayazma Plajı olarak adlandırılan ve en yoğun olarak tercih edilen bölgeye şehir merkezinden kalkan minibüsler ile gitmek mümkün. Ayazma Plajı sanıyorum hayatınızda girebileceğiniz en soğuk denize sahip plajdır. Soğukluk nedeniyle girmesi ne kadar zor ise girdikten sonra alacağınız keyif ile çıkması da bir o kadar zor olacaktır. Plajda şemsiye ve şezlong kiralamak mümkün ancak öğleye doğru yer sıkıntısı yaşandığından sabah gitmekte fayfa var. Ayazma Plajı yanında Sulubahçe ve Habbele Plajları var ancak biz Ayazma Plajı’nı yeterli bulduğumuz için bunlara gitmedik.  Araçları olanlar bu plajların dışında denize girilebilecekleri daha sakin bölgeleri de tercih edebillirler. Akvaryum Koyu bunların başında gelmektedir.

Şehir merkezinden her gün saat 11:00 hareketle tekne turu bulunmakta. Akşam 18:00’e kadar süren turda ada etrafını dolaşmak ve araçla gidilemeyecek olan koylarda denize girmek mümkün. Biz biraz geç farkına vardığımız için bu tura ne yazık ki katılamadık.

Bozcaada’nın simgelerinden biri haline gelen Bozcaada Kalesi‘ni gezmek mümkün. Kimler tarafından ne zaman inşa edildiği belli olmayan kale zaman içinde pek çok kez el değiştirmiş ve son olarak Osmanlı egemenliğinde günümüze kadar ulaşmış. Kalenin en tepesine çıkıp şehri ve denizi yukarıdan izleyebilir ve bol bol fotoğraf çektirebilirsiniz.

Bozcaada’da yapılacak en güzel aktivitelerden biri de adanın batı noktasında şarap eşliğinde gün batımını seyretmek. Bunun için akşam 18 :00’de şehir merkezinden kalkan minibüsler ile ada etrafını dolaşarak rüzgar güllerinin de bulunduğu noktaya gitmek mümkün. Bölgede Bozcaada’nın bağlı olduğu Çanakkale’nin plaka numarası olan 17 tane rüzgar gülü bulunmakta. Bu bölgede ayrıca adada bulunan iki fenerden biri olan Polente Feneri de yer almakta ancak rüzgar gülleri gibi fenerin yanına gitmek de güvenlik nedeniyle yasak. Yine de bulunduğunuz noktada bir yandan şarabınızı yudumlarken bir yandan da eşsiz günbatımını izleyebilirsiniz.

Yapılması Gerekenler

  • Şehrin dar sokaklarını gezmek
  • Bozcaada kalesine çıkmak
  • Sahil kenarında şarap eşliğinde balık yemek
  • Damla sakızlı bademli kurabiyelerden almak
  • Şaraplık üzümlerden tatmak
  • Meydanda yer alan çay bahçelerinde vakit geçirmek
  • Ayazma Plajı’nda denize girmek
  • Tekne turuna katılmak
  • Şarap eşliğinde günbatımını seyretmek