3 Haziran 2014 Salı

Vi editörü



 Vi editörü hakkında FreeBSD  6 kitabı için yazdığım kısmı burada yayınlıyorum.


1         Vi Editörü


Vi editörü tüm UNIX ve Linux dağıtımlarıyla birlikte gelen ve yaygın bir kullanıcı kitlesi olan bir metin editörüdür. Komut satırından çalışmaktadır ve dosya oluşturmak, var olan dosyada değişik yapmak için kullanılır.

Vi’da kabaca iki farklı mod vardır. Birincisi komut diğeri yazı modu. Vi editörü çalıştığında komut modunda açılır.

Komut modunda editöre sadece komutlar gönderilir. Verilen komutlar ekranda yazı olarak gözükmez. Bu komutlar satır, kelime silme, dosyada aşağı, yukarı, sağa, sola hareket etme, dosyada kelime arama vs amaçlı verilebilir.

Yazı modunda ise basılan her karakter ekrana veri olarak yazılır. Yazı modundan komut moduna geçmek için ESC tuşu kullanılır. Fakat komut modunda iken bir başka komut çalıştırmak için ESC tuşuna basmaya gerek yoktur.

Genel kullanım biçimi aşağıdaki gibidir.

# vi [parametreler] dosyaadı

Not: Bu bölümde imlecin yerini belirtmek için imlecin olduğu karakterin altı çizili olarak gösterilecektir.

1.1    Dosya Açma Kapama İşlemleri


Örneğin deneme dosyası oluşturmak için aşağıdaki komut verilir.
# vi  deneme

~
~
~
deneme: new file: line 1

Buradaki ~  ifadesi boş satırları ifade eder. Satırlara yazı yazıldıkta bu ifade kaybolur.
En altta da dosyanın adının deneme olduğu ve yeni oluşturulan bir dosya olduğu belirtiliyor. Yukarıda belirtildiği gibi vi şu anda komut modundandır. Bu durumda iken i tuşuna basılarak yazma moduna geçilir ve yazılmak istenen metin yazılır.

Bu bir deneme metnidir.
~
~

Yazma işlemi bittiğinde dosyayı kaydetmek için önce ESC tuşuna basılır sonra :w (iki nokta üst üste ve w) tuşuna basılır.

Bu bir deneme metnidir.                       
~
~
deneme: 1 lines, 24 characters.

Değişiklikleri  :w ile yazdıktan sonra dosyadan çıkmak için :q komutları verilir. Değişikliği yazıp çıkmak içinse :x komutu veya :wq verilir .Yapılan değişiklikler kaydedilmeden çıkılacak olursa vi
“File modified since last complete write; write or use ! to override.” uyarısını verecektir. Bu durumda değişiklikler kaydedilmelidir veya  kaydetmeden çıkmak için :q!  komutu verilir. dosyayı farklı bir isimde kaydetmek için :w yenidosyadı  komutu verilir.

1.2    Vi’de Hareket Etme ve Yazma


Yazma ve dosya içerisinde hareket etmek için aşağıdaki vi komutları kullanılır.

i                                   İmlecin bulunduğu yerin bir gerisinden yazmaya başlar.
a                                  İmlecin bulunduğu yerin bir ilerisinden yazmaya başlar.
ENTER                       ENTER tuşu ile bir alt satırdan yazmaya devam edilir.
o (Küçük O harfi)       Bir alt satırda boşluk açıp satır başından yazma moduna geçer.
O (Büyük O harfi)      Bir üst satırda boşluk açıp satır başından yazma moduna geçer.
I (Büyük I harfi)         Bulunan satırın başına geçip yazma moduna geçer.
A                                 Bulunan satırın sonuna geçip yazma moduna geçer.


