<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>bildirgec.org - GrkN - be&#287;endikleri</title>
    <link>http://www.bildirgec.org/</link>
    <language>tr-tr</language>
    <ttl>40</ttl>
    <description>bildirgec.org - GrkN - be&#287;endikleri</description>
    <item>
      <title>Her Yaz&#305;l&#305;mc&#305;n&#305;n Bilmesi Gereken 10 Konsept</title>
      <author>GrkN</author>
      <description>&lt;p&gt;Yaz&#305;l&#305;m d&#252;nyas&#305;, kalabal&#305;k ekiplerin yerini b&#252;y&#252;k ve karma&#351;&#305;k i&#351;leri bir ka&#231; iyi yaz&#305;l&#305;mc&#305;n&#305;n yapaca&#287;&#305; bir y&#246;ne do&#287;ru &lt;a href="http://www.readwriteweb.com/archives/the_future_of_software_development.php"&gt;ilerliyor&lt;/a&gt;.&lt;/p&gt;


&lt;div class="imajorta"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/software-engineer-150.jpg' alt="yaz&#305;l&#305;m m&#252;hendisi" border="0"&gt;&lt;br&gt;yaz&#305;l&#305;m m&#252;hendisi&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://alexiskold.wordpress.com/"&gt;Alex Iskold&lt;/a&gt;, bu ekiplerde yer alacak m&#252;hendislerin bilmesi gereken 10 konsepti &lt;a href="http://feeds.feedburner.com/~r/readwriteweb/~3/343177724/top_10_concepts_that_every_software_engineer_should_know.php"&gt;listelemi&#351;&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;10 &#304;li&#351;kisel Veritabanlar&#305;&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsol"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p1.jpg' alt="learning mysql" border="0"&gt;&lt;br&gt;learning mysql&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Relational_database"&gt;&#304;li&#351;kisel veritabanlar&#305;&lt;/a&gt;, &#231;ok b&#252;y&#252;k web servislerinde k&#246;t&#252; performanslar sergiledi&#287;i i&#231;in son zamanlarda &lt;a href="http://www.readwriteweb.com/archives/amazon_dynamo.php"&gt;sevilmiyor&lt;/a&gt;. Ancak yaz&#305;l&#305;m d&#252;nyas&#305; daha uzun bir s&#252;re onlar&#305; kullanmaya devam edecek.&lt;/p&gt;


	&lt;p&gt;&#304;li&#351;kisel veritabanlar&#305;nda veriler tablolarda kay&#305;tlar olarak tutuluyor ve genellikle SQL ad&#305; verilen dil ile bu veriler sorgulan&#305;yor. SQL&#8217;in veri ekleme, silme, g&#252;ncelleme, filtreleme ve birden &#231;ok tablodaki verileri bir arada getirme gibi g&#252;zel yetenekleri var.&lt;br&gt;&#304;li&#351;kisel veritabanlar&#305;nda veri yaz&#305;p okuma i&#351;ini performansl&#305; bir &#351;ekilde halledebilmek i&#231;in SQL, stored procedure&#8217;ler (yerle&#351;ik yordamlar), constraint&#8217;ler (k&#305;s&#305;tlamalar) gibi pek &#231;ok konuya hakim olmak gerekiyor.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;9 G&#252;venlik&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsag"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p2.jpg' alt="web security, privacy and commerce" border="0"&gt;&lt;br&gt;web security, privacy and commerce&lt;/div&gt;

	&lt;p&gt;Hack olaylar&#305; ve veri g&#252;venli&#287;i &#246;nem kazand&#305;k&#231;a g&#252;venlik bilgisinin de &#246;nemi art&#305;yor. &lt;a href="http://en.wikipedia.org/wiki/Computer_security"&gt;Veri g&#252;venli&#287;i&lt;/a&gt;; kullan&#305;c&#305; y&#246;netimi, yetkilendirme, bilgi aktar&#305;m&#305; gibi pek &#231;ok kavram i&#231;eren geni&#351; bir konu.&lt;br&gt;Kullan&#305;c&#305; y&#246;netimi, bir sistemde her kullan&#305;c&#305;n&#305;n kendisini ilgilendiren bilgilerle muhattap olmas&#305; ve di&#287;er kullan&#305;c&#305;lar&#305;n bilgilerini g&#246;rememesi ile alakal&#305;. Yetkilendirme, kullan&#305;c&#305;lar&#305;n yaln&#305;zca izin verilen i&#351;lemleri yapabilmeleriyle alakal&#305;. Daha &#231;ok &#351;irketleri ve i&#351; ak&#305;&#351;&#305; bulunduran sistemleri ilgilendiriyor. Yeni geli&#351;tirilen &lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt; protokol&#252;, web servislerde g&#252;venli&#287;i sa&#287;lamak konusunda yard&#305;mc&#305; oluyor. Bu sistemi flickr kullan&#305;yor.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;8 Cloud Computing&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsol"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p3.jpg' alt="programming amazon web services" border="0"&gt;&lt;br&gt;programming amazon web services&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud Computing&lt;/a&gt;, bir i&#351;in daha h&#305;zl&#305; yap&#305;lmas&#305; i&#231;in ayn&#305; anda birden fazla bilgisayar&#305;n &#231;al&#305;&#351;t&#305;r&#305;lmas&#305; esas&#305;na dayanan paralel programlamadan yola &#231;&#305;k&#305;l&#305;p geli&#351;tirilmi&#351; bir y&#246;ntem. Yararlanan&#305;labilecek hizmetlerin zaman, kullan&#305;c&#305; yo&#287;unlu&#287;u gibi parametrelere ba&#287;l&#305; olarak de&#287;i&#351;mesi esas&#305;na dayan&#305;yor.&lt;/p&gt;


	&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;7 E&#351; Zamanl&#305;l&#305;k&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsag"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p4.jpg' alt="java threads" border="0"&gt;&lt;br&gt;java threads&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Concurrency_(computer_science)"&gt;E&#351; zamanl&#305;l&#305;k&lt;/a&gt;, birden fazla i&#351;in bir program&#305;n kendi i&#231;inde ayn&#305; anda yap&#305;lmas&#305; ile alakal&#305;. &#214;rne&#287;in java ile yaz&#305;lan uygulamalarda bunun i&#231;in thread&#8217;ler kullan&#305;l&#305;yor.&lt;/p&gt;


	&lt;p&gt;&#220;retici / T&#252;ketici modeli tipik bir &#246;rnek. &#220;retici durumunda olan k&#305;s&#305;m s&#252;rekli olarak i&#351;lenecek verileri &#252;retiyor, t&#252;ketici olan k&#305;s&#305;m ise s&#252;rekli olarak bu verileri al&#305;p i&#351;liyor. Bu iki k&#305;s&#305;m ayn&#305; anda &#231;al&#305;&#351;&#305;yor. Her thread&#8217;in kendi i&#231;inde &#231;al&#305;&#351;ma mant&#305;&#287;&#305; ayr&#305; olsa da thread&#8217;ler verileri ayn&#305; anda ve ortak olarak kulland&#305;&#287;&#305; i&#231;in &#231;al&#305;&#351;&#305;rlarken yapabilecekleri hatalar&#305; &#246;nlemek uzmanl&#305;k gerektiriyor. En karma&#351;&#305;k thread k&#252;t&#252;phanelerinden birisi &lt;a href="http://g.oswego.edu/"&gt;Doug Lea&lt;/a&gt; taraf&#305;ndan &#252;retilmi&#351; ve java &#231;ekirde&#287;inde &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html"&gt;yerini alm&#305;&#351;&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;6 Caching&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsol"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p5.jpg' alt="web caching" border="0"&gt;&lt;br&gt;web caching&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://www.bildirgec.org/uye/hafif-uyku"&gt;hafif uyku&lt;/a&gt;&#8217;nun ka&#351;eleme dedi&#287;i caching, normalde veritaban&#305;nda tutulan verilerden &#231;ok s&#305;k kullan&#305;lanlar&#305;n h&#305;zl&#305; ula&#351;&#305;labilecek bir yere al&#305;nmas&#305; ve buradan h&#305;zla kullan&#305;lmas&#305; anlam&#305;na geliyor. &#214;rne&#287;in bir kitap siteniz varsa ve ge&#231;en haftan&#305;n pop&#252;ler kitaplar&#305;n&#305; listeleyen bir k&#305;s&#305;m mevcutsa, bu verileri her gerekti&#287;inde hesaplamak yerine haftada bir kez hesaplay&#305;p uygun bir yere kaydediyor ve gerekti&#287;inde buradan okuyorsunuz.&lt;br&gt;Cache&#8217;lenen verilerin tamam&#305;n&#305; bellekte tutmak maliyetli bir i&#351;lem oldu&#287;u i&#231;in, bellekte tutulacak verilerin se&#231;ilmesi i&#231;in uygulanacak y&#246;ntemleri se&#231;mek yine uzmanl&#305;k gerektiriyor.&lt;br&gt;Facebook&#8217;un da aralar&#305;nda oldu&#287;u bir &#231;ok modern uygulama, &lt;a href="http://bradfitz.com/"&gt;Brad Firzpatrick&lt;/a&gt; taraf&#305;ndan geli&#351;tirilen &lt;a href="http://en.wikipedia.org/wiki/Memcached"&gt;memcached&lt;/a&gt; adl&#305; sistemi kullan&#305;yor.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;5 Hashing&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsag"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p7.jpg' alt="lecture notes in computer science" border="0"&gt;&lt;br&gt;lecture notes in computer science&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Hash_function"&gt;Hashing&lt;/a&gt;, verilere h&#305;zl&#305; ula&#351;mak i&#231;in ba&#351;ka bir y&#246;ntem. Bu y&#246;ntemde, her verinin i&#231;eri&#287;ine bak&#305;larak bu veriye &#246;zel daha k&#305;sa bir veri &#252;retiliyor ve bu k&#305;sa veriler index olarak kullan&#305;l&#305;yor. Index i&#231;erisinde arama yapmak da &#231;ok daha h&#305;zl&#305; oluyor.&lt;/p&gt;


	&lt;p&gt;Hashing yap&#305;l&#305;rken her verinin farkl&#305; bir hash kodunun olmas&#305; ve bu hash kodlar&#305;n&#305;n h&#305;zl&#305; ula&#351;&#305;m&#305; m&#252;mk&#252;n oldu&#287;u kadar kolayla&#351;t&#305;racak &#351;ekilde ayarlanmas&#305; farkl&#305; bir uzmanl&#305;k gerektiriyor.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;4 Algoritmik Karma&#351;&#305;kl&#305;k Seviyesi&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsol"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p6.jpg' alt="data structures and algorithms" border="0"&gt;&lt;br&gt;data structures and algorithms&lt;/div&gt;

	&lt;p&gt;&#199;ok yayg&#305;n olarak b&#252;y&#252;k O harfi notasyonuyla ifade edilen &lt;a href="http://en.wikipedia.org/wiki/Algorithmic_complexity"&gt;karma&#351;&#305;kl&#305;k seviyesi&lt;/a&gt;, bir algoritman&#305;n h&#305;z&#305;n&#305;n, algoritman&#305;n i&#351;ledi&#287;i veri miktar&#305;na g&#246;re de&#287;i&#351;imini belirliyor. &#214;rne&#287;in O(n) ile ifade edilen bir algoritma, n tane veriyi t zamanda i&#351;liyorsa 2n tane veriyi 2t zamanda i&#351;ler. O(n^2) ile ifade edilen algoritma ise n tane veriyi t zamanda i&#351;lerken 2n tane veriyi t&#8217;nin karesi kadar zamanda i&#351;ler. &#304;&#351;lenen veri miktarlar&#305; &#231;ok b&#252;y&#252;k olunca, bunlar&#305; i&#351;leyen algoritman&#305;n karma&#351;&#305;kl&#305;&#287;&#305; &#231;ok b&#252;y&#252;k &#246;nem kazan&#305;yor.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;3 Katmanl&#305; Mimari&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsag"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p8.jpg' alt="large scale c++ software design" border="0"&gt;&lt;br&gt;large scale c++ software design&lt;/div&gt;

	&lt;p&gt;Katmanl&#305; mimari, bir yaz&#305;l&#305;m&#305;n &#231;al&#305;&#351;mas&#305; i&#231;in gereken bile&#351;enlerin piramit &#351;eklinde yap&#305;land&#305;r&#305;lmas&#305; gerekti&#287;ini ifade ediyor. Piramitin her katman&#305;ndaki bile&#351;enin &#231;al&#305;&#351;mas&#305;, kendi alt&#305;nda bulunan bile&#351;enlere ba&#287;l&#305; olabilir ancak kendi &#252;zerinde &#231;al&#305;&#351;anlara ba&#287;l&#305; olamaz.&lt;br&gt;Bu konuda bilgi al&#305;nabilecek &lt;a href="http://www.headwaysoftware.com/products/structure101/index.php"&gt;Structure 101&lt;/a&gt; ve &lt;a href="http://www.alphaworks.ibm.com/tech/sa4j/"&gt;SA4J&lt;/a&gt; adl&#305; iki g&#252;zel kaynak var.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;2 Kurallar ve &#350;ablonlar&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsol"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p9.jpg' alt="developing java beans" border="0"&gt;&lt;br&gt;developing java beans&lt;/div&gt;

	&lt;p&gt;&#304;simlendirme kurallar&#305; ve &#351;ablonlar &#252;zerinde en &#231;ok durulan ve muhtemelen en &#246;nemli tasar&#305;m desenleri.&lt;br&gt;&#304;simlendirme kurallar&#305; yaz&#305;l&#305;m geli&#351;tirilirken kullan&#305;lan t&#252;m isimlendirmelerin ortak kurallara dayanmas&#305;n&#305; gerektiriyor. &#214;rne&#287;in &lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; adl&#305; java bile&#351;eni, test metodlar&#305;n&#305;, isimlerinin ba&#351;&#305;nda yer alan test kelimesi sayesinde tan&#305;yor.&lt;/p&gt;


	&lt;p&gt;&#350;ablonlar ise verilerin g&#246;sterimlerinin verilerden ba&#287;&#305;ms&#305;z bir &#351;ekilde yap&#305;lmas&#305; ile ilgili. &#214;rne&#287;in XML verilerini g&#246;stermek i&#231;in &lt;a href="http://en.wikipedia.org/wiki/XSL_Formatting_Objects"&gt;XSL &#351;ablonlar&#305;&lt;/a&gt; kullan&#305;l&#305;r.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;1 Aray&#252;zler&lt;/strong&gt;&lt;/p&gt;


