Üstün Özgür

Üstün Özgür

Follow me on Twitter! http://twitter.com/ustunozgur

Email: ustunozgur+blog 'at' gmail.com

Follow me on Twitter!

Twitter
Üstün Özgür's profile »

Tags

  • Tip (5)
  • Apple (2)
  • Emacs (2)
  • Git (2)
  • Opera (2)
  • Django (1)
  • Music (1)
  • Readability (1)
  • Shell (1)
  • Turkce (1)
  • View all 22 tags »
  • Unix (1)
  • Vi (1)
  • ates (1)
  • bilkent (1)
  • damla (1)
  • damla ates (1)
  • extension (1)
  • iPad (1)
  • nanotam (1)
  • reference (1)
  • safari (1)
  • tech (1)
Subscribe to this posterous »
Unsubscribe »
Loading...
You're a contributor here (Edit)
This is your Space (Edit)
Follow by email »
Get the latest updates in your email box automatically.
Subscribe via RSS
March 14, 2011

damlaates.net

  • Edit
  • Delete
  • Tags
  • Autopost
http://damlaates.net Damla Ates'in yeni web sitesi.

Filed under  //

  • ates
  • bilkent
  • damla
  • damla ates
  • nanotam

Comments [0]

March 9, 2011

koseokuru.com

  • Edit
  • Delete
  • Tags
  • Autopost

Gazetelerin köşeyazılarına tek bir adresten ulaşmak için kullanabileceğiniz bir site yaptım. Şimdilik yedi gazetenin tüm köşeyazılarını her gün güncelleyerek gösteriyor.

http://koseokuru.com

http://twitter.com/koseokuru adresinden gelişmeleri takip edebilirsiniz. Facebook sayfası da http://www.facebook.com/pages/Koseokurucom/195045633849801 adresinde.

 

Comments [0]

March 3, 2011

Tips for using VirtualBox

  • Edit
  • Delete
  • Tags
  • Autopost
  1. Port forwarding:

http://www.virtualbox.org/manual/ch06.html#natforward

e.g :

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
VBoxManage modifyvm "VM name" --natpf1 "guestdjango,tcp,,8888,,8081"

ssh -p 2222 localhost

Start Django server at 0.0.0.0:8081 on guest, and access the site at 127.0.0.1:8888 on the host.

  1. Starting vm from command line:

    VBoxManage startvm “VM name”

This still displays a gui though. If you just want to start it up (to ssh), try

vboxheadless -s "VM name"