j                                   Bir satır aşağı inilir.
k                                  Bir satır yukarı çıkılır.
l                                   Bir karakter sola geçilir.
h                                  Bir karakter sağa geçilir.
0 (Sıfır )                       Bulunan satırın başına geçer.
$                                  Bulunan satırın sonuna geçer.
w                                 imlecin bulunduğu yerden bir sonraki kelimenin başına geçer.
b                                  imlecin bulunduğu yerden bir önceki kelimenin başına geçer.
:0                                 Dosyanın ilk satırına geçer.
:$                                 Dosyanın en son satırına geçer.
:satır numarası          Dosyanın belirtilen satır


1.3    Vi’da Silme ve Kopyalama


Yazı modunda iken backspace tuşu ile karakterler silinebilir. Komut modunda ise x komutu ile imlecin üzerinde bulunduğu karakter silinir. Birden fazla karakter silmek için bu komut art arda kullanılır. Veya imlecin bulunduğu yerden itibaren silinecek karakter sayısı ve x komutu verilir. Örneğin aşağıdaki satırda imleç i harfi üzerinde iken ve komut modunda iken 4x komutu verildiğinde

Bu bir deneme metinsdr.
~
Sonuç aşağıdaki gibi olacaktır.

Bu bir deneme metr.
~

Diğer silme komutları aşağıdaki gibidir:
dw                   İmlecin olduğu yerden itibaren kelimenin geri kalan kısmını siler.
db                    İmlecin olduğu yerden kelimenin başına kadar olan kısmı siler.
D                     İmlecin olduğu yerden satır sonuna kadarki tüm karakterleri siler.
dd                    İmlecin bulunduğu satırı tamamen siler.

Kopyalama içinse aşağıdaki komutlar kullanılır.
y                      Yakalamak (yank) manasına gelir. Tek bir karakteri kopyalar.  Kopyalanan karakter p komutu ile imlecin konumun sağına yapıştırılır.
yy                    İmlecin olduğu satır kopyalanır. Yine p komutu ile yapıştırılır.
P                      Büyük P komutu ile de kopyalanan satır imlecin bir üstündeki satıra yapıştırılır.
Örneğin

Aşağıdaki dosyanın ilk satırını dosyanın sonuna kopyalamak için birinci satırda iken yy komutu verilir dosyanın sonuna :$ ile geçilir ve p komutu verilir.

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
~
Sonuç aşağıdaki gibi olacaktır:

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
Bu bir deneme metnidir.
~

Dosyanın en son satırında iken p yerine P komutu verilseydi sonuç aşağıdaki gibi olacaktı:

Bu bir deneme metnidir.

Bu bir deneme metnidir.
Bu bolumde vi editoru anlatilacaktir.
~


Hata yapıldığında yapılan değişiklik u komutu ile geri alınır. Bu komut ile sadece son komutta yapılan değişiklikler geri alınır. Tekrar u komutu verilirse yapılan değişiklik tekrar gelir (redo)




1.4    Vi’de Değiştirme ve Arama


Tek bir karakteri değiştirmek için imleç ilgili karakterin üzerindeyken r komutuna basılır ve hemen ardından yeni karakter tuşlanır, işlem sonunda vi komut moduna döner.

s komutu ile de birden fazla karakter değiştirilebilir. Komutun başına değiştirilecek karakter sayısı yazılır. Bu komutla vi yazı moduna geçer.
cw (change word) komutu ile bir kelimenin tamamen silinip yerine yenisi yazılır. Kelimenin başında iken cw komutu verildiğinde kelime silinecek, vi yazı moduna geçecektir.  Eğer komut kelime ortasında verilirse imleçten kelime sonuna kadar olan karakter silinecektir.
~ komutu ile imlecin üzerindeki harf büyükse küçük, küçükse de büyük harf yapılır.

Metin içerisinde geçen bir karakter veya kelimeyi aramak için / komutu kullanılır. / komutu verildiğinde arama moduna geçilir ve ekranın en alt kısmında / ile başlayan bir satır oluşur. Buraya aranacak kelime yazıldıktan sonra ENTER tuşuna basılır. Aranan kelime metinde varsa imleç bu kelimenin üzerine gidecektir.  metin içerisinde aramaya devam etmek için n komutu kullanılır.

