HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Rails CRUD Cheatsheet


Metod Etki Alanı Örnek Not
new Model Student.new(adi: 'Serhat', soyadi: 'Dundar') Model bir nesneye atandığında, nesnenin save metodu ile kayıt edilmesi gerekir.
new_record? Nesne student.new_record? true veya false döndürür.
attributes Nesne student.attributes attribute'leri hash olarak döndürür.
* attribute_ismi Nesne student.finalnotu = "65" Model ismi komut olarak çağırılarak mümkün attribute'ler listelenebilir.
save Nesne student.save SQL muadili: INSERT INTO. Eğer nesne daha önceden mevcutsa UPDATE.
count Model & Nesne Student.count veyastudent.count SQL muadili: SELECT COUNT(*) FROM "students"
create Model Student.create(adi: 'Serhat', soyadi: 'Dundar') veya; x = {ad: 'Serhat', soyad: 'Dundar'} ve sonra Student.create(x) new metodundan farklı olarak doğrudan save işlemi yapar. SQL muadili: INSERT INTO
find(:id) Model & Nesne Student.find(1) veya Student.find([1,5]) find metodunu bir nesneye atayıp, daha sonra nesneyi çaşitli işlerde kullanabiliriz. SQL muadili: SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT 1 [["id", 1]]
first Model & Nesne Student.first SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" ASC LIMIT 1
last Model & Nesne Student.last SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" DESC LIMIT 1
all Model Student.all SQL muadili: SELECT "students".* FROM "students"
class Model & Nesne Student.class [Class] veya student.class [Array] -
size Nesne student.size Nesnenin boyutunu verir.
order Model Student.order('ogrenci_no') SQL muadili: SELECT "students".* FROM "students" ORDER BY ogrenci_no
where Model Student.where(ogrenci_no: '09310009') SQL muadili: SELECT "students".* FROM "students" WHERE "students"."title" = 'My first post'
update_attributes Nesne student.update_attributes(ad: 'Mustafa', ogrenci_no: '08310009') true veya false döndürür.
destroy Nesne & Model Nesne üzerinde kullanım: student = Student.last && student.destroy. Model üzerinde kullanım: Student.last.destroy veya; Student.destroy(1) veya; Student.destroy([1,5]) DELETE FROM students WHERE id = 5; Nesne üzerinde kullanıldığında, kayıt silinmiş olmasına rağmen student nesnesi hala bellekte tutulur, fakat durumu read-only'dir, yani frozen durumdadır.
delete Model Student.delete(1) veya Student.delete([1,5]) find ve create gibi işlemi anında uygularlar. SQL muadili: DELETE FROM "students" WHERE "students"."id" = 1
delete_all Model Student.delete_all("ogrenci_no = 09310009") delete'den farklı olarak şartlı silme işlemlerini yapar. delete_all argümansız çalıştırılırsa tablonun tüm satırlarını siler!
destroy_all Model Student.destroy_all('ogrenci_no = 09310009') delete'den farklı olarak şartlı ve ilişkili silme işlemlerini yapar. destroy_all argümansız çalıştırılırsa tablonun tüm satırlarını ve ilişkili olduğu tüm tabloları siler!
Read more

Cronjob ve Moodle Cron İşleri


Cron çok basit ifade etmek gerekirse, zamanlandırılmış görevlerdir. Cron görevleri 2 kısımdan oluşur. Birinci kısım cron'un ne zaman çalışacağını, ikinci kısım ise çalıştığı zaman ne yapacağını belirtir. İlk kısım, yani cron'un ne zaman çalışacağının belirtildiği kısım 5 alandan oluşur ve alanlar bir tane boşluk karakteri (space) ile ayrılır.

# * * * * * çalıştırılacak komut
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── Haftanın günü (0-6 arası değer veya *) (0 = Pazar'ı ifade eder.)
# │ │ │ └────────── Ay (1-12 arası değer veya *)
# │ │ └─────────────── Gün (1-31 arası değerveya *)
# │ └──────────────────── Saat (0-23 arası değerveya *)
# └───────────────────────── Dakika (0-59 arası değer veya *)

* karakteri ise "her" anlamı taşır. Örneğin "her hafta", "her gün", "her saat" vb.

Read more

19x Kurulumu


Uygun dizine geçtikten sonra. Github bağlantısını test et:

$ ssh -T git@github.com

Bağlanamazsa github ssh anahtarları var mı kontrol et:

$ cd ~/.ssh
Read more
Date: 04-09-2013

Kartaca'nın eğlenceli iş başvurusu


Takip ettiğim firmalardan biri olan Kartaca "yeni mezun yazılım uzmanı" aradığını duyurmuş. Başvuru süreci ise oldukça eğlenceli ve seçici olmuş, hazırlayanların eline sağlık.

kartaca-is-basvuru

Başvuru sayfasına ulaşınca karşımıza bu HEX çıkıyor. Decode edince ise Base64 hakkında bir wiki bağlantısından ibaret olduğunu anlıyoruz.

Read more

Moodle'da silinmiş kullanıcıları tamamen yok etmek


Öğrenmiş oldum ki, moodle asla bir kullanıcıyı silmiyormuş. Yani uygulama tarafında kullanıcı silinse bile, aslında yapılan işlem veritabanında (mdl_user tablosunda) sadece kullanıcının boolean olan deleted alanının 1'e dönüşmesi işlemiymiş. Bu konu hakkında Moodle forumlarında güzel bir tartışma da var.

Özetle bu tartışmada söylenen, bu silinmiş kullanıcıların SQL hareketleriyle uçurulmasının riskli olabileceği. Çünkü kullanıcıların forum mesajı, sınav sonucu vs. bilgilerini de tespit edip temizlemek gerekecek. Aksi halde arkamızda nereye bağlı olduğu veya nasıl oluştuğu belli olmayan bir yığın çöp veri bırakmış oluruz ki - fayda sağlayalım derken daha çok zararı dokunur. Moodle veritabanının karmaşık yapısı ise bu ilişki tespit işlemini çok zorlaştırıyor.

Read more