or better yet pass the `—type headless'‘ parameter to vboxmanage startvm so that it returns.

vboxmanage startvm "VM name" --type headless
  1. List vm’s:

    VBoxManage list vm

  2. List running vm’s:

    VBoxManage list runningvms

  3. See Vagrant for automation. http://vagrantup.com/

  4. Disable framebuffer if command line is slow. See http://serverfault.com/questions/148874/command-line-is-horribly-slow-in-ubun...

Sources: – http://michaelhallsmoore.com/blog/Running-A-Local-Web-Development-Environment... – http://mydebian.blogdns.org/?p=148

Comments [0]

February 21, 2011

Version Control with Cachebusting - GitHub

  • Edit
  • Delete
  • Tags
  • Autopost

What is ?v=1"

'?v=1' is the JavaScript/CSS Version Control with Cachebusting

Why do you need to cache JavaScript CSS? Web page designs are getting richer and richer, which means more scripts and stylesheets in the page. A first-time visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary HTTP requests on subsequent page views. Expires headers are most often used with images, but they should be used on all components including scripts, stylesheets etc.

via github.com

Comments [0]

February 21, 2011

Using the Mark of the Web (MOTW)

  • Edit
  • Delete
  • Tags
  • Autopost
If you develop Web sites, and you add even the littlest bit of JavaScript (like the "framebuster" script I add to my sites), you get the warning message when you preview the site in Internet Explorer because of Active Content. I thought the only option for disabling this message was to modify my security settings (which I'm very hesitant to do, given some of the files that I receive). However, Microsoft has provided a way to disable this message for those pages that you know are safe.
via helpstuff.com

This disables security warnings on IE when testing local html files with js.

Comments [0]

January 17, 2011

awesome (window manager) - Wikipedia, the free encyclopedia

  • Edit
  • Delete
  • Tags
  • Autopost
Media_httpuploadwikim_djpdg
via en.wikipedia.org

Awesome window manager is awesome! Documentation could be better though. (Mod4 key is usually the Windows key.)

Comments [0]

January 17, 2011

Gmrun - Substitute for gnome run dialog in Ubuntu | Ubuntu Geek

  • Edit
  • Delete
  • Tags
  • Autopost
‘Gmrun’ is a run-program utility that provides bash-like TAB completion and history, the ability to run commands in a terminal using CTRL-Enter.
via ubuntugeek.com

This is better than Alt-F2 for running terminal commands.

Comments [0]

December 5, 2010

Fixing emacs colors on Terminal Consoles

  • Edit
  • Delete
  • Tags
  • Autopost

Use:

export TERM=xterm-256color

If this causes problems, try:

# terminal settings
if [ -n "$DISPLAY" ];
then export TERM="xterm-color"
else export TERM="linux"
fi

 

See http://www.robmeerman.co.uk/unix/256colours

Comments [0]

November 18, 2010

Programlama icin Guzel Bir Turkce Kaynak

  • Edit
  • Delete
  • Tags
  • Autopost
http://www.emrah.com/
Asagidaki "Notlar" kismi oldukca guzel.

Comments [0]

November 18, 2010

SQLite'a Giriş

  • Edit
  • Delete
  • Tags
  • Autopost

[Bu belgenin PDF hali aşağıdadır, Scribd kutusunun sol altındaki Download linkinden indirilebilir.]

Click here to download:
sqlitenotlari.pdf (143 KB)
(download)
Click here to download:
sqlitenotlari.pdf (143 KB)

SQLite Notları

İçindekiler

  • Kavramlar
  • Veritabanı ve tablo oluşturmak
  • SQLite İfadeleri
    • Veritabanındaki tüm bilgiyi seçmek (yazdırmak)
    • Önemli operatörler:
  • Veri eklemek, güncellemek ve silmek
  • Verileri sorgulamak
  • Kısıtlamalar
  • Tabloları birleştirmek
    • Inner Join
    • Outer Join
  • SQLite Fonksiyonları
    • Temel fonksiyonlar
    • Aggregate fonksiyonlar
    • Tarih ve zaman fonksiyonları
  • Görünümler (views), tetikler (trigger) ve transactions
    • Görünümler
    • Triggers (Tetikler)
    • Transactions
  • Diğer
  • Nokta ile başlayan komutlar (sqlite3 programına özel komutlar)

SQLite konfigürasyon, kurulum, sunucu program gerektirmeyen, tek bir dosya üzerinde bulunan bir veritabanı türüdür. Birçok dilde kullanılabilmektedir. sqlite3 programı ile programlama dili kullanmadan veritabanları oluşturulabilir.

Kavramlar

  • relational database: ilişkisel veritabanı
  • table: Veriler tablo halinde saklanır.
  • schema: Tablodaki sütunlara ait bilgiler (meta veri)
  • row: record, kayıt
  • column: alan adı
  • field: alan, hücre
  • primary key: birincil anahtar
  • foreign key: yabancı anahtar
  • trigger: tetik, dürtü
  • view : görünüm
  • transaction: etkileşim
  • result set: sonuç kümesi (SELECT işlemi sonucu seçilen)
  • index

Veritabanı ve tablo oluşturmak

  • Veritabanı oluşturmak için: sqlite3.exe veritabanı.db

  • Tablo oluşturmak için: CREATE TABLE tablo_adı(alan_adları...)

  • Alan adlarına örnek:

    • Tür belirtmeden:

      CREATE TABLE notlar(öğrenci_no, harf_notu);
    • Tür belirterek:

      CREATE TABLE notlar(öğrenci_no integer, harf_notu text);
    • Veri türleri: null, integer, real, text, blob

  • Tabloyu silmek: DROP TABLE notlar;

  • ALTER TABLE: Tablo adını değiştirmek veya sütun eklemek için kullanılır. Sütun adını değiştirmek, sütunu silmek ya da sütuna sınırlama (constraint) getirmek için kullanılamaz. [http://www.sqlite.org/lang_alterTABLE.html]

SQLite İfadeleri

Veritabanındaki tüm bilgiyi seçmek (yazdırmak)

  • Veritabanındaki her şeyi seçmek:

    SELECT * FROM tablo_adı;
  • Veritabanındaki bazı alan adlarını (sütunları) seçmek:

    SELECT alan_adı FROM tablo_adı;
  • Veritabanındaki bazı kayıtları (satırları) seçmek:

    SELECT * FROM tablo_adı WHERE alan_adı=KOŞUL;
  • Yukarıdaki iki koşul birleştirilip veritabanındaki bazı hücreler seçilebilir.

    SELECT bir_alan_adı FROM tablo WHERE başka_bir_alan_adı=KOŞUL;
  • Seçim koşulları operatörlerle zenginleştirilebilir.

Önemli operatörler:

Eşitlik işlemi yerine kullanılabilecekler:

  • IN : Kümede olup olmadığına bakar.
  • LIKE: Wildcard eşleştirme için (% * gibi, _ ? gibi.)
  • GLOB: LIKE gibi; ancak UNIX'teki shell globbing'e benzer, büyük/küçük harf duyarlı
  • BETWEEN: Aralık belirtmek için kullanılır.

Ör:

SELECT bir_alan_adı FROM tablo
       WHERE başka_bir_alan_adı LIKE KOŞUL BETWEEN 200 AND 400;

Veri eklemek, güncellemek ve silmek

  • DEFAULT anahtar sözcüğü: Veri girilmezse alacağı değer . Ör:

    CREATE TABLE kitaplar(id integer primary key, kitap_adı text,
                          yayım_tarihi text default 'belli değil');
  • Veri ekleme:

    INSERT INTO kitaplar(id,kitap_adı, yayım_tarihi)
         VALUES(12,"Puslu Kıtalar Atlası","1999");
  • Tüm alanlara ekleme yapılacaksa tablo_adından sonraki kısım gerekli değildir:

    INSERT INTO kitaplar
         VALUES(12,"Puslu Kıtalar Atlası","1999");
  • MySQL'dekinin aksine toplu veri girişi yoktur.

    INSERT INTO kitaplar
         VALUES(12,"Puslu Kıtalar Atlası","1999"),
         VALUES(13,"Karanlığa Okunan Ezanlar","2005");
  • Veri eklerken tüm alanların girilmesi zorunlu değildir. Default değer verilmişse o değer kullanılır, yoksa NULL girilir; ancak bu durumda tablo adından sonra hangi alanlara giriş yapıldığı belirtilmelidir.

    INSERT INTO kitaplar(id,kitap_adı) VALUES(12,"Puslu Kıtalar Atlası");
    INSERT INTO kitaplar(kitap_adı) VALUES("Divan);
  • Var olan veriyi değiştirmek için INSERT INTO yerine REPLACE INTO kullanılır.

  • Primary key: Her tabloda bir primary key vardır, bu açıkça belirtilmezse rowid adında otomatik bir alan oluşturulur. (Belirtilirse primary key ile rowid birbirinin kopyası olur.)

    Aynı ana anahtarı içeren bir kayıt girilmek istenirse buna izin verilmez. Bu kayıt önce silinmeli, sonra ekleme yapılmalıdır ya da doğrudan REPLACE INTO komutu ile değiştirilmelidir.

  • INSERT OR REPLACE INTO komutu ile kayıt varsa güncellenir, yoksa oluşturulur.

  • INSERT INTO ve SELECT komutları birleştirilebilir:

    INSERT INTO yeni_tablo SELECT * FROM varolan_tablo;
  • Kayıt silmek için DELETE komutu kullanılır. Koşul belirtilmezse tüm tablo silinir.

    DELETE FROM tablo; -- tüm tabloyu sıfırlar.
  • Belli satırlardaki verilerin bazı alanlarını değiştirmek için UPDATE komutu kullanılır. UPDATE tablo_adı SET alan_adı='yeni değer' WHERE id=1;

    Bu işlemin REPLACE'den farkı tüm kaydı girmenin gerekmemesi, sadece değişmesi gereken alanları güncellemesidir. Bunun dışında REPLACE aslında INSERT OR REPLACE ifadesine denk bir kısayol olduğundan halihazırda kayıt yoksa oluşturulur.

    UPDATE komutunda ise yeni kayıt oluşturulmaz; kayıt yoksa hata mesajı verilmez, varsa güncellenir.

Verileri sorgulamak

  • SELECT * FROM tablo_adı;

  • SELECT alan_adı1, alan_adı2 FROM tablo_adı;

  • Gösterim esnasında sütunları yeniden adlandırmak için AS anahtar sözcüğü kullanılır.

    SELECT alan_adı1 AS YeniSütunAdı FROM tablo_adı;
  • Gösterilen kayıt sayısını limitlemek için LIMIT sözcüğü kullanılır. SELECT * FROM tablo_adı limit 2; ilk iki kaydı gösterecektir. Offset sözcüğü ile başlangıç satırı belirtilebilir. SELECT * FROM tablo_adı limit 2 offset 1;

  • Gösterilen veriyi sıralamak için ORDER BY alan_adı ASC/DESC; kalıbı kullanılır. Birden fazla alan adı kullanılabilir.

    ORDER BY alan_adı1 desc, alan_adı2 ASC;
  • Sadece belli satırları göstermek için WHERE sözcüğü kullanılır.

    SELECT * FROM tablo_adı WHERE id = 1;
  • Gösterilen kayıtlarda yineleme varsa DISTINCT sözcüğü ile yinelenen kayıtlar filtrelenebilir.

    SELECT DISTINCT yazar_adı FROM kitaplar WHERE fiyat < 20;
  • Group by kalıbı ile yinelenen kayıtlara ait veriler gruplanabilir. Daha sonra sum() gibi toplam fonksiyonları ile bu gruplar hakkında özet bilgiye ulaşılabilir.

    SELECT sum(orderPrice) AS Total, Customer FROM orders
        GROUP BY customer;
  • Toplam (aggregate) fonksiyonları kullanılırsa WHERE yerine HAVING anahtar sözcüğü kullanılmalıdır.

    SELECT sum(OrderPrice) AS Total, Customer FROM Orders
        GROUP BY Customer HAVING sum(OrderPrice)>1000;

(Bkz: http://zetcode.com/databases/sqlitetutorial/SELECT/ )

Kısıtlamalar

Bazı alan adlarına kısıtlama koyabiliriz, bu şekilde anlamsız veri girişi önlenir.

  • NOT NULL: Verinin girilmesini zorunlu yapar.

  • UNIQUE: Girilen veri eşsiz olmalıdır.

  • PRIMARY KEY: Birincil anahtar

  • FOREIGN KEY: Yabancı anahtar

  • CHECK: Kabul edilebilir veri girişi aralığı.

  • DEFAULT: Varsayılan değer.

  • NOT NULL: Alan adını zorunlu yapar. CREATE TABLE öğrenciler(ad text, soyad text NOT NULL);

  • UNIQUE: Sütundaki her değer farklı olmak zorundadır. CREATE TABLE markalar(Id integer, markaadi text unique);

  • PRIMARY KEY: Tablodaki her kaydın en az bir eşsiz sütunu olmalıdır. Bunlardan en onemlisi PRIMARY KEY'dir. birden fazla UNIQUE key olabilir, ancak PRIMARY KEY bir tanedir. PRIMARY KEY otomatik olarak UNIQUE'tır.

    Başka tablolarla bağlantı kurulurken PRIMARY KEY'ler diğer tablolarda FOREIGN KEY olarak bağlantıyı sağlar. Birincil anahtar türü tamsayı (integer) ise auto increment özelliği de eklenir.

    Varsayılan olarak rowid adında bir birincil anahtar vardır. Birincil anahtar ayrıca verilse bile, rowid birincil anahtar olarak kullanılabilir.)

  • FOREIGN KEY: Bir tablodaki bir yabancı anahtar başka bir tablodaki birincil anahtardir ve iki tablo arasındaki bağlantıyı sağlar.

    CREATE TABLE yazarlar(yazarid integer primary key, ad text);
    CREATE TABLE kitaplar(kitapid integer primary key, başlık text,
         yazarid integer, foreign key(yazarid) references yazarlar (yazaradı));

    Bu şekilde yazarlar tablosunda bulunmayan bir yazara ait bir kitabın veritabanına eklenmesi engellenmiş olur.

  • CHECK: Not null'a benzer bir şekilde, belli bir koşulu sağlamayan verilerin veritabanına girilmesini engeller.

    CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer
         CHECK(OrderPrice>0), Customer text);
    
    sqlite> INSERT INTO Orders(OrderPrice, Customer) VALUES(-10, 'Johnson');
    SQL error: constraint failed
  • DEFAULT kısıtlaması: Bir alana veri girilmezse varsayılan değer girilir.

Tabloları birleştirmek

İlişkisel (relational) veritabanlarının en önemli özelliği tabloları birleştirebilmeleridir. JOIN operasyonu ile iki ya da daha fazla tablo birleştirilir. Bu işlem, INNER JOIN ve OUTER JOIN olarak iki çeşittir; aksi belirtilmedikçe INNER JOIN yapılır.

Inner Join

İki tablodan eşleşen değerlere sahip kayıtları gösterir. Üç çeşittir: Inner join, natural inner join ve cross inner join.

  • Inner Join

    SELECT Name, Day FROM Customers, Reservations
           WHERE Customers.CustomerId = Reservations.CustomerID;
  • Natural Inner Join: Otomatik olarak ortak sütunlar üzerinden eşleştirme yapar.

  • Cross Inner Join: Bir tablodaki tüm kayıtlarla diğer tablodaki tüm kayıtları birleştirir. (Kartezyen çarpım gibi)

Outer Join

Outer join işleminde, birleştirilen tabloların eşleşen kaydı olması gerekemez. Left outer join, right outer join, full outer join olarak üç çeşit olsa da SQLite sadece left outer join destekler. Bu nedenle işlem left join olarak da yazılabilir. Eşleşmeyen kayıtlara ait değerler NULL olarak gösterilir.

  • Outer Join:

    SELECT Name, Day FROM Customers LEFT JOIN Reservations
                     ON Customers.CustomerId=Reservations.CustomerId;

    ya da eşleştirilen alan adı ortaksa USING anahtar sözcüğü ile

    SELECT Name, Day FROM Customers LEFT JOIN Reservations USING (CustomerId);
  • Natural Left Outer Join: Ortak sütun adlarıyla otomatik outer join yapar.

    SELECT Name, Day FROM Customers NATURAL LEFT OUTER JOIN Reservations;

SQLite Fonksiyonları

Temel fonksiyonlar

http://www.sqlite.org/lang_corefunc.html

  • SELECT komutu ile fonksiyonlar ekrana yazdırılabilir.
  • SELECT fonksiyon_adı(); gibi
  • sqlite_version()
  • random()
  • upper()/lower()/length()

Aggregate fonksiyonlar

http://www.sqlite.org/lang_aggfunc.html

  • max()/min()/sum()
  • count()/count(*)
  • avg()
  • sum()/total()

Tarih ve zaman fonksiyonları

http://www.sqlite.org/lang_datefunc.html

  • date();
  • date('now');
  • datetime();
  • datetime('now');
  • strftime('%d-%m-$Y');
  • date('now','start of year','10 months','weekday 4');

Görünümler (views), tetikler (trigger) ve transactions

Görünümler

Görünümler bir ya da birden fazla tablodaki verilerin yeni bir tablo olmadan istenen şekilde gösterilmesidir. Sanal bir tablo olarak düşünülebilir.

CREATE VIEW UcuzKitaplar AS Select KitapAdı From Kitaplar WHERE Fiyat < 20;

SELECT * FROM UcuzKitaplar;

Yaratılan görünüm, DROP VIEW kalıbı ile silinebilir.

Triggers (Tetikler)

Veritabanında belli bir olay olduğunda otomatik olarak gerçekleştirilen işlemlere trigger(tetik) denir.

CREATE TABLE Log(Id integer PRIMARY KEY, EskiAd text, YeniAd  text, Tarih text)

CREATE TRIGGER mytrigger UPDATE OF Ad ON Arkadaşlar
BEGIN
 INSERT INTO Log(EskiAd,YeniAd, Tarih) VALUES(eski.Ad, new.Name, datetime('now'));
END;

Böylece Arkadaşlar adlı tabloda bir Ad güncellenirse Log adlı tabloya güncellemeyle ilgili bir kayıt otomatik olarak girilir.

Transactions

Transaction, veritabanında yapılan işlemlerin en küçük parçasını gösterir. SELECT dışındaki komutlarda içkin (implicit) bir transaction vardır.

Elle transaction başlatmak için Begin Transaction ifadesi kullanılır. Commit ya da Rollback ifadelerine kadar olan tüm ifadeler tek bir transaction'da gerçekleştirilir. Bu şekilde veri tabanında yapılan işlem hızlanır ve kilitlenmeler (lock) azaltılır. (Birden fazla kişi transaction yaparken her biri transaction sırasında veritabanını kilitler, transactionlar gruplandıklarında bu işlem seyrekleşir.) (Bkz: [http://stackoverflow.com/questions/54998/how-scalable-is-sqlite] )

Rollback tüm değişiklikleri geri alır (Niye?)

Diğer

  • ||: String birleştirme operatörü. Ör: SELECT "ABC" | | "DEF"

  • CREATE TABLE IF NOT EXISTS Testing(id integer primary key); : Tablo yoksa oluşturulur, varsa hiçbir şey yapılmaz.

  • Home dizininde .sqliterc adında bir dosya oluşturulabilir:

    $ cat .sqliterc
    .mode column
    .header on
    .nullvalue NULL
  • sqlite komutu, komut satırından seçenek ve emir alabilir.

    sqlite3 -help/
    sqlite3 -html deneme.db
    sqlite3 deneme.db ".dump" > output.txt

Nokta ile başlayan komutlar (sqlite3 programına özel komutlar)

  • .help: Yardım
  • .databases: Bağlı bulunan veritabanlarını görmek için
  • .tables: Tüm tabloları görmek için
  • .schema: Tüm tabloların schemalarını görmek için
  • .schema tablo_adı: Bir tabloya ait schema'yı görmek için
  • .output filename: Ekran yerine dosyaya yazdırmak için
  • .output stdout: Dosya yerine ekrana yazdırmak için
  • .headers on/off: Başlık satırlarını yazdırmak icin
  • .nullvalue STRING: Nullvalue yerine STRING yazdırmak için
  • .mode {csv, column, html, INSERT, line, list, tabs}: Çıktı türleri
  • .log FILE/stderr: Log yazdırmak için
  • .dump: Veritabanını SQL ifadeleri olarak yazdırmak için
  • .dump tablo_adı: Tabloyu SQL olarak yazdırmak için
  • .separator STRING: Ayırıcı olarak STRING sözcüğünü kullanmak için
  • .width sayı1, sayı2...: Sütun genişliklerini ayarlamak için

Bkz:

  • [http://zetcode.com/databases/sqlitetutorial/]
  • [http://www.sqlite.org/lang.html]
  • http://www.istihza.com/py2/sqlite.html

Comments [0]

« Previous 1 2 3 4 5 6 7 8 9 … 12 13 Next »