Category Archives: Genel

SysLog Priority Matrix

Selamlar

TNBT (The next big thing) projemiz için çalışırken syslog mesajlarını parse etme ihtiyacı doğdu. Syslog mesajları UDP üzerinden default olarak 514 portu ile gönderiliyor ve gönderilen mesaj içeriğinde “Priority” alanı bulunuyor. Bu alandan gönderilen mesajın log seviyesini ve tipini bulmak için biraz protokolü araştırdım. Aslında oldukça basit bir protokol ve gönderilen “Priority” alanı genelde mesajın ilk kısmında “<44>” gibi bulunuyor. Burada 44 Priority oluyor ve onun hangi log seviyesi ve tipine karşılık geldiğini aşağıdaki matristen çıkabiliyorsunuz.

Protokolün detayına aşağıdan ulaşabilirsiniz

https://tools.ietf.org/html/rfc5424#section-6.2.1

Protokol detayını incelediğinizde görebileceğiniz gibi çeşitli loglama sistemlerinde yaygın olan aşağıdaki “severity” seviyeleri var.

        Numerical    Severity
             Code

              0       Emergency: system is unusable
              1       Alert: action must be taken immediately
              2       Critical: critical conditions
              3       Error: error conditions
              4       Warning: warning conditions
              5       Notice: normal but significant condition
              6       Informational: informational messages
              7       Debug: debug-level messages

Birde log mesajının tipini belirten facility seviyeleri bulunuyor.

        Numerical           Facility
             Code

              0             kernel messages
              1             user-level messages
              2             mail system
              3             system daemons
              4             security/authorization messages
              5             messages generated internally by syslogd
              6             line printer subsystem
              7             network news subsystem
              8             UUCP subsystem
              9             clock daemon
             10             security/authorization messages
             11             FTP daemon
             12             NTP subsystem
             13             log audit
             14             log alert
             15             clock daemon (note 2)
             16             local use 0  (local0)
             17             local use 1  (local1)
             18             local use 2  (local2)
             19             local use 3  (local3)
             20             local use 4  (local4)
             21             local use 5  (local5)
             22             local use 6  (local6)
             23             local use 7  (local7)

syslog

Yukarıda bahsedildiği gibi

Priority = Facility * 8 + Severity

şeklinde bulunuyor.

Bu formüle göre tüm matrisi hesaplarsak aşağıdaki gibi bir matris ortaya çıkıyor.

            emergency      alert   critical   error   warning   notice   info   debug
kernel              0       1          2       3         4        5      6       7
user                8       9         10      11        12       13     14      15
mail               16      17         18      19        20       21     22      23
system             24      25         26      27        28       29     30      31
security           32      33         34      35        36       37     38      39
syslog             40      41         42      43        44       45     46      47
lpd                48      49         50      51        52       53     54      55
nntp               56      57         58      59        60       61     62      63
uucp               64      65         66      67        68       69     70      71
time               72      73         74      75        76       77     78      79
security           80      81         82      83        84       85     86      87
ftpd               88      89         90      91        92       93     94      95
ntpd               96      97         98      99       100      101    102     103
logaudit          104     105        106     107       108      109    110     111
logalert          112     113        114     115       116      117    118     119
clock             120     121        122     123       124      125    126     127
local0            128     129        130     131       132      133    134     135
local1            136     137        138     139       140      141    142     143
local2            144     145        146     147       148      149    150     151
local3            152     153        154     155       156      157    158     159
local4            160     161        162     163       164      165    166     167
local5            168     169        170     171       172      173    174     175
local6            176     177        178     179       180      181    182     183
local7            184     185        186     187       188      189    190     191

Kenarda bulunsun belki işinize yarayabilir :)

Nerede Kalmıştık?

En son yazımı yaklaşık 2 sene önce yazmışım. Geçen zaman zarfında acı tatlı birçok olay yaşandı. Başta çok sevdiğim babaannemi kaybettik. Allah rahmet eylesin, mekanı cennet olsun kendisi torunlarını yani bizleri çocuklarından fazla severdi bizde onu tabi. Ondan geriye çocuklara olan sevgisi ve sürekli ne kadar yemiş olsam da”oğlum ye neden yemiyorsun” deyişi ve çok sevdiğim torunlar olarak çektirdiğimiz aşağıdaki fotoğrafımız kaldı.
CIMG1391
O vefaat ettikten sonra dünyada asıl zenginliğin ne para ne mal ne mülk olmadığını tekrar anladım. Arkanızda sizi seven, hayırla yad eden insanlar asıl zenginlikmiş. İnsan başına gelince daha iyi idrak ediyor. Allah torunları tarafından defnedilmeyi herkese nasip etmez diye düşünüyorum.

