Google Analytics İzleme

25 Şubat 2011

.Net ile yazılan dll'i Asp veya Php için kullanma, Com Bileşeni yöntemiyle


.NET' de yazdığınız bir uygulama var ve siz bunu php veya asp de kullanmak istiyorsunuz. Yazdığınız .net projesini dll yapmalı ve o dll'i server'a kaydetmemiz gerekir. DLL .NET assembly olduğu için regasm.exe yardımızla bunu COM nesnesi haline getirmemiz gerekli.

Projeyi dll şeklinde yaptık diyelim. oluşan dll dofoo.dll olsun;

REGİSTER;
1. Proje>Properties ->Application Target Framework={Regsitry edilcek server da framework verisoyunu ile uygulamanın geliştirildiği ortamda versiyonlar aynı olmalı} 
->Build 
Generete serialization assembly=OFF 
->singing 
"sing the Assembly" check kutusunu işaretlenir 
choose a strong name key file: e tıklanır, isim girilir. 
Change Password a şifre gir 1234567 sonrakine de 1234567
2.Proje>Properties>AssemblyInfo.cs içinde [assembly: ComVisible(true)] 

3. ..\bin\Release klasöründe ne varsa sililinir
4. Rebuild->

5. ..\bin\Release klasöründe oluşan dosyaları c:\srvc dizinine kopyala
6. CMD>regasm /tlb /codebase c:\srvc\myfoo.dll 
Mesaj: Types registred successfully Assembly exported to 'c:\AxaIntegration\myfoo.tbl', and the type library was registered successfully
7. "C:\WINDOWS\assembly" klasörüne c:\srvc\myfoo.dll dosyasını sürükle-bırak. otomatik buraya gelcektir. myfoo 1.0.0.0 nesnesi gözükmesi gerek.
8. BİTTİ


asp yapıyorsak ISS'i restart etmek gerekebilir. Yaptığımız projenin artık fonksiyon ve metodlarını asp de kullanabiliriz.

Set MyFooCreator = CreateObject("myfoo.mycls")
MyFooCreator.Title = "selam"
MyFooCreator.Do

UNREGİSTER;
1. regasm /unregister c:\srvc\myfoo.dll 
2. C:\WINDOWS\assembly klasöründen eklediğimiz dll'i siliyoruz.

Assembly Registration Tool (Regasm.exe)

Kaynak:



16 Şubat 2011

Microsoft SQL Server 2005 ve 2008 Express için sql profiler

The profiler for Microsoft SQL Server 2005/2008 Express


asp.net'de <% %> etiketlerinin anlamları

Code in <% %> tags is for running arbitrary code, not for setting property values. 
Code in <%= %> tags is for rendering to the output stream. 
Code in <%# %> is for databinding.  
Code in <%$ %>is for expression bindings, but they execute too early in the page's life cycle.


Güzel makaleler:
Expressions vs. Statements, part 2: ASP.NET Code Block Types: http://michielvoo.net/blog/expressions-vs-statements-part-2-asp-net-code-block-types/
Using Expression Builders in ASP.NET: http://www.4guysfromrolla.com/articles/022509-1.aspx

XA : Needed More Often Than You Think


Code Coverage kavramı

Java'da uygulamanması anlatılmış : http://mustafatan.blogspot.com/2007/08/emma-ile-code-coverage.html
.Net ile uygulanması anlatılmış: http://www.ericsink.com/articles/Code_Coverage.html


15 Şubat 2011

Quartz Scheduler hakkında güzel bit tanıtım makalesi

Mustafa Tan'a teşekkürler.

Özellikle kurumsal uygulamalardaki en kritik konulardan biri de belli bir saatte çalışması planlanmış batch işlemleridir. Örneğin Bankacalık Uygulamalarındaki Otomatik Ödeme Talimatları, Havale ve EFT talimatları, Günsonu işlemleri, vs. "Job Scheduler" diye adlandırılan araçlar ile gerçekleştirilmektedir.

Bu işlemler arkaplanda, kullanıcı ile bir etkileşimi olmadan çalıştığı için aynı anda yüzlerce thread'in çalışmasına neden olabilir. Bu yüzden bu araçların işlerini, sistem kaynaklarını en verimli bir şekilde kullanarak, hata yapmadan, yapsa bile loglayarak veya daha sonra düzelterek (recovery) çalışması gerekmektedir. Özellikle bankacılık gibi kritik uygulamaların günsonu işlemlerinde milyon dolar'ların işlendiğini düşünecek olursanız bu araçların önemi daha iyi anlaşılacaktır.

İşte bu blogum'da daha evvel geliştirdiğimiz bir çok uygulamamızda kullandığımız Quartz Scheduler'dan bahsedeceğim. Hatta bahsetmekle kalmayacak, Quartzla ilgili yazdığım birörneği de paylaşacağım.

Quartz, dünyaca ünlü bir çok lisanslı uygulamanın da kullandığı açık kaynak uygulama. Quartz halen, bünyesinde WebWork (Strus ile birleşip Strus2 adını aldı), SiteMeshOSCache gibi dünyaca ünlü açık kaynak projeleri barındıran OpenSymphony Açık Kaynak topluluğu altında geliştirilmekte. Açık Kaynak uygulamaları kullanmakta hala tereddüt edenleri biraz rahatlattıktan sonra Quartz'ın özelliklerine geçelim.

Quartz öncelikle her türlü Java Uygulamasının bir parçası şeklinde çalışabiliyor:
* Quartz can run embedded within another free standing application
* Quartz can be instantiated within an application server (or servlet container), and participate in XA transactions
* Quartz can run as a stand-alone program (within its own Java Virtual Machine), to be used via RMI
* Quartz can be instantiated as a cluster of stand-alone programs (with load-balance and fail-over capabilities)
Quartz'ın XA Transaction desteği aslında çok önemli bir özellik, maalesef bir çok yazılım geliştirici XA'in (Distributed Transactions) öneminin farkında olmadığı için veritabanları üzerinde uyumsuz (inconsistant) veriler bulunmakta.

Quartz bir özelliği de, dünyaca ünlü Strus ve Spring gibi framework'lere kolayca entegre edilebilir olması:

Quartz'ın Spring ile Entegrasyonu
Quartz'ın Strus ile Entegrasyonu

Quartz'ın en önemli özelliklerinden biri de Trigger diye adlandırlan çok farklı tetikleme mekanizmasına sahip olması:
* at a certain time of day (to the millisecond)
* on certain days of the week
* on certain days of the month
* on certain days of the year
* not on certain days listed within a registered Calendar (such as business holidays)
* repeated a specific number of times
* repeated until a specific time/date
* repeated indefinitely
* repeated with a delay interval
Quartz'ın bir başka özelliği de çalıştırdığı işlerin transactional bir şekilde gerçekleştirebilmesi. Ayrıca Clustering ve Job Persistence desteği sayesinde bir veritabanı üzerinde işlerini saklayabiliyor ve cluster node'ları arasında dağıtabiliyor:
* The design of Quartz includes a JobStore interface that can be implemented to provide various mechanisms for the storage of jobs.
* With the use of the included JDBCJobStore, all Jobs and Triggers configured as "non-volatile" are stored in a relational database via JDBC.
* With the use of the included RAMJobStore, all Jobs and Triggers are stored in RAM and therefore do not persist between program executions - but this has the advantage of not requiring an external database.
* Quartz can participate in JTA transactions, via the use of JobStoreCMT (a subclas of JDBCJobStore).
* Quartz can manage JTA transactions (begin and commit them) around the execution of a Job, so that the work the Job does happens within a JTA transaction.
* Fail-over.
* Load balancing.
Quartz'ın diğer özelliklerini ve güzelliklerini anlatmam saatler sürer. Bunun yerine kendi sitesindeki tutorial'lara bir gözatmanızda fayda var. Ayrıca aşağıda linkini paylaştığım Quartz'ın Cluster modda kullanımı ile ilgili bir örneğe göz atabilirsiniz.

Quartz JDBCJobStore Tutorial

Bu blogu okuyanlar arasında "Ne gerek var Java'da Scheduler kullanmaya" diye düşünenler olabilir. Bu soruya cevap vermeden evvel alternatifleri düşünelim:

1) Batch işlemlerinin veritabanı job'ları olarak çalıştırılması
Bu yöntem zaten şu an en yaygın kullanılan yöntemlerden birisi. Veritabanı diğer kullanıcı işlemleri nedeniyle yük altında değilken veya batch olarak işlenen çok fazla veri yokken bu yöntem çok sağlıklı çalışır. Peki yükümüz her geçen gün artarsa ne yapacağız, unutmayın veritabanı üzerinde çalışan fonksiyonlar bir yandan hesaplama yapmak için bir yandan da kayıtları güncellemek için sistem kaynaklarını kullanırlar. Kaynaklarınız yetmediği zaman aynı orta katmanda olduğu gibi veritabanlarınızı çoğaltamazsınız.

Ama Quartz kullanıyorsanız veritabanını sadece insert, update ve delete işlemleri için kullanılıyor, tüm business fonksiyonları ise Quartz'ın çalıştığı başka sunucular üzerinde işleniyor olacak. Kaynak ihtiyacınız arttıkça yeni sunucular ekleyebileceksiniz. (Load-balancing)

