Friday, March 30, 2007
Wednesday, March 28, 2007
Django şi Vim
Am dat de o pagină foarte interesantă,
http://code.djangoproject.com/wiki/UsingVimWithDjango
pe care sunt descrise nişte scripturi Vim care ajută la lucrul cu Django.
Cele mai interesant chestii mi s-au părut XMLedit şi fişierele de syntax highlighting pentru template-uri Django.
http://code.djangoproject.com/wiki/UsingVimWithDjango
pe care sunt descrise nişte scripturi Vim care ajută la lucrul cu Django.
Cele mai interesant chestii mi s-au părut XMLedit şi fişierele de syntax highlighting pentru template-uri Django.
Tuesday, March 20, 2007
Metaprogramming în Python - pentru incepători
Căutând o modalitate de a specifica repede structuri în Python am căutat pe net o modalitate de a crea automat clasele cu structuri (genul de clasă care arată cam aşa):
Din nou cunoştinţele de Lisp s-au dovedit foarte folositoare (deşi indirect). Căutând pe Google "python defstruct" (defstruct este macro-ul Lisp care creează codul pentru astfel de structuri) am dat de:
http://mail.python.org/pipermail/python-list/2001-October/109140.html
unde un suflet milostiv a publicat un exemplu simplu şi util de metaprogramare în Python.
am modificat puţin codul şi am obţinut:
cu exemplul de utilizare:
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return "(%f, %f)" % (self.x, self.y)
Din nou cunoştinţele de Lisp s-au dovedit foarte folositoare (deşi indirect). Căutând pe Google "python defstruct" (defstruct este macro-ul Lisp care creează codul pentru astfel de structuri) am dat de:
http://mail.python.org/pipermail/python-list/2001-October/109140.html
unde un suflet milostiv a publicat un exemplu simplu şi util de metaprogramare în Python.
am modificat puţin codul şi am obţinut:
def defstruct(name, *fields):
class Struct(object):
def __init__(self, *contents):
if len(contents) != len(self.structfields):
raise TypeError, (
"wrong number of arguments: expected %d %s, got %d" %
(len(self.structfields),
repr(self.structfields),
len(contents)))
for fieldnum in range(len(contents)):
setattr(self,
self.structfields[fieldnum],
contents[fieldnum])
def __repr__(self):
args = ", ".join([str(getattr(self, f)) for f in fields])
return "%s(%s)" % (name, args)
Struct.structfields = fields
return Struct
cu exemplul de utilizare:
if __name__ == "__main__":
Point = defstruct('Point', 'x', 'y')
p1 = Point(1, 20)
p2 = Point(-4, 34)
print p1
print p2
Friday, March 16, 2007
SSH fără parolă de fiecare dată
E agasant să introduc parola de SSH de fiecare dată când mă leg la un server.
Se poate autentificare fără parolă? Normal că se poate. Iaca instrucţiuni:
Se poate autentificare fără parolă? Normal că se poate. Iaca instrucţiuni:
- http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html (Cu menţiunea că ssh-keygen ar trebui invocat cu opţiunea -t)
- http://www.astro.caltech.edu/~mbonati/WIRC/manual/DATARED/setting_up_no-password_ssh.html
Monday, March 12, 2007
Detalii Django
Un amănunt care nu e foarte bine documentat în Django: cum să adaug validări custom pentru situl de admin generat automat:
Folosesc pentru *Field argumentul validator_list din constructor. Există validatori predefiniţi în django.core.validators, precum şi documentaţie - se referă la formele vechi, dar nu cred că va dispărea acest mic detaliu aşa uşor.
Am aflat că se poate folosi validator_list aici dintr-o discuţie google groups.
Exemplu de utilizare:
Folosesc pentru *Field argumentul validator_list din constructor. Există validatori predefiniţi în django.core.validators, precum şi documentaţie - se referă la formele vechi, dar nu cred că va dispărea acest mic detaliu aşa uşor.
Am aflat că se poate folosi validator_list aici dintr-o discuţie google groups.
Exemplu de utilizare:
from django.db import models
from django.core.validators import isUpperCase
# Create your models here.
# adresa hotelului sau amploiatului
class Address(models.Model):
country = models.CharField(maxlength = 150,
validator_list = [isUpperCase])
town = models.CharField(maxlength = 150)
street = models.CharField(maxlength = 150)
number = models.CharField(maxlength = 50)
def __str__(self):
return "%s, %s (%s, %s)" % \
(self.street, self.number, self.town, self.country)
class Meta:
verbose_name_plural = "Adresses"
class Admin:
pass
How To Design a Good API & Why It Matters
http://www.infoq.com/presentations/effective-api-design
Prezentare foarte mişto a lui Joshua Bloch (ex-Sun, acum la Google) despre cum se "gândeşte" un API.
Tema este mai larg-aplicabilă decât pare la prima vedere, pentru că de fapt de fiecare dată când scriem metodele publice ale unei clase proiectăm un API. De fiecare dată când scriem un grup de clase care se vor folosi împreună proiectăm un API.
"Effective Java", tot a lui Joshua Bloch, este scrisă din aceeaşi perspectivă. Aceeaşi carte.
Prezentare foarte mişto a lui Joshua Bloch (ex-Sun, acum la Google) despre cum se "gândeşte" un API.
Tema este mai larg-aplicabilă decât pare la prima vedere, pentru că de fapt de fiecare dată când scriem metodele publice ale unei clase proiectăm un API. De fiecare dată când scriem un grup de clase care se vor folosi împreună proiectăm un API.
"Effective Java", tot a lui Joshua Bloch, este scrisă din aceeaşi perspectivă. Aceeaşi carte.
Saturday, March 10, 2007
Atenţie, pare să dea dependenţă
http://www.rfshq.com/forum/games/virus2.swf
Un joculeţ Flash foarte simpatic - şi foarte simplu. Uimitor câte idei simple nu au fost puse în practică - şi mie tot nu prea îmi vine niciuna :)
Un joculeţ Flash foarte simpatic - şi foarte simplu. Uimitor câte idei simple nu au fost puse în practică - şi mie tot nu prea îmi vine niciuna :)
Thursday, March 8, 2007
Komodo Edit
Am dat pe programming.reddit.com de un articol mişto despre komodo edit - cred că-l voi folosi pentru aplicaţiile Django. Ştie completare de cod pentru Python ceea ce este interesant, dacă nu chiar super :)
Are şi variantă de Linux, şi o emulare pentru keybindings-urile din vi - nu mi se mai întâmplă ca în Visual Studio sa-mi apara un şir lung de "j"-uri în editor şi să nu ştiu de ce...
Are şi variantă de Linux, şi o emulare pentru keybindings-urile din vi - nu mi se mai întâmplă ca în Visual Studio sa-mi apara un şir lung de "j"-uri în editor şi să nu ştiu de ce...
Wednesday, March 7, 2007
Cum se poate transforma Caps-Lock într-o a treia tasta Control?
http://winadmin.forret.com/registry/wanocaps/
http://winadmin.forret.com/registry/wanocaps/
Ce instalez peste un XP proaspăt
Lucruri deocamdată valabile oriunde:
Şi pentru şcoală, deci temporar:
- Vim
- Antivir
- Zone Alarm
- uTorrent
- Launchy
- Billy (eventual şi alte chestii de la sheepfriends.com)
- Firefox
- Tortoise SVN
- Total Commander
- Irfanview
- OpenOffice
- Putty
Şi pentru şcoală, deci temporar:
- Visual Studio .NET (MSDNAA)
- Oracle (Blearh)
Subscribe to:
Posts (Atom)