Google Analytics İzleme

27 Ağustos 2010

Entegrasyon Değil Konsolidasyon

Bugün işletmelerin en önemli problemlerinden biri bilgi teknolojilerini daha iyi ve daha etkin yönetim yapacak şekilde kullanmak. Artık bilgi teknolojileri kullanmadan işleri sürdürmek imkansız hale geldi. Diğer yandan teknoloji rekabetçi bir güç olarak rakiplerin önüne geçmeyi sağlayan faktörlerin başında. Ancak mevcut yerleşik anlayışlarla hareket edildiğinde iş gerçekten zor. Sebebi karmaşıklaşmış bilgi teknolojileri...


Mesela; tipik bir işletmeyi ele alalım. Bu işletmenin ihtiyaçlarını birlikte sıralayalım. Bu ihtiyaçları öncelikle donanım ve yazılım olarak 2 kategoriye bölebiliriz.

Bu işletmenin 7 gün 24 saat sürekli on-line, on-time bir ağa ihtiyacı var. Bu switchler, modemler, hublar demek. Bu ağ üzerinde koşan sunucular, yedekleme sistemleri, güvenlik duvarları gibi diğer fiziksel altyapıların da uyum içinde kesintisiz çalışması gerekli.

Bu fiziksel altyapının üstünde işletim sistemleri, veritabanları, güvenlik uygulamaları gibi altyapı yazılımları çalışır. Buraya kadar anlattığım şeyler size karmaşık geliyorsa henüz karmaşayı dinlemediniz. Şimdi işi biraz daha karmaşık hale getiren diğer problem alanlarına değineyim.

Şimdi size iş dünyasının problemlerini çözmek için ortaya çıkmış karmaşık ve eklektik iş yazılımlarından bahsedeyim. Her işletme bir ticari-mali sistem yazılımına ihtiyaç duyar. Bu ihtiyaç bir adım daha ileri götürüldüğünde ERP yani Kurumsal Kaynak Planlama uygulaması adını alır. ERP ile daha etkin üretim, stok ve finans yönetimi amaçlanır. Ancak ERP' ler yaygın ve yanıltıcı iddiaların aksine bir işletmenin tüm iş ihtiyaçlarını karşılamazlar.

Sözgelimi Müşteri İlişkileri Yönetimi yani bilinen adıyla CRM uygulamaları ERP' nin önüne gelir çünkü ERP' ler genelde süreçlere sipariş ile başlarlar. Oysa işletmeler siparişten önce teklif, tekliften önce fırsat, fırsattan önce lead yani potansiyel ondan önce kampanya yönetimi ve diğer pazarlama araçlarına ihtiyaç duyarlar. İşletmelerin can suyu satıştır. Satışı geliştirmek isteyen her işletme doğal olarak CRM' e ihtiyaç duyar.

ERP+CRM maalesef yeterli olmaz

Satış sonrası hizmet gerektiren, garanti takibi yapan, bakım-destek hizmetleri veren işletmelerde tipik bir CRM de yeterli olmaz çünkü Servis Yönetimi doğal olarak yedek parça, seri numaraları, seri sonları, servis hizmet ve kalemlerinin faturalanması problemlerini doğurur ki; bu bilgilerin çoğu da ERP içindedir. Ayrıca Satış Gücü Yönetimi genellikle CRM' lerin içinde yer alır. Ancak satış gücü demek iş gücü, insan gücü anlamına gelir ki, bu durum kaçınılmaz olarak yetenekli bir HR yani İnsan Kaynakları yazılımına ihtiyaç doğurur. ERP' lerde olan İK uygulamaları bordro sisteminden öteye çoğunlukla geçmediğinden işe alım, planlama, performans yönetimi gibi alanlar açıkta kalır.

İK yazılımlarında ise eğitim yönetim sistemi güdüktür. Üstelik sadece çalışanlara eğitim vermek yetmez; iş ortaklarının eğitim ihtiyaçlarını da karşılamak lazım gelir. İyi bir LMS yani eğitim yönetim sistemi işletmenin kollektif IQ' sünü yükseltir. Video ve sesle zenginleştirilmiş içerikler, sınavlar, müfredat vs. Şimdiden söyleyeyim; açıkta kalan her alanda imdada Excel yetişir. Ama zengin medya uygulamaları hariç.

Bazı işletmelerde ise iç kaynaklarla sürekli ek yazılımlar ve yamalar yapılmaya çalışılır. Bu çok daha büyük tehlike anlamına gelir. İhtiyaçlar hiç bitmez. Keşke ihtiyaçlar bu seviyede kalsa…