2) Batch işlemlerinin işletim sistemi (unix/windows) job'ları olarak çalıştırılması
Bu yöntem aslında ilk bakışta Quartz'ın load-balancing özelliğini karşılıyor gibi gözüküyor. Shell script yazılarak Unix'in cron'una eklenen batch işlemlerin en zayıf yani recovery'dir. Kısaca özetlemek gerekirse Quartz'ın cluster node'ları arasında "Quartz Kardeşliği" diye bir kavram vardır. Hiç bir kardeş diğerine hükmetmez ama arkasını kollar. Kardeşlerden biri çalışırken hata alırsa diğerleri onun işlerini halledebilirler. Eğer aralarına başka bir kardeş daha katılırsa ellerindeki işleri diğer kardeşle paylaşırlar. Shell scriptler ile bu işleri yapmak çok zordur. (Fail-over)
--
Ciddi işlerde işletim sistemine ait scheduling özelliğini kullanmak çok abes bir yaklaşım olacaktır. En azından windows platformu için kati suretle önerilmez :)

Veritabanında job yapmak işletim sistemi seviyesinde yapmaktan biraz daha güvenilir görünüyor ama perfomans konusunda bu defa sıkıntı olacaktır.

Akılama takılan bir soru ise misal SQL Server ile job yatığımızda belirli durumlarda (özellikle de olağan dışı bir durum olduğunda) loglamanın haricinde bizleri bilgilendirme yeteneğine sahip (net send mesajları,mail, alerter vb) acaba Quartzda da bu tip bir imkanımız olur mu? ÖZellikle de 7/24 sistemini aykata tutmak isteyen kişiler için bunun önemli bir özellik olduğunu düşünüyorum .
--
Quartz'ın TriggerListeners, JobListeners ve SchedulerListeners olmak üzere 3 adet Listener interface'i bulunmakta. Bu interface'ler kullanılarak her türlü bilgilendirme mesajı mail, sms, netsend, vs. yoluyla gönderilebilir.

Ayrıca Quartz'ın bir de .NET versiyonu geliştirilmekte:

http://quartznet.sourceforge.net/
--

Kaynak:


11 Şubat 2011

Windows vista'da visual studio 2010 ile proje çalıştırılmasının internet explorer'da görüntülenmemesi

Bunun nedeni windows vista'daki host dosyasında ::1 localhost tanımının olmasıdır. Bu satırı kaldırırsanız localhost ile çağrımlarda sayfa gösterimleri çalışmaya başlamaktadır.


Kaynak:

This is because the system blocks the name localhost with a port number. If you replace the word localhost and type 127.0.0.1 it should work.
To fix this issue, open the hosts file "C:\Windows\System32\drivers\etc\hosts" and comment the line "::1 localhost" and then retry.
Please note that this line is required by IP v6 and should not be removed if you are using it.

asp:BoundColumn kontrolünün yerel kaynak dokümanında görünmemesi

DataGrid kontrollerindeki <asp:BoundColumn> kontrolünü yerelleştirmek için Generate Local Resource özelliğini kullandığınızda kolon bilgileri eklenmemektedir, bunun yerine elle bu kontrole meta:resourcekey="gridColumn0" eklemesi yapmalısınız.

<asp:BoundColumn DataField="ce_number" SortExpression="ce_number"meta:resourcekey="gridColumn0"></asp:BoundColumn>

Örneğin "gridColumn0.HeaderText", "CE Number" şeklinde ilgili .resx dosyasına ekleyebilirsiniz.


GridView kontrolünde boundcolumn'un meta:resourcekey bilgileri otomatik olarak üretilmektedir, burada elle yazmanıza gerek yok.

Kaynak:



"Hizmet Güvencesi" araştırması sonuçlandı!

"Hizmet Güvencesi" araştırması sonuçlandı!

CA Technologies'in Türkiye de dahil Avrupa çapında yaptırdığı araştırmaya 30 ülkeden 520 üst düzey yönetici ve BT profesyonelinden oluşan seçkin bir topluluk katıldı. "Hizmet Güvencesi: İş Hizmetlerinde Kesinlik Arayışı" adlı araştırma, kullanıcı deneyimlerine bakarak kurumların sunduğu iş hizmetlerinin performansını ele alıyor. 

CA Technologies Türkiye Ülke Müdürü Vekili İlkem Özar, araştırmayla ilgili açıklamasına şu şekilde başladı:

"Günümüzde kurumlar, giderek daha sofistike olan iş taleplerini karşılarken hem işin kısa zamanda başarısını, hem de en iyi performansı sunmayı garanti etmek gibi iki güç görevi birlikte hayata geçirmek zorunda. Yeni iş hizmetlerini hayata geçiren birçok kurum ise bu hizmetlerin performansını takip etmek için yoğun çaba harcıyor ve son kullanıcıya etkisinden emin olamıyor. Kurumların hizmet performansları hakkında yaşadığı belirsizlik, bu hizmetlerden etkilenen müşteri ilişkilerinin geliştirilmesi için de ciddi bir bariyer oluşturuyor. Hizmet güvencesi çözümü, işte bu noktada sistemlerin ve ağ altyapısı üzerinde çalışan uygulamaların, veri hareketlerinin ve gerçek kullanıcıların deneyimi arasında canlı bir köprü oluşturuyor ve bu süreci yönetilir kılıyor."

İlkem Özar, araştırmanın çok önemli bazı noktaları ortaya çıkardığını belirterek şu bilgileri verdi:

"CA olarak yaptırdığımız bu araştırmada katılımcılara sorduğumuz soruların sonucunda, Türk yöneticilerinin yüzde 63'ü, bundan sonra iş hizmetlerinin izlenmesi ve kullanıcı memnuniyetinin çok daha önemli hale geleceğini söyledi. Müşteri memnuniyetini ön plana çıkaran firmaların yaklaşımlarının bu yönde olduğunu gözlemliyoruz.

Türk katılımcıların yüzde 37'si ise "Problem ortaya çıktığı zaman ilgileniriz" yaklaşımında bulundu. Ancak bu yaklaşım ve son kullanıcı deneyimine ilişkin yetersiz bakış açısı, aynı zamanda, kurumun öngörülebilir ve istenen müşteri deneyimlerini sağlama, verimli ve etkili servisler oluşturma, yeni uygulamalar sunma, kısacası proaktif bir BT yönetimine sahip olma gibi birçok yetkinliğini de başında engellemiş oluyor.
 "

Müşteriyi uçtan uca görebilmek

Araştırmanın çok önemli bir gerçeğe işaret ettiğini söyleyen İlkem Özar, artan müşteri beklentileri, gelişen hizmet çeşitliliği ve bulut gibi teknolojideki gelişmeler ışığında, iş hizmetlerinde artık kesinliğe ve belirginliğe daha da çok ihtiyaç duyulduğuna dikkat çekerek şunları söyledi:

"BT servisleri, bugün birçok profesyonel yöneticinin düşündüğünden hızlı bir değişim gösteriyor. Bu nedenle günümüzde, dinamik BT ortamlarının, tek tek her müşteri işleminin performansının bir uçtan diğer uca kontrol altında tutulduğu platformlar olması arzu ediliyor. Son araştırmanın ana bulguları, birçok kurumun bu sorunla sık sık karşılaştığını ancak durumun aciliyeti ve önceliği konusunda etkin davranamadığını ortaya koyuyor. Kurumların hizmet güvencesi stratejisini bütün boyutlarıyla algılamaları ve hayata geçirmeleri, bu nedenle son derece kritik bir karar olmaya ve güncelliğini korumaya devam ediyor. Bu karar, aynı zamanda, rekabetçi bir ortamda yarışan tüm kurumların, fiziksel, sanal ve bulut platformlarındaki iş servisi sunumlarıyla bağlantılı yetkinlik düzeylerini de yansıtıyor olacak".

Gerçek maliyetleri oluşturmak 

Müşteri deneyimlerinin iş sonuçlarına etkisi itibarıyla kayda değer bulgular taşıyan araştırma, aynı zamanda iş ve BT liderlerinin çevrimiçi (online) kullanıcıların aldığı servis performanslarının kalitesine de çok fazlagüvenmediklerini ortaya koydu. Türk katılımcıların yüzde 20'si kendi çevrimiçi (online) hizmetlerini, müşteri ihtiyaçlarını tam anlamıyla karşılama bağlamında çok güvenilir bulurken, yüzde 80'e varan büyük bir çoğunluk sundukları hizmetler için "fazla güvenli değil" ya da "idare eder" yanıtlarını verdi. 

Buna ek olarak araştırmaya katkıda bulunan iş liderleri ve BT profesyonellerinin yüzde 47'si, kullanıcının zayıf performans gösteren web uygulamaları nedeniyle karşı karşıya kaldığı sorunların sebep olduğu maliyeti kurumların tam olarak takip edemediğini ifade etti. 

Karar vermek için bilgi şart

Kurumlar, sadece ortaya çıkan servis problemleriyle uğraşmak zorunda kalmaktan değil; aynı zamanda maliyetlerin artması ve verimliliğin düşmesinden de büyük bir kaygı duyuyor. Bu çerçevede yöneticilere, son 18 ayda, gerek çevrimiçi (online) hizmetleri, gerekse dahili web uygulamaları kullanıcılarından kaynaklanan problemlerle nasıl mücadele ettikleri de soruldu. 