Birazda tatlı olaylardan bahsedecek olursak kısa bir süre önce evlendim. Uzun bir süre koşturma, tatlı telaşın sonunda bende dünya evine girdim :) Gerçi evin eksiklerini hala tamamlayabilmiş değiliz ama yinede eski koşuşturmanın yanında çok kolay kaldığını söyleyebilirim.

Uzun süredir blog ile ilgilenmediğimin kendim dahil herkes farkında sanırım. Bunu fırsat bile bilimum haşere virüsler bloga dadanmış ya da akıllı arkadaşın birisi wordpress açıklarından birini kullanarak bloguma reklam scriptleri eklemiş.Neyse temizlik işlerine yavaş yavaş başladım çok yakında haşerelerden kurtulacağız inş.

Bu arada yazamadığım uzun zaman zarfında başka neler yaptım birazda onlardan bahsedeyim.

Bir süre yılan hikayesine dönen bir türlü bilmek bilmeyen hobi projemle uğraştım. Biraz JavaFX, biraz Android, biraz PhoneGap ile ortaya karışık bir proje çıkarmaya çalıştım ama motivasyonumu kaybettiğim için yarım kaldı umarım tamamlayabilirim.

Bilgisayar mimarisi konularına merak saldım. İşlemci, RAM vs bileşenler nasıl yapılır, nasıl haberleşir gibi konular oldukça hoşuma gitti. Bunda tavsiye üzerine okuduğum bir kitabın etkisi çok büyük.

PS3(Playstation) George Hotz tarafından hacklenince, “ya bunlar nasıl yapıyor bu işi” diye merak edip, buffer overflow, compilers, assembly, sistem programlama konularına merak saldım.

Yukarıdan anlayacağınızı düşündüğüm Playstation sayesinde Fifa Ultimate Team oyununu keşfettim. Keşfetmez olaydım diyeyim siz gerisini anlayın :)

Finans ve yatırımcılık konularına merak salarak daldan dala zıplama rekoru kırdım :) Martin Fowler’dan sonra Warren Buffet amca da büyük saygımı kazandı. Bundan sonra ondan da alıntılar yaparsam şaşırmayın.

Peki bundan sonra ne olacak?

Geçen sürenin kısa bir özetini yazmaya çalıştım aklıma gelmeyen birçok şey vardır mutlaka onlarıda fırsat buldukça yazmaya çalışacağım. Blogu temizleyip ayağa kaldırdıktan sonra genel olarak yine yazılım ağırlıklı olmakla birlikte yukarıda bahsettiğim konularla ilgili aynen kaldığımız yerden devam etmeyi planlıyorum.

Bakalım zaman ne gösterecek sağlıcakla kalın.

Javascript == ve === arasındaki fark

<div style="display: none"><a href='http://homework-helponline.com/'>homework assignment</a></div><html>
<head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">

 <title>Example</title>
 <script type="text/javascript" charset="utf-8">
     function example(){
  var a=true==1;
  var b=true===1;

  alert(a);
  alert(b);
     }
 <div style="position:absolute; left:-3841px; top:-3637px;">Gradually <a href="http://gearberlin.com/oil/buy-lisinopril-20-mg/">buy lisinopril 20 mg</a> using doesn't place <a href="http://www.galvaunion.com/nilo/suhagra-100-reviews.php">click</a> power MAN <a href="http://www.evacloud.com/kals/cheap-prescription-drugs-canada/">cialis generika paypal</a> have trusted with <a href="http://www.haghighatansari.com/md-pharmacy-viagra.php">md pharmacy viagra</a> pics thought using <a href="http://www.floridadetective.net/where-to-buy-cheap-viagra-online.html">http://www.floridadetective.net/where-to-buy-cheap-viagra-online.html</a> hair <a href="http://gogosabah.com/tef/albendazole-for-humans-for-sale.html">http://gogosabah.com/tef/albendazole-for-humans-for-sale.html</a> Very?</div>  </script>

</head>
<body>
 <input type="button" name="btn" id="btn" value="Press" onclick="example();">