Örneğin aşağıdaki metinde vi kelimesi aratıldığında

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~
/vi


Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~

n komutu verilirse imlecin yeri aşağıdaki gibi değişecektir.

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~

/ yerine ? komutu kullanılırsa geriye doğru arama yapılır.


Metinde geçen bir kelimeyi değiştirmek için :%s komutu kullanılır.  Komutun kullanım şekli aşağıdaki gibidir.
:s/eski/yeni Sadece imlecin bulunduğu satırdaki eski değeri yeni olarak değiştirir.
:%s/eski/yeni/g Tüm metin içerisinde değişiklik yapar. g değerinin yanına c değeri de eklenerek  (:%s/eski/yeni/gc) değişiklik yapılmadan önce onay alınabilir.
Aslında buradaki eski ve yeni değerleri birer düzenli ifadedir (regular expression). Düzenli ifadeler kullanılarak ileri seviye değişiklikler yapılabilir.

Örneğin aşağıdaki metindeki Pazar ifadesini Pazartesi yapmak için:

Bu Pazar enderunix toplantisi yapilacaktir.   
Pazar gunu gorusmek uzere....
~

:%s/Pazar/Pazartesi/g komutu verilir.

Bu Pazartesi enderunix toplantisi yapilacaktir.   
Pazartesi gunu gorusmek uzere....
~

1.5    Diğer komutlar


En son komutu tekrar çalıştırmak için sadece . (nokta) tuşuna basılması yeterlidir.

:set number veya kısaca :set nu komutu verilerek satırların yanında satır numarasının gözükmesi sağlanabilir

# vi deneme
Bu bir deneme metnidir.
       
Bu bolumde Acik Akademi yayinlarindan cikan FreeBSD 6 kitabi hakkinda bilgi verilecektir.
~      
~      

:set nu
komutu verildiğinde ekran aşağıdaki gibi gözükecektir:
1 Bu bir deneme metnidir.
2
3 Bu bolumde Acik Akademi yayinlarindan cikan FreeBSD 6 kitabi hakkinda bilgi verilecektir.
~      
~      

Satırları tekrar numarasız hale  getirmek için de
:set nonu veya :set nonumber
komutu verilir.

:r dosya  komutu ile dosya içeriği mevcut dosya aktarılır.




İsmail Yenigül

Not: Açık Akademi FreeBSD 6 kitabından alınmıştır.

4 Nisan 2014 Cuma

FreeBSD ve Microsoft NLB(Network Load Balancer) erişim sorunu

FreeBSD 9 ve üzeri sürümlerde eğer önde Microsoft NLB(Network Load Balancer) varsa FreeBSD NLB sunucusunun arp paketini alamadığı için ping bile atamıyordu.

Çözüm: FreeBSD üzerinde NLB sunucusunun MAC adresi için statik ARP girilmelidir.


Tartışmayı https://forums.freebsd.org/viewtopic.php?&t=31001 adresinden okuyabilirsiniz.

6 Mart 2014 Perşembe

Yönetim 2.0: İnsanlara ihtiyaç duydukları şeyi verin

HBR Yönetim 2.0 kitabından okumaya ve paylaşmaya devam ediyoruz.

"Geleneksel liderler çalışan-patron ilişkisini bir alışveriş olarak görürler: emek karşılığında para. Dönüşümsel liderler çalışanların bundan çok daha fazlasını istediğini bilir ve anlarlar. İşte size, çalışanlarınızın başarılı olmak için ihtiyaç duydukları dört şey:

"İnsanlara ihtiyaç duydukları şeyi verin
  • Sevgi. Bu, kulağa basit bir şey gibi gelebilir ama sevgi, sadece o kişinin iyiliğine odaklanan endişe anlamına gelir. Çalışanlarınıza onlara ve geleceklerine önem verdiğinizi gösterin.
  • Büyüme. Kimse bulunduğu yerde sonsuza kadar aynen kalmak istemez. Çalışanlarınızın büyümesine ve açılmasına izin veren bir kültür yaratın.
  • Katkı. Kendilerini gerçekleştirdiklerini hissetmeleri için çalışanların bütüne katkı sağladıklarını bilmeleri şarttır. Onların yaptığı işin kuruluş için önemli olduğunu gösteren örnekleri öne çıkarın.
  • Anlam. İnsanlar işlerinde anlam ararlar. Çalışanlarınızın hepsinin daha büyük bir amaca bağlı olduğunu gösteren bir vizyon paylaşın."

Yönetim 2.0: Kötü Patronların Eğiliminden Kaçının

HBR yayınlarından çıkan Yönetim 2.0 kitabı sürekli çantamda taşıdığım bir kitap. Fırsat buldukça açar rasgele bir bölümü okurum. İşte en son okuduğum kısım:

"Patron olmak zordur,özellikle de sizi yönettiğiniz insanlardan ayıran doğal eğilimlere karşı koymanız gerekiyorsa. Bu eğilimlerin farkında olmak onlardan kaçınmanıza yardımcı olabilir. İşte size dikkat etmeniz gereken ilk üçlü:

  • Kendi Kendini kandırma. Bu eğilime sadece patronlar sahip değildir; insanların çoğunluğu becerilerini gerçekte olduğundan daha yüksek tahmin eder. Kibirli olabileceğinizin farkında olun ve size gerçek becerilerinizi gösteren girdileri ve değerlendirmeleri almanın yollarını bulun.

  • Düşüncesizlik. İktidar pozisyonlarında olanlar, altlarında olan insanlar tarafından dikkatlice izlenirler. Fakat bu dikkat seviyesi genellikle karşılıklıdır. Bir gün patron olduğunuzda astlarınızı merak etmeyi ve onlarla meşgul olmayı unutmayın.
  • Yalıtım. Hiç kimse patrona kötü haber vermek istemez, dolayısıyla patron genellikle hikayenin tümünü bilmez. Habercinin vurulmadığı ve önemli enformasyonu öne çıkardığı için alkışlandığı bir kültür yaratın."


13 Şubat 2014 Perşembe

HBR Aralık 2013: Büyük veriye gerek kalmayabilir

Harvard Business Review Türkiye Aralık 2013 sayısında  "Büyük veriye gerek kalmayabilir" başlıklı bir yazı yayınlandı.

Özeti şu şekilde: "Büyük veri girişimleri çok revaçta; ancak çoğu şirket, analiz sistemlerine yaptığı yatırımlardan geri dönüş alamıyor"

Yazıdan satır başları:

"Büyük veriye yapılan yatırımın geri dönmemesinin en büyük nedeni, çoğu şirketin elde ettiği bilgileri çoktandır iyi kullanamıyor olması Şirketler veriyi nasıl yönetmesi gerektiğini, anlayışlarını artıracak biçimde veriyi nasıl analiz edeceğini ve sonrasında bu değişimleri yeni içgörülere yanıt olarak nasıl gerçekleştireceklerini bilmiyorlar."

"Bir şirket operasyon kararlarını desteklemek için veri ve analizin nasıl kullanılacağını öğrenene dek büyük veriden faydalanma noktasında olmayacaktır"

Fikrin özeti:
 
Sorun: "Büyük veri girişimleri çok revaçta; ancak çoğu şirket, analiz sistemlerine yaptığı yatırımlardan geri dönüş alamıyor"
Sebep: "Çok az şirket, temel operasyon sistemlerinde çoktandır yerleşik verilerin nasıl kullanılacağını biliyor."

Çözüm:"Kanıta dayalı veri güdümlü karar alma, bu soruna yanıt; ancak büyük bir kültürel değişim ve operasyonların yönetiminde dört değişim gerektirir."