Araştırmayı yanıtlayanların yüzde 40'ı "ortaya çıkan yeni konuları ve problemleri gidermek için maliyet artışlarını göze aldıklarını" ifade ederken, katılımcıların yüzde 37'si, uygulamanın devre dışı kalması veya zayıf performans göstermesi nedeniyle çalışan verimliliğinde kayıplar yaşadıklarını söyledi. Soruyu yanıtlayanların yüzde 43'ü ise karar vermek için gerekli bilginin yetersiz veya eksik olduğunu bildirdi. 

İş dünyasında bir başka endişe kaynağı, çoğu organizasyonun hizmetlerindeki kalite kaybının işe yansıma derecesini tam olarak ölçememekten kaynaklanıyor. Kurumların yüzde 85'i, hizmetlerden kaynaklı birçok problemin yarattığı etkiyi tam olarak anlayabilmek için yeterli ve eksiksiz bilgiye sahip görünmüyor. 

Aynı şekilde yüzde 83'lük bir kitle bu durumun markanın ya da şirketin ününe verdiği hasarı da ölçümleyemediklerini ifade ediyor. Araştırma bulgularına göre sadece yüzde 27'lik bir yönetici kesimi, son kullanıcı deneyimlerini dikkate alan bir servis seviyesi anlaşmasına sahip olduğunu söyledi.

Basın bülteninden derlenmiştir.

Alıntı:


08 Şubat 2011

Sanal Makinelerle Microsoft Dynamics CRM 4.0 Kurulumu Deneyimi

Sanal makineleri Oracle VM VirtualBox uygulaması ile oluşturuyorum.
Birinci sanal makinemi oluşturdum ve özellikleri:
 - MS Windows Server 2003 Standart Edition SP2
 - Yeni ActiveDirectory ve DNS kurulumu ile ishakdom1.com adında alan oluşturdum.
İkinci sanal makinemi kurdum ve özellikleri:
 - MS Windows Server 2003 Standart Edition SP2
 - Bu sanal makineyi ishakdom1.com domain'ine ekledim

Devamını tamamladıkça ekleyeceğim...


Kaynaklar:
http://cenkmete.com/windows-servers/active-directory-kurulumu-ve-kontrol-islemleri/
http://www.hwturk.com/index.php/virtual-boxta-yeni-host-ekleme/
http://www.hwturk.com/index.php/virtualbox-network-kart-ayari/

04 Şubat 2011

SQL Server CE - Compact Edition 3.5 sürümünü Asp.Net uygulamasında kullanma

Sql Server CE 3.5 sürümü Asp.net uygulamasında kullanmak isterseniz
{"SQL Server Compact is not intended for ASP.NET development."}
şeklinde hata vermektedir.
Bu sorunu aşmak için
Global.asax dosyasında Application_Start metoduna şu çağrımı eklemeniz gerekmektedir:
AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true)

Asp.net uygulamasında .sdf uzantılı Sql Server CE Veritabanına ulaşmak için connection string'ine ya tam yolu yazmalısınız ya da DataDirectory tanımı kullanmalısınız. Relative yani bağıl path tanımı hata vermektedir.
Asp.net uygulamasında FirstSample.sdf veritabanı dosyasının App_Data olduğunu düşünürsek şu şekilde yazmalısınız:
"Data Source=|DataDirectory|\FirstSample.sdf;"

NHibernate configurasyon dosyasındaki tanım ise şöyle olmalıdır:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
        <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
        <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
        <property name="connection.connection_string">Data Source=|DataDirectory|\FirstSample.sdf</property>

        <property name="show_sql">true</property>
    </session-factory>    
</hibernate-configuration>

System.Data.SqlServerCe.dll dosyasınında bin klasöründe olmalıdır.

27 Ocak 2011

.NET Framework and Visual Studio Klavye Kısayolları, Namespace ve Sınıf Tanımları Posterleri

 

Visual Studio 2010 Keybinding Cards - A high quality, print-ready PDF containing the default keybindings in Visual Studio 2010 for Visual Basic, Visual C#, Visual C++ and Visual F#.

.NET Framework 4.0 Namespaces and Types Poster – A high quality, print-ready PDF containing .NET Framework 4.0 important Namespaces and Types.
 
.NET Framework 3.5 Common Namespaces and Types Poster - The .NET Framework 3.5 Common Namespaces and Types Poster is downloadable as XPS or PDF format.

.NET Framework 3.0 Namespaces and Types Poster - A high quality, print-ready PDF containing .NET Framework 3.0 important Namespaces and Types

Visual C# 2008 Keybinding Reference Poster - A high quality, print-ready PDF containing the useful keybindings for developers that choose the C# developer profile in Visual Studio 2008 or use Visual C# Express

Visual Basic 2008 Keybinding Reference Poster - A high quality, print-ready PDF containing the useful keybindings for developers that choose the Visual Basic developer profile in Visual Studio 2008 or use Visual Basic Express.

Visual C++ 2008 Keybinding Reference Poster - A high quality, print-ready PDF containing the useful keybindings for developers that choose the Visual C++ developer profile in Visual Studio 2008 or use Visual C++ Express

Visual C# 2005 Keyboard Shortcut Reference Poster - This poster contains the default keybindings for Visual C# 2005, and is available as a PDF download in either color or grayscale for you to print.

Visual Basic 2005 Keyboard Shortcut Reference Poster - This poster contains the default key bindings for Visual Basic 2005, and is available as a PDF download in either color or grayscale for you to print

Visual C++ 2005 Keyboard Shortcut Reference Poster - This poster contains the default keybindings for Visual C++ 2005, and is available as a PDF download in either color or grayscale for you to print.

Kaynak:
 
 

AppFabric Cache (ya da kod adıyla Velocity)

Fatih Boy'un konu hakkında çok güzel makaleleri bulunmakta, kısaca önemli gördüğüm kısımlardan bir alıntı:
 
AppFabric Cache (ya da kod adıyla Velocity) ölçeklenebilir, erişilebilir ve yüksek performanslı uygulamalar geliştirmek için sunulan harici bir dağıtık uygulama önbellek platformudur. Temelde WCF uçnoktası ile erişilebilen bir windows hizmeti olan AppFabric Cache, sizin yerinize verilerinizin nerede ve ne şekilde tutulacağını yönetmekle kalmayıp bu işlemi senkronize şekilde birden fazla bilgisayar üzerinde rahatlıkla yapabilmekte, üstelik kodunuzda bir değişikliğe ihtiyaç duymadan. Uygulamalarınızda kullandığınız her türlü veriyi (CLR nesneleri, XML, binary v.b.) harici ve dağıtık bir yapıda önbellekte tutabilmenize imkan veren AppFabric Caching sayesinde uygulamanızı ihtiyaçlarınız doğrultusunda yatayda dilediğiniz kadar genişletebilme gücüne sahip olabileceksiniz. Bu özelliğin size getireceği bir diğer önemli güç ise uygulamanızın yüksek erişilebilirliğe sahip ve hatalara karşı töleranslı olmasıdır. AppFabric Cache’in bir başka önemli özelliği asp.net oturum sağlayacı (session provider) desteği sunması. Bu özellikle birlikte mevcut asp.net uygulama kodunuzda değişikliğe ihtiyaç duymaksızın yapılandırma dosyasında oturum sağlayıcı olarak AppFabric Cache’i verebilir ve size sağladığı tüm avantajları anında kullanmaya başlayabilirsiniz.
...
...
...
AppFabric Cache’in sunduğu avantajlar özet olarak şu şekilde sıralanabilir;
  • Aynı ve/veya farklı uygulamalarınız arasında veri paylaşımı yapabilirsiniz
  • Uygulamalarınız verileri önbelleğe alabildikleri için daha performanslı çalışacaktır.
  • Performans ihtiyaçlarınız doğrultusunda sisteminizi istediğiniz şekilde yatayda genişletebilirsiniz.
  • Sisteminiz 7/24 hizmet verebilir hale gelecektir. Herhangi bir sebeple sunucularınızda birisi hizmet veremeyecek durumda dahi olsa bir bilgi kaybı olmayacak, önbellekteki veriler küme içerisideki diğer sunucularca size iletilebilecektir.
  • PowerShell desteği sayesinde merkezi bir noktadan yönetilebilir.
  • Önbellekler Perfmon aracı ile izlenebilir (Beta1 sürümünden itibaren)
  • Loglama ile durum takibi yapılabilir.
  • Tüm bu getiriler oldukça düşük maliyetlerle birlikte gelmekte.
 
Kaynak:
 
 
 
 
 
 
 
 
 

26 Ocak 2011

command prompt ile iis 7.5 express çalıştırma esnasındaki hata

Command prompt'a şu şekilde yazdığımda:
C:\Program Files\IIS Express>iisexpress /path:C:\sample-projects-for-ishak\WebAp
plication2\WebApplication2\
 
Aşağıdaki gibi hata vermekteydi:
 
Temp configuration file settings error.
The system cannot find the file specified.
For more information about the error, run iisexpress.exe with the tracing switch
 enabled (/trace:error).
 
Bu sorunu çözmek için command prompt ile iisexpress komutu vererek bir kez çalıştırmak gerekiyormuş, ve sonra önceki komutu verirsek düzgün çalışmaktadır. Uygulamamız iis express üzerinde localhost:8080 üzerinde çalışmaya başlamaktadır.
 
