About ibasoglu

Posts by ibasoglu:

Enlem ve Boylam Koordinatlarının x ve y Pixel Dönüşümü ve Harita Ölçeklendirmesi

Selamün Aleyküm Arkadaşlar,

Koordinatları verilmiş bir çokgenin çizimi nasıl yapılır bunu inceleyeceğiz.

polygon

 

Çokgen Enlem ve Boylam

Index Boylam (Longitude) Enlem (Latitude)
0 -142.734375 -44.087585
1 -129.726563 -40.313043
2 -117.246094 -45.460131
3 -110.742188 -53.225768
4 -117.070313 -59.800634
5 -132.011719 -64.168107
6 -148.535156 -59.888937
7 -154.335938 -53.014783
8 -142.734375 -44.087585

 

Tablodan enlem ve boylam için maksimum ve minimum değerlerini bulalım.

Boylam max: -110.742188

Boylam min: -154.335938

Enlem max: -40.313043

Enlem min: -64.168107

cizim5

Bu enlem ve boylam değerlerinin x ve y koordinatlarına çevirmemiz gerekir. Bunun için Merkator Projeksiyonundan (Mercator Projection) yararlanırız. Bu projeksiyon bize dünyanın bir dikdörtgen olarak harita açılımını verir. İlk önce enlem ve boylam radyan cinsine çevrilir.

C#

Merkator Projeksiyonuna çevirdiğimiz zaman:

 

maxmin

Enlem ve boylamları x ve y koordinatlara çevirelim:

Index X Y
0 -2.49118471 -0.859029233
1 -2.26415563 -0.770058334
2 -2.04633045 -0.892776847
3 -1.93281579 -1.10139823
4 -2.04326248 -1.31001961
5 -2.30403924 -1.47262156
6 -2.59242749 -1.31308758
7 -2.69367027 -1.09526229
8  -2.49118471 -0.859029233

 

Çizim Alanımız:

cizim

Çizim alanımızla çokgenin boyutlarının oranını bulmamız gerekir. İlk önce çizim alanımızdan 10px lik boşluk bırakalım. Genişlikten sağ ve sol olmak üzere 10px boşluk bıraktığımızda genişlik = genişlik – 20. Aynı şekilde yükseklik = yükseklik – 20. Yeni çizim alanımız 562×353

Şimdi ise Çokgenin x ve y deki boyutunu bulalım.

Xboyut = Xmax – Xmin

Yboyut = Ymax – Xmin

cizim5

genislikoran = 562 / Xboyut

yukseklikoran = 353 / Yboyut

Hangi oran daha düşükse o oran bizim genel oranımız olur.

genislikoran = 738.6432

yukseklikoran = 502.4459

geneloran = 502.4459

Genişlik ve Yükseklik boşluklarını bulalım.

Yukseklikbosluk = (373 – (Yboyut * geneloran)) / 2

Genislikbosluk = (582 – (Xboyut * geneloran)) / 2


cizim1

X ve Y koordinatlarımızı çizim için başlangıç durumuna getirelim.

X = X – Xmin

Y = Y – Ymin

Index X – Xmin Y – Ymin
0 0.202485561 0.6135923
1 0.429514647 0.7025632/td>
2 0.6473398 0.5798447
3 0.7608545 0.37122333
4 0.6504078 0.162601948
5 0.389631033 0.0
6 0.101242781 0.159533978
7 0.0 0.377359271
8 0.202485561 0.6135923

 

X ve Y koordinatlarını çizim alanına göre ölçekleyelim.

X = Genislikbosluk + (X * geneloran)

Y koordinatı 0,0 dan başlayacağı için tersine çevirelim.

Y = 373 – Yukseklikbosluk – (Y * geneloran)

Index X Y
0 201.593933 54.703064
1 315.663757 10.0
2 425.109131 71.65941
3 482.1441 176.480362
4 426.6506 281.301331
5 295.62442 363.0
6 150.724915 282.8428
7 99.855896 173.397385
8 201.593933 54.703064

 

cizim5

C#


 

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

MIPS Assembly Giriş

 

MIPS Simulator

İndir

Not: Java JDK yüklemeyi unutmayın.

Registers (Kaydediciler)

Register
No
Alternatif
Adı
Açıklama
0
zero
0 değerini tutar.
1
$at
(assembler geçicisi) assembler tarafından rezerve edilmiştir.
2-3
$v0 – $v1
Fonksiyon sonuçları (function results) için kullanılır. Geçici kaydediciler (Temporary Registers) olarak kullanılabilir.
4-7
$a0 – $a3
Altprogram (subroutine) için ilk dört parametre (arguments) için kullanılır.
Yordam çağrıları (procedure calls) karşısında korunmamıştır.
8-15
$t0 – $t7
Serbestçe kullanılan kaydedicilerdir.
Yordam çağrıları (procedure calls) karşısında korunmamıştır.
16-23
$s0 – $s7
Serbestçe kullanılan kaydedicilerdir.
Yordam çağrıları (procedure calls) karşısında korunmuştur.
24-25
$t8 – $t9
Serbestçe kullanılan kaydedicilerdir.
Bunlar, $t0 – $t7 üzerine ek olarak eklenmiştir.
Yordam çağrıları (procedure calls) karşısında korunmamıştır.
26-27
$k0 – $k1
interrupt/trap handler (yakalama işleyicisi) tarafından kullanılmak üzere rezerve edilmiştir.
28
$gp
global pointer.
29
$sp
stack pointer
Stack işleminde son adresi gösterir.
30
$fp
frame pointer
Yordam çağrıları (procedure calls) karşısında korunmuştur.
31
$ra
Yordamlarda (procedure) geri dönüş adresini tutar.
$f0 – $f31
float veya double veri türünü saklamak için kullanılan kaydedicilerdir.

 

li Komutu

Bir register’a değer ataması yapar.

li, R, deger

li $t0, 14

la Komutu

Bir register’a adres ataması yapar.

la, R, adres

syscall

$v0 daki koda göre sys alt programı çalıştırır.

 

C# using Kullanımı

Merhaba Arkadaşlar;

Uzun bir aradan sonra blogumda yazmaya başlıyorum. Bugün C# using kullanımına, nasıl kullanıldığına ve niçin kullanıldığına bir göz atalım.

C# ‘ta using kullanımı; using directive ve using statement olarak ikiye ayrılır.

USING DIRECTIVE (USING BİLDİRİMİ)

Namespace’leri dahil ettiğimiz ismini yazmadan içinde bulunan sınıfları (class) kullandığımız yapıdır. Namespace dışında en üstte şu şekilde tanımlanır: using namespaceadi;

List sınıfı (class) System.Collections.Generic isim uzayının (namespace) içinde yer alır. using ile dahil etmediğimiz için namespace adını da yazarak çağırmak durumunda kaldık.

Burada ise System.Collections.Generic isim uzayını dahil ettiğimizden dolayı sadece içinde bulunan List sınıfını çağırarak kullandık.

Aynı zamanda using bildirimi ile dahil ettiğimiz namespace ve namespace içindeki sınıfları adlandırmak içinde kullanılır.

Burada System.Collections.Generic.List<int> sınıfını Liste olarak adlandırdık ve bu yüzden o isimle kullandık.

USING STATEMENT (USING İFADESİ)

Bir sınıf kullanıldıktan sonra, çöp toplayıcından (Garbage Collector) önce; IDisposable arayüzünün (interface) Dispose metodunun çalıştırılarak hafızadan (memory) silinmesi işlemidir.

Kullanımı bu şekildedir. Sınıf {} içinde kullanılmalıdır.

Bu şekilde kullanımı tavsiye edilmez.

Birden fazla değişkenle kullanabilirsiniz.

using ifadesi aslında şu kodun kısa halidir.

Not: using ifadesinin kullanıldığı sınıflar IDisposable arayüzü (interface) içermek zorundadır.

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

HDD MBR Structure (Yapısı)

MBR (Master Boot Record)

MBR harddiskin ilk dilimidir(sector). Tabloların bilgilerini ve önyükleme işletim sistemlerinin tanımlandığı bölümdür. Boyutu 512 Byte’dır. Byte’lar Little Endian olarak saklanır.

SnapCrab_NoName_2015-2-18_22-21-35_No-00

1) Bootstrap Code Area (Önyükleme Kod Alanı)

Bilgisayar açıldığı zaman; BIOS’un okuyup çalıştıracağı kodları barındırır. Bu kod BIOS tarafından çalıştırıldıktan sonra işletim sistemine giriş yapılır. Boyutu 446 Byte’dır.

2) Primary Partition Tables (Birincil Bölüm Tabloları)

Birincil bölüm bilgilerinin tutulduğu bölgedir. Minimum 1 birincil bölüm, maksimum 4 birincil bölüm tutulabilir. Boyutu 64 Byte’dır.

SnapCrab_NoName_2015-2-18_22-21-53_No-00

a) Partition Entry (Bölüm Kaydı)

Bölümün durumunu, başlangıç adresini, toplam sector sayısını ve bölümün dosya sistemini tutar. Boyutu 16 Byte’dır.

SnapCrab_NoName_2015-2-18_21-15-28_No-00

Partition Type ID listesi için tıklayınız.

3) Boot Signature

MBR imza byte’larıdır.

SnapCrab_NoName_2015-2-18_22-13-19_No-00

 

SnapCrab_NoName_2015-2-18_22-39-51_No-00
SnapCrab_NoName_2015-2-18_22-55-12_No-00

 

 

 

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

Regular Expressions (Düzenli İfadeler)

Adından da anlaşıldığı üzere bir metnin içindeki verinin, belli kurallara göre değiştirilmesi veya bulunması işlemidir.

Test için http://www.regexr.com/ adresini kullanabilirsiniz.

Dot Matches (Nokta Eşleşmeleri)

. herhangi bir karakteri temsil eder. /./ ifadesini uyguladığımızda metindeki tüm veriyi seçer.

SnapCrab_No-0006

Herhangi bir veriyi veya verileri seçmek istiyorsak eğer

SnapCrab_No-0007

Optional (?)

Bir karakteri veya karakterleri isteğe bağlı olarak var veya yok sayar.

Örneğin bir metinde “color” kelimesini aradığımızda aynı zamanda, aynı manada olan “colour” kelimesini de aramamız gerekir.  u karakterinin isteğe bağlı olması gerekir.

SnapCrab_No-0008

 

Birden fazla karakter isteğe bağlı olduğu zaman ()?  parantezin içine yazılır.

SnapCrab_No-0009

Character Set [A-Za-z0-9]

Bize karakter tanım aralığı sunar. [0-9], [1-5], [a-z], [A-Z], [@_#], [İÜ] vs.

SnapCrab_No-0011

SnapCrab_No-0012SnapCrab_No-0013 SnapCrab_No-0014

 

Multiple * +

* karakterin veya karakterlerin hiç olmaması veya tekrarlanmasıdır. Örneğin e*

+ karakterin veya karakterlerin 1 defa olması veya tekrarlamasıdır. Örneğin e+

SnapCrab_No-0015 SnapCrab_No-0016

 

Quanfiers {}

Belli bir aralıkta karakterin veya karakterlerin devam etmesidir. Örnek e{1}, [a-z]{5} vs.

SnapCrab_No-0021 SnapCrab_No-0022 SnapCrab_No-0023

Alternations |

Birkaç hecenin (karakterlerin) veya işlemine tabi tutulmasıdır.

SnapCrab_No-0017SnapCrab_No-0018

 

Anchors & Flags

^ Satır başını temsil eder.

$ Satır sonunu temsil eder.

Flags

i: ignore case (küçük-büyük harf duyarsız)

g: global

m: multiline (birden çok satır)

SnapCrab_No-0024

Groups ()

Grupların yakalanması (bulunması) işlemidir.

SnapCrab_No-0019

 

1. parantez $1, 2. parantez $2 dir. Biz adresleri alacağımız için bu parantezleri iptal edip (?:) metnin tamamını parantez içine alırız.

SnapCrab_No-0020

 

PHP Kullanım

 

JavaScript Kullanım

 

Hayırlı günler, sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.