2
Kas

Unity kullanmaya başlaması ile Ubuntu beni kendinden soğutmuştu ama yine de bir şans vermeliyim diye düşünerek kurlumu yaptım. Açıkçası zaman geçtikçe Unity kendini bana sevdirdi, şu an başka masaüstü ortamlarını kullanamaz oldum. Önce hangi programlarla birlikte geldiğine bakalım:

  • Masaüstü Ortamı, Unity
  • Web Tarayıcısı, Firefox
  • Müzik Çalar, Banshee
  • Ofis Programı, LibreOffice
  • Posta Programı, Thunderbird

Kurulum

Kurulum gayet basit, görsel olarak her şeyi hallediyorsunuz. Kurulumun en sevdiğim yanı, temel ayarları yaptıktan sonra dosyaları kopyalarken, yani kurulum yapılırken sizden ayrıntı ayarları istemesiydi. Böylece zamandan olabildiğine kazandırmaya çalışmışlar.

Aynı zamanda kuruluma başlamadan önce gerekli kodek flash java gibi yazılımları da kurmak isteyip istemediğinizi soruyor. Böylece de kurulumdan sonra bunlarla uğraşmak zorunda kalmıyorsunuz. Eğer kurmadan önce bunu seçmemişseniz ubuntu-restricted-extras paketini kurarak bunu halledebilirsiniz.

Görünüm ve Kullanılabilirlik

Unity çok hoş bir masaüstü ortamı olmuş. Uygulamaların büyütüldüğünde bütün ekranı kaplaması ve uygulamanın menüsünün üstteki panele gitmesi uygulama için daha fazla ayırarak kullanılabilirliği arttırmış. Yine uygulama tam ekran değilken menüsünün üst panele gitmesi kullanılabilirliği kötü etkiliyor ama zamanla ona da alışıyorsunuz.

Üst panel oldukça kullanışlı. Özellikle en sağdaki düğme sayesinde birçok ayara kolaylıkla ulaşabiliyorsunuz. Onun yanındaki adınızın bulunduğu düğme sayesinde kullanıcıları yönetebiliyorsunuz. Ve yine onun solundaki ses düğmesinden sesi ve müzik programınızı kontrol edebiliyorsunuz. Yine sağındaki düğmeden internet bağlantınızı yönetebiliyorsunuz.

Alt+F2 ile ya da soldaki yerden açılan uygulama menüsü ya da Hızlı Menü’yü pek sevmedim. Görünü hoş olmasına rağmen kullanılabilirliği pek iyi değil.

Uygulamalar

Uygulamaların yükleme/kaldırma işlemi artık tamamen Ubuntu Yazılım Merkezi tarafından yapılıyor. Yazılım merkezi oldukça kullanışlı, uygulamaların ekran görüntüleri, oylamaları, hakkında yapılan yorumları göstermesi çok iyi bir özellik. En çok oy alan uygulamaları da listeleyebiliyor. Bazı kategorilerin içinde alt kategoriler de bulmak mümkün, böylece yazılım bulmak kolaylaşıyor. (Örneğin İnternet->Sohbet uygulamaları)

 

 

 

 

 

 

 

Öntanımlı müzik uygulaması olan Banshee‘ye pek ısınamadım ve severek kullandığım Clementine‘yi kurdum. Kendisini ses menüsüne yerleştirdi ve sistemle uyum sağladı. Aynı zamanda öntanımlı sohbet programı yerine emesene‘yi kurdum. O da sistemle uyum içinde çalışıyor, örneğin paneldeki posta düğmesinden emesene durumunuzu güncelleyebiliyorsunuz. Ve tabii ki ortam oynatıcısı olarak VLC Player‘ı kurdum. Zaten en çok oylanan uygulamalar arasında göreceksinizdir.

Önceden dosya yedekleme ve senkronize servisi olarak Wuala‘yı kullanırken, Ubuntu sayesinde Ubuntu One‘ye geçtim. Sistemle tamamen uyumlu bir şekilde belirlediğiniz dizinleri anında eşliyor. Ubuntu One aynı zamanda dosya yöneticisi ile de uyumlu.

Kullanım İpuçları

Unityde bazı işe yarar klavye kısayolları bulunmakta. Şöyle ki:

  • Meta(Windows) tuşuna basınca uygulama menüsünü görebilirsiniz.
  • Meta tuşuna uzun basarak, sol menün görünmesini sağlayabilirsiniz, aynı zamanda uygulamaların üzerinde beliren rakamlara basarak uygulamayı başlatabilirsiniz. (Meta + 1, Dosya yöneticisi, Meta + 2, Firefox gibi)
  • Meta + W’ye basarak açık olan pencereleri GNOME 3′deki gibi görebilirsiniz.

Ubuntu geliştiricileri çok iyi iş çıkarmış. Kullanılabilirliği yüksek, stabil çalışan, görünümü hoş bir sistem olmuş. Kurmadan deneme yapmak istiyorsanız çevrimiçi olarak Ubuntu’yu çok kısıtlı da olsa deneyebilirsiniz. Bu da ayrı bir güzel özelliği.

12
Ağu

Düzgün kullanabileceğim xfce destekli bir dağıtım arıyordum. Önce Debian kurayım dedim, xfce 4.8i hala desteklemediğini gördüm. Sonra zenwalk vs vs gibi dağıtımları sanal makinede denemem sonunda Fedorada karar kıldım.

Kurulum gayet basit, kurulum esnasında klavye düzenini seçip disk bölümlerini ayarlayıp kurulumu bitiriyorsunuz. Kurulumdan sonra bir bakıyorsunuz ki sistem dili İngilizce düzeltmek için hemen terminali açıp şu komutları verin:

su
yum install system-config-language

Ardından Sistem (System) > Yönetim (Administration) > Dil (Language) yolunu izleyerek Türkçe’yi seçiyoruz ve sistemi yeniden başlatıyoruz.
Her giriş yaptığımda şöyle bir hata veriyordu:

isa-xfce internet adresi sorgulanamıyor.
Bu Xfce’nin doğru çalışması engelleyebilir.
Belki isa-xfce‘i /etc/hosts dosyasına ekleyerek bu
sorunu çözebilirsiniz.

Bu sorunu düzeltmek için /etc/hosts açtım ve içini tamamen silip şöyle düzenledim:

127.0.0.1 localhost
127.0.1.1 isa-xfce

