<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Portakal</title>
	<link rel="self" href="http://planet.portakalteknoloji.com/atom.xml"/>
	<link href="http://planet.portakalteknoloji.com/"/>
	<id>http://planet.portakalteknoloji.com/atom.xml</id>
	<updated>2008-07-05T01:00:31+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="tr">
		<title type="html">Avrupa Birliği Rekabet Edebilirlik ve Yenilik Çerçeve Programı</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/07/01/14/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/07/01/14/</id>
		<updated>2008-07-01T13:43:00+00:00</updated>
		<content type="html">Avrupa Birliği 2007-2013 yılları arasında KOBİ'lere ve işletmelere yönelik olarak &amp;quot;Rekabet Edebilirlik ve Yenilik Çerçeve Programını”-CIP (Competitiveness and Innovation framework Programme) uygulayacak.  Avrupa çapındaki toplam bütçesi 3,6 milyar Avro olan program, 3 alt başlıktan oluşuyor:   &lt;p align=&quot;justify&quot;&gt; 1)  &lt;strong&gt;Girişimcilik ve Yenilik Özel Programı &lt;/strong&gt;(EIP - Entrepreneurship and Innovation Programme) Bütçesi 2.17 milyar Avro. Bu alt bileşen Sanayi ve Ticaret Bakanlığı tarafından yürütülüyor.  &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt; 2) &lt;strong&gt;Bilgi ve İletişim Teknolojileri Politikaları Destek Programı&lt;/strong&gt; (ICT Policy Support Programme) Bütçesi 728 milyon Avro. Bu alt bileşen Devlet Planlama Teşkilatı Müsteşarlığı- Bilgi Toplumu Dairesi tarafından yürütülüyor.  &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt; 3) &lt;strong&gt;Avrupa Akıllı Enerji ve Teknoloji Programına&lt;/strong&gt; (IEE - Intelligent Energy Europe Programme) Bütçesi 727 milyon Avro. Bu alt bileşen Enerji ve Tabi Kaynaklar Bakanlığı tarafından yürütülüyor.&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Aşağıdaki sitelerden, program hakkında daha fazla bilgi edinilebilir: &lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;div align=&quot;justify&quot;&gt; &lt;a href=&quot;http://ec.europa.eu/cip/index_en.htm&quot; target=&quot;_blank&quot; title=&quot;CIP&quot;&gt;http://ec.europa.eu/cip/index_en.htm&lt;/a&gt; &lt;/div&gt; &lt;/li&gt;&lt;li&gt; &lt;div align=&quot;justify&quot;&gt; &lt;a href=&quot;http://ec.europa.eu/cip/presentation_en.htm&quot; target=&quot;_blank&quot; title=&quot;CIP Programı Sunumu&quot;&gt;http://ec.europa.eu/cip/presentation_en.htm&lt;/a&gt;   &lt;/div&gt; &lt;/li&gt;&lt;/ul&gt;</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Daha iyi 7ÇP teklifleri yazmak</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/30/162/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/30/162/</id>
		<updated>2008-06-30T11:28:00+00:00</updated>
		<content type="html">&lt;p&gt;Bugün, gün boyu TÜBİTAK'ın düzenlediği bir çalıştaya katılıyorum. Çalıştayın konusu daha iyi 7ÇP proje teklifleri yazmaktı. 7ÇP ofisinden arkadaşların dışında &lt;a href=&quot;http://www.eurescom.de/&quot;&gt;Eurescom&lt;/a&gt; adlı bir danışmanlık şirketinden Milan Gupta ve &lt;a href=&quot;http://ceng.metu.edu.tr/&quot;&gt;ODTÜ Bilgisayar Mühendisliği Bölümü&lt;/a&gt;'ndeki hocalarımızdan &lt;a href=&quot;http://www.ceng.metu.edu.tr/~alpaslan/&quot;&gt;Ferda Hoca&lt;/a&gt; da çok güzel sunumlar yaptılar. &lt;/p&gt;
&lt;p&gt;Ben burada Milon Gupta'nın sabahki ilk sunumundaki notlarımı özetlemeye çalışacağım. Gupta'nın ilk sunumunun başlığı &quot;writing a good proposal&quot; yani &quot;iyi bir teklif yazmak&quot; idi. Bu sunumunda bir anlamda proje yazma işini projelendirdi. &lt;/p&gt;
&lt;p&gt;Proje yazma işinin projesinde normalde ardışık olarak gidecek olan ama işin doğası gereği adım adım biri biri ile etkileşen bir grup etkinliği sıraladı. Bunlar, şu etkinlikler: 
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Odak: &lt;/strong&gt;Proje odağının açık olması gerekiyor. Projede gerçekleştirilmek istenen fikrin özgün olmasının yanı sıra, belirgin bir katma değer sağlaması, ileride ticari uygulamalara olanak vermesi ve Avrupa çapında gerçekleştirilmesi için sebepleri olması gerekli. Özellikle tek bir ana temanın çevresinde dolaşmak önemli. Birden çok temanın arasında gidip gelen projelerin anlaşılabilir olması çok zor. İyi anlaşılamayan bir proje fikrinin düzgün değerlendirilemeyeceği de ortada. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Program ve Hedef Seçimi: &lt;/strong&gt;   Proje odağı korunduktan sonra yapılması gereken şey, projeye uygun bir fon kaynağı seçmek. Bu durumda 7ÇP içindeki çok çeşitli çağrıların dışındaki kaynakları da gözden geçirmekte yarar var. Temel olarak proje teklifinin ana temasının çağrıya yüzde yüz uyması gerekiyor. Eğer o çağrı dışındaki bir alanda başka bir hedefe de ayrıca uygunluk varsa, bunu bir avantaj olarak kullanmak da mümkün. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liderlik: &lt;/strong&gt;Liderlik ile kastettiğimiz daima bir grup içinde karar almak olmalı. Ancak bu durumda anlaşmazlıklar nedeni ile sonuca ulaşamayıp kilitleneceksek bir şekilde çözüme ulaşmamız da gerekli. Bu durumda sürecin en başında daha küçük çekirdek grup oluşturulmasında yarar var. Liderliğin çoğu kez teknik liderlik ve idari liderlik olarak  ikiye ayrıldığını, bunun da iki ortağın varlığına işaret ettiğini hatırlamak gerekli. Kimin teknik lider ve kimin idari lider olacağını belirlemek projenin sağlığı için çok önemli. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ortaklar: &lt;/strong&gt;İdeal ortağı bulmak pek kolay değil, belki de imkansız. Ancak iyi bir ortağın projede kendisine atanan görevler için gereken teknik uzmanlığa sahip olması,  daha önce 7ÇP yada benzeri projelerde kendini kanıtlamış olması, projenin sonuçlarına ilgi göstermesi, proje teklifinin yazılması sırasında emek sarfetmeye hazır olması, entellektüel sermaye konularında pragmatik bir tutum sergilemesi ve proje için idari yönetiminden destek alması gerekli.   &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ortaklaşa Yazma Süreci: &lt;/strong&gt;Ortaklaşa yazma sürecini verimli yürütebilmek için öncelikle tek ve ortak bir editörün saptanması ve herkesin bu editöre hangi katkıları ne zaman ve ne şekilde yapacakları üzerinde uzlaşması gerekli. Bu arada önemli bir not da proje teklifindeki parasal kısımların saydam biçimde hazırlanması gerektiği. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proje Yönetim Yapısı: &lt;/strong&gt;Proje yönetim yapısında Genel Kurul ve İş Paketi Liderliği gibi tipik yapıların dışında gerekli olabilecek yapıların kurulması gerekli. Ancak bazı projelerde çok fazla ortak olmayacağı için çok daha sade çözümlere yönelmek de mümkün.  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Düzenleme ve Kalite Güvence: &lt;/strong&gt;Proje metninin sunulmadan önce proje ekibi dışından birisine okutulup fikrinin alınması, hakem rehberlerini temel alan incelemelerin olması ve özellikle eksikler, yazım hataları ve tutarsızlıkların tespit edilmesi gerekli.  Bunların düzeltilmesi için gerekli çalışmaların da zaman alacağını düşünürsek, kalite güvence için en az 1 hafta zaman gerekeceğini düşünebiliriz. &lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;Gupta bir çok başka konuda da sunumlar yaptı. Yanılmıyorsam bugünkü tüm sunumlara TÜBİTAK 7ÇP ofisinin &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/http.//www.fp7.org.tr/&quot;&gt;web sitesi&lt;/a&gt;nden ulaşmak mümkün olur. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Bodoslama bilişim şirketi :)</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/161/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/161/</id>
		<updated>2008-06-29T16:53:00+00:00</updated>
		<content type="html">&lt;p&gt;Bugün iş planı yazmaya çalışan bir arkadaşa da yardım ederken ülkemizden insan manzaraları ve yanlış stratejiler üzerinde de durduk. Beyin fırtınası sırasında ortaya çıkan bazı felaket senaryolarını düşününce en az birisini blogumda ortaya koymak istedim. Belki birilerinin işine yarar. Bazı adımların aralarına kendimce parantezler açıp DOĞRU diye ifadeler koydum. Bazılarına da YORUMSUZ diye ifade koydum. Bariz yanlış olan şeyleri ise ifade etme gereği duymadım. &lt;/p&gt;

&lt;p&gt;Atılgan genç girişimci kişimiz, gazetede okuduğu haberlerden bilişim sektörünün son derece karlı bir sektör olduğunu öğrenir ve bu alanda çalışmaya karar verir. Aslında bilişim teknolojileri konusundaki bilgisi acar bir bilgisayar kullanıcısı olmakla sınırlıdır. En çok satan sayısal kameraları bilir mesela. Ancak teknik işlere de girebileceğini düşünür. 
&lt;ul&gt;
&lt;li&gt;ilk iş olarak iyi bir muhasebeci bulur (DOĞRU) ve onunla güzel bir şirket adı düşünür. Örnek olarak iyi tanınan bir firmanın adını alır. Takip eden sözcükler farklı gittiği için Ticaret Sicil Memurluğu fazla itiraz etmez.  Tabelasında ve kartvizitinde kullanacağı ilk sözcük aynı olsa ne olur (YORUMSUZ) değil mi?&lt;/li&gt;
&lt;li&gt;Arkasından şirketini kuracağı güzel bir ofis aramaya başlar. Şehrin çok nitelikli bir yerinde bir ofis bulur. Ofisin kirası cebindeki parayı iki ayda tüketecektir ama olsun hemen tutar (YORUMSUZ). Şirketi bu ofiste açar. &lt;/li&gt;
&lt;li&gt;İlk bir iki hafta içinde tabela, kartvizitler ile uğraşır. Çok havalı bir web sitesi yapar. Adını duyduğu bazı şirketlerin web sitelerinde gördüğü ifadeleri aynen kopyalar (YORUMSUZ).  Aslında o sitelerde yazan ve kendi sitesine koyduğu bazı ifadelerin ne demek olduğunu fazla bilmiyordur ama olsun müşteri çekeceğinden emindir. &lt;/li&gt;
&lt;li&gt;Sonra hasbelkader gelen ilk müşteri ile muhatap olurken görür ki, müşteri vereceği hizmeti veren kişilerin Bilgisayar Mühendisi olmasını istemektedir. Ancak kendisinin bırakın Bilgisayar Mühendisliği, teknik bir eğitimi dahi yoktur. Bu durumda hemen kendisine bazı sıfatlar uydurmak zorunda kalır. Sermaye sahibi yatırımcı olmak ve Bilgisayar Mühendisi istihdam etmek olanağı yoktur çünkü sermayesini ofis kirası ile yemiş bitirmiştir. &lt;/li&gt;
&lt;li&gt;Kendisine iş gelmeyince,  bari ihalelere gireyim der. Bu sefer de iş bitirme belgesi sorunu ortaya çıkar. İş bitirme belgesi istenmeyen işler çok küçük işlerdir ve genelde çok da karlı gözükmemektedir. Ama iş bitirme belgesi edinebilmek adına bu işlerden bir kaç tane alır (YORUMSUZ). &lt;/li&gt;
&lt;li&gt;İlk alınan işlerde teknik sorunlar çıkar. Sorunları hızlıca gidermek adına danışmanlar bulur (YORUMSUZ). Ancak bulduğu danışmanların bilgi düzeylerini ölçemediği için bir konuda iyi olan danışmanı başka konuda kullanma hatasına düşer. Bu da işlerin maliyetini yükseltir durur. Zaten pek karlı olmayan işlerden zarar eder. &lt;/li&gt;
&lt;li&gt;Bir miktar yatırım yapmak gerekli anlaşılan diyerek bankadan kredi çeker. Tabii şirketinin mizanındaki finansal değerler çok iyi olmadığı için sınırlı miktarda ve yüksek faizli kredi alabilir (YORUMSUZ).&lt;/li&gt;
&lt;li&gt;Elindeki kredinin bir miktarını daha harcayarak iş bitirme belgesini alır. Ancak bu arada çalıştırdığı kişiler ve danışmanlar ile anlaşamaz ve kavga eder. Elemanları da gidince şirketinde yine kendisi kalır. &lt;/li&gt;
&lt;li&gt;Eleman nasıl olsa bulunur, çok nitelikli olmayan elemanları danışmanlarla destekleyerek maliyerleri optimize edebiliyoruz diye düşünür ve tabelaya yatırım yapmaya karar verir. Gider parası neyse verir ve uluslar arası bir şirketin ürünlerini satma hakkını alır (YORUMSUZ). Bu hakka sahip yerli firma sayısı bini geçeli çok olmuştur ama önemsemez. Bu arada tabela, kart vizit, web sitesi, broşür, ne varsa baştan yapılır ki uluslar arası firmanın logosu kendi logosundan çok gözüksün. &lt;/li&gt;
&lt;li&gt;Şİrketin ilk yılı dolmaya yakın,  kayda değmeyen bir iki ihale almış ve ite kaka teslim etmiş, zararda, bankaya kredi taksiti ödeyen ancak tabelasında altın rengi bir yabancı firma logosu kendi logosunun iki katı büyüklüğünde bir şirketi olan atılgan girişimcimizin telefonu çalar. Adını aldığı firmanın avukatı firmasının adını değiştirmesi konusunda kibarca bir öneri getirmektedir. Muhasebecisine danışır ve şirket adını değiştirmek için gereken işlemlerin de masraf çıkartacağını öğrenerek oflamaya başlar. &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Bizim arkadaş iş planı yapmanın önemini zaten biliyordu. Bu ve benzeri senaryolar üzerinden geçince, bilişim sektörüne özel başka bir çok şeyi de görmesi gerektiğini anladı ve dersini çalışmak üzere evine döndü. Umarım bu girdi sayesinde girşimci hamuruna sahip genç arkadaşlardan ders çıkaran başkaları da olur. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Sanallaştırma, mobil yaşam, gelecek vizyonu ve özgür yazılım</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/160/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/160/</id>
		<updated>2008-06-29T09:32:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://ykomcez.blogspot.com/2006/04/endstride-herkes-sanal-virtualization.html&quot;&gt;Sanallaştırma&lt;/a&gt;nın (İng. &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtualization&quot;&gt;virtualization&lt;/a&gt;) bugün insanlara sunulduğu uygulama alanı tamamen sunucu konsolidasyonu olarak görünüyor. Bunun nedeni hazırdaki ticari ürünlerin teknik becerilerinin son derece kısıtlı olması. Örneğin bu tür araçlarla sanallaştırdığınız işletim sistemlerinin &lt;a href=&quot;http://x86virtualization.com/virtualization/virtualization-and-usb.html&quot;&gt;USB&lt;/a&gt; ve çoğu tipik kaynağa (örneğin ses kartları) erişimini ayarlamak bir türlü otomatik hale gelmiş değil. Bu nedenle ticari araçlarda istemci sanallaştırması örneklerini fazla göremiyoruz. Sanallaştırma alanında ar-ge olarak bir şeyler kurcaladığımız zaman bu sistemlerin nerede nasıl çalıştığını neleri yapıp neleri yapamayacağını görebilince bu yorumları daha kolay yapabiliyorum tabii. &lt;/p&gt;