Kaynaklar:
 
Alıntı:
Yes, launching iisexpress.exe one time should fix the problem. This is a bug that we will fix at the earliest opportunity. Using the /path option uses a temporary configuration file under the temp directory, which is setup to include the specified app. Without /path, iisexpress.exe uses the default applicationhost.config under documents and will create one if it doesn't exist.
 
 
 
 

09 Ocak 2011

İnternette dolaşan iş ilanları cv ler ve insanların haklı tepkisi

Mail adreslerinize alakasız iş ilanları mutlaka gelmiştir hatta yanlışlıkla veya bilerek cv gönderenler bile olmakta. Bu ilanlarda ve cv lerde belirtilen özelliklerden her insan gibi bende rahatsız oluyorum. Gerçekten bir insan bu kadar işi bir arada ne kadar sağlıklı yapabilir.

Üye olduğum bir internet topluluğunda bu konu üzerin geçen bir yazı çok hoşuma gitti ve sizlerle paylaşmak istedim. Bu bir iş ilanı ancak bazı açıklamalar eklenmiş  :)

- Askerlikle ilişkisi bulunmayan
- 30 Yaşını aşmamış (nedendir onu hiç anlamam, 30 dan sonra insanlar conta mı sıyırıyor? :)
- Adobe Photoshop, Illustrator, Corel Draw, Macromedia Freehand, 3d Studio Max veya Cinema 4d programlarını çok iyi bilen (bizim firma aynı zamanda proje ve mimarlık bürosu da, bilsen iyi olur hani)
- Matba bilgisi olan
- Flash ta ActionScript yazabilen
- Pascal, Delphi, C++, C#, VB, VB.Net, PHP, ASP, İngilizce ve Java yı çok iyi bilen (insaf ettik Ruby ve Perl istemiyoruz, biz zaten ayrımcılığa karşıyız, ha programlama dili ha yabancı dil hepsi aynı bizim için)
- OOP, Web Services, SOA deyince "bunlar ne lan?" demeyecek (Bizim firma Google a fason çalışıyor, aslında Gmail i biz yaptık)
- Windows 2008 server da en az 3 yıl deneyimli (Ho? Biz uzaylıyız ya gelecekten geliyoruz..)
- Esnek çalışma saatlerine uygun (Gece 11 ben hala şirkette n'apıyorum demeyecek)
- Seyahat engeli bulunmayan (Akşam iş çıkışı sizi karşı tarafa gönderip geri çağırabiliriz, buda 3-5 saat sürer aklınızda bulunsun yani)
- İnsanlıktan nasibini almamış (Robot arıyoruz biz robot, asimo nun biraz gelişmişiyseniz buyur gel)

 

Yorum sizin  :)

Alıntı:
http://www.mustafaozcan.net/tr/post/2008/10/21/Internette-dolasan-is-ilanlari-cv-ler-ve-insanlarin-hakli-tepkisi.aspx


StyleCop: C# Kaynak Kodu Analizi

Okunabilirliği az, diğer insanların kodlarınızı çözmek için saatler boyunca incelediği bir kod yazma alışkanlığına sahip biri misiniz? Visual Studio'nun üzerine kurulan bu araç kodunuzu daha iyi bir şekile getirmeye çalışacak. StyleCop” aracı kod stilinde standardizasyonu ve belirli kurallara uyulmasını sağlamaktadır.

FxCop veya StyleCop 

“StyleCop” aracı kod stilinde standardizasyonu ve belirli kurallara uyulmasını sağlamaktadır. StyleCop uygulaması Microsoft bünyesindeki bir yazılımcı tarafından geliştirilmiş olup popüleritesini her geçen gün arttırmıştır. Bu aracı diğer efsaneleşen MS aracı FxCop ile karıştırmamak gerekir. StyleCop kod formatına bakarken, FxCop ise kodun analizi yapar. Bir diğer fark ise StyleCop’un kanak kodlarını, FxCop’un ise IL kodlarını incelemesidir.



Kaynak:



07 Ocak 2011

Visual Studio ile oluşturduğumuz Setup projesine Uninstall kısayolunu ekleme

 

Using Visual Studio 2005/2008, you don't need to write any code to add a uninstall option for a Setup project (Yes I know some people can write code to do it)

1) In the Setup Project –> File System windows –> Right Click "File System on Target machine" –> add a Special Folder, select System Folder;

2) Into this system folder Add a file. Browse for msiexec.exe from local System32 folder and add it. Override default properties of this file as follows:

Condition:=Not Installed (make sure you put 'Not Installed' exactly like that, same case and everything),
Permanent:=True,
System:=True,
Transitive:=True,
Vital:=False.

3) Create a new shortcut under the 'Users Program Menu', Set Target to the System Folder which you created in the step 1. and point it's at the msiexec.exe. Rename the shortcut to 'Uninstall Your Application'. Set the Arguments property to /x{space}[ProductCode].

5) Build the project, ignore warning about the fact that msiexec should be excluded, DONT exclude it or the setup project wont build.

The 'Not Installed' condition and Permananet:=True ensure that the msiexec.exe is only placed into the system folder as part of the install IF it doesn't aready exist, and it is not removed on an uninstall - therefore it;s pretty safe to ignore that warning and just go for it.

(Based on the description from SlapHead)

Kaynak:
http://www.gogototo.com/how-to-add-a-uninstall-option-in-visual-studio-setup-project-without-writing-code.html
http://stackoverflow.com/questions/1356160/in-a-visual-studio-setup-project-how-do-i-generate-an-uninstall-script

 

 

 

29 Aralık 2010

Özgüven doğru anlaşılmazsa narsist duygulara yol açabilir

Kişisel gelişim yöntemlerinde özgüven kişinin başarısının ve mutluluğunun kaynağı olarak gösteriliyor. "Özgüvenini yeniden kazanmak" ya da "özgüvenini kaybetmek" gibi deyimlerle sıkça karşı karşıya kalıyoruz. Uzmanlar, özgüvenin yanlış tanımlandığını ve şişirilmiş bir özgüvenin narsist kişilik bozukluğuna yol açabileceğini söylüyor. Psikolog Beyza Akınal, özgüvenin kişinin kendini tanıması ve yapabileceklerinin sınırlarını bilmesi anlamına geldiğini belirtiyor. Akınal, özgüvenin 0-6 yaş arasında oluştuğunu belirterek, "Çocukluk döneminde kişi çevresine sevgiyle bağlanmazsa narsistik kişilik bozukluğu ortaya çıkabiliyor. Sürekli insanları suçlamaya, başkalarının kusurlarını görmeye başlayabiliyor. Ailesiyle güvene dayanan bir ilişki kuran çocuk her şeyi başaramasa bile başarısızlığını kabul eden bir yetişkin oluyor." diyor. Akınal, kişinin kendini tanımasını ise şöyle açıklıyor: "Eğer doktor olmak istiyorsak 6 yıllık bir eğitimi göze almalıyız. Ne kadar inanırsak inanalım özgüvenimizi geliştirmeye çalışalım, 2 yılda doktor olamayız. Hedeflerimizi gerçekleştirmek için çaba sarf edilmeli; fakat sınırlarını tanıyıp kabul etmek de gerekiyor."

TEDAVİ EDİLMEZSE PROBLEM BÜYÜYOR

Özgüven doğru tanımlandığında kişinin başarısına da etkisi olumlu oluyor. Akınal, "Özgüven her insanın başarılı olması için önemli bir unsur olmasına karşın aşırısı ve çevresel faktörlerin etkisiyle narsisizmi tetikleyebilir. Özgüveni bazı yeteneklerin bize verildiğini fark etmemiz için bir araç olarak görmeliyiz. Benzer bir biçimde bazı yeteneklere de sahip olmadığımızı anladığımızda özgüveni doğru anlamış oluruz." diye konuşuyor.

Davranış bilimci Sümeyra Akkor ise narsist kişilik bozukluğunun toplumda sıkça rastlanan bir rahatsızlık olduğu halde yeterince dikkate alınmadığını vurguluyor. Akkor, narsist kişilik bozukluğunda bireyin kendini her şeyden önemli hissetmesi, empati yeteneğini kaybetmesi ya da hayran kitlesi oluşturma isteği şeklinde kendini gösterdiğini belirtiyor. Akkor, narsisizmin tedavi edilmediği takdirde farklı psikolojik rahatsızlıklara sebep olabileceğini dile getiriyor. Narsist kişilik bozukluğu olan kişilerin çevresiyle iletişimi tedavi için önemli bir unsur. Akkor, "Hastanın farkındalığını artırarak bu rahatsızlıktan kurtulmak istemesini sağlamak gerekiyor. Kişiye 'kendini beğenmiş, idare etmek gerekir' şeklinde yaklaşılmamalı. Eğer tedavi ile önlem alınmazsa bu durum madde bağımlılığı, majör depresyon, borderline antisosyal kişilik bozuklukları gibi rahatsızlıklara yol açabilir." diyor.

Sümeyra Akkor, kişinin çevresiyle sağlıklı bir iletişim kurabilmesi için özgüven ile tevazuyu aynı ölçüde koruyabilmesi gerektiğini söylüyor. Akkor, "İnsan mutlu olabilmek için önce kendini güvende hissetmeli. Sonrasındaysa güzel davranışlarını tevazu ile korumalı. Tevazu sahibi olmadığımızda güzel davranışların başkalarına faydalı olması da zorlaşır. Alçakgönüllü biri hem kendisini hem de çevresindekileri özel hisseder yani herkes gibi olup yine de özel olabiliriz." diyor.

