
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://www.oguzhan.info/rss" rel="self" type="application/rss+xml" />
<title>Oguzhan YILMAZ</title>
<description>Programlama, Internet, Web Teknolojileri, Is guc ve Guzel Seyler'i paylastigim blogum.</description>
<link>http://www.oguzhan.info/</link>
<language>en-tr</language>
<generator>Oguzhan</generator>
<copyright>Oguzhan YILMAZ</copyright>
<image>
<url>http://www.oguzhan.info/info-logo2.jpg</url>
<title>Oguzhan YILMAZ</title>
<link>http://www.oguzhan.info/</link>
</image>
<managingEditor>aspsrc@gmail.com (Oguzhan YILMAZ)</managingEditor>

<item>
<title>Bankalar&#305;n sanal pos hizmetleri sand&#305;&#287;&#305;n&#305;z kadar stabil de&#287;il.</title>
<description>
Goldmaster firmas&#305; i&#231;in yapt&#305;&#287;&#305;m&#305;z bayi tahsilat sistemini nihayet bitirdik ve bayilerin kullan&#305;m&#305;na a&#231;t&#305;k. Her projede oldu&#287;u gibi bu porjede'de &#246;ng&#246;r&#252;lemeyen sorunlar hemen kendini g&#246;sterdi.&lt;br /&gt;&lt;br /&gt;Bu sorunlardan en &#246;nemlisi sistemin bankalarla haberle&#351;en mod&#252;l&#252; ile ilgiliydi. &lt;br /&gt;Sistemi kullan&#305;ma a&#231;t&#305;ktan sonra tahminimden fazla sanal pos transaction'&#305; ger&#231;ekle&#351;meye ba&#351;lad&#305; ve s&#305;kl&#305;kla &amp;quot;operation time-out&amp;quot; hatalar&#305; ile kar&#351;&#305;la&#351;&#305;r oldum. &lt;br /&gt;&lt;br /&gt;&#304;&#351;lemi debug edip simule etti&#287;imde ise bankan&#305;n sanal pos API'lerine eri&#351;im kurarken kulland&#305;&#287;&#305;m HttpRequest s&#305;n&#305;f&#305;n&#305;n time out &#246;zelli&#287;inin s&#252;resini 8 saniye verdi&#287;imden kaynakland&#305;&#287;n&#305; g&#246;rd&#252;m ve http iste&#287;inin zaman a&#351;&#305;m s&#252;resini 15 saniye olarak yeniden d&#252;zenledim ve publish ettim.&lt;br /&gt;Sonu&#231;, &amp;quot;Operation Time-out&amp;quot; hatalar&#305; g&#246;zle g&#246;r&#252;lecek &#351;ekilde azald&#305; fakat yinede i&#351;lemlerin %5'i time-out'a d&#252;&#351;&#252;yordu. Durumdan s&#305;k&#305;l&#305;p sanal pos mod&#252;l&#252;n muhatap oldu&#287;u t&#252;m sanal pos Uri'lerini monitor etmeye ba&#351;lad&#305;m.&lt;br /&gt;Monitor'u &#351;irket i&#231;inde kulland&#305;&#287;&#305;m&#305;z &lt;a target=&quot;_blank&quot; href=&quot;http://www.paessler.com/prtg/&quot;&gt;PRTG&lt;/a&gt; program&#305;na devrettim. Bir ka&#231;g&#252;n http &#252;zerinden t&#252;m web serverlar&#305; geriye d&#246;nd&#252;rd&#252;kleri cevap s&#252;relerine g&#246;re izledim ve &#231;ok stabil olmayan bir tablo ile kar&#351;&#305;la&#351;t&#305;m.&lt;br /&gt;&lt;br /&gt;Bankalar&#305;n sanal pos hizmeti verdikleri sunucular&#305; g&#252;n i&#231;inde bir &#231;ok kez ya eri&#351;ilemiyordu yada ola&#287;an d&#305;&#351;&#305; eri&#351;im s&#252;releri ile hizmet vermeye &#231;al&#305;&#351;&#305;yorlard&#305;. Aksi daha detayl&#305; incelemelerimde ise &#231;ok &#246;nemli bir sorunla kar&#351;&#305;la&#351;t&#305;m. &#350;&#246;yle ki;&lt;br /&gt;&lt;br /&gt;Sanal Pos mod&#252;l&#252;m bankaya &amp;quot;paray&#305; &#231;ek&amp;quot; emri g&#246;nderdikten sonra banka emri al&#305;p i&#351;liyor fakat bana &#231;ok ge&#231; cevap verdi&#287;i i&#231;in veya web sunucusunda ki anl&#305;k kesintilerden dolay&#305; herhangi bir cevap d&#246;nemiyordu.&lt;br /&gt;B&#246;yle olunca i&#351;lemi banka ger&#231;ekle&#351;tiriyor ve m&#252;&#351;terinin kredi kart&#305;ndan para &#231;ekiyor fakat bizim sistemin haberi olmuyordu! arkas&#305;ndan sistem m&#252;&#351;teriye para &#231;ekilemedi hatas&#305; d&#246;nd&#252;r&#252;yordu. Nedeni de &amp;quot;Operation time-out&amp;quot;!&lt;br /&gt;&lt;br /&gt;Konu ile ilgili bir ka&#231; banka ile g&#246;r&#252;&#351;t&#252;m. Durumu a&#231;&#305;klad&#305;&#287;&#305;mda hepsi bana cross-check yapabilirsiniz dedi. Yani g&#252;n sonunda bendeki ve bankada ki kay&#305;tlar&#305; kar&#351;&#305;la&#351;t&#305;r&#305;p farkl&#305;lar&#305; bulduktan sonra sisteme ekleyece&#287;im?&lt;br /&gt;Bunun i&#351;ime yaramayaca&#287;&#305;n&#305; anlat&#305;m &#231;&#252;nk&#252; m&#252;&#351;teriye i&#351;lemin sonucu kesin olarak i&#351;lem sonunda anl&#305;k bildirmem gerekiyordu. &amp;quot;Time-out exeption'&#305;na d&#252;&#351;t&#252;&#287;&#252;m&#252;zde kullanabilece&#287;imiz bir validasyon y&#246;nteminiz var m&#305;?&amp;quot; diye sordu&#287;umda. Bu durum i&#231;in geli&#351;tirdikleri bir tasar&#305;mlar&#305;n&#305;n olmad&#305;klar&#305;n&#305; s&#246;ylediler.&lt;br /&gt;&lt;br /&gt;Bana &#231;ok ilgin&#231; geldi... B&#246;yle bir sorun varsa, bu kadar teknolojik bankalar&#305;n bu sorunu bu zamana kadar &#231;&#246;zebilmi&#351; olduklar&#305;n&#305; d&#252;&#351;&#252;n&#252;rd&#252;m hep.&lt;br /&gt;Halbuki i&#351;lemin do&#287;rulamas&#305;n&#305; farkl&#305; bir sunucudan yapt&#305;rabilirlerdi veya ba&#351;ka sunucu benim sunucuma bir http post ge&#231;ebilirdi (&lt;a href=&quot;http://www.paypal.com&quot;&gt;Paypal&lt;/a&gt; bunu yap&#305;yor)&lt;br /&gt;Bunun i&#231;in sanal pos hizmetlerine ek &#252;cret bile ekleyebilirlerdi ama hala bir &#231;&#246;z&#252;m &#252;retemediklerine g&#246;re kredi kart&#305; faizlerinden &#231;ok para kazand&#305;klar&#305;ndan olsa gerek para saymaktan b&#246;yle &#351;eyleri d&#252;&#351;&#252;necek vakitleri yok san&#305;r&#305;m.&lt;br /&gt;&lt;br /&gt;Sonu&#231;ta banka Uri'lerini izlemeyi 31 g&#252;n boyunca s&#252;rd&#252;rd&#252;m ve sonu&#231; olarak a&#351;a&#287;&#305;daki gibi bir tablo &#231;&#305;kt&#305; kar&#351;&#305;ma.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sanal Pos Uptime S&#252;releri&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.oguzhan.info/media/banka_uptime_list.JPG&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Tabloyu yorumlayacak olursak;&lt;br /&gt;&lt;br /&gt;&#304;lk &#252;&#231; bankan&#305;n downtime s&#252;releri kabul edilebilir nitelikte oldu&#287;unu d&#252;&#351;&#252;n&#252;yorum. Bir saatin &#252;zerindeki downtime oranlar&#305; insan&#305; biraz d&#252;&#351;&#252;nd&#252;r&#252;yor. Fakat 8 saat ve &#252;zeri kesinti ile hizmet veren bankalardan kesinlikle uzak durulmas&#305; gerekiyor diye d&#252;&#351;&#252;n&#252;yorum.&lt;br /&gt;&lt;br /&gt;Farkl&#305; bir y&#246;nden bakarsak olaya&#160; bankalar&#305;n Uptime'lar&#305; (S&#252;rekli A&#231;&#305;k Kalma Durumlar&#305;) &lt;span style=&quot;font-weight: bold;&quot;&gt;%97&lt;/span&gt;'nin &#252;zerinde. Do&#287;ru kula&#287;a &#231;ok y&#252;ksek bir rakam geliyor ama %97.91 ile en berbat uptime s&#252;resine sahip Deniz Bank bile 31 g&#252;nde &lt;span style=&quot;font-weight: bold;&quot;&gt;15 saat 58 dakika&#160; 15 saniye&lt;/span&gt; kapal&#305; kalm&#305;&#351;. Bu &#231;ok kabul edilebilir dir durum de&#287;il. Tabi b&#252;t&#252;n su&#231;u bankaya y&#252;klememek gerekiyor ba&#287;l&#305; olduklar&#305; internet servis sa&#287;lay&#305;c&#305;s&#305;n&#305;n &#231;e&#351;itli a&#287; problemleride neden olmu&#351; olabilir ama bunlar&#305;n hepsi g&#252;n&#252;m&#252;zde &#231;&#246;z&#252;lm&#252; olan problemler.&lt;br /&gt;&lt;br /&gt;30 g&#252;nl&#252;k izlemeye g&#246;re T&#252;rkiye'de en stabil ve h&#305;zl&#305; sanal pos hizmetini &lt;span style=&quot;font-weight: bold;&quot;&gt;Yap&#305; Kredi&lt;/span&gt; bankas&#305; veriyor. Sana Pos API'lerininde kod taraf&#305;ndan y&#246;netilebilir ve kolay entegre edilebilir oldu&#287;u d&#252;&#351;&#252;ncesindeyim.&lt;br /&gt;&lt;br /&gt;Yap&#305; Kredi'nin 30 g&#252;nl&#252;k http grafi&#287;i a&#351;a&#287;&#305;daki gibi. En y&#252;ksek eri&#351;im s&#252;resi olarak 1.413ms g&#246;r&#252;n&#252;yor, en d&#252;&#351;&#252;k 14ms. (Bu web server'&#305;n client'a cevap verdi&#287;i s&#252;redir.)&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.oguzhan.info/media/yapi_kredi_30_gunluk_load_time.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Tabi en iyi bankay&#305; s&#246;yledik. En berbat bankay&#305;da s&#246;ylemeden ge&#231;meyelim. &lt;br /&gt;Deniz Bank'&#305;n sanal pos hizmeti ger&#231;ekten berbat. Umar&#305;m bu durumu en k&#305;sa s&#252;rede d&#252;zeltirler ve insanlardan ald&#305;klar&#305; paralar&#305;n hakk&#305;n&#305; verirler. &lt;br /&gt;&lt;br /&gt;A&#351;a&#287;&#305;daki grafikte'de g&#246;r&#252;ld&#252;&#287;&#252; gibi kapal&#305; olmad&#305;&#287;&#305; zamanlarda web server'&#305;n cevap verme s&#252;resi 7.445 milisaniye'ye kadar &#231;&#305;km&#305;&#351; en iyi cevap verme s&#252;resi ise 37 milisaniye, bu zaten di&#287;er bankalar&#305;n ortalama rakam&#305;. :)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src=&quot;http://www.oguzhan.info/media/deniz_bank_30_gunluk_load_time.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Ek olarak bankalar&#305;n sanal pos hizmeti verdikleri web serverlar&#305;n kapal&#305; olmad&#305;klar&#305; zamanda cevap verme s&#252;relerininde daha iyi oldu&#287;u d&#252;&#351;&#252;n&#252;lebilir ama o kadarda iyi de&#287;il. A&#351;a&#287;&#305;daki grafik t&#252;m bankalar&#305; gruplad&#305;&#287;&#305;ndan &#231;ok anla&#351;&#305;l&#305;r de&#287;il ama yinede istek ve y&#252;zde olarak fikir verebilir.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src=&quot;http://www.oguzhan.info/media/banka_30_gun_uptime.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Sonu&#231; olarak bu 30 g&#252;nl&#252;k verilere g&#246;re'de konu&#351;mak do&#287;ru olmaz ama duruma &#351;&#246;yle bir anl&#305;k bak&#305;&#351; att&#305;&#287;&#305;m&#305;z&#305; d&#252;&#351;&#252;n&#252;rsek dikkat &#231;ekici bir husus.&lt;br /&gt;Daha farkl&#305; raporlar almakta m&#252;mk&#252;n ama benim ilgilendiklerim bunlard&#305;. &#304;lgilenen olursa XML veri dosyalar&#305;n&#305; g&#246;nderebilirim, zaman bazl&#305; daha ayr&#305;nt&#305;l&#305; raporlarda al&#305;nabilir.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

</description>
<pubDate>07.03.2010</pubDate>
<link>http://www.oguzhan.info/?517/Bankalar%26%23305%3Bn+sanal+pos+hizmetleri+sand%26%23305%3B%26%23287%3B%26%23305%3Bn%26%23305%3Bz+kadar+stabil+de%26%23287%3Bil%2E</link>
<guid>http://www.oguzhan.info/?517/Bankalar%26%23305%3Bn+sanal+pos+hizmetleri+sand%26%23305%3B%26%23287%3B%26%23305%3Bn%26%23305%3Bz+kadar+stabil+de%26%23287%3Bil%2E#517</guid>
</item>

<item>
<title>Logo Unity API'de SqlClause Kullan&#305;m&#305;</title>
<description>
Daha &#246;nce yazm&#305;&#351; odlu&#287;um &lt;a href=&quot;http://www.oguzhan.info/bak.asp?506/Logo+Unity+API+%28Lobject.dll%29&quot;&gt;Logo API&lt;/a&gt;' ile ilgili yaz&#305;y&#305; referans g&#246;stererek yaz&#305;lm&#305;&#351; bir &#231;ok e-posta al&#305;yorum. Genelde e-posta i&#231;eri&#287;i &lt;span style=&quot;font-weight: bold;&quot;&gt;SqlClause&lt;/span&gt; kullan&#305;m&#305; ile alakal&#305; oldu&#287;u i&#231;in genel bir &#246;rnek yap&#305;p burdan payla&#351;ay&#305;m dedim.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Senaryomuz &#351;&#246;yle;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Logo &#252;zerindeki bir carinin logo &#252;zerindeki kodu ve ismini getiren bir sorgu yazmak istiyoruz. Bunun i&#231;in de Logo api'sinde ki veritaban&#305;n&#305; bozmamak ve stabil, iyi sorgular olu&#351;turmak i&#231;in tasarlanm&#305;&#351; SqlClause sorgu s&#305;n&#305;f&#305;n&#305; kullanaca&#287;&#305;z. Bu s&#305;n&#305;f'&#305; kullanarak yazd&#305;&#287;&#305;n&#305;z sorgular kesinlikle logo'nun sevece&#287;i sorgular olup, sistem &#252;zerinde herhangi bir probleme neden olmaz, kendileride zaten bu y&#246;ntemi &#246;neriyorlar.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;link rel=&quot;File-List&quot; href=&quot;file:///C:\Users\oguzhan\AppData\Local\Temp\msohtmlclip1\01\clip_filelist.xml&quot; style=&quot;font-style: italic;&quot; /&gt;&lt;link rel=&quot;themeData&quot; href=&quot;file:///C:\Users\oguzhan\AppData\Local\Temp\msohtmlclip1\01\clip_themedata.thmx&quot; style=&quot;font-style: italic;&quot; /&gt;&lt;link rel=&quot;colorSchemeMapping&quot; href=&quot;file:///C:\Users\oguzhan\AppData\Local\Temp\msohtmlclip1\01\clip_colorschememapping.xml&quot; style=&quot;font-style: italic;&quot; /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;TR&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; Name=&quot;Normal (Web)&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&amp;lt;!--
 /* Font Definitions */
 @font-face
	{font-family:&amp;quot;Cambria Math&amp;quot;;
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:162;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:&amp;quot;Arial Unicode MS&amp;quot;;
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:128;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-134238209 -371195905 63 0 4129279 0;}
@font-face
	{font-family:&amp;quot;\@Arial Unicode MS&amp;quot;;
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:128;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-134238209 -371195905 63 0 4129279 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&amp;quot;&amp;quot;;
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;
	mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;
	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;
	mso-fareast-language:EN-US;}