&lt;p&gt;Bununla birlikte sanallaştırmanın esas uygulama alanlarından birisi, zaten on yıllardır &lt;a href=&quot;http://www.citrix.com&quot;&gt;Citrix&lt;/a&gt; gibi firmaların yapmakta olduğu &lt;a href=&quot;http://www.computerworld.com.tr/enine-boyuna-sanallastirma-detay_67.html&quot;&gt;uygulama&lt;/a&gt; sanallaştırması (İng. &lt;a href=&quot;http://en.wikipedia.org/wiki/Application_Virtualization&quot;&gt;application virtualization&lt;/a&gt;) olmaya devam edecek. Üstelik bu alanda pazar çok çok daha büyük olacak. Çünkü uygulama sanallaştırmasının esas istemci platformu kişisel bilgisayarlar değil mobil ve gömülü aygıtlar olacak. Burada tipik örneğimiz cep telefonları ancak cep telefonu olmayan çok çeşitli minik mobil aygıtın da türediğini göz ardı etmeyelim. Peki buradaki senaryo ne?
&lt;ul&gt;
&lt;li&gt;Malumunuz mobil ve gömülü aygıtlar için uygulama geliştirenlerin önemli bir kaygısı uygulamanın işlemciyi kullanma profiline bağlı olarak yoğun pil tüketimi. Pil ömrünü uzatmak olmazsa olmazlardan birisi. Ancak talep edilen uygulama becerileri giderek daha fazla işlemci gücü istiyor. Artan grafik beceriler, harita uygulamaları, güvenlik ihtiyacı sonucunda artan kriptografik işlemler aklıma ilk gelenler. &lt;/li&gt;
&lt;li&gt;Bu uygulamaların işlemci yoğun işlerinin pil sıkıntısı çeken mobil cihazlarda değil de sunucularda yapmak yeni bir fikir değil. Ancak bunu &lt;a href=&quot;http://tr.wikipedia.org/wiki/%C4%B0stemci-sunucu&quot;&gt;istemci sunucu mimarisi&lt;/a&gt; içinde yada uzak yordam çağrısı (İng. &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/uzak yordam çağrısı&quot;&gt;remote procedure call&lt;/a&gt; - RPC) temelli teknikler ile yapmak (buna her türlü web servisi, Java'nın kendi araçları, vs dahil) yerine uygulama sanallaştırması ile yapmak yeni bir fikir. &lt;/li&gt;
&lt;li&gt;Büyük ölçekli uygulama sanallaştırması ile mobil cihaz işletim sisteminin görevi de değişiyor. Mobil işletim sistemi artık çok sayıda sanallaştırılmış uygulamayı sunuculardan çekerek işletmenin koordinasyonundan da sorumlu. Ayrıca sunucularla karşılıklı doğrulama, yetkilendirme, hesap kullanımı (3A dediğimizde herkes &lt;a href=&quot;http://en.wikipedia.org/wiki/RADIUS&quot;&gt;Radius&lt;/a&gt;'u farketti değil mi?) işleri ile uğraşacak. &lt;/li&gt;
&lt;li&gt;Sanallaştırmanın sunucu ayağı ise istek üzerine, oturum başı (İng. per session) yada kullanım başı (İng. per use) ayağa kaldırılan ve sonra kapatılan sanallaştırılmış uygulamaları sunmak için gelişmiş yönetim becerileri ile donanacak. &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Böyle bir vizyonun gelişmesi için son derece hızlı gelişen ve özelleşebilen yazılım alt yapılarına ihtiyaç var. Geleneksel kapalı, sahipli yazılım lisans modelinin bu hızda bir geliştirme yapması mümkün değil. Bu niteliklere sahip yazılımlar üretilemez demiyorum. Sadece &lt;strong&gt;hızlı&lt;/strong&gt; üretilemez diyorum. İsterseniz dünyanın en önemli geliştiricileri ile ortak girişim (İng. joint venture) kurun, kapalı modelin geliştirme hızı yavaş olacaktır. Ancak açık geliştirme modeli sunan (bknz. &lt;a href=&quot;http://safari.oreilly.com/0596005814/osfreesoft-CHP-7&quot;&gt;burası&lt;/a&gt; ve &lt;a href=&quot;http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/&quot;&gt;şurası&lt;/a&gt; ) özgür yazılımlar bu hızı sağlayabiir. &lt;/p&gt;
&lt;p&gt;Bu nedenle gelecekteki mobil yaşam vizyonları içinde sanallaştırma ve özgür yazılım giderek daha çok karşımıza çıkacak. Sunucu tarafında hem işletim sistemi hem uygulama sanallaştırmasında özgür yazılımların artan görünürlüğü olması ve mobil ve gömülü işletim sistemi pazarının da özgür yazılıma kayması bunu destekler görünümde. &lt;/p&gt;
&lt;p&gt;Büyümekle birlikte toplam pazar içindeki payı giderek azalan bildik kişisel bilgisayar pazarına hapsolan vizyonlar ise herhalde, bu gelen dalgaları karşılamakta güçlük çekecek. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Türkiye'de yazılım ihracatı</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/159/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/29/159/</id>
		<updated>2008-06-28T22:03:00+00:00</updated>
		<content type="html">&lt;p&gt;Bir kaç blog girdisi okurken bağlantı takip ede ede &lt;a href=&quot;http://kaan.basesistem.com/?p=22&quot;&gt;buradaki ilginç girdiye&lt;/a&gt; ulaştım. Takip edip okumaya üşenenler için, çok kısa özetlersek, Türkiye'nin yazılım ihracatının yıllık 15 milyon dolar gibi bir seviyede olduğu, ve bunun ana nedeninin de yazılım firmalarımızda bulunan bir vizyonsuzluk olduğu ifade edilmiş. Hem maddi hataları düzeltmek hem de konu hakkındaki görüşlerimi aktarmak isteyince son derece uzun bir yorum yazdığımı fark ettim. Bari kendi bloguma da koyayım dedim. Takip eden paragraflarda okuyabilirsiniz&lt;/p&gt;

&lt;p&gt;Yazıdaki ana fikre katılmakla birlikte, istatistikler konusunda biraz düzeltme yapmam gerekiyor. Türkiye'nin yazılım ihracatı yaklaşık olarak 500 milyon dolar seviyelerinde. Yakında 1 milyar doları bulması konuşuluyor. Yani resim o kadar da kötü değil. Ama Türkiye'nin yazılım iç pazar potansiyeli ve dış pazara dönük avantajlarını göz önüne alınca yine de acınası bir miktar. &lt;/p&gt;

&lt;p&gt;Ankara'daki büyük ölçekli yazılım şirketlerinin ve savunma sanayi şirketlerinin yazılım bölümlerinin bir nevi kamu işlerine odaklanarak rahatladıkları doğru ancak zaman zaman bu şirketler bu projelerde edindikleri deneyimleri ihracata odaklı olarak da kullanabiliyor. Örneğin &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/www.tepeteknoloji.com.tr/ &quot;&gt;Tepe Teknoloji&lt;/a&gt;, TSK için yazdığı ve yaklaşık 20 milyon dolar bedelle aldığı bir ihale işindeki yazılımın özelleştirilmesi sonucu Suudi Arabistan'a yaklaşık 200 milyon dolarlık bir satış gerçekleştirdi. Ben bunu Tepe Teknoloji Genel Müdürü ile başka bir konuda görüşme yaparken laf arasında öğreniyorum. Başkalarının haberi dahi yok. Gazetelerde köşede kalmış bir haber olmuş ama miktar yok. Yada &lt;a href=&quot;http://www.havelsan.con.tr/&quot;&gt;Havelsan&lt;/a&gt;'ın Barış Kartalı projesindeki işi aslında iç pazara dönük değil çünkü projeyi yürüten Boeing olduğu için Havelsan Boeing alt yüklenicisi olarak çalışıyor. Yaklaşık 1 milyar dolarlık işi Boeing'den almış durumda. &lt;/p&gt;

&lt;p&gt;Yine istatistiklere hiç girmediğini bildiğim benzeri Ankara yazılım şirketleri de var. Bir dönem 150 küsür kişiye çıkan &lt;a href=&quot;http://www.etc.om.tr/&quot;&gt;ETC&lt;/a&gt; vardı mesela. Sadece yazılım ihracatı yapardı. 150 kişinin ürettiği yazılımın satış bedelini merak ederim ama bilmem. Veyahut Siemens, Alcatel-Teletaş gibi uluslar arası şirketlerin Türkiye'deki birimleri, yurt dışındaki birimlerine yazılım sattığı zaman da bunlar çok dikkat çekmez. Merak edenler için söyleyebilirim, Siemens'in kendi iç yazılım ihtiyaçları (ki küçümsenecek bir şey değil) neredeyse tamamen Ankara'daki ve İstanbul'daki Türkiye ofislerinde karşılanıyor. Bu tür işlerde çalışan insan sayısı gene yüzler ile ifade edilir. Ama parasal değeri bilemem. &lt;/p&gt;

&lt;p&gt;Esas mesele istatistiklerin derlenmiyor olması. &lt;/p&gt;

&lt;p&gt;Bu tür istatistiklerin sağlıklı derlenmesindeki önemli bir engel firmalardan istatistiki bilgi istendiği zaman vur deyince öldür misali bir yaklaşım ile inanılmaz detayda veri istenmesi. Esas işi yazılım üretmek olan ve çoklukla asgari idari kadro ile (yani sıfır idari personel) çalışan yazılım şirketleri bu tür verileri sağlayamıyorlar. &lt;/p&gt;

&lt;p&gt;Benim kendi masamda da &lt;a href=&quot;http://www.tuik.gov.tr&quot;&gt;TÜİK&lt;/a&gt; anketi duruyor. Muhasebecimiz ile o anketi doldurabilmek için çalışacak bir  günüm yok ne yazık ki. Halbuki anket dediğiniz 15 dakikada doldurulabilmeli. &lt;/p&gt;

&lt;p&gt;Portakal Teknoloji 2009'da yurt dışı pazara ciddi ürün satıyor olmayı hedefliyor olsak da TÜİK bu gidişle bunu 2010'ların içinde bir yerde gazeteden öğrenecek. Halbuki, &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/http//www.metutech.metu.edu.tr/&quot;&gt;Teknokent&lt;/a&gt;'e 3 ayda bir verilen ve Maliye Bakanlığı'na da ayrıca beyannameler içinde aktarılan verileri toplayıvermek çok daha kolay. Orada hem şu ana kadarki hem de ileriye dönük tahmini verilerimize erişebilirler. Belki TÜİK'in istediği kadar detaylı olmayabilir ama daha stretejik saptamalar için geçerli ve yeterli bir veri olacağından eminim. . &lt;/p&gt;

&lt;p&gt;Hoş zaten TÜİK'in sorduğu çoğu soru da ar-ge yapan hele yazılım ihracatı yapan şirketler için anlamlı değil. Mesela aklımda yanlış kalmadıysa, aile fertlerinden ücretsiz ve SSK'sız çalışan (çocuk) olup olmadığını merak ediyorlardı. Bir bakkal dükkanı için geçerli olabilecek bir soruyu kurumsal pazara dönük çalışan yazılım şirketine sorarsanız doğru mu olur?  &lt;/p&gt;

&lt;p&gt;Sözün özü, iş yapılmıyor değil, sadece anlatılmıyor, reklamı yapılmıyor. Bu da başka bir problem. Onu da tartışmak gerekir. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Yazılım mühendisliği ve yönetimi, portföy yönetimi ve stratejik ar-ge yönetimi</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/28/158/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/28/158/</id>
		<updated>2008-06-28T15:05:00+00:00</updated>
		<content type="html">&lt;p&gt;Geçtiğimiz günlerde bir arkadaş sohbeti sırasında &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/www.metutech.metu.edu.tr/ &quot;&gt;ODTÜ Teknokent&lt;/a&gt;'in içinde faaliyet gösteren firmaların 3 ayda bir Teknokent Yönetici Şirketi'ne vermeleri gereken faaliyet raporlarından bahsettim. Bu raporların son derece kapsamlı olduğunu ve aslında bunları detaylı biçimde üretebilmek için şirket işleyişi hakkında önemli miktarda verinin kayda geçmesi gerektiğini aktardım.  &lt;/p&gt;
&lt;p&gt;Tabii kaide gereği Ar-Ge demek illa ki yazılım demek değil ancak ODTÜ Teknokent içinde faliyet gösteren firmaların listesine ve &lt;a href=&quot;http://www.metutech.metu.edu.tr/download/Resim/TR/sirket_tekn_alanlar%C4%B1.jpg&quot;&gt;teknoloji alanlarındaki dağılıma&lt;/a&gt; bakarsak elektronik ve yazılıma odaklı bir yapı oluştuğunu görebiliriz. Yani ODTÜ Teknokent yazılım ağırlıklı yada yazılım kullanan sistem ağırlıklı ürünler geliştiren şirketlerin baskın olduğu bir yer. O zaman ODTÜ Teknokent idaresi olarak şirketlerden bu kadar çok sürece dönük çalışma bekleniyorsa,  ODTÜ Teknokent şirketlerinin de yazılım mühendisliği ve yazılım yönetimi (İng. software mangement) alanında bazı çalışmaları olması gerekir herhalde. &lt;/p&gt;
&lt;p&gt;Tabii terimleri esnetmemek adına önce yazılım mühendisliği olarak neyi kast ettiğimi ifade etmem gerek. Benim gözümde yazılım mühendisliği, aşağıdaki kritik süreçlerin şu yada bu şekilde işletildiği bir süreçler bütünü:
&lt;ul&gt;
&lt;li&gt;Yazılım proje planlaması&lt;/li&gt;
&lt;li&gt;Yazılım satın alma&lt;/li&gt;
&lt;li&gt;Gereksinim belirleme&lt;/li&gt;
&lt;li&gt;Yazılım tasarımı&lt;/li&gt;
&lt;li&gt;Geliştirme ve test yönetimi&lt;/li&gt;
&lt;li&gt;Sistem entegrasyonu&lt;/li&gt;
&lt;li&gt;Belgeleme&lt;/li&gt;
&lt;li&gt;Konfigürasyon yönetimi&lt;/li&gt;
&lt;li&gt;Kalite güvence &lt;/li&gt;
&lt;li&gt;Risk yönetimi&lt;/li&gt;
&lt;/ul&gt;
Şaka maka liste uzun. Hemen her madde için de &lt;a href=&quot;http://www.ieee.org/&quot;&gt;IEEE&lt;/a&gt; olsun başka kuruluşlar olsun çeşitli standartlar hazırlamış. Yani kalkıp bu süreçleri fabrikavari biçimde yönetmeye kalkarsanız belki 15-20 tane standarta uymanız gerekebilir. &lt;/p&gt;
&lt;p&gt;Şimdi benim bir Teknokent şirketinden görmek istediğim ve &lt;a href=&quot;http://www.portakalteknoloji.com&quot;&gt;Portakal Teknoloji&lt;/a&gt;'de uygulamaya çalıştığım şey, Teknokent şirketlerinin ODTÜ'nün istediği faaliyet izleme formlarını (kısaca FİF diyoruz) hazırlarken, aslında bu formları kendi iç süreçlerinden üretmeleri. Yani tabii ki yukarıdaki süreçleri uygulamaya kalkarsanız o zaman bir sürü sonuç elde edersiniz ve bir sürü belgeniz olur. Bu sonuçlar veya belgeler illa ki bir ofis yazılımı biçiminde yada dümdüz metin olmayabilir ama belgeleme oluşur. &lt;/p&gt;
&lt;p&gt;İşte buradan hareket ile aklıma gelen ve kesinlikle benim icat etmediğim, önceden başkalarının bulduğu bir şey şu. Eğer birden fazla projeniz varsa, o zaman yukarıdaki süreçleri bir portföy mantığı ile yürütmeniz gerekli.  Çünkü sizin elinizde birden fazla projeden gelen birden fazla gereksinim kümesi, birden fazla tasarım, birden fazla konfigürasyon yöneitmine tabi varlık kümesi olacak. Bunların bazıları ortak da olabilir. Yani portföyünüz son derece karışık bir yapıda olacak. &lt;/p&gt;
&lt;p&gt;Bence biz henüz bu anlamda portföy yönetimini el yordamı ile yapıyoruz. Herşey benim kişisel çalışmamın üzerine kurgulu. Bu da portföy yönetiminin bir süreç ol(a)madığının ana göstergesi. Kimde bu kadar süreç tanımlı derseniz, o başka tabi. Pek yapabilen de yok. Ama en azından iyi niyetli çabalar gösteren şirketler biliyorum.  &lt;/p&gt;
&lt;p&gt;Bu çabaları bir de ar-ge boyutuna taşırsak ne olur? Elinizde ar-ge projeleri, sonuçlar, üretilen bilgi, bilgiye dayalı varlıklar (nam-ı diğer &lt;a href=&quot;http://www.google.com.tr/search?q=entellekt%C3%BCel+sermaye&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:tr:official&amp;amp;client=firefox-a&quot;&gt;entellektüel sermaye&lt;/a&gt;) gibi şeylerin olduğu bir diğer portföy oluyor. Bu portföyü bir de ar-ge destekleri, teslimat takvimleri, ticarileşmeye dönük planlar ile zenginleştirebilirsiniz. İşte bu kadar çok datayı takip etmeye kalktığınıza stratejik ar-ge yönetimi yapmış oluyorsunuz. &lt;/p&gt;
&lt;p&gt;ODTÜ Teknokent'in istediği şey de bu herhalde. Ancak ODTÜ'de olsun başka üniversitelerin teknokentlerinde olsun ar-ge firmalarının bu türde bir faaliyet sürdürmesi için gereken kaynakları ve yönetim araçları olduğundan şüpheliyim. Teknokent yönetimlerinin biraz da bu konuda destekleyici çalışmalara girmesi gerekir diyorum. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Güvenilir mi güvenilmez mi?</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/26/157/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/26/157/</id>
		<updated>2008-06-26T09:03:00+00:00</updated>
		<content type="html">&lt;p&gt;Bloglar üzerinden flame yarışına girmek yapacağım en son şey ama sevgili Tonguç Yumruk'un güvenilir bilişim konusundaki &lt;a href=&quot;http://tonguc.name/blog/misc/drm.html&quot;&gt;kısa blog girdisi&lt;/a&gt;ni &lt;a href=&quot;http://gezegen.linux.org.tr/&quot;&gt;LKD Linux Gezgeni&lt;/a&gt;'nde görünce, ben de kısa bir karşı yorum yapmak istedim. Tabii ben kestirip atmayı da sevmediğim için bazı konuları uzun uzun yazmak zorunda kaldım. &lt;/p&gt;

&lt;p&gt;Güvenilir bilişim (İng. &lt;a href=&quot;http://en.wikipedia.org/wiki/Trusted_Computing&quot;&gt;Trusted Computing&lt;/a&gt;)malumunuz bir teknoloji, ve teknolojilerin kendileri değil onların nasıl kullanıldığı önemli. Belki hatırlarsınız, geçtiğimiz aylarda Maliye Bakanlığı'nın kullandığı Vergi Daireleri Otomasyon Projesi (VEDOP) kullanılarak bazı ünlü kişilerin malları ve gelirleri ile ilgili bilgilerin elde edilmesi gazetelerde tam sayfa &lt;a href=&quot;http://arsiv.sabah.com.tr/2007/01/28/eko118.html&quot;&gt;haber&lt;/a&gt; olmuştu. Bunun nasıl olduğu nasıl olmayacağı derken bir çok teknik konu da &lt;a href=&quot;http://yenisafak.com.tr/Ekonomi/?t=31.01.2007&amp;amp;i=27262&quot;&gt;gündeme&lt;/a&gt; geldi. Kısacası teknik bir olanağın nasıl amacı dışında kullanılabileceğini görmüş oluyoruz.  &lt;/p&gt;

&lt;p&gt;Benim açımdan bakıldığı zaman güvenilir bilişim sadece başka bir teknik olanak. Üstelik acil olarak gereken bir teknik olanak.  Neden acil?
&lt;ul&gt;
&lt;li&gt;Büyük boyutlu, dağıtık sistemlere, grid kullanan uygulamalara doğru evrilen bir kurumsal bilişim yapısına evriliyoruz. Kablosuz ağların yaygınlaşması gibi başka teknik olanaklar da insanları birey olarak bu büyük boyutlu, dağıtık ağlara girmeye teşvik ediyor. Ancak bu kişilerin bu ağlara tasarsız (İng. ad-hoc) dahil olması güvenlik için önemli bir problem. Şurasından burasından güvenlik ile ilgilenen insanlar olarak en az Internet'in yaygınlaşması kadar büyük bir şok ile karşılaşmış durumdayız desem yeridir. &lt;/li&gt;
&lt;li&gt;Kimlik doğrulama (İng. &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora/blog/feed/rss/en.wikipedia.org/wiki/Authentication&quot;&gt;authentication&lt;/a&gt;) ve kimlik yönetimi (İng. &lt;a href=&quot;http://en.wikipedia.org/wiki/Identity_management&quot;&gt;identity management&lt;/a&gt;) amaçlı uygulamaların da önemli ölçüde evrilmesi ve gelişmesi gerekiyor. Ve bu gelişmelerin hızlı biçimde ortaya çıkması gerekli. Çünkü daha teknik olanağı olup olmadığı düşünülmeden, &quot;ya tutarsa&quot; mantığı ile bir çok ticari uygulamanın reklamı yapılıyor. Bu uygulamaları öngörenler, gerçekleştirmeye çalışanlar bilişim sektöründeki kişiler değil. Bilişim teknolojisini, klimalardaki soğutma teknolojisinden ayırmayan ve bunda da sonuna kadar haklı olan teknoloji kullanıcıları. Bunlar bazen dev kurumlar, bazen girişimciler, bazen de evinde oturan insanlar.  &lt;/li&gt;
&lt;li&gt;Bakın güvenilir bilişimin en temel kullanımı, kimlik doğrulaması problemini çözmekten başka bir şey yapmıyor. Biraz daha ileri uygulamalarına girerseniz yetkilendime problemine dönük çözümlerin bazı açıklarını kapatıyor. Bunları burada sıradan problemler gibi göstermek istemiyorum, ama bunlar bir sürü teknik problemin içinde bulunan birer problem. Başka problemler de var demek istiyorum. &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Güvenilmez bilişim diye konuya tek taraflı bakan kişiler, bence konuyu kestirip atarak çözebileceklerinin yanılsaması içindeler. Paranızı emanet ettiğiniz bankanız, oy verdiğiniz devletiniz, evlenmek için gittiğiniz evlenme dairesinin aklınıza gelen her yerin güvenilir bilişim kullanan çözümlere yöneldiği zaman nasıl kestirip atabilirsiniz ki? Bir teknoloji hayatın içine giriyorsa, o zaman onu reddetmek yerine o teknolojinin hatalı kullanımlarını reddetmek gerekir. &lt;/p&gt;

&lt;p&gt;Güvenilir bilişim teknolojisini bu teknoloji ile kötü şeyler yapılır diye toptan reddetmek, bu teknoloji ile muzır neşriyat basılır diyerek matbaa teknolojisini toptan reddetmekle eşdeğer bir bakış açısı. Üstelik bakın matbaa teknolojisinin ürettiği bir çok muzır neşriyat örneği de hazır. &lt;/p&gt;

&lt;p&gt;Yapılması gereken şey, bu teknolojinin nasıl kullanılacağı ve ne yöne evrileceği yönünde söz sahibi olmak ve gözlenebilir, ölçülebilir bir etki oluşturmaktır. &lt;/p&gt;

&lt;p&gt;Söz sahibi olmanın yolu da belli eylemlerden geçer. Bu eylemlerden birisi de tabii ki teknolojiyi kullanıp, dolayısı ile geliştirilmesinde etki sahibi olmaktır.  TPM standartının bir ISO standartı olması, özgür yazılım güvenilir yazılım yığını (TSS) kullanımının kapalı ve sahipli TSS kullanımlarına tercih edilmesi, TPM/TSS kullanan uygulamaların kendilerinin de özgür yazılım olması hep bu söz sahibi olma resminin parçasıdır. Eğer özgür yazılımlar bu alanda baskın olursa, özgür yazılım toplumu da baskın olacaktır. En ufak güvenilir bilişim çözümü dahi toplum tarafından sorgulanabilecektir. &lt;/p&gt;

&lt;p&gt;Yok eğer kestirip atarsanız, üç maymunu oynarsanız, o zaman emin olun sizin haberiniz dahi olmadan birileir kapalı kapılar ardında kapalı ve sahipli yazılımlar olarak TPM/TSS uygulamalarını geliştirir. Sonra da bu uygulamaları kullanmak zorunda kalırsınız.  &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.openoffice.org.tr/&quot;&gt;Open Office&lt;/a&gt;'i düşünün. &lt;a href=&quot;http://www.microsoft.com/&quot;&gt;Falanca firmanın&lt;/a&gt; ofis standartını tekel oluşturmakta kullanmasını engellemenin yolu, hem o standartı hem de kendi standartını destekleyen alternatif bir ofis yazılım paketini özgür yazılım olarak geliştirmek oldu. Sadece kullanmayın diyerek bir yere varılamadı. Benzeri şekilde o yada bu firmanın güvenilir bilişim teknolojisini kullanarak haliyle çok daha tehlikeli başka tekeller kurmasını engellemenin yolu da güvenilir bilişim teknolojisini kullanan alternatif ve özgür yazılımları geliştirmek olacaktır. &lt;/p&gt;

&lt;p&gt;Teknolojiyi kullanırken işleteceğiniz alt yapıyı özgür yazılımlar kullanarak siz kurarsanız, asla üçüncü kişilerin oluşturduğu tekellerden korkmanıza gerek olmaz. Bu hangi teknolojiden bahsettiğinizden bağımsız bir gerçek. Ofis yazılım için de güvenilir bilişim için de eşit oranda geçerli. &lt;/p&gt;

&lt;p&gt;O halde güvenilir bilişimi yada başka bir teknolojiyi bu şekilde kestirip atarak reddetmek nedendir? Acaba özgür yazılım camiamız kendi içinde kendi politikasını üretmeye çalışırken oluşan doğal ve sağlıklı bir tartışma mıdır? Yoksa başka bir olgunun mu göstergesidir. Ben kendi çapımda yorumlarımı aşıp,  detaylı yorum yapacak kadar sosyoloji bilmiyorum.  Keşke bu olayları, bu olguları çalışan sosyologlar olsa diyorum. &lt;/p&gt;

&lt;p&gt;Tabii diyalektik bütünlük adına, aslında bu yad abaşka yorumların birer üst yorumu da olmalı, yani ben neden bu yorumu yaptım, Tonguç neden öteki yorumu yaptı, ve bunların tarihsel süreçteki yeri nedir? :) Umarım benim bu yorumu neden yaptığım aşikardır. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Yenilik Süreci Yönetimi ve Ar-Ge Yardımları Başvurusu Hazırlama Çalıştayı,1-2-3 Temmuz</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/23/13/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/23/13/</id>
		<updated>2008-06-23T09:04:00+00:00</updated>
		<content type="html">&lt;strong&gt;Yenilik Süreci Yönetimi ve Ar-Ge Yardımları Başvurusu Hazırlama Çalıştayı,1-2-3 Temmuz&lt;/strong&gt; &lt;br /&gt; &lt;p align=&quot;justify&quot;&gt; &lt;strong&gt;&lt;a href=&quot;http://www.irc-anatolia.org/web/images/image004.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.irc-anatolia.org/web/images/image004.jpg&quot; border=&quot;0&quot; alt=&quot;image004.jpg&quot; title=&quot;image004.jpg&quot; hspace=&quot;5&quot; vspace=&quot;5&quot; width=&quot;175&quot; height=&quot;216&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;ODTÜ TEKNOKENT'in düzenlediği Yenilik Süreci Yönetimi ve Ar-Ge Yardımları Başvurusu Hazırlama Çalıştayı 1-2-3 Temmuz da gerçekleştirilecek.&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Uygulamalı çalışmada TÜBİTAK-TEYDEB tarafından yürütülen 1501 - SANAYİ AR-GE PROJELERİ DESTEKLEME PROGRAMI ve 1507 - KOBİ AR-GE BAŞLANGIÇ DESTEK PROGRAMI başvuru dokümanları esas alınacak. &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Çalıştaya son başvuru tarihi 24 Haziran. &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Ayrıntılı bilgi ve başvuru için Sn Betül Sabah'a &lt;font size=&quot;3&quot;&gt;(Tel: 0312-2106400) &lt;/font&gt; ulaşılabilir. &lt;/p&gt;</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">2. Özgür Yazılım Konferansı’nda verdiğim e-imza semineri</title>
		<link href="http://blogs.portakalteknoloji.com/emre/blog/2008/06/21/17/"/>
		<id>http://blogs.portakalteknoloji.com/emre/blog/2008/06/21/17/</id>
		<updated>2008-06-21T09:41:00+00:00</updated>
		<content type="html">&lt;p&gt;Dün (20 Haziran Cuma) &lt;a href=&quot;http://konferans.linux.org.tr/&quot; target=&quot;_blank&quot; title=&quot;2. Özgür Yazılım Konferansı&quot;&gt;2. Özgür Yazılım Konferansı&lt;/a&gt;‘nda &lt;a href=&quot;http://www.emreyuce.com/blog/wp-content/uploads/2008/06/e-imza.pdf&quot; title=&quot;Türkiye’de E-imza&quot;&gt;Türkiye’de E-imza&lt;/a&gt; konulu bir sunum yaptım. Bir önceki sunucuya benim süremin de tamamını kullanarak sunum yaptığı ve sunumunu konuşması hiç bitmeyecekmiş gibi yaptığı için buradan teşekkür (!) ediyorum. Zaten sunumun günün son sunumu olması ve konferansın geneliyle birebir ilişkili bir konu olmaması sebebiyle beklediğim üzere salon tıklım tıklım dolu değildi. Ben de konuyla ilgili ve beni dikkatle dinleyen 15 kişiyi, ilgisiz ve uyuklayan 100 kişiye tercih ederim.&lt;/p&gt; &lt;p&gt;Uzun lafın kısası sunum dosyama &lt;a href=&quot;http://www.emreyuce.com/blog/wp-content/uploads/2008/06/e-imza.pdf&quot; title=&quot;Türkiye'de E-imza&quot;&gt;buradan&lt;/a&gt; erişebilirsiniz. Ancak incelediğinizde sunum dosyasının çok da detaylı olmadığını fark edeceksiniz. Sunum dosyasında temel başlıklar var, ancak ben sunumu yaparken bu temel başlıkları kullanarak sezar şifresinden, 70lerdeki anahtar değişimine, biometrik verilerin değerliliğinden, Aralık ayında yapılan &lt;a href=&quot;http://blogs.portakalteknoloji.com/emre/blog/2007/12/16/6/&quot; target=&quot;_blank&quot; title=&quot;ISC İzlenimlerim&quot;&gt;ISC Konferansı&lt;/a&gt; ‘na kadar pek çok detaya değindim, keşke gelseydiniz sunumuma &lt;img class=&quot;wp-smiley&quot; src=&quot;http://www.emreyuce.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; border=&quot;0&quot; alt=&quot;:-)&quot; /&gt; &lt;/p&gt; &lt;p&gt;Bir sonraki sunumum nerde ve ne zaman olur bilmiyorum ama bana böyle bir sunum yapma olanağı sağladığı için şirketim &lt;a href=&quot;http://www.portakalteknoloji.com/&quot; target=&quot;_blank&quot; title=&quot;Portakal Teknoloji&quot;&gt;Portakal&lt;/a&gt;‘a ve &lt;a href=&quot;http://blogs.portakalteknoloji.com/bora&quot; target=&quot;_blank&quot; title=&quot;Bora Güngören&quot;&gt;Bora Hoca&lt;/a&gt;‘ya teşekkürü bir borç biliyorum.&lt;/p&gt; &lt;p&gt;Herkese e-imza’lı günler :-))&lt;/p&gt;</content>
		<author>
			<name>Emre Yüce</name>
			<uri>http://blogs.portakalteknoloji.com/emre/blog/</uri>
		</author>
		<source>
			<title type="html">Emre Yüce</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/emre/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/emre/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Django'da yazılmış bir uygulamayı MySQL'den PostgreSQL'e geçirmek</title>
		<link href="http://blogs.portakalteknoloji.com/gokce/blog/2008/06/18/1/"/>
		<id>http://blogs.portakalteknoloji.com/gokce/blog/2008/06/18/1/</id>
		<updated>2008-06-18T13:46:00+00:00</updated>
		<content type="html">&lt;div align=&quot;justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;Öncelikle birçoğumuzun bildiği gibi Django, MVC (Model-View-Controller) yapısını destekleyen Python programlama dilini kullanan bir Web Çatısı'dır. &lt;br /&gt;&lt;br /&gt;“django-admin.py startproject mysite” komutunu kullanarak “mysite” olarak adlandırılan bir Django projesi yarattıgımızda, bulunduğumuz dizin içerisine;&lt;br /&gt;&lt;br /&gt;__init__.py&lt;br /&gt;manage.py&lt;br /&gt;settings.py&lt;br /&gt;urls.py &lt;br /&gt;dosyalarını kendisi otomatik olarak oluşturur.&lt;br /&gt;&lt;br /&gt;Daha sonrasında “python manage.py startapp crs” komutunu kullanarak ta mysite dizini içerisine bir crs uygulama dizini oluşturarak bu dizin içerisine de:&lt;br /&gt;&lt;br /&gt;__init__.py&lt;br /&gt;models.py&lt;br /&gt;views.py&lt;br /&gt;dosylarını yine kendisi otomatik olarak oluşturur.&lt;br /&gt;&lt;br /&gt;Şu an üzerinde çalışmakta olduğumuz PyIk Projesi, diğer bir ifade ile Python İnsan Kaynakları Projesi de Django tabanlı, python dili kullanılmış, veri tabanı sunucusu olarak ta MySQL Server kullanılarak geliştirilmiş bir projeydi. PyIk projesinin TVQ (Task-Velocity-Quality) projesi ile bazı tabloları ortak kullanması için ortak bir veri tabanı kullanmamız gerekince, var olan MySQL veri tabanlı yapımızı da postgreSQL veri tabanına çevirmemiz gerekti. Bunun için uygulamamız gereken sadece bir iki adım vardır ancak öncelikle bir Django projesinde veri tabanı ayarlamalarının nasıl yapıldığını bir hatırlarsak;&lt;br /&gt;&lt;br /&gt;Django'da database ayarlamaları settings.py içerisinde yapılandırılmaktadır. Öncelikle MySQL kullanan bir projemiz var ise, settings.py içerisinde aşağıda görülen tarzda bir ayarlama yapmış olmamız gerekmektedir:&lt;br /&gt;&lt;br /&gt;DOCUMENT_ROOT = '/home/gokce/workspace/pyikProject/senior'&lt;br /&gt;DATABASE_ENGINE = 'mysql'&lt;br /&gt;DATABASE_NAME = 'tvqdb'&lt;br /&gt;DATABASE_USER = 'pyikuser'&lt;br /&gt;DATABASE_PASSWORD = 'pyik'&lt;br /&gt;DATABASE_HOST = 'localhost'&lt;br /&gt;DATABASE_PORT = ''&lt;br /&gt;&lt;br /&gt;Burda “DATABASE_ENGINE” haricindeki ayarlamalar kendi projemizde verdiğimiz opsiyonel isimlendirmelerdir. “DATABASE_ENGINE” kısmında ise hangi veri tabanını kullanacağımızı belirtmekteyiz.&lt;br /&gt;&lt;br /&gt;Elimizde var olan MySQL veri tabanı kullanan bir Django Projesini,  postgreSQL veri tabanına çevirmek istediğimizde ise öncelikle yapmamız gereken bilgisayaramıza bir postgreSQL Server kurulumunu gerçekleştirmektir ve bizde Pardus Paket Yöneticimizde var olan postgresql-server paketini bilgisayarımıza kurduk. Daha sonra bir veri tabanı yaratmamız gerekmektedir, sonrasında bir kullanıcı yaratarak bunun kullanıcı adını ve kullanıcı şifresini belirlememiz gerekmektedir. Sonra da bunları settings.py de yapılandırmamız lazım. Bizim için burda zaten diğer bir proje ile aynı veri tabanını kullanmaya çalıştığımızdan, bir veri tabanı yaratmaya gerek olmadan var olan veri tabanını kullanmaya yönelik sadece izinleri belirlenmiş bir kullanıcı yarattık. Bunları gerçekleştirdikten sonra bunları settings.py dosyası içerisinde de aşağıda gösterildiği şekilde yapılandırdık. &lt;br /&gt;&lt;br /&gt;DOCUMENT_ROOT = '/home/gokce/workspace/pyikProject/senior'&lt;br /&gt;DATABASE_ENGINE = 'postgresql_psycopg2'&lt;br /&gt;DATABASE_NAME = 'tvqdb'&lt;br /&gt;DATABASE_USER = 'pyikuser'&lt;br /&gt;DATABASE_PASSWORD = 'pyik'&lt;br /&gt;DATABASE_HOST = '192.168.46.122'&lt;br /&gt;DATABASE_PORT = '5432'&lt;br /&gt;&lt;br /&gt;Burada en önemli olabilecek “DATABASE_ENGINE” kısmında 'postgresql_psycopg2' veya 'postgresql' olarak set etmeyi unutmamaktadır. Bu aşamalarda tüm bunları yapılandırmışken, projeyi çalıştırdığımız anda yaşanabilecek bir sorunda bilgisayarınız 'psyccopg2' modülünün gerekli oldugu uyarısı verebiliyor. Burda da yapmanız gereken 'psycopg2-latest.tar.gz' paketini internetten indirerek, bilgisayarınıza kurmaktur.Bunun için komut satırında önce '&lt;em&gt;&lt;strong&gt;python setup.py build'&lt;/strong&gt;&lt;/em&gt; komutunu çalıştırdık, sonra bu komut işlemini tamamladıktan sonra da  '&lt;em&gt;&lt;strong&gt;python setup.py install&lt;/strong&gt;&lt;/em&gt;' komutu ile kurulumu tamamladık. Nitekim bu noktada, benim bilgisayarımda  “DATABASE_ENGINE” kısmını 'postgresql' değil de 'postgresql_psycopg2' yapınca bu modülü istemeden sorunsuz çalışırken diğer arkadaşlarımızın bilgisayarlarına bu modülü yüklememiz gerekti. Ondan bilmekte fayda var.&lt;br /&gt;&lt;br /&gt;Böylece bu yapılandırmayı bitirdikten ve gerekli modülleri tamamladıktan sonra, tüm tablolarımız artık MySQL veri tabanı içerisinde değil bir postgreSQL veri tabanı içerisinde kurulacaktır.&lt;br /&gt;&lt;br /&gt;Burdan sonra yapmamız gereken projemizin içindeki dizine girip konsole' dan önce &lt;/font&gt;&lt;font size=&quot;3&quot;&gt;“&lt;em&gt;&lt;strong&gt;python manage.py validate&lt;/strong&gt;&lt;/em&gt;” sonrasında da &lt;/font&gt;&lt;font size=&quot;3&quot;&gt;“&lt;em&gt;&lt;strong&gt;python manage.py syncdb&lt;/strong&gt;&lt;/em&gt;” komutunu çalıştırmaktır. Bunu çalıştırdığımızda models.py' yi kullanarak daha önceden yarattığımız tüm veri modellerimizin yani MySQL veri tabanı tablolarımızın postgreSQL içinde kullanacağımız veri tabanının içinde teker teker kurulduğunu gördük. Ayrıca bu komutu çalıştırdıktan sonra bizden bir superuser yaratıp yaratmak istediğimizi sormaktadır, burada da veri tabanımızda yarattığımız, settings.py içerisinde belirlediğimiz kullanıcı adı ve şifreyi kullanarak aynı verilerle bir kullanıcı yarattık, böylece projemizin Django tarafından sağlanan yönetici kısmına da bu kullanıcı ile erişebiliyoruz.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;</content>
		<author>
			<name>Gökçe Bilgiç</name>
			<uri>http://blogs.portakalteknoloji.com/gokce/blog/</uri>
		</author>
		<source>
			<title type="html">Gökçe Bilgiç</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/gokce/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/gokce/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">ELGİNKAN VAKFI TÜRK KÜLTÜRÜ ARAŞTIRMA VE TEKNOLOJİ ÖDÜLLERİ</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/18/11/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/18/11/</id>
		<updated>2008-06-18T09:00:00+00:00</updated>
		<content type="html">&lt;p&gt;Elginkan Vakfı, Türk Kültürü Araştırma ve Teknoloji ödüllerinin 3.sünü verecek.&lt;/p&gt;&lt;p&gt;Teknoloji ödülü yeni ürün, yeni teknik veya teknolojiye dayalı üretim süreçleri geliştirerek teknolojiye gerçek anlamda katkıda bulunan araştırmacı veya araştırmacı grubuna verilecek. Kazanan araştırmacı veya araştırmacı grubu 40.000YTL ile ödüllendirilecek. Çeşitli üniversiteler ve kamu kurumları ile sivil toplum kuruluşlarının 20 Haziran'a kadar başvurabileceği yarışma, Aralık 2008'de sonuçlanacak. &lt;/p&gt;</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">e-Altyapılar 4.Çağrı Bilgi Günü</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/18/12/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/18/12/</id>
		<updated>2008-06-18T08:56:00+00:00</updated>
		<content type="html">&lt;p align=&quot;justify&quot;&gt; e-Altyapılar 4.Çağrı Bilgi Günü 20 Haziran 2008 tarihinde Bilkent Üniversitesi/Ankara’da gerçekleşecek. &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt; TÜBİTAK tarafından düzenlenen bilgi gününe AB Komisyonu Bilgi Toplumu Dairesinden , Mário CAMPOLARGO – EC  Head of Unit DG INFSO/F3 ,  Jean-Luc DOREL -  EC DG INFSO GÉANT &amp;amp; e-Infrastructure Unit, Carlos MORAIS PIRES– EC DG INFSO Project Officer - Digital Repositories video konferans sistemi ile konuşmacı olarak Brüksel’den katılım sağlayacak. &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Toplantıda &amp;quot;Araştırma Altyapıları&amp;quot;nın 4.çağrısına yönelik konu başlıkları bizzat Komisyon  Yetkilileri tarafından anlatılacak ve etkileşimli soru-cevap yöntemi ile faydalı bilgiler aktarılacak. &lt;/p&gt;</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Hibernate'e Genel Bakış</title>
		<link href="http://blogs.portakalteknoloji.com/duygu/blog/2008/06/18/1/"/>
		<id>http://blogs.portakalteknoloji.com/duygu/blog/2008/06/18/1/</id>
		<updated>2008-06-17T21:29:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img src=&quot;file://C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg&quot; border=&quot;0&quot; /&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/en/7/7a/Hibernate.gif&quot; border=&quot;0&quot; alt=&quot;hibernate logo&quot; title=&quot;hibernate&quot; width=&quot;249&quot; height=&quot;78&quot; /&gt;  &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;font size=&quot;2&quot;&gt;   &lt;/font&gt;&lt;font size=&quot;2&quot;&gt; Nesneye yönelik yazılım ve ilişkisel veritabanı kullanımı her ne kadar yaygın olsa da özellikle, veritabanı kullanımına dayanan çok kullanıcılı ve büyük ölçekli Kurumsal Uygulamalar ( Enterprise Applications ) söz konusu olduğunda, bu iki modelin yüksek verimli olmadığını görmekteyiz. Yinelenen benzer kodlamalar, zaman alıcı olmasının yanı sıra, büyük ölçekli uygulamalarda karışıklığa da neden olmakta.Benzer görevleri yerine getiren JDBC yerine Hibernate teknolojisinin tercih edilmesinin nedeni de, tam olarak bu yinelenen yorucu ve zaman alıcı kodlamalar. Ayrıca Hibernate, JDBC'nin aksine nesne odaklı yazılıma uygun yapıya sahip; dolayısıyla veritabanı şemalarına olan bağımlılığı kısmen azaltıyor.&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;Kısacası, Hibernate Java platformunda yazılmış bir nesne/ilişkisel eşleme (Object/Relational Mapping) aracı. &lt;span&gt;Nesne/ilişkisel eşleme ise,&lt;/span&gt; tanımlanan nesnelerin  ilişkisel veritabanlarındaki kayıtlara eşlenmesini sağlayan bir teknoloji. Sonuç olarak, Hibernate benzer SQL sorgularının tek tek yazılması yerine &amp;quot;üretilmesini&amp;quot; sağlıyor; bu da yinelenen kodlamaları azaltıyor. Gönderilen parametrelerin ve dönen sonuçların nesne türünde olmasını destekleyerek nesne odaklı yazılım özelliğini verimli bir şekilde uygulayabilmemize yardımcı oluyor.&lt;/font&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;font size=&quot;2&quot;&gt;Başlangıç için basit bir Hibernate uygulaması, bu teknolojinin yapısı hakkında genel bir çıkarım yapmada faydalı olacaktır.&lt;/font&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;&lt;font size=&quot;5&quot; color=&quot;#ff9900&quot;&gt;Hibernate'in Yapılandırılması&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;&lt;h1&gt;  &lt;/h1&gt;&lt;p align=&quot;justify&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;font size=&quot;2&quot; color=&quot;#000000&quot;&gt;Hibernate,  &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#000000&quot;&gt;bağlantı havuzunun oluşturulması ve gerekli veri iletişimi ortamının sağlanması için hibernate.cfg.xml 'i kullanır. Aşağıda, veri tabanı ile iletişim sağlayacak olan hibernate yapılandırması için örnek xml kodu görülmektedir.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt; &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC &lt;br /&gt;    &amp;quot;-//Hibernate/Hibernate Configuration DTD//EN&amp;quot;&lt;br /&gt;    &amp;quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;    &amp;lt;session-factory&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;property name=&amp;quot;hibernate.temp.use_jdbc_metadata_defaults&amp;quot;&amp;gt;false&amp;lt;/property&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.connection.url&amp;quot; &amp;gt;jdbc:postgresql://&lt;font color=&quot;#000000&quot;&gt;connection.url&lt;/font&gt;/&lt;font color=&quot;#0033ff&quot;&gt;veritabanıAdı&lt;/font&gt; &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.connection.username&amp;quot; &amp;gt;&lt;font color=&quot;#0033ff&quot;&gt;kullanıcıAdı&lt;/font&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.connection.password&amp;quot; &amp;gt;&lt;font color=&quot;#0033ff&quot;&gt;şifre&lt;/font&gt;&amp;lt;/property&amp;gt;    &lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.connection.driver_class&amp;quot; &amp;gt;&lt;font color=&quot;#0033ff&quot;&gt;org.postgresql.Driver&lt;/font&gt; &amp;lt;/property&amp;gt;    &lt;br /&gt;        &lt;br /&gt;            &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.dialect&amp;quot; &amp;gt;&lt;font color=&quot;#0033ff&quot;&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/font&gt; &amp;lt;/property&amp;gt;&lt;br /&gt;         &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.default_schema&amp;quot; &amp;gt;public&lt;br /&gt;         &amp;lt;/property&amp;gt;&lt;br /&gt;         &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.show_sql&amp;quot; &amp;gt;true &amp;lt;/property&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.current_session_context_class&amp;quot; &amp;gt;thread &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.cache_provider_class&amp;quot; &amp;gt;org.hibernate.cache.NoCacheProvider &amp;lt;/property&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.query.factory_class&amp;quot; &amp;gt;org.hibernate.hql.classic.ClassicQueryTranslatorFactory &amp;lt;/property&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.max_size&amp;quot; &amp;gt;2 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.min_size&amp;quot; &amp;gt;1 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.max_size&amp;quot; &amp;gt;1 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.min_size&amp;quot; &amp;gt;1 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.timeout&amp;quot; &amp;gt;5000 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.max_statements&amp;quot; &amp;gt;100 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.idle_test_period&amp;quot; &amp;gt;300 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.c3p0.acquire_increment&amp;quot; &amp;gt;1 &amp;lt;/property&amp;gt;&lt;br /&gt;    &lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.max_fetch_depth&amp;quot; &amp;gt;1 &amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property  name=&amp;quot;hibernate.auto_commit&amp;quot; &amp;gt;true &amp;lt;/property&amp;gt;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;       &amp;lt;/session-factory&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-configuration&amp;gt;&lt;/address&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align=&quot;justify&quot;&gt;&lt;font color=&quot;#0033ff&quot;&gt;VeritabanıAdı, kullanıcıAdı &lt;font color=&quot;#000000&quot;&gt;ve&lt;/font&gt; şifre &lt;font color=&quot;#000000&quot;&gt;özellikleri kullanılan veritabanına bağlantıyı sağlar. [Bu alanları kendi veritabanınıza uygun şekilde değiştirmeyi unutmayınız...]&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align=&quot;justify&quot;&gt;Dialect (lehçe) özelliği  &lt;font color=&quot;#0033ff&quot;&gt;org.hibernate.dialect.PostgreSQLDialect&lt;font color=&quot;#000000&quot;&gt; ve driver class'ı &lt;/font&gt;&lt;/font&gt;&lt;font color=&quot;#0033ff&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;(sürücü)&lt;/font&gt; org.postgresql.Driver&lt;/font&gt;&lt;font color=&quot;#0033ff&quot;&gt;&lt;font color=&quot;#000000&quot;&gt; olarak belirlenmiştir ve Hibernate'e veritabanının PostgreSQL ile yönetildiğini bildirir. Hibernate birçok veritabanını desteklemektedir,Bu özellikler uygun şekilde değiştirilerek kullanılan veritabanına uyum sağlanır.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;5&quot; color=&quot;#ff9900&quot;&gt;Kalıcı Nesnelerin (Persistence) Yaratılması  [Plain Old Java Object (POJO)]&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Hibernate, POJO sınıflarını; yani bildiğimiz temel yapıdaki java nesnesi sınıflarını veritabanı tablolarına eşleme yapmak için kullanır.POJO sınıflarının değişkenleri de veritabanı kolonlarına eşlenir.  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;@Entity&lt;/address&gt;&lt;address&gt;@Table(name=&amp;quot;KISI&amp;quot;)&lt;/address&gt;&lt;address&gt;public class Kisi {&lt;/address&gt;&lt;address&gt;&lt;br /&gt;    private Long id;&lt;/address&gt;&lt;address&gt;    private String ad;&lt;/address&gt;&lt;address&gt;    private String soyad;&lt;/address&gt;&lt;address&gt;    private String kullaniciAdi;&lt;/address&gt;&lt;address&gt;    private String sifre;&lt;/address&gt;&lt;address&gt;&lt;br /&gt;    @Id&lt;/address&gt;&lt;address&gt;    @GeneratedValue(strategy=GenerationType.AUTO)&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;kisi_id&amp;quot;)&lt;/address&gt;&lt;address&gt;    public Long getId() {&lt;/address&gt;&lt;address&gt;        return id;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    public void setId(Long id) {&lt;/address&gt;&lt;address&gt;        this.id = id;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;ad&amp;quot;)&lt;/address&gt;&lt;address&gt;    public String getAd() {&lt;/address&gt;&lt;address&gt;        return ad;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    public void setAd(String ad) {&lt;/address&gt;&lt;address&gt;        this.ad = ad;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;soyad&amp;quot;)&lt;/address&gt;&lt;address&gt;    public String getSoyad() {&lt;/address&gt;&lt;address&gt;        return soyad;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    public void setSoyad(String soyad) {&lt;/address&gt;&lt;address&gt;        this.soyad = soyad;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;kullaniciAdi&amp;quot;)&lt;/address&gt;&lt;address&gt;    public String getKullaniciAdi() {&lt;/address&gt;&lt;address&gt;        return kullaniciAdi;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    public void setUsername(String kullaniciAdi) {&lt;/address&gt;&lt;address&gt;        this.kullaniciAdi = kullaniciAdi;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;sifre&amp;quot;)&lt;/address&gt;&lt;address&gt;    public String getSifre() {&lt;/address&gt;&lt;address&gt;        return sifre;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;address&gt;    public void setSifre(String sifre) {&lt;/address&gt;&lt;address&gt;        this.sifre= sifre;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;/blockquote&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;p align=&quot;justify&quot;&gt;Örnek kodda da görüldüğü üzere POJOlar temel java sınıfları yapısındadır. Veritabanı kolonlarına eşlenecek değişkenler, değişken türleriyle birlikte tanımlanırlar,  daha sonra sınıfın getter ve setterları yazılır. Son olarak sınıfa ve get metodlarının üzerine annotationlar (ek açıklama) eklenir. Annotationlar java ile yaratılan nesnenin ve değişkenlerin, veritabanındaki karşılıkları olan tablolar ve kolonlar ile eşlenmesini sağlar.  &lt;/p&gt;&lt;p&gt;Örnek olarak: &lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;@Entity&lt;/address&gt;&lt;address&gt;@Table(name=&amp;quot;KISI&amp;quot;)&lt;/address&gt;&lt;address&gt;public class Kisi {&lt;/address&gt;&lt;/blockquote&gt;&lt;address&gt; &lt;/address&gt;&lt;p&gt;Bu kod parçası, Kişi nesnesinin veritabanında Kisi tablosuna denk geldiğini belirtir. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;    @Id&lt;/address&gt;&lt;address&gt;    @GeneratedValue(strategy=GenerationType.AUTO)&lt;/address&gt;&lt;address&gt;    @Column(name=&amp;quot;kisi_id&amp;quot;)&lt;/address&gt;&lt;address&gt;    public Long getId() {&lt;/address&gt;&lt;address&gt;        return id;&lt;/address&gt;&lt;address&gt;    }&lt;/address&gt;&lt;/blockquote&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;div align=&quot;justify&quot;&gt;Burada ise, kisi_id'nin veritabanında kisi_id kolonuna denk geldiğini belirtilir.Ayrıca id özelliğinin  otomatik olarak üretildiği  bildirilir.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Annotationlar ile veritabanında oluşturulan varlıklar (entity) arasındaki ilişkileri belirtmek de mümkündür.&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;public class AcilanDers{&lt;/address&gt;&lt;address&gt;... &lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt;@ManyToOne&lt;br /&gt;    @JoinColumn(name = &amp;quot;donem_id&amp;quot;)&lt;br /&gt;    public Donem getDonem() {&lt;br /&gt;        return donem;&lt;br /&gt;    }&lt;/address&gt;&lt;address&gt;}  &lt;/address&gt;&lt;/blockquote&gt;&lt;p align=&quot;justify&quot;&gt;Yukarıdaki kod parçası,  bir dönemde açılan dersleri temsil eder; açılan ders ile dönem arasında many-to-one ilişkisi gözlenir; yani bir dönemde birden fazla ders açılabilir. getDonem() metodunun üzerine &amp;quot;@ManyToOne&amp;quot; annotation'ı eklemek bu ilişkiyi belirtmek için yeterlidir.&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;public class AcilanDers{&lt;/address&gt;&lt;address&gt;...&lt;/address&gt;&lt;address&gt;@OneToMany(targetEntity=AcilanDers.class,mappedBy=&amp;quot;donem&amp;quot;, cascade = CascadeType.ALL,fetch=FetchType.LAZY) &lt;br /&gt;    public Collection&amp;lt;AcilanDers&amp;gt; getAcilanDersList() {&lt;br /&gt;        return acilanDersList;&lt;br /&gt;    }&lt;/address&gt;&lt;address&gt;} &lt;/address&gt;&lt;/blockquote&gt;&lt;p align=&quot;justify&quot;&gt;Bu kod parçası da, aynı ilişkinin diğer nesne tarafından nasıl algılandığını gösterir. Açılan dersler dönem'e one-to-many ilişkisi ile bağlıdırlar. Annotation kısmında ayrıca  açılan derslerin bağlı olduğu dönem nesnesinin silinmesi vs. durumunda nasıl davranacakları belirlenmiştir. Belirli bir döneme ait birden fazla sayıdaki açılan derslerin döndürülmesi ise, açılan ders nesnelerinin bir liste halinde geri gelmesi ile sağlanır.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff9900&quot;&gt;&lt;strong&gt;&lt;font size=&quot;5&quot;&gt;Nesneleri Veritabanı Tabloları ile Eşleme&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Aşağıdaki örnek kod Kisi nesnesini veritabanındaki Kisi tablosuna eşlemek için kullanılır.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;address&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/address&gt;&lt;address&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC &lt;/address&gt;&lt;address&gt;    &amp;quot;-//Hibernate/Hibernate Configuration DTD//EN&amp;quot;&lt;/address&gt;&lt;address&gt;    &amp;quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&amp;quot;&amp;gt;&lt;/address&gt;&lt;address&gt;&amp;lt;hibernate-configuration&amp;gt;&lt;/address&gt;&lt;address&gt;    &amp;lt;session-factory&amp;gt;&lt;/address&gt;&lt;address&gt;        &lt;/address&gt;&lt;address&gt;        &amp;lt;property name=&amp;quot;hibernate.temp.use_jdbc_metadata_defaults&amp;quot;&amp;gt;false&amp;lt;/property&amp;gt;&lt;/address&gt;&lt;address&gt;        &lt;/address&gt;&lt;address&gt;&lt;br /&gt;        &lt;/address&gt;&lt;address&gt;        &amp;lt;!-- * * * * EŞLEME (MAPPING) * * * * --&amp;gt;&lt;/address&gt;&lt;address&gt;       &lt;br /&gt;&lt;/address&gt;&lt;address&gt;        &amp;lt;mapping class=&amp;quot;tr.com.portakalteknoloji.proje.kisi.Kisi&amp;quot;/&amp;gt;&lt;/address&gt;&lt;address&gt;        &lt;/address&gt;&lt;address&gt;         &lt;/address&gt;&lt;address&gt;       &amp;lt;/session-factory&amp;gt;&lt;/address&gt;&lt;address&gt;&amp;lt;/hibernate-configuration&amp;gt;&lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt; &lt;/address&gt;&lt;blockquote&gt; &lt;/blockquote&gt;&lt;/blockquote&gt;Aşağıdaki satır, ilgili dizinde bulunan Kisi nesnesinin veritabanı ile eşlenmesini sağlar.  &lt;blockquote&gt;&lt;address&gt; &lt;/address&gt;&lt;address&gt; &amp;lt;mapping class=&amp;quot;tr.com.portakalteknoloji.proje.kisi.Kisi&amp;quot;/&amp;gt;&lt;/address&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Java nesneleri ve nesne değişkenleri, veritabanı tabloları ve tablo kolonları ile xml kullanılarak da eşlenebilir; ancak biz bahsettiğimiz gibi annotationlar yardımıyla bu eşlemeyi gerçekleştirmiş olduğumuzdan bu aşamada tekrar tablo ve kolonlara eşleme yapmamıza gerek kalmadı.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;5&quot; color=&quot;#ff9900&quot;&gt;&lt;strong&gt;Çalıştırma&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Artık veritabanına veri ekleyen bir program yazabiliriz.   &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Öncelikle veritabanına bağlanmak ve veri  transferini gerçekleştirmek üzere bir oturum açmalıyız (Hibernate Session). Hibernate Session, Hibernate ile Java uygulaması arasında çalışma zamanlı bir arayüz sağlamaktadır; bu nedenle veri ekleme işlemine geçmeden önce bir oturum açmamız gerekiyor. Bu işlem için yapılandırma dosyası olan &lt;font color=&quot;#000000&quot;&gt;hibernate.cfg.xml dosyasını kullanarak uygulamamızın bir Hibernate Session yaratmasını sağlayan &lt;/font&gt;SessionFactory'den yararlanırız.&lt;font color=&quot;#000000&quot;&gt; Daha sonra, oluşturulan oturum nesnesi üzerinde &amp;quot;save (kaydet)&amp;quot; metodu kullanarak verileri veritabanına kaydedebiliriz.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;   	 	 	 	 	&lt;!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		ADDRESS.cjk { font-style: italic } 		ADDRESS.ctl { font-style: italic } 		P { margin-bottom: 0.21cm } 	--&gt; 	  &lt;/p&gt;&lt;blockquote&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;import org.hibernate.Session;&lt;br /&gt;import org.hibernate.SessionFactory;&lt;br /&gt;import org.hibernate.cfg.Configuration;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Test {&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;  public static void main(String[] args) {&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;    Session session = null;&lt;br /&gt;&lt;br /&gt;    try{&lt;br /&gt;      // Bu adımda session factory hibernate.cfg.xml dosyasından yararlanarak&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;       &lt;font&gt;&lt;font size=&quot;2&quot;&gt;// bir oturum (session) oluşturur ve hibernate'i kullanıma açar.&lt;br /&gt;&lt;br /&gt;      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;      session =sessionFactory.openSession();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        //Yeni bir kişi nesnesi yaratılarak, nesne alanlarına (veritabanındaki kolonlar) bilgi eklenir. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        System.out.println(&amp;quot;Kayıt ekleniyor..&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        Kisi kisi = new Kisi();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        kisi.setId(1);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        kisi.setAd(&amp;quot;Duygu&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        kisi.setSoyad(&amp;quot;Sarikaya&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;        kisi.setkullaniciAdi(&amp;quot;DuSa&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;        &lt;font&gt;&lt;font size=&quot;2&quot;&gt;kisi.setsifre(&amp;quot;12345&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;       &lt;font&gt;&lt;font size=&quot;2&quot;&gt;session.save(kisi);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;        &lt;font&gt;&lt;font size=&quot;2&quot;&gt;System.out.println(&amp;quot;Kayıt ekleme işlemi tamamlandı&amp;quot;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;    &lt;font&gt;&lt;font size=&quot;2&quot;&gt;}catch(Exception e){&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;      &lt;font&gt;&lt;font size=&quot;2&quot;&gt;System.out.println(e.getMessage());&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;    &lt;font&gt;&lt;font size=&quot;2&quot;&gt;}finally{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;      &lt;font&gt;&lt;font size=&quot;2&quot;&gt;// Veri üzerindeki işlemler (güncelleme,ekleme,silme gibi) tamamlandığında oturum kapatılır&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;          &lt;font&gt;&lt;font size=&quot;2&quot;&gt;// ve veritabanındaki değişiklikler bu noktada kaydedilir.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;br /&gt; &lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;      &lt;font&gt;&lt;font size=&quot;2&quot;&gt;session.flush();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;      &lt;font&gt;&lt;font size=&quot;2&quot;&gt;session.close();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;      &lt;font&gt;&lt;font size=&quot;2&quot;&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;    &lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;  &lt;font&gt;&lt;font size=&quot;2&quot;&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;address class=&quot;western&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font&gt;&lt;font size=&quot;2&quot;&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/address&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content>
		<author>
			<name>Duygu Sarıkaya</name>
			<uri>http://blogs.portakalteknoloji.com/duygu/blog/</uri>
		</author>
		<source>
			<title type="html">Duygu Sarıkaya</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/duygu/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/duygu/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Portakal'da yeni çalışma arkadaşı arayışı</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/11/156/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/11/156/</id>
		<updated>2008-06-11T11:12:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.portakalteknoloji.com/&quot;&gt;Portakal Teknoloji&lt;/a&gt;'de sürekli olarak büyüyen teknik kadromuzu destekleyecek idari kadromuza katılacak yarı teknik bir iş tanımına uygun bir çalışma arkadaşı daha arıyoruz. &lt;/p&gt;

&lt;p&gt;Satış Destek Mühendisi  (Sales Support Engineer) olarak adlandırdığımız kadronun görev tanımı aşağıda: 
&lt;ul&gt;
&lt;li&gt;Müşterilere dönük proje planlama ve teklif hazırlama aşamalarında teknik görevler (teknoloji seçimi, süre saptaması, kaynakların tespit edilmesi ve maliyet hesaplaması  gibi) üstlenmek &lt;/li&gt;
&lt;li&gt;Satış öncesi ve uygulama sırasında müşteri ilişkilerinde teknik ekiplere destek olmak,  &lt;/li&gt;
&lt;li&gt;Gerekli durumlarda teknik eğitimlerin planlanmasında ve uygulanmasında görev almak &lt;/li&gt;
&lt;li&gt;Kabul öncesi test gerektiren durumlarda, test planlaması ve uygulanmasında görev almak &lt;/li&gt;
&lt;li&gt;Süren ve devam eden Ar-Ge projeleri ve ürün stratejisi konusunda teknik ekipler ve proje ortakları ile ortak planlama çalışmalarına katılmak &lt;/li&gt;
&lt;li&gt;Dönem dönem kısa süreli şehir dışı ve yurt dışı seyahatlere çıkacak &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Bu arkadaşımızın, sahip olmasını istediğimiz bazı özellikler elbette var. 
&lt;ul&gt;
&lt;li&gt;Bilgisayar Mühendisliği yada Elektrik Elektronik Mühendisliği programlarından mezun olmuş&lt;/li&gt;
&lt;li&gt;Araştırmaktan, öğrenmekten çekinmeyen &lt;/li&gt; 
&lt;li&gt;Yaratıcı ve hareketli bir kişiliği olan &lt;/li&gt;
&lt;li&gt;Yazılı ve sözlü iletişimde başarılı &lt;/li&gt;
&lt;li&gt;Yeterli yabancı dil bilgisi bulunan &lt;/li&gt;
&lt;li&gt;Özgür yazılım konusundaki ısrarımıza adapte olmakla kalmayıp sahip çıkan &lt;/li&gt;
&lt;li&gt;Tercih olarak sigara kullanmayan &lt;/li&gt;
&lt;/ul&gt;
arkadaşlarımızın başvurularını, özgeçmişleri ile birlikte &lt;a href=&quot;mailto:kariyer@portakalteknoloji.com&quot;&gt;kariyer@portakalteknoloji.com&lt;/a&gt; adresine yapabilirler. &lt;/p&gt;

&lt;p&gt;Başvuruları 15 Temmuz'a kadar alıp, değerlendirmeleri de Temmuz ayı sonuna kadar yapmayı planlıyoruz. Ama elbette ideal bir aday ile karşılaşırsak, süreci hızlandırabiliriz de. &lt;/p&gt;</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Sanayi Tezleri Projesi Bilgilendirme Toplantısı</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/11/10/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/11/10/</id>
		<updated>2008-06-11T08:38:00+00:00</updated>
		<content type="html">23 Haziran 2008 Pazartesi günü, T.C. Sanayi ve Ticaret Bakanlığı tarafından başlatılan SANTEZ (Sanayi Tezleri Projesi) hakkında bilgilendirme konferansı yapılacak. ODTÜ Teknokent Şirketleri çalışanları ve ODTÜ Akademik Personelinin katılacağı toplantı  13:00 – 16:00 arasında, ODTÜ Teknokent İkizler Blok Konferans Salonu'nda gerçekleştirilecek.
SANTEZ hakkında bilgilendirmenin amaçlandığı toplantıda Proje hakkında bilgiler verilecek, başvuru ve destek süreçleri ile ilgili detaylı bilgiler sunulacak. 
Toplantıya kayıt için ilgili kişi: Faruk İNALTEKİN  (finaltekin@metutech.metu.edu.tr)</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Ikea Hacker</title>
		<link href="http://blogs.portakalteknoloji.com/bora/blog/2008/06/07/155/"/>
		<id>http://blogs.portakalteknoloji.com/bora/blog/2008/06/07/155/</id>
		<updated>2008-06-07T18:48:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://ikeahacker.blogspot.com/&quot;&gt;Burada&lt;/a&gt;...</content>
		<author>
			<name>Bora Güngören</name>
			<uri>http://blogs.portakalteknoloji.com/bora/blog/</uri>
		</author>
		<source>
			<title type="html">Bora Güngören</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/bora/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/bora/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">DOSBox ile eski günlere dönün</title>
		<link href="http://blogs.portakalteknoloji.com/emre/blog/2008/06/03/16/"/>
		<id>http://blogs.portakalteknoloji.com/emre/blog/2008/06/03/16/</id>
		<updated>2008-06-03T13:01:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img src=&quot;http://www.emreyuce.com/blog/wp-content/uploads/2008/06/indiana-jones-and-the-last-crusade_1jpg.png&quot; border=&quot;0&quot; alt=&quot;Indiana Jones and the Last Crusade&quot; align=&quot;left&quot; /&gt;Hazır Indiana Jones filmi de sinemalara gelmişken eski dos oyunlarını ( sanki yeni dos oyunu mu var :-p ) yad etmenin tam zamanı. Hem de linux yüklü bilgisayarımız ile.&lt;/p&gt; &lt;p&gt;Dosbox modern bilgisayarınızı ekran kartı, ses kartı, fare, joystick gibi tüm donanımların tümüne sahip bir Intel x86 PC olarak çalıştırmanızı sağlayan bir emülatör. İşletim sisteminiz ister windows xp veya vista, ister linux, ister freebsd olsun. Bu sayede bilgisayarınızda MS-DOS uyumlu uygulamaları rahatlıkla çalıştırabiliyorsunuz. Tabii ki biz oyunlarla ilgileniyoruz şu an için :-))&lt;/p&gt; &lt;p&gt;Pekala nereden ulaşacaksınız dosbox'a ? &lt;a href=&quot;http://www.dosbox.com/&quot; target=&quot;_blank&quot; title=&quot;DOSBox&quot;&gt;Buraya&lt;/a&gt;  tıklayarak DOSBox'ın sitesine ulaşabilirsiniz.  Ayrıca &lt;a href=&quot;http://www.dosbox.com/wiki&quot; target=&quot;_blank&quot; title=&quot;DOSBox wiki&quot;&gt;buradan&lt;/a&gt; DOSBox'ın wikisine ulaşabilirsiniz. Ayrıca DOSBox ile uğraşmaya başladığımda bana yardımcı olan DOSBox'ı nasıl kullanacağımızı anlatan &lt;a href=&quot;http://www.dosbox.com/wiki/Usage&quot; target=&quot;_blank&quot; title=&quot;DOSBox usage&quot;&gt;bu wiki sayfası&lt;/a&gt;  bana çok yardımcı oldu.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pardus kullanıcısıyım ve 2007.3 sürümünde DOSBox zaten kurulu olarak &lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://www.emreyuce.com/blog/wp-content/uploads/2008/06/indiana-jones-and-the-last-crusade_3jpg.png&quot; border=&quot;0&quot; alt=&quot;Indiana Jones and the Last Crusade&quot; align=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;gelmişti. DOSBox'ın pardusunuzda kurulu olup olmadığını konsolda&amp;quot; &lt;em&gt;pisi sr dosbox&lt;/em&gt;&amp;quot; komutu yazarak öğrenebilirsiniz. Eğer  kurulu değilse &amp;quot;&lt;em&gt;su -&lt;/em&gt;&amp;quot; komutu ile root olup daha sonra &amp;quot;&lt;em&gt;pisi it dosbox&lt;/em&gt;&amp;quot; yazarak DOSBox paketini kurabilirsiniz.&lt;/p&gt; &lt;p&gt;Diğer işletim sistemleri için DOSBox'ın sayfasındaki &amp;quot;&lt;a href=&quot;http://www.dosbox.com/download.php?main=1&quot; target=&quot;_blank&quot; title=&quot;DOSBox Downloads&quot;&gt;Downloads&lt;/a&gt; &amp;quot; bölümünde gerekli bilgiye ve paketlere ulaşabilirsiniz.&lt;/p&gt; &lt;p&gt;Pekala DOSBox'ı başarıyla kurduk ama oyunlar nerdeee ?Oyunlara için önerebileceğim bir site &lt;a href=&quot;http://www.abandonia.com/&quot; target=&quot;_blank&quot; title=&quot;Abandonia&quot;&gt;abandonia.com&lt;/a&gt;  . Elbette siz bu sitelerin örnekleri &lt;a href=&quot;http://www.google.com&quot; target=&quot;_blank&quot; title=&quot;Google Amca :-p&quot;&gt;google amca&lt;/a&gt; 'dan yardım alarak artırabilirsiniz.&lt;/p&gt; &lt;p&gt;Abandonia'da kategorilere ayrılmış yüzlerce oyun bulabilirsiniz. Çoğu oyun &amp;quot;Abandonware&amp;quot; olarak tabir edilen üzerinde telif hakkı bulunmayan ve/veya şu an satılmayan oyunlar. Dolayısıyla çoğu oyunu ücretsiz indirebiliyorsunuz. Ancak bazıları &amp;quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Entertainment_Software_Association&quot; target=&quot;_blank&quot; title=&quot;The ESA&quot;&gt;The ESA&lt;/a&gt; protected&amp;quot; olarak geçiyor, bu oyunlara indirememek bazen insanı çok üzüyor. Mesela sitede görünce aklıma gelen ve eskiden çok severek oynadığım &amp;quot;Caesar II&amp;quot;'yi indiremediğimi gördüm :-(&lt;/p&gt;  &lt;p&gt;&lt;img src=&quot;http://www.emreyuce.com/blog/wp-content/uploads/2008/06/indiana-jones-and-the-last-crusade_7jpg.png&quot; border=&quot;0&quot; alt=&quot;Indiana Jones and the Last Crusade&quot; align=&quot;left&quot; /&gt;&lt;/p&gt; &lt;p&gt;Madem &amp;quot;Caesar II&amp;quot;'yi indiremiyoruz o zaman &amp;quot;&lt;a href=&quot;http://www.abandonia.com/en/games/152/Indiana+Jones+and+the+Last+Crusade.html&quot; target=&quot;_blank&quot; title=&quot;Indiana Jones and the Last Crusade&quot;&gt;Indiana Jones and the Last Crusade&lt;/a&gt;&amp;quot; adlı bulmaca çözmeli bol maceralı :-) Indiana Jones oyununu indirip kuralım.&lt;/p&gt; &lt;p&gt;Oyunu bilgisayarımıza indirdikten sonra, dosyayı açıyoruz. Konsoldan ilgili dizine giriyoruz ve &amp;quot;&lt;em&gt;dosbox INDY256.EXE&lt;/em&gt;&amp;quot; komutunu veriyoruz. Küçük ekranda &amp;quot;Indiana Jones&amp;quot; oyunumuz açılıyor, hem de müzikli :-) Eğer tam ekranda çalıştırmak istersek &amp;quot;&lt;em&gt;dosbox INDY256.EXE&lt;/em&gt; -fullscreen&amp;quot; komutunu veriyoruz. Ayrıca &lt;a href=&quot;http://www.dosbox.com/wiki/Usage&quot; target=&quot;_blank&quot; title=&quot;DOSBox usage&quot;&gt;buradan&lt;/a&gt;  dosbox komutunun kullanımına erişebilirsiniz.&lt;/p&gt; &lt;p&gt;Solda oyunun ekran görüntülerini görebilirsiniz.&lt;/p&gt; &lt;p&gt;Herkese iyi eğlenceler...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content>
		<author>
			<name>Emre Yüce</name>
			<uri>http://blogs.portakalteknoloji.com/emre/blog/</uri>
		</author>
		<source>
			<title type="html">Emre Yüce</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/emre/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/emre/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">KOBİ'ler İçin Finans Endeksi İnternet Sitesi Açıldı!</title>
		<link href="http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/02/9/"/>
		<id>http://blogs.portakalteknoloji.com/ozlem/blog/2008/06/02/9/</id>
		<updated>2008-06-02T14:36:00+00:00</updated>
		<content type="html">Avrupa Birliği İşletme ve Sanayi Genel Müdürlüğü'nün , KOBİ' ler için ulusal veya uluslararası krediler, teminatlar, risk sermayesi, işletme maliyesi konularında bilgi edinmelerini sağlayacak internet sitesi açıldı. Söz konusu site, üye ülkelerdeki finansal avantajlara erişimi kolaylaştırmakla beraber, İşletme ve Girişimcilik Çok Yıllı Programı ile Rekabet ve İnnovasyon Çerçevesi konularında da yatırım araçları hakkında bilgi edinilmesini amaçlıyor. Bilgiler sürekli güncel tutuluyor, böylece KOBİ'lerin mali araçlara erişiminde şeffaflık hedefleniyor.  Siteye&lt;a href=&quot;http://ec.europa.eu/enterprise/entrepreneurship/financing/enterprise_finance_index/index_en.htm &quot;&gt; buradan&lt;/a&gt;  ulaşabilir, &lt;a href=&quot;https://ec.europa.eu/enterprise/intsub&quot;&gt;şuradan&lt;/a&gt;  haftalık haber bültenine üye olabilirsiniz.</content>
		<author>
			<name>Özlem Hangün</name>
			<uri>http://blogs.portakalteknoloji.com/ozlem/blog/</uri>
		</author>
		<source>
			<title type="html">Ozlem Hangun</title>
			<subtitle type="html">Work BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/ozlem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Thread Kavramı</title>
		<link href="http://blogs.portakalteknoloji.com/serdar/blog/2008/05/23/4/"/>
		<id>http://blogs.portakalteknoloji.com/serdar/blog/2008/05/23/4/</id>
		<updated>2008-05-23T17:37:00+00:00</updated>
		<content type="html">&lt;!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 		H3 { margin-bottom: 0.21cm } 		H3.western { font-family: &quot;Arial&quot;, sans-serif } 		H3.cjk { font-family: &quot;Arial&quot; } 		H3.ctl { font-family: &quot;Tahoma&quot; } 	--&gt; 	  &lt;h3 class=&quot;western&quot;&gt;Thread nedir?&lt;/h3&gt; &lt;p&gt;	Thread (kanal), bir programda çalışacak komutlar dizisidir. UNIX işlemleri, main() fonksiyonuyla başlayan tek bir thread'den oluşur. Thread konseptinden önce birden çok komutu paralel olarak çalıştırmanın yolu, fork() ve exec() sistem fonksiyonlarını kullanmaktı. Ama thread mekanizmasını kullanarak, bir program içinde paralel olarak birden çok işi yapmak mümkündür. Ne var ki bunu yapmak, aşağıda değineceğimiz bazı özel durumlar nedeniyle dikkat isteyen bir iştir.&lt;/p&gt; &lt;p&gt;	Neden thread kullanmalıyım sorusuna cevap vermek önemlidir. Bu mekanizma kullanılarak yazılan bir program, onsuz yazılan bir programdan hem daha zordur, hem de daha uzun zaman alır. Dolayısıyla eğer gerçekten kullanmanız gerekmiyorsa, thread kullanmaya çalışmak pek de verimli ve tavsiye edilecek bir durum değildir. Çünkü bu meka&lt;/p&gt; &lt;p&gt;	Peki avantajları neler? Üç temel avantajdan bahsedebiliriz: hız, girdi-çıktı verimi ve taşınabilirlik. Bunları tek tek incelersek:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Hız: &lt;/strong&gt;&lt;span&gt;Threadler arasında iletişim oldukça hızlıdır. Eğer algoritmanız hızlı iletişim gerektiriyorsa thread mekanizmasını kullanmak için iyi bir sebebiniz var demektir.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Girdi-Çıktı(I/O) verimi: &lt;/strong&gt;&lt;span&gt;Normal bir UNIX işleminde, bloklanmış bir girdi-çıktı isteği bütün işlemin durmasına ya da beklemesine sebep olabilir. Ama thread mekanizmasında bir bloklama isteği sadece isteği yapan thread'i ilgilendirdiği için programın geri kalanı bundan etkilenmez.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Taşınabilirlik: &lt;/strong&gt;&lt;span&gt;POSIX thread'ler, çok az bir hız kaybıyla farklı platformlara taşınabilir. Burada taşınabilirlikten kasıt farklı işletim sistemlerinden çok farklı mimarilerdir. &lt;/span&gt; &lt;/p&gt; &lt;h3 class=&quot;western&quot;&gt;Thread tanımlaması&lt;/h3&gt; &lt;p&gt;	Nasıl her işlemin(process) bir işlem tanımlayıcısı (ID) varsa, thread'lerin de IDsi vardır. Aralarındaki fark şu ki process kimlikleri sistem bazında verilirken, thread kimlikleri ait oldukları process  bazında verilir.  &lt;/p&gt; &lt;p&gt;	Thread kimliklerinin veri türü 'pthread_t' dir. Bu veri türüne integer türü gibi davranmak ve bu mantıkla üzerinde işlem yapmak mümkün değildir. Ama thread kimliklerini karşılaştırmak için de fonksiyon vardır.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;	//eşitse sıfır, değilse sıfır harici değer döner&lt;/p&gt; &lt;p&gt;	int pthread_equal(pthread_t tid1,pthread_t tid2);&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;	pthread_t, bir yapıdır(struct). Yapı olması nedeniyle de değerini yazdırmanın taşınabilir bir yöntemi yoktur.  &lt;/p&gt; &lt;p&gt;	Bir thread'in ID'sini pthread_self fonksiyonu ile elde eder.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	pthread_t pthread_self(void);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;h3 class=&quot;western&quot;&gt;Thread yaratmak&lt;/h3&gt; &lt;p&gt;	Unix process modelinde, her process sadece bir thread kontrol eder. Thread tabanlı modelde de aynı durum geçerlidir. Her process sadece bir thread'den oluşur. Yeni thread'ler program çalışırken oluşur.&lt;/p&gt; &lt;p&gt;	Yeni bir thread, pthread_create fonksiyonuyla yaratılır.  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr,&lt;/p&gt; &lt;p&gt;				void *(*start_rtn) (void), (void) *restrict arg);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	tidp ile gösterilen hafıza adresi, yeni yaratılan thread'in ID'sini tutar. Yaratılan thread'in  başlangıç adresi start_rtn'dir.  &lt;/p&gt; &lt;p&gt;	Bir thread yaratıldığında hangi thread'in önce çalışacağı konusunda bir garanti yoktur. yaratılan thread de olabilir çağıran thread de. Yeni yaratılan thread, yaratan thread'in adres alanına erişebilir. Ama bekleyen sinyal listesi bu thread için temizlenir.&lt;/p&gt; &lt;p&gt;	pthread fonksiyonları, hata olduğunda “errno” kullanmak yerine bir hata kodu dönerler.  &lt;/p&gt; &lt;p&gt;	thread yarattığınız zaman, main fonksiyonununzda bir sleep kullanmanız tavsiye edilir. Çünkü ana işleminiz bir thread bitmeden önce bitebilir, bu da hataya sebep olur.&lt;/p&gt; &lt;h3 class=&quot;western&quot;&gt;Thread yok etmek&lt;/h3&gt; &lt;p&gt;	Bir işlem içinde herhangi bir thread exit, _Exit ya da _exit fonksiyonlarından birini çağırırsa, bütün işlem sonlandırılır.  &lt;/p&gt; &lt;p&gt;	Bütün işlemi sonlandırmadan bir thread'i sonlandırmanın ise üç yolu vardır:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p&gt;thread, start rutininden döner. Dönüş değeri 	thread'in exit kodudur.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p&gt;Bir thread, aynı işlemdeki bir thread tarafından iptal 	edilir.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p&gt;thread, pthread_exit fonksiyonunu çağırır.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	void pthread_exit(void * rval_ptr);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Buradaki rval_ptr, türü olmayan bir göstericidir. Bu gösterici, işlemlerdeki diğer thread'ler tarafından pthread_join fonksiyonu sayesinde erişilebilir.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	int pthread_join(pthread_t thread, void **rval_ptr);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Bu fonksiyonun detaylarını incelemenizi tavsiye ederim.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Bir thread, aynı işlemdeki başka bir thread'i pthread_cancel fonksiyonu ile yokedebilir.  &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	int pthread_cancel(pthread_t tid);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;h3 class=&quot;western&quot;&gt;Thread senkronizasyonu&lt;/h3&gt; &lt;p&gt;	Multi-thread programlar yazarken en kritik nokta, paylaşılan bilgilerin kontrolüdür. Eğer bir thread diğer thread'lerin üzerinde değişiklik yapamayacağı bir veriyi okuyorsa sorun yoktur. Ama bir threadin okuduğu veriyi başka bir thread'in değiştirebilme yeteneği varsa bu noktada dikkat edilmesi gerekir. Çünkü birinin okuduğu değeri diğeri değiştirdiğinde tutarsızlık olur ve bu da programınızın düzgün çalışmasını (belkide çalışmasını) engeller.&lt;/p&gt; &lt;p&gt;	Bu sorunu aşmanın çeşitli yolları vardır. Biri bilgisayar mimarisini buna göre düzenlemektir ki bir yazılımcı bunun varolduğuna güvenemez. İkinci yol değiştirilen değerlere kilit koymaktır(lock). Ayrıca thread senkronizasyonu da bir yöntemdir. Senkronizasyon en kısa tabiriyle thread'lerin bir değişiklik yapacakları zaman diğer thread'lerle birlikte hareket etmesi ve birinin yaptığı değişiklikten diğerlerinin de haberdar edilmesidir.&lt;/p&gt; &lt;p&gt;	Kısa bir İnternet araştırması sonucu bu konuyla ilgili birçok örnek kod bulabilirsiniz.&lt;/p&gt; &lt;h3 class=&quot;western&quot;&gt;Mutex&lt;/h3&gt; &lt;p&gt;	pthread mutex(mutual-exclusion) kullanarak verilerin aynı anda sadece bir thread tarafından değiştirilebileceğini garanti ederek verileri koruyabiliriz. Mutex, bir veriyi değiştirmeden hemen önce diğer thread'lerin veriye erişimini engellemek üzere konulan bir kilit olarak ifade edilebilir.  &lt;/p&gt; &lt;p&gt;	Mutex mekanizması sadece thread'lerin aynı veri erişimi kurallarını uyguladığı durumlarda işe yarar.  &lt;/p&gt; &lt;p&gt;	Mutex değişkenleri, pthread_mutex veri türüyle ifade edilir. Mutex kullanmadan önce ya PTHREAD_MUTEX_INITIALIZER  sabiti ya da pthread_mutex_init fonksiyonu ile başlatılmalıdır. Eğer mutex, malloc kullanarak dinamik olarak yerleştirildiyse, hafızayı boşaltmadan önce pthread_mutex_destroy fonksiyonu çağrılmalıdır.  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	int pthread_mutex_init (pthread_mutex_t *restrict mutex,  &lt;/p&gt; &lt;p&gt;					const pthread_mutexattr_t *restrict attr);&lt;/p&gt; &lt;p&gt;	int pthread_mutex_destroy (pthread_mutex_t *mutex);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Yukarıda bahsettiğim kilitleme işlemlerini gerçekleştirmek için de aşağıdaki fonksiyonlar kullanılır.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	#include &amp;lt;pthread.h&amp;gt;&lt;/p&gt; &lt;p&gt;	int pthread_mutex_lock (pthread_mutex_t *mutex);&lt;/p&gt; &lt;p&gt;	int pthread_mutex_trylock (pthread_mutex_t *mutex);&lt;/p&gt; &lt;p&gt;	int pthread_mutex_unlock (pthread_mutex_t *mutex);&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Multithread programlama burada bahsettiğimden çok daha uzun bir konudur. Bu sebeple benim yazımı bir başlangıç yazısı ya da kavramlar açısından yol gösterici olarak kabul etmenizi ve konuyu özellikle örnek kodlar inceleyerek daha detaylı ele almanızı tavsiye ederim. Çünkü mutlthread programlama, tehlikeli programlama tekniklerinden biridir. Araştırmalarınız için diğer birçok konuda olduğu gibi bu konuda da güzel bir başlangıç noktasına sahipsiniz: man pthread.h (Tabi eğer Linux kullanıcısı iseniz:D)&lt;/p&gt;</content>
		<author>
			<name>Serdar Tuğcu</name>
			<uri>http://blogs.portakalteknoloji.com/serdar/blog/</uri>
		</author>
		<source>
			<title type="html">Serdar Tuğcu</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/serdar/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/serdar/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">TPM ve Volume Encryption</title>
		<link href="http://blogs.portakalteknoloji.com/emre/blog/2008/05/22/15/"/>
		<id>http://blogs.portakalteknoloji.com/emre/blog/2008/05/22/15/</id>
		<updated>2008-05-22T09:45:00+00:00</updated>
		<content type="html">&lt;p&gt;Dizüstü bilgisayarınız kaybolursa bulan kişinin içindeki bilgilere erişmesini engellemek için kullanabileceğiniz bir program Bitlocker. Peki bunu nasıl yapıyor, hangi aşamada ne amaçla &lt;strong&gt;TPM (Trusted Platform Module)&lt;/strong&gt; kullanıyor ? &lt;/p&gt;&lt;p&gt;Öncelikle kısaca TPM'den bahsedelim. TPM anakart üzerinde bulunan &amp;quot;Trusted Computing&amp;quot; uygulamaları için kullanılan küçük bir çip.Asimetrik şifreleme, rasgele sayı üretimi, özet değeri hesaplama (SHA-1) TPM'in yapabildikleri arasında. TPM içinde geçici (volatile) ve geçici olmayan (non-volatile) olmak üzere 2 çeşit hafıza bulunuyor. Geçici olmayan hafızada &lt;strong&gt;EK (Endorsement Key)&lt;/strong&gt;, &lt;strong&gt;SRK (Storage Root Key)&lt;/strong&gt; ve EK ve SRK kullanımı için tanımlama bilgisi bulunuyor. Geçici hafızada ise kullanılacak anahtarın yükleneceği yer olan anahtar bölümleri (key slots), sistem durumunun ölçüm sonuç değerlerinin tutulduğu &lt;strong&gt;PCR (Platform Configuration Registers)&lt;/strong&gt; bulunuyor.&lt;/p&gt;&lt;p&gt;TPM ve PCR'lara veri kaydetme özelliği kullanarak sistemin istediğimiz durumda olup olmadığını kontrol ederek belli bilgileri şifreleyerek saklayabiliriz ki buna &lt;strong&gt;SEAL&lt;/strong&gt; deniyor. Örneğin herhangi bir anda çalışan bir kodun özet (hash; algoritma SHA-1) değerini istediğimiz bir PCR'a yazıyoruz. Daha sonra seçtiğimiz bir anahtar ve PCR değeri ile bir dosyayı şifreliyoruz (tabiri cayizse SEAL ediyoruz). Daha sonra bu dosyaya erişmek istediğimizde TPM ilgili PCR'daki değeri kontrol edecek ve dosyayı şifrelediğimiz zamankiyle aynı ise dosyayı deşifre edecektir. Buradaki amaç dosyayı bilgisayarın güvenli olduğunu bildiğimiz bir durumda şifrelemek ve ancak bu durumda iken deşifre edilip kullanılmasını sağlamak.&lt;/p&gt;&lt;p&gt;Bu noktada biraz da TPM'deki anahtar hiyerarşisinden bahsetmek istiyorum. TPM üretildiğinde içinde üreten firma tarafından konmuş 2048 bitlik bir RSA anahtarı (açık (public) ve özel (private) kısımları) bulunuyor ve &lt;strong&gt;EK (Endorsement Key)&lt;/strong&gt; olarak adlandırılıyor. Biz TPM'i kullanmaya başladığımızda Take Ownership komutunu veriyoruz ve &lt;strong&gt;SRK (Storage Root Key)&lt;/strong&gt; ve SRK'ya erişmek için bir şifre oluşturuyoruz. SRK'nın özel kısmı, EK'nın açık kısmı ile şifreleniyor ve hafızada saklanıyor. Daha sonra gerektiğinde şifrelenmiş SRK, TPM'e yükleniyor. Burada EK'nın özel kısmı ile deşifre ediliyor. EK ve SRK'yı veri şifrelemek yerine kullanacağımız anahtarları şifrelemek için kullanıyoruz. Her anahtarın gizli kısmı, bir üstündeki (parent) anahtarın açık kısmı ile şifreleniyor, böylece bir anahtar ağacı oluşturuluoyr ve bu ağaç hafızada saklanıyor.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.iaik.tugraz.at/teaching/04_trustedcomputing/slides/tpm_vo.pdf&quot; title=&quot;TPM&quot;&gt;Burayı&lt;/a&gt;  tıklayarak ulaşabileceğiniz döküman bu yapıyı anlamanıza yardımcı olacaktır.&lt;/p&gt;&lt;p&gt;Pekala tüm bunların bilgisayarımızın hafızasını şifrelememiz ile ne ilgisi var ?&lt;/p&gt;&lt;p&gt;Bilgisayarımızın hafızasını şifrelerken kullandığımız anahtarların güvenliğini ve bilgisayarımızın güvenilir durumda olup olmadığının kontrolünü yaparken TPM'den faydalanacağız. Burada örnek olarak Bitlocker programının kullandığı yapıyı temel alacağım. &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://download.microsoft.com/download/0/2/3/0238acaf-d3bf-4a6d-b3d6-0a0be4bbb36e/BitLockerCipher200608.pdf&quot;&gt;Bitlocker&lt;/a&gt;  öncelikle simetrik bir anahtar ve AES + Elephant Diffuser algoritmasını kullanarak tüm hafızayı şifreliyor ve bu anahtarı FVEK (Full Volume Encryption Key) olarak adlandırıyor. Daha sonra bu anahtarı VMK (Volume Master Key)olarak adlandırdığı başka bir anahtar ile şifreliyor.Son olarak VMK'yı boot esnasında ROM'daki bilgilerin özet değerinin kayıtlı olduğu PCR değerini kullanarak SEAL ediyor. VMK'nın şifrelenmiş halini boot bölümünde saklıyor. Dolayısıyla bilgisayar açılırken boot bölümünü okuyor, gerekli ölçümleri yapıp PCR'a kaydediyor. Eğer kaydedilen PCR değeri ve VMK'nın şifrelendiği andaki PCR değeri aynı ise VMK'yı deşifre (UNSEAL) ediyor. VMK kullanılarak FVEK deşifre edliyor ve FVEK ile de tüm hafıza deşifre ediliyor.&lt;/p&gt;&lt;p&gt;Ancak Microsoft kullanıcıları bu yöntemi donanım ataklarına karşı dayanıksız olduğunu düşünüyor ve usb ya da pin gibi diğer güvenlik önlemlerinin alınmasının gerekli olduğunu savunuyor. Elbette her yöntemin iyi olduğu kadar kötü yönleri de var. TPM kullanmak yazılım ataklarına karşı savunma sağlarken, sistemi daha güvenli hale getirmek için kullanacağımız usb'nin ise kaybolma riski sistemi hatta belki de şirketi tehlikeye atabilir. &lt;/p&gt;&lt;p&gt;Ayrıca &lt;em&gt;google amca&lt;/em&gt; da bize &lt;a href=&quot;http://www.google.com.tr/search?hl=tr&amp;amp;q=lost+laptop+tpm+volume+encryption&amp;amp;start=0&amp;amp;sa=N&quot; target=&quot;_blank&quot;&gt;bu konu&lt;/a&gt;da bir çok faydalı pdf ve sunum dosyası sonucu getiriyor :-) &lt;/p&gt;</content>
		<author>
			<name>Emre Yüce</name>
			<uri>http://blogs.portakalteknoloji.com/emre/blog/</uri>
		</author>
		<source>
			<title type="html">Emre Yüce</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/emre/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/emre/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">LD PRELOAD</title>
		<link href="http://blogs.portakalteknoloji.com/serdar/blog/2008/05/20/3/"/>
		<id>http://blogs.portakalteknoloji.com/serdar/blog/2008/05/20/3/</id>
		<updated>2008-05-20T22:39:00+00:00</updated>
		<content type="html">&lt;!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 		H1 { margin-bottom: 0.21cm } 		H1.western { font-family: &quot;Arial&quot;, sans-serif; font-size: 16pt } 		H1.cjk { font-family: &quot;Arial&quot;; font-size: 16pt } 		H1.ctl { font-family: &quot;Tahoma&quot;; font-size: 16pt } 	--&gt; 	  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;Paylaşılan Kütüphane (shared library) nedir?&lt;/h1&gt; &lt;p&gt;	Paylaşılan kütüphaneler (shared libraries), programlar çalıştığında programlar tarafından yüklenen kütüphanelerdir. bu kütüphaneler, işletim sistemine bir kere kurulur, daha sonra kurulan programlar bu kurulan kütüphaneleri kullanır. Daha sonra kütüphanenin yeni sürümü kurulursa bile, programlar eski sürümü kullanmaya devam edebilir. programlar çalıştığı sırada dinamik olarak çağırılan bu kütüphaneler, çalışma hızını büyük ölçüde arttırır.&lt;/p&gt; &lt;p&gt;	bu kütüphaneler “lib” harfleriyle başlar ve uzantıları “.so” olur. Eğer kendiniz bir paylaşılan kütüphane yarattıysanız, bu kütüphaneyi yüklemek için gereken dosyaları soğru yerlere kopyaladıktan sonra ldconfig komutunu çalıştırmalısınız.&lt;/p&gt; &lt;p&gt;	ldconfig -n paylaşılan_kütüphanenin_yolu&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;Dinamik bağlama (dynamic linking) nedir?&lt;/h1&gt; &lt;p&gt;	Eğer programınız bir paylaşılan kütüphane kullanıyorsa, derlerken bunu belirtmeniz gerekir. Örneğin programınızda ssl kütüphanesini kullanmanız gerekiyorsa, libssl.so kütüphanesini kullanmalısınız. Bunu yapmak için de programınızı derlerken -lssl ifadesini eklemeniz gerekir.  &lt;/p&gt; &lt;p&gt;	gcc programismi.c -lssl  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Bunu yaptığınız zaman, ssl kütüphanesindeki kodları yazılımınıza eklemediğiniz halde kullanabilirsiniz. Bu kütüphane, program çalıştığı sırada çağırıldığı için, libssl.so kütüphanesinin bulunduğu herhangi bir makinede programınızı çalıştırabilirsiniz. &lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;LD_PRELOAD nedir?&lt;/h1&gt; &lt;p&gt;	LD_PRELOAD, kullanıcı tarafından belirlenmiş, boşluk karakteriyle ayrılmış, diğer kütüphanelerden önce yüklenen ELF paylaşılan kütüphaneler listesidir. Bu özellik, diğer paylaşılan kütüphanelerdeki fonksiyonların yerine geçen fonksiyonlar üretmek için kullanılabilir.&lt;/p&gt; &lt;p&gt;	LD_PRELOAD ile çalıştırılan bir program X fonksiyonunu çağırıyorsa ve X fonksiyonu da LD_PRELOAD listesinde varsa, bu fonksiyon çağırılır. Eğer LD_PRELOAD listesinde X fonksiyonu yoksa, X genel arama yollarında aranır(/usr/lib/ , /usr/local/lib gibi)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt; .so objesi yaratmak&lt;/h1&gt; &lt;p&gt;	Daha önce de belirttiğim gibi, .so objesi, paylaşılan kütüphanelerin uzantısıdır. paylaşılan bir kütüphanenin diğer C ve C++ ile yazılmış programlar gibi bir 'main' fonksiyonuna ihtiyacı yoktur. Çünkü bu kütüphaneler kendi başına bir program değil, programlar tarafından kullanılan kodların paketidir.&lt;/p&gt; &lt;p&gt;	LD_PRELOAD için .so dosyası yaratmak için tek ihtiyacınız yazdığınız kaynak kodu ve gcc derleyicisidir. Eğer her ikisine de sahipseniz, örnek olarak aşağıda verdiğim komutları çalıştırmanız yeterli olacaktır.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;	gcc -fPIC -rdynamic -c source_code.c&lt;/p&gt; &lt;p&gt;	gcc -shared -o libsource_code.so source_code.o -lc -ldl&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	Tek tek hangi parametrenin ne işe yaradığını anlatmayacağım. Bunun için gcc'yi incelemenizi tavsiye ederim. Diğer tüm UNIX işlerinde olduğu gibi, bunda da “man gcc” size yol gösterecektir. Ama kısaca şunları söyleyebilirim. İlk satır kaynak kodunuzu derleyip bir .o uzantılı dosya oluşturmanızı sağlar (bu örnekte source_code.o) İkinci satırda ise bu .o uzantılı dosya sayesinde .so uzantılı dosyanızı üretirsiniz. Bu kadar basit.&lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;LD_PRELOAD'a eklemek&lt;/h1&gt; &lt;p&gt;	.so uzantılı bir dosya ürettiniz. Peki bunu nasıl kullanacaksınız? Çok basit. bu dosyanın yolunu LD_PRELOAD listesine ekleyerek. Fakat burada dikkat edilmesi gereken çok önemli bir ayrıntı var. Bir fonksiyon hem LD_PRELOAD listesinde hem de başka herhangi bir yerde (örneğin /usr/lib/) varsa, LD_PRELOAD listesindeki fonksiyonun önceliği vardır. Yani örneğin siz fopen fonksiyonunu yeniden yazıp bunu da LD_PRELOAD listesine eklerseniz, artık fopen kullanılan bütün programlar bu listede belirtilen halini kullanır.  &lt;/p&gt; &lt;p&gt;	Bu uyarıyı yaptıktan sonra, bir kütüphanenin nasıl LD_PRELOAD listesine ekleneceğini yazıyorum. Burada yazdığım, listeye kalıcı olarak eklemek içindir. Bir sonraki bölümde tek kullanımlık halini yazacağım.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;	export LD_PRELOAD=/libx.so'nun/yolu/&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;LD_PRELOAD kullanımı&lt;/h1&gt; &lt;p&gt;	Öncelikle neden LD_PRELOAD kullanılır, bu sorunun cevabını verelim. En önemli avantajı, dinamik bağlanmış çalıştırılabilir  programda hiçbir değişiklik yapmadan kullanılabilmesidir. Sadece dinamik kütüphaneyi değiştirerek, asıl yazılımınızda hiçbir değişiklik yapmadan programınızı yeniden düzenleyebilirsiniz.&lt;/p&gt; &lt;p&gt;	LD_PRELOAD kullanmanın dezavantajı ise, kullanmak istediğiniz fonksiyona sahip kütüphanenin, program çalıştırıldığı sırada kurulu ve hazır olmasının gerekliliğidir.  &lt;/p&gt; &lt;p&gt;	Şimdi örnek bir LD_PRELOAD kullanımına geçelim:&lt;/p&gt; &lt;p&gt;	LD_LIBRARY_PATH=. LD_PRELOAD=libsource_code.so ./program [varsa argüman]&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Bu şekilde, programda eğer libsource_code.so'nun sahip olduğu bir fonksiyon çağırılıyorsa, bunu LD_PRELOAD ile çağıracaktır. Ama bu sadece yukardaki komutu yazdığımız zaman geçerlidir. Kalıcı bir kütüphane ekleme değildir.&lt;/p&gt; &lt;h1 class=&quot;western&quot;&gt;Örnek&lt;/h1&gt; &lt;p&gt;// target.c&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;printf( &amp;quot;user id: %d\n&amp;quot;, getuid() );&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;Yukarıdaki kodu  &lt;/p&gt; &lt;p&gt;	gcc target.c -o target&lt;/p&gt; &lt;p&gt;komutuyla derleyip&lt;/p&gt; &lt;p&gt;	./target&lt;/p&gt; &lt;p&gt;yazdığınızda, şuna benzer bir çıktı alırsınız:&lt;/p&gt; &lt;p&gt;	$./target &lt;br /&gt;	user id: 1000&lt;/p&gt; &lt;p&gt;Buradaki 1000 değeri yerine getuid() fonksiyonunun döndüğü değer gelir. Eğer her zaman 0 dönmesini isterseniz&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;// libfake.c&lt;br /&gt;&lt;br /&gt;int getuid() {&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;kodunu yazıp,  &lt;/p&gt; &lt;p&gt;	$ gcc -shared libfake.c -o libfake.so&lt;/p&gt; &lt;p&gt;komutunu çalıştırın. Artık bir .so dosyanız var. bunu LD_PRELOAD listesine eklediğinizde  &lt;/p&gt; &lt;p&gt;	$ LD_PRELOAD=./libfake.so ./target&lt;br /&gt;	user id: 0&lt;/p&gt; &lt;p&gt;alırsınız.  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;shared library --&amp;gt; &lt;a href=&quot;http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.html&quot;&gt;http://www.dwheeler.com/program-library/Program-Library-&lt;/a&gt;&lt;a href=&quot;http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.html&quot;&gt;HOWTO/x36.html&lt;/a&gt;	&lt;/p&gt; &lt;p&gt;ldconfig --&amp;gt; &lt;a href=&quot;http://linux.die.net/man/8/ldconfig&quot;&gt;http://linux.die.net/man/8/ldconfig&lt;/a&gt;&lt;/p&gt; &lt;p&gt;LD_PRELOAD man page --&amp;gt; &lt;a href=&quot;http://unixhelp.ed.ac.uk/CGI/man-cgi?ld.so+8&quot;&gt;http://unixhelp.ed.ac.uk/CGI/man-cgi?ld.so+8&lt;/a&gt;&lt;/p&gt; &lt;p&gt;gcc --&amp;gt; &lt;a href=&quot;http://gcc.gnu.org/&quot;&gt;http://gcc.gnu.org/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;</content>
		<author>
			<name>Serdar Tuğcu</name>
			<uri>http://blogs.portakalteknoloji.com/serdar/blog/</uri>
		</author>
		<source>
			<title type="html">Serdar Tuğcu</title>
			<subtitle type="html">Work Blog</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/serdar/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/serdar/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Eski sunumlar ve bildiriler</title>
		<link href="http://blogs.portakalteknoloji.com/erdem/blog/2008/04/23/5/"/>
		<id>http://blogs.portakalteknoloji.com/erdem/blog/2008/04/23/5/</id>
		<updated>2008-04-23T02:29:00+00:00</updated>
		<content type="html">&lt;p&gt;Daha önce verdiğim sunum ve bildirileri buraya koyma niyetim uzun zamandır vardı, ancak kısmet bugüneymiş.&lt;/p&gt;&lt;p&gt;Çanakkale'de &lt;a href=&quot;http://ab.org.tr/ab08/&quot; target=&quot;_blank&quot; title=&quot;Ab2008 Akademik Bilişim Konferansı&quot;&gt;Akademik Bilişim 2008&lt;/a&gt;  konferansında verdiğim &amp;quot;Xen 3.1 Üzerinde Sanal Ağ Tasarımı&amp;quot; konulu sunum (&lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/static/ab2008_xen3.ppt&quot; title=&quot;Ab2008 Sunum&quot;&gt;ppt&lt;/a&gt;) ve bildiri metni (&lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/static/ab_xen.pdf&quot; title=&quot;Ab2008 Bildiri&quot;&gt;pdf&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Bilkent Üniversitesi &lt;a href=&quot;http://www.ctp.bilkent.edu.tr/&quot; target=&quot;_blank&quot; title=&quot;CTP&quot;&gt;Bilgisayar Teknolojileri ve Programlama&lt;/a&gt;  (CTP) bölümünde &lt;a href=&quot;http://www.ctp.bilkent.edu.tr/~ctp204/&quot; target=&quot;_blank&quot; title=&quot;CTP204 Networking Principles and Applications&quot;&gt;&amp;quot;Networking Principles and Applications&amp;quot; (204)&lt;/a&gt;  dersi öğrencilerine verdiğim &amp;quot;IP Routing&amp;quot; konulu sunum. (&lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/static/routing.odp&quot; title=&quot;IP Routing&quot;&gt;odp&lt;/a&gt; , &lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/static/routing.ppt&quot; title=&quot;IP Routing&quot;&gt;ppt&lt;/a&gt; , &lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/static/routing.pdf&quot; title=&quot;IP Routing&quot;&gt;pdf&lt;/a&gt;)&lt;/p&gt;</content>
		<author>
			<name>Erdem Bayer</name>
			<uri>http://blogs.portakalteknoloji.com/erdem/blog/</uri>
		</author>
		<source>
			<title type="html">Erdem Bayer</title>
			<subtitle type="html">WORK BLOG</subtitle>
			<link rel="self" href="http://blogs.portakalteknoloji.com/erdem/blog/feed/rss/"/>
			<id>http://blogs.portakalteknoloji.com/erdem/blog/feed/rss/</id>
			<updated>2008-07-05T01:00:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="tr">
		<title type="html">Xen üzerinde sanal Pardus'ta otomatik gui başlatmak</title>
		<link href="http://blogs.portakalteknoloji.com/erdem/blog/2008/04/23/4/"/>
		<id>http://blogs.portakalteknoloji.com/erdem/blog/2008/04/23/4/</id>
		<updated>2008-04-23T00:46:00+00:00</updated>
		<content type="html">&lt;p&gt;Daha önceki bir yazımda (kesin konuşmak gerekirse &lt;a href=&quot;http://blogs.portakalteknoloji.com/erdem/blog/2008/02/15/1/&quot; target=&quot;_blank&quot; title=&quot;Xen üzerinde sanal Pardus kurulumu&quot;&gt;şu&lt;/a&gt;  yazımda) Xen üzerinde sanal Pardus kurmuş ve normal kullanıcı olarak oturum açıp, ağdaki herhangi diğer bilgisayar veya dom0'dan VNC ile bağlanıp sanal Pardus'umuzu kullanmıştık.&lt;/p&gt;&lt;p&gt;Kısaca özetlemek gerekirse:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;domU'da normal kullanıcı olarak VNC sunucusu çalıştırılır.&lt;/li&gt;&lt;li&gt;Normal kullanıcının DISPLAY çevre değişkeni çalıştırılan VNC sunucu olacak şekilde ayarlanır.&lt;/li&gt;&lt;li&gt;domU'da KDE başlatılır.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Ancak bir süre sonra fark edeceğiniz gibi, her grafik arayüz kullanmak istediğimizde bütün bu işlemleri baştan yapmak epey vakit kaybettiriyor. Ben de yukarıda saydığım adımları bizim adımıza yapan bir COMAR servis betiği ile sorunu çözmeye çalıştım. Betik son derece basit ve kirli, ancak özellikle Linux sistemleri yönetmenin kolaylığı ve elimizin altındaki araçlar konusunda fikir vermesi açısından yararlı olacağını düşünüyorum.&lt;/p&gt;&lt;p&gt;Önce COMAR tarafından çağrılacak başlatma betiği:&lt;/p&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;export USER=&amp;quot;otc&amp;quot;&lt;br /&gt;export HOME=&amp;quot;/home/otc&amp;quot;&lt;br /&gt;/usr/bin/vncpasswd &amp;lt; /home/otc/.vnc/vnc-passwd&lt;br /&gt;/usr/bin/vncserver :1 &amp;gt; /home/otc/vnc.log 2&amp;gt;&amp;amp;1&lt;br /&gt;export DISPLAY=&amp;quot;pardus-client:1&amp;quot;&lt;br /&gt;/usr/kde/3.5/bin/startkde &amp;gt; /home/otc/kde.log 2&amp;gt;&amp;amp;1&lt;/pre&gt;&lt;p&gt;vncserver programını başlatabilmek için bir şifre girme zorunluluğu bizi vncpasswd programı ile şifreyi önceden belirlemek zorunda bırakıyor. Bu şifre kullanıcımızın ev dizinindeki bir dosyadan okunacak şekilde ayarlanıyor. DISPLAY çevre değişkeni ayarlanıp KDE başlatılıyor. USER ve HOME çevre değişkenlerinin ayarlanması vncserver programını başlatabilmek için gerekli, eğer bunları ayarlamaz iseniz vnc sunucunuz başlatılamıyor.&lt;/p&gt;&lt;p&gt;Sırada vnc sunucumuzun otomatik başlamasını sağlayacak COMAR servis betiği var:&lt;/p&gt;&lt;pre&gt;from comar.service import *&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;serviceType = &amp;quot;script&amp;quot;&lt;br /&gt;serviceDesc = _({&lt;br /&gt;    &amp;quot;en&amp;quot;: &amp;quot;Vnc Server&amp;quot;,&lt;br /&gt;    &amp;quot;tr&amp;quot;: &amp;quot;Vnc Sunucu&amp;quot;,&lt;br /&gt;})&lt;br /&gt;serviceDefault = &amp;quot;on&amp;quot;&lt;br /&gt;&lt;br /&gt;@synchronized&lt;br /&gt;def start(boot=False):&lt;br /&gt;    if status():&lt;br /&gt;        return&lt;br /&gt;&lt;br /&gt;    run(&amp;quot;/sbin/start-stop-daemon --start --quiet --chuid otc -b --exec /etc/init.d/startvnc&amp;quot;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@synchronized&lt;br /&gt;def stop():&lt;br /&gt;    run(&amp;quot;/sbin/start-stop-daemon --stop --quiet --name startkde&amp;quot;)&lt;br /&gt;    run(&amp;quot;/sbin/start-stop-daemon --stop --quiet --name Xvnc&amp;quot;)&lt;br /&gt;&lt;br /&gt;def status():&lt;br /&gt;    return isServiceRunning(&amp;quot;/home/otc/.vnc/pardus-client:1.pid&amp;quot;)&lt;/pre&gt;&lt;p&gt;COMAR servis betikleri Python ile yazılan ve servis ile ilgili işlemlerin tanımlandığı betiklerdir. Bu işlemler tanımlanırken COMAR Service API'si bize çok çeşitli metodlar sunar. Siz service komutunu veya TASMA'dan Servis Yöneticisi'ni çalıştırdığınızda COMAR servis betiğinizi çalıştırarak size istediğiniz bilgiyi sunar.&lt;/p&gt;&lt;p&gt;COMAR API'leri sistemde /usr/lib/pardus/comar altında bulunur. Bu dizinin içindeki service.py ve utility.py betikleri içerisinde servis betiğinde kullanabileceğiniz metod ve sınıfların kaynak kodları bulunur.&lt;/p&gt;&lt;p&gt;serviceDefault değişkeni ile servisin öntanımlı durumu (her açılışta başlatılıp başlatılmayacağı) belirtilir.&lt;/p&gt;&lt;p&gt;serviceDesc ile Servis Yöneticisi veya service komutunun çıktısında servisin açıklama hanesinde görünecek değer belirtilir. &lt;br /&gt; &lt;/p&gt;&lt;p&gt;Bir COMAR servis betiğinde servisin çalıştırılması, durdurulması ve o anki durumunun öğrenilmesi için gerekli 3 metod tanımlanması yeterlidir.&lt;/p&gt;&lt;p&gt;Servisleri başlatmak için run (/usr/lib/pardus/comar/utility.py içinde tanımlı) veya startService (/usr/lib/pardus/comar/service.py içinde tanımlı) çağrılarını kullanabilirsiniz. Run metodu yeni bir kabuk başlatmadan verilen komutu çalıştırır.&lt;/p&gt;&lt;p&gt;vncserver programı kendi süreç numarasını kullanıcının ev dizinindeki bir dosyaya yazar. COMAR isServiceRunning metoduna bu dosyanın yolunu vererek, dosyanın içinde yazan süreç numarasını okuyup o numaralı sürecin aktif olup olmadığını kontrol etmesini istiyoruz.&lt;/p&gt;&lt;p&gt;Servis başlatılacağı ve durdurulacağı zaman /sbin/start-stop-daemon programını çalıştırılmasını istiyoruz. start-stop-daemon orjinalde debian için yazılmış, servis başlatmak ve durdurmak için aşağı yukarı her linux dağıtımında bulunan yararlı bir program. Bu program ile ilgili daha ayrıntılı bilgi almak isteyenler &lt;a href=&quot;http://www.linuxmanpages.com/man8/start-stop-daemon.8.php&quot; target=&quot;_blank&quot; title=&quot;start-stop-daemon&quot;&gt;programın man sayfasına&lt;/a&gt;  bakabilirler. &lt;/p&gt;&lt;p&gt;start-stop-daemon ile servis başlatılırken /etc/init.d/startvnc betiğini otc kullanıcısı olarak start parametresi ile çalıştırmasını ve hata çıktıları haricinde hiçbir çıktıyı ekrana yazdırmamasını istiyoruz. startvnc betiğinde de vncserver ve startkde programlarının standart ve hata çıktılarını kullanıcının ev dizinindeki bir dosyaya yönlendiriyoruz ki COMAR ile servisi başlattığımızda bu çıktıları dosyadan takip edebilelim.&lt;/p&gt;&lt;p&gt;Servis durdurulacağı zaman Xvnc ve startkde adındaki tüm programların SIGTERM sinyali ile durdurulmasını istiyoruz. Belirtilen programların hangi sinyal ile durdurulacakları start-stop-daemon'un --signal parametresi ile belirtilebilir.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hazırladımız COMAR servis betiğini kullanması için COMAR'a kaydettirmemiz gerekli. COMAR ile komut satırından haberleşmek için hav komutunu kullanıyoruz. &lt;/p&gt;&lt;pre&gt;&lt;strong&gt;# hav register System.Service vnc service.py&lt;/strong&gt;&lt;/pre&gt;&lt;p&gt;Yukarıdaki komut ile service.py betiğini vnc adı ile COMAR Service sınıfı altına kaydettik. Artık Servis Yöneticisi veya service komutu ile vnc adını verdiğimiz servisimizi kullanmaya başlayabiliriz.&lt;/p&gt;&lt;pre&gt;&lt;strong&gt;# service vnc start&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;# service vnc stop&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;# service vnc status&lt;/strong&gt;&lt;/pre&gt;&lt;p&gt;Servis betiğinizde bir hata olduğunu fark eder, veya artık bu servisi kullanmak istemediğinize karar verirseniz COMAR'a bu servisi silmesini söylemeniz gerekir.&l