Python ile geçici Web Sunucusu açmak

Python ile bulunduğunuz dizinde paylaşılabilir bir alan oluşturarak 8000 portundan aynı ağda bir web sunucusu açabilirsiniz. Bunun için bulunduğunuz konumda aşağıdaki komutu çalıştırmanız yeterli:
python -m SimpleHTTPServer
Böylelikle sizin IP adresini bilen bir kullanıcı, aynı ağınıza bağlı ise IP adresinizi yazarak giriş yapabilecektir. Test etmek için: http://localhost:8000 adresini kullanabilirsiniz.

Uçbirim geçmişi hakkında 9 ipucu

Linux üzerinde uçbirimi oldukça kullanıyorsanız bu 15 ipucuyu ya biliyorsunuzdur, ya da öğrenmeniz gerekmektedir.

1. HISTTIMEFORMAT üzerinde tarih damgası oluşturmak

Eğer "history" komutunuzun çıktısında yer alan komutların hangi tarihte yazıldığına ihtiyanız varsa aşağıdaki komut ile bunun önüne geçebilirsiniz.
export HISTTIMEFORMAT='%F %T '
Tabi ki bu komutu kullanıp history'ye bakarsanız yeni oluşturacağınız komutları o şekilde görebilirsiniz. Ve bu şekilde kullanımı geçici süreliğine kullanımdır. Bunu kendi ev dizininizdeki .bashrc dosyasının en altına yazarsanız tüm oturumlarda aynı sonucu almaya başlayabilirsiniz.


2. Geçmişteki komutları arama yapmak

Geçmişteki yazdığınız ve .bashrc dosyanızda HISTSIZE ve HISTFILESIZE parametreleriyle sınırlandırdığınız geçmiş komutlarınızda arama yapmak için komut satırındayken CTRL + R'ye basabilirsiniz. Böylelikle geçmişte bir arama ekranı açılmış olur. Çokça kullandığınız komutları da bu şekilde kolaylıkla bulabilirsiniz.


3. Bir önceki komutu çalıştırabilmek

Bir önce yazdığınız komutu tekrar çalıştırmak için önünüzde 4 yöntem bulunmakta.
1) Klavyede genellikle sağ altta bulunan "Üst Ok" tuşuna basıp, enter'a basmak.
2) "!!" yazıp, enter'a basmak.
3) "!-1" yazıp, enter'a basmak.
4) CTRL + P 'ye aynı anda basıp, sonrasında enter'a basmak. 


4. Geçmiş listesinde belirli bir komutu çalıştırmak

Öncelikle bilgilenmek için geçmiş listenizin en üstündeki 4 komutu aşağıdaki gibi listeleyebilirsiniz:
history | head -4
Gördüğünüz çıktılardan örneğin 3. çıktıyı çalıştırmak isterseniz komutunuz aşağıdaki gibi olmalıdır:
!4


5. Belirli bir karakter dizisi ile başlayan en yakın komutu çalıştırma

Belirli bir karakter dizisi ile başlayan son komutu çalıştırmak için de aşağıdaki komutu uygulamalısınız.
!apt
Bu şekilde apt ile başlayan son komutu tekrar çalıştırmış olacaksınız.


6. Geçmiş listenizin boyutunu değiştirmek

Ev dizininizdeki .bashrc dosyanızı açın ve içerisindeki aşağıdaki parametreleri kendinizde göre düzenleyiniz:
HISTSIZE=1000000
HISTFILESIZE=100000000


7. Tekrarlayan komutları engelle

Tekrarlayan komutları engellemek için aşağıdaki komutu çalıştırmanız gerekmektedir. Kalıcı hale geçirmek için ev dizininizdeki .bashrc dosyası içerisine eklemeniz gerekmektedir.
export HISTCONTROL=ignoredups


8. Tüm geçmişte tekrarlayan komutları engelle

Geçmişteki tüm aynı olan komutları engeller ve en son kullanılan şekilde tutulmasını sağlar.
export HISTCONTROL=erasedups


9. Geçmişteki bir komutun çıktısını kelime olarak ekleme

Örneğin bir önceki komutun çıktısını komut satırına eklemek için aşağıdaki komutu kullanmanız gerekmektedir:
#ls ali.txt
ali.txt
#vi !!:$
vi ali.txt

Kaynak: https://goo.gl/iShxgK

PDF'i sayfalara ayırmak