p
	{mso-style-unhide:no;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:&amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 70.85pt 70.85pt;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&amp;gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:&quot;Table Normal&quot;;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:&quot;Times New Roman&quot;;
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:&quot;Times New Roman&quot;;
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;span style=&quot;font-size: 10pt; font-style: italic;&quot;&gt;Unity Object
kullan&#305;c&#305;lara query yazmak i&#231;in IQuery nesnesini sa&#287;lam&#305;&#351;t&#305;r. IQuery nesnesi
ile Select tipindeki queryleri &#231;al&#305;&#351;t&#305;rmak hem &#231;ok kolay hemde &#231;ok h&#305;zl&#305;d&#305;r.
Querylerle veri ili&#351;kisini bozabilece&#287;inden insert, update veya delete
tipindeki queryleri &#231;al&#305;&#351;t&#305;rma tavsiye edilmez, fakat IQuery nesnesi bu t&#252;r queryleri
&#231;al&#305;&#351;t&#305;rman&#305;zada izin verecektir. &lt;o:p /&gt;&lt;/span&gt;

&lt;p style=&quot;margin: 0cm 0cm 0.0001pt; text-align: justify; font-style: italic;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;IQuery nesnesini kullanarak iki &#351;ekilde SQL c&#252;mleleri
olu&#351;turabiliriz. &#304;lk y&#246;ntem SQL c&#252;mlesini direct olarak Statement &#246;zelli&#287;ine
ge&#231;ip OpenDirect veya Execute metodlar&#305;yla &#231;al&#305;&#351;t&#305;rmak veya SQL Clause'lar
yard&#305;m&#305;yla olu&#351;turmak. Statement &#246;zelli&#287;ini kullanarak SQL c&#252;mlelerini
olu&#351;turursak veri taban&#305;na ba&#287;&#305;ml&#305; hale geliriz. MS SQL Server i&#231;in yazd&#305;&#287;&#305;m&#305;z
bir sorgu ORACLE veya LBS UNITY program&#305;n&#305;n destekledi&#287;i ba&#351;ka bir sunucuda
&#231;al&#305;&#351;mayabilir. Veri taban&#305;na ba&#287;&#305;ml&#305;l&#305;&#287;&#305; ortadan kald&#305;rmak i&#231;in SQL Clause'lar
olu&#351;turulmu&#351;tur. Clause'lar yard&#305;m&#305;yla sorgumuzun belli k&#305;s&#305;mlar&#305;n&#305; tan&#305;mlar,
sorgunun birle&#351;tirilme k&#305;sm&#305;n&#305; UnityObject'e b&#305;rak&#305;r&#305;z. UnityObject
tan&#305;mlar&#305;m&#305;z&#305; al&#305;r, UConfig program&#305;m&#305;zda belirti&#287;imiz veritaban&#305; format&#305;na
kendisi &#231;evirir. Clauselar&#305; kullanmak biraz i&#351;y&#252;k&#252; getirmekle beraber
veritaban&#305; ba&#287;&#305;ml&#305;l&#305;&#287;&#305;n&#305; ortadan kald&#305;r&#305;r. &lt;span style=&quot;text-decoration: underline;&quot;&gt;Tan&#305;mlad&#305;&#287;&#305;n&#305;z sorgular LBS Unity
program&#305;n&#305;n destekledi&#287;i ve ilerde destekleyebilece&#287;i ortamlara ek bir i&#351;lem
yapman&#305;za gerek kalmadan sorunsuz &#231;evrilip &#231;al&#305;&#351;t&#305;r&#305;lacakt&#305;r&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gelelim kod &#246;rne&#287;ine;&lt;br /&gt;&lt;br /&gt;Ben .Net &#252;zerinde C# kullanarak bir console uygulamas&#305; olarak geli&#351;tirdim.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160; class Program&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ARP_List();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void ARP_List()&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bool eof = false;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //COM bile&#351;eni referans&#305; olu&#351;turuluyor&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;font-weight: bold;&quot;&gt;UnityApplication unity = new UnityApplication();&lt;/span&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (unity.Connect())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Logo kullan&#305;c&#305;s&#305; ile giri&#351; yap&#305;l&#305;yor&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (unity.UserLogin(&amp;quot;LOGO_KULLANICISI&amp;quot;, &amp;quot;SIFRE&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Hangi firma &#252;zerinde i&#351;lem yap&#305;laca&#287;&#305; &amp;quot;firma no&amp;quot; ile belirleniyor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (unity.CompanyLogin(310))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //Yeni bir sql sorgusu &#231;al&#305;&#351;t&#305;rmak istedi&#287;imizi belirtiyoruz.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Query qr = unity.NewQuery();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Gerekli olan alanlar&#305; (field) SelectClause ile belirtiyoruz.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;background-color: rgb(51, 255, 51);&quot;&gt;qr.SQLClause.SelectClause.New(&amp;quot;A.CODE&amp;quot;, &amp;quot;code&amp;quot;);&lt;/span&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;background-color: rgb(51, 255, 51);&quot;&gt;qr.SQLClause.SelectClause.New(&amp;quot;A.DEFINITION_&amp;quot;, &amp;quot;def&amp;quot;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Hangi tablo ile veri i&#351;leyece&#287;imizi belirtiyoruz.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;background-color: rgb(51, 255, 0);&quot;&gt;qr.SQLClause.FromClause.NewTable(&amp;quot;LG_310_CLCARD&amp;quot;, &amp;quot;A&amp;quot;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Sorgumuzun kriterlerini belirtiyoruz.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Burda CODE'u 100'e e&#351;it olan firmalar listeleniyor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;background-color: rgb(51, 255, 0);&quot;&gt;qr.SQLClause.WhereClause.New(&amp;quot;A.CODE&amp;quot;, RelationalOperator.roEqual, &amp;quot;100&amp;quot;, LogicalOperator.loNone);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //SQLClause ile olu&#351;turulan sorgunun &#231;&#305;kt&#305;s&#305; Statement &#246;zelli&#287;ine atan&#305;yor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span style=&quot;background-color: rgb(51, 255, 0);&quot;&gt;qr.Statement = qr.SQLClause.SQL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Sorguyu &#231;al&#305;&#351;t&#305;r&#305;yoruz.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (qr.OpenDirect())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; eof = qr.First(); //&#304;lk kay&#305;t isteniyor. Yoksa false d&#246;ner;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //First(); ile al&#305;nan ilk kay&#305;t bilgisi okunuyor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while (eof)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;{0}\t{1}&amp;quot;, qr.QueryFields[0].Value,&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; qr.QueryFields[1].Value);&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; eof = qr.Next(); // Sonraki kay&#305;t isteniyor. Yoksa false d&#246;ner;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; qr.Close(); // Sorgumuzu kapat&#305;yoruz.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; unity.CompanyLogout();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; unity.UserLogout();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; unity.Disconnect();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br /&gt;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;A&#231;&#305;klamalar&#305; kodun i&#231;ine yazd&#305;&#287;&#305;m i&#231;in tekrardan a&#231;&#305;klamak gere&#287;i duymad&#305;m.&lt;br /&gt;&lt;br /&gt;Umar&#305;m yard&#305;mc&#305; olur...&lt;br /&gt;&lt;/span&gt;
</description>
<pubDate>14.01.2010</pubDate>
<link>http://www.oguzhan.info/?516/Logo+Unity+API%27de+SqlClause+Kullan%26%23305%3Bm%26%23305%3B</link>
<guid>http://www.oguzhan.info/?516/Logo+Unity+API%27de+SqlClause+Kullan%26%23305%3Bm%26%23305%3B#516</guid>
</item>

<item>
<title>Struct'dan haberdar olman&#305;z yetmez, kullanman&#305;z gerekir</title>
<description>
Yaz&#305;l&#305;m
geli&#351;tirirken bizi s&#305;rtlayan programlama &#231;at&#305;s&#305;n&#305;n &#246;zelliklerini tek
tek ve &#231;ok ayr&#305;nt&#305;l&#305; bilmemiz her zaman m&#252;mk&#252;n olmuyor, fakat baz&#305;
&#246;zellikler var ki hem geli&#351;tirilen program&#305;n kalitesini, hem de
performans&#305;n&#305; b&#252;y&#252;k &#246;l&#231;&#252;de etkileyebiliyor. Bu etkiyi C# programlama
dilinde yaratabilecek &#246;zelliklerden bir tanesi de &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ah19swz4.aspx&quot; target=&quot;_blank&quot;&gt;Struct&lt;/a&gt; (Yap&#305;) veri
tipidir ve konuda budur.&lt;br /&gt;&lt;br /&gt;Bilindi&#287;i gibi &lt;span style=&quot;font-weight: bold;&quot;&gt;Struct&lt;/span&gt; ile yap&#305;labilen
her i&#351;lemi ve daha fazlas&#305;n&#305; &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/0b0thckt.aspx&quot; target=&quot;_blank&quot;&gt;Class&lt;/a&gt; ilede yap&#305;labiliyor. Peki neden
Struct kullanal&#305;m? diye sorabilirsiniz. A&#351;a&#287;&#305;da bu sorunun cevab&#305;n&#305;
kendi tecr&#252;belerime dayanarak vermeye &#231;al&#305;&#351;t&#305;m.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Struct
bir de&#287;er t&#252;r&#252; oldu&#287;u i&#231;in olu&#351;turuldu&#287;unda &lt;a href=&quot;http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx&quot;&gt;Stack&lt;/a&gt; bellek b&#246;lgesinde
tutulur. Stack bellek b&#246;lgesinde yeni bir nesne tan&#305;mlamak ve nesneye
eri&#351;mek, class'lar&#305;n tutuldu&#287;u &lt;a href=&quot;http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx&quot;&gt;Heap&lt;/a&gt; b&#246;lgesinden daha h&#305;zl&#305;d&#305;r.&lt;/li&gt;&lt;li&gt;Program&#305;n
struct nesnesi ile i&#351;i bitti&#287;inde &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/0xy59wtx.aspx&quot;&gt;Garbage Collector&lt;/a&gt; an&#305;nda devreye
girip laz&#305;m olmayan struct nesnelerini temizler. B&#246;ylece siz programc&#305;
olarak bu kayna&#287;&#305; i&#351;i bitti diye tekrar serbest b&#305;rakmak zorunda
kalmazs&#305;n&#305;z.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Algoritman&#305;zda Birden fazla de&#287;i&#351;keniniz varsa
bunlar&#305; tek tek y&#246;netmek yerine Struct ile bu de&#287;i&#351;kenleri tek bir
veritipi haline getirebilirsiniz.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ben &lt;a href=&quot;http://tr.wikipedia.org/wiki/Nesne_Y%C3%B6nelimli_Programlama&quot;&gt;OOP&lt;/a&gt;'nin t&#252;m
nimetlerinden yararlanmak istiyorum ama struct kadar performansl&#305; da
olsun diyorsan&#305;z yine struct i&#231;inde method, constructor, de&#287;i&#351;ken ve
indexleyici kullanabilrisiniz.&lt;/li&gt;&lt;li&gt;Struct, ayn&#305; class gibi private, public, internal, protected, protected internal de&#287;erlerini alabilir.&lt;/li&gt;&lt;li&gt;Struct'lar &#304;&#231;i&#231;e tan&#305;mlanabilir (Nested Structure) hemde &#231;ok zevkli olur.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Tabi
Struct'&#305; her zaman kullanaca&#287;&#305;z diye bir &#351;ey yok, sadece i&#351;imize
geldi&#287;i zaman kullanal&#305;m. Baz&#305; durumlarda da a&#351;a&#287;&#305;daki nedenlerden
dolay&#305; hi&#231; kullanmamal&#305;y&#305;z.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Struct'lar bir birlerinden t&#252;reyemez (Inheritance) ama birden fazla Interface'den t&#252;reyebilir.&lt;/li&gt;&lt;li&gt;Struct'lar
da yap&#305;c&#305; (Constructor) method varsay&#305;lan olarak parametresizdir ama
yinede siz kendi parametrik yap&#305;c&#305; metodlar&#305;n&#305;z&#305; tan&#305;mlamayabilirsiniz.
Herhal&#252;karda varsay&#305;lan yap&#305;c&#305; metod &#231;al&#305;&#351;acakt&#305;r.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Program&#305;n&#305;z i&#231;inde nesneler aras&#305; ba&#287;lant&#305;, kompleks ili&#351;kiler varsa struct kullanmamal&#305;s&#305;n&#305;z.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Struct'lar da statik &#252;ye tan&#305;mlayabilirsiniz ama nesneyi yaratt&#305;ktan sonra eri&#351;emezsiniz.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Struct'lar
neredeyse her y&#246;n&#252; ile Class'lara benzerler yaln&#305;z class'lardan biraz
daha k&#305;s&#305;tl&#305;d&#305;r ama daha da h&#305;zl&#305;d&#305;r. Yukar&#305;daki maddeler size nerede
struct kullanman&#305;z gerekti&#287;i hakk&#305;nda az &#231;ok fikir verebilir ama do&#287;ru
karar vermeniz i&#231;in tecr&#252;beniz olmas&#305; gerekir &#231;&#252;nk&#252; bu meslekte tecr&#252;be
her&#351;eydir ;)&lt;br /&gt;&lt;br /&gt;Class ve Struct'&#305; basit&#231;e kar&#351;&#305;la&#351;t&#305;r&#305;p aradaki
fark&#305; performans a&#231;&#305;s&#305;ndan ele almak i&#231;in basit bir test program&#305;
haz&#305;rlad&#305;m bakal&#305;m sonu&#231; nas&#305;l &#231;&#305;kacak.?&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160; class Program&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; class clsHayvanlar&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string a { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; struct srtHayvanlar&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string a { get; set; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string tmp_ = string.Empty;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stopwatch s1 = new Stopwatch();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s1.Start();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List&lt;clshayvanlar&gt; cls_list = new List&lt;clshayvanlar&gt;();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &amp;lt; 1000000; i++)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cls_list.Add(new clsHayvanlar() { a = &amp;quot;value&amp;quot; });// Heap bellek b&#246;lgesinde yer ayr&#305;l&#305;yor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tmp_ = cls_list[i].a; // Heap b&#246;lgesinden okunuyor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s1.Stop();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;class\t: {0:N2}&amp;quot;,s1.ElapsedMilliseconds);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stopwatch s2 = new Stopwatch();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s2.Start();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List&lt;srthayvanlar&gt; str_list = new List&lt;srthayvanlar&gt;();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &amp;lt; 1000000; i++)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; str_list.Add(new srtHayvanlar() { a = &amp;quot;value&amp;quot; }); // Stack bellek b&#246;lgesinde yer ayr&#305;l&#305;yor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tmp_ = str_list[i].a; // Stack b&#246;lgesinden okunuyor.&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s2.Stop();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;struct\t: {0:N2}&amp;quot;,s2.ElapsedMilliseconds);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------------&lt;br /&gt;class&#160;&#160; : 232,00 ms&lt;br /&gt;struct&#160; : &lt;span style=&quot;background-color: rgb(0, 255, 0);&quot;&gt;90,00 ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
G&#246;r&#252;ld&#252;&#287;&#252; gibi Struct lehine bariz fark var ama bu durumun tam tersi oldu&#287;u zamanlarda olabiliyor tabi bu ayr&#305; bir yaz&#305; konusu.&lt;br /&gt;&lt;br /&gt;Ben
genelde Struct'&#305; da&#287;&#305;n&#305;k verileri toparlamak, &#231;o&#287;u zamanda yeni bir
veri t&#252;r&#252; olu&#351;turmak i&#231;in kullan&#305;yorum, gerisi zaten GC'a ve
Framework'e kal&#305;yor. Genelde kulland&#305;&#287;&#305;m yap&#305; a&#351;a&#287;&#305;daki gibi. Yeni bir
veri t&#252;r&#252;ne ihtiyac&#305;m varsa bu t&#252;r&#252; yarat&#305;rken Struct kullanmam i&#351;imi
fazlas&#305;yla g&#246;r&#252;yor.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160; class Program&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static List&lt;sistem_dosyasi&gt; d_list;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d_list = new List&lt;sistem_dosyasi&gt;(Directory.GetFiles(&amp;quot;.\\&amp;quot;).Length);&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var item in Directory.GetFiles(&amp;quot;.\\&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d_list.Add(new sistem_dosyasi(&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; new FileInfo(item)));&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; struct sistem_dosyasi&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public long size;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string name;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public sistem_dosyasi(FileInfo fi)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.size = fi.Length;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.name = fi.Name;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/sistem_dosyasi&gt;&lt;/sistem_dosyasi&gt;&lt;/srthayvanlar&gt;&lt;/srthayvanlar&gt;&lt;/clshayvanlar&gt;&lt;/clshayvanlar&gt;</description>
<pubDate>11.01.2010</pubDate>
<link>http://www.oguzhan.info/?515/Struct%27dan+haberdar+olman%26%23305%3Bz+yetmez%2C+kullanman%26%23305%3Bz+gerekir</link>
<guid>http://www.oguzhan.info/?515/Struct%27dan+haberdar+olman%26%23305%3Bz+yetmez%2C+kullanman%26%23305%3Bz+gerekir#515</guid>
</item>

<item>
<title>C#'da Operator'lerin Performans&#305;</title>
<description>
Yine opensource bir uygulaman&#305;n kodlar&#305;n&#305; incelerken baz&#305; yerleri refactor etti&#287;imde daha h&#305;zl&#305; &#231;al&#305;&#351;t&#305;&#287;&#305;n&#305; g&#246;rd&#252;m. Revize etti&#287;im yerlerde genelde operator'lerin kullan&#305;m&#305; ile alakal&#305;yd&#305;. B&#246;yle bir ka&#231; gereksiz ve performans d&#252;&#351;&#252;r&#252;c&#252; kod ile kar&#351;&#305;la&#351;&#305;nca da operat&#246;r performans'&#305; ile ilgli bir&#351;eyler yazmaya kadar verdim ;)&lt;br /&gt;&lt;br /&gt;S&#305;k s&#305;k kulland&#305;&#287;&#305;m ve kullanmaya dikkat etti&#287;im karar verici operat&#246;rlerin kullan&#305;m yerleri ve kar&#351;&#305;la&#351;t&#305;rmalar&#305;n&#305; basit olarak g&#246;steren giri&#351; seviyesi bir yaz&#305; oldu.&lt;br /&gt;&lt;br /&gt;C# Condition'lar&lt;br /&gt;&lt;br /&gt;Condition'dan kast&#305;m&#305;z if, switch, :?, ?? gibi operat&#246;rlerin yerine g&#246;re kullan&#305; m&#305;, karar verme mekanizmalar&#305;n&#305;z&#305;n h&#305;zl&#305;
olmas&#305;n&#305; sa&#287;layacakt&#305;r. &#214;rnek vermek gerekirse a&#351;a&#287;&#305;daki gibi string
kar&#351;&#305;la&#351;t&#305;rmas&#305; yapacaksan&#305;z switch kullanman&#305;z en performansl&#305; sonucu
alman&#305;z&#305; sa&#287;layacakt&#305;r.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void switchCondition(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; switch (hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;At&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;&#214;k&#252;z&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;E&#351;&#351;ek&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;Kedi&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;K&#246;pek&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;Ejderha&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; default:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Bu
kodun ayn&#305;s&#305;n&#305; if blok'u ile de yapman&#305;z m&#252;mk&#252;n fakat her ne olursa
olsun switch bu durumda &#231;ok daha h&#305;zl&#305; &#231;al&#305;&#351;acakt&#305;r. Gel gelelim
switch'inde k&#246;t&#252; performans verdi&#287;i yerler var. A&#351;a&#287;&#305;daki if kullan&#305;m&#305;
da switch'den daha performansl&#305; &#231;al&#305;&#351;acakt&#305;r.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static bool IfOrCondition(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
return (hayvan == &amp;quot;At&amp;quot; || hayvan == &amp;quot;&#214;k&#252;z&amp;quot; || hayvan == &amp;quot;E&#351;&#351;ek&amp;quot; ||
hayvan == &amp;quot;Kedi&amp;quot; || hayvan == &amp;quot;K&#246;pek&amp;quot; || hayvan == &amp;quot;Ejderha&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Bu kodun birde switch kar&#351;&#305;l&#305;&#287;&#305;n&#305; eleal&#305;rsak a&#351;a&#287;&#305;daki gibi yap&#305; &#231;&#305;k&#305;yor. Burda da if daha h&#305;zl&#305; karar veriyor.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static bool switchOrCondition(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; switch (hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;At&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;&#214;k&#252;z&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;E&#351;&#351;ek&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;Kedi&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;K&#246;pek&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &amp;quot;Ejderha&amp;quot;:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return true;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; default:&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Bire
bir de&#287;er kar&#351;&#305;lat&#305;r&#305;rken de == (E&#351;ittir) operat&#246;r&#252; yerine Equals
metodunu kullanman&#305;z performans&#305;n&#305;z&#305; h&#305;zland&#305;racak bir harekettir. Bunu
ufak bir test program&#305; yazarak kar&#351;&#305;la&#351;t&#305;rd&#305;m ve a&#351;a&#287;&#305;daki gibi bir
sonu&#231; &#231;&#305;kt&#305;.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void EqualsCondition(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (hayvan.Equals(&amp;quot;At&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (hayvan.Equals(&amp;quot;&#214;k&#252;z&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (hayvan.Equals(&amp;quot;E&#351;&#351;ek&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (hayvan.Equals(&amp;quot;Kedi&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (hayvan.Equals(&amp;quot;K&#246;pek&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (hayvan.Equals(&amp;quot;Ejderha&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;==&#160;&#160; &#160;&#160;&#160; &#160; : 9,7233 ms&lt;br /&gt;Equals &#160;&#160; : &lt;span style=&quot;background-color: rgb(204, 255, 0);&quot;&gt;0,8875 ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&#214;zellikle string kar&#351;&#305;la&#351;t&#305;r&#305;rken Equals kullanman&#305;z performans a&#231;&#305;s&#305;ndan yarar&#305;n&#305;za olacakt&#305;r.&lt;br /&gt;&lt;br /&gt;Baz&#305;
durumlarda da ne if, nede switch kullanman&#305;z gerekmez, Di&#287;er dillerde
oldu&#287;u gibi C#'da da Inline kullan&#305;labilecek operat&#246;rler vard&#305;r ve
gerekti&#287;inde kullan&#305;l&#305;rsa hem kodunuz daha kolay okunur hemde
performans kazan&#305;rs&#305;n&#305;z. If kullanarak uzun uzun olu&#351;turdu&#287;unuz bu kod blo&#287;unu.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static bool IfConditional(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (hayvan.Equals(&amp;quot;Ejderha&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return true;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Inline bir conditional operat&#246;r kullanarak a&#351;a&#287;&#305;daki &#351;ekilde az kod ile ve daha h&#305;zl&#305; &#231;al&#305;&#351;&#305;r vaziyete getirebilirsiniz.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static bool Conditional(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return hayvan.Equals(&amp;quot;Ejderha&amp;quot;) ? true : false;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Bu iki kod aras&#305;ndaki kar&#351;&#305;la&#351;t&#305;rma sonucunda da a&#351;a&#287;&#305;daki gibi bir sonu&#231; &#231;&#305;kt&#305;.&lt;br /&gt;&lt;br /&gt;If&#160;&#160;&#160; : 0,9262ms&lt;br /&gt;:?&#160;&#160;&#160; : &lt;span style=&quot;background-color: rgb(204, 255, 0);&quot;&gt;0,4659ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inline
kullanabilece&#287;imiz di&#287;er bir operat&#246;rde ?? operat&#246;r&#252;'d&#252;r. Herhangi bir
nesnenin null olup olmad&#305;&#287;&#305;n&#305; kontrol eder e&#287;er null ise
belirleyece&#287;iniz de&#287;eri nesnenin de&#287;erine atar. Bu operat&#246;r&#252; yine if
ile kar&#351;&#305;l&#351;at&#305;r&#305;rsak a&#351;a&#287;&#305;daki gibi bir If kullan&#305;m&#305;n&#305;.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static string IfAssigmentOp(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (hayvan == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return &amp;quot;Ejderha&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return hayvan;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;?? operat&#246;r&#252; kullanarak refactor edebiliriz.&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; static string AssigmentOp(string hayvan)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return hayvan ?? &amp;quot;Ejderha&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;Tahmin edece&#287;iniz gibi bu kod'da if blo&#287;u kullanarak olu&#351;turulmu&#351; kod'dan h&#305;zl&#305; ve k&#305;sa'd&#305;r.&lt;br /&gt;&lt;br /&gt;
</description>
<pubDate>02.01.2010</pubDate>
<link>http://www.oguzhan.info/?514/C%23%27da+Operator%27lerin+Performans%26%23305%3B</link>
<guid>http://www.oguzhan.info/?514/C%23%27da+Operator%27lerin+Performans%26%23305%3B#514</guid>
</item>

<item>
<title>Developer Neden Fazla Mesai Yapar?</title>
<description>
Nacizane kendi tecr&#252;belerimden ve g&#246;zlemlerimden yola &#231;&#305;karak. Neden projeler planland&#305;&#287;&#305; zamanda bitmez? Neden hep developer insan&#305; daha &#231;ok &#231;al&#305;&#351;mak zorunda kal&#305;r? sorular&#305;na sebep olan maddeleri s&#305;ralamaya &#231;al&#305;&#351;t&#305;m.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Developer Neden Fazla Mesai Yapar?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&#304;&#351;e projeyi planlamak ile de&#287;il, i&#351;e direkt kod yazmakla ba&#351;l&#305;yorsa. (Bknz. guerilla coding, spaghetti coding)&lt;/li&gt;&lt;li&gt;M&#252;&#351;terinin gazlamas&#305;yla gelecekte gerekli olabilecek veya hi&#231; gerekli olmayacak mod&#252;ller i&#231;in fazladan kodlama yap&#305;yorsa.&lt;/li&gt;&lt;li&gt;Her zaman her iste&#287;e cevap verebilecek, tam donan&#305;ml&#305;, m&#252;kkemmel bir yaz&#305;l&#305;m &#231;&#305;karma egosu varsa.&lt;/li&gt;&lt;li&gt;Her zaman en basit, en verimli, en h&#305;zl&#305; &#231;&#246;z&#252;m&#252; sunmay&#305; d&#252;&#351;&#252;nm&#252;yorsa.&lt;/li&gt;&lt;li&gt;Proje'nin ihtiyac&#305; olan h&#305;zl&#305; ve hatas&#305;z sistemi geli&#351;tirece&#287;ine proje i&#231;in &#231;ok hayati olmayan &amp;quot;hata loglama sistemini&amp;quot; yazmaya kalk&#305;yorsa.&lt;/li&gt;&lt;li&gt;M&#252;&#351;teri taraf&#305;nda ne istedi&#287;ini do&#287;ru anlatabilen bir partner bulam&#305;yorsa.&lt;/li&gt;&lt;li&gt;Yazd&#305;&#287;&#305; program&#305; ba&#351;kalar&#305;na/m&#252;&#351;teriye test ettirmeden, kendisi test ettikten sonra &amp;quot;tamam oldu release ediyorum&amp;quot; diyorsa.&lt;/li&gt;&lt;li&gt;Geri bildirime ve m&#252;&#351;teri testlerine &#246;nem vermiyorsa.&lt;/li&gt;&lt;li&gt;Proje'de ki bug'lar&#305; s&#252;rekli erteleme e&#287;ilimi i&#231;indeyse.&lt;/li&gt;&lt;li&gt;Bir i&#351; i&#231;in tasarlayabilece&#287;i en basit modeli tasarlamaya &#231;al&#305;&#351;m&#305;yorsa.&lt;/li&gt;&lt;li&gt;M&#252;&#351;terinin mant&#305;kl&#305; ve sa&#231;ma isteklerini analiz edip ak&#305;l s&#252;zge&#231;inden ge&#231;iremiyorsa.&lt;/li&gt;&lt;li&gt;Yan&#305;lmaktan ve yanl&#305;&#351; yapmaktan korkuyorsa.&lt;/li&gt;&lt;li&gt;Ego'sunu s&#252;rekli s&#305;rt&#305;nda ta&#351;&#305;yorsa!&lt;/li&gt;&lt;li&gt;Yeni ba&#351;layan junior developer'dan da yeni &#351;eyler &#246;&#287;renebilece&#287;inin fark&#305;nda de&#287;ilse.&lt;/li&gt;&lt;li&gt;Proje'nin nas&#305;l i&#351;leyece&#287;ini m&#252;&#351;terisine en ba&#351;tan &#246;&#287;retmiyorsa.&lt;/li&gt;&lt;li&gt;Projeyi bitirmek i&#231;in s&#252;rekli kod yazmak gerekti&#287;ine inan&#305;p, gerekti&#287;inde dinlenmeyi ve iki tek bira atmay&#305; bilmiyorsa.&lt;/li&gt;&lt;li&gt;M&#252;&#351;teriyi projeden uzak tutmak gerekti&#287;ine inan&#305;yorsa.&lt;/li&gt;&lt;li&gt;M&#252;&#351;teri taraf&#305;nda ki partnerini iyi bir &#351;ekilde y&#246;netemiyorsa.&lt;/li&gt;&lt;li&gt;Proje ba&#351;lang&#305;c&#305;nda gereksinimleri belirlemeden hareket ediyorsa.&lt;/li&gt;&lt;li&gt;Proje'de &#246;zellikleri m&#252;mk&#252;n oldu&#287;u kadar ufak par&#231;alara b&#246;lmekten ka&#231;&#305;n&#305;yorsa.&lt;/li&gt;&lt;li&gt;Art&#305;k teknik kararlar&#305; da m&#252;&#351;teri almaya ba&#351;lam&#305;&#351;sa.&lt;/li&gt;&lt;li&gt;M&#252;&#351;teriye &amp;quot;m&#252;&#351;terili&#287;ini bilmesi&amp;quot; gerekit&#287;ini a&#231;&#305;k ve net s&#246;ylemeye &#231;ekiniyorsa.&lt;/li&gt;&lt;li&gt;&#304;&#351; plan&#305;n&#305;n ne kadar s&#252;rece&#287;ine kendisi de&#287;il, m&#252;&#351;teri karar vermeye ba&#351;lam&#305;&#351;sa.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;...emektar developer&#305;m&#305;z&#305;n mesaisi bitmez, ald&#305;&#287;&#305; projeleri batar ve hep stresli mutsuz ya&#351;ar.&lt;br /&gt;&lt;br /&gt;Bunlar&#305;n hepsi benim ge&#231;mi&#351; zamanlarda yapm&#305;&#351; oldu&#287;um hatlar, &#246;nemli olan bu hatalar&#305; s&#252;rekli tekrarlamamak ki &#246;yle yapmaya &#231;al&#305;&#351;&#305;yorum. &lt;br /&gt;Asl&#305;nda b&#252;t&#252;n maddelere birer &#246;rnek verip a&#231;&#305;klamak istedim ama &#246;rnekleride okuyucu d&#252;&#351;&#252;ns&#252;n diyerekten &#252;&#351;enge&#231;li&#287;imi hakl&#305; bir &#231;er&#231;eveye oturtarak yaz&#305;y&#305; b&#246;yle b&#305;rak&#305;yorum :)
</description>
<pubDate>22.12.2009</pubDate>
<link>http://www.oguzhan.info/?513/Developer+Neden+Fazla+Mesai+Yapar%3F</link>
<guid>http://www.oguzhan.info/?513/Developer+Neden+Fazla+Mesai+Yapar%3F#513</guid>
</item>

<item>
<title>Son durum ve havadisler</title>
<description>
Ald&#305;&#287;&#305;m&#305;z k&#305;ll&#305; bir CRUD projesinin sonuna geliyoruz ve ben nihayet yapmak istediklerimin ilk ad&#305;mlar&#305;n&#305; ge&#231;te olsa atmaya ba&#351;lad&#305;m, bakal&#305;m yeni &#231;&#305;kaca&#287;&#305;m bu yolda beni neler bekleyecek. &#350;u an kesin bir &#351;ey ger&#231;ekle&#351;medi&#287;inden detayl&#305; bilgi vermek istemiyorum fakat belirli bir sekt&#246;rde ihtisasla&#351;m&#305;&#351; ve sadece o sekt&#246;re hizmet verecek yeni bir olu&#351;um i&#231;indeyim.&lt;br /&gt;&lt;br /&gt;Belirli projelerin her zamanki gibi gecikmesi, &#231;evik yaz&#305;l&#305;m geli&#351;tirme s&#252;recinin baz&#305; dezavantajlar&#305;n&#305; k&#252;lliyen ya&#351;amam&#305;z sebebiyle blog'a istedi&#287;im kalitede yaz&#305;lar yazmak i&#231;in zaman ve istek duymuyordum. Art&#305;k o d&#246;nemi yava&#351; yava&#351; atlat&#305;p biraz i&#231;erik &#252;retme hevesim geldi&#287;ine g&#246;re bu yaz&#305;y&#305;, bu site i&#231;in yeni bir d&#246;nemin ba&#351;lang&#305;c&#305; sayabilirim.&lt;br /&gt;&lt;br /&gt;C#, Perl, Phyton programlama dili konular&#305;nda yeni edindi&#287;im bilgi ve tecr&#252;beleri derinlemesine inceleyip olumlu ve olumsuz yanlar&#305;n&#305; irdelemek ve tart&#305;&#351;mak, ger&#231;ek projelerde ki etkili ipu&#231;lar&#305;n&#305; payla&#351;mak istiyorum. Umar&#305;m bu dediklerimi sistematik bir bi&#231;imde yapabilirim.&lt;br /&gt;&lt;br /&gt;Yeni y&#305;l&#305;n herkese hay&#305;rl&#305; ve u&#287;urlu olmas&#305; dile&#287;i ile...&lt;br /&gt;</description>
<pubDate>16.12.2009</pubDate>
<link>http://www.oguzhan.info/?512/Son+durum+ve+havadisler</link>
<guid>http://www.oguzhan.info/?512/Son+durum+ve+havadisler#512</guid>
</item>

<item>
<title>Windows 7, Connectify ve No Paging</title>
<description>
Windows 7 da&#287;&#305;t&#305;lmaya ba&#351;land&#305;ktan sonra hayat&#305;m&#305;z nispeten daha
kolayla&#351;t&#305;. Bende b&#246;yle hayat&#305; kolayla&#351;t&#305;ran programlar ke&#351;fettik&#231;e be&#351;eriyetle payla&#351;as&#305;m geliyor.
Asl&#305;nda tamamen arad&#305;&#287;&#305;m&#305; buraya girip bulay&#305;m diye yaz&#305;yorum.Yani
sanat, sanat i&#231;indir'i blog, blogger i&#231;indir olarak sallayabiliriz.&lt;br /&gt;
&lt;br /&gt;
Akabinde faz bir olarak windows 7'nin &#231;oklu wireless network deste&#287;i ile ba&#351;layal&#305;m.
G&#252;zel ve hayat&#305; kolayla&#351;t&#305;ran bir &#246;zellik ama benim bahsetmek istedi&#287;im
bu &#246;zellik ve detaylar&#305; de&#287;il buna ba&#287;l&#305; olarak geli&#351;tirilen &lt;a href=&quot;http://www.connectify.me/&quot;&gt;connectify&lt;/a&gt; program&#305;.&lt;br /&gt;
&#220;r&#252;n&#252; geli&#351;tirenler, &#252;r&#252;n&#252; tan&#305;mlarken &lt;span style=&quot;font-weight: bold;&quot;&gt;Software-Based Wireless&lt;/span&gt;
router olarak tan&#305;mlam&#305;&#351;lar ve cuk diye oturmu&#351;. Connectify '&#305; Windows
7 &#252;zerine kurup &#231;al&#305;&#351;t&#305;rd&#305;&#287;&#305;n&#305;zda sizi bir hotspot'a &#231;eviriyor. Daha
sonra sizde ba&#351;ka kullan&#305;c&#305;lara internet'iniz payla&#351;t&#305;rabiliyorsunuz.
&#350;imdilik belirli &lt;a href=&quot;http://www.connectify.me/docs/supportedcards.html&quot;&gt;wireless kartlar&#305;n&#305;&lt;/a&gt; destekliyor bunlarda piyasada her computer'da olan kartlar. Connectify'i &lt;a href=&quot;http://www.connectify.net&quot;&gt;burdan&lt;/a&gt; indirebilir, video'sunu &lt;a href=&quot;http://www.youtube.com/user/connectifyme&quot;&gt;burdan&lt;/a&gt; seyredebilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Gelelim faz 2'ye Windows'un page file olay&#305;. &lt;br /&gt;
Windows XP'den beri gelen bu &#246;zellik, Windows 7 ile daha da optimize
edilmi&#351; ve kullan&#305;labilir duruma gelmi&#351;. &#214;nce page file'&#305; kapatman&#305;n
yolunu yazay&#305;m daha sonra da neden kaptt&#305;&#287;&#305;m&#305;z&#305; nacizane anlatmaya
&#231;al&#305;&#351;ay&#305;m.&lt;br /&gt;
&lt;br /&gt;
Windows Tu&#351;u + Pause'a basarsan&#305;z kar&#351;&#305;n&#305;za &lt;span style=&quot;font-weight: bold;&quot;&gt;System&lt;/span&gt; penceresi gelir, daha sonra soldaki men&#252;den &lt;span style=&quot;font-weight: bold;&quot;&gt;Advanced System Settings&lt;/span&gt;'e, ard&#305;ndan &lt;span style=&quot;font-weight: bold;&quot;&gt;Advanced&lt;/span&gt; tab'&#305;na onun arkas&#305;ndan'da &lt;span style=&quot;font-weight: bold;&quot;&gt;Performance&lt;/span&gt; butonuna bast&#305;&#287;&#305;n&#305;zda &lt;span style=&quot;font-weight: bold;&quot;&gt;Performance Options&lt;/span&gt; penceresine ula&#351;m&#305;&#351; olursunuz. &lt;br /&gt;Burdan &lt;span style=&quot;font-weight: bold;&quot;&gt;Advanced&lt;/span&gt; sekmesine tklay&#305;p&lt;span style=&quot;font-weight: bold;&quot;&gt; Change&lt;/span&gt; butonuna basarsan&#305;z &lt;span style=&quot;font-weight: bold;&quot;&gt;Virtual Memory&lt;/span&gt; penceresine ula&#351;&#305;rs&#305;n&#305;z ve ortalarda olan &lt;span style=&quot;font-weight: bold;&quot;&gt;No Paging File&lt;/span&gt;'&#305; g&#246;rebilirsiniz i&#351;e bunun yan&#305;ndaki radiobutonunu i&#351;aretleyip tamam dedi&#287;inizde i&#351;lem ger&#231;ekle&#351;mi&#351; oluyor.Sonra restart edip de&#287;i&#351;ikliklerin aktif olmas&#305;n&#305; sa&#287;layacaks&#305;n&#305;z.&lt;br /&gt;
&lt;br /&gt;
Gelelim b&#246;yle bir manyakl&#305;k neden yap&#305;yoruz. Disk y&#252;z&#252;nden! Bildi&#287;iniz
gibi windows page file'&#305; esasen disk &#252;zerinde tutulan bir dosyad&#305;r.
Programlar &#231;al&#305;&#351;ma esnas&#305;nda bu disk &#252;zerinde tutulan page file'a
eri&#351;irler ve de&#287;i&#351;ken de&#287;erlerini buray yazarlar ve okurlar burda disk
&#252;zerinde I/O denilen olay&#305; yarat&#305;r. Diskiniz ne kadar zamanda yap&#305;lmak
istenen i&#351;leme tepki verebilirse windows'unu ve &#252;zerinde &#231;al&#305;&#351;an
programlar o kadar h&#305;zl&#305; veya yava&#351; &#231;al&#305;&#351;&#305;r. Diskiniz &#231;ok yava&#351;sa page
file kald&#305;rman&#305;z disk eri&#351;imini ortadan kald&#305;raca&#287;&#305; i&#231;in t&#252;m de&#287;erlerin
RAM &#252;zerinde tutulmas&#305;n&#305; sa&#287;layacakt&#305;r.Ram'e eri&#351;meniz disk'e
eri&#351;menizden kat be kat h&#305;zl&#305; oldu&#287;undan sizde g&#246;zle g&#246;r&#252;l&#252;r bir h&#305;z
kazanacaks&#305;n&#305;z.&lt;br /&gt;
Dez avantaj&#305; nedir derseniz de ram'iniz az ise pek tavsiye etmiyorum
(2GB'nin alt&#305;nda). Ram'iniz doldu&#287;unda &#231;al&#305;&#351;an programlar b&#252;y&#252;k ihtimal
hata verir ve kendini sonland&#305;r&#305;r. Fakat oyunlarda g&#252;zel performanslar
elde edilebiliyor. Ben 4GB'ram ile C&amp;amp;G Generals III'de ger&#231;ekten
g&#246;zle g&#246;r&#252;l&#252;r performans ya&#351;ad&#305;m.&lt;br /&gt;
&lt;br /&gt;
Deneyin g&#246;r&#252;n, payla&#351;&#305;n..&lt;br /&gt;
&lt;br /&gt;


</description>
<pubDate>20.11.2009</pubDate>
<link>http://www.oguzhan.info/?511/Windows+7%2C+Connectify+ve+No+Paging</link>
<guid>http://www.oguzhan.info/?511/Windows+7%2C+Connectify+ve+No+Paging#511</guid>
</item>

<item>
<title>&#304;p ucu: Asp.Net RenderControl</title>
<description>
Asp.Net sayfalar&#305;nda runat=&amp;quot;server&amp;quot; olarak i&#351;aretlenmi&#351; kontrollerin HTML textlerini alma ihtiyac&#305;n&#305;z do&#287;abilir. Bunu Web Kontrol&#252;'n&#252;n (Control) &lt;span style=&quot;font-weight: bold;&quot;&gt;RenderControl()&lt;/span&gt; metodu ile yapabiliyoruz.&lt;br /&gt;RenderControl metodu HtmlTextWriter tipinde parametre al&#305;yor, &lt;span style=&quot;font-weight: bold;&quot;&gt;HtmlTextWriter&lt;/span&gt; yap&#305;c&#305; metodunda (Constructor) da &lt;span style=&quot;font-weight: bold;&quot;&gt;StringWriter&lt;/span&gt; tipinde bir parametre al&#305;yor. Bunlar birbirlerini yazabilme kabiliyeti ile kontrol'&#252;n HTML &#231;&#305;kt&#305;s&#305;n&#305; kolayl&#305;kla eri&#351;menizi sa&#287;l&#305;yor. &#350;&#246;yle ki;&lt;br /&gt;
&lt;pre&gt;        StringWriter sw = new StringWriter();&lt;br /&gt;        HtmlTextWriter htw = new HtmlTextWriter(sw);&lt;br /&gt;        panel.RenderControl(htw); //panel burda asp.net sayfas&#305;nda herhangi bir kontrol&lt;br /&gt;        string control_text = sw.GetStringBuilder().ToString();&lt;br /&gt;&lt;/pre&gt;

B&#246;ylece control_text de&#287;i&#351;kenimize kontrol'&#252;n sayfada g&#246;sterilmekte olan HTML &#231;&#305;kt&#305;s&#305;n&#305; atam&#305;&#351; oluyoruz. Bu durum asp.net sayfas&#305;n&#305;n bir b&#246;l&#252;m&#252;n&#252;n e-posta ile g&#246;ndermek durumunda kald&#305;&#287;&#305;m zaman laz&#305;m oldu. Olduk&#231;a da kolay bir &#351;ekilde i&#351;lemi ger&#231;ekle&#351;tirdik.&lt;br /&gt;</description>
<pubDate>14.11.2009</pubDate>
<link>http://www.oguzhan.info/?510/%26%23304%3Bp+ucu%3A+Asp%2ENet+RenderControl</link>
<guid>http://www.oguzhan.info/?510/%26%23304%3Bp+ucu%3A+Asp%2ENet+RenderControl#510</guid>
</item>

<item>
<title>Fikir: Renk k&#246;rleri i&#231;in</title>
<description>&lt;img hspace=&quot;5&quot; border=&quot;0&quot; align=&quot;left&quot; vspace=&quot;1&quot; src=&quot;http://www.oguzhan.info/media/fikir_.jpg&quot; /&gt;Ortaca karde&#351;im k&#305;rm&#305;z&#305;-ye&#351;il renk k&#246;r&#252;. Esasen ya&#351;ant&#305;s&#305;na &#231;ok etki etmiyor ama a&#287; kablosu &#231;akarken, lambalara bakarken zorlan&#305;yor. Bu durumu d&#252;&#351;&#252;n&#252;rken akl&#305;ma sorunu k&#305;smen &#231;&#246;zebilecek, medikal olmayan pratik bir fikir geldi.&lt;br /&gt;&#304;nsan&#305;n her zaman yan&#305;nda ta&#351;&#305;yabilece&#287;i bir cihaz'a (cep telefonu, anahtarl&#305;k v.b.) yerle&#351;tirilen renk pigmentlerini alg&#305;layan ve yaz&#305; olarak &#231;&#305;kt&#305; veren bir sens&#246;r olsa renk k&#246;rlerinin hayat&#305; daha da &#231;ok kolayla&#351;&#305;r.&lt;br /&gt;Kendi a&#231;&#305;mdan sorunu &#351;u &#351;ekilde &#231;&#246;zebilrim:&lt;br /&gt;&lt;br /&gt;Cep telefonu kameras&#305;n&#305; kullanarak belirli bir hedefi capture eden ve hedefteki noktan&#305;n rengini alg&#305;lay&#305;p ekrana yaz&#305; olarak &#231;&#305;kt&#305; veren bir uygulama yazabilirim, hatta yazay&#305;m.&lt;br /&gt;&lt;br /&gt;Di&#287;er taraftan sens&#246;r olarak nas&#305;l &#231;&#246;z&#252;l&#252;r? veya bunu uzak mesafeler i&#231;in lazer'li yapabilirmiyiz? sorular&#305;n&#305; da merak etmeye ba&#351;lad&#305;m &#351;imdi.&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>31.10.2009</pubDate>
<link>http://www.oguzhan.info/?509/Fikir%3A+Renk+k%26%23246%3Brleri+i%26%23231%3Bin</link>
<guid>http://www.oguzhan.info/?509/Fikir%3A+Renk+k%26%23246%3Brleri+i%26%23231%3Bin#509</guid>
</item>

<item>
<title>C# DataRow Field Extension Method</title>
<description>
&lt;a href=&quot;http://alper.konuralp.gen.tr/&quot;&gt;Alper&lt;/a&gt; hoca'ya bug&#252;n veri katman&#305;m&#305;zdan kendi class'&#305;m&#305;za verileri
aktar&#305;rken null kontrol&#252;n&#252; generic yapan bir fonksiyonu nas&#305;l yazar&#305;z
diye sordum. &amp;quot;Yine ba&#351;&#305;m&#305;za i&#351; &#231;&#305;kart&#305;yorsun&amp;quot; diye bana tak&#305;l&#305;rken, ba&#351;ka
bir yerdende kodu hemen yazmaya giri&#351;ti. &lt;br /&gt;Olay burda Type oldu&#287;u i&#231;in
C#'&#305;n &lt;a href=&quot;Generic%20Type%20Parameters&quot;&gt;Generic Type Parameters&lt;/a&gt;'lardan
yararland&#305;k. B&#246;ylelikle geri d&#246;n&#252;&#351; de&#287;erini istedi&#287;imiz bir tip verip
metod i&#231;inde de null value kontrol&#252; rahatl&#305;kla yapar olduk.&lt;br /&gt;&lt;br /&gt;Metodu yazarken &lt;a href=&quot;http://alper.konuralp.gen.tr/&quot;&gt;Alper&lt;/a&gt; hoca'n&#305;n &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.data.datarow.field.aspx&quot;&gt;DataRow.Field&amp;lt;&amp;gt;&lt;/a&gt;
isminde bir extensions metod dikkatini &#231;ekti esasen bizim yazmak
istedi&#287;imiz metodun ayn&#305;s&#305;yd&#305; adamlar yazm&#305;&#351; diyip &lt;a href=&quot;http://www.red-gate.com/products/reflector/&quot;&gt;Reflector&lt;/a&gt; ile
incelemeye ba&#351;lad&#305;k. &#304;nceleyip biraz kopya &#231;ektiktan sonra DataRow'dan
gelen verinin null kontrol&#252;n&#252; yapan bu seksi &#246;rne&#287;i &#231;&#305;kard&#305;k.&lt;br /&gt;
&lt;pre&gt;        public static T GetValue&lt;t&gt;(DataRow dr, string field)&lt;br /&gt;        {&lt;br /&gt;            if (typeof(T).IsValueType)&lt;br /&gt;            {&lt;br /&gt;                if (dr[field] == DBNull.Value)&lt;br /&gt;                {&lt;br /&gt;                    return default(T);&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    return (T)dr[field];&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return (dr.IsNull(field)) ? default(T) : (T)dr[field];&lt;br /&gt;        }&lt;br /&gt;&lt;/t&gt;&lt;/pre&gt;Biraz daha detayland&#305;r&#305;p fazla uzatmaden kullan&#305;m&#305;n&#305; &#246;rneklersek:&lt;br /&gt;

&lt;pre&gt;            DataTable DataTablom = new DataTable();&lt;br /&gt;            DataTablom = VerileriYukle();&lt;br /&gt;&lt;br /&gt;            foreach (DataRow row in DataTablom.Rows)&lt;br /&gt;            {&lt;br /&gt;                int tablo_id = GetValue&amp;lt;int&amp;gt;&lt;int&gt;(row,&amp;quot;id&amp;quot;);&lt;br /&gt;                DateTime tablo_tarih = GetValue&amp;lt;DateTime&amp;gt;&lt;datetime&gt;(row, &amp;quot;tarih&amp;quot;);&lt;br /&gt;                bool durum = GetValue&amp;lt;bool&amp;gt;&lt;bool&gt;(row, &amp;quot;durum&amp;quot;);                &lt;br /&gt;            }&lt;br /&gt;&lt;/bool&gt;&lt;/datetime&gt;&lt;/int&gt;&lt;/pre&gt;
&#351;eklinde metodu kullanabilirsiniz. Esasen .Net tak&#305;m&#305; bizim yerimize Field&amp;lt;&amp;gt; metodunu zaten yazm&#305;&#351;. Bu metodu kullanmak baz&#305; durumlarda tam emin olmamakla birlikte daha stabil bir kontrol sa&#287;lar d&#252;&#351;&#252;ncesindeyim. Metodu kullanmak i&#231;n System.Data.DataSetExtensions.dll'ini projenize referans vermeniz gerekir. Reflector ile inceleyeceksenizde yine bu dll dosyas&#305;n&#305; disassembly etmeniz gerekir.&lt;br /&gt;&lt;br /&gt;Field&amp;lt;&amp;gt; Extension'una &#246;rnek vermek gerekirse:&lt;br /&gt;

&lt;pre&gt;            DataTable DataTablom = new DataTable();&lt;br /&gt;            DataTablom = VerileriYukle();&lt;br /&gt;&lt;br /&gt;            foreach (DataRow row in DataTablom.Rows)&lt;br /&gt;            {&lt;br /&gt;                int tablo_id = row.Field&amp;lt;int&amp;gt;&lt;int&gt;&lt;int&gt;(&amp;quot;id&amp;quot;);&lt;br /&gt;                DateTime tablo_tarih = row.Field&amp;lt;DateTime&amp;gt;&lt;datetime&gt;&lt;datetime&gt;(&amp;quot;tarih&amp;quot;);&lt;br /&gt;                bool durum = row.Field&amp;lt;bool&amp;gt;&lt;bool&gt;&lt;bool&gt;(&amp;quot;durum&amp;quot;);                &lt;br /&gt;            }&lt;br /&gt;&lt;/bool&gt;&lt;/bool&gt;&lt;/datetime&gt;&lt;/datetime&gt;&lt;/int&gt;&lt;/int&gt;&lt;/pre&gt;
&#351;eklinde kulllan&#305;m&#305; var. Metodun mant&#305;&#287;&#305;n&#305; kavrad&#305;ktan sonra tabiki
DataRow.Field Extension Metodunu kullan&#305;yorum. Ufak bir detay ama bu
kontrolleri yapmazsan&#305;z data access katman&#305;ndaki tutars&#305;z veriler size
bug, sorun, bir s&#252;r&#252; hata ekran&#305; ve mutsuz kullan&#305;c&#305;lar olarak geri
d&#246;necektir...&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Bu arada &lt;a href=&quot;http://www.twitteramesaj.com&quot;&gt;twitteramesaj.com&lt;/a&gt; olarak a&#231;t&#305;&#287;&#305;m&#305;z ufak porjemizde bizi destekleyen bir sponsor bulduk. Bize sa&#287;layacaklar&#305; gms modem ile daha stabil ve h&#305;zl&#305; bir alt yap&#305;m&#305;z olacak yoksa benim telefon'a kalsak 10 sms den sonra hararet yap&#305;yor, kullan&#305;c&#305;lar'da sms g&#246;nderdik yazmad&#305; diye k&#305;z&#305;yorlar :)&lt;/span&gt;&lt;br /&gt;

</description>
<pubDate>17.10.2009</pubDate>
<link>http://www.oguzhan.info/?508/C%23+DataRow+Field+Extension+Method</link>
<guid>http://www.oguzhan.info/?508/C%23+DataRow+Field+Extension+Method#508</guid>
</item>

<item>
<title>twitter'a sms (txtr)</title>
<description>
&lt;a href=&quot;http://twitter.com/maniaction&quot;&gt;&lt;img vspace=&quot;0&quot; hspace=&quot;0&quot; border=&quot;0&quot; align=&quot;right&quot; src=&quot;http://www.oguzhan.info/txtr/Img/tms.jpg&quot; /&gt;&#214;zkan&lt;/a&gt;'&#305;n fikir vermesiyle
ufak bir Twitter uygulamas&#305; yazd&#305;m. Twitter'&#305;n T&#252;rkiye'ye SMS hizmeti
vermemesinden yola &#231;&#305;karak insanlar&#305;n i&#351;ine yarayacak bir
uygulama/servis oldu. Tabi kullan&#305;l&#305;r m&#305; bilmem?&lt;br /&gt;Uygulamaya twitter hesab&#305;n&#305;z&#305; kullanarak izin verip, telefon numaran&#305;z&#305; tan&#305;t&#305;yorsunuz daha sonra &lt;font size=&quot;1&quot; style=&quot;font-weight: bold;&quot;&gt;+90 554 993 2429&lt;/font&gt; numaras&#305;na durumunuz ile ilgil k&#305;sa mesaj at&#305;yorsunuz ve twitter durumunuz g&#252;ncelleniyor.&lt;br /&gt;
&lt;br /&gt;
Servisi kullanabilmek i&#231;in &lt;a href=&quot;../txtr&quot;&gt;http://www.oguzhan.info/txtr&lt;/a&gt; adresinden (&#350;imdilik. Beta testlerinden sonra &lt;span style=&quot;text-decoration: underline;&quot;&gt;twitteramesaj.com&lt;/span&gt;
adresine alaca&#287;&#305;z) &amp;quot;Hemen Kullanmak &#304;stiyorum&amp;quot; butonuna basman&#305;z daha
sonra twitter.com &#252;zerinden oturum a&#231;man&#305;z ve cep telefonunuzu servise
tan&#305;tman&#305;z gerekiyor. &#304;nsanlar bu yeni servise g&#252;venmez ve &#351;ifrelerini
vermek istemezler diye Twitter'&#305;n oAuth API'sini kullanarak
kullan&#305;c&#305;lar&#305;n g&#252;venli oturum a&#231;malar&#305;n&#305; ve kendilerini tan&#305;tmalar&#305;n&#305;
sa&#287;lad&#305;k.&lt;br /&gt;
&lt;br /&gt;
Sms gateway olarak &lt;a href=&quot;http://twit88.com/blog/2009/09/20/messagingtoolkit-sms-library-community-edition/&quot;&gt;MessagingToolkit&lt;/a&gt;
k&#252;t&#252;phanesini kulland&#305;m. Her ne kadar COM' portlar&#305; ile ilgili sorun
&#231;&#305;karsada open source oldu&#287;u i&#231;in bir ka&#231; patch yazd&#305;ktan sonra adam
ettik. Sms notification olay&#305;n&#305;n &#231;al&#305;&#351;mas&#305; i&#231;inde &amp;quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;AT+CNMI&lt;/span&gt;&amp;quot; modem komutunu
destekler nitelikte bir telefon olmas&#305; laz&#305;m yoksa bu olay
tetiklenmiyor ve kendiniz bir watchdog yazman&#305;z gerekiyor. Benim
kulland&#305;&#287;&#305;m Motorola telefonda AT+CNMI destekler nitelikteydi
(Nokia'lar bu komutu k&#252;lliyen desteklemiyor).&lt;br /&gt;
&lt;br /&gt;
Veritaban&#305; olarak &lt;a href=&quot;http://www.sqlite.org/&quot;&gt;SQLite&lt;/a&gt; kulland&#305;m h&#305;zl&#305;, basit, i&#351; g&#246;ren bir &#351;ey. Twitter'a &lt;a href=&quot;http://oauth.net/&quot;&gt;oAuth&lt;/a&gt; haberle&#351;mesi i&#231;in daha &#246;nce &lt;a href=&quot;http://www.voiceoftech.com/swhitley/&quot;&gt;Shannon Whitley&lt;/a&gt;'in yazm&#305;&#351; oldu&#287;u &lt;a href=&quot;http://www.voiceoftech.com/swhitley/?p=681&quot;&gt;Twitter oAuth&lt;/a&gt; s&#305;n&#305;f&#305;n&#305; kulland&#305;m. Farkl&#305; &#246;rneklerine &lt;a href=&quot;http://apiwiki.twitter.com/OAuth-Examples&quot;&gt;http://apiwiki.twitter.com/OAuth-Examples&lt;/a&gt; adresinden eri&#351;ebilirsiniz.&lt;br /&gt;
&lt;br /&gt;Telefon numaras&#305;n&#305; daha &#246;nce at&#305;l durumdaki avea hatt&#305;n numaras&#305; olarak belirledim&#160; +90 554 993 2429 tabi daha seksi bir numarada belirleyebilirdim ama eldeki malzeme bu.&lt;br /&gt;&lt;br /&gt;&#350;imdi telefonu &#351;arj'a takt&#305;m bir taraftanda bilgisayara ba&#287;l&#305; sms bekliyor. &lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Cc-by_white.svg/25px-Cc-by_white.svg.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Son olarak sitenin projeler b&#246;l&#252;m&#252;n&#252; g&#252;ncelledim ve blog'larda ki modaya uyarak sosyal ileti&#351;im antenlerimi sa&#287; &#252;st k&#246;&#351;eye menemen testtisi gibi dizdim. &#350;imdi trendy bir blog oldu diye kendimi kand&#305;r&#305;yorum oh oh ne g&#252;zel.&lt;br /&gt;

</description>
<pubDate>15.10.2009</pubDate>
<link>http://www.oguzhan.info/?507/twitter%27a+sms+%28txtr%29</link>
<guid>http://www.oguzhan.info/?507/twitter%27a+sms+%28txtr%29#507</guid>
</item>

<item>
<title>Logo Unity API (Lobject.dll)</title>
<description>
En son geli&#351;tirdi&#287;im CMS projesinde web &#252;zerinden ger&#231;ekle&#351;en olaylar&#305;n
(&lt;span style=&quot;font-style: italic;&quot;&gt;sipari&#351;, kredi kart&#305; i&#351;lemi, yeni kullan&#305;c&#305; gibi&lt;/span&gt;) Logo program&#305;na
aktar&#305;lmas&#305; &#246;zelli&#287;ini eklerken Logo ile tan&#305;&#351;t&#305;m. Gayet g&#252;zel, belirli
disiplinlere g&#246;re yaz&#305;lm&#305;&#351; bir ERP program&#305; Logo. &lt;br /&gt;Logo'da ki belirli
mod&#252;llere nas&#305;l verileri aktar&#305;r&#305;z diye d&#252;&#351;&#252;n&#252;rken Logo'nun COM+ olarak
da&#287;&#305;t&#305;lan API'sinin oldu&#287;unu ke&#351;fettik ve projemize logo entegrasyonunu
bu API ile ger&#231;ekle&#351;tirmeye karar verik. Ger&#231;i ba&#351;ka &#351;ans&#305;m&#305;zda yoktu hani ;)&lt;br /&gt;&lt;br /&gt;API'yi kullanmaya karar verdikten
sonra ya&#351;ad&#305;&#287;&#305;m&#305;z ilk s&#305;k&#305;nt&#305; d&#246;k&#252;man ve kullan&#305;m ile ilgili &#231;e&#351;itli
&#246;rneklerin &#231;ok k&#305;s&#305;tl&#305; olmas&#305; oldu. Bu duruma hayret ederken me&#287;erse
i&#351;in g&#246;r&#252;nmeyen k&#305;s&#305;mlar&#305;n&#305;nda var oldu&#287;unu &#246;&#287;rendik. Logo bu API'yi
sadece &#231;&#246;z&#252;m ortaklar&#305;na veriyormu&#351; ve &#231;&#246;z&#252;m orta&#287;&#305; olabilmek i&#231;inde
Logo taraf&#305;ndan verilen API e&#287;itimini al&#305;p, e&#287;itim sonunda yap&#305;lacak
s&#305;navdan'da en az 70 (&lt;span style=&quot;font-style: italic;&quot;&gt;Kesin bir bilgi de&#287;il bir &#231;&#246;z&#252;m orta&#287;&#305;ndan
duydum&lt;/span&gt;.) alman&#305;z gerekiyormu&#351;. Daha sonra bu API'yi kullanmaya hak
kazan&#305;yormu&#351;uz.&lt;br /&gt;&lt;br /&gt;Birde i&#351;in Lisanslama taraf&#305; var. Logo paketine
API'nin kullan&#305;lmas&#305; i&#231;in ek bir lisans al&#305;nmas&#305; gerekiyormu&#351;. Ayr&#305;ca
bu API'yi kullanarak bir yaz&#305;l&#305;m geli&#351;tiriyorsan birde Geli&#351;tirme
Lisans&#305; al&#305;yormu&#351;sun (san&#305;r&#305;m 500$ civar&#305;ndayd&#305;) ve sonra yasal olarak
bu API'yi kullanabiliyorsun.&lt;br /&gt;&lt;br /&gt;Ba&#351;ka bir enteresan nokta ise Logo API sadece logo'nun &#231;al&#305;&#351;t&#305;&#287;&#305; makina &#252;zerinde i&#351; g&#246;r&#252;yor ve logo'ya
ba&#287;lant&#305; sa&#287;l&#305;yor. Ba&#351;ka bir sunucu &#252;zerinde &#231;al&#305;&#351;t&#305;ram&#305;yorsunuz. Biz tasarlarken internet &#252;zerindeki ki sunucumuzda bu api'yi kullan&#305;p uzaktaki logo'ya api ile ba&#287;lan&#305;p kullan&#305;r&#305;z diye d&#252;&#351;&#252;nm&#252;&#351;t&#252;k ama olmad&#305;.. &lt;i&gt;(Ger&#231;i teknik olarak
ba&#351;ka bir makina &#252;zerinde 'de &#231;al&#305;&#351;t&#305;rabiliyorsun gerekli d&#252;zenlemeleri
yapt&#305;ktan sonra ama biraz illegal oluyor.)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;API son derece
ba&#351;ar&#305;l&#305; ve kullan&#305;m&#305; kolay (Yaz&#305;n&#305;n ilerleyen k&#305;s&#305;mlar&#305;da bir ka&#231;
&#246;rnek de&#287;inece&#287;im) bir Nesne olarak tasarlanm&#305;&#351; ve full xml deste&#287;i
var, ayr&#305;ca veritaban&#305;ndan ba&#287;&#305;ms&#305;z olarak &#231;al&#305;&#351;&#305;yor ve API'deki
gerekli nesneleri kullan&#305;rsan&#305;z sizin yazd&#305;&#287;&#305;n&#305;z program&#305;n&#305;zda
veritaban&#305; ba&#287;&#305;ms&#305;z &#231;al&#305;&#351;m&#305;&#351; oluyor. Benim burda dikkatimi &#231;eken ve
ho&#351;uma gitmeyen &#351;ey ise &#199;&#246;z&#252;m Ortaklar&#305;n&#305;n (Tabi hepsi de&#287;il benim
kar&#351;&#305;la&#351;t&#305;klar&#305;m) bu API'ye bir &#246;c&#252; gibi bakmas&#305; ve herhangi bir API
yard&#305;m&#305;nda i&#351;i abart&#305;p fai&#351; fiyatlar istemesiydi. Kim'den yard&#305;m
istesek ya yanl&#305;&#351; y&#246;nlendirildik ya da yard&#305;mc&#305; olmak istemediler. &lt;br /&gt;&lt;br /&gt;Sonuc olarak
Logo API'si programc&#305;ya teknik a&#231;&#305;dan her i&#351;inizi g&#246;rebilece&#287;iniz bir
programlama aray&#252;z&#252; sunuyor fakat kullanabilmeniz i&#231;in bir s&#252;r&#252;
brokratik i&#351;lerle u&#287;ra&#351;man&#305;z gerekiyor.&lt;br /&gt;&lt;br /&gt;&#350;imdi gelelim &#246;rneklere. Logo'ya ba&#287;lanmak, yeni cari a&#231;mak i&#231;in &#246;rnek verece&#287;im.&lt;br /&gt;&lt;br /&gt;Projemize COM tab&#305;ndaki &lt;b&gt;UnityObjects Library&lt;/b&gt; referans&#305;n&#305; ekleyelim. &lt;br /&gt;COM tab&#305;nda UnityObject'i g&#246;remediyseniz b&#252;y&#252;k ihtimal sisteme register edilmemi&#351;tir. Logo'nun &#231;al&#305;&#351;ma klas&#246;r&#252; i&#231;indeki Lobject.dll'i bulup Regsvr32 komutu ile register etmelisiniz (Ba&#351;lat &amp;gt; &#199;al&#305;&#351;t&#305;r &amp;gt;&#160; &lt;span style=&quot;font-weight: bold;&quot;&gt;Regsvr32 lobject.dll&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Logo API ile Logo'ya Ba&#287;lant&#305;:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; UnityApplication giris = new UnityApplication();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (giris.Connect())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (giris.UserLogin(&amp;quot;kullanici&amp;quot;, &amp;quot;sifre&amp;quot;))&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (giris.CompanyLogin(1)) //Logo &#351;irket numaras&#305;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //Logoya ba&#287;lan&#305;ld&#305;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; giris.CompanyLogout();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; giris.UserLogout();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; giris.Disconnect();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Logo API ile Yeni Cari Kart&#305;:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Data ek = unity.NewDataObject(DataObjectType.doAccountsRP);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.New();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;ACCOUNT_TYPE&amp;quot;).Value = 3;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;CODE&amp;quot;).Value = &amp;quot;Firma Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TITLE&amp;quot;).Value = &amp;quot;Firma Ad&#305;&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;ADDRESS1&amp;quot;).Value = &amp;quot;Adres 1&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;ADDRESS2&amp;quot;).Value = &amp;quot;Adres 2&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;DISTRICT&amp;quot;).Value = &amp;quot;Mahalle&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TOWN&amp;quot;).Value = &amp;quot;&#304;l&#231;e&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;CITY&amp;quot;).Value = &amp;quot;&#350;ehir&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;COUNTRY&amp;quot;).Value = &amp;quot;&#220;lke&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;POSTAL_CODE&amp;quot;).Value = &amp;quot;Posta Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TELEPHONE1&amp;quot;).Value = &amp;quot;Telefon 1&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TELEPHONE2&amp;quot;).Value = &amp;quot;Telefon 2&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;FAX&amp;quot;).Value = &amp;quot;Fax&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TAX_ID&amp;quot;).Value = &amp;quot;Vergi No&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TAX_OFFICE&amp;quot;).Value = &amp;quot;Vergi Dairesi&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;TAX_OFFICE_CODE&amp;quot;).Value = &amp;quot;Veri Dairesi Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;CONTACT&amp;quot;).Value = &amp;quot;&#304;sim Soyisim&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;E_MAIL&amp;quot;).Value = &amp;quot;E- Posta&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;WEB_URL&amp;quot;).Value = &amp;quot;www web sitesi&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;GL_CODE&amp;quot;).Value = &amp;quot;Muhasebe Numaras&#305;&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;SUBSCRIBER_EXT&amp;quot;).Value = &amp;quot;Ekstra bilgi&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ek.DataFields.FieldByName(&amp;quot;LOGOID&amp;quot;).Value = &amp;quot;Firma Kodu&amp;quot;;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ValidateErrors err = ek.ValidateErrors;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (ek.Post())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;{0} firmas&#305; eklendi.&amp;quot;, &amp;quot;Firma Ad&#305;&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;{0} firmas&#305; eklenemedi.&amp;quot;, &amp;quot;Firma Ad&#305;&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &amp;lt; err.Count; i++)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;{0} - {1};&amp;quot;, err[i].Error, err[i].ID);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Logo API ile Sipari&#351; Giri&#351;i:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Data siparis = unity.NewDataObject(DataObjectType.doSalesOrderSlip);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.New();&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;NUMBER&amp;quot;).Value = &amp;quot;Sipari&#351; No&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;DATE&amp;quot;).Value = &amp;quot;Tarih&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;TIME&amp;quot;).Value = &amp;quot;Zaman&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;ARP_CODE&amp;quot;).Value = &amp;quot;Firma Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;TOTAL_NET&amp;quot;).Value = &amp;quot;Toplam Tutar&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;SALESMAN_CODE&amp;quot;).Value = &amp;quot;Sat&#305;c&#305; Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;NOTES1&amp;quot;).Value = &amp;quot;Not 1&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;NOTES2&amp;quot;).Value = &amp;quot;Not 2&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;NOTES3&amp;quot;).Value = &amp;quot;Not 3&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;NOTES4&amp;quot;).Value = &amp;quot;Not 4&amp;quot;;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;ORDER_STATUS&amp;quot;).Value = 4; //&#214;Deme&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;WITH_PAYMENT&amp;quot;).Value = 1 ; //&#214;Deme&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Lines detay = siparis.DataFields.FieldByName(&amp;quot;TRANSACTIONS&amp;quot;).Lines;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (detay.AppendLine())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;TYPE&amp;quot;).Value = 4; // Hizmet&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;MASTER_CODE&amp;quot;).Value = &amp;quot;&#220;r&#252;n Kodu&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;QUANTITY&amp;quot;).Value = &amp;quot;Say&#305;s&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;PRICE&amp;quot;).Value = &amp;quot;Tutar&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;TOTAL&amp;quot;).Value = &amp;quot;Toplam Tutar&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;UNIT_CODE&amp;quot;).Value = &amp;quot;Adet&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;PC_PRICE&amp;quot;).Value = &amp;quot;Tutar&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;TOTAL_NET&amp;quot;).Value = &amp;quot;Toplam Tutar&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;VAT_RATE&amp;quot;).Value = &amp;quot;KDV&amp;quot;;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; detay[0].FieldByName(&amp;quot;VAT_INCLUDED&amp;quot;).Value = 1; //KDV Dahil&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; siparis.DataFields.FieldByName(&amp;quot;ITEXT&amp;quot;).Value = &amp;quot;Ekstra bilgi alan&#305;&amp;quot;;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ValidateErrors err = siparis.ValidateErrors;&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (siparis.Post())&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;Sipari&#351; Eklendi&amp;quot;);&lt;br /&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;Sipari&#351; Eklenemedi&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &amp;lt; err.Count; i++)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&amp;quot;{0} - {1};&amp;quot;, err[i].Error, err[i].ID);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bir Ka&#231; Tavsiye&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nesnelere ula&#351;&#305;rken kesinlikle FieldByName metodunu kullan&#305;n bu size veritaban&#305;ndan ba&#287;&#305;ms&#305;zl&#305;k sa&#287;lar. (&lt;i&gt;FieldByName metodu XML isimlerinden veritaban&#305;na ili&#351;ki kurar&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;FieldByName(&amp;quot;TRANSACTIONS&amp;quot;).Lines mant&#305;&#287;&#305;n&#305; kavray&#305;n. Tablo ba&#287;lant&#305;lar&#305; bu nesne &#252;zerinden d&#246;n&#252;yor.&lt;/li&gt;&lt;li&gt;INSERT,
UPDATE, DELETe, SELECT i&#351;lemlerinde SQLClause nesnesini kullan&#305;n bu
size veritaban&#305;ndan ba&#287;&#305;ms&#305;zl&#305;k ve veritaban&#305;n&#305; bozmaman&#305;z&#305; sa&#287;lar. (&lt;i&gt;Biraz i&#351; y&#252;k&#252; getirir ama!&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;Field isimlerini &#246;&#287;renmek i&#231;in XML &#351;ablonlar&#305;na ba&#351;vurun. XML &#351;ablonlar&#305;n&#305; Logo program&#305;ndaki &lt;b&gt;Ara&#231;lar &amp;gt; Veri Aktar&#305;m&#305; (d&#305;&#351;ar&#305;)&lt;/b&gt; men&#252;s&#252;nden &#246;&#287;renebilirsiniz.&lt;/li&gt;&lt;li&gt;D&#246;k&#252;man isteyin. Logo Object K&#252;t&#252;phane Referans Kitab&#305; diye bir d&#246;k&#252;man var genelde &#231;&#246;z&#252;m ortaklar&#305;da var ama baz&#305;s&#305; bu d&#246;k&#252;man i&#231;in para isteyebilir. Bu d&#246;k&#252;manda i&#351;inize yarar a&#231;&#305;klamalar bulaiblirsiniz ama kod &#246;rnekleri ve i&#351;in teknik taraf&#305; pek bulunmuyor.&lt;/li&gt;&lt;/ul&gt;
</description>
<pubDate>04.10.2009</pubDate>
<link>http://www.oguzhan.info/?506/Logo+Unity+API+%28Lobject%2Edll%29</link>
<guid>http://www.oguzhan.info/?506/Logo+Unity+API+%28Lobject%2Edll%29#506</guid>
</item>

<item>
<title>XmlSerializer'da Bo&#351; Namespace</title>
<description>
Bu aralar banka api'leri ile ilgili bir s&#252;r&#252; atraksiyon yap&#305;yoruz.
Genelde hepsi xml ile haberle&#351;ti&#287;inden yo&#287;un bir &#351;ekilde Serializable
class olu&#351;turup &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx&quot;&gt;XmlSerialization&lt;/a&gt; kullan&#305;yoruz. B&#246;ylece xml nodlar&#305; ile
u&#287;ra&#351;may&#305;p daha y&#246;netilebilir kod ve daha oop programlar yazm&#305;&#351;
oluyoruz. peh!&lt;br /&gt;&lt;br /&gt;Siz aksini belirtmedik&#231;e serile&#351;tirdi&#287;iniz class'larda istenmeyen
attirubutes'leri sistem kendi ekleyebiliyor. Bunlardan en belas&#305; Xml'in
k&#246;k d&#252;&#287;&#252;m&#252;nde (XmlRoot) Namespace'i kendi kafas&#305;na g&#246;re vermesidir.
B&#246;yle olunca banka xml &#351;ablon do&#287;rulamas&#305;nda tak&#305;l&#305;p iste&#287;iniz hatal&#305; olarak geri d&#246;n&#252;yor. Bunu engellemek i&#231;in pratik bir y&#246;ntem var.
A&#351;a&#287;&#305;da bunu vermeye &#231;al&#305;&#351;ay&#305;m.&lt;br /&gt;&lt;br /&gt;&#214;rnek Class'&#305;m&#305;z&lt;br /&gt;
&lt;pre&gt;    [Serializable]&lt;br /&gt;    [XmlRoot]&lt;br /&gt;    public class Banka&lt;br /&gt;    {&lt;br /&gt;        [XmlAttribute]&lt;br /&gt;        public string Host { get; set; }&lt;br /&gt;&lt;br /&gt;        [XmlAttribute]&lt;br /&gt;        public string User { get; set; }&lt;br /&gt;&lt;br /&gt;        [XmlAttribute]&lt;br /&gt;        public string Pass { get; set; }&lt;br /&gt;&lt;br /&gt;        [XmlElement]&lt;br /&gt;        public string Amount { get; set; }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;

Bu basit class'&#305; serile&#351;tirdi&#287;imizde a&#351;a&#287;&#305;daki gibi bir xml d&#246;k&#252;man&#305; olu&#351;turulur.&lt;br /&gt;&lt;br /&gt;&amp;#65279;&amp;#65279;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;Banka
xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;
Host=&amp;quot;https://bankaapi.banka.com&amp;quot; User=&amp;quot;kahtalimici&amp;quot;
Pass=&amp;quot;michaeljacson&amp;quot;&amp;gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;Amount&amp;gt;10.50&amp;lt;/Amount&amp;gt;&lt;br /&gt;&amp;lt;/Banka&amp;gt;&lt;br /&gt;&lt;br /&gt;Serile&#351;tirme
sonucu &lt;span style=&quot;font-style: italic;&quot;&gt;xmlns&lt;/span&gt; namespace'ini sistem kendisi ekledi ki senaryomuza g&#246;re . Bunu
engellemek i&#231;in &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializernamespaces.aspx&quot;&gt;XmlSerializerNamespaces&lt;/a&gt; s&#305;n&#305;f&#305;n&#305; kullanarak bo&#351; bir
namespace'i Serile&#351;tirme metodumuza eklememiz gerekiyor. Bunun i&#231;in direkt bir metod veya &#246;zellik yok ama a&#351;a&#287;&#305;daki gibi hile i&#351;imizi g&#246;r&#252;yor.&lt;br /&gt;

&lt;pre&gt;            string XmlData;&lt;br /&gt;&lt;br /&gt;            Banka bb = new Banka();&lt;br /&gt;            bb.Amount = &amp;quot;10.50&amp;quot;;&lt;br /&gt;            bb.Host = &amp;quot;https://bankaapi.banka.com&amp;quot;;&lt;br /&gt;            bb.Pass = &amp;quot;michaeljacson&amp;quot;;&lt;br /&gt;            bb.User = &amp;quot;kahtalimici&amp;quot;;&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;font-weight: bold;&quot;&gt;XmlSerializerNamespaces ns_bos = new XmlSerializerNamespaces();&lt;/span&gt;&lt;br style=&quot;font-weight: bold;&quot; /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;            ns_bos.Add(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;/span&gt;    &lt;br /&gt;&lt;br /&gt;            MemoryStream mstr = new MemoryStream();&lt;br /&gt;            XmlTextWriter xtw = new XmlTextWriter(mstr, Encoding.UTF8);&lt;br /&gt;            XmlSerializer xs = new XmlSerializer(typeof(Banka));&lt;br /&gt;            xs.Serialize(xtw, bb, ns_bos);&lt;br /&gt;&lt;br /&gt;            UTF8Encoding enc = new UTF8Encoding();&lt;br /&gt;            XmlData = enc.GetString(mstr.ToArray());&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;Bunun sonucunda xml d&#246;k&#252;man&#305;n&#305;za otomatik atanan Namespace
attirubutes'leri gelmeyerek yanl&#305;&#351; ama daha temiz bir xml d&#246;k&#252;man&#305; elde
etmi&#351; oluyorsunuz.&lt;br /&gt;



</description>
<pubDate>05.09.2009</pubDate>
<link>http://www.oguzhan.info/?505/XmlSerializer%27da+Bo%26%23351%3B+Namespace</link>
<guid>http://www.oguzhan.info/?505/XmlSerializer%27da+Bo%26%23351%3B+Namespace#505</guid>
</item>

<item>
<title>C# ile Mikrotik API'sinin Kullan&#305;m&#305;</title>
<description>
Baz&#305; ufak &#246;l&#231;ekli a&#287;lar'da Mikrotik kullan&#305;yoruz ve baz&#305; ufak
&#246;l&#231;ekli network'lerede sald&#305;r&#305;lar ve izinsiz eri&#351;imler olabiliyor.
Bunlar&#305; m&#252;mk&#252;n oldu&#287;unca otomatize etmek gerekiyor ve bunun i&#231;inde
Mikrotik'in &lt;a href=&quot;http://wiki.mikrotik.com/wiki/API&quot;&gt;API&lt;/a&gt;'sini kullan&#305;yoruz.&lt;br /&gt;&lt;br /&gt;Genelde
senaryomuz sunucuda &#231;al&#305;&#351;an belirli servislerin olaylar&#305;n&#305; (Events)
yakalay&#305;p (&#214;rne&#287;in MSSQL'in AUDIT_LOGIN_FAILED event'&#305;) belirli de&#287;erlerin d&#305;&#351;&#305;ndaysa sisteme eri&#351;imini kapatmak
&#351;eklinde geli&#351;iyor. Bunun sisteme eri&#351;imi kapatmak k&#305;sm&#305;nda da C# ile
mikrotik'e eri&#351;ip firewall b&#246;l&#252;m&#252;n&#252;n Filter k&#305;sm&#305;na yeni bir rule
eklemek oluyor. Bunuda a&#351;a&#287;&#305;daki &#351;ekilde ger&#231;ekle&#351;tiriyoruz.&lt;br /&gt;&lt;br /&gt;Mikrotik
Wiki'sinde her dilde mikrotik'e ula&#351;abilece&#287;iniz client s&#305;n&#305;f&#305; haz&#305;r
olarak var. C# class'&#305; i&#231;in&#160;
&lt;a href=&quot;http://wiki.mikrotik.com/wiki/API_in_C_Sharp&quot;&gt;http://wiki.mikrotik.com/wiki/API_in_C_Sharp&lt;/a&gt; adresine bakabilirsiniz.
Daha sonra a&#351;a&#287;&#305;daki gibi bir kod i&#351;inizi g&#246;recektir.
&lt;pre&gt;        static void IpBlokla(string ip)&lt;br /&gt;        {&lt;br /&gt;            MK mikrotik = new MK(&amp;quot;10.5.5.1&amp;quot;); // Mikrotik IP&lt;br /&gt;            if (mikrotik.Login(&amp;quot;mikrotik_user&amp;quot;, &amp;quot;password&amp;quot;))&lt;br /&gt;            {&lt;br /&gt;                mikrotik.Send(&amp;quot;/ip/firewall/filter/add&amp;quot;);&lt;br /&gt;                mikrotik.Send(&amp;quot;=action=drop&amp;quot;);&lt;br /&gt;                mikrotik.Send(&amp;quot;=chain=forward&amp;quot;);&lt;br /&gt;                mikrotik.Send(&amp;quot;=dst-port=25&amp;quot;);&lt;br /&gt;                mikrotik.Send(&amp;quot;=protocol=tcp&amp;quot;);&lt;br /&gt;                mikrotik.Send(&amp;quot;=protocol=tcp&amp;quot;);&lt;br /&gt;                mikrotik.Send(String.Format(&amp;quot;=src-address={0}&amp;quot;,ip));&lt;br /&gt;&lt;br /&gt;                mikrotik.Send(&amp;quot;.tag=firewall&amp;quot;, true);&lt;br /&gt;&lt;br /&gt;                foreach (string h in mikrotik.Read())&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(h);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;Bu
C#'kodu Firewall b&#246;l&#252;m&#252;ne drop tipinde yeni bir rule ekliyor ve TCP
protokol&#252;n&#252;n 25. portunu blokluyor. Tabi sizin verece&#287;iniz IP
do&#287;rultusunda &#231;al&#305;&#351;&#305;yor.&lt;br /&gt;&lt;br /&gt;Burda &#246;nemli olan komut'u sonland&#305;raca&#287;&#305;n&#305;zda bir &lt;a href=&quot;http://wiki.mikrotik.com/wiki/API#Tags&quot;&gt;.tag&lt;/a&gt; belirleyip &lt;span style=&quot;font-style: italic;&quot;&gt;Send&lt;/span&gt; metodunun endsentence parametresi vermeniz. &lt;br /&gt;&lt;br /&gt;Mikrotik API'si i&#231;in ge&#231;erli bir komut olu&#351;turmak normal terminal komutu ile ayn&#305;d&#305;r buna bir &#246;rnek vermek gerekirse;&lt;br /&gt;

Terminal i&#231;in kural
&lt;pre&gt;/ip firewall filter add action=drop chain=forward disabled=no dst-port=8911 in-interface=Local protocol=tcp&lt;br /&gt;&lt;/pre&gt;

API i&#231;in kural
&lt;pre&gt;/ip/firewall/filter/add =action=drop =chain=forward =disabled=no =dst-port=8911 =in-interface=Local =protocol=tcp&lt;br /&gt;&lt;/pre&gt;
API'de olu&#351;turabilece&#287;inzi komutlar&#305;n terminalden tek fark&#305; bo&#351;luklar
yerine / (Slash) ve &#246;zelliklerin ba&#351;&#305;nada = (E&#351;ittir) i&#351;areti koyman&#305;z.&lt;br /&gt;
&lt;br /&gt;
Mikrotik'in bu &#246;zelli&#287;ini kullanarak istedi&#287;iniz kural&#305; (Lisans&#305;n&#305;z&#305;n
Level 4 ve &#252;zeri olmas&#305; gerekiyor) API ile olu&#351;turup g&#246;nderebilir ve
otomatize edebilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Son olarak haz&#305;rlad&#305;&#287;&#305;m&#305; C# projesini a&#351;a&#287;&#305;dan download edebilrisiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;../source/MkClient_Source.rar&quot;&gt;Download MkClient_Source.rar&lt;/a&gt;&lt;br /&gt;

</description>
<pubDate>14.07.2009</pubDate>
<link>http://www.oguzhan.info/?504/C%23+ile+Mikrotik+API%27sinin+Kullan%26%23305%3Bm%26%23305%3B</link>
<guid>http://www.oguzhan.info/?504/C%23+ile+Mikrotik+API%27sinin+Kullan%26%23305%3Bm%26%23305%3B#504</guid>
</item>

<item>
<title>HP IPAQ 914c BIOS G&#246;&#231;erse!</title>
<description>
&lt;a href=&quot;http://www.oguzhan.info/bak.asp?491/HP+IPAQ+914c&quot;&gt;Bende&lt;/a&gt; HP'nin &lt;a href=&quot;http://h10010.www1.hp.com/wwpc/tr/tr/ho/WF05a/215348-215348-64929-3352590-3352590-3551669.html&quot;&gt;Ipaq 914c&lt;/a&gt; modeli bir telefon var. &#220;st&#252;nde Windows 6.1
kurulu. Ge&#231;enlerde HP &lt;a href=&quot;http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareIndex.jsp?lang=en&amp;cc=us&amp;prodNameId=3551692&amp;prodTypeId=215348&amp;prodSeriesId=3551669&amp;swLang=12&amp;taskId=135&amp;swEnvOID=4036&quot;&gt;yeni bir ROM&lt;/a&gt; &#231;&#305;kartt&#305;m diye mail att&#305;. Bende
hemen g&#252;ncel, h&#305;zl&#305; s&#252;r&#252;m&#252; y&#252;kleyeyim dedim. Rom'u indirdim, &#231;al&#305;&#351;t&#305;rd&#305;m, y&#252;kleme ba&#351;lad&#305;. &#304;lerledi ilerledi %18'e geldi ve &#351;ak diye &lt;span style=&quot;font-weight: bold;&quot;&gt;Code 402 USB connection error&lt;/span&gt; hatas&#305; verdi ve i&#351;lem yar&#305;da kald&#305;.&lt;br /&gt;&lt;br /&gt;Bir umut telefonu yeniden ba&#351;latt&#305;m, ama i&#351; i&#351;ten &#231;oktan ge&#231;mi&#351;, bios son nefesini vermi&#351; ve ram &#252;zerinden &#231;oktan buhar olmu&#351; bile.&lt;br /&gt;
&lt;br /&gt;
A&#231;t&#305;m HP'ye telefon (444 71 71). Dedim sizin alet da&#287;&#305;ld&#305;. Nas&#305;l yapar&#305;z. G&#246;nderin
bize. Paras&#305;yla yapal&#305;m dediler. &#304;yi dedim kapatt&#305;m. Ben bozdum ben
yapar&#305;m diye kollar&#305; s&#305;vad&#305;m hemen googling hatta bing akabinde yahuu!&lt;br /&gt;
&lt;br /&gt;
&#350;imdi bios'u kurtarman&#305;n 2 yolu var.&lt;br /&gt;
&lt;br /&gt;
Birinci yolu bios'u SD karttan y&#252;klemek.&lt;br /&gt;
&#304;kinci yol ise HP'nin rom ile verdi&#287;i HP iPAQ Update Utility'i (hpRUU) kullanmak.&lt;br /&gt;
&lt;br /&gt;
Ben birinci yolu denedim ama olmad&#305;. Sonra ikinci yolu denedim ba&#351;ar&#305;l&#305; oldum.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Birinci Yol:&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.hp.com/pub/softpaq/sp43001-43500/sp43434.exe&quot;&gt;Burdan&lt;/a&gt; (SP43434) HP'nin yay&#305;nlad&#305;&#287;&#305; yeni ROM'u &#231;ekin. (C:\iPAQ\SP433434\ dizinine kendini a&#231;ar.)&lt;/li&gt;&lt;li&gt;Partition.nbf, amsshd.mbn, amss.mbn, configure.ini,
romupdate.dll, iacdhcp.exe, hpruu.exe, wbem.bat dosyalar&#305;n&#305; Micro SD
kart&#305;n&#305;za kopyalay&#305;n ve Hp 914c'ye tak&#305;n.&lt;/li&gt;&lt;li&gt;Telefonunu kapal&#305; konumdayken a&#351;a&#287;&#305;daki tu&#351; kombinasyonunu uygulay&#305;n. (Bootloader Mode)&lt;/li&gt;&lt;/ol&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;OK&lt;/span&gt; tu&#351;u (Telefonun sa&#287;&#305;nda) + &lt;span style=&quot;font-weight: bold;&quot;&gt;VOICE DOWN&lt;/span&gt; tu&#351;u (Ses kontrol tul&#351;ar&#305;ndan alttaki) + &lt;span style=&quot;font-weight: bold;&quot;&gt;Reset&lt;/span&gt; tu&#351;una bas&#305;n. &lt;br /&gt;
Resete bast&#305;ktan sonra OK ve VOICE DOWN tu&#351;lar&#305;na bas&#305;l&#305; tutun taki bootloader &#231;al&#305;&#351;ana kadar.&lt;br /&gt;
&lt;br /&gt;
Bundan sonra direkt microsd kart&#305;n i&#231;inden imaj&#305; &#231;ekip yaz&#305;yor ve i&#351;lem tamamlan&#305;yor. (Malesef bende tamamlanmad&#305;)&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&#304;kinci Yol:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Bu &#231;ok daha rahat bir yol. Bunda ba&#351;ar&#305;l&#305; oldum ve yeni ROM ile hayat&#305;ma devam etmekteyim.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.hp.com/pub/softpaq/sp43001-43500/sp43434.exe&quot;&gt;Burdan&lt;/a&gt; (SP43434) HP'nin yay&#305;nlad&#305;&#287;&#305; yeni ROM'u &#231;ekin. (C:\iPAQ\SP433434\ dizinine kendini a&#231;ar.)&lt;/li&gt;&lt;li&gt;C:\iPAQ\SP433434\configure.ini dosyas&#305;n&#305; a&#231;&#305;n ve TIMEOUT'u 1000 yap&#305;n. (Code 402 USB connection error vermesin diye)&lt;/li&gt;&lt;li&gt;Windows 7'de &#231;al&#305;&#351;t&#305;racaksan&#305;z Compatibility Mode'u Windows XP (Service Pack 3) se&#231;in&lt;/li&gt;&lt;li&gt;&#199;al&#305;&#351;t&#305;r&#305;rkende Run as Administrator olarak &#231;al&#305;&#351;t&#305;r&#305;n.&lt;/li&gt;&lt;li&gt;hpRUU.exe yi &#231;al&#305;&#351;t&#305;r&#305;n ve Y&#246;nergeleri izleyin (Validation ekran&#305;na kadar ilerleyin)&lt;/li&gt;&lt;li&gt;Telefonu bilgisayara USB kablosu ile ba&#287;lay&#305;n. (Telefon kapal&#305; olacak)&lt;/li&gt;&lt;li&gt;Telefon kapal&#305;yken a&#351;a&#287;&#305;daki tu&#351; kombinasyonunu uygulay&#305;n.&lt;/li&gt;&lt;/ol&gt;
&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;VOLUME UP&lt;/span&gt; (Telefonun solundaki ikili tu&#351;un &#252;stteki olan&#305;) + &lt;span style=&quot;font-weight: bold;&quot;&gt;OK&lt;/span&gt; tu&#351;u (telefonun sa&#287;&#305;nda) + &lt;span style=&quot;font-weight: bold;&quot;&gt;POWER&lt;/span&gt; tu&#351;u&lt;br /&gt;
&lt;br /&gt;
Bu kombinasyondan sonra cihaz RUU modda &#231;al&#305;&#351;acakt&#305;r. Biraz bekledikten
sonra bilgisayar&#305;n&#305;zda &#231;al&#305;&#351;an hpRUU.exe'de bu durumu alg&#305;lay&#305;p Update
i&#351;lemine ba&#351;layay&#305;m m&#305; diye soracakt&#305;r. Update butonuna bas&#305;p i&#351;lemi
ba&#351;lat&#305;n.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Kopya &#199;ekti&#287;im Kaynaklar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://forums13.itrc.hp.com/service/forums/questionanswer.do?admit=109447627+1245662266379+28353475&amp;threadId=1331327&quot;&gt;http://forums13.itrc.hp.com/service/forums/questionanswer.do?admit=109447627+1245662266379+28353475&amp;amp;threadId=1331327&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=459123&quot;&gt;http://forum.xda-developers.com/showthread.php?t=459123&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=511548&quot;&gt;http://forum.xda-developers.com/showthread.php?t=511548&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
</description>
<pubDate>22.06.2009</pubDate>
<link>http://www.oguzhan.info/?503/HP+IPAQ+914c+BIOS+G%26%23246%3B%26%23231%3Berse%21</link>
<guid>http://www.oguzhan.info/?503/HP+IPAQ+914c+BIOS+G%26%23246%3B%26%23231%3Berse%21#503</guid>
</item>

<item>
<title>Dictionary&lt;TKey, TValue&gt; 'den DataSource Nas&#305;l Olur?</title>
<description>&#350;u jenerik (Generics) kolleksiyon (Collections) s&#305;n&#305;flar&#305;n&#305; &#231;ok iyi
ak&#305;l etmi&#351;ler. Al&#305;&#351;kanl&#305;k oldu &#246;zellikle .Net 3.5 ile birlikte her
kontrol&#252;n verikayna&#287;&#305;na (datasource) generic s&#305;n&#305;ftan t&#252;remi&#351; bir nesne
tan&#305;ml&#305;yorum. B&#246;yle olunca da binbir &#231;e&#351;it generic list ile iyi
anla&#351;mak gerekiyor. Bunlardan bir taneside Dictionary!. Fazla uzatmadan
koda ge&#231;eyim.&lt;br /&gt;&lt;br /&gt;Dictionary
s&#305;n&#305;f&#305;ndan bir nesneyi DataList veya GridView'e datasource olarak
atayacaksan&#305;z a&#351;a&#287;&#305;daki a&#351;a&#287;&#305;daki gibi hareket edebilirsiniz.
&lt;pre&gt;&amp;lt;asp:DataList ID=&amp;quot;ParametreListesi&amp;quot; runat=&amp;quot;server&amp;quot; Width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;        &amp;lt;dl&amp;gt;&lt;br /&gt;             &amp;lt;dt&amp;gt;&amp;lt;label&amp;gt;Parametre&amp;lt;/label&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;             &amp;lt;dd&amp;gt;&amp;lt;input id=&amp;quot;Text1&amp;quot; type=&amp;quot;text&amp;quot; style=&amp;quot;width:150px;&amp;quot; value='&amp;lt;%# Eval(&amp;quot;Value&amp;quot;) %&amp;gt;' name='&amp;lt;%# Eval(&amp;quot;Key&amp;quot;) %&amp;gt;'/&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt;        &amp;lt;/dl&amp;gt;&lt;br /&gt;    &amp;lt;/ItemTemplate&amp;gt;        &lt;br /&gt;&amp;lt;/asp:DataList&amp;gt;&lt;br /&gt;&lt;/pre&gt;Dictionary s&#305;n&#305;f&#305; ComboBox kullan&#305;rken de &#231;ok g&#252;zel gidiyor. O da &#351;u &#351;ekilde kullan&#305;labiliyor.&lt;br /&gt;        

&lt;pre&gt;var tipler = new Dictionary&lt;int,&gt;();&lt;br /&gt;        tipler.Add(1, &amp;quot;String&amp;quot;);&lt;br /&gt;        tipler.Add(1, &amp;quot;Int&amp;quot;);&lt;br /&gt;        tipler.Add(1, &amp;quot;byte&amp;quot;);&lt;br /&gt;&lt;br /&gt;        comboBox1.DataSource = tipler;&lt;br /&gt;        comboBox1.DisplayMember = &amp;quot;Value&amp;quot;;&lt;br /&gt;        comboBox1.ValueMember = &amp;quot;Key&amp;quot;;&lt;br /&gt;&lt;/int,&gt;&lt;/pre&gt;

Ek olarak Dictionary i&#231;inde KeyValuePair diye bir Structure haz&#305;rlam&#305;&#351;lar. KeyValuePair'da a&#351;a&#287;&#305;daki gibi ger&#231;ekle&#351;iyor.

&lt;pre&gt;foreach( KeyValuePair&lt;string,&gt; kvp in tipler)&lt;br /&gt;{&lt;br /&gt;    Console.WriteLine(&amp;quot;Key = {0}, Value = {1}&amp;quot;, &lt;br /&gt;        kvp.Key, kvp.Value);&lt;br /&gt;}&lt;br /&gt;&lt;/string,&gt;&lt;/pre&gt;

Bu arada &lt;a href=&quot;http://www.ceviz.net&quot;&gt;ceviz.ne&lt;/a&gt;t'te &lt;a href=&quot;http://acehreli.org/&quot;&gt;Ali &#199;ehreli&lt;/a&gt;'nin &#231;evirdi&#287;i g&#252;zel bir yaz&#305; &lt;a href=&quot;http://www.ceviz.net/neden-d_s1_a1290.html&quot;&gt;yay&#305;nland&#305;&lt;/a&gt;. Benim ilgimi &#231;ekti, belki sizinde &#231;eker.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ceviz.net/neden-d_s1_a1290.html&quot;&gt;http://www.ceviz.net/neden-d_s1_a1290.html&lt;/a&gt;&lt;br /&gt;</description>
<pubDate>17.06.2009</pubDate>
<link>http://www.oguzhan.info/?502/Dictionary%26lt%3BTKey%2C+TValue%26gt%3B+%27den+DataSource+Nas%26%23305%3Bl+Olur%3F</link>
<guid>http://www.oguzhan.info/?502/Dictionary%26lt%3BTKey%2C+TValue%26gt%3B+%27den+DataSource+Nas%26%23305%3Bl+Olur%3F#502</guid>
</item>

<item>
<title>Mikrotikte &#214;zellikli (Spesifik) Routing</title>
<description>
Mikrotik'in routing'i
ile yapabilecekleriniz neredeyse hayal g&#252;c&#252;n&#252;ze kalm&#305;&#351;. TCP/IP &#252;zerinde
her t&#252;rl&#252; atraksiyonu bir ka&#231; hareketle kolay bir &#351;ekilde
yapabiliyorsunuz. Bu seferki senaryomuz biraz farkl&#305;.&lt;br /&gt;&lt;br /&gt;Internete
&#231;&#305;kan iki adet adsl modemimiz var ve biz, baz&#305; portlar&#305;n (&lt;span style=&quot;font-style: italic;&quot;&gt;&#214;rne&#287;in 80&lt;/span&gt;)
sadece birinci modemden &#231;&#305;kmas&#305;n&#305; istiyoruz. Biraz daha
T&#252;rk&#231;ele&#351;tirirsek, kullan&#305;c&#305; web sitelerine eri&#351;mek istedi&#287;inde sadece
birinci modemi kullans&#305;n, e-Posta hesab&#305;na bakmak istedi&#287;inde ise (&lt;span style=&quot;font-style: italic;&quot;&gt;Port
110&lt;/span&gt;) sadece ikinci modemi kullans&#305;n gibi.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&#214;zet&lt;/b&gt;&lt;br /&gt;Bu
atraksiyon i&#231;in &#246;ncelikle Winbox'&#305; kullanarak IP &amp;gt; Firewall &amp;gt;
Mangel b&#246;l&#252;m&#252;ne yeni bir kural yazmam&#305;z gerekiyor. Bu kural'&#305;
prerouting tipinde ve &amp;quot;mark routing&amp;quot; tarz&#305;nda olu&#351;turmal&#305;y&#305;z. Daha
sonra bu i&#351;aretledi&#287;imiz pakete g&#246;rede IP &amp;gt; Route List b&#246;l&#252;m&#252;n de
yeni bir route kural&#305; girmeliyiz. Bundan sonras&#305;n&#305; mikrotik zaten
yap&#305;yor...&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.oguzhan.info/media/mikrotik_routing.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;1. Ad&#305;m : Routing Mark kurallar&#305;m&#305;z&#305; yaz&#305;yoruz.&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;/ip firewall mangle &lt;/span&gt;&lt;br style=&quot;color: rgb(0, 102, 255);&quot; /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;add
action=mark-routing chain=prerouting comment=&amp;quot;&amp;quot; disabled=no dst-port=80
new-routing-mark=birinci_modem passthrough=no protocol=tcp&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 102, 255);&quot; /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;add
action=mark-routing chain=prerouting comment=&amp;quot;&amp;quot; disabled=no
dst-port=110 new-routing-mark=ikinci_modem passthrough=no protocol=tcp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Ad&#305;m: Routing List kurallar&#305;m&#305;z&#305; yaz&#305;yoruz.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;/ip route&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 102, 255);&quot; /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;add
comment=&amp;quot;&amp;quot; disabled=yes distance=1 dst-address=0.0.0.0/0
gateway=10.2.5.1 routing-mark=birinci_modem scope=30 target-scope=10&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 102, 255);&quot; /&gt;&lt;span style=&quot;color: rgb(0, 102, 255);&quot;&gt;
add comment=&amp;quot;&amp;quot; disabled=yes distance=1 dst-address=0.0.0.0/0
gateway=10.5.5.1 routing-mark=ikinci_modem scope=30 target-scope=10&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
Bu olay&#305;n sonucunda web sitelerini ziyaret ederken birinci modemi, e-posta hesab&#305;n&#305;za bakarken ise ikinci modemi kullanacaks&#305;n&#305;z.
</description>
<pubDate>11.06.2009</pubDate>
<link>http://www.oguzhan.info/?501/Mikrotikte+%26%23214%3Bzellikli+%28Spesifik%29+Routing</link>
<guid>http://www.oguzhan.info/?501/Mikrotikte+%26%23214%3Bzellikli+%28Spesifik%29+Routing#501</guid>
</item>

<item>
<title>Tart&#305;&#351;al&#305;m! Bu a&#287; nas&#305;l olmal&#305;?</title>
<description>Genelde blogger bildi&#287;i, sevdi&#287;i ve be&#287;endi&#287;i &#351;eyleri yazar. Ziyaret&#231;ileride &amp;quot;oh oh s&#252;per&amp;quot;, &amp;quot;bu g&#252;zel&amp;quot;, &amp;quot;bu &#231;irkin&amp;quot; diye yorum yapar ve blogger bir &#351;ekilde &#252;retti&#287;i i&#231;erik ile birilerine katk&#305;da bulunur. S&#252;per!&lt;br /&gt;&lt;br /&gt;Bu sefer tam tersi olsun dedim. &#214;n&#252;mdeki problemin i&#231;inden tam &#231;&#305;kamad&#305;m blog'uma dan&#305;&#351;ay&#305;m dedim. &lt;br /&gt;&lt;br /&gt;&#350;&#246;yle ki;&lt;br /&gt;&lt;br /&gt;Y&#252;z bilgisayarl&#305;k bir a&#287; var ve Internet eri&#351;imi i&#231;in 2 adet 2x32mbit adsl hat var. Bu a&#287; nas&#305;l tasarlanmal&#305; ve hangi ara&#231;lar kullan&#305;lmal&#305; ki hem y&#252;k dengesi 2 modeme payla&#351;t&#305;r&#305;ls&#305;n, hemde bilgisayarlar&#305;n bandgeni&#351;li&#287;i kontrol edilebilsin?&lt;br /&gt;&lt;br /&gt;Yollad&#305;m gitti...&lt;br /&gt;
</description>
<pubDate>06.06.2009</pubDate>
<link>http://www.oguzhan.info/?500/Tart%26%23305%3B%26%23351%3Bal%26%23305%3Bm%21+Bu+a%26%23287%3B+nas%26%23305%3Bl+olmal%26%23305%3B%3F</link>
<guid>http://www.oguzhan.info/?500/Tart%26%23305%3B%26%23351%3Bal%26%23305%3Bm%21+Bu+a%26%23287%3B+nas%26%23305%3Bl+olmal%26%23305%3B%3F#500</guid>
</item>

<item>
<title>TCMB Kurlar&#305;n&#305;n Xml Serile&#351;tirmesi</title>
<description>
T.C. Merkez Bankas&#305; kurlar&#305;n&#305;n (http://www.tcmb.gov.tr/kurlar/today.xml) C# ile serile&#351;tirilmi&#351; (XmlSerialization) hali.&lt;br /&gt;&lt;br /&gt;Baz&#305; projelerde yo&#287;un bir &#351;ekilde kullan&#305;labiliyor dolay&#305;s&#305;yla bi ufak i&#351;e yarayabilir....&lt;br /&gt;&lt;br /&gt;Be&#287;enmedi&#287;im tek &#351;ey t&#252;m t&#252;rlerin string olmas&#305;, t&#252;r d&#246;n&#252;&#351;&#252;m&#252; i&#231;in bir ka&#231; attirubutes girdim ama stabil olmad&#305;&#287;&#305;ndan string yap&#305;p ge&#231;tim (&#220;&#351;enge&#231;lik)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.oguzhan.info/source/TcmbToDay.rar&quot;&gt;Download TCMB Today&lt;/a&gt; (Vs.Net 2008)&lt;br /&gt;
</description>
<pubDate>25.05.2009</pubDate>
<link>http://www.oguzhan.info/?499/TCMB+Kurlar%26%23305%3Bn%26%23305%3Bn+Xml+Serile%26%23351%3Btirmesi</link>
<guid>http://www.oguzhan.info/?499/TCMB+Kurlar%26%23305%3Bn%26%23305%3Bn+Xml+Serile%26%23351%3Btirmesi#499</guid>
</item>

<item>
<title>Perl</title>
<description>
Perl6 yeniliklerini &#246;&#287;renince, yeni Perl'e olan ilgim daha da artt&#305;. Perl 6 ile birlikte daha okunabilir ve nesne y&#246;nelimli scriptler geli&#351;tirebilecek olmakta beni ayr&#305;ca heycanland&#305;r&#305;yor. &lt;br /&gt;&lt;br /&gt;&#350;irket i&#231;inde Linux t&#252;revlerinde Phyton kullanmaktan yanay&#305;z ama baz&#305; durumlarda perl tart&#305;&#351;&#305;lmaz performansl&#305; oldu&#287;undan bizim i&#231;in sevindirici bir olay. Merakla stabil olmas&#305;n&#305; bekliyoruz.&lt;br /&gt;&lt;br /&gt;Bu ba&#287;lamda kar&#351;&#305;la&#351;t&#305;&#287;&#305;m bir ka&#231; i&#231;eri&#287;i payla&#351;mak istedim.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://perl6.org/&quot;&gt;http://perl6.org/&lt;/a&gt; Resmi Perl 6 web sitesi&lt;br /&gt;&lt;a href=&quot;http://www.parrot.org/&quot;&gt;http://www.parrot.org/&lt;/a&gt; Virtual Machine olay&#305;.&lt;br /&gt;&lt;a href=&quot;http://rakudo.org/&quot;&gt;http://rakudo.org/&lt;/a&gt; Parrot'un Perl 6 &#231;al&#305;&#351;t&#305;rmas&#305; i&#231;in eklenti.&lt;br /&gt;&lt;br /&gt;FazlaMesai Perl Dersleri&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.fazlamesai.net/makale.php3?sid=823&quot;&gt;http://www.fazlamesai.net/makale.php3?sid=823&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.fazlamesai.net/makale.php3?sid=835&quot;&gt;http://www.fazlamesai.net/makale.php3?sid=835&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.fazlamesai.net/makale.php3?sid=845&quot;&gt;http://www.fazlamesai.net/makale.php3?sid=845&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.fazlamesai.net/makale.php3?sid=861&quot;&gt;http://www.fazlamesai.net/makale.php3?sid=861&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perl 6 ile ilgili g&#252;zel bir yaz&#305;.&lt;br /&gt;&lt;a href=&quot;http://e-bergi.com/2009/Mayis/Gelisim-Sureci-ve-Yenilikler&quot;&gt;http://e-bergi.com/2009/Mayis/Gelisim-Sureci-ve-Yenilikler&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bunun d&#305;&#351;&#305;nda perl ile ilgili bir topluluk sitesi bulunmuyor yada ben g&#246;remedim.&lt;br /&gt;
</description>
<pubDate>20.05.2009</pubDate>
<link>http://www.oguzhan.info/?498/Perl</link>
<guid>http://www.oguzhan.info/?498/Perl#498</guid>
</item>

	</channel>
</rss>