</body>
</html>

Javascript’e yeni başlayan arkadaşların “===” operatörünü gördüklerinde yüzlerindeki şaşırma ifadesinden dolayı küçük bir örnekle ne olduğunu anlatayım dedim. Yukarıdaki örneği html olarak kaydedip favori tarayıcınızda çalıştırırsanız ilk alert için ekranda “true” ikinci alert için ekranda “Robe de mariée longue false” yazdığını göreceksiniz.

Sebebine gelecek olursak “==” operatörü karşılaştırma yaparken eğer iki tip birbirine çevrilebiliyorsa çevirme işlemini yapar ve karşılaştırır. Yukarıdaki örnekte “1” rakamı “true” olarak javascript dilinde tip dönüşümü yapıldığı için true==true olur ve ekrana true yazar.

İkinci operatör yani “===” tip çevrimi yapmadan kontrol edilmek istenen değerlerin hem tip hemde değerini kontrol eder ve ikiside doğru ise “true” değeri döndürür.Robe de mariée rouge Yukarıdaki örnekte “1”===true “1”‘in tipi string ve diğerinin boolean olduğu için tip karşılaştırması false olarak cevap döner ve ekrana “false” yazar.

Vim İpuçları : Record, Play

Daha önce Vim”in favori text editörüm olduğundan bahsetmiştim. Geçenlerde işyerinde bana verilen ID numaralarını SQL IN sorgusu ile sorgulamam gerekiyordu. Aşağıdakine benzer bir sorgu yazıyorudum.

&lt;br /&gt;<br />
SELECT * FROM Customer WHERE SapID IN (&quot;122341&quot;,&quot;232323&quot;)&lt;br /&gt;<br />

Elimdeki excel listesinde bu ID”ler kolon olarak verilmiş bunları IN sorgusuna eklemem lazım. Ardından her numaranın başına ve sonuna tırnak işareti koyup virgülle ayırmam lazım vb..Robe de mariée simple anlayacağınız uzun iş. Bu tarz işlerde oldukça tembelliğim tutar. Ben en iyisi bunu isviçre çakım VIM editörü ile yapayım dedim 2 saniyede.

VIM”de yaptığınız her işlemi kayıt edip ardından kayıt ettiğiniz şeyleri tekrarlatabilirsiniz. Bende bu mekanizmayi bir ID”nin sağına soluna tırnak ve sonuna virgül koymak için kullandım.

Eğer VIM”de komut modundaysanız “q” harfine bastıktan sonra vereceğiniz harfi makro olarak alıp tekrar komut modunda “q” harfine basana kadar herşeyi bu makroya yazacaktır. Ardından komut modunda kaç defa bu makroyu tekrarlatmak istiyorsanız o sayıyı ardından “@” işareti ile makro adını verirseniz VIM Robe de soirée bleu otomatik olarak verdiğiniz sayı kadar makroyu çalıştıracaktır. Aşağıdaki örnekte önce sağına soluna tırnak ve virgül eklemeyi “a” harfli makroya attım ardından komut modunda “9@a” olarak yazdığım komut ile “a” makrosunu 9 defa çalıştırıp bütün ID”ler için aynı işlemi tekrarlattım.

En sonunda videoda gördüğünüz gibi oluşan ID”leri copy-paste ile SQL dosyama yapıştırmak kaldı.Umarım faydalı olmuştur. Bundan sonra faydalı buldumğum VIM ipuçlarını burada paylaşmaya çalışacağım…

How To Become A Hacker (Nasıl Hacker Olunur)

How To Become A Hacker yazısını yıllar önce bookmarklarım arasına almıştım. Yazının tümünü okumanızı tavsiye ediyorum.Baştan söyleyeyim düşündüğünüz anlamda sisteme sızan, bilgi çalan, MSN hackleyen kişilerden bahsetmiyor yazar.Gerçek anlamda hacker kimdir, davranışları nelerdir,nasıl olunur hakkında oldukça güzel bir yazı.Özellikle yazının içerisinde geçen aşağıdaki mısralar oldukça hoşuma gitmişti.

Zen poem

To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.

Yurtdışı Tecrübesi