Bu arada işletmede bir sürü otomobil, kamyonet gibi araç, bilgisayarlar, makineler, klimalar, mobilyalar gibi fiziki varlıkların artık sistemli bir biçimde takip edilmesi, zimmetlenmesi ve harcamalarının kontrol altına alınması bakımlarının yapılması, sigortalarının hatırlatılması gerektiği ortaya çıkar. Her derde deva ERP içindeki Sabit Kıymetler modülünün bu iş için uygun olmadığı gerçeğini ortaya çıkarır. O vakit; Fiziki Varlık ve Bakım Yönetimi yazılımı almanın zamanı geldiğine karar verilir. Bu fiziki Varlık Yönetim Sistemi ERP ve HR ile senkronize edilmezse mükerrer işlemlerden yorgunluk olur, verim düşer. Size bu uygulamayı satan tedarikçiniz entegrasyonun kolay olduğunu size söylemiştir. Evet, teoride kolaydır. Pratikte ise “şeytan ayrıntılarda gizlidir.”

Şimdi elimizde ERP, CRM, HR, LMS, Servis Yönetimi ve Fiziki Varlık Yönetimi var. Bu arada bahse konu bu sistemler ile mail sisteminizi birleştirmek için teker teker uğraşılmıştır. Mail sistemiyle birlikte işletmeniz için bir merkezi network ajandanın iyi olacağı düşünüldüğünden bir calender/takvim uygulaması ile başlayan hikaye giderek bir Proje ve Görev Yönetimi, ardından çalışanlarınızın işte geçirdikleri vakti anlamaya yarayan zaman yönetimi sorununu tetikler. Yaşasın, X marka proje yazılımınız hayırlı olsun. Fakat inşaat işlerinizi, mağaza açılışınızı, kurumsal gelişim projelerinizi yöneteceğiniz proje yazılımınızda küçük bir sorununuz var. Zaman, kaynak, aktivite bağlamında stok, insan kaynakları, finans ve operasyonlarla bütünleştiremediğiniz bir proje yazılımı ancak size planları verir. Gerçekleşeni vermez. Örneğin; proje bazında karlılık nedir, maliyet nedir, bu projeden dolayı kime ne borcumuz var, sorularının gerçek cevabı içinde yoktur.

İşletme içinde genç çalışanlar “Herkesin intraneti var niye bizim yok” demeye başladığında yeni bir masrafa hazırlanın. İntranetlerde çalışanlar self-servis izin talebi girer, iç yazışmalar yapar, forumlarda tartışır, işletme kuralları anlatılır, yardım masası olur, elektronik belgeler paylaşılır. Çağdaş işletmelerde intranet’ ler kurumsal hafıza anlamına gelir, diğer yandan Knowledge Base Managemet denilen bilgi yönetimi de bu işin bir parçasıdır. Doğal olarak intranet bir İnternet türevi olduğu için bir kurum içi web sayfası tadında gözükür. İster intranet olsun ister kurumsal web sitesi tüm bu işleri yapmak temelde CMS yani içerik yönetim sistemleri ile mümkündür. Şanslıysanız intranetinizi kurmadan önceki satın aldığınız uygulamalar da web tabanlıdır çünkü web teknolojileri bilgi yaymanın ve toplamanın şu an için bilinen en iyi yoludur. Eğer intranetiniz yoksa muhtemelen file server yani dosya sunucu kullanarak herkesin erişebildiği bir sunucuda, bir dizinde klasörleme yaparak bilgileri paylaşmaya gayret ediyorsunuzdur. Burada da önemli bir sorun var. Uzak ofislerinizin bu klasörlere erişmesi ve paylaşım zorluklar içerir. Hayat zordur...

Bu meyanda  size signle-sign on parantezi açayım. Örneğin; bu kadar sisteme kullanıcı açmak sistem yöneticilerine zul gelmeye başlar. Bu durumda LDAP veya onun bir türevi olan Active Directory teknolojisi imdada yetişir. Ana amaç şudur; bir kullanıcı bilgisayarını açtığında kullanıcı adını ve şifresini girdiğinde masaüstünde neler görüneceği dahil yetki verilmiş tüm uygulamalara single-sign on yani tek şifre girişiyle her işlemi gerçekleştirmek. Unutmayın ki bu da bir iştir ve çoğunlukla lokal networkler için geçerlidir. Geniş coğrafyalarda oluşturulmuş VPN denen özel sanal ağlarda bu iş karışık bir meseledir.

Parantezi kapatıp tekrar CMS' e döneyim. Eğer CMS yoksa dışa dönük web siteleri yani extranet ve İnternet siteleri kurmak imkansızdır. Ancak bir işletmenin bayii-servis-tedarikçi-kurumsal müşteri gibi iş ortakları için yapmayı düşündüğü B2B veya B2C sitesi kurmak için ise tek başına CMS – İçerik Yönetim Sistemi maalesef yetmez. Çünkü bu gibi extranetlerde ürün bilgisi, fiyat, stok, cari hesap bilgisi, şikayet, sipariş vb. birçok arka ofis uygulamasında oluşturulmuş bilgilerin paylaşılması veya girilmesi zarureti oluşur. Ayrıca online satış, tahsilat, sevkiyat takip gibi diğer 3. parti kurumlarla web tabanlı etkileşim gerekir. Genellikle işletmeler bu işi yaptırmak üzere bir web şirketine başvurur. Uzun, yorucu ve arka ofislerle bütünleşik olmayan web sitelerinizin sorunlarını yönetmeye hazır olun. Rastladığınız tüm reklamlar mutluluk vaad ediyordu ama siz acı çekiyorsunuz. Bedel ödemeye devam edin. Mutluluk bulutların ötesinde...