Sizde de bu sorun çıkıyorsa bu şekilde halledebilirsiniz fakat hatadaki koyu yazan yer ile dosyadaki koyu yazan yeri aynı yapın. Kurulum sonrası yapacaklar daha bitmedi. Codecler flash ve java yazılımı kurlu gelmiyor ayrıca ekran kartının sürücüsünü de kurmanız gerekmekte. Bunları çok basit bir şekilde easyLife adlı yardımcı programı kullanarak yükleyebilirsiniz.

Fedora kurulu geldiği haliyle dvd, vcd gibi şeyleri oynatamıyor. Bunun için önce VLC’yi yükleyip ardından Ayarlar -> Kaldırılabilir Sürücüler ve Ortam -> Çoklu ortam yoluna gelip şu değişiklikleri yapın:

Özetlemek gerekirse fedorayı sevdim fakat pek kullanıcı dostu değil hele ki kurulumdan sonraki anlarda. Ama şu ana kadarki en eli yüzü düzgün xfce dağıtımı. LinuxBSDos’un incelemesini de şurada bulabilirsiniz.

21
Haz

Yeni bir proje geldi aklıma aslında benim aklıma gelmedi bir yerlerde görmüştüm bunu ama durumu ne bilmiyorum ayrıca uzun zamandır ses çıkmıyor benim de aklıma bu projeyi gerçekleştirmek geldi. Proje şu ki; bir program düşünün masaüstünde ve bilumum kde programlarındaki görsel değişiklikleri bir dosyaya kaydediyor ve yine bu program yardımıyla yüklüyor.

Örneğin Özgürlükİçin Tema bölümünde bir masaüstü tasarımı gördünüz, çok sevdiniz. Bir bir masaüstü arkaplanını, sistem temasını, ikon temasını buldunuz ve yaptınız ama çok yorucu oldu ve tam olmadı gibi. Artık buna gerek yok bu program sayesinde tek bir dosya ile o gördüğünüz tasarıma kavuşacaksınız. Eve gelen pazarlamacılar gibi konuştum :) .

Tabii daha fikir aşamasında olduğunu belirtmek lazım, şimdilik bu dosyaları nasıl toplayabilceğim, bu ayarların sistemin nerelerinde olduğunu bulmakla uğraşıyorum biraz yol katettim gibi. Bunları tamamlarsam gerisi kolay gibi gözüküyor. Ha ayrıca kde ile içli dışlı olan arkadaşlarda da yardımlarını bekliyorum.

22
May

Her ne kadar özgür bir yazılım olmasa da Opera en sevdiğim tarayıcıdır. Neden mi? Çünkü hızlı sade, hoş. En sevdiğim özellikleri olarak fare hareketlerini algılaması, sekme kilitleme(firefoxdaki uyhulama sekmesi, chromedaki sekme iğneleme), speed dial ve aklıma gelmeyenler.

Şimdi bazı basit şeylerden bahsedeyim, Operayı Pardusa yüklediğimde çektiğim en büyük sıkıntı orta tuşa bastığımda panodaki yazıyı yapıştırmasıydı, sayfayı kaydırmıyordu. Bunu düzeltmek için yapmanız gereken şey çok basit. Hemen shift+orta tuş kombinasyonunu uygulayın ve orta tuşa vermek istediğiniz görevi seçin.

İkinci bir sorun opera için bir flash engelleyicisi olmamasıydı.(Firefoxdaki FlashBlock gibi). Ama zaten Opera bu özelliği sunuyormuş. Hemen Menü->Ayarlar->Tercihler->Gelişmiş sekmesi altındaki Eklentileri Etkinleştirin altındaki Eklentileri sadece gerektiğinde etkinleştiri seçin. Artık ortaya çıkan flash reklamlar/videolar sadece siz üzerine tıkladığınızda çalışacak.

Gerekli Eklentiler

Opera 11 öncesi tarayıcıya eklenti yükleyemiyordunuz sadece bileşenler(programcık tarzı şeyler) yükleyebiliyordunuz. Bu sürümle beraber birçok güzel eklentiyi yükleyebilirsiniz. Şimdi bazı işe yarar eklentilerden bahsedeyim:

  • Documents Preview: .ppt .doc ve .pdf dosyalarını bilgisayarınıza indirmeden Google Dökümanlar aracılığıyla görüntüleyebiliyorsunuz.
  • Youtube AdsFree: Youtubede videoyu oynatırken bir anda ortaya çıkan reklamları yok eder.
  • Download Media Bar: Youtube gibi sitelerdeki videoların altında küçük bir bar olarak belirirr ve videoları indirmenizi sağlar.
  • Image Preview Popup: Resimlerin önizlemelerinin üzerine gelerek orjinal boyutlarındakini görebileceksiniz.
  • Opera Internal Pages: Operanın özel sayfalarına kolayca ulaşabilmenizi sağlayan ufak eklenti.
  • AutoPatchWork: Bir sonraki sayfayı otomatik olarak yükleyip sayfanın sonuna eklemeye yarayan eklenti.
  • open-in-background-with-long-press: Linke uzun tıklayarak yeni bir sekmede açılmasını sağlayabilirsiniz(gerçi orta tuş ile de bunu yapabilirsiniz ama kimi zaman daha çok işe yarıyor bu.)
  • Snap Links: Fare ile çizdiğiniz karenin içinde kalan bütün linkleri yeni sekmede açar. Çok işe yarıyor. Bir not: kareyi çizmeye boş bir alandan başlayın.
  • Kick Ass: Sayfaları darmadağın edebileceğiniz çok hoş bir oyun.

Şimdilik bunları buldum sizinde sevdiğiniz eklentiler varsa bir yorum atın.

20
Mar

Şu forum başlığında gördüğüm oyunu denemek istedim ve indirdim ama adobe air istiyordu. Bende gittim sitesinden .bin uzantılı versiyonunu indirdim ama “sadece deb ve rpm tabanlı dağıtımlar destekleniyor” dedi ve kapandı. Biraz araştırmadan sonra nasıl kurulacağını buldum. Kısaca şu dosyayı indirin ve

chmod +x air.sh
sudo ./air.sh

diyerek kurulumu başlatın. Kurulum bitti. Fakat indirdiğiniz “.air” dosyalarını direk kullanamıyorsunuz. Kullanmak için air dosyasını bir yere çıkartın. Örnek olarak dosyayı ~/program dizinine çıkarttınız(“~” /home/kullanıcı_adı oluyor.). Şu komutu vererek çalıştırabilirsiniz:

air -nodebug ~/program/META-INF/AIR/application.xml ~/program