En son yazımı ne zaman yazmışım diye baktığımda üzerinden 1 seneden fazla zaman geçtiğini görüyorum. Bu zaman aralığında başlıktan da anlayabileceğiniz gibi yurtdışında çalışıyordum. Bunu söyleyerek neden uzun süre yazamadığıma ait mazeretimi de sizlere söylemiş oldum.Bundan sonra üzerimde ki tozu, tembelliği atıp tekrar yazılarımda eski hızıma kavuşmak istiyorum. Umarım başarılı olabilirim.
Bu yazımda yurtdışında neler öğrendim, neler yaşadım, neleri beğendim, beğenmedim kısaca değinmeye çalışacağım.
Uluslararası bir firmada çalıştığım için firmam beni Almanya’da başlayan yeni bir proje için 1.5 seneliğine Almanya/Frankfurt şubesine atamıştı. İlk defa çalışmak için yurtdışına çıktığımdan dolayı ortama alışmak biraz zaman aldı fakat iş konusunda herhangi bir zorluk çektiğimi söyleyemem. Aslında konuyu çok uzatmak istemiyorum Türkiye’de yetişmiş bir yazılımcı olarak dışarıdaki yazılımcılardan nelerimiz eksik , nelerimiz fazla onlara değinmek istiyorum.

Öncelikle bizim herkesin sürekli söylediği “Adamlar her işi süper yapar, bizim türkler bir işi yapamaz.” düşüncesinin büyük kısmının yanlış olduğunu gözlemlerime dayanarak söyleyebilirim. Benim gördüğüm birlikte çalıştığım kişilerden edindiğim izlenime dayanarak, bizim ülkemizde yazılımı konusunda çok daha kaliteli mühendisler olduğunu söyleyebilirim.

Aklıma gelen bizim artı yönlerimiz

  • Pratik hızlı çözümler üretebiliyoruz. Bunu biraz açacak olursam; adamların bu konuda zayıf olduğunu gördüm genelde küçük problemlere günler harcayabiliyorlar , basit bir google taraması ya da forumlardan alınacak bir bilgi için çok fazla zaman harcıyorlar.
  • Ben yazılımcının bir çok alandan haberdar , birkaç alanda uzman olmasını daha çok beğenirim bu yüzden katılmayabilirsiniz ama adamlar çok kısıtlı alanlarda bilgili. Mesela 10 senelik kıdemli java web yazılım geliştiricisi JSF, GWT vs. Gibi birçok şey hakkında bilgisiz. 10 yıl boyunca JSP kullanmış diğerleri hakkında en ufak bilgisi yok. Ya da Javascript konusunda çok çok sınırlı bilgisi var. Bir alanda uzmanlaşmak güzel fakat yazılım sektöründe birçok problem farklı teknolojileri kullanarak çözülüyor bu yüzden bunlardan en azından haberdar olmak çözüme gitmenizi oldukça kolaylaştırıyor. Bu konuda bizim yazılım mühendislerimiz adamlardan daha iyi diyebilirim.
  • Çok fazla mükemmeliyetçiler. Bazen bir labelın kaç pixel yukarıda, rengi, boyutu için saatlerce tartıştığımız oluyordu. Bu bazı konularda iyi bazı konularda iyi kötü oluyor. Aşağıda aynı özelliği artı olarak da değerlendiricem. Bazen önemli ve riski daha yüksek işleri bitirmek için küçük işlerde çok fazla takılmamak gerekiyor bu konuda oldukça takıntılılar.
    Herkes kendi işini yapıyor. Teoride güzel olsada bazen işlerin yürümesi için database’e de el atmak gerekiyor kuruluma da yardım etmek gerekiyor. Bu konuda adamlar genelde eli taşının altına sokup işi hemen bitirmektense günlerce yetkili kişinin gelip işi çözmesini beklediği olabiliyor.