Lütfen bu kadar çok yazılımın, mantığın ve mimarinin olduğu yerde bunları entegre etmeye çalışmayın. Bu sizin için imkansızdır ama size BPM ve BI diye iki kategoride yazılım önerilecektir. BPM – İş Süreçleri Yönetimi veya İş Akışlarını Düzenleyen uygulamalardır. Bu uygulamalar tek başlarına hiçbir işe yaramazlar. Örneğin; ERP fonksiyonları üzerinde bir iş akışı düzenlemek ERP ile BPM arasında mükemmel uyumluluğu zorunlu kılar. Diğer yandan yaşam değişir, iş pratikleri değişir ve iş akışları asla mükemmel olamazlar. Mükemmel iş akışı veya süreç tasarımı daha çok danışmanların uydurduğu bir fenomendir. Siz “kabul edilebilir kalite seviyesi ve sürekli tedrici iyileşme” yaklaşımını benimsemelisiniz.

BI yani Business Intelligence yani iş zekası uygulamaları da temelde raporlama sistemleridir. Elimizdeki ERP, CRM, HR, PAM, Servis, Proje, LMS, CMS, intranet, B2B, B2C ve diğer ek yazılımlarda oluşan bilgiler birbirinden kopuk bilgi adacıkları oluşturur. Bu bilgileri konsolide etmek, burada analitik raporlar ve tahminler geliştirmek teorik olarak kolay görülür. Gerçekten de öyledir. Demin saydığım yazılımların hepsinin altında çalışan bir veritabanı vardır. İlişkisel veritabanlarında SQL yani yapısal sorgulama dili adı verilen bir endüstri standardı vardır. SQL bilen herkes bu uygulamaların veritabanlarına bağlanarak istediği sorguyu çalıştırır, raporu alır. Yalnız tek bir şartı var bu işin. Bu veritabanlarının içinde hangi verinin hangi alanda tutulduğunu bilmiyorsanız samanlıkta iğne ararsınız...

Bu karmaşa ile başa çıkmanız imkansızdır. Bu karmaşayı alt edebilirsiniz ama çok para harcarsınız. Büyük paralar harcayıp bu kadar çok yazılım satın almışsanız muhtemelen yakında tüm bu sistemleri çöpe atacağınıza bahse girerim.

Size kullanımı kolay, yürürlüğe alması kolay, sürdürülmesi kolay yeni nesil bütünleşik bir iş uygulaması lazım.

Ömer TURHAN
Workcube E-iş Sistemleri Yönetim Kurulu Başkanı

Alıntı: http://www.bilisimdergi.com/Entegrasyon-Degil-Konsolidasyon-7-2.html


Asp.net Eval Kullanım Örnekleri


Örnek kullanım:
 <%# BirSeylerYap(Eval("deger")) %> 
private string BirSeylerYap(string Deger)
{
if (Deger.Equals("bune"))
return "beyaz";
else
return "siyah";
}
Kullanışlı bir örnek.
 <%#Eval("deger").Equals("bune") ? "beyaz" : "siyah"%>
Object türünden.
 <%#Eval("deger") ?? "beyaz"%>
if..else..else if gibi ise.
             <%#Eval("deger").Equals("A") ? "beyaz" : 
Eval("deger").Equals("B")? "siyah":
Eval("deger").Equals("C") ? "yesil":
"sari"%>


Kaynak:



ASP.NET DropDownList seçeneği kod ile seçme

SelectedIndex ile seçme:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Mahesh"))

veya

Seçenekler içinde dolaşarak seçme:

Private Function SelectCurrentQuarterAndYear(ByVal stringToSelect As String)
        DropDownList1.ClearSelection()
        For Each item As ListItem In DropDownList1.Items
            If item.Text = stringToSelect Then
                item.Selected = True
                Exit For
            End If
        Next
End Function

Kaynak:

25 Ağustos 2010

İşyerinde stresi nasıl azaltabilirsiniz?

Yaptığı iş ne olursa olsun işyerinde herkes mutlaka stres yaşıyor. İşin son teslim tarihleri, ödeme günleri, iş akışı ve diğer baskılar gün boyu beyninizde birikiyor ve strese yol açıyor. Bu nedenle verimli çalışabilmek için zihninizi stresten arındırmalısınız.

Ehow isimli internet sitesinde yer alan habere göre, işte çalışırken iş stresinden kurtulmanın yolları:

1. Her zaman stresi teşhis edin: Bu çok basit gibi görünse de bazen stresli olup olmadığınızı kendinize sormanız gerekebilir. Stresli olduğunuzdan emin olduktan sonra stresin üstesinden gelebilirsiniz.

