Google Analytics İzleme

22 Mart 2011

How to Validate A CheckBox in ASP.Net 3.5

Here's a solution that I used in a recent website: 

Since the asp:CustomValidator does not accept an asp:CheckBox as the control to validate, the first step is to set it to any other control in the page (e.g. a textbox).

The second step is to write a bit of JavaScript (JQuery) to return the non-checked state of the checkbox to validate. Below, I am showing a JavaScript variable being set, that is for use by the JavaScript method.

<script type="text/javascript">

var controlID1 = '<%= CheckBoxAgree.ClientID %>';

</script>

Here's the JavaScript function you'll need to write:

function IsNotChecked1(obj, args) {

var checkbox = $("#" + controlID1); args.IsValid = checkbox.attr('checked');

}

Here's the code to include in the aspx page:

<asp:CheckBox ID="CheckBoxAgree" runat="server"

Text="I confirm that the above information is accurate to the best of my knowledge and agree to the terms and conditions" />

 

<asp:CustomValidator ID="CustomValidatorAgree" runat="server" ClientValidationFunction='IsNotChecked1'

onservervalidate="CustomValidatorAgree_ServerValidate" ValidationGroup="group1" ControlToValidate="TextBoxTelephone"

ErrorMessage="'I confirm' must be checked" ValidateEmptyText="True" ></asp:CustomValidator>

 

Note that above we are setting the control to validate to any other control in the page.

Since you must also validate on the server side (best practice), here's the C# code:

 

protected void CustomValidatorAgree_ServerValidate(object source, ServerValidateEventArgs args)

{

args.IsValid = (CheckBoxAgree.Checked);

}

Kaynak:
http://forums.asp.net/t/1054253.aspx/1?Checkbox+Validation+Best+Solution
http://tugberkugurlu.com/archive/how-to-validate-a-checkbox-in-asp-net-3-5-checkbox-validation-control-sample-code-in-asp-net-c-sharp-c-sharp-and-visual-basic

20 Mart 2011

Başbakanlık, 'mobbing'e karşı savaş açtı

Başbakan Erdoğan, 'Mobbingin Önlenmesi' başlıklı genelge yayımladı. Buna göre psikolojik tacizle mücadeleyi güçlendirmek üzere Çalışma ve Sosyal Güvenlik İletişim Merkezi, 'Alo 170' üzerinden psikologlar vasıtasıyla çalışanlara destek sağlayacak. Çalışanların uğradığı psikolojik taciz olaylarını incelemek üzere 'Psikolojik Tacizle Mücadele Kurulu' kurulacak.

Başbakanlık, işyerlerindeki psikolojik taciz (mobbing) ile mücadele için harekete geçti. Başbakan Tayyip Erdoğan tarafından 'Mobbingin Önlenmesi' başlıklı genelgesi, dün Resmi Gazete'de yayımlandı. Kamu kurum ve kuruluşları ile özel sektör işyerlerinde gerçekleşen psikolojik tacizin, çalışanların itibarını ve onurunu zedelediğini, verimliliğini azalttığını ve sağlıklarını kaybetmesine neden olarak çalışma hayatını olumsuz etkilediğini ifade eden Erdoğan, "Kasıtlı ve sistematik olarak belirli bir süre çalışanın aşağılanması, küçümsenmesi, dışlanması, kişiliğinin ve saygınlığının zedelenmesi, kötü muameleye tabi tutulması, yıldırılması ve benzeri şekillerde ortaya çıkan psikolojik tacizin önlenmesi, gerek iş sağlığı ve güvenliği gerekse çalışma barışının geliştirilmesi açısından çok önemlidir." değerlendirmesinde bulundu.

Çalışanların psikolojik tacizden korunması amacıyla tedbirler alındığını belirten Başbakan, bu tedbirleri genelgesinde şöyle sıraladı: "İşyerinde psikolojik tacizle mücadele öncelikle işverenin sorumluluğunda olup işverenler çalışanların tacize maruz kalmamaları için gerekli bütün önlemleri alacaktır. Bütün çalışanlar psikolojik taciz olarak değerlendirilebilecek her türlü eylem ve davranışlardan uzak duracaklardır. Toplu iş sözleşmelerine, işyerinde psikolojik taciz vakalarının yaşanmaması için önleyici nitelikte hükümler konulmasına özen gösterilecektir. Psikolojik tacizle mücadeleyi güçlendirmek üzere Çalışma ve Sosyal Güvenlik İletişim Merkezi, Alo 170 üzerinden psikologlar vasıtasıyla çalışanlara yardım ve destek sağlanacaktır. Çalışanların uğradığı psikolojik taciz olaylarını izlemek, değerlendirmek ve önleyici politikalar üretmek üzere Çalışma ve Sosyal Güvenlik Bakanlığı bünyesinde 'Psikolojik Tacizle Mücadele Kurulu' kurulacaktır. Denetim elemanları, psikolojik taciz şikayetlerini titizlikle inceleyip en kısa sürede sonuçlandıracaktır. Çalışma ve Sosyal Güvenlik Bakanlığı, işyerlerinde psikolojik tacize yönelik farkındalık oluşturmak amacıyla eğitim ve bilgilendirme toplantıları ile seminerler düzenleyeceklerdir."


