« hitch a ride downtown

Amator Profesionist

posts tagged 'tech'

Note de subsol, scrise de Skee.

fractal

Overused services on abused servers

Things I’ve learned while running a public BitTorrent tracker that handles about 66k torrents and, on average, about 70k peers. On a 7 year old desktop machine turned server, nonetheless.

Load averages can get up to the high three hundreds, heh:

19:22:59 up 11 days,  1:56,  1 user,  load average: 380.23, 384.55, 292.47

Once you’ve reached a critical efficiency level in software, the hardware will screw you over: went from handling 15-20 requests/sec via a PHP and flat-file based tracker (lighttpd + fastcgi + php-cgi) to handling around 200 reqs/sec and 600 live connections at any moment with xbtt reverse proxied from lighttpd. But the line was so saturated that I was seeing latencies of 16-20s on connections. And when you’re running on 256 MBs of RAM, … well, welcome to swap hell.

Although never explicitly mentioned anywhere, lighttpd can use the source IP as a parameter in a rewrite. It’s just a question of doing the rewrite inside a regex IP address conditional:

$HTTP["remoteip"] =~ "(.*)" {

url.rewrite-once = ( "\/target\?(.*)$" => "/target?ip=%1&$1" )

}

The %1 parameter is the match of the $HTTP[“remoteip”] check, while the $1 parameter is the match of the rewrite check itself. So you can basically reproduce nginx’s $remote_addr in rewrites, and then use it for reverse proxying, thus passing the original IP to the target webserver as a GET parameter, not just as a header.

Unless IPv6 is enabled. Because apparently if it is, you can’t just do matching against $HTTP[“remoteip”], probably because IPs show up as v4-mapped IPv6s (::ffff:127.0.0.1). And as I’m an IPv6 enthusiast, that’s a no-no.

Consumer-grade routers suck. I’ve been blaming that NetGear router for a while for dropping connections like mad. How is it that a shitty 7 year old system with a load in the hundreds which actually processes requests can still handle more connections than a one year old router?! And it isn’t exactly one of the cheap ones either.

Praise be to lighttpd! Quirky, buggy software, might exchange it for nginx one day. But for now, it’s everything I need and keeps everything running smooth.


And in the end, when all was said and done, I decided that running a BitTorrent tracker is too much hassle for no reward whatsoever, I’ve already gleaned all the knowledge I could from this experience and I had simply become bored with it. So I just CNAMEd tracker.token.ro to tracker.publicbt.com - let them handle all those thousands of peers! That’s what they’re there for.

Using GNUplot to graph process CPU usage

At a friend’s request and out of plain curiosity, I went about trying to find a way to graph per-process CPU usage over time. So I wrote this tiny script that grabs a certain PID’s CPU usage every 3 seconds for however long the user specifies, and when it’s done, it outputs a nice ASCII chart of the CPU usage, courtesy of GNUplot.

Here’s the script:

#!/bin/zsh
if (( ! $# )); then
    echo "Usage: $0:t <PID> <minutes to monitor>" >&2
    return 1;
fi

let "ticks=$2*60/3"
for i in {1..$ticks}; do;
    ps -p $1 -o pcpu | grep -v % >> $1-usage.txt;
    sleep 3;
    echo $i / $ticks;
done;

gnuplot -e "set term dumb; set yrange [0:100]; \
plot '$1-usage.txt' s c;"

And here’s the output:

100 ++------+------+-------+------+-------+------+-------+------+------++
    +       +      +       +      +       +  'usage-mplayer.txt'+****** +
    |                                                                   |
    |                                                                   |
 80 ++                                                                 ++
    |                                                                   |
    |                  *******************                              |
    *******************                  *                        ******|
 60 +*                                   *                      ***    ++
    |                                    *                    **        |
    |                                    *                    *         |
    |                                    *                   *          |
    |                                    *                   *          |
 40 ++                                   *                   *         ++
    |                                    *                   *          |
    |                                    *                  *           |
    |                                    *                  *           |
 20 ++                                   *                  *          ++
    |                                    *                  *           |
    |                                    *******************            |
    +       +      +       +      +       +      +       +      +       +
  0 ++------+------+-------+------+-------+------+-------+------+------++
    0      100    200     300    400     500    600     700    800     900

And GNUplot also does graphical charts! Take the <PID>-usage.txt file dropped in your cwd by the script and run it thru GNUplot like this:

gnuplot -e "set term png; set output graph.png; \
set yrange [0:100]; plot 'PID-usage.txt' s c"

The numbers on the X axis are ticks (seconds/3), the numbers on the Y axis are CPU usage.

Required for this script: zsh, gnuplot and… ps.

Introducing Pentax K-7: Live View pe ecran de 3”, înregistrare video HD, engine nou-nouţ (Prime II) care duce până la 5.2fps şi expuneri de 1/8000, sisteme de metering şi AF îmbunătăţire (şi AF assist beam, finally), funcţii de HDR compo, corectarea aberaţiilor obiectivului, declanşare programată (time lapse, sper că mai bine pus la punct decât în K20D unde era limită de 99 de cadre), şi altele.

Need $1300. Cine cumpără un K200D folosit un an şi un 18-55 AL folosit 3 luni? Că a apărut deja K-7-ul în oferta focus94, deşi abia-n iulie iese efectiv pe piaţă.

emergent online technologies!

So recently I’ve been earning myself a couple of techie/geek badges with token.ro, as it now supports/implements a bunch of next-gen technologies and ideas. Some are useful, others are implemented just because I could.

  • IPv6 support
    The site has been fully IPv6 enabled for a few months. I’ve got a httpd listening on an IPv6 address, AAAA records in my nameservers, which are IPv6-accessible themselves *and* have IPv6 glue at the ccTLD authority. Only 3 of the 6 root nameservers for .ro are IPv6 enabled, but we’re getting there.
  • SPF and DKIM for email
    I’m now publishing strict SPF records and a DomainKey. All outgoing emails from this domain are signed with DKIM, all incoming+forwarded emails go thru SRS to prevent any SPF breakage. Take that, spam!
  • OpenID
    This one isn’t exactly new: this domain is also my OpenID, via delegation to the provider of my choice (currently idproxy.net). The advantages of OpenID are numerous, the advantage of using your own site as your OpenID is that you’re not tied to any one provider - provider delegations are easily changed.
  • FOAF
    So I got into the whole semantic web craze and published my FOAF description. Basically, FOAF is a means of creating a distributed social network, with each participant retaining full control over the data made public (as the FOAF description is just an XML file published on your website).
  • microID signatures
    The entire site (including this blog) has been signed with my microID. Not extremely useful (with microID, the possibility of verification implies the possibility of spoofing), but I liked the concept. Added bonus: claimid now recognizes me as the author of my own website, isn’t that awesome? And, well, I like microformats.
  • CDN delivery
    As a tiny experiment, this tumblelog’s static content is now served via the Coral Content Distribution Network. I don’t expect speed improvements, I just want to see how it… feels. I’m thinking of deploying my own CDN for the whole domain, seeing as how I have access to servers on multiple continents. And deploying a CDN with GeoScaling, my DNS provider, would be a breeze.

Next up on the list? Probably a hosted XMPP+SIP solution, some LOC records for the domain, putting my SSL cert to good use by enabling HTTPS and whatever else will pique my interest.

La mulţi ani 2009!

Tivoli Garden fireworks by Stig Nygaard

Sorcova, vesela
Să trăiţi, să-mbătrâniţi
Ca un măr, ca un păr
Ca un fir de trandafir
Tare ca piatra
Iute ca săgeata
Tare ca fierul
Iute ca oţelul.
La anul şi la mulţi ani!

Cumpăraţi-mi albumul că mor de foame!

Predicţii şi interese pentru 2009:

  • Băsexu a început anul cu Braşovul, înaintea restului ţării, aşa că pentru cei care au trăit sau le-a fost povestit, am două cuvinte: Băsescu Reales, că-i cu vreo 8 secunde mai deştept/rapid.
  • Pentru că deja aidiurile cu 2009 au fost luate din 2008, mă aştept să apară o infuzie de aidiuri de mes cu sufixul 2010, pe măsură ce băjeţii jmekeri migrează în noul an. Sper că s-a înşelat A.C. Clarke şi 2010 nu va fi “the year we made contact” - i’m looking at you playboy_gigolo_putamadre2010.
  • Va fi criză dom’le! Ţineţi-vă de joburi cu dinţii, dar nu uitaţi să consumaţi, consumaţi, consumaţi! Nu cumva să faceţi economii, e antisocial, este responsabilitatea noastră să susţinem economia naţională prin consum continuu. Şi ca să fim buni cetăţeni ai UE, lăsaţi prostiile alea cu cumpăratu’ de producţie locală, făceţi-vă toate catârurile.
  • Filme şi seriale: Watchmen apare-n martie, Star Trek XI şi Up!-ul Pixar-ului apar în mai, Avatar al lui Cameron apare-n decembrie. Revine Red Dwarf (\o/), Futurama se întoarce în februarie cu încă un STV numit Into The Wild Green Yonder, iar la vară începe seria nouă de Stargate, anume Stargate Universe. Şi poate o să şi aflăm cine-i al cincilea cylon din BSG, if anybody cares any more.
  • Tehnologie: câteva chestii care mă aştept sau sunt programate să fie puse la punct/adoptate pe scară largă în 2009: display-uri OLED, standardul wireless 802.11n, WiMax, Windows 7, poate IPv6. Probabil or să se vândă mai multe netbook-uri şi smartphone-uri, dar asemenea predicţie e ca şi cum ai spune “anul ăsta o să plouă”. Pe frontul Linux, a fost lansat acum câteva zile Linux 2.6.28, cu câteva idei noi şi inovatii (GEM, ext4 şi altele). Sper şi la un port de ZFS spre Linux (cu licenţă compatibilă cu GPL-ul), sper să fie pus la punct Tux3, eventual să fie integrat în kernel şi sper la un VDPAU funcţional şi compatibil cu gamă mai mare de chipset-uri.
  • Jocuri: Mass Effect 2, Deus Ex 3, Call of Duty: Modern Warfare 2 (Infinity Ward, nu amărăştenii de la Treyarch), Halo 3: ODST, Resident Evil 5, Street Fighter 4, Bioshock 2, GTA4: The Lost and Damned, Sins of a Solar Empire: Entrenchment, Beyond Good and Evil 2, Mafia 2, Red Faction 3. Asta la capitolul sequel-uri, să ştiu la ce să mă aştept. Dar sunt şi câteva jocuri (eventual viitoare francize) noi care mi-au atras atenţia: Prototype, Alan Wake, Brutal Legend şi… cam atât. Release dates nu-s fixe la unele, dar sper să fie în 2009.

Cam atât la capitolul previziuni şi expectaţii. Încă o dată: la mulţi ani, un an nou fericit, fie ca 2009 să aducă numai bucurii, împliniri şi kinky sex. Sănătate.

ps: Nu, poza nu-i făcută de mine. Copenhaga!

Vama Veche

Turul 4 la mare pe anul 2008 - completed. Engaging power-saving mode, awaiting turul 5 :D.

De data asta m-am întors bronzat. Şi cu alge-n păr. Şi, binenţeles, cu multe poze. Am stat 6 zile-n Vama Veche cu cortul, m-am relaxat, m-am distrat, m-am îmbătat, am dat din pleată la Piraţi, am ţopăit la Stuf, am stat pe plajă de dimineaţa până seara, am reuşit să citesc vreo 150 de pagini, am făcut baie-n puţa goală la 1 noaptea, m-am întâlnit cu prieteni vechi, am cunoscut lume nouă, m-am plimbat, am mâncat hamsii, am dormit prin cort sau unghere de umbră, am făcut vreo 2 ture şi până-n 2 Mai, am învăţat să joc rentz, m-am perfecţionat la whist şi am descoperit limonada de Biborţeni, Limo.

Ce mă amuză că mai bine de jumate din prima pagină a blagh-ului e acum ocupată de post-ul de genul ‘mâine plec la mare’ şi ‘am venit de la mare, abia aştept să plec iar’.

În altă ordine de idei, de sâmbătă, iar BBL:

Traseu Romania - Germania

Bucureşti - Alba Iulia - Arad - Budapesta - Bratislava - Praha - Nurnberg. Şi, evident, retur.

La întoarcere cred că vin prin Austria şi intenţionez să mă uit la nişte echipamente de camping. Un cort mişto, eventual o saltea, un rucsac fain. Chestii de genul, că tot ar trebui să se cam termine şi la ei sezonul de cortangeală acum, poate găsesc ceva fain la preţuri bune.

Iar înainte să plec, cred că chiar astăzi, vreau să fac o tură pe la Focus ‘94 şi să mă joc cu o Sigma 17-70 f/2.8-4.5. Costă mai bine de 1000 de lei la ei, în condiţiile în care aş putea-o lua de afară cu ~900 de lei cu livrare cu tot. Cu toate astea, e cel mai mic preţ pe care l-am găsit în ţară şi n-am timp s-o comand din afară. Încă nu-s hotărât, mâine aflu dacă o vreau şi dacă merită să-mi rup pâinea de la gură ca să fac poze.

În încheiere, cinci corturi la fel:

Cinci corturi

În vreo 2 ore fug iar la mare, să mai clătesc zoaiele cotidiene din bătătura cerebelului. Doi Mai, plajă, baie, mâncare bună la preţuri bune, bere, poze…

… a, da, poze cu noul meu fotator. În sfârşit mi-am luat avânt şi mi-am luat DSLR, un Pentax K200D. Ura.

Pentax K200D

Revin cu poze unice (teoretic) şi piele înnegrită cam pe marţi.

Ura plec la mare! Ca numărătoare, e deja a doua ieşire la mare în vara asta. More to come, if I’m lucky.

Prezentare SQLite

Caut spaţiu locativ

…pentru poze. Mai am vreo 80 MB liberi în contul de Picasa Web Albums şi pare că Google n-o să crească free storage-ul, acum că au pus la punct chestia cu shared storage. Aşa că am luat-o lipa-lipa în căutare de soluţii alternative pentru photo hosting/sharing.

  • flickr: Oferă stocare practic nelimitată, deşi limitează la 100 MB upstream trafic pe lună, adică nu pot să uploadez mai mult de 100 MB de poze într-o lună. Cam puţin când eu mă întorc dintr-o ieşire la mare de 8 zile cu 4 GB de poze. Bine, 250 MB dupa redimensionare la 2 MP. Altă problemă e rezoluţia la care afişează pozele: dacă nu eşti pro user, maxim 1024 pixeli pe latura cea mai mare. Plus că prefer sistemul “clasic” de photo management, nu ăsta Web 2.0-ish, social network crap. Vreau să-mi organizez pozele-ntr-un album, să-i dau un nume şi să se vadă toate acolo. Nu vreau tag-uri, photostreams, submit this photo to a group şi alte bălării. Plus, eu sunt fotograf de volum, nu de calitate - fac poze cu oricine şi orice, în sistemul “Look a blue car!”. flickr e orientat spre artă fotografică parcă, imagini de excepţie.
  • zooomr: Spaţiu de stocare nelimitat, trafic nelimitat, viteză destul de bună încât să nu îmbătrânesc până uploadez nişte poze. Problema e că, deşi pot să-mi downloadez propriile poze la rezoluţia originală, pe ale altora le pot vedea la maxim 500 pixeli pe latura mare (adică 500x375 pentru poze 4:3). Deci nici vizitatorii, mai exact persoanele pe care le invit eu să-mi vadă pozele, n-or să le vadă mai bine de 500x375. În fine, citisem undeva prin FAQ că e doar o problemă temporară şi că o să se poată seta chestiuni de genul ăsta când or sa repare pagina de my account sau aşa ceva, dar rămâne de văzut ce şi cum. Oricum, şi ăsta e cu pro accounts. Şi e al dracu de similar cu flickr - tot web2.0 social networking, hai să îmi fac reţea de prieteni şi să particip în grupul “poze cu fete cu părul roşcat şi pistrui”. Pas.
  • atpic: Spaţiu nelimitat, trafic nelimitat, rezoluţe originală. Upload prin web form sau FTP. Aspect pe de-a-ntregul configurabil din CSS, template-uri şi skin-uri. Şi îmi place şi cum lucrează, în sensul că au galerii (albume), dar se pot folosi şi tag-uri. Şi aparent e făcut de nişte tipi destul de deştepţi care explică în FAQ ce-i aia web1.0 şi web2.0, difierenţa între taxonomy şi folksonomy (directoare/albume şi tagging). Foarte promiţător, deşi nu ştiu dacă mi-aş încrede colecţia de poze unui site de care n-am auzit foarte multe. Pe limba lu’ şecspir, “sounds too good to be true”.
  • soluţia banală: fac rost de ceva webhosting cu mult spaţiu (2-3-5 GB), preferabil în metro, şi instalez un gallery2 sau zenphoto. Sau aş putea să folosesc chiar funcţia de “Export HTML” din Picasa, am găsit câteva template-uri foarte frumoase pentru chestia asta recent. Oricum, dezavantajul în cazul ăsta e că sunt dependent de host şi de soft. Dacă pierd host-ul subit sau se întâmplă ceva cu soft-ul (de genul exploit+hack), mi-am pierdut colecţia de poze. Şi fără ceva entitate mai mare în spate (de genul Google pentru Picasa Web Albums sau Yahoo pentru flickr) şi fără ceva admini deştepţi care ştiu cum să rezolve o problema (cum presupun că sunt la zooomr şi atpic), arrividerci colecţiei de fotografii.

Mai aştept să văd cum evoluează piaţa, momentan nu am poze de uploadat (sau cel puţin nu în cantităţi industriale), deci îmi permit să mai tatonez terenul.