anti päewik

Sisaldab Palju Erinewaid Imesid ja Öppetusi Tarkadele.

Mailman: liikme aadressi vahetamine


Kui sul on vaja n+1 listis korraga üks aadress ära vahetada, siis loe edasi.
Kõigepealt salvesta järgnev kood faili changeaddr.py

from Mailman.Errors import NotAMemberError

def changeaddr(mlist, addr, newaddr):
        try:
                mlist.changeMemberAddress(addr,newaddr);
                mlist.Save()
        except NotAMemberError:
                print 'Address ',addr,' not found'

Nüüd otsi üles, kus kataloogis asub “withlist” nimeline utiliit. Debianis on see /usr/lib/mailman/bin (/usr/sbin all on symlink sinna) ja kopeeri changeaddr.py samasse kohta (või tee link).

Edasi:

$  withlist -a -l -r changeaddr  vana@example.com uus@example.com

Saad hunniku teksti edenemise kohta ja aadressid ongi vahetatud.


PHP versioonikontroll


PHP versioonid tulevad ja lähevad, mõni versioon lisab uusi funktsioone ka. Igasugu hostingupakkujad üle maailma kipuvad aga olema üsna laisad versiooniuuenduste tegemisel (tegelikult ei saa seda neile pahaks panna). Kui arendad vähegi suurema levikuga PHPs kirjutatud tarkvara, siis varem või hiljem satud olukorda, kus mõni kasutaja jääb hätta, sest tema PHP versioon on sedavõrd vana, et seal pole mõnd funktsiooni, mida sa kasutanud oled.

Kas on olemas sellist tarkvara, millele saab ette anda kataloogitäie PHP faile, mille ta siis läbi analüüsib ja ütleb et mis on minimaalne PHP versioon, mille peal see kood käia võiks?


Apache: .htaccess ja üksiku faili kaitsmine parooliga



<Files viewcvs.cgi>
AuthName "None Shall Pass"
AuthType Basic
AuthUserFile /some/place/else/.htusers

require valid-user
</Files>

Saab kasutada ka metamärke, näiteks <Files *.cgi>;<Files t?r?.cgi>. Oluline on tähele panna, et Files on kasutatav .htaccess failis, s.t. iga kasutaja saab oma kodukataloogis valikuliselt faile kaitsta. Directory ja Location ei ole .htaccess-is lubatud. Apache manuaal Files direktiivi kohta.


Firefox & automaagiline proxy konfigureerimine


Oletame, et sul on üks veebisait - http://klient.ee, kuhu saab ligi ainult läbi ühe kindla HTTP proxy. See proxy lubab ligipääsu ainult sellele konkreetsele saidile ja samas on sul seda saiti üsna tihti vaja kasutada ja vahetevahel teisi saite ka.

Firefoxis on seda kõige lihtsam teha nii: kopeeri järgnev tekst tekstifaili:

function FindProxyForURL(url, host)
{
if (shExpMatch(host, "klient.ee"))
return "PROXY minuproxy.ee:3128";
else
return "DIRECT";
}

Pane failile nimeks proxy.pac ja salvesta see kuhugi, kust seda veebibrauseriga kätte saab, näiteks http://minuhost/~duke/proxy.pac

Edasi võta lahti Firefoxi seadistused ja General, Connection settings alt märgista valik “Automatic proxy configuration URL” ja kirjuta sinna lahtrisse selle PAC faili URL. Salvesta ära ja nüüdsest peale saad ilma mingi vaevata mõlemat saiti korraga kasutada, sinna mõeldud ühendused lähevad läbi proxy ja ülejäänud lähevad otse

Selle PAC failiga saab veel igasugu trikke teha, mingi manuaali leiab siit


Võta oma monitorist rohkem (Linux)


Paraku on Linuxis Xi konffimine siiani mõttetult keeruline, mul käis monitor siiani näiteks 85hz sagedusega, ei miskit erilist aga silmad ka väga ei karju. Tean et monitor suudab enamat, aga vajadus manuaale kammida, et suuremat sagedust saada, oli nii vastumeelne, et seda ma ei teinud. X.org 7.0 tulekuga loodetavasti muutub midagi paremuse poole aga seniks tuleb appi “gtf” nimeline utiliit

duke@debian:~$ gtf

usage: gtf x y refresh [-v|--verbose] [-f|--fbmode] [-x|--xorgmode]
            x : the desired horizontal resolution (required)
            y : the desired vertical resolution (required)
      refresh : the desired refresh rate (required)
 -v|–verbose : enable verbose printouts (traces each step of the computation)
  -f|–fbmode : output an fbset(8)-style mode description
 -x|–xorgmode : output an Xorg-style mode description (this is the default
                if no mode description is requested)

duke@debian:~$ gtf 1024 768 100

  # 1024×768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
  Modeline “1024×768_100.00″  113.31  1024 1096 1208 1392  768 769 772 814  -HSync +Vsync

Selle Modeline kirjutasin ma oma xorg.conf sisse “Monitor” sektsiooni, restartisin X-i ja seejärel sain KDE-s panna refresh rateks 100Hz. Vahe on märgatav küll.