18 Mart 2011

denied on the object 'sp_enable_sql_debug' hatası

Sql server 2008'de Toad For Sql Server ile debug işlemi yaptığımda aşağıdaki gibi bir hata karşıma çıktı:
The EXECUTE permission was denied on the object 'sp_enable_sql_debug', database 'mssqlsystemresource', schema 'sys'.

Sql Server Management Studio 2008 r2 express'de debug yaptığımda ise program çat diye kapanmaktaydı.

Sorunun çözümü ise şudur: 
debug yapmak istediğimiz sql server'da bağlantı için kullandığımız kullanıcı hesabı sql server'da sysadmin sql server rolüne sahip olmalıdır. Kullanıcıyı bu role eklediğnizde sorun düzelecektir.

Kaynak:
msdn dokümanları



06 Mart 2011

SqlException: The parameterized query ## expects the parameter ##, which was not supplied. hatası hakkında

Eğer SqlCommand ile çalışırken böyle bir hata ile karşılaşıyorsanız, problem büyük ihtimalle parametrelerin içerdikleri değerlerden kaynaklanıyordur. Böyle bir durumda parametrelerinizin içerdikleri değerleri kontrol edip, eğer null iseler bunları DBNull.Value ile değiştirmeniz probleminizi çözecektir. Bu iş için kısaca şöyle bir kod yazılabilir.

--

C# ile bir SQL ifadesi içerisine "null" parametre gönderirken hata alabiliriz.. Örneğin :

param.Add("@abc", strAbc == "" ? null : strAbc);

ifadesi çalışmayacaktır ve şöyle bir hata verecektir : Parameterized Query '(@Type nvarchar(2),@GroupType nvarchar(1),@Keyword' expects parameter @Type, which was not supplied.

Bu sorunu çözmek için kodu şöyle düzeltebiliriz.

param.Add("@abc", strAbc == "" ? (object)DBNull.Value : strAbc);


--

Com.Parameters.AddWithValue("@DogumTarihi", System.Data.SqlTypes.SqlDateTime.Null);

--


03 Mart 2011

Asp.net Multiline TextBox'da Max Length Kontrolü


Asp.Net'te uygulama yazan kişiler anlatacağım bu problemle az yada çok karşılaşmışlardır. Kullanıcılardan girdi almak için kullandığımız textbox aracında girdinin uzunluğunu kontrol etmek istiyorsak ve kodla uğraşmak istemiyorsak max length özelliğini kullanırız. Bu kısımda bir problem yok fakat textbox yapısını multiline olarak değiştirdiğimizde maxlength özelliği düzgün çalışmamaktadır. Bunu da kodla uğraşmadan çözmek mümkün. Çeşitli kontroller yapmada kullandığımız validator sınıflarından yararlanacağız. Girdinin düzgünlüğünü kontrol eden RegularExpressionValidator kontrolünü kullancaz. Bu aracın ValidationExpression kısmına örneğin bu  "^([\S\s]{0,10})$" değeri yazdığımızda girdi 10 karakterden fazla ise uyarı mesajı görünecek ve validation group'taki kontrolün çalışmasına izin vermiyecektir. Örnek kod aşağıdadır.

<asp:TextBox ID="deneTextBox" runat="server" Height="80px" TabIndex="0"
                                            TextMode="MultiLine"></asp:TextBox>

<asp:RegularExpressionValidator ID="deneTextBoxRegularExpressionValidator" runat="server"
                                            Display="dynamic" ControlToValidate="deneTextBox" ValidationExpression="^([\S\s]{0,10})$"
                                            ErrorMessage="<p>En fazla 10 karakter</p>">
                                        </asp:RegularExpressionValidator>


Veya şu validationexpression'ları da kullanabilirsiniz:

ValidationExpression="[\w\n\r]{0,1000}"
ValidationExpression="(\s|.){0,1024}"


Kaynaklar:

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ı), SiteMesh, OSCache 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