2. 5 dakika yürüyüş yapın. Koltuğunuzdan kalkın ve odanızın ya da ofisinizin etrafında yürüyüş yapın. Böylece kan akışınız düzene girer, bacak ve sırt kaslarınız gevşer.

3. İpod'unuzu çıkarın. Bazı şirketler çalışırken iPod dinlenmesine izin vermese de 3 dakika uzunluğunda bir şarkı tam gün süren bir ferahlama hissi verebilir. iPod'unuzu işe ara verdiğiniz zaman dinleyin ya da çalışırken dinlemek için bilgisayarınıza kulaklık takın.

4. Bir resme bakın. Özel bir yerin ya da kişinin resmine bakmak sizi uzaklara götürür, iş stresinizi hafifletir. Bu nedenle masanızda ya da bilgisayarınızın ekranında sevdiğiniz birinin ya da en sevdiğiniz bir yerin resmini bulundurun.

5. Ofiste yakın arkadaş edinin. Öğle yemeği molasında tek başına olmak yerine arkadaşınızla yemek yediğinizde yaşadığınız stresi konuşarak ferahlayabilirsiniz. Arkadaşınızla kaygılarınızı paylaşabilir ya da arkadaşınızın anlattıklarını dinleyerek kafanızı dağıtabilirsiniz.


jQuery geliştiricilerine ExtJs'ye geçiş için başlangıç klavuzu

I've seen many people (including myself) trying out the power of jQuery for once and then getting stuck with it. Why not? It's one of the coolest and smartest JavaScript library out there. However, I have broken out from the circle and found that Extjs is another great mentor in the field of JavaScript libraries. Especially, I think it's UI components are unbeatable (Dojo can be a nearest candidate).
If you are habituated to think JavaScript coding in the syntax of jQuery, you can start working with ExtJS right now (with a few twist)!  What you need is some little tuning in concept and syntax. Today I will be trying to explain how to do this in 6 important points :
  1. Document is ready – How to get the our document ready and where to start.
  2. Selecting elements – How to select elements in Ext.
  3. Dom scripting – Changing on and in the element.
  4. Ext events – Assigning and firing events.
  5. Ext Components – The powerful alternate of jQuery UI.
  6. Ajax – Making Ajax request in Ext.
Ok, let's dive in to deep of each of these points.

Document is ready

First of all, you need to download, extract and set up the page for using Ext. Remember to download the API Documentation as well.
Now, here is how we setup jQuery and register a ready event for the document in jQuery:
<script type="text/javascript">
$(document).ready(function() {
// do stuff when DOM is ready
});
</script>
To do the same thing in Ext, you have to include default ext css, an adapter and the Ext itself. See the difference at the point of $(document).ready(). When the DOM is ready, Ext fires the Ext.onReady() event.
<script type="text/javascript">
Ext.onReady(function() {
// do stuff when DOM is ready
});
</script>

Selecting elements

To take any action, you have to select the element first. In jQuery, simply $('css-selector') does everything. It works for a single element by ID, some elements by tag name/class or any complex selection with virtual selectors. But in Extjs, two different methods are used for selecting a single element by ID and other combined multiple element.
Selecting by id in Extjs is done by Ext.get() method. Here is an example of selecting an element and performing some action on it.
// Selecting by ID in jQuery
var myDiv = $("#element-id");

// Selecting by ID in Extjs
var myDiv = Ext.get('element-id');

// Perform some action on it
// Add a class
myDiv.addClass('my-class');
// Set the width 100 px, 
// true is for applying default animation on change
myDiv.setWidth(100, true);
// Retrive some information of the element
// Get the elements box info as object {x, y, width, height}
var box = myDiv.getBox();
See the Ext.Element class in API Doc to know what more actions you can perform on an element.
On other hand, Ext.select() method is used to select other CSS selection. Here is an example:
// Select elements with CSS Selector
var imgs = Ext.select("#my-div div.member img");
// or select directly from an existing element
var members = Ext.get('my-div');
var imgs = members.select('div.member img');

// Now, any Ext.Element actions can be performed on all the elements in this collection
Please note these points about selected Ext elements:
  • Ext.get() returns Ext.Element object and Ext.select() returns Ext.CompositeElement object.
  • All Ext.Element actions can be performed on Ext.CompositeElement object
  • The actions performed on DOM nodes can be chained.
  • Ext.select() uses the powerful DomQuery class for selecting. See this class for using virtual selectors and more.

Dom scripting

Like jQuery, ext has easy methods for perform insertion, deletion,  moving, copying etc on selected element(s). Ext.Element class has functions for performing common tasks.
var el1 = Ext.get("my-1st-div");
var el2 = Ext.get("my-2nd-div");

// Appending elements
el1.appendChild("<p>A new paragraph</p>").appendTo(el2) 

// Replcing, removing
var el3 = Ext.get("my-3rd-div");
Ext.get("my-4th-div").replace(el3).insertAfter(el2);