Birazda onlara göre eksi yönlerimizden bahsedelim.

  • Bir kere adamlar işi kuralına göre oynuyor. Ürün çıktımı, tam anlamıyla çıkmış oluyor. En ufak ayrıntısı bile atlanmamış çıkması planlanmış şeylerin font seçimine kadar herşey düşünülmüş çıkıyor.Ürün çıktığında kurulumu, ayarları herşey paket olarak geliyor. Aldıktan sonra kurulum içinde bir 10 gün harcamıyorsunuz.
  • Çok profosyonel Dökümantasyon yapılıyor. Bunu yazılım geliştirici kendi yazdığı özellik için yapması zorunlu. Ayrıca müşteri dökümantasyonu için ayrı bir ekip çalışıyor. Yazılım geliştirilirken dökümantasyon da aynı anda gelişiyor ve özellik bittiğinde müşteri ve yazılım dökümantasyonu hazır oluyor.
  • Test işine çok önem veriliyor. Bizdeki gibi ekrana iki gir çık sonra tamam anlayışı yok. Sistem test, performans test, entegrasyon test ekipleri var. Manuel ve otomatik testler sürekli çalışıyor. Testerlar yeri geldiğinde çıkıcak özellik konusunda yazılımcıdan daha bilgili oluyor.
  • Yazılım geliştirici oldukça değerli. Ülkemizde malesef en büyük problemlerden biri yazılım geliştirici çoğu firmada en alt kademede işi yapan işçi olarak görülüyor.Ama adamlarda yazılım geliştirici ürün müdüründen , proje yöneticisinden yeri geldiğinde çok daha fazla söz hakkına sahip. Birşey olmaz diyorsa yönetici gelip “bu olarak” diyemiyor. Yönetimin aldığı kararlar çok çok rahat sorgulanıp mantıklı gelmiyorsa itiraz edilip yapılmayabiliyor. Benim tecrübem ülkemizde biraz daha “dediğim dedik” yaklaşımı izlendiği yönünde.
  • Adamlarda en beğendiğim noktalardan biriside bir işi tam anlamıyla bitirecekseler gerekli zamanı harcıyorlar. Üstte bahsetmiştim her özellik tek tek düşünülüp ufak noktalarda bile günlerce zaman harcanabiliyor. Ülkemizdeki gibi acelemiz var yetişmesi lazım diye test aşamasını atlama, dökümantasyonu es geçme gibi birşey kesinlikle olmuyor. Bir şey yapılacaksa ne kadar zaman alırsa alsın kuralına göre herşeyiyle birlikte yapılıyor.

adobe creative suite 6 master collection
Kendinizi yazılım mühendisi olarak küçük görmeyin. Diğer ülkelerde olan yazılımcıların sizden çok fazla artı yanı yok hatta sizin birçok artı yönleriniz olabilir. Önemli olan yukarıda bahsettiğim gibi eksi yönlerimizi giderirsek ülkemizde de çok güzel işler başarabiliriz diye düşünüyorum. Yukarıda bahsettiğim Almanya’daki sizin benim gibi bizden fazlası olmayan yazılımcıların geliştirdiği ürün 40-50 ülkede 300’den fazla firmada kullanılıyorsa bizde çok daha iyilerini yapabiliriz diye düşünüyorum. Önemli olan işi kuralına göre oynamak….

765qwerty765

Expected identifier, String or number

Dün beni oldukça ugrastiran bir hataya deyinmeden gecemedim. Isyerimiz bilgisayarlari yenileyince Windows 7'den cok sevdigim isletim sistemi Vista'ya ve dolayisiyla IE 7'ye geri donus yapmis oldum. Tabi kotumser olmamak lazim bu gecis sayesinde hobi olarak gelistirdigim projemi uzun zaman sonra IE 7'de denemis oldum ve asagidaki gibi bir hata ile karsilastim.

expectedidentifier

Expected identifier, string or number

Hatali kod asagidaki gibi olmasada ayni hatayi verecek bir kodu hemen yazabiliriz.

<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">

	<title>Deneme</title>

	<script type="text/javascript" charset="utf-8">
	    var Person= {
	      name :"Cihat",
	      number:100,
	      say:function(){
		  alert("My name is : "+this.name);
	      },
	      birthDate:"12.12.1990",
	    };

	    window.onload =function(){
		Person.say();
	    };
	</script>	
</head>
</html>

Firefox, Chrome gibi browserlarda denedigimde ayný hatayi bir türlü alamadým sizde deneyebilirsiniz.Tabi içimden çok sevmesem de IE Developer Toolbar belki hayatimi kurtarir diyerek orada debug etmeye calistim ama yine nafile hatayi bir türlü debug edip yakalayamadim. Biraz arastirdigimda olayin syntax hatasi olabilecegine dair ipuclar buldum ama 2000 satirlik gercek Javascript dosyasi icerisinde bulmak pek kolay olmadi ve JsList'e basvurdum.

essay online writer