Bilgisayarınızda bulunan bir PDF'i belirli sayfa aralıklarına göre ayırarak yeni bir PDF belgesi oluşturmak isterseniz bunu uçbirimden aşağıdaki komutla yapabilirsiniz:
pdftk girdi.pdf cat 12-20 output cikti.pdf
Tabi ki bu komut için "pdftk" uygulamasının yüklenmiş olması gerekmektedir. Yukarıdaki girdi.pdf yerine sizin bölmek istediğiniz PDF dosyasının konumunu yazmanız gerekmekte. Daha sonra cat parametresinden sonra PDF dosyasının sayfa aralığını belirtmeniz gerekmekte. Tabi ki output parametresi sonrasında da yeni oluşturulan PDF'in konumunu belirtmelisiniz.

Bellekler hakkında bilgilenme

Bilgisayarınızda bulunan slot sayısını ve bu slotlarda bulunan belleklerin marka, frekans ve boyut dahil önemli özelliklerini görebileceğiniz güzel bir komut:
dmidecode -t memory

Linux üzerinde son değişen dosyaları bulmak

Problemimiz oldukça basit ama çoğu zaman aklımıza gelmeyebilir. Çözüm ise basit. Aşağıdaki find komutundan sonraki parametre hangi klasör içerisinde aranacağı, -iname parametresi belirli dosya tipleri veya isimlere göre aranıp aranmayacağı ve -mtime parametresi de "gün" olarak süreyi belirtiyor. Bulunan dosyaları"-print" komutu ile ekrana yazdırabilir veya ">> dosyaadi.txt" şeklinde dosyaya yazdırabilirsiniz.
find /home/alorak -iname '*.txt' -mtime -3 -print

Python ile dosyadan sütun verisi çekmek

Elimizde matris biçiminde bir dosya olsun. Yani içeriği aşağıdaki gibi olan bir dosya olduğunu düşünelim:
1 2 3
4 5 6
7 8 9
Bu sistemde normal python ile satır satır veri çekmek oldukça basit olmasına karşın sütun verisi için #numpy kullanacağız. Dosyamızın adı: “veri.txt" (txt olmak zorunda değil) olduğunu düşünürsek aşağıdaki gibi bir kodla istediğimiz veriyi alabiliriz.
import numpy # numpy kütüphanesini çekmek
tum_veri = numpy.loadtxt(“veri.txt”, skiprows=0) #tüm veriyi değişkene aktarmak
print tum_veri[:,3]; # 3. sütun’u çekip ekrana yazdırmak (veya değişkene kaydedebilirsiniz)
Ekrana tam olarak 3 6 ve 9 liste şeklinde yazdırılacaktır. Gerisini python listeler konusuyla daha detaylı inceleyebilirsiniz.

Gnome-shell üzerinde görsel değişiklikler yapmak

Evet arkadaşlar gnome-shell üzerinde değişiklik yapmak istiyorsanız CSS bilmeniz yeterli. Bunun için herhangi bir yazı düzenleyicisi (ki gnome kullandığınız için gedit olduğunu varsayarak) ile yönetici izinli olarak:
sudo gedit /usr/share/gnome-shell/theme/gnome-shell.css
yazarak terminaleden ilgili dosyayı açabiliriz. Sonrası tamamen bizim hayal gücümüze kalmış. Bazı temel sınıfları yazayım:

#panel : en üstteki paneli tanımlayan sınıf.

#dash : aktiviteye bastığımızda açılan kısımla ilgili tanımlamaların sınıfı.

.dash-pane : dash içerisinde uygulama ve son dosyalar kısımlarının olduğu yerlerle ilgili tanımlar.

.app-menu-icon : uygulama ikonlarının büyüklükleri filan. (bu çok sorulmakta)

Tüm bunlardaki değişiklikleri yapıp kaydettikten sonra ALT + F2 ile açılan kutucuğa r yazıp enter yaparak gnome-shell'i yeniden başlatmadan uyguladığınız değişiklikler geçerli olmayacaktır.

PHP ile fonksiyonda birden fazla değer döndürmek

Genellikle php derslerinde fonksiyonlardan 1 ya da 0 gibi değerler döndürülerek sonuçlar verilir. Ya da kimi durumlarda bir değişken yardımı ile o değişkenin değeri döndürülür. Ek olarak fonksiyonlar dizi de döndürebilmektedirler. Aslında son derece mantıklı ve olması gerektiği gibi gözükmesine rağmen bazı durumlarda tam olarak düşünülemeyebilinir.

Örneğin veritabanındaki bir çok değişkeni bir fonksiyonla çekip onlarla daha sonradan oynamak için oldukça kullanışlı bir olaydır.

PHP ile yazısal bir veriyi sayıya çevirmek

Aslında çok basit bir olay ama yine de çoğu zaman bilmeyen kişilerin başını ağrıtabileceğinden belirtmek istedim.

$yazi = "1";
$sayi = (int)$yazi;

İlk durumda ($yazi) çoğu zaman sorun çıkartmasa da bazı durumlarda sayı olarak algılanmamasından dolayı PHP'de sorun çıkartmaktadır.