Aşağıya yazıdan bir kısım ekliyorum. gerisi HBR Aralık 2013 sayfalarında...

4 Şubat 2014 Salı

BT Pazarında Dağıtıcı-Bayi Modelinin Çöküşü


Hem bayisi olan üretici konumdaki bir Ar-Ge şirketinin hem de entegratör konumundaki bir firmanın kurucu ortağı şapkasıyla değerlendirdiğimde BT sektöründe kurumsal ölçekte iş yapan dağıtıcı ve bayi modelinin maalesef hızlı bir çöküşte olduğunu söyleyebilirim.  Piyasayı yokladığımda sadece belirli bir kitleden değil sektörün genelinden aşağıdaki gibi şikayetleri duymaktayım.

Bayi tarafından bakıldığında dağıtıcının durumu:
  • Sağlıklı bir proje kayıt mantığı bulunmamaktadır. %100 sizin geliştirdiğiniz bir işi değişik gerekçelerle tanıdığı bir bayiye paslayabiliyor. 
  • Büyük müşterilere "named account", "büyük müşteri" vb isimlerle doğrudan satış yapabiliyor.
  • Hem son müşteriye fatura kesen hem de kanala satış yapanlar var. Yani bayinin rakibi konumunda. Bunu açıkça yapmayı uygun görmeyenler gizli şirket kurup faturaları onun üzerinden kesebiliyor.
  • Dağıtıcı kar marjını yükseltmek, bayiye marj bırakmamak için bilerek tüm işi kendi takip ediyor, süreçlere bayiyi sokmuyor. Günün sonunda da işi bitirip bayiye, "senin bu işte emeğin yok, hazır iş getirdim" diyerek küçük marjlarla fatura kestiriyor. Böylece hem dağıtıcı olup hem de bayi marjını alıyorlar.

Dağıtıcı tarafından bakıldığında bayi durumu:
  • Marka sadakati yok. Tüm rakipleri satabiliyor.
  • Dağıtıcının getirdiği müşteriye bayi daha karlı olduğu için başka bir marka önerebiliyor.
  • Bayi taşın altına elini koymuyor. Eğitim ve destek konularında ilgisiz.
  • Tüm işi dağıtıcıya yaptırıp kendisi sadece komisyon faturası alıyor.

Kanaatimce tüm bu sorunların altında daha fazla kazanma hırsı yatmaktadır. Sanki bayi ve dağıtıcı el ele vermiş BT pazar gemisini batırmak için var gücüyle çalışıyor. Bu sorunlardan dolayı en karlı çıkan taraf ise rakipleri, tedarikçileri birbirine vurdurarak düşük fiyata ürün/hizmet alan müşteridir.  Fakat günün sonunda en büyük zararı yetkin bir bayi bulamadığı için milyonlarca lira verdiği ürünü verimli kullanamayan müşteri yaşayacaktır.

Peki bu süreç nereye varacak?

Önceleri evimize aldığımız ev aletlerini mağazalardan alıyorduk, ürün bozulduğunda aldığımız yer üzerinden tamir işlemlerini yürütüyorduk.  Fakat artık satıcı ile muhatap olmadan en uygun fiyatı veren e-ticaret sitesinden alıyoruz. Arıza durumunda ise en yakın yetkili servis noktası ile görüşüyoruz.
Aynı durumun BT pazarında da yaşanacağını tahmin ediyorum. Yoğun fiyat rekabetinin olduğu ortamda müşteri istediği yerden ürünü  satın aldıktan sonra destek için satış yapan firma yerine o ürüne en iyi desteği veren destek firmasından hizmet alacaktır. 
Önümüzdeki yıllarda satış yapmayıp sadece eğitim ve ürün desteği veren BT firmaları çıkabilir.

23 Ocak 2014 Perşembe

Global pazar hedefli Yerli Ar-GE süreçleri


 2006 yılından itibaren ticari olarak, öncesinde de gönüllü olarak bilişim ar-gesi yapan biri olarak yaşadığım tecrübelerden sonra şunu çok rahat söyleyebilirim ki:
 