el2.remove()
See the Ext.Element class for more functions like these. To extending the power of DOM scripting,  see the Ext.DomHelper class.

Ext events

First the easiest example. See how we do in jQuery and how to do in Ext.
// Binding an event in jQuery 
$(".btn").click(function() {
// Do something on button click
});

// Binding an event in Extjs
Ext.select('.btn').on('click', function() {
// Do something on button click
});
So, instate of binding with functions with event name, we will bind with Element.on() function of Ext.Element class. The 1st parameter of Element.on() is the event name and the 2nd is a function name or an anonymous function.
See the Ext.EventManager and  Ext.EventObject classes for complex event handling.

Ext Components

Ext has dozens of extensive UI Components. All they are extended from Ext.Component class. There are BoxComponent, Button, ColorPalette, DataView, DatePicker, Editor, ProgressBar, Slider, TabPanel, Tree, many kinds of Grids, Toolbars, Menus, Form components and much more. Each of this components needs separate tutorials to learn. So, I am not going to describe it in this little scope. See this page for component specific tutorials.
http://extjs.com/learn/Tutorials

Ajax

Ajax requests are handled in Ext.Ajax class. Sending basic Ajax request in Extjs is very similar to jQuery-
// Basic request in jQuery
$.ajax({
type: "POST",
url: "myurl.php",
data: { foo: 'bar' },
success: function(msg){
alert( "Data Saved: " + msg );
}
});
// Basic request in Ext
Ext.Ajax.request({
url: 'myurl.php',
params: { foo: 'bar' },
success: function(msg){
alert( "Data Saved: " + msg );
}
});
Like the jQuery load function, here is also similar function exist in Ext.Element to insert Ajax response directly into DOM.
// Load Ajax response in directly in jQuery
var msgBox = $('#message');
msgBox.load('myurl.php', {name : $('#name').val()} );

// Load Ajax response in directly in Ext
var msgBox = Ext.get('message');
msgBox.load({
url: 'myurl.php',
params: 'name=' + Ext.get('name').dom.value,
});
See the Ext.Ajax class for more featured Ajax functions of Extjs.
Before ending, here is a surprise for you. Though you cannot leave jQuery for a moment, you are not going to miss the power of Ext. These tutorials describe how to use Ext with jQuery -
http://docs.jquery.com/Tutorials:Using_Ext_With_jQuery.
http://filchiprogrammer.wordpress.com/2007/12/27/combination-of-ext-and-jquery/
http://blog.jquery.com/2007/02/19/jquery-and-jack-slocums-ext/
See you soon.
Kaynak:
http://www.ajaxray.com/blog/2009/04/05/extjs-quick-start-guide-for-jquery-developers-javascript-howto/

Visual studio 2008 'de Son Projeler bölümünde düzenleme ve silme yapma

Bunun için windows registry'ı kullanarak yapabiliyoruz.

Ever wanted to remove an item from the recent projects menu on the start page of Visual Studio?

The list is stored in the registry under:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\ProjectMRUList

Here, you will find a list like this:

File1 Reg_Expand_Sx Path

File2 Reg_Expand_Sx Path

File3 Reg_Expand_Sx Path

File4 Reg_Expand_Sx Path

You just need to delete the items you don't want.  Note: If you delete item 2 you will need to rename item 3 and 4 so there are no gaps in the naming. (3 becomes 2, 4 becomes 3).

Another way is just to wait until you have opened more projects.  Also, if you delete the project solution and try and open it, Visual Studio will display a dialog asking if you want to remove it from the list.

Kaynak:

http://blog.benhall.me.uk/2007/08/remove-recent-projects-from-visual.html

http://www.igregor.net/post/2009/01/30/How-to-Manage-and-Remove-Recent-Projects-in-Visual-Studio.aspx






Visual Studio sürümlerinin özellik farklılıkları



Not: Görüntünün büyük hali için resme tıklayın

24 Ağustos 2010

Çalışanlar, 90 dakikadan fazlasını yolda geçiriyor

Regus'un yaptığı ankete göre Türkiye'de 7 çalışandan 1'i her gün 90 dakikadan fazla bir zamanı yolda geçiriyor. Ayrıca, çalışanlar yıllık kazançlarının yüzde 5'ini ulaşım masraflarına harcıyorlar.

Regus'un internet üzerinden yaptırdığı ankete göre, çalışanlar için işe gidiş gelişlerde trafikte kaybedilen zaman ve mesafenin uzak olmasının, esnek çalışma uygulamalarındaki ilerlemelere rağmen hala bir sorun olarak ortaya çıktığı belirlendi. Ankette, Türkiye'de çalışanların yüzde 15'inin her gün işlerine gelip giderken 90 dakika harcadığı, dünya genelinde ise bu oran yüzde 20 olduğu kaydedildi. Ankette, çalışanlar için işe gidiş gelişlerde kullanılan araçlar arasında en popüler aracın yüzde 64'lük bir oranla araba olduğu tespit edildi. Ankette, dünya genelinde çalışanların yüzde 7'sinin işyerlerine gidiş ve gelişlerde maaşlarının yüzde 10'unu ya da daha fazlasını ulaşım masraflarına harcadıkları belirlendi. Ankette Türkiye'de ise bu oranın yıllık maaşın yüzde 5'i kadar kaydedildi.