İkinci durumda ($sayi) ise değişkenle gönül rahatlığıyla matematiksel işlemler yapılabilmektedir.

Ek olarak, çevirimde yazılan ilk sayısal ifade sayıya çevrilmektedir. "1a", "1.2", "1,4", "1 " gibi. Ama yazının başındaki ifade harf ise sayıya 0 olarak çevrilecektir.

PHP ile sayı ve tam sayıları algılama

Geçen gün PHP yazarken bulduğum iki fonksiyonun karşılaşmasını yapmayı düşünüyorum.

Çoğu zaman bir değişkenin sayı mı olduğu yoksa yazı mı olduğunu anlamamız gerekebilir. Bu durumda is_numeric() fonksiyonunu kullanmamız gerekir. -1, 0, 1, 1.5 gibi ifadeleri 1 olarak yani true olarak döndürüp, 1,5 ve 1 elma gibi ifadeleri false olarak döndürmekte.

Bazen sayı olmasındansa tam sayı olmasını da sorguluyor olabiliriz. İşte bu gibi durumlar için ise ctype_digit() fonksiyonu kullanılmaktadır. -1, 1.5, 1,5 ve tüm yazılı ifadeleri false olarak dönürüp, 0 ve tüm pozitif tam sayıları true olarak döndürmekte.

Debianda tek pencere GIMP kullanmak

Debian'ın kararsız ve deneysel sürümleri de dahil 2.7 sürümüyle birlikte gelen tek pencereli GIMP özelliği malesef yoktu. Bunun için başka bir depodan indirmemiz gerekmekte. Bunun için gedit /etc/apt/sources.list komutuyla depo ekleme dosyasını açarız. Ve aşağıdaki depoları kullandığımız sürüme göre ekleriz.


Squeeze için:
deb http://notesalexp.org/debian/squeeze/ squeeze main

Wheezy için:
deb http://notesalexp.org/debian/wheezy/ wheezy main

Sid için:
deb http://notesalexp.org/debian/sid/ sid main

Daha sonra burdaki satırlar ile apt anahtarı ve gimp2.7'yi kurarak tek pencere modlu gimp keyfini yaşayabilirsiniz.

wget -O - http://notesalexp.org/debian/alexp_key.asc | sudo apt-key add -

apt-get install gimp2.7


ek not1: ilk kurulumda libgimp paketi bende sorun çıkarttı. eski libgimp2.0'ı silip yeniden denerseniz sorun kalmaz.

ek not2: sistem her açılışında çok pencere modlu açılıyor(son açışımda bu sorun olmadı). menübardan windows > single-window mod'u açmanız gerekiyor.

ek not3: ayrıca şuan yüklendiğinde 2.7.5 geliştirme sürümü yüklenmekte.

Debian Türleri

Öncelikle debian'a tamamen yabancı olanlar için bir şeyler karalamak istedim. Debian ana hattıyla kararlı, deneme ve kararsız diye 3 tür üzerinden yayın yapmakta.  

Kararlı sürümler genel anlamıyla 2-3 yılda bir çıkan, ve adından da anlaşıldığı üzre kararlı duran sürümlerdir.  

Deneme sürümler ise kararlı sürüm üzerine yapılan deneme paketlerin olduğu ama nispeten masaüstü kullanıcıları için yeterli ve güzel bir debian türüdür. Genellikle haftada 1 filan güncellenmektedir.

Kararsız sürümler ise her güncellenen paketin dağıtıldığı sistemlerdir. Tamamen macera ve geliştirme için kullanılabileceği söylenebilir.

Debian'a geçiş

Sınavlarım henüz bitmemesine rağmen ubuntu'daki özgürlüğü kısıtlayıcı bazı nedenlerden dolayı emektar laptopumda debian kullanmaya başlamayı düşünüyorum. zaman olarak da sanırım bu haftasonu ve daha sonrasında 10 gb'lık deneme alanımda bunu uygulamak istiyorum. duruma göre ubuntu yerine de kullanacağım. Şimdilik temel anlamda yalnız bunları söylemek istedim. Bir sonraki yazımda da hangi debian yansımalarının ne anlama geldiğini internetteki yorumlardan derlenmiş biçimde paylaşacağım.

Ubuntu 11.10 ilk izlenimler

Evet arkadaşlar dün kütüphanede ders filan yaparken çıktı yeni sürüm. ben de hemen güncelleyeyim dedim. kütüphanenin kapanması ve kantinde güncellemeye devam etmem ile güncelleme kısmını bir şekilde yaptım. Sıra geldi kullanmaya.

Açılışta 120 saniye bekleten bir "Waiting for network configuration" hatası aldıydım. Bunun nedeni ankara üniversitesi ağını kapatmamamdı. Ve daha bilimsel tarifle /etc/network içerisindeki interfaces dosyasındaki gereksiz ağları silmek ile çözüldü.

Asıl Gözüme çarpan nokta ise font büyüklüklerini ve daha bir çok temasal olayı rahatlıkla değiştirememek oldu. Biraz daha windows özentiliği olmuş ama windowstan en büyük farkı ile yani ek programlarından gnome tweak tools ile o tip işleri çözmüş olduk. ama hala temaya eskisi kadar müdahale edemiyorum. Gerçi zamanla nasıl düzenleneceği çıkacaktır..

Biraz daha ek olarak sistem arada dandiklikler yapabiliyor. neden yaptığını tam olarak anlayamadım ama çözüldükçe haber ederim.

Yarılama ve Newton-Raphson yönteminin uygulaması

Yarılama ve Newton-Raphson yönteminin MS Excel ya da OO Calc(LibreOffice Calc) programlarıyla bir uygulamasını paylaşmak istiyorum.

Kökleri bulunacak denklemlere ulaşmak için: 1. denklem 2. denklem

Çözümler için ise:

MS Excel için

Libre Office Calc için

2011 Nobel Fizik Ödülü

2011'in nobel fizik ödülü sahiplerini buldu. Konusuna gelince geçen yılın Grafen'inin aksine, astrofizik alanında, evrenin nereye gidebileceğini düşünen insanların belirli hesaplamalarına verdiler. Yani özet olarak anladığım teknolojinin geliştiği, gelişme kaydettiği bir yıl olmamış demek ki. Elbette ki astrofiziğe ters ya da gıcık değilim ama ben yine teknolojinin geleceği ile ilgili bir ödül bekliyordum. kazananlara tekrardan başarılar dileyim.

Piklab Hakkında

Kendi sayfasında dediği gibi PIC mikrokontrolcüler için bir IDE. Yani kısaca şunu diyeyim linux ortamı için pic program derleyici ve programlayıcı.

Programın özelliklerine gelelim. Assemble, C ve Jal için birkaç compiler mevcut. Ama ben basic çalıştıramadım. Nedeni ilgili compiler'ı wine ile kurmamız gerektiğinden ve wine ile programı açamamamdan dolayı olsa gerek.

Programın kendi içerisinde oldukça zengin mikrokontrolcüler var. Kullandığınız aygıtın desteklenip desteklenmediğine bakabilirsiniz ama çoğunlukla desteklendiğini göreceksiniz.

Giriş için bu kadar bahsetmek yeterli sanırım.

Cannot modify header information hatası

Aslı : "Warning: Cannot modify header information - headers already sent by (output started at /home/www/x/html/x.php:2)" şeklinde olan bu hataya bir kaç neden yol açmaktaymış. 

1. olarak php etiketlerini açıp kapatırken arada boşluk kullanmanız bu hataya neden olabilir. çözüm olarak <?php etiketinden alt ve üst satırını boş bırakmayın ve kapatırken de ?>'in alt ve üst satırını boş bırakmayın.
2. neden ise php dosyasının yanlış kodlanmasıdır. çözümü dosyanın kodlanmasını değiştirmek olacaktır.
3. ve en çok karşılaşılan sorunun çözümü ise <?php 'nin hemen sonrasına ob_start(); ?> nin de hemen öncesine ob_end_flush(); kodlarının koyulmasıdır..

Sorunsuz Fontlar

HTML'yi kullanırken görsel alanda belki de en önemli sorunumuz font olmuştur. Malesef ki bilgisayarlarda ya da maclerde her font düzgün çalışmamaktadır. Ama eğer font kullanırken aşağıdakileri kullanırsanız tarayıcılar ve bilgisayarlardaki farklı görünme sorununu aşabilirsiniz.


Yarılama Algoritması

Nümerik analiz konusunda en temel kök bulma yöntemlerinden olan bisection(yarılama) metodunun algoritması ile başlamak istiyorum. Eğer yazacak zaman olursa kod versiyonunu ve diğer metodları da teker teker yapmak isterim.. Şimdi algoritmayı yazıp biraz da açıklayalım.

gir a,b,M,d,z
u <- f(a) 
v <- f(b) 
e <- b-a 
çıktı a,b,u,v
eğer ( sign(u) = sign (v) ) ise dur
döngü k=1 -> M
 e <- e/2 
 c <- a+e 
 w <- f(c) 
 çıktı z,c,w,e
 eğer (|e|< d veya |w|< z) ise dur
 eğer (sign(w) != sign(u)) ise
  b <- c 
  v <- w  
 aksi halde
  a <- c 
  u <- w  
 yap
döngü bitir