&lt;div class="imajsag"&gt;&lt;img src='http://www.bildirgec.org/imaj/buyutec/p10.jpg' alt="agile software development" border="0"&gt;&lt;br&gt;agile software development&lt;/div&gt;

	&lt;p&gt;Aray&#252;z, yaz&#305;l&#305;mdaki en &#246;nemli konsept. Yaz&#305;l&#305;m geli&#351;tirirken problemleri m&#252;mk&#252;n oldu&#287;unca basit modellemek ve bu modellere m&#252;mk&#252;n oldu&#287;unca basit ve anla&#351;&#305;l&#305;r aray&#252;zler sunmak gerekiyor.&lt;/p&gt;


	&lt;p&gt;Bu konudaki tavsiyeler &#351;&#246;yle:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Asla ileride kullan&#305;&#351;l&#305; olabilecek metodlar yazmay&#305;n. Minimalist olun.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Daha &#246;nce yapt&#305;&#287;&#305;n&#305;z hatalar ile y&#252;zle&#351;mekten korkmay&#305;n. Hatalar&#305;n&#305;z&#305; d&#252;zeltmeye a&#231;&#305;k olun.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Sab&#305;rl&#305; olun ve s&#252;re&#231;ten zevk al&#305;n. Ad&#305;m ad&#305;m ilerleyin.&lt;/li&gt;
	&lt;/ul&gt;&lt;p&gt;Bu yaz&#305; &lt;a href="http://www.bildirgec.org/uye/GrkN"&gt;GrkN&lt;/a&gt; taraf&#305;ndan &lt;a href=" http://www.bildirgec.org/yazi/her-yazilimcinin-bilmesi-gereken-10 "&gt;bildirgec.org&lt;/a&gt; adresli sitede yay&#305;mlanmak &#252;zere yaz&#305;lm&#305;&#351;t&#305;r. Kaynak g&#246;sterilmeksizin kopyalanamaz.&lt;/p&gt;&lt;hr&gt;Pilli Projeleri: &lt;a href="http://pilli.com"&gt;Pilli.com: Kolektif Ba&#287;&#305;ms&#305;z &#304;&#231;erik&lt;/a&gt; | &lt;a href="http://sosyomat.com"&gt;Sosyomat.com: Arkada&#351;&#305;n&#305; Etiketle&lt;/a&gt; | &lt;a href="http://put.io"&gt;Put.io: Online Cloud Storage&lt;/a&gt;</description>
      <pubDate>Thu, 24 Jul 2008 06:02:00 GMT</pubDate>
      <guid isPermaLink="false">156445@http://www.bildirgec.org/</guid>
      <link>http://www.bildirgec.org/yazi/her-yazilimcinin-bilmesi-gereken-10</link>
    </item>
  </channel>
</rss>