-İŞE GİDENLERİN YÜZDE 76'SI KENDİ ARABASINI TERCİH EDİYOR-

Regus'un, Orta/Doğu Avrupa ve Balkanlardan Sorumlu Başkan Yardımcısı Garry Gürtler, "İşe gidiş ve gelişlerde kaybedilen zamanın personel işgücü, sağlığı ve moraline verebileceği zararlı etkileri durdurabilmek için, anlayışlı şirketler çalışma uygulamalarında daha esnek davranmakta ve çalışanlarının evlerine daha yakın çalışabilmeleri için iş yeri çözümleri aramaktadırlar. Yaptırdığımız anketten çıkan bir sonuca göre, Türkiye'de işe gidiş gelişlerde araba kullanımı yüzde 76'yla ortalamanın çok üzerindedir. Diğer ulaşım araçları da sırasıyla yüzde 6 ile belediye otobüsleri ve yüzde 5 ile taksiler olarak ortaya çıkmaktadır. Türkiye'de en az popüler olan ulaşım yolu yüzde 1'den az bir oranla tren olarak gözükmektedir" ifadelerini kullandı. Gürtler, ulaşımında yaşanan bu zaman kaybının aynı zamanda çalışanlara bir stres yüklediğini, bunun da yüksek kan basıncından, kas-iskelet hastalıklarına ve düşünsel performans üzerindeki olumsuz etkilere kadar bir dizi işgücü kaybı yaratan olumsuzluklara neden olduğuna da dikkat çekti.

Alıntı


23 Ağustos 2010

Yazılımda Mükemmel Olmak

Merhaba arkadaşlar bu yazımda bir çok yazılımcının kafasını kurcaladığına emin olduğum bir konu ; mükemmeliyetcilik konusunda bir kaç satır karalamak istiyorum.
Öncelikle mükemmel olmak ne demektir : Kusursuz olmak , her şeyin ile ideal kişi olmak , en çok para kazanan insan olmak , en iyi kariyere sahip insan olmak , herşeyi düzenli olan bir insan olmak , zamanı en etkili kullanabilen kişi olmak. .

Esasında mükemmel olmak göreceli bir kavramdır ve kişiden kişiye değişir. Ancak bana sorarsanız mükemmel olmak diye bir şey insan için bana pek de inandırıcı gelmiyor. Bir özelliği iyi olan birisinin diğer özelliği kötü olabiliyor.

Bu bir telefon , bilgisayar alırken de böyle değilmi dir. İstemiş olduğunuz özelliklerden mutlaka bir tanesi eksiktir. Ya şarjı az gider , ya kamerası kötüdür vs.vs.

Bu yazılımcı içinde böyle her konuda mükemmel olacak uzman olacak diye bir şeyden bahsetmemiz pek de olası değil. Mutlaka belli konularda eksiklerimiz olacaktır. C# biliyorsunuzdur çok iyi ancak Java bilmiyorsunuzdur. Oracle biliyorsunuzdur sql bilmiyorsunuzdur.ASP.NET biliyorsunuzdur Silverlight bilmiyorsunuzdur. Veya şöyle diyelim bir problem çıktığında yazılımcı kısa bir sürede problemi çözüyor ancak en iyi çözüm yolu ile çözemiyor.

Kendimden örnek verecek olursam google'a çok defalar yazılımda mükemmel olmaklı alakalı sorular sordum. Forumlarda aradım ama Cem Yılmazın da dediği gibi Hepsi İçimizde :) Akışına bırakıp , çok okuyarak , çok projede bulunarak gerekli tecrübeleri elde edebileceğimi biliyorum ancak hiç bir zaman tatmin olmayacağımdan da eminim

Bazılarına göre en iyi çözüm yolu en hızlı olan çözüm yoludur. Ancak bu çözüm ilerde geliştirilmeyecekse. Geliştirilip değiştirilecek bir kod parçası ise mutlaka değişimlere ve gelişimlere açık esnek yani en iyi çözümü uygulamak daha doğru olacaktır.

 

En iyi çözüm , en iyi tasarım da projeye , ortam şartlarına göre değişir zaten bu da sezgisel olarak ortaya çıkar. İlerde minimum refactoring yapmak ideal olanıdır.

Burada çok da nasıl en iyiyi buluruz konusunda detaylara inmeyeceğim. Ancak bulduğum birkaç linki sizinle paylaşmak istiyorum.