wtf?


PHP Code Lock - PHPCodeLock encrypts both PHP and HTML code, protecting your pages with bulletproof technology!

Põnev värk ju. Pakuvad 15 päeva jooksul aeguvat demo ka, tirisin selle ära, pakkisin lahti ja vaatasin huvi pärast ühe faili sisse - seal oli järgnev tekst:

< ?PHP
/* WARNING: This script is protected. Any attempt to reverse engineer, debug or de-code this file or its dependent files is strictly prohibited */
$codelock_rfiled=dirname(__FILE__); if ($codelock_file == '') { echo "
Error! You cannot run codelock directly…”; die(); } else {} $codelock_lock=”ICRjb2RlbG9ja19hY3 …

Ja kuni faili lõpuni välja samasugune binaarläbu. Otsisin siis järgmise jutumärgi üles, et selle omistuse lõpp kätte saada ja leidsin sealt järgneva.

9IHJldHVybjs="; eval(base64_decode($codelock_lock)); return; ?>

Encryption indeed. Ja te võite selle omandada kõigest $55 eest.


GMaili eesti keele speller


GMail lisas äsja laheda ja ammu hädavajaliku võimaluse - eesti keele õigekirjakontrolli.
gmailspeller.png. Mõne sõnaga jääb hätta ka, aga enamuse räigemaid kalu leiab üles ja oskab õigeid variante pakkuda.


VIM ja korduv tekst


Kui avastad, et kirjutad VIMis sama lauset/fraasi ikka uuesti ja uuesti ja uuesti, siis võta lahti oma ~/.vimrc ja lisa sinna järgnev:


iab upd + Updating generated file

Niimoodi defineeritakse uus lühend (abbrevitation). Kui järgmine kord seda korduvat teksti kirjutama pead, siis kirjuta lihtsalt 3 tähte ‘upd’ ja siis tühik ning VIM teeb asenduse sinu eest automaatselt ära.

`iab` on käsu nimi, `upd` on lühend ja kogu edasine tekst (+ ka) tuleb lühendi asemele.


Lahendus: eelmine/järgmine lingid


Mina lahendasin selle probleemi nii:

SELECT id FROM pictures WHERE parent_album = 4;

Tulemuseks kõigi piltide ID-d, need loen järjendisse sisse. Nüüd, mõnd pilti vaadates toimub järgnev:

// id tuleb url-ist, image_list on eelneva päringu tulemus
// leian küsitud pildi indeksi järjendis
$current_picture = array_search($id,$image_list);

// vaikimisi eeldan, et kumbagi linki pole
$prev_link = $next_link = '';

// kui vaadeldav pilt ei ole esimene, siis teeme lingi eelmisele
if ($current_picture > 0)
    $prev_link = 'http://site/pilt.php?id=' . $image_list[$current_picture-1];

// kui vaadeldav pilt ei ole viimane, siis link järgmisele
if ($current_picture < sizeof($image_list)-1)
    $next_link = 'http://site/pilt.php?id=' . $image_list[$current_picture+1];

Ja ongi kogu moos. Lihtne ja loogiline :)


Nuputamist: eelmine/järgmine lingid


Kirjutad veebifotoalbumit. Eksisteerib järgmise struktuuri ja sisuga SQL tabel:

mysql> select path,id,date_submitted from pictures where parent_album = 4;
+---------------------------------------------+----+---------------------+
| path                                        | id | date_submitted      |
+---------------------------------------------+----+---------------------+
| images/jacob/eriti uus/IMG_3096.JPG         | 25 | 2005-06-28 23:58:26 |
| images/jacob/eriti uus/IMG_3111.JPG         | 26 | 2005-06-29 00:01:05 |
| images/jacob/eriti uus/IMG_3112.JPG         | 27 | 2005-06-29 00:20:03 |
| images/jacob/eriti uus/bungee.png           | 30 | 2005-06-29 00:27:36 |
| images/jacob/eriti uus/vaike_kopter.jpg     | 32 | 2005-06-29 00:43:41 |
+---------------------------------------------+----+---------------------+

Ülesanne: kirjuta kood, mis suvalise ette antud pildi ID puhul oskab kuvada eelmine/järgmine lingid.

Kui vaadatakse pilti id-ga 30, siis “eelmine” peab viima 27 peale ja järgmine “32″ peale. Kui vaadatakse pilti, mille ID on 25, siis “eelmine” linki olla ei tohi, “järgmine” peaks viitama 26 peale.

Võid kirjutada niipalju SQL päringud kui tahad. Võib ka loogika koodi sisse ehitada.

Kirjed on järjestatud date_submitted välja järgi.

Lahendus ei pea olema MySQLis, võib kasutada stored procce, vaateid (views) või mis iganes sul parajasti pähe torkab.

Pakkumised kirjutage kommentaarina (pole vast kõige mugavam) või saatke meiliga duke at masendav punkt com.

Soovitus: free your mind ;)

Teisipäeva (26.07) õhtul näitan oma lahendust ja kommenteerin teiste pakutud variante.