Alıntı


24 Aralık 2010

Patronunuza bunları söylemeyin!

Patronunuzla konuşurken seçtiğiniz sıfatlara, kelimelere dikkat etmelisiniz. Anlatmanız gereken bir olayı yanlış kelimeler, ifadeler seçerek anlatırsanız, pişman olabilirsiniz.

Workbuzz isimli internet sitesinde yer alan habere göre, patronunuzun sizin neye ihtiyacınız olduğunu ve ne istediğinizi tam olarak anlaması önemlidir. Patronunuzu kırmak veya kızdırmak istemiyorsanız, işte söylemeniz ve söylememeniz gereken sözler:

1. Bunu söylemeyin: "Her zaman en kötü tepkiyi veriyorsunuz"

Bunu söyleyin: "Bana umduğunuz şekilde yapamadığım bir iki şeyi söyler misiniz? Bunu nasıl daha iyi yapabileceğimi bilmek istiyorum"

Doğru olanı duymak istediğinizi göstererek ve kendinizi bu şekilde geliştirerek patronunuzun gözüne girebilirsiniz. Ayrıca, gelecekte patronunuzdan daha faydalı ve olumlu tepkiler alma şansını artırırsınız.

2. Bunu söylemeyin: "Hımm, evet. Kesinlikle anladım"

Bunu söyleyin: "Amaçların ne olduğunu tam anlamıyla anlayamadım? Daha fazla detay verir misiniz?"

Bazı patronlar açıklayıcı ifadeler kullanmazlar. Kendileri ne istediklerini biliyorlardır, fakat düşüncelerini kelimelere dökmede zorlanırlar. Bu nedenle patronunuzun ne istediğini tam olarak anlamak için sorular sorun. Başta kendinizi acemi gibi hissedebilirsiniz, ancak işinizi iyi bir şekilde yaptığınızda pişman olmazsınız.

3. Bunu söylemeyin: "Sizin bulunduğumuz makamı istiyorum"

Bunu söyleyin: "Sizce, bu şirkette yükselmek için doğru yolda mıyım? Benim yerimde olsaydınız, hangi alanlara odaklanırdınız?

Mesleğinizde ileri gitmek istiyorsanız, patronunuzun yaptığı işi yapmalısınız. Ancak, patronunuzun sizi yerini alacak bir düşman olarak görmesini istemezsiniz. Eğer patronunuz işinizi ciddi bir şekilde yaptığınızı bilirse, hedefinize ulaşmanıza yardımcı olmak için daha fazla sorumluluk verir.

4. Bunu söylemeyin: "Bu asla işe yaramayacak"

Bunu söyleyin: Bu proje ya da fikir hakkında endişelerimi sizin de bilmenizi istiyorum"

"Bana çözüm sunun, problem değil" sözü eskidir, ama çoğu zaman doğru bir klişedir. Fakat, bir planı yöneten kişiyseniz, herkesin bildiğinden daha fazlasını bilmek zorundasınız. Ayrıca hiç kimsenin daha önce sahip olmadığı kavrayışa sahip olmalısınız. Burada endişelerinizi ve seçeneklerinizin ne olduğunu patronunuza anlatın. Böylece negatif bir sonuç ortaya çıktığında patronunuz da şaşırmaz.

Alıntı


21 Aralık 2010

İletişimde kullanılan TLV formatı

T: Tag veya Type
L: Length
V: Value
 

The type and length fields are fixed in size (typically 1-4 bytes), and the value field is of variable size. These fields are used as follows:

Type
A numeric code which indicates the kind of field that this part of the message represents.
Length
The size of the value field (typically in bytes).
Value
Variable sized set of bytes which contains data for this part of the message.

Some of the advantages of using a TLV representation are:

  • TLV sequences are easily searched using generalized parsing functions.
  • New message elements which are received at an older node can be safely skipped and the rest of the message can be parsed. This is similar to the way that unknown XML tags can be safely skipped.
  • TLV elements are typically used in a binary format which makes parsing faster and the data smaller.
 
 
 

17 Aralık 2010

.net c# ile unmanaged c veya c++ dll(native dll)'indeki metodlara erişme

Com dll olmayan native dll'leri dllimport yöntemiyle kullanabilirsiniz.
 
 
Kaynak:
 
 

.net c# ile seri port haberleşme testi

Örnek Kod:
using System;  using System.IO.Ports;  using System.Collections.Generic;  using System.Text;    namespace SerPort1  {  class Program  {      static private SerialPort MyPort;      static void Main(string[] args)      {          MyPort = new SerialPort("COM1");          OpenMyPort();          Console.WriteLine("BaudRate {0}", MyPort.BaudRate);          OpenMyPort();          MyPort.Close();          Console.ReadLine();      }        private static void OpenMyPort()      {          try          {              MyPort.Open();          }          catch (Exception ex)          {              Console.WriteLine("Error opening my port: {0}", ex.Message);          }      }    }  }  
Kaynak:
 
 
 

12 Aralık 2010

Yedi önemli hedef

Her bireyin üstünde düşünmesi gerekecek 7 temel hedef alanı bulunuyor. Birinci hedef alanı bedenimiz ve sağlığımız. Sağlığımızla ilgili hedeflerimiz neler? Sağlığı yerinde olan, benim deyimimle arıza sinyali vermeyen insanların birçoğunun sağlığıyla ilgili hiçbir hedefi yok.

Halbuki olmalı. Yaş ilerliyor, kolesterol, kalp ve benzeri birçok sorun ortaya çıkıyor. Önleyici sağlık yaklaşımı anlamında neler yapabiliriz? Spor yapıyor muyuz? Haftada kaç gün, kaç saat hangi sporu yapacağız? Beslenmemizde nasıl bir değişiklik yapmalıyız? Neleri yemeyi bırakmalı ya da azaltmalı ve nelere başlamalıyız?

İkinci hedef setimiz, duygusal ve ruhsal hedeflerimiz. Öncelikle kendimizi tanıyalım. Bizim ulaşmak istediğimiz duygular neler? Macera duygusu, keşif duygusu, öğrenme duygusu, başarı duygusu güvenlik duygusu, yardım ediyor olma duygusu vb. Bu duygulara ulaşmak için ne yapmalıyım? Macera için seyahat, güvenlik için tasarruf gibi seçenekler olabilir. Ruhsal olarak neyi hedefliyorum? İyi bir kul olmayı, huzurlu bir yaşam sürmeyi, ibadetlerimi tam olarak yerine getirmeyi mi? Hangi ibadetleri, duaları ve çalışmaları yaşamıma çekeceğim? Daha dingin, sakin, insanlara kızmayan ve onları kucaklayan bir ruh haline mi gireceğim? Neleri hedefliyorum?

Üçüncü hedef setimiz ailemizle ilgili. Annem-babamla yeterince ilgilenebiliyor muyum? Onlarla ilişkilerim nasıl? Evliysem eşimle ilgili hedeflerim neler? İlişkimi daha iyi hale getirmek için neler yapabilirim? Çocuklarımla ilişkimde hedeflerim ne olmalı? Dedelerim, babaanne ve anneannemle ilişkimdeki hedeflerim neler olmalı? Bu hedefler, onlarla ilgilenmek, onlarla zaman geçirmek olabileceği gibi, onların daha az müdahale edeceği bir yaşam kurmak da olabilir. Önemli olan aile üyelerimi sakin kafayla düşünerek onlarla ilişkimde hedefler belirlemek.

Dördüncü hedef setimiz, gelişim ve öğrenme hedeflerimiz. Kendimi geliştirmek için neleri hedefliyorum? Hangi kurslara gideceğim? Hangi kitapları okuyacağım? Hangi eğitim kurumlarına ve sınavlarına gireceğim? Yabancı dilimi, bir yıl sonra hangi düzeye getireceğim? Seyahat etmek, bir sivil toplum kuruluşunda çalışmak, satışla ilgili bir işle uğraşmak beni geliştirebilir mi? Geliştirebilirse kendime nasıl bir faaliyet seçeceğim?

Beşinci hedef setimiz, sosyal çevremizle ilgili hedeflerimiz. Kimlerle arkadaş olmalıyım? Kimlerle arkadaşlığımı kesmeliyim? Arkadaşlarımın içinde ihmal ettiklerim, aramam ve görüşmem gerektiği halde ilgilenmediğim arkadaşlarım var mı? Görüşerek zaman kaybettiğim arkadaşlarım var mı? Yeni arkadaşlar edinmek için hangi kurslara ya da hangi derneklere gidebilirim?

Altıncı hedef setimiz, kariyerimizle ilgili hedeflerimiz. Bir iş mi kuracağım? Profesyonel mi çalışacağım? Devlet memuru mu olacağım? Kariyerimle ilgili bir ila beş yıl içinde neleri başarmış olmak istiyorum? Hangi işlerden çıkmalı ve hangi mesleklerden uzak durmalıyım?