http://www.kodaman.org/yazi/daha-iyi-yazilim-gelistiricisi-olmak
http://www.serdardemir.net/daha-iyi-yazilim-gelistiricisi-olmak-icin-ipuclari-nedir.html
http://turkce.focusoncode.com/programlama-hastaliklari-i-mukemmeliyetci-kod-yazimi/
http://www.fussilet.com/mukemmeliyetcilik-sagliga-zararli-t20681.0.html

1-
Kitap Okuyun
2-Listelere Üye Olun
3-Açık Kaynak Araçları Kullanmayı Öğrenin
4-Sürüm ve Konfigürasyon Yönetimi Konusunda Bilgilenin
5-Bir Bilene Sorun
6-Seminerlere Katılın
7-Yeni İnsanlarla Tanışın
8-Blog Yazın/Okuyun
9-Refactoring Nedir Öğrenin
10-İnsan İlişkilerini Sıcak Tutun
11-Değişime ve Yenilenmeye Açık Olun
12-Firma Kültürünü Öğrenin
13-Kişisel Bilgisayarınıza Yazılım Araçlarını Kurun
14-Açık Kaynak Projelere Katılın
15-Hayal Kurun
16-Kod Teftişi


Yazılım  geliştirken sürekli daha iyiyi araştıran bulmaya çalışan birisi bu pratiği artık günlük hayatına da ister istemez adapte ediyor. Her konuda en iyi çözümü bulmaya çalışır halde buluveriyor kendisini. Her şeyde mükemmeli aramak gerçekten de insanın psikolojisini bozabilir burada ince bir çizgi var ve bu çizgiyi dengede tutmak gerekir. Sonuçta sağlık hepsinden önemli.

Kaynak: http://koraykirdinli.blogcu.com/yazilimda-mukemmel-olmak/6439418


projeleri .net 1.1'den .net 2.0'a veya .net 3.5'a taşıma

Migration from .NET Framework 1.1

.NET has been around for quite a while. According Wikipedia it has been around since on 3 April 2003
So now there exist applications developed for .NET Framework 1.0 or 1.1 and people
need to migrate them to Framework 2.0 or Framework 3.5.

It is the general impression that there is not a direct path to 3.5.
As Zain Naboulsi explains in his blog you can go from 1.1 to 2.0 then from 2.0 to 3.5.
And From 2.0 to 3.5 the migration is a no-brainer because, both, 3.0 and 3.5 are based on 2.0.

A good reference also is the post of Peter Laudati on migration from 1.1 to 2.0.
Note: Peter's post seem to have a broken link to the microsoft document about breaking changes in 2.0.
The correct link is this.

A more recent post by The Moth provides more links to breaking changes documents:

- Design time Breaking Changes in .NET Framework 2.0
- Runtime Breaking Changes in .NET Framework 2.0
- Microsoft .NET Framework 1.1 and 2.0 Compatibility
- Compatibility Testing Scenarios

Going from 1.1 to 2.0 or 3.5 can be just as simple as opening the solution in VS and compile
or it can take a lot of effort. Web Projects then to be more difficult due to several changes in ASP.NET.

So good luck.

Tools?

Well there a lot of static analyisis tools we have used
(some internal, some from Third Parties. I particulary like Understand and NDepend)


Kaynak: http://blogs.artinsoft.net/mrojas/archive/2009/08/13/migration-from-net-framework-1-1.aspx




21 Ağustos 2010

Görev çubuğundan sistem tepsisine programları simge yapma , TrayIt

TrayIt 4.6.5.5

Görev çubuğunuzda biriken yazılım simgeleri bazen can sıkıcı bir durum olabilir sizin için, bunları tek bir çatı altında toplamak istemezmisiniz, işte TrayIt sayesinde araç çubuğunuzda uzayıp giden yazılım simgelerini tek bir simge altında toplayabilirsiniz. Herhangi bir programın simgesini TrayIt'e aktarmak isterseniz, o programın penceresindeki "simge durumuna getir" çubuğuna basarken CTRL tuşunada basmanız yeterli olacaktır.
  
Önemli Notlar: File / Select Language kısmından Turkish seçilerek Türkçeleştirebilirsiniz



18 Ağustos 2010

Fazla Mesai, Etkili Çalışmak Değildir

İş yoğunluğu, zaman baskısı ve gün geçtikçe daha da azalan özel yaşam... Özellikle bilişimciler büyük bir tehlike altında. Çünkü onlar, bitkin olana kadar çalışıyor ve maalesef sağlıklarına zarar veriyor.

Şirketlerde çalışan kişilerin hastalanma oranları, önceki yıllara göre daha düşük. Birçok şirket çalışanların sağlık durumu ile yakından ilgileniyor. Değişik çözümler üretiliyor. Hatta bazı şirketler, çalışanlarını spora gitmeleri için teşvik ediyor. Yurt dışında buna Work-Life-Balance diyorlar. Oysa bu görüntüye aldanmamak gerek. Çünkü gerçekte durum çok farklı. Buz dağının görünen kısmı hoş görünebilir ama altına bakıldığında tablo bir hayli vahim.