Adobe Air’i kaldırmak için “/opt/air-sdk” dizinini ve “/usr/bin/air” dosyasını silmeniz yeterli.

13
Mar

PyQt nedir ve neden PyQt

Qt arayüz kitaplığını python ile kullanabilmenizi sağlayan şeydir. Benim için “neden qt” sorusunun cevabı kolay kodlama ve sistem uyumudur. Buna ek olarak içinde birçok modül barındırmasını da diyebiliriz fakat pythonun zengin kütüphaneleri sayesinde bunlara pek fazla ihtiyaç duymayacağız.

PyQt’yi buradan indirip kurabilirsiniz. Eğer linux kullanıyorsanız dağıtımınızın paket yöneticisinden kolayca kurabilirsiniz. PyQt ile beraber bazı programlar geliyor bunlar:

  • Designer: Görsel olarak formlar hazırlamamızı sağlayacak uygulama.
  • Linguist: PyQt’nin büyük nimetlerinden biri olan çeviri sisteminin bir aracı.
  • Assistant: Qt belgelerine buradan erişebilirsiniz. İlerleyen zamanlarda işinize çok yarayacak.

Bilmeniz gereken birkaç şey:

Qt’deki her parçacık QObject’lerden türemiştir. Görsel şeyler ise(label, buton, textbox vs) QObjectten türemiş QWidgetlerdir. Yani bir QLabel hem QObjectin hemde QWidget’in özelliklerini hemde kendi özelliklerini içerir. Bu gereksiz bilgiden sonra devam ediyoruz:

Efsane Merhaba Dünya Uygulaması

Bomboş bir pencere gösteren bir uygulama yapacağız şimdi. Hemen favori metin editörünüzü açın ve içine şunları yazın:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- coding: utf-8 -*-
 
import sys # sys modülünü yükledik
from PyQt4 import QtGui # PyQt4'ün gui modülünü yükledik
 
def main(): # main adında bir fonksiyon oluşturduk.
    app = QtGui.QApplication(sys.argv) # her pyqt uygulaması bir qapplication içermek zorundadır.
                                      # dolayısıyla bizde bir tane tanımladık.
    mw = QtGui.QMainWindow() # mw adında bir mainwindow tanımladık
    mw.setWindowTitle(u"Merhaba Dünya") # mw'nin başlığnı Merhaba Dünya olarak değiştirdik.
                                        # u koymamızın sebebi Türkçe karakterleri doğru gösterebilmek.
    mw.resize(100, 100) # penceremizin boyutunu değiştirdik.
    mw.show() # ve pencereyi gösterdik.
 
    return app.exec_() # böylece uygulamamızı başlatık.
 
if __name__ == "__main__":  # python dosyamız çalıştırıldığında:
    main() # main adlı fonksiyonumuz çalışsın dedik.

Bu kod ile böyle bir şey elde ettik:
Şimdi işleri biraz daha karıştıralım mesela penceremizin içine bir label birde button koyalım ve bunların yazılarını değiştirelim. Kodlarımızı şu şekilde düzenliyoruz:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding: utf-8 -*-
 
import sys
from PyQt4 import QtGui
 
def main():
    app = QtGui.QApplication(sys.argv)
 
    # Penceremiz ile ilgili işlemler:
    mw = QtGui.QMainWindow()
    mw.setWindowTitle(u"Merhaba Dünya")
    mw.resize(300, 100)
 
    # Penceremizin içerikleri:
    layout = QtGui.QVBoxLayout()
    # Bir düzen kutusu oluşturduk.
    #Bunlar form tasarımında bize kolaylık sağlar.
    # Buradaki bir VerticalBoxLayout.
    #Yani öğeleri dikey olarak sıralıyor.
 
    #QMainWindow birçok özelliğe sahiptir. Üzerine toolBar'lar dockWindowlar
    #statusBarlar ekleyebilirsiniz. Bunların hepsinin ayrı bir alanı vardır.
    #Diğer ekleyeceğiniz öğeler başka bir widget üzerinde olmalıdır.
    #o yüzden bir widget oluşturuyoruz.
 
    w = QtGui.QWidget() # Widgetimizi oluşturduk.
    mw.setCentralWidget(w) #ve widget'imizi formun ana widgeti olarak belirledik.
 
    label = QtGui.QLabel() # Bir label yani yazı alanı oluşturduk.
    label.setText(u"Ben bir labelim ve buda benim yazım!")
    button = QtGui.QPushButton() # Bir pushbutton oluşturduk.
    button.setText(u"Ben bir QPushButtonum!") #buttonun üzerindeki yazıyı değiştirdik.
 
    layout.addWidget(label)
    layout.addWidget(button)
    # Yukarıda oluştuduğumuz öğeleri layoutun içine yerleştirdik.
 
    mw.centralWidget().setLayout(layout) #yukarıda setCentralWidget() ile eklediğimiz widget'e
				#bu şekilde ulaşabilirsiniz.
				#isterseniz bu kodu w.setLayout(layout) olarak da kullanabilirsiniz.
				#Bu kod ile layout öğesini w'nin içine yerleştirdik.
 
    mw.show() # Penceremizi gösterdik.
 
    return app.exec_()
 
if __name__ == "__main__":
    main()

Şöyle bir görüntü elde ettik:
Bu örnekte bir QMainWindow kullanmıştık. QMainWindow kullanmadan istediğimiz her widget’i bir pencere gibi gösterebilirz bu işimizi biraz basitleştirebilir ama QMainWindow’un nimetlerinden yararlanmamızı engelleyebilir. Böylede bir örnek yapalım:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys
from PyQt4 import QtGui
 
def main():
    app = QtGui.QApplication(sys.argv)
 
    w = QtGui.QWidget() # Widgetimizi oluşturduk.
    w.setWindowTitle(u"Merhaba Dünya")
    w.resize(300, 100)
 
    # Penceremizin içerikleri:
    layout = QtGui.QVBoxLayout()
 
    label = QtGui.QLabel()
    label.setText(u"Ben bir labelim ve buda benim yazım!")
    button = QtGui.QPushButton()
    button.setText(u"Ben bir QPushButtonum!")
 
    layout.addWidget(label)
    layout.addWidget(button)
 
    w.setLayout(layout)
    w.show() #widget gösterdik.
 
    return app.exec_()
 
if __name__ == "__main__":
    main()

Bu kodlar ile yine aynı görüntüyü elde edeceğiz. Bu şekilde kodları elimizle yazıp penceremizi oluşturabiliyoruz. Bu sefer Qt Designer kullanalım ve işe yarar bir uygulama yapalım ama uygulama geçmeden önce:

Sinya/Slot Kavramı

Örneğimize devam etmeden önce  sinyal slot kavramı üzerinde duralım. Nedir bu? Örneğin formunuzda bir button var. Buna tıkladığınızda bir şeyler yapmasını istiyorsunuz. Yani buttona tıklandığında bir sinyal çıkıyor ve o sinyali bir slot’a bağlayarak işlemlerimizi yapıyoruz. Örnek içinde kullanımını göreceksiniz:

Qt Designer Kullanarak Yapılan Bir Uygulama

Öncelikle Qt Designeri açıyoruz karşımıza bir diyalog geliyor, oradaki listeden “Main Window”a çift tıklıyoruz. Aşağıdaki gibi bir form tasarımı yapıyoruz.

Ve formun boş bir yerine tıklayıp resimde belirttiğim düğmeye basıyoruz. Böylece parçacıkların yerini otomatik düzenledi. Sonrasında bunu “form.ui” adında kaydediyoruz. Gördüğünüz gibi bir python dosyası değil ui dosyası oluştu.

Bu dosyayı kullanmanın 2 yolu var. Birincisi dosyayı python koduna çevireceğiz ve öyle kullanacağız. ikincisi bir modül yardımıyla bu dosyayı direk kullanacağız. Şimdi her ikisinide görelim.

Birinci yöntemi kullanmak için önce dosyayı python koduna çevirmeliyiz. dosyayı kaydettiğiniz yere gelin ve konsolu açın. Sonra şu komutu verin: “pyuic4 form.ui -o ui_form.py”. Böylece ui_form.py adında bir python dosyası elde ettik. Şimdi bu dosyayı kullanarak uygulamamızı yapalım. Aynı dizin içine form.py adında bir dosya oluşturun ve içeriğini şu şekilde değiştirin:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: utf-8 -*-
 
import sys
from PyQt4 import QtCore, QtGui #PyQt4'den QtCore ve QtGui'yi dahil ettik
from ui_form import Ui_MainWindow #ui_form.py dosyasının içindeki
					#Ui_MainWindow adlı sınıfı dahil ettik
 
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
#MainWindow adında bir sınıf oluşturduk.
#QtGui.QMainWindow diyerek mainwindow yaptık kendisini.
#Ui_MainWindow kullanabilmek için oraya ekledik.
    def __init__(self): #ana işlemlerin olduğu sınıf
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self) #Ui_MainWindow'ın içindeki setupUi fonksiyonuyla
			   #formumuzu yükledik.
	self.pushButton.clicked.connect(self.dosyaAc)
	#Bu şekilde pushButtonun clicked olayını(yani tıklama olayını)
	#dosyaAc adındaki fonksiyonumuza bağladık.
	#Özetlersek pushButtona tıklandığında dosyaAc fonksiyonu çalışacak.
 
	self.pushButton_2.clicked.connect(self.kaydet)
	#aynı şekilde bunu da kaydet fonksiyonuna bağladık.
 
	"""
	Yukarıdaki gibi sinyalleri bağlayabileceğiniz gibi
	self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.dosyaAc)
	şeklinde de bağlayabilirsiniz. Ama diğer yöntem daha basit.
	"""
 
	self.dosya = ""
 
    def dosyaAc(self):
        self.dosya = unicode(QtGui.QFileDialog.getOpenFileName(self, u"Düzenlenecek dosyayı seçin", ".", u"Bütün Dosyalar (*.*)"))
        #Bir diyalog göstererek dosya seçilmesini istedik.
        #Gelen dosya yolunu self.dosya'ya eşitledik.
 
        f = open(self.dosya, 'r')#dosyamızı okuma modunda açtık
 
        self.plainTextEdit.setPlainText(unicode(f.read()))
        #dosyanın içeriğini okuyup plainTextEdite koyduk.
 
        f.close()
 
    def kaydet(self):
        file = open(self.dosya, 'w') #yazma modunda dosyayı açtık
        file.write(self.plainTextEdit.toPlainText()) #dosyanın içine yazdık
        file.close()
 
def main():
    app = QtGui.QApplication(sys.argv)
 
    mw = MainWindow()
    mw.show()
 
    return app.exec_()
 
if __name__ == "__main__":
    main()

Bu performanslı ama biraz uzun yoldu. Şimdi ui dosyasını nasıl direkt olarak kullanacağımızı görelim. Bu sefer sadece farklılıkları yazıyorum:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
 
import sys
from PyQt4 import QtCore, QtGui, uic #ek olarak uic modülünü dahil ettik
#gördüğünüz gini ui_form.py'yi import etmedik çünkü onunla işimiz yok
#bu sefer direk ui dosyasını kullanacağız.
 
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        uic.loadUi("form.ui", self)
        #Bu sefer bu komutu kullanarak formumuzu yükledik.
        #Birinci paranametre olarak ui dosyasnının yolunu girdik.
        #Diğer kodlarda değişen bir şey yok.

Bu yöntemin yararı her seferinde ui dosyasını py dosyasına dönüştürme zorunluluğunuzun olmaması. Biraz daha performanssız ama çok çok fazla form vs kullanmadıkça bir sorun olacağını sanmam.

Evet ilk dersin sonuna geldik :) . Şuan çok yoruldum, zaten yorgundum. Pek düzgün anlatamamış olabilirim, anlamadığınız yerler olabilir sorunlarınızı/sorularınızı buraya yazarsanız cevaplamaya çalışırım :) Diğer derste daha gelişmiş bir uygulama yapıp resource ve yerelleştirme sistemini anlatmaya çalışacağım

2
Mar

Bildiğiniz gibi form/widget tasarımlarınızı qt designer üstünde yapıp bir ui dosyası elde edebiliyorsunuz. Bu ui dosyasını da “pyuic4 uidosyası.ui -o pydosyası.py” gibi bir komutla python dosyasına çevirebiliyorsunuz. Fakat her düzenleme yaptığınızda bunu py dosyasına dönüştürmek tam bir çile. Bunun için uic modülünü kullanabilirsiniz. Bunun sayesinde ui dosyalarını çevirmeye gerek kalmadan direkt olarak kullanabiliyoruz. Hemen bir örneğe göz atalım:

from PyQt4 import QtGui, QtCore, uic # gerekli modüller
 
class form(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)
        uic.loadUi("ui/form.ui", self) #ui klasörünün içindeki form.ui dosyasını yüklettirdik.