Yedinci hedef setimiz, finansal hedeflerimiz. Bir yılın sonunda ne kadar kazanmak istiyorum? 12 bin dolar, 60 bin dolar, 100 bin dolar, 5 milyon dolar, 100 milyon dolar? Şaşırtıcı bir şekilde, insanlar kazanmak istedikleri rakamlar hakkında çok az düşünüyorlar. Genellikle sadece çalışmayı düşünüyorlar ve bu çalışmanın sonucunda ellerine ne geçerse o kadar kazanmış oluyorlar.

Melih Arat

Alıntı

Yumurtalar değil fikirleriniz konuşsun

İlerlemek istiyorsanız gençlerin toplumun en dinamik kesimi olması gerekir. En çok da fikri alanda. Çok okumalı, çok yazmalı gençlik. Ezberci olmamalı. Gençler, arka arkaya on önemli cümleyi ezbere dayanmadan, tekrarlara düşmeden söyleyebilmeli. Geçenlerde sanırım Abbas Güçlü'nün programında izemiştim bir genci: "IMF kötü." "Neden kötü?" "Çünkü hain." "İyi ama neden hain?" "Çünkü kötü" ....

Gençlerin aklı fikirde değil yumurtada olursa işimiz vahim demektir. Geriye gidiyoruz demektir. İki profesör siyasetçi konuşma yapmak için Türkiye'nin en köklü fakültesine gidiyorlar. Daha ağızlarını açmadan yiyorlar yumurtayı! İyi ki bu gençlerin asker-polis gücü yok. Diktatör olurlar; kimseyi konuşturmazlar vesselam.

Gençler; insanları yumurtayla değil fikirlerinizle yıldırın. Zordur, çalışma ister; ama daha etkili bir yöntemdir. Bir de edepli olun. Medeniyetin ilk şartıdır edep.

Son nokta. Hürriyetgaze tesinin cuma günkü spor sayfasında Anelka ile ilgili bir haber vardı: Anelka Fransız radyosuna demiş ki: "Türkiye'de futbol oynarken ayağımıza her top geldiğinde tribünlerden küfür yağıyordu."

Ne futbol izlemeyi biliyoruz ne siyasetçileri dinlemeyi...

Murat Yulak

Alıntı


05 Aralık 2010

İstemek yetmez şiddetle arzulamanız gerekli

Size bu durumlar için fikriniz sorulsa ne cevaplar verirdiniz?

Boğaziçi üniversitesini bitirmişsiniz, Amerika’da çalışmışsınız, ülkenize geri dönüyorsunuz. Yeni bir yazılım şirketi kuruyorsunuz ve ilk sermayeniz olmadığı için kiranızı ödeyemiyorsunuz. Ev sahibinize ne derdiniz? Bu durumu yakın çevrenize ailenize nasıl açıklardınız?

Yıldız Üniversitesi Makine mühendisliğinde okuyorsunuz. Aile dükkânında babanıza yardım etmek istiyorsunuz. Satılması için aldığınız saatler elde kalınca bunları nasıl satardınız. Saat sektörü konusunda tek bir bilginiz yok, yazılım bilmiyorsunuz, bilgisayardan anlamıyorsunuz, ne yapardınız?

Aralarında tek bilgisayar mühendisi olmayan 6 kişilik küçük bir şirket, Ankara’da bir apartmanın giriş katında 2000 li yılların başında kuruluyor. İnternet şirketi olarak kurulan bu bir grup genç uluslar arası freeinfosearch.com bir site açıyorlar. Amaçları internet üzerinde yeni iş modelleriyle büyümek, bu şirkete yatırım yapar mıydınız?

2000 li yılların başında apartman dairesi ofislerinde internet bağlantısı kesildiği için Telekom yetkilileri ile tartışan. Küçük internet şirketlerinin siparişlerini alamadığı için sokakta çukurun başında neden habersizce internetin kesildiğini ve ne zaman geleceğini soran gence ne derdiniz?

Hikâyeler bu şekilde uzayıp gidiyor. Hayatlarından bir kesimi alıp ortaya koyarsanız nerdeyse tüm girişimcilerin yaşadığı zor günler unutulmaz hatıralar bırakıyor. Dışardan bakan gözlerin çoğu bu girişimcilere farklı gözle bakıyorlar. Hele Türkiye’de yeni girişimini yapan gençler daha fazla zorlanıyorlar.

Eğitim yaşamı bize uzun yıllarca birikmiş bilgileri daha önce belirlenen biçimlerde vermek üzere planlanıyor. Bu süreç içinde kurallara uyarsanız çok başarılı öğrenciler olabilirsiniz. Çok daha düzgün uyarsanız potansiyelinizde varsa birincilikler alabilirsiniz. Eğitim yaşamı bir gencin yaşamının en önemli yıllarını alıyor. Bu sırada sizden beklentileri çevreniz belirliyor. Aile, arkadaş çevresi, size bilerek ve bilmeyerek baskı uygulamaya başlıyor. İyi bir eğitim aldıysanız mezun olduktan sonra sizi kimse küçük, izbe bir dairede kendi işinizi kurmaya çalışırken görmek istemiyor. İşte üniversitenin öğrencilerde oluşturduğu en büyük sanal bariyer.

Lise hayatınız boyunca üniversiteye girmek için yıllarca çalıştınız, en iyi bölümü kazandınız, hatta buradan da çok iyi derecelerle mezun oldunuz. Sonra ne yapıyorsunuz sorusuna nasıl cevap vereceksiniz. Türkiye’de yeni mezun bir gencin kendi işini kurmasıyla işsiz olması arasında nerdeyse bir parmak fark vardır. Yakın çevresi bu gençlere çoğunlukla acıyarak bakar. (Tabi ki genellemeler yapmak doğru olmayabilir, genel izlenimim böyle) İşte bu sebepten birçok öğrenci yüksek lisansı bitirdikten sonra kurumsal bir şirkette küçük bir masa, telefon, e-posta adresi almayı kendi hayallerini kurmaya tercih ederler. Bir kısmının düşüncesi belli bir süre çalıştıktan sonra kendi şirketlerini kurmak olabilir. Bunu başaranlarda çıkacaktır, ancak sistemin çarklarına bir kez girildiğinde buradan çıkmak çok zordur.

Ülkemizde haylaz öğrencilerden beklenti hep daha düşüktür. Aile çevresi bir üniversiteye girse diye bakar, girdiğinde bir de bitirebilse diye dua eder. Bitirdikten sonra aman bir baltaya sap olsun kendi işini yapacaksa da yapsın diyebilir. Haylaz öğrenciler aslında akılsız olduklarından değil farklı düşündüklerinden eğitim sistemi içinde düşük notlar alabilirler. Eğitim hayatlarında sosyal işlerle uğraşabilirler, yaratıcı projeler geliştirebilirler, sporla ilgilenirler vb. Bu nedenlerden ötürü sistemin onlardan beklediği değerlendirmelerde diğerlerinden daha düşük notlar alabilirler. Bu başarısızlık kesinlikle ticari Başarsızlıkla ilişkilendirilemez. Başarılı eğitim sonunda başarılı girişimciler çıkartmayacağı gibi başarısız öğrencilerde hayatları boyunca başarısız kalmayabilirler. Bununla ilgili yapılmış bilimsel bir makale okumadım ancak gözlemlerim eğitim başarısı ile okul sonrası başarı arasında bir korelâsyonun olmadığı yönünde. Hatta birçok başarılı internet girişimcisi okullarında başarısız öğrenciler olabiliyor. Buna “haylaz öğrenci” kuramı diyelim. Unutmadan her haylaz öğrenci başarılı bir girişimci olmuyor.

Başarılı öğrencilerden beklentiler yüksek olduğu için eğitim hayatlarında sıradan gözüken öğrenciler ticari hayatlarında daha başarılı girişimciler olabiliyorlar. Bu kuralın birçok şartı var. Fonksiyon sadece eğitim başarısına bağlı değil uzun bir denklemin bir değişkeni bu koşulu kapsıyor. Bunu ilk önce aklımızın bir yerine koyalım.

Başarı nasıl ölçülür? Ticari başarı genellikle, ciro, karlılık, satış, müşteri ile ölçümleniyor. Bunun yanı sıra etkilediğiniz çevre, bilinirlik, ün de başarının ölçüsü olabiliyor. Başarının tek bir cetveli yok. İnternet şirketleri genellikle çok para kazandıklarında veya bir başka şirkete satıldıklarında başarılı kabul ediliyorlar. Türkiye’de bir internet şirketini başarılı kabul edebilmemiz için hangi ölçütlere bakacağız? Bu da oldukça tartışılabilecek bir konu olarak karşımıza çıkıyor. Biz ciro, satış değişkenleri ile yola çıkalım.