“Global pazar hedefi olmayan yerli ar-ge uzun soluklu olamaz.”

Çünkü:
  • Yerli müşteri artık sadece ürün yerli diye satın alma yapmıyor. Bir çok global rakiple karşılaştırıyor ve yerli ile global arasında ciddi bir fark yoksa yerliyi UCUZa alıyor.
  • Yerli pazar çok büyük olmadığı gibi yerli ve yabancı çok fazla oyuncu var.
  • Pazarın küçük olmasından dolayı ölçek ekonomisi uygulayamazsınız. Bu da birim başına düşen maliyeti artırır ve karlılığı ciddi oranda etkiler.
  • Rakibinizin olmadığı çok özel bir alanda çalışmıyorsanız kıran kırana rekabetten dolayı para kazanamazsınız. Bu yüzden de sabit kalmanız hatta batmanız kaçınılmaz.
  • Küreselleşen bir dünyadan dolayı siz yerli olarak bir ihaleye ürün yetiştirene kadar OSTİM'deki bir nayloncu, ucuz fiyata işi aldıktan sonra soluğu Çin'de alarak sıfır ar-ge ile işi kapatabilmektedir.(Gerçek bir hikaye)
 Bu yazdıklarıma birde psikolojik olarak yerli kötü, yabancı malı her zaman iyidir mantığını eklediğimizde buyrun cenaze namazına!
 
 Peki ne yapılması gerekiyor? Öncelikle sadece yerel değil global bir ihtiyacı karşılayacak bir ürün geliştirdiğinizi kabul ediyorum. Aksi halde zaten global olmanın bir anlamı olmayacaktır.
 
Süreci teknik ve yönetsel olarak iki kısımda değerlendirebiliriz:
 
 Yönetsel kısım:
  • Global bir şirket olma vizyonu olmalıdır.
  • Şirket mutlaka A.Ş olarkak kurulmalı ve kuruluşundan 5 yıl sonra sanki borsada işlem görecekmiş gibi kurumsal yönetim süreci uygulanmalıdır. Bu süreçteki en önemli unsurlar şunlardır:
    • Dışarıdan bir mali denetim desteği alınması ve sonuçların raporlanması ile mali şeffaflık oluşturma
    • Yönetim kuruluna dışarıdan sektördeki güçlü kişilerin de dahil edilmesi
    • Yıllık performans hedeflerinin belirlenmesi ve 3 aylık periyotlarla hedeflerin değerlendirilmesi
  • Stratejik yönetim yaparak vizyon belirleme, iç ve dış çevre analizi yapma, strateji belirleme, bu stratejiye ulaşacak eylem planını hazırlama ve elde edilen durumu sürekli gözden geçirme gibi adımlarla hedefe ulaşmaya çalışma
 Bu süreçleri yürütmek için çok ciddi bir bütçe ayırmanıza gerek yoktur. İyi bir yönetici tüm bu süreçleri yönetebilir. Günümüzde yurtdışı ortaklığı ile global pazara girmek isteyen tüm yerli firmalar en az bir sene muhasebeyi "düzelteceğim" diye uğraşmaktadır.
 
Teknik Kısım:

  Özellikle ar-ge süreç yönetiminin çok sağlam kurulması gerekir:
    • Sürümler için yol haritası oluşturulmalı
    • Merkezi kod reposu kullanılmalı
    • Kodda yorum ve değişkenler ingilizce olmalı
    • Tüm işler için çağrı(ticket) oluşturulmalı
    • Projeye başlamadan önce dökümantasyon yapılmalı
  • Şirkette herkesin birincil belgelendirme ve yazma dili İngilizce olmalı, Türkçe belgelendirme sonradan yapılmalı
  • İngilizce web sitesi,döküman,sunum olmalı
  • İngilizce ve online destek portali kurulmalı


İsmail YENİGÜL
CTO
SurGATE Labs