Almaya'da tapılan bir araştırmada (DIWA-IT), IT endüstrisi için çalışan kişilerin sağlık durumlarının kırılma noktasına geldiği ve bu kişilerin her an ciddi derecede rahatsızlanabileceği sonucu ortaya çıktı.

Münih Sosyal Bilimler Enstitüsü ile birlikte yapılan araştırmada, IT endüstrisinde çalışan kişilerle röportajlar yapıldı. Bu kişilerin inanılmaz bir stres içinde çalıştıkları, iş yoğunluğunun çok olduğu, mesai sürelerin fazlalığı ve sürekli erişebilir olma zorunluluğunda oldukları tespit edildi.

Bu konudan en çok etkilenen kesimler, IT danışmanları, sürekli seyahatte olan kişiler ve birden çok proje yöneten insanlar. Toplantılar ve işlerin koordinasyonu çalışanlarda baskıyı yükseltiyor.

Dünyada yaşanan global ekonomik kriz bu durumu daha da kötü yapıyor. İşten çıkarmalar, şirket yapılarının değişimi ve işsizlik korkusu, IT çalışanlarının kendi işlerine yoğunlaşması ile birlikte farklı iş kollarına da bakmalarına neden oluyor.

Yapılan araştırmaya göre işleri yetiştirmek için hafta sonu çalışmak zorunda olan kişiler ve ailelerini bu yüzden hafta sonu göremeyen insanlar, büyük bir hayal kırıklığına ve hüsrana uğruyor. Bu kişilerdeTinnitus (Kulak çınlaması), depresyon ve Burnout (Biz buna sigortaların yanması diyoruz) gibi hastalıklar ortaya çıkıyor.

 


100.000 çalışana sahip olan Fransız Telekomda, 2008'in başından bu yana 35 kişi patronlarının mesai saatlerinin dışında kendilerini araması sebebiyle strese girerek intihar girişiminde bulundu. Bunların arasından 22 kişi hayatını kaybetti.


Birçok bilim adamı bu konu üzerinde çalışıyor. Hatta bazı araştırmalarözellikle IT endüstrisini baz alıyor.

Stres'i azaltmak için yapılan bir çalışma da, bu şikayetleri olan insanlarınrahat konuşmasını sağlamak için ortamlar yaratmak. Bu kişiler proje müdürlerinin de olduğu bir ortamda istediği şikayeti rahatlıkla dile getirebiliyor. Eskiden bu tür oturumlar yapılmazken, iş verimliliğini artırmak için bahsi geçen yöntemler, her geçen gün daha da çok tercih ediliyor.

Çalışanlardan daha yüksek verim alabilmek için mesai sürelerine özellikledikkat edilmeye başlandı. Organizasyon şemaları yeniden çizildi. Öyle ki, hasta olan birinin yerine bakıldığında, iş yoğunluğu sadece bir kişiye aktarılmama kararı alındı. Motivasyonu artırmanın yanı sıra, kişilerin girip rahatlayabileceği sessiz odalar oluşturuldu.

Öğle tatiline denk gelen veya iş saatleri dışındaki toplantılar kabul edilmemeye başlandı. Müdürler, çalışanların kısa süreli dinlenmelerini desteklemeleri için uyarıldı. Yemek saatlerinde herkesin birlikte çıkmasına ve iş dışında halı saha maçı, sinema ve bovling gibi sosyal toplantılara özen gösterildi.

Kişilerin özel hayatları ve sosyal gelişimlerine dikkat edilmeye başlandı.Özellikle evli ve çocuk sahibi insanların, işlerinin özel hayatlarının önüne geçmemesi için çalışmalar yapıldı. Bu kişiler istedikleri zaman evden de çalışabilecek.


Alıntı: SDN


12 Ağustos 2010

document.all veya element.all javascript özelliğinin firefox'da çalışmamasına çözüm

Javascript kodlama yaparken dom(document object model) üzerinde all özelliğinin sadece internet explorer tarafından desteklendiğini öğrendim.
Bu özelliğin firefox alternatifi getElementsByTagName("*") kullanımıdır, bu kullanım hem firefox hem de internet explorer tarafından desteklenmektedir.

Örnek kullanım:

İnternet Explorer için:

for (i=0; i<document.all.length;i++)
{
...
}

Firefox ve İnternet Explorer için:

 var c = document.getElementsByTagName("body")[0].getElementsByTagName("*");
  var outstr="";
  for (var x=0;x<c.length;x++) {
    outstr=outstr+"tagName: "+c[x].tagName+", ";
    if (c[x].id)
      outstr=outstr+"ID: "+c[x].id+", ";
    if (c[x].name)
      outstr=outstr+"Name: "+c[x].name+", ";
    if (c[x].type)
      outstr=outstr+"Type: "+c[x].type+", ";
    outstr=outstr+'\r\n';
    }
  alert(outstr);


--------------------
var elements = document.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
alert(elements[i]);
}

-------------------------