Milyon dolar cirolara ulaşmış bir yazılım şirketinin kurucu ortağı bir zamanlar ev sahibine kirasını ödeyememeğini nasıl söylemiş olabilir. Bunu göze alarak bugün kendi şirketinizi kurar mısınız? Özkan Erener Veripark yazılım şirketinin kurucu ortağı, İzmir Fen lisesi mezunu, Boğaziçi elektronik mezunu. 3 ve 4ncü sınıfta derslerine çok zaman ayıramaz. Zar zor mezun olur. Üniversite 4ncü sınıfta bir simülatör yazar, bunun üzerine hocaları onu Amerika’daki akademik çevreye önerirler. Banu Onaran Amerika’ya onu davet eder. Özkan Erener 6 aylık bir proje için çalışmaya gider. Aklında yazılım şirketi kurmak vardır. 6 aylık programı 2 ay sonunda bitirir. Kalan 4 ay boyunca ne yapacağını hocasına sorar. Banu Onaran yeni açılan bir şirketle konuş der. Bu şirket Özkan Erener’e bir harddisk ve bir proje verir. 1 haftalık süre içinde verdikleri sorunu çözmesi istenir. Bu sorunu kısa bir sürede çözüp şirkete götürür. Şirket bu gence iş teklif ederler ama ücret ödemeyiz der. 4 aylık süre boyunca ücreti ödeneceği için Özkan Erener bu teklifi kabul eder. Parası bitince şirket çok az bir ücret vererek Özkan Erener 4 yıl boyunca bu şirkette çalışır. Bu süre zarfında çok başarılı projelerde çalışan Erener, Türkiye’ye döndüğünde kendi şirketini kurmaya başladığında evinin kirasını belli bir süre ödeyemez. Ev sahibine durumu anlatan ve onayını alan Erener’e ilk sermayesi kira olarak verilmiş olur.

Kudret Curey babasının kuyumcu dükkânında eğitim hayatı boyunca çalışır. Hatta Ümraniye’deki dükkânı iyileştirmek için babasına öneriler sunar. Sadece kuyum değil saatte satmaları gerektiğini söyler. Babası uzun süre bu fikre karşı çıkar. Saatten anlamadıklarını ve bu konuda başarılı olamayacaklarını satışları yapamayacaklarını söyler. Uzun süre direten Kudret en sonunda küçük bir bütçe için babasını ikna eder, o dükkanın başında olmadığı bir zamanda babasının izin verdiği miktarın çok üstünde bir saati satın alır. 40.000 USD lık saati gören babası ilk başta çok kızar ve bunları satması için daha fazla çalışmasını öğütler. Kudret ne yaptıysa bu saatleri satamaz. En sonunda babası bu saatleri al ve satmadan gelme der. Dükkânın üzerinde kahvehane’den bozma bir yerde Kudret tek başına saatleriyle baş başa kalır. Saatleri satmak için interneti kullanmaya karar verir. İnternet konusunda ebay tecrübesi olan Kudret, elinde çanta tüm elektronik ticaret şirketlerine gider, onların saat tedarikçisi olacağını anlatır. Türkiye’deki e-ticaret şirketlerine bir çözüm ile gittiği için belli bir süre sonra yavaş yavaş bu saatleri bitirmeye yenilerini almaya başlar. İşte Kudret’i o kahvehane’de yeşil bir çuhalı masanın başında düşünün, bu şirkete siz yatırım yapar mıydınız? Kudret bugün milyon dolarlık cirolara ulaşmış alisverissaati.com’un kurucusu, bugün 4 fiziksel saat dükkanı açtılar, Casio ile ortaklık yaptı, Türkiye saat piyasanın tanınan bir oyuncusu haline geldi. Kudret Yıldız Makine Mühendisliğini 10 senede bitirdi.

ODTÜ ve Bilkent mezunu 6 genç. Aralarında bilgisayar, elektronik vb bölümlerden kimse yok. Burçin Didinedin, Tümay Asena, Tuna Orbay, Çağatay Karabulut, Tolga Güneş, Başar Ekin 6 ortak internet’te ortak uluslar arası bir proje yapmak için bir araya gelirler. Ankara’da giriş katında bir apartman dairesini kiralarlar. Bu ofiste yurtdışını hedefleyen projeler geliştirmeye başlarlar. Freeinfosearch.com içerik projesi ile işe başlarlar, İngilizce içerik sitesi oluşturmaya başlarlar, bu sırada alan adlarındaki sırrı bulurlar. Zamanı dolan uzatılmayan ticari değeri yüksek olacak alan adlarını satın alamaya başlarlar. Bu genel alan adlarından komisyon ve reklam gelirleri elde etmeye başlarlar. 200.000 adet alan adıyla bugün “direct navigation” sektörünün dünyadaki önemli bir şirketi halini alırlar. Nokta internet teknolojileri şirketinin bu ilk halini gördüğünüzde ne düşünürdünüz, peki size ne iş yaptığınız sorulsa nasıl cevap verirdiniz?

İnternet girişimcilerini anlayan çok yatırımcı ülkemizde maalesef yok. Profesyoneller bu şirketleri her toplantıda küçümserler. Büyük şirketlerin genel müdürleri genellikle yeni başlangıç aşamasındaki bu tür şirketlere toplantı için randevu vermezler. İnternet girişimcilerinin başlangıçta sermayenin dışında birçok şeye ihtiyacı vardır. Para belki listenin en sonunda gelen kalem olabilir. İnternet girişimcilerine önceki tecrübeleri paylaşmak, iş çevresi ağıyla tanıştırmak, koçluk ve danışmanlık başlangıç şirketleri için çok değerli girdiler olabilir. Etohum.com projesi Türkiye’deki internet girişimcilerine yol göstermek üzere yeni bir başlangıç yapıyor.

Etohum projesi Türkiye’nin önde gelen internet girişimcileri ve yatırımcıları ile bu sene hayata geçiyor. İnternet girişimcilerinin iş planlarını anlatacakları bir ortamı hazırlayacak etohum.com yeni girişimcilere birçok fırsatlarda sunacak. Sadece yatırımcılarla tanıştırmakla kalmayacak onlara internet girişimciliği konusunda eğitim ve koçlukta verecek. Yeni birçok şirketin önünü bu şekilde açılacağını düşünen bu projeye Türkiye’deki önde gelen şirketler destek veriyorlar.

Yazının başındaki soruları bana sorduklarında, şunu söylüyorum:
“Dünyanın gördüğü en büyük başarı, önce bir hayaldi. En büyük çınar bir tohumdu, en büyük kuş bir yumurtada gizliydi.” Allen

Alıntı:
http://burakbuyukdemir.com/istemek-yetmez-siddetle-arzulamaniz-gerekli


Yazılım geliştirmeye değişik bir bakış...

Programcılıkta sabahlamanın verdiği huzur ve tatmin çok meşhur. Programcılar sabaha kadar çalışma konusunda herkesi şaşırtan derecede istekli ve beceriklidir. Bu geceçalışması boyunca beyin bir "akış" yakalayarak saatlerin su gibi geçtiği bir çalışma ortamı oluşur. Bu çalışma sırasında beyin en derin konsantrasyon düzeylerine erişir ve genellikle zor programlar bu kesintisiz, onlarca saat süren çalışmalarda ortaya çıkar. Beyin bu stilde çalışırken kişilerin mutlu oldukları, mutluluk düzeylerinin arttığı bilimsel çalışmalarla gözlemlenmiştir. Bu çalışmalar eski Chicago Üniversitesi Psikoloji Bölüm Başkanı Mihaly Csikszentmihalyi tarafından yapılmıştır. Çalışmalarda çeşitli disiplinlerden yüzlerce kişinin günlük uğraşları incelenmiş ve bu sırada "mutluluk" düzeyleri gözlemlenmiştir. Bu çalışmaların programcılar tarafındaki bulguları ise ilginçtir. Her ne kadar programcılık bir bilim dalı (Computer Science), bir mühendislik (Software Engineering) olarak düşünülse de programcıların beyninin sanatçıların çalışma stiline sahip olduğu ortaya çıkmıştır. Programcılık sırasında beyin bir "akış" moduna geçmekte, etraftan ilişkisini kesmekte ve bir probleme günlerce konstantre olabilmektedir.

Başarılı programcıların çoğu konsantrasyon yetenekleri ile çevrelerini şaşırtır. Saatlerce sıkılmadan bir ekran başında vakit harcayabilirler. Bu saatler bir çok kez günlere kadar uzayabilir. Yaşamsal faaliyetler dışında hemen hemen her şeyden izolasyon gereklidir. Microsoft'ta Office yazılım geliştirme ekibinden bir programcının kendini odasına kilitleyip "bitmeden çıkmayacağım" demesi, Bill Gates'e bile kapıyı açmaması meşhurdur. Bu olay daha sonra Douglas Coupland'ın Microserfs (1996) kitabına konu olmuştur. Bu sırada kendini odaya kilitleyen programcının arkadaşlarının süper marketten gidip yassı yiyecekler alması ve kapının altından odaya atmaları, programcılar arasındaki dayanışmanın güzel ve sevimli bir örneği.

Bu çalışma sırasında programcı en derin düşüne moduna geçer ve etraftan kendini izole etmeye çalışır. Bir çok programcı bu amaçla müziği kullanır. Ancak müziğin programcılık sırasında beyne olan etkileri üzerine yapılan çalışmaların bulguları şaşırtıcıdır. Kreatif programlama ile müzik dinleme sırasında kullanılan beyin bölgesi aynıdır. Beyin bir müziğe konsantre olmuşken çok derin programcılık yapılamıyor. Ya da yeteri kadar iyi yapılamıyor. Programcının müziği kapatınca etraftaki gürültünün etkisi ile müziği dinlediğinde beynin gerekli bölgesinin meşgul edilmesi arasında bir tercih yapması gerekir. Tahminen bu nedenle izolasyon amaçlı müzik kullanımında elektronik müziğin, hard rock, alternatif rock ve heavy metal gibi müzik türlerinin daha fazla tercih edildiği görülür. Müzik, beyin ve programcılar üzerinde çalışmalar halen sürüyor, bu derin konu araştırılmaya devam ediyor. Şu anki bulgular, kritik kodların geliştirilmesi ve müzik dinleme sırasında kullanılan beyin bölgelerinin aynı olduğunu gösteriyor. Monoton kodlama (maintenance) diyebileceğimiz program geliştirme kısmı ise beynin başka bir bölümünde gerçekleşir. Bu tür kodların geliştirilmesi sırasında müziğin programlamaya herhangi bir negatif etkisi görülmemiştir.

