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

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.

Continue reading

Python - HTTP çağrıları ve urllib


Bir metin belgesinde kayıtlı olan tüm URL'leri çağırmak için ufak bir betik yazdım. Betik şöyle davranıyor:

  • Kullanıcı dosya yolunu hatalı girerse ufak düzeltmeler yapıyor.
  • Gerçekten öyle bir dosya olup olmadığını kontrol ederek IO.Error'a düşmüyor.
  • HTTPError ve URLError durumlarını ayıklıyor.
  • urllib.request ile HTTP çağrıları yapıyor.
Continue reading

Ubuntu'da rubymine kurulumu


Ubuntu 12.04 altında RubyMine kurmak için öncelikle sisteminizde Ruby interpreter (irb)'ın kurulu olması gerekiyor. Kurulum için RVM kullanımı önerilse de zorunlu değil. Benim ve komünitenin genel önerisi ise RBenv kullanmanız. Ayrıca sisteminizde Oracle JDK kurulu olması gerekiyor, bunu da daha önce anlatmıştım.

Herşey hazırsa RubyMine arşiv dosyasını indirin. Arşiv dosyasını masaüstüne indirdiğinizi varsayıyorum. Dosyaları arşivden çıkartın.

$ tar xzvf RubyMine-4.5.1.tar.gz

Arşivden çıkarttığınız dosyaları, uçbirimden ulaşmanızın kolay olduğu bir klasöre taşıyın. Ben hepsini home/msdundar/apps altında tutuyorum.

Continue reading
Date: | Tags: ubuntu rubymine kurulum, rubymine kurulumu, rubymine nedir, ruby | Categories: tech, ruby, linux

Ubuntu 12.04 - Oracle JDK Kurulumu


Bir kaç gün önce Ubuntu'mda sürüm yükselterek 12.04'e terfi ettim. Daha önceki sürümde bulunan "unity" kaynaklı pek çok hata bulunuyordu, bir ihtimal bunlar sihirli bir değnek değmişcesine düzelir diye umut ettim ama nafile. Hala unity'de bir takım sıkıntılar var, keza Chrome yine Windows'ta olduğu kadar stabil çalışmıyor (chrome geliştiricileri bundan da unity2d'yi sorumlu tutuyor). Velhasıl, güncelleme akabinde NetBeans'i terk edip daha hafif bir Ruby IDE'si arayışına girdim.

Elbette durduk yere değil, gerek NetBeans'in gittikçe hantallaşan yapısı, kullanmadığım zilyon tane özellik barındırması, 7.x sürümlerinde Ruby desteğini kaldırması (harici olarak devam eden çalışmaları saymıyorum) ve daha pek çok sebepten dolayı NetBeans'le yolları ayırmaya karar verdim. Daha hafif, daha Ruby odaklı ve uzun dönem Ruby desteği sunacak bir IDE ararken, yine nispeten hantal bir IDE olan RubyMine'ı buldum. Aslında buldum demek yanlış, daha önceden de haberdardım fakat ücretli olduğu için hiç sıcak bakmamıştım. IDE'den çok fazla beklentisi olmayan biri olarak, RubyMine yetti de arttı. Üstüne üstlük, başvurduğum "eğitim lisansını" da ücretsiz sağlayarak gönlümde yer edindiler. Kızları gibi gönülleri de güzel olan Çek'li dostlarımızdan da böyle bir davranış beklenirdi zaten.

Continue reading
Date: | Tags: ubuntu oracle jdk, oracle jdk kurulum | Categories: tech, ruby, linux, java

Tübitak ödüllü kriptoloji soruları


Geçen ay için ödüllü kriptoloji sorularını çözmüştüm. Cevaplar doğru olmasına rağmen, çekilen kurada bir şey kazanamamışım. Bu yazıda kendi çözümlerime yer vereceğim.

tubitak-odullu-kriptoloji-sorulari-1
İlk soru, tipik bir asal sayı sorusuydu.

Cevap 1:

Verilen asal sayı dizisi için: a(n)=p(p(n)) formülü kullanılır. Böylece genetol asal sayı dizisinin bir alt dizisini elde ederiz.

a(1) = 3, a(1) = p(p(1)) = p(2) = 3
a(2) = 5, a(2) = p(p(2)) = p(3) = 5
a(3) = 11, a(3) = p(p(3)) = p(5) = 11
a(4) = 17, a(4) = p(p(4)) = p(7) = 17
a(5) = 31, a(5) = p(p(5)) = p(11) = 31
....

şeklinde a(13)'e kadar devam edersek;

a(13) = 179, a(13) = p(p(13)) = p(41) = 179

Cevap: 179 buluruz.

Continue reading