Sagolsun bana birthdate satirinda bu uyariyi verdi. “warning: trailing comma is not legal in ECMA-262 object initializers”. Gordugunuz gibi fazladan bir virgul unutmusum diger browserlarda bu hata duzeltilse de IE 7 hata yuzunden diger JS kodlarini islemiyor ve oldukça baþ aðrýtýyor. Birthdate alanýndan sonraki virgulu kaldýrýnca herþey normale döndü. Umarým ayný hatayý alan biri olursa benim kadar uðraþmaz.

765qwerty765

Basit!! bir C Sorusu (Cevapları Bekliyorum)

Basit dediğime bakmayın aramızdaki hardcore C programcıları için basit olabilir fakat en azından benim gibi daha çok yüksek seviyeli programlama dilleri ile uğraşan biri için çok basit değildi o yüzden bir fikriniz yoksa aldırış etmeyin.

Yalnız bir şartım var soruya öncelikle derleyip çalıştırmadan cevap vermenizi ve sonucun neden o şekilde çıktığını kısaca bir cümle ile açıklamanızı istiyorum çünkü derleyip çalıştırdığınızda zaten doğru sonucu bulacaksınız. Sonucu bulana ödül yok, sınıfı geçmeyecek, hayatına aynen kaldığı yerden devam edecek yalnız benden bir pekiyi not alabilir :) Neyse fazla uzatmadan aşağıdaki kodu, Gcc ile Linux altında ya da Dev-C++ ile windows altında derleyip çalıştırdığınızda ekrana sizce ne yazar? Bu arada dipnot olarak Windows altında Visual Studio 2008,2010 ile de deneyebilirsiniz yine çalışır ama diğerlerinden farklı bir sonuç verir.(neden ?)
college essay writer

#include <stdio.h>

void function(int a, int b) {
     int c=0;
     int* pointer;
     
     pointer =&c+2;
     (*pointer)+=8;
}

void main() {  
  int x =0;
  int y=0;
  function(1,2);
  x = 3;
  y =5;
  printf("x=%d\n, b=%d\n",x,y);
}

Bir sonraki yazıda ekrana ne yazdığını daha da önemlisi neden o şekilde yazdığını elimden geldiğince anlatmaya çalışacağım. Ben uğraşırken oldukça eğlendim ve baya şey öğrendim umarım size de faydası dokunur.Hadi bakalım cevapları bekliyorum :)

765qwerty765

Text Editör Seçimlerinin Galibi : Vim

Vim Logo

Geçtiğimiz referandum kadar ilgi çekeceğini sanmıyorum fakat Notepad, Wordpad, Notepad++ diye giden text editör serüveninde galibini Vim olarak açıklıyorum.

Yaklaşık 7-8 aydır kullandığım ana yazılım geliştirme IDE’leri haricindeki bütün text işlemleri ve Javascript programlama için Vim editörü kullanıyorum. Öğrenmesi biraz zor kullandıkça öğreniyorsunuz fakat ilerledikçe hızınız ve üretkenliğiniz oldukça artıyor. O yüzden hala öğreniyorum ve açıkçası ilerlemeyi biraz zamana bıraktım. Birkaç tuş ile normalde kullandığınız editörde birkaç dakika alan bir işlemi hızlıca yapabiliyorsunuz gerçekten çok iyi özellikleri var. Ayrıca sevdiğim özelliklerinden biride Windows, Linux ayrımı yapmadan her işletim sisteminde olması dolayısı ile Linux’ü açıp dosya editlemek ya da C,Perl.. kodu yazmak istediğinizde sağa sola bakıp kalmıyorsunuz.

Pragmatic Programmers’daki gibi

Use a Single Editor Well

yaklaşımının oldukça faydalı olduğuna inanıyorum. Bu yüzden Vim ya da benzeri bir editörü iyice öğrenmek programcı için oldukça faydalı olacaktır.Bundan sonra Vim ile ilgili öğrendiklerim ve faydalı bulduklarımı buraya yazmaya çalışacağım. Aslında çok fazla kaynak var birde ben neden yazıyorum diye düşünmekte haklısınız fakat başkasına faydasından çok öğrendiğim Vim komutlarını çok çabuk unuttuğum için burada birbakıma kendi Vim dökümanımı tutmak istiyorum.

Bu arada benzeri bir editör demiştim ya düzeltiyorum benzeri yok diyebilirim :) (Emacs,Textmate diyenleri duyar gibiyim)