Programcının kritik kodları yazmak için ihtiyaç duyduğu "akış" modunu koruyabilmesi için izolasyona ihtiyacı bulunur. Bu izolasyon arttıkça çalışma derinleşir, ilk önce beyindeyazılmak istenen programın çatısı oluşur, problem önce beyinde çözülür, daha sonra beyinde çözülen bu problem koda çevrilir. Programcının beyni pencereden dışarıyı seyrederken ya da gözler sabit bir yere bakıp dalıp gittiği zaman bu problem çözülmeye çalışılır. Hatta programcının beyni bu problemi uyurken, araba sürerken ve diğer başka monoton işleri yaparken ele almaya devam eder. Bu durumda sıfırdan ve baştanyazılan bir programa bakıldığında kodlama toplam sürenin oldukça az bir bölümünü almaktadır.

Bu çalışma sırasında beyin son derece karmaşık bir aktivite içerisine girmiştir. Var olmayan bir çözümü oluşturmak için "kreatif" süreç başlamıştır. Bu süreç duyu organlarını izole etmiş ve yaratıcılığa yoğunlaşmıştır. Bu süreç sırasında programcı onlarca konuda karar vermektedir. Değişken isimlerinden, akış yöntemlerine, parametrelerin cinsinden, kullanıcı ara birimine kadar bir programcı sürekli bir "karar alma" uğraşısı içerisindedir. Programcılar bu nedenle bir günde yüzlerce kararın altına imza atma becerisine sahip iyi birer karar vericidirler.

Tam bu yoğun programlama sırada birisinin programcının omzuna dokunduğu zaman bir "ara verme" operasyonu başlar. Bu ara verme operasyonu tam gaz giden bir arabadaaniden frene basma gibidir. Derinleşen "kreatif" süreç derinliğini yitirir ve duyu organları "açılarak" omuza dokunan kişi ile iletişime geçilir. Bu geçiş çoğu zaman o kadar kolay olmamakta ve programcılar bu nedenle zor iletişim kurulan kişiler olarak görülmektedir. Bir soru sorulmaktadır. Eğer bu soru şu an üzerinde çalışılan konuyla ilgili ise mevcut kreatif süreç bu soruyu cevaplamakta kullanılır. Sorunun "bağlam" ile ilgili olması, sürecin durdurulmasını gerektirmez. Örneğin bir veri tabanı tasarımında yandaki programcı bir tablodaki alanın ne işe yaradığını sorduğunda süreç durdurulmadan cevap verilebilir. Cevabın verilmesi için gerekli bütün malzeme, zaten o sırada beynin çalışma bölgesine getirilmiş hazır halde bulunmaktadır.

Ama eğer bu soru bambaşka konularla ilgiliyse: "Bu iş ne zaman bitecek"ten tutun da , "dün maçı seyrettin mi?" ye kadar değişik açılardan gelen bir soru olabilir. Bu durumda ancak bu kreatif süreç durdurularak bu soruya cevap verilebilmektedir. Ya da çoğu programcı bu soruyu "duyacak" ama "algılamayacaktır". O an durumu kurtaracak bir cevap vereceklerdir: "yarına biter" vs gibi. Yapılan basittir: kreatif süreç bölünmeden çalışmaya devam etmek istenmektedir. Bu sırada soruyu soran kişi doğal olarak programcıların zor iletişim kurulan kişiler olduğunu düşünecektir. Oysa programcının beyni hız kesmemeye çalışmaktan başka bir şey yapmamaktadır.

Programcılar çoğu zaman konuşmayı pek sevmeyen ve zor iletişim kuran kişiler olarak bilinmektedir. Bu yanlış inancın temelinde, programcıların konsantre olma yetenekleri ve bölünmelere karşı geliştirdikleri iletişim "önlemleri" yatmaktadır. Oysa yazılım geliştirme ekipleri oldukça konuşkan olabilirler. Fark konuşulan konularda yatmaktadır... "Windows mu iyidir, Linux mu?" tartışmalarını dinleseniz programcıların az iletişim kurdukları konusundaki fikirleriniz tam tersi yönde değişecektir.

Eğer bölündüğü sırada programcı soruyu tam olarak algılayıp doğru bir cevap vermeye çalışırsa, soru "bağlam" dışı ise kreatif sürecin durması gerekmektedir. Duran bu akışın yeniden eski kaldığı noktaya geri dönebilmesi, kişiye çok bağlı olmakla beraber, on beş dakikaya kadar çıkabilmektedir. Konsantre olma yeteneği yüksek olan programcılar bölünen bu süreci daha hızlı bir sürede eski noktaya getirebilmektedir.

Programcılık sırasında beynin bu çalışma stilinin anlaşılması programlama ortamlarının ne kadar özenle seçilmesi gerektiği konusunda önemli ipuçları sağlamaktadır. Programcıların bu bölünmelerden korunması gereklidir. Daha da önemlisi programcıların kendilerini bu bölünmelerden korumaları gerekmektedir. Csikszentmihalyi ve ekibin yaptığı çalışmalar bu derin çalışma sürecinin ne kadar kırılgan olduğunu ve izolasyona ihtiyaç duyduğunu açığa çıkarmaktadır.

Kanımca bir çok yazılım hatası (bug) bu bölünmeler sırasında ortaya çıkmaktadır. Televizyonda bir motor yağı reklamını izlediğimi hatırlıyorum. Reklamda "motorısınıncaya kadar olan sürede aşınır yıpranır oysa bu motor yağı mıknatıs özelliklerine sahiptir ve motor çeperine yapışık kalarak ısınma sırasında bile motorun yıpranmasını önler" diyordu. Bu reklamda anlatılan olayı programcılıkta çok gördüğümüzü düşünüyorum. Yeteri kadar ısınmadan, soğuk bir "beyinle" yapılmaya başlanılan programcılık sonucunda oldukça "hatalı (bogus)" kodlar üretildiğini düşünüyorum.

Meslek hayatımda karşılaştığım binlerce yazılım hatasını masaya yatırdığımda bu tür hatalarla karşılaştığımı görüyorum. Hataların bu kreatif sürecin hangi aşamasındayazılmış olabileceğini tahmin etmeye çalışıyorum. Bir programcı bölünme ile karşılaştığı zaman -üstelik bu bölünme bir SMS mesajı yazmak gibi zor ve zahmetli olup, beyni oldukça uğraştıran cinsten ise- programlama sürecinin beyinde eski aktivite düzeyine yükselmesi çoğu zaman yaklaşık 15 dakika sürecektir. Bu süreç sırasında hatasız bir kod üretimi için programcının kritik bir kod yazmaması gereklidir. Konsantrasyonun tam sağlanamayacağı bu ısınma dönemi, unutulan kontroller, atlanan olasılıklar ve hiç kodlanmayan program akış dallarına neden olacaktır.

Çağımızda bu bölünmelerin başlıca sebepleri cep telefonları, gelen SMS mesajları ve Instant Messaging programlarıdır. Bölünmemek için iletişimsizliğe ihtiyacımız varken çağımız bir iletişim çağı olmuştur. Watts Humprey, Software Engineering Institute tabanlı Personal Software Process'in (Kişisel Yazılım Süreci - PSP) geliştiricilerinden birisidir. Kendisi uzun yıllar IBM'de çalışmış, OS390 projesinde yer almış ve yazılımgeliştirmenin önemli duayenlerinden birisi olmuştur. PSP bir programcının iyi program yazması konusunda kendini nasıl geliştireceğinin ana hatlarını çizer. Humprey'in PSP'yi anlattığı "Introduction to PSP" kitabını aldığımda şaşırdığım bir konu olmuştu. Kitabın ilk bölümlerinin zaman yönetimi ve bu bölünmelere karşı mücadele olduğunu görüp şaşırmıştım. Humprey, programcıları bu bölünmelerle mücadele konusunda bilinçlendirmeye çalışıyordu.

Yazılım geliştirme sürecinin tam verimiyle çalışması için bu sürecin korunmaya ihtiyacı olduğu çok açık. Bir programcının etrafında oturanlar, yöneticileri, ona SMS gönderenler bu sürecin geç cevap alacaklarının farkında olmalıdır. Böyle bir zihinsel durumdaki yazılım geliştirmeciyle olan iletişim senkron (eş zamanlı) değil asenkron (farklı zamanlarda) olmalıdır. Şu sıralar programcılıkta popüler olan yeni bir akım var. Entegre edilen sistemlerin birbirleriyle senkron bağlantılar yerine "loosely coupled" (gevşek eşleştirme) dediğimiz asenkron yöntemlerle bağlanması. Sanırım "akış" anını yakalamış bir programcı ile iletişimin de en sağlıklısı "loosely coupled" türden olacaktır.

Özkan Erener