Form üzerindeki bir forma self.button olarak ulaşabilirsiniz. “self.” olmasının sebebi ikinci paranametreye self dememiz.

self.ui = uic.loadUi("ui/form.ui")

Bu şekilde ise form üzerindeki butona self.ui.button şeklinde ulaşabilirsiniz.

Acaba bu yöntemin performansı kötü etkiliyen bir yönü var mı, bilmiyorum. Ama siz program üzerindeki çalışmalarınızı bu şekilde yapıp sürüm çıkarmadan önce py dosyalarına çevirerek de kullanabilirsiniz.

22
Şub

Python’da programınızın ayarlarını kaydetmek için veya başka her türlü işinizi halletmek için ayar dosyalarını kullanabilirsiniz. Bu dosyalarla uğraşmak için ConfigParser(python 3.0′da configparser) adlı modülü kullanıyorum. Öncelikle bir ayar dosyasının yapısına bakalım:

[Genel]
başlık=Ayar Dosyası Okuma Örneği
[Grup]
sayı=2
hede=hödö
doğru/yanlış=true

Basit bir ayar dosyası buna benzer. Şimdi bir örnek kod ile bir ayar dosyasını nasıl okuyacağımızı görelim:

# -*- coding: utf-8 -*-
import ConfigParser # python 3.0'da configparser
 
cp = ConfigParser.RawConfigParser() #config parser'ımızı tanımladık
dosya = open("/ayar/dosyasının/yolu", 'r')  #ayar dosyamızı okuma modunda açtık
cp.readfp(dosya) #readfp komutuyla dosyayı cp'ye okutturduk.
 
baslik = cp.get("Genel", "başlık") #Üstteki ini dosyasındaki Genel grubundaki başlık değerini aldık. 
sayi = cp.getint("Grup", "sayı") #Grup grubundaki sayı değerini bir int olarak aldık.
dogru_yanlis = cp.getboolean("Grup", "doğru/yanlış") #bu şekilde bir bool değeri döndürdük. 
 #"true, 1, yes, on" gibi değerler True döndürürken "false, 0, no, off" gibi değerler False döndürür
 
print baslik #"Ayar Dosyası Okuma Örneği" şeklinde bir çıktı verecektir.
print sayi #2 şeklinde bir çıktı verecektir.
print dogru_yanlis #True çıktısı verecektir.

Ayar dosyası oluşturup içine yazmak için şöyle bir örnek yapalım:

# -*- coding: utf-8 -*-
import ConfigParser
 
cp = ConfigParser.RawConfigParser() #config parser'ımızı tanımladık
 
cp.add_section("Grup1") #Grup1 adında bir grup oluşturduk
cp.set("Grup1", "deneme", "deneme değeri") #Grup1'e deneme adında bir girdi oluşturduk ve değerini "deneme değeri" koyduk.
cp.set("Grup1", 'deneme2', 'true')
cp.set("Grup1", "deneme3", '5.1321')
 
dosya = open("/ayar/dosyasının/yolu", 'w')  #dosyayı oluşturduk
cp.write(dosya) #dosyanın içine yazdık
dosya.close() #dosyamızı kapattık.
 
"""
Dosyanın şuna benzer bir içeriği olacaktır:
 
[Grup1]
deneme = deneme değeri
deneme2 = true
deneme3 = 5.1321
"""
19
Şub

Kendime bir alan adı alınca yaptığım paketleri de paket deposuna dönüştürdüm. Depoyu aşağıdaki kodla ekleyebileceğiniz gibi paket yöneticisi üzerinden de ekleyebilirsiniz. Depo bilgileri:

  • Depo adresi: http://pardus.isamert.net/pisi-index.xml.xz
  • Depo adı: isamert (yada ne isterseniz :) )

Konsoldan eklemek için komut:

sudo pisi ar isamert http://pardus.isamert.net/pisi-index.xml.xz

Şunu belirtiyim depo 32-bit, 64-bit kullanıcılar pisi inşa dosyalarını derleyip kullanabilir, inşa dosyaları için de sizi buradan alalım:  http://www.wuala.com/isamert/Documents/Pisi-Packages

  • Not: Programları kendi sorumluluğunuz altında kuruyorsunuz herhangi bir zarardan ben sorumlu değilim :) . (Bir zarar geleceğini tahmin etmem, sistem bileşenleri yok yani depoda ;) ) Yaşadığınız bir sorun olursa da buraya yazarsanız sevinirim.

İnşa Dosyalarından Kurulum Yapmak

Verdiğim adreste direkt link olayı olmadığı için dosyaları bilgisayarınıza kaydetmeniz gerekiyor. Daha sonrasında konsolu açıp “sudo pisi build pspec.xml” komutunu veriyorsunuz ve pisi paketi o dizine oluşuyor. Çift tıklayarak kurulum yapabilirsiniz.

  • Not2: Depoda ne var ne yok, buraya girip öğrenebilirsiniz.
  • Not3: Benimde paketlerim var ben nasıl kurarım diyorsanız buradan.

Bir önceki dersimizde qt creator’u kurmuş bir iki şeye göz gezdirmiştik. Şimdi bir uygulama yaparak bir şeyler daha öğrenelim. Bir iki not ile başlayayım işe pardus 2011 sürümünde qt creator’un son sürümü bulunuyor, elle indirip kurmanıza gerek yok, paket yöneticisinden kurabilirsiniz.

Genel Bilgiler

Biraz qt ile ilgili temel şeylerden bahsedeyim. Qt sınıfındaki her şey QObject‘ten türemiştir. Görsel şeyler(tabwidget, label), QObject’ten türemiş QWidgetlerdir. Yani bir QLabel hem qobjectin hem de qwidget’in özelliklerini barındırır.

Derleme işleminden bahsedeyim. Derleme için qmake, make kullanılır. Tabii biz qt creator kullanacağımız için derleme işlemini ctrl + r ile halledeceğiz :)

Basit Bir Örnek

Qt Creator’den File->New File or Project->Qt GUI App. -> Gerekli adımları tamamladıktan sonra yeni bir proje oluşacak.

Şimdi içeriğine bakalım: en üstte bir dizin simgesi var ve yanında projenizin adı var. Bu projeniz :) . Altında bir .pro dosyası var. Bu önceki dersimde dediğim gibi proje dosyanız, proje bilgilerini içinde tutuyor. Onun altında 2 dizin daha var. Sources ve Headers. Bunlar projelerinizin kaynak dosyaları ve başlık dosyalarının dizinleri. Sourcesin içindeki main.cpp dosyası programınızı çalıştırmaya yarayan dosyadır(önceki derse bakın.). Headers’ın içindeki mainwindow.h dosyası Sources’in içindeki mainwindow.cpp’nin başlık dosyasıdır. En altta da Forms dizini bulunmakta. Buda formlarınızın bulunduğu dizindir. Buradaki formlar .ui uzantılıdır..ui dosyaları tasarım dosyalarıdır. Qt Creator derleme yapaken bunları c++ koduna otomatik olarak çevirir.

Şimdi basit bir metin not defteri uygulaması yapalım. Ama önce:

Sinyal/Slot Olayı

Örneğimize devam etmeden önce  sinyal slot kavramı üzerinde duralım. Nedir bu? Örneğin formunuzda bir button var. Buna tıkladığınızda bir şeyler yapmasını istiyorsunuz. Yani buttona tıklandığında bir sinyal çıkıyor ve o sinyali bir slot’a bağlayarak işlemlerimizi yapıyoruz. Peki neyi nasıl bağlarız:

connect(dugme, SIGNAL(clicked()), this, SLOT(close()));

Burada örnek olarak dugme’nin clicked() olayını this’in(yani formumuzun) close() olayına bağladık. Yani dugme’ye basıldığında formumuz kapanacak.

Örneğe Devam

Forms altındaki mainwindow.ui’ye çift tıklayalım ve aşağıdaki gibi bir form oluşturalım:

Bunları yaptıktan sonra Dosya Oku butonuna sağ tıklayıp -> Go to slot..’a basın. Select Signal penceresi gelecek oradan da clicked()‘a çift tıklayın. Böylece pushButtonun tıklanma olayını boş bir slota bağladık.(Üstteki anlattığım connect işlemini kendi otomatik ayarladı.) Ve bizi slotun içine yönlendirdi.

void MainWindow::on_pushButton_clicked()
{
}

Kodlarımızı bunun içine yazacağız artık.

QString str = QFileDialog::getOpenFileName(this, "Açılacak dosyayı seçin", ".", "Metin dosyaları (*.txt)");
QFile file(str);
file.open( QIODevice::ReadOnly | QIODevice::Text );
ui->plainTextEdit->setPlainText(file.readAll());
file.close();

1. satırda bir dosya açma diyaloğu gösterdik ve burdan gelecek dosya adını str’ye eşitledik. 2. satırda file adında bir QFile oluşturduk ve dosya yolunu str olarak belirledik. 3. satırda dosyamızı sadece okumak için açtık. 4. satırda plainTextEdit’e dosyanın içeriğini okuduk. 5. satırda da dosyamızı kapattık.

Çok biliyormuşum gibi bir şeyler anlatmaya çalıştım, yanlışım olmuş ise uyarırsanız, anlamadığınız yer olursa yazarsanız sevinirim. Yeni bir derste görüşmek üzere iyi günler :)

18
Şub

Bu yazıda kendi kullandığım, kullanmasam da yararlı bulduğum web/bulut bilişim uygulamalarından bahsedeceğim. Kim bilir ileride belki bilgisayarımıza hiç bir şey yüklemeden web uygulamalarını kullanırız. :)

OFİS

Ofis uygulaması olarak bilgisayarımda kurulu olan libreoffice'yi kullanmaya çalışsamda pek verim alamıyorum, çok hantal kendileri, ve arayüz biraz kötü olduğundan kullanması da zor. Google Docs bu konuda gayet iyi, basit arayüz, 1GB'lik depolama alanı. Hızlı işler için gayet iyi. Bunun yanında kullandığım birde Zoho var. Kendisi biraz yavaş olmasına karşın, çok iyi bir uygulama, eksiksiz her özelliğe sahip. Google hesabımla kullanabiliyorum kendisini.

İLETİŞİM/MSN

Bilgisayarımdaki emesene programı bunun için yetiyor fakat görüntülü görüşme yapmak imkansız, burada imo bana çare oluyor. Üye olma zorunluluğu olmadan giriş yapıp kullanıyorum. Hatta masaüstü bildirimleri bile var(chromium kullanıyorum belki ondandır.). Ayrıca sadece msn değil başka protokolleri de destekliyor. Denenmesi gerek.

DOSYA DEPOLAMA/SENKRONİZASYON

Genellikle dropbox kullanılır fakat kendisini sevmiyorum çünkü dizinlerin içeriklerini paylaşamıyorum(en azından ben bulamadım). Ben wuala kullanıyorum, kendisi ile dizinleri de paylaşıma açabiliyorum. Ayrıca sabit diskinizi paylaşıma açarak da alan kazanabiliyorsunuz, internette bir çok kupon dolanıyor bunları kullanarak da fazladan alan elde edebiliyorsunuz.

DİĞERLERİ

Bunların yanında benim kullanmadığım ama alanında iyi olanlar şöyleymiş:

Artık yayın hayatıma buradan devam edeceğim :) . Eski blog yazılarımı almayı düşünmüyorum onlara buradan ulaşabilirsiniz. Yeni bir sayfa açtım artık. En büyük değişiklik, yandaki reklamlar oldu :O . Bu  reklamlar ilk amacım ödediğim parayı çıkarmak ;) . Açıkçası ilk defa ücretli bir hosting alıyorum, çok heyecanlıyım :) .

Belki fark etmişsinizdir her yerde, kullanıcı adı olsun başka bir şey olsun isamert’i kullanıyorum yine bu geleneği bozmadım. Şimdilik  bu kadar, yeni bir yazıda buluşmak üzere.

15
Şub

Pars 0.5.1

Uzun bir aradan sonra yeni bir sürüm! Bu sürümde yapılanlar:

  • Neredeyse baştan yazdım. (Her seferinde bu oluyor :) )
  • Birçok hata giderildi.(Flash, java vs vs)
  • Artık sitelere girişde sorun olmuyor.
  • Bir önceki oturumu aynen açabiliyorsunuz.
  • Sayfadaki bir yazıyı seçip arama motorunda arama.
  • Sadece yazı halindeki linkleri seçip açabilme.
  • Ve aklıma gelmeyenler…

Notlar&Bilinen hatalar:

  • Bu sürüm daha çok test amaçlıdır ama indirip rahatlıkla kullanabilirsiniz.
  • Şu an için bir indirme yöneticisi ve geçmiş yöneticisi yok.
  • Merak edenler için ayar dosyalarını “~/.pars” içinde bulabilirsiniz.
  • Şu an sadece ingilizce olarak yayınladım diğer sorunları da çözünce hem Türkçe hem de pisi paketli bir şekilde yayınlaycağım.
  • Yorumlarınızı bekliyorum.

Gelecek sürüm planlarım:

  • İndirme ve geçmiş yöneticisi
  • Arama motoru yöneticisi
  • Gelişmiş yeni sekme sayfası. (Sayfa önizlemeriyle beraber yer imleri vs.)

İndir:

Ekran Görüntüleri:

Alttaki resimde gördüğünüz başlıksız sekmeler iğnelenmiş sekmelerdir. Google Chrome benzer bir özellik.

Daha fazla ekran görüntüsü için buradan.

 


7
Şub

Bilgisayarımda birden fazla dağıtım kurduğumda en sinir olduğum şey bir dağıtımda yaptığım değişikliğin diğerini etkilememesiydi. Bende nasıl bu sorunu giderebilirim diye düşününce basit bir çözüm buldum.

Önce ubuntuyu elime aldım kurulumunu yaptım. Ama ” /home” dizinini farklı bir bölüme bağladım. Ardından pardusu elime aldım kurulum yaparken, “/home” dizinini ubuntuyu kurarken ayarladığım bölüme bağladım(örn: /dev/sda6), ama o bölümü biçimlendirmedim. İki sisteminde kullanıcı adını ve şifresini aynı ayarladım.

Sonrasında pardusu açtım fakat kullanıcı girişi yaptıktan sonra beyaz bir konsol ekranı geliyordu. Bu sorunu çözmek için ise konsola “plasma-desktop” yazarak kde’yi başlattım ardından dolphini açtım ve kullanıcı dizinimdeki bütün dosyaları sildim, bilgisayarı yeniden başlatıp pardusu açtım, kullanıcı girişi yaptım bu sefer her şey düzgün bir şekilde açıldı. Artık ubuntuda yaptığım her değişiklik pardusu etkiliyor, yani chromium’a yeni bir yer imi eklediğimde pardusda da çıkıyor, çünkü aynı yarları kullanıyorlar :)

Böyle bir sistem kullanırken başınıza gelebilecek tek sorun programların farklı versiyonlarını kullanmak olacaktır. Bazen bazı programlar eski sürümlerinin ayar dosyalarını desteklemiyor dolayısıyla sorun çıkarabiliyorlar, ama şimdilik böyle bir sorunum yok! :)


8
Oca

Linux altında python ile güzel güzel çalışıyorum fakat windows altında işler böyle gitmiyor. En basit pyqt programı 2 mb tutuyor ve bunları düzenlemek vs bir çile. Bende eski dostum C#’a döndüm ama bir kere pythonun kolaylığına alışmıştım ve python kodlarını c#’ye uyarlamak beni zorladı. Biraz araştırmadan sonra Boo’yu buldum.

Şimdi Boo’dan bahsedeyim, logosu ismine yakışır bir logo açıkçası(Böö!). Boo nesneye yönelimli, python benzeri bir kodlama stiline sahip bir programlama dili.

Nasıl çalışır neye ihtiyaç duyar, hızlı mıdır bunlara bakmak gerekirse:  .Net veya Monoya ihtiyaç duymakta.(Dolayısıyla mono ile beraber linux altında da çalışabiliyor, ama windows altında .net kullanmak daha mantıklı olacaktır.) C# ile aynı hızda yani bir yavaşlık söz konusu değil. Scripleri için “.boo” uzantısını kullanıyor. Peki avantajları ne:

  • Öncelikle zengin .net kütüphanesini kullanabiliyorsunuz.
  • Python benzeri kodlama stili sayesinde “az kod, çok iş” .
  • İster script oluşturabilirsiniz isterseniz de çok kolay bir şekilde derleyip exe oluşturabilirsiniz.
  • Ayrıca bir şeyi ister “yazi as string = “değer” ” olarak tanımlayabileceğiniz gibi direk “yazi = “değer” ” diyebilirsiniz.

Nasıl Geliştirmeye Başlarım ?

Boo için çok güzel bir geliştirme ortamı olan SharpDevelop var. Sitesinden 3.2 veya 4. versiyonunu indirebilirsiniz. (4 henüz tam kararlı değil ben 3.2 kullanıyorum).  SharpDevelop’un Visual Studio’dan geri kalırbir tarafı yok hatta Boo’yu desteklemesiyle bir adım önde :) .

Bir Boo projesi oluşturmak için “Dosya->Yeni->Çözüm”  oradan Kategoriler altında Boo’yu seçip “Windows Uygulaması” yolunu takip edebilirsiniz.

SharpDevelop’u Boo için yapılandırmak isterseniz “Araçlar->Seçenekler->Genel->Görünüm”den “Tercih ettiğiniz ambiyansı seçiniz:”e “Boo”yu ayarlayın.

  • SharpDevelop Boo için şu özellikleri sunuyor:
  • Kod tamamlama.
  • Kod renklendirme.
  • C#, Python, VB:NET gibi dillerden Boo’ya kod çeviri veya tam tersi.
  • Veaklıma gelmeyenler.

SharpDevelop’da geliştirdiğiniz Boo projesini Visual Studioda ki gibi rahıtlıkla derleyebilirsiniz. Ayrıca SharDevelop Boo dili için gerekli olan birkaç dll dosyasını da exe dosyanızın yanına koyu veriyor. Yani Boo ile yaptığınız programı başka bir bilgisayarda çalışması için .Net haricinde hiç bir şeye ihtiyaç duymuyor.

Diğer geliştirme ortamları olarak ise Eclipse ve MonoDevelop bulunmakta. (Henüz tam anlamıyla deneyemedim.)

Peki Linux’da ?

Dediğim gibi Mono ile beraber linux altında  kullanılabiliyor. Geliştirme ortamı olarak ise Eclipse veya MonoDevelop kullanabilirsiniz(SharpDevelop .net odaklı olduğundan linux sürümü yok). Dağıtımınızın boo paketini ve MonoDevelop’u depodan kurarsanız her şey hazır(Pardusda her ikisi de depolarda bulunmakta). Ama birçok bağımlılığı nedeniyle mono linux altında pek tercih edilmiyor yani python veya başka bir dil biliyorsanız linuxda onunla devam edin derim. Ama mono ile yazılmış büyük projelerde yok değil, Banshee ve GNOME do bunlardan bazıları.

Boo’nun dezavantajı ise çok az sayıda kaynak bulunması. Ama ileride birçok  kaynağa sahip olacağından eminim :) .

İşinize yarayabilecek şeyler:

http://boo.codehaus.org/ – Boo’nun anasayfası

http://www.sharpdevelop.net/OpenSource/SD/Default.aspx – Sharpdevelop anasayfası

http://en.wikipedia.org/wiki/Boo_(programming_language) - Wikipedia’da Boo


29
Ara

WordPress’in admin paneline giremiyordum sonunda girdim biraz geç de olsa buradan da yazayım. Evet yeni sürüm çıktı:

Şuradan indirebilirsiniz.


20
Kas

Python’da “platform.dist()” kodynu kullanarak dağıtım hakkında bilgileri elde edebilirsiniz fakat bu her dağıtım için geçerli değil. Örneğin pardus, pclinuxos veya birçok başka dağıtımda bu kod boş bir değer döndürür. Bir çok araştırmadan sonra “/etc/lsb-release” dosyasını buldum, bu dosya bütün dağıtımlarda olmak zorundaymış. Bu dosyayı ayrıştırarak istediklerimi elde ettim. Koda şuradan ulaşabilirsiniz. Buradan verince bir şey anlaşılmıyor.

Kullanımına örnek olarak ise:

“distribution().name()” -> dağıtımın adını döndürür “Pardus”

“distribution().relase()” -> dağıtımın sürümünü döndürür “2009.2″

“distribution().codename()” -> dağıtımın kod adını döndürür “Geronticus eremita”

İşinize yaraması dileğiyle.


4
Kas

Okulda düzenlenecek olan bilim şenliği için matematik projesi araştırıyordum karşıma şöyle bir kod çıktı:

def solve(eq,var=’x'):
eq1 = eq.replace(“=”,”-(“)+”)”
c = eval(eq1,{var:1j})
return -c.real/c.imag

Evet sadece 3 satırda denklemi çözüyor. Kullanımına örnek ise:
print solve(“x – 2*x + 5*x – 46*(235-24) = x + 2″)

Bu arada hala bir proje bulabilmiş değilim aklınız bir şeyler gelirse yazmaktan çekinmeyin ;)

Bu arada kaynağıda belirtelim:
http://code.activestate.com/recipes/365013-linear-equations-solver-in-3-lines/


31
Eki

Uzun zamandır projelerim ile ilgili bir girdim olmadı. Kısaca bir açıklık getireyim. Şu anda iki projem var biri temizlikçi diğeri pars.

Temizlikçinin son durumu gayet iyi. Görsel anlamda tamamen değişti daha güzel bir görünüme sahip, eklenti desteği geldi yani içinde yardımcı programlar barındırıyor. Biraz ccleaner biraz advanced system care karışımı bir şey oldu.(Tek tıkla özelleştirilmiş temizlik, program ve eklenti galerisi gibi diğer özellikler var).

Pars Tarayıcı cephesinde ise yine işler iyi sayılır. Bir çok hatayı düzelttim, artık flash ve javalar sorunsuzca çalışıyor. Görsel anlamda bir kaç iyileştirme geldi. Eklenti desteği olacak(Pek emin değilim ama işler iyi gidiyor). Her tarayıcının gereği olan yer imleri ve geçmiş yöneticisi geldi. Sisteminizle tam entegre çalışacak(Sisteminizdeki indirme yöneticisini kullanmak gibi.) Tema desteği geldi(Şu an için sadece ikon teması). Ve bir kaç yeni özellik.

İki programı da ingilizce yazdım tabii Türkçe versiyonları da olacak. Bayram tatilinini ortalarında ikisini de yayınlarım diye düşünüyorum. Bu aralar yazılılar başlıyor o yüzden biraz sıkışığım. İstek ve önerilerinizi belirtmeden geçmeyin. Saygılar :)


30
Eki

Bu günlerde de okulun web sitesini yapmak için bir grup oluşturduk. Uzun zamandır ilgilenmediğim web programcılığna geri dönüş yaptım :) İyi derecede asp bildiğimi düşünüyordum ama o da ne! ASP microsoftun ve kapalı kaynak.

Eskiden php ile biraz uğraşmışlığım vardı, kendimi geliştiriyim bari dedim, biraz ilerlettim. Doğal olarak da linux altında hangi program iyidir, hangisi kolaydır biraz araştırma yaptım ve deneyimlerimi açıklıyorum :)

Kod Editörleri

Kate, Kwrite: Öncelikle şunu söyleyeyim kwrite daha düşük özelliklere sahip olduğundan kate kullanmak daha doğru olacaktır. Kate güzel bir kod renklendirme sunuyor, çoklu dosyalarla çalışmaıza ortam sunuyor, çeşitli eklentileride mevcut.

Gedit: GNOME masaüstünün öntanımlı editörü. Pek fazla deneyimim olmadı ama güzel eklentileri varmış araştırırsanız bir şeyler bulabilirsiniz.

Geany: Güzel bir geliştirme ortamı, kod renklendirme, basit kod tamamlama gibi özellikleri var basit ve hafif. Tercih edilebir.

Bluefish: Şu anda benimde kullandığım program oluyor kendisi. HTML ve PHP için mükemmel bir kod tamamlama sunuyor. Tabii güzel bir kod renklendirmeside sunuyor(Bazen sorun çıkarabiliyor, bende anlayamadım :) ) Hazır kodlar sunuyor(veritabanına bağlanma, form gibi…) Kesinlikle denemeye değer.

WYSIWYG Tarzı Editörler

KompoZer: HTML IDE’si diyebilirz. Diğer diller için birdesteği yok fakat kullanabilirsiniz.

Aptana: Bir eclipse eklentisi olarak kullanabileceğiniz veya sitesinden ” “unu indirip kullanabileceğiniz çok güzel bir IDE.  Bence tartışmasız bu kategorinin en iyisi.

SeaMonkey: Bir mozilla projesi içinde basit bir wysiwyg editörü barındırıyor.

FTP Araçları:

FileZilla: Tartışmasız en iyisi olarak düşünüyorum ve kullanıyorum, güzel bir ftp ve sftp istemcisi.

gFtp: GNOME kullananların tercih edebileceği bir ftp istemcisi, hiç denemedim.

kftpgrabber: KDE kullananların tercih edebileceği bir ftp istemcisi, hiç denemedim.

FireFtp: Bir mozilla firefox eklentisi, güzel basit ve firefox’un içinde kullandığınız için işlerinizi gerçekten kolaylaştırabilir.