Yeni blog
Django ile yaptığım blog sayfam sonunda kullanılabilecek hale geldi. Bundan sonra oradan yazmaya devam edeceğim. http://test.osa1.net
Django ile yaptığım blog sayfam sonunda kullanılabilecek hale geldi. Bundan sonra oradan yazmaya devam edeceğim. http://test.osa1.net
Django ile yazdığım bloguma otomatik etiketleme sistemi eklemeye çalışıyorum. Etiketleme sistemi arama ve alakalı yazıları tespit etme özellikleri için gerekli. Etiketleme olayını otomatiğe bağlamamın sebebi ise daha hızlı bir şekilde yazı girebilecek olmam.
Uygulayacağım yöntem sanırım şöyle birşey olacak; kendimi sitedeki içeriğe uygun büyük bir etiket bulutu oluşturacağım. Kelimleri eklentiye gireceğim ve daha sonra bir yazı girdiğimde eklenti yazılarda o kelimeleri arayacak, ve eğer varsa, o yazıyı o etiketle etiketleyecek. Daha sonra örneğin alakalı yazıları göstermek istediğimde, benzer etiketlere sahip yazıları, çok benzer etikete sahip olandan az olana doğru sıralayacak. Bu da böyle bir blog yazısıdır.
Bir süredir Django ile uğraşıyordum ve Django ile yazdığım blog sayfamı bitirmek üzereyim fakat bazı sorunlar yaşıyorum:
Bunların dışında bir de etiket sistemi eklemek istiyorum fakat nasıl bir yöntem izlemeliyim karar veremedim. Yani örneğin tüm yazıyı kelime kelime tarayıp, bağlaçları vs. eleyip, geriye kalan kelimeleri etiket olarak mı kabul etmeliyim, yoksa büyük bir etiket bulutu oluşturup, yazılarda o kelimeleri mi aramalıyım(bu daha mantıklı geliyor)?
2 hafta sonra hazırlık biteceğinden ve benim ilk seneki ingilizce derslerinden muafiyet alma ihtimalim yüksek olduğundan ara sıra ders çalışıyorum, pek zaman ayıramıyorum, fakat en kötü ihtimalle 9 Temmuz’a kadar bitirmem gerekiyor bu sayfayı, yoksa hiçbir zaman bitiremeyebilirim..
Django yorum eklentisi(django.contrib.comments)ni çalıştırabilen var mı? Django’nun destek sitesinde de hakkında başlık açmışlar, tüm yöntemleri denememe rağmen aynı hatayı almaya devam ediyorum.
Bilmeyenler için, {% load comments %} ile yorumla için template taglarını yükledikten sonra {% render_comment_form for code %} tagı ile yorum formunu çekmem gerekiyor fakat Caught NoReverseMatch while rendering: Reverse for ‘django.contrib.comments.views.comments.post_comment’ with arguments ‘()’ and keyword arguments ‘{}’ not found. şeklinde bir hata alıyorum(ya da alıyoruz mu demeliydim?)
Django’da örneğin şöyle bir modelim var:
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
Bu sınıftan p1 = Publisher(…) şeklinde onlarca instance oluşturabiliyorum, fakat işin garip yanı, tüm instanceların özellikleri(attribute) farklı olabiliyor, halbuki böyle olması için bu kodun şu şekilde olması gerekmez miydi?
class Publisher(models.Model):
def __init__(self):
self.name = models.CharField(..)
vs vs vs..
Bu nasıl olabiliyor ve kendi sınıflarıma nasıl uygulayabilirim? Araştırıyorum..
Daha önceden Python’da regex kullanarak altyazılar üzerinde bazı değişiklikler yapmıştım(ilk yazı burda). Bu seferki kod altyazılar srt formatlı altyazılar için birkaç fonksiyon içeriyor.
"""
subtools.py
Some subtitle tools for .srt formatted subtitles.
"""
import re
def convert(a):
parts = a.split(":")
hour, minute, sec = int(parts[0]), int(parts[1]), parts[2]
minute += hour*60
sec = sec.split(",")
sec = int(sec[0])*1000 + int(sec[1])
sec += minute*60000
return sec
def revert(a):
a = int(a)
sec, remainder = a/1000, a % 1000
minute = sec/60
sec = sec%60
hour = minute/60
minute = minute%60
# kod tekrarini nasil engelleyebilirim?
if len(str(hour)) == 1:
hour = "0%s" % hour
if len(str(minute)) == 1:
minute = "0%s" % minute
if len(str(sec)) == 1:
sec = "0%s" % sec
if len(str(remainder)) == 1:
remainder = "00%s" % remainder
elif len(str(remainder)) == 2:
remainder = "0%s" % remainder
return "{0}:{1}:{2},{3}".format(hour, minute, sec, remainder)
def adder(a, b):
return revert(convert(a) + convert(b))
def subtracter(a, b):
return revert(convert(a) - convert(b)))
def submod(sub, time):
"Advance subtitles"
Sub = open(sub, "r").readlines()
format = re.compile(r"(\d{1,2}:\d{1,2}:\d{1,2},\d{1,3}) --> (\d{1,2}:\d{1,2}:\d{1,2},\d{1,3})")
for line in Sub:
if format.findall(line):
parts = format.findall(line)
parts = parts[0]
P1, P2 = adder(parts[0], time), \
adder(parts[1], time)
Sub[Sub.index(line)] = "%s --> %s" % (P1, P2)
new = open("new_%s" % sub.split("/")[-1], "w")
new.writelines(Sub)
new.close()
def setsub(sub, first, last):
submod(sub, subtracter(first, last))
Linux ortamında VLC ile birşeyler izlerken en çok sıkıntı çektiğim konu GOM Player’daki altyazının istenilen kısmının filmdeki istenilen zamana denk getirilme özelliğinin olmaması, bu fonksiyonlar kullanılarak kolayca yapılabilir aslında..
10.04 kurulumum bitti ve yerleşme işlemlerimi tamamladım(Python, Django, Apache, Php, Mysql, vs.). Son ve şimdilik temiz hali şöyle:
Ayrıca http://forum.ubuntu-tr.org/index.php/topic,18251.msg221599.html adresinden bazı çılgın masaüstleri görebilirsiniz, ara sıra farklı dağıtımlar da olsa da çoğu Ubuntu(ya da en azından Gnome).