Programcılıkta isimlendirmenin önemi

7 Ağu

Bu blog yazıma konu olarak programcılıkta isimlendirmenin önemini seçtim ancak mesele aslında bir kitap yazdıracak kadar mühimdir. Hatta bu konuyu kitaplarına konu almış programcılar da mevcuttur.

Bilgisayar bilimine yıllarını vermiş kişilerden bu konunun aslında zorlayıcı bile olduğunu duyunca insan bir kez daha durup düşünüyor. Phil Karlton şu sözlerle isimlendirmenin zorluğundan bahsetmiştir: “There are only two hard things in Computer Science: cache invalidation and naming things”. Yani bilgisayar biliminde en zor iki şeyden biri isimlendirmelerdir.

Bilgisayar bilimine programlama branşı açısından baktığımızda mimari tarafında, kodlama sırasında ve veri tabanlarında yapılan isimlendirmeler, bir sistemin anlaşılabilir olması açısından çok önemlidir. Anlaşılabilirliğin sağlanması için programcılar olarak niyetimizi ortaya koyan isimlendirmeler yapmalıyız. Doğru isimler bulmak, iş modeline göre veya sistemin büyüklüğüne göre zorlaşabilir. Yazılım ve mimari genişledikçe verilen isimler birbirine benzemeye başlayabilir. Benzerliklerin artması ise kafa karışıklığına yol açar.

Doğru isimleri bulduğumuzda ise dikkat etmemiz gereken bir diğer husus, okunabilirlik kurallarına uymaktır. Yani yazdığımız isimler okunuş açısından gözü rahatsız etmemeli ve kısaltmalardan arındırılmış olmalıdır.

Oluşturulan sistemin her elemanına verilen isim özenle seçilmelidir. Sistemin elemanı bir mimari katman olabileceği gibi bir sınıfa ait bir üye de olabilir, bir veritabanı tablosu da olabilir.

Kendi tecrübelerim adına söyleyeyim, kodlama sırasında sınıflara veya sınıf üyelerine verdiğim isimler kafamda oturuncaya kadar onları birçok kez yazıp değiştirdiğim olur. İsmiyle özdeşleşmeyen nesnelere kafayı takarım desem hiç yanlış olmaz. Bu alışkanlığa nereden kapıldığımı da söyleyeyim, ta ki programlamada isimlendirme teamüllerini (Naming Conventions) okudum ve uygulamaya başladım, bu alışkanlık o gün bugündür benimle beraberdir. Aslında bu şikayet ettiğim değil sevindiğim bir durumdur. Alışkanlıklarım kodlama ile başladı, proje isimleri ile devam etti, veritabanı tablo isimleri derken dosya isimlerini bile özenle seçer hale geldim.

Programcılıkta isimlendirme meselesine gerçekten dikkat edilmesi gerekir. Çünkü isimlendirme, programcılıkta artık bir standart halini almıştır. İşin üstatları olarak bilinen birçok programcı buna dikkat ediyor. Önder yazılım firmaları ve programcıların oluşturduğu açık kaynak(open source) kodları açıp incelediğimizde bunu rahatlıkla görebiliriz. Amacının dışında bir isimlendirmenin olmadığını hemen fark edebiliriz. Düzenli ve sistemli bir çalışmanın isimlendirmelere de yansıdığını hemen anlayabiliriz. Yani isimlendirme kuralları düzenli, okunabilir ve anlaşılabilir sistemler için bir standart olmuştur.

Eğer standartlara uygun bir Framework, API v.s yazmak istiyorsak dikkat edeceğimiz noktalardan biri isimlendirmelerdir.

İlham kaynağım:
MSND Naming Conventions
Clean Code

XMLHttpRequest için Proxy Kullanımı

13 Haz

Günümüzde değişik web hizmetlerini(service) kullanıcılara açan internet uygulamaları arttıkça, haliyle bu sunulan hizmetleri alabilmek adına değişik yöntemler kullanılır. Örneğin sosyal ağların sunduğu servisler, hava durumu, haber veya blog servisleri tarafından sunulan bilgileri biz de alıp uygulamalarımızda kullanmak isteriz.

AJAX(Asynchronous Javascript and XML) tabanlı web uygulamaları yaygınlaştıkça, web sunucularına istek gönderip, sunucu tarafında yeniden oluşturulan HTML çıktılarını almak yerine var olan sayfaları hiç yenilemeden(refresh) sorgu gönderip cevabı mevcut sayfa üzerine dökme yoluna gidiliyor. İnternet tarayıcıları (web browser) üzerinden Javascript kodu ile sunuculara istek gönderip cevap almak mümkündür. Bu gibi istekleri(request) karşılamak üzere tarayıcılar tarafında bulunan XMLHttpRequest nesnesi devreye girmektedir.

XMLHttpRequest nesnesi ile uygulamamızın bulunduğu sunucu dışında bir sunucuya istek göndermek güvenlik açısından bazı kısıtlamalara takılmaktadır. Bu gibi sorunları aşmak için direk başka sunucuya (örneğin Yahoo servisine)istek göndermek yerine kendi sunucumuza bir proxy uygulaması oluşturup bu proxy üzerinden istekleri göndermek uygun olacaktır.

Neden Proxy Kullanılır?

Modern Web tarayıcıları, sunduğu geliştirici ve kullanıcı dostu eklentilerin yanı sıra güvenliği sağlamak açısından başarılıdırlar. XMLHttpRequest çağrıları içeren bağlantılarda web tarayıcılar bir güvenlik sınırlaması getirirler. Bu sınırlama ile bir script veya uygulamanın kendi geldiği sunucu haricinde bir sunucuya istek göndermesi engellenir. Aşağıdaki resimde web tarayıcı üzerinden, uygulamanın kendi web sunucusuna HTTP metodlarıyla(GET, POST, v.s) veya XMLHttpRequest ile istek göndermesinin mümkün olduğu gösterilmiştir.

XMLHttpRequest isteği
XMLHttpRequest isteği

Ancak yazdığınız bir script ile web tarayıcısı üzerinden başka bir sunucuya istek gönderecek olursanız (örneğin Yahoo web servislerine), tarayıcı aradaki bağlantıyı engeller. Aşağıdaki resimde bu durum gösterilmiştir.

XMLHttpRequest dış sunucu isteği
XMLHttpRequest dış sunucu isteği

Bu gibi durumlarda genellikle kullanılan çözüm, proxy kullanılmasıdır. Bir web servisine internet tarayıcısı üzerinden direk istek göndermek yerinde, kendi sunucunuzda bulunan bir proxy’ye isteği gönderirsiniz. Proxy, aldığı isteği ilgili web servisine göndererek aldığı cevabı internet tarayıcınızdaki client tabanlı uygulamanıza gönderir. Servis ile bağlantıyı kuran web sunucusu olduğundan internet tarayıcısı açısından artık bir sorun kalmamıştır.

XMLHttpRequest Proxy Kullanımı
XMLHttpRequest Proxy Kullanımı

Client tabanlı web uygulamaları olarak Javascript, Java Flex, Silverlight gibi uygulamaları düşünebilirsiniz. Bu tarz uygulamalar web tarayıcıları üzerinden çalışırlar. Web tarayıcılar üzerinden çalışan uygulamalardan Yahoo, Twitter gibi sitelere ait servislere ulaşmak için proxy kullanabilirsiniz.

Kaynak: http://developer.yahoo.com/javascript/howto-proxy.html

Yazılarıma Yapılan Backlink Amaçlı Yorumlar

22 Mar

Uzun süredir blog sayfamdaki makalelere gönderilen spam yorumları silmekle uğraşıyorum. Yorum gönderme formuna eklediğim doğrulama kodları da bir şekilde aşılıyor olmalı ki uyduruk yorumlar gelmeye devam ediyor. Bende sürekli bu tarz yorumları silmek zorunda kalıyorum. Aşağıdaki resimde bir aylık bir sürede sitemdeki makalelere gelen işe yaramaz yorumların sayısı 1761’dir.

Yorumlar
Yorumlar

Gelen yorumların çoğu kumar siteleri, alışveriş siteleri, ilaç siteleri, kredi veren sitelerin backlink içeriğiyle dolu. Bu eski bir SEO tekniğidir. Bu yorumların amacı web sitelerinde backlink yaratarak arama motorlarında üst sıralara çıkmak. Fakat Google gibi aramama motorları bu tarz girişimlere karşı her zaman hazırlıklı olduğundan sürekli sıralama algoritmalarını güncel tutarlar. Bu şeklide backlink alma teşebbüslerine karşılık ceza uygulamaları yaparlar. Örneğin wordpress, joomla v.s gibi hazır portallar bu tarz backlink girişimlerine karşılık yorumlardaki linkleri “nofollow” olarak işaretlemektedir. Bu da arama motorlarının bu linki backlink olarak dikkate almayacağı anlamına gelir.

Diğer taraftan bu kadar işe yaramaz yorumun yanında yazılarıma gayet güzel geri dönüşler alıyorum. Yorumlarını esirgemeyen okurlara teşekkürlerimi sunuyorum.

Bir sonraki yazıda görüşmek dileğiyle.

Git Push Error – Marge the remote changes

29 Kas

Github üzerinde repository oluştururken karşılaşabileceğiniz sorunlardan biri “Push” komutu kullanılırken alacağınız  hata mesajıdır.  Benim bu sorunu yaşamama sebep olan durum, Github üzerinde repository oluştururken “Initialize this repository with a README” seçeneğini işaretleyerek README dosyasının oluşturulması neticesinde uzak depoda(repository) oluşan değişikliklerdi.

Git Initialize

Bilgisayarım üzerinden local depo(repository) dosyalarımı “Push” komutu ile göndermeye çalıştığımda aşağıdaki hata ile karşılaştım.

Git Push Error

Bu hatanın sebebinin uzak depodaki(repository) değişiklikleri local depo üzerindekilerle birleştirmemek olduğunu “Merge the remote changes (e.g. ‘git pull’)” mesajından anlayabiliyoruz. Yani uzak depoda olan bitenden local depo haberdar değildir. Yukarıda belirttiğim gibi uzak depo oluşturulurken README dosyası da oluşturulmuştu.

Aslında takım halinde çalışılan bir projede çalıştığımızı varsayacak olursak, takım arkadaşımızın uzak depoya attığı projeji biz tarafımıza alıp değişiklikleri birleştirmeden depoya gönderemeyiz.

Bu gibi durumlarda uzak depodaki değişiklikleri çekmek için “Pull” komutunu kullanmalıyız. Bu durumda değişikliklerin local tarafa çekilmesi, birleştirme işlemini de gerektirecek çünkü local tarafta da bir değişklik olmuş olacak.

Uzak depodaki değişiklikleri çekmek için şu komutu kullanmalıyız:

git pull origin master

Git Pull Command

“Pull” komutunun ardından “Push” komutunun düzgün bir şekilde çalıştığını görmekteyiz. Çünkü “Pull” komutu uzak depodaki değişiklikleri çekerek local depo ile birleştirdi. Böylece sorunumuz çözülmüş oldu.

Tekrar görüşmek dileğiyle.

GIT Nedir? ve Windows için GIT

28 Kas

GIT bir versiyon kontrol sistemidir. Yazılımcılar için geliştirme sürecinde önemli bir yeri olan versiyonlama mekanizmasını otomatikleştirebilen bir sistemdir. GIT, kökeni Linux tabanlı bir topluluk olsa da Windows tarafındaki gönüllüler sayesinde Windows dünyasına da kazandırılmıştır. Windows için GIT geliştirmek amacıyla MSys/MinGW projeleri baz alınmıştır.

Git for Windows(MinGW) projesi temel düzeyde Git kullanıcılarına hitap ederken, msysGit projesi geliştiriciler, testçiler, bakım ve dağıtım ekibi tarafına hitap etmektedir.

Hem MinGW hem de msysGit projelerinin depolama yeri Web tabanlı GitHub platformudur.

Ben kendi projelerimi versiyonlamak için msysGit uygulamasını kullanıyorum. msysGit programına buradan ulaşabilirsiniz. Programı indirip kurmak gayet basit olduğu için kurulum anlatımı yapmadım.

Programın kullanım arayüzü olarak komut ve GUI destekli olmak üzere iki seçeneği bulunmaktadır.

Git grafiksel arayüzü (Git GUI) şu şekildedir:

Git GUI

Git komut arayüz görüntüsü (Git Bash) şu şeklidedir:

Git Bash

Git Bash için bazı komutlar şu şeklidedir:

clear: Komut ekrarnını temizler.

mkdir: Bulunduğunuz dizin içerisine yeni bir dizin oluşturur.

ls: Bulunduğunuz dizindeki dosya ve dizinleri listeler.

cd: Dizin değiştirir.

git –version: Sistemde kurulu olan Git versiyonunu verir.

git init: Bulunduğu dizine “.git” adında yeni bir git deposu(repository) oluşturur.

git add: Çalıştığınız dizindeki dosyalarda oluşan değişiklikleri indekse ekler.

git status: Çalıştığınız dizindeki dosyaların indeksteki durumunu gösterir.

git commit: İndekse yazılmış tüm değişiklikleri alır ve bu değişiklikleri işaret eden yeni bir icra(commit) nesnesi oluşturur ve bu icra nesnesine şube ayarlar.

git remote: uzak depoların takma adlarını listeler.

git remote add: projenize yeni bir uzak depo ekler.

git push: Değiştirilmiş tüm yerel nesneleri uzaktaki depoda bulunan şubelere atar.

Yukarıdaki komutlar ile bir depo(repository) oluşturup uzaktaki bir depoya gönderme işlemi yapılabilmektedir. Bu komutlardan başka birçok komut vardır ancak şimdilik yeterli olacak komutlar elimizdekilerdir.

Örnek Uygulama

Geliştiriciler olarak projelerimizi versiyonlar halinde uzak bir depoda tutmak istediğimizde aklımıza ilk gelecek olan GitHub platformudur. Git de zaten bu platforma veri gönderebilmektedir.

Bu örnek uygulamamızda bir Visual Studio projemizi msysGit yardımıyla GitHub üzerinde oluşturduğumuz bir depoya(repository) göndermeye çalışalım.

Git tarafında ön bilgiye sahip olduğumuza göre bir de GitHub tarafında neler yapmamız gerektiğine göz atalım. Öncelikle GitHub web sayfasında bir hesap oluşturmamız gerekmektedir. Hesap oluşturduktan sonra GitHub web sayfasında “Create New Repository” veya “New Repository” şeklinde oluşturulmuş link yardımıyla yeni depo oluşturma sayfasına yönlendiriliriz.

GitHub New Repository

Yukarıdaki resimde de görüldüğü üzere TestConsoleApplication adında bir repository oluşturuyoruz.

Dikkat: Github üzerindeki repository içerisine veri gönderebilmek için bir güvenlik seviyesi ayarı olan SSH Key oluşturup sitedeki Account Settings bölümüne kaydetmemiz gerekmektedir. Bu işlemi Github burada bizim için anlatmış. Bu ayarı yapmadığımızda gönderdiğimiz veriyi almayacaktır.

Bu güvenlik ayarını da başarılı bir şeklide yaptıktan sonra Visual Studio ortamında oluşturulmuş “TestConsoleApplication” adında bir c# projesini Github depomuza gönderelim.

Projemizi D sürücüsü üzerinde TestConsoleApplication adında bir dizinde tutacağız ve Git üzerinden bu dizinde işlem yapacağız.

Git Commands 1,2,3

KOMUT:1 D sürücümüzde projemizin bulundupu TestConsoleApplication dizinine girer.

KOMUT:2 Dizin içerisine .git adında bir yerel depo oluşturur. Oluşturulan bu dizin (.git) gizli olabilir. Göremezsseniz klasör seçeneklerinden  “gizli dosya ve klasörleri göster” seçeneğini seçip bakabilirsiniz.

KOMUT:3 Dosya değişikliklerini indekse ekler.

Git Commands 4

KOMUT:4 Yeni bir icra(commit) nesnesi oluşturur.

Git Commands 5,6

KOMUT:5 Projeye git@github.com:bayramucuncu/TestConsoleApplication.git depo yolunu ekler.

KOMUT:6 Değiştirilmiş tüm yerel nesneleri uzak depo adersine gönderir.

Gönderdiğimiz projeye web sitesi üzerinden göz atacak olursak şu şeklide bir manzara karşımıza çıkacaktır.

Github Repository

Bu test projesi Github üzerinde oluşturulmuş genel bir projedir. Herkese açık bir şekilde düzenlenmiştir.

Tekrar görüşmek dileğiyle.

Blog yazma amacım

19 Eyl

Bu blog sayfasını yazma amacım bilgi paylaşımı yapmak olup yazılım dünyasına az da olsa fayda sunabilmektir. Amacım arama motorlarında ön sıralarda çıkıp kullanıcıya hiçbir katkı sağlamayan ve sadece zaman kaybettiren bir web içeriği sunmak değildir. Amacım arama motorlarında aradığı başlığı bulan kullanıcıya aradığı şeyi sunmuş olabilmek ve eğer lütfeder ise bir teşekkürünü alabilmektir. Kafamda birçok konuyla ilgili ufakta olsa yazıya dökülebilecek bilgiler var. Ancak bunları eksik şekilde yazmak, okuyucuya bir fayda sunmayacağı gibi okuyucunun vaktini boşa harcamasına sebep olacaktır. Bu nedenle yazıya dökmediğim birçok konu da mevcuttur. Aynı hassasiyeti boş yazılarla vaktimizi çalan blog yazarlarından da bekliyorum.  İnternette var olan konulara farklı yönlerden yaklaşabilir, farklı örnekler vererek konuları anlaşılır bir biçimde sunabiliriz. Ancak eksik ve yanlış bilgiler sunmak mesleğimize yapılmış bir saygısızlıktır.

Yapay yöntemlerle arama motorlarını kandıran ve bu uğurda gerçek bilgiyi sunan sitelerin haklarını sömüren internet siteleri sahiplerine ve kendini Hacker zannedenlere duyurulur.

Windows mu Linux mu?

17 Eyl

İşletim sistemlerine karşı fanatizm boyutunda bir taraf tutma savaşı vardır. Linux taraftarları ve Windows taraftarları topluluklarda ve sosyal medyada kısır tartışma içerisindedir genelde. Bu tür tartışmalara girmeden önce, işletim sistemlerinin neyi hedeflediğini bilmemiz gerekmektedir. Amacımıza uygun işletim sistemini seçebiliyor muyuz diye bir bakmamız gerekir ilk önce. Fakat amaca uygun işletim sistemi nasıl seçilir? Hangi tarafta durmamız gerektiğini nasıl belirlemeliyiz?

Microsoft firmasının Windows işletim sistemini çıkarma amacı ve inancı, gelecekte her evde bir kişisel bilgisayar olmasıydı. Her evde bir bilgisayarın olması demek bir de işletim sisteminin olması demektir. Windows işletim siteminin ev kullanıcılarına dönük yani profesyonellik istemeyen bir ilkesi vardır. Yani herkesin kullanabileceği bir işletim sistemidir Windows. Amacına uygun şekilde yapılmış mı? Bence evet. Öyle olmasaydı çoğunluk Windows işletim sistemini kullanmazdı. Çoğunluğun Windows kullanması belki başka seçeneğin olmamasından kaynaklanıyor diye akıllara gelebilir ama günümüzde başka işletim sistemlerinin de olması Windows işletim sistemini kenara attıramamıştır.

Gelelim Linux tarafına. Linux işletim sistemi, ev kullanıcısından ziyade daha profesyonel kullanıcılara hitap eden bir işletim sistemidir. Linux, kullanıcıya her şeyi hazır olarak sunmaz. Daha fazla bilgi ve emek ister. Programlar kapalı kutular şeklinde değil açık kaynak şeklindedir. Bilgili ve profesyonel olmadan her şey açık kaynak, her şey özgür sloganlarıyla Linux kullanmaya kalkan acemi kullanıcılar, bir ekran kartı sürücüsünü 1 günde yükleyemeyince hayal kırıklığı yaşayabiliyor.

Profesyonel olmak kişinin özgür seçimidir. Bilgisayar sistemleri konusunda belli bir noktaya gelenler ve işletim sistemi çekirdeği seviyesinde çalışma becerisine sahip olan kullanıcılar gayet tabi Linux işletim sistemini seçebilir. Bilgisayar mühendisleri, gömülü istemlere yazılım üretenler için açık kaynak ve Linux biçilmiş kaftandır diyebilirim. Ancak ev kullanıcıları, işletim sistemi seviyesinde çalışacak yazılımlar üretmek isteyenler ve kolayca yazılım üretip kullanmak isteyenler için de Windows kullanmak avantajlı olur diyebilirim.

Linux tarafında duranlar da genelde önce Windows işletim sistemini kullanıp sonra Linux tarafına geçenlerdir. Kabul etmeliyiz ki Windows işletim sistemi olmasaydı çoğumuz bilgisayar sistemlerini geç tanırdık ve birçok kullanıcı da hala bilgisayar kullanamıyor olurdu. Bilgisayarlar şirketlere ve geliri üst seviyede olan insanlara has ürünler olurdu. Ev kullanıcısına ulaşması çok daha uzun seneler alabilirdi. Bu nokta da insanlığı Windows işletim sistemiyle tanıştıran Microsoft firmasının hakkını yememek gerek.

Şeçim sizin…

Blog sayfam 1 yaşında

19 Ağu

Bugün 19 ağustos 2012. Bir yıl önce web dünyasına açtığım blog sayfam bugün ilk yaşına girdi. Yeni yaşında sayfamın temasını da değiştirmek istedim.

Blog maceram nasıl mı başladı?

Genelde bir işi yapmayı hedeflediğimde, genelde o işi bir takvime bağlarım. Ancak blog sayfamı şu zaman başlarım bu zaman başlarım derken epey zaman geçirmiştim. Bir gün, “ben bu işe başlıyorum artık” dedim. Hemen alan adı ve hosting işlemlerini halledip yazılarımı yazmaya başladım. Demek ki bazı şeyleri yapmak için plan yapmaya gerek yokmuş.

Aklıma takılan sorunları ve çözümlerini yazarak başladım işe. Ardından unutmaya meyilli olduğum,  yani sık kullanmadığım konular hakkındaki yazılarımı da eklemeye başladım siteme. Derken uzadı uzadı gitti. Bir senede epeyce birikim yapmışım.

Eğer blog yazmaya başlamasaydım, unuttuklarımı bana(kendi dilimle) hatırlatacak bir hatıra defterim olmayacaktı. Diğer taraftan, yazdıklarımı diğer geliştiricilerle de paylaşılmış oldum. Bazen olumlu geri dönüşler almak gerçekten hoşuma gidiyor.

Bence her programcı cesur olmalı ve bir blog sayfası tutmalı. Nasıl biz zor durumda kaldığımızda başkalarının paylaşımlarından faydalanıyorsak, başkaları da zor durumda kaldığında bizden faydalanabilmelidir.

Coğrafi Bilgi Sistemleri (CBS) Nedir ?

30 Tem

Coğrafi Bilgi Sistemleri (CBS), teknolojinin birçok dalının bir araya gelerek coğrafi veri üreten kurum ve kuruluşlara, veri üzerinde tasarım ve analiz imkanı sağlayan bir yapıdır. Verinin şekillendirilip anlamlı hale gelmesiyle kurum ve kuruluşlar, coğrafi verilerle de artık stratejik planlarını rahatça yapabilecek hale gelmektedirler.

Kullanım alanları

Ülkemizde CBS işlerinin devlet eliyle Ulusal Coğrafi Bilgi Sisteminin oluşuturlması, kontrolü ve yürütülmesi amacıyla 2011 yılında Coğrafi Bilgi Sistemleri Genel Müdürlüğü kurulmuştur. Bu da devlet olarak işin önemini benimsediğimizi ortaya çıkarmıştır.

İşin idari boyutundan ziyade, teknik boyutu hakkında konuşmaya devam edelim.

CBS, teknik olarak birden fazla alana yayılmış şeklidedir.

  • Haritacılık. (CAD, ArcGIS, ArcMAP,diğer yazılımlar)
  • Sistem (Harita yayınlarının sunumu, Sunucuların optimizasyonu)
  • Veritabanı (Oracle, MsSQL,…)
  • Yazılım (Silverlight, Java Flex, Javascript)

Yani tek başına CBS diye birşey yoktur. CBS uygulamalarının hayat bulabilmesi için sağlam bir ekibin oluşturulması şarttır.

CBS uygulamalarını şu şeklide sıralayabiliriz: Kent Bilgi Sistemi, Orman Bilgi Sistemi, Karayolları Bilgi Sistemi, Arazi Bilgi Sistemi, Tapu ve Kadastro Bilgi Sistemi, Lojistik Bilgi Sistemi, İç Güvenlik Bilgi Sistemi, Araç İzleme Bilgi Sistemi, Trafik Bilgi Sistemi, Kampüs Bilgi Sistemi, Deprem Bilgi Sistemi, Harita Bilgi Sistemi, vb. şekilde adlandırılırlar.

CBS uygulamalarının kullanım alanlarını da şu şekilde sıralayabiliriz: kaynak yönetimi, varlık yönetimi,alt yapılar (doğalgaz, elektrik, su), kentsel planlama, madencilik, askeri alanlar, trafik ve karayolları, ticaret… şeklinde sıralayabiliriz.

CBS, metinsel veriler yerine coğrafi verilerler çalışan bir sistemdir. Örneğin deprem inceleme merkezleri ölçekler vasıtasıyla deprem olan yerlerin koordinatlarını alarak, şu saatte şu koordinatta deprem olmuştur, şeklinde bir liste tutarlar. Bu, kağıt üzerinde metinsel bir veridir. CBS sayesinde bu koordinatlı metinsel veriler, harita üzerinde de görünür hale gelektedir. Aynı şekilde doğalgaz, su hatları, yollar gibi stratejik önemdeki veriler de tek noktadan yönetilebilir hale gelmektedir. Örneğin bir caddedeki doğalgaz kesintisinden etkilenecek vatandaşların listesi alınıp, bu kişilere otomatik mail göndererek veya otomatik arama yaparak and kayıtlarıyla bilgiler vermek mümkündür.

Yani CBS, gelişen dünyanın olmazsa olmazı haline gelmiştir.

Sunucunun gelen requestlere tepkisi

19 Tem

Web sunucunuza peş peşe gelen gelen requestler karşısında işlemci (CPU) ve belleğinizin (RAM) tepkisi nasıl olur diye düşündünüz mü?

Ben bunu gerçekten merak ediyordum. Sonucu görmek için test sunucumu, C# ile yazdığım bir bot yardımıyla request yağmuruna tuttum.

Acaba RAM mi daha fazla yorulur CPU mu sorusunun cevabını bulmak üzereydim. Tabi sonuç tüm sunucular için aynı olmayabilir. Çünkü istek gönderilen sayfaların veritabanını kullandığı, diskler arama yaptığı, bellek gerektirecek işlemler yaptığı göz önünde bulundurulmalıdır.

Benim aldığım sonuç şu şekildeydi.

Bellekte neredeyse hiç bir tepki olmazken CPU %80 – %90 gibi seviyelere ulaştı.