Go to content Go to navigation Go to search

[ANN] Ruby-Stemmer

28 October 2009

I’m very proud to announce the first release of Ruby-Stemmer, an implementation of Stemming Algorithm using SnowBall API from libstemmer_c.

That’s it. Is not a pure ruby implementation, but the external library it’s included with the download so you don’t need to install anything else, just run: gem install ruby-stemmer.

The usage is very simple:

require 'lingua/stemmer'
s = Lingua::Stemmer.new
s.stem "installation" # ==> install

You can change the language or the encoding by passing them to the Stemmer constructor. For example to run the Romanian algorithm with ISO-8859-2 as encoding just use:

s = Lingua::Stemmer.new(:language => 'ro', :encoding => 'ISO_8859_2')
s.stem "găinațul" #==> găinaț

You can read the complete list of algorithms in modules.txt

The code, released under the terms of MIT-LICENSE, is available also on github

git clone git://github.com/aurelian/ruby-stemmer.git

Note

Please use the infrastructure provided by github to report issues.

I’m proud to release the ultimate sidebar item to add on your Textpattern based blog: The FriendFeed Feed!

aao_friendfeed – still a work in progress – is just a plugin for textpattern and you can see a “demo” already on the bottom of my sidebar.

Follow the development of this amazing tool on the textpattern forum.

Content Editor is a Beast plugin that allows creation of simple pages with …stuff.

Features

  • Nice Permalinks (http://example.com/my-cool-page);
  • Admin only (http://example.com/pages to start with it);
  • Textarea with Textile;
  • …umm

Install

  • make sure you have a working Beast (or Altered Beast) installation!
  • clone with Git:

    git clone git://github.com/aurelian/beast--contenteditor.git vendor/beast/content_editor

  • or download and unpack to vendor/beast/content_editor
  • there is a wiki page.

Halp?

  • Contact/Patches: use the form. or the email, no patches via SMS.

What’s Beast?

A forum.

Vertical ...Progress

25 February 2008

Am prins cateva ore saptamana trecuta pentru a imbunatatii idea legata de dezvoltarea unui vertical1 search engine pentru joburi din .ro. Am prezentat cateva detalii in Follow up IT Market


Search Results

Proiectul nu este live. Si inca nu stiu cand si daca va fi disponibil.

Momentan e doar un “loc de joaca” pentru probleme legate de o cautare: relevanta, rapiditate, detectarea si eliminarea anunturilor duplicate sau a problemelor morale2.
Si ce sens are sa colectezi atatea date daca nu dezvolti si servicii aditionale in paralel? Statistici sau trenduri de exemplu.

Alte concluzii:

  • anunturile publicate pe myjob sunt de foarte multe ori clasificate incorect si ma intreb daca merita efortul pana la urma.
  • encoding-ul poate provoca ceva peri albi (ex).

P.S: peste vreo 2 ore incepe wurbe #6.

—-

1 Ironic, acum doua luni nici nu stiam ce inseamana.

2 Cat de corect este sa construiesti un continut pe date colectate din diverse surse? Cum ar fi sa publici si reclame in paginile respective?

yay pigeons!

25 January 2008

Pentru a III-a oara in ultimul an m-am trezit cu o familie de porumbei in balcon. Deja a aparut un ou.. si de ce nu si un blog unde sa povestesc ce se mai intampla cu ei.

The First Father

Deja aventurile din primul sezon au fost spuse.

FAQ

1) Ai prea mult timp liber? Nu, dar imi iubesc pasarile. Si pisicile sunt okay. Lemurii sunt si mai adevarati.

2) Google Adds? Da, pentru ca din banii adunati planuiesc sa adopt un lemur pentru un an, dap o sa pun o poza cu mine si lemurul cand o sa soseasca. Nu refuz si alte colaborari atat timp cat sunt “contextuale”.

3) Engleza? Da, pentru ca veau sa imi imbunatatesc skilzurile (sic!) si, apropos, accept orice fel de corecturi corecte.

4) Alte idei de viitor? Da.

Off

Apropos, ti-ai facut o lista cu lucruri pe care vrei sa le faci in viata asta? Daca nu, cred ca este foarte trist.
Gandeste-te cat de trist si deprimant poate sa fie sa nu ai niciun plan. Blogul despre porumbeii era pe lista mea.
Lucrurile marunte si neinsemnate aparent sunt cele care ma fac fericit.

Au trecut deja doua saptamani de cand Filip a lansat Jobber.ro, o alternativa simpla si eficienta de recrutare IT.

Front Side

Dar nu despre Jobber vreau sa iti povestesc, ci despre o noua modalitate de a fi la curent cu ultimile anunturi adaugate. Si asta direct pe dashbord cu ajutorul unui Widget.

Cum este prima mea isprava de acest fel, as vrea sa detaliez putin procesul.
In primul rand, un widget este o combinatie de HTML, CSS si JavaScript unde toate fisierele necesare sunt puse intr-un director al carui nume se termina in .wdgt.
Workflow-ul este destul de simplu, iar pe site-ul Apple sunt destule exemple de widget-uri care preiau stiri sub forma RSS.
In cateva cuvinte, documentul HTML are atasat pe elementul body un eveniment declansat la onload, eveniment ce face un request folosind XmlHTTPRequest pentru a prelua fluxul RSS. Acesta este apoi parsat si introdus in document.

Am ales mootools pentru JavaScript mai mult pentru ca eram curios sa vad cum se misca frameworkul decat pentru efecte sau reqesturi AJAX cross-browser.

Back Side

Singura problema intampinata a fost legata de feed-ul oferit de Jobber.ro din cauza ca acesta este generat in formatul RSS-1.0.
Din cauza namespace-urilor (cred) nu puteam sa selectez din feed titlul si linkul corespunzator fiecarei intrari. Lucru destul de ciudat, pentru ca in Safari aveam rezultatul dorit. Acum, getElementsByTagName('link') mergea in browser dar nu si in dashboard si asa am ajuns la concluzia ca sunt folosite versiuni diferite de WebKit. In dashboard puteam accesa doar descrierea si data unei intrari, titlul si linkul fiind returnate ca un singur element Text.

Dupa cateva ore de lupta cu RSS-ul, am renuntat si am ales sa folosesc API-ul oferit in varianta cu raspuns in format XML. 10 minute mai tarziu aplicatia era gata.

Pe viitor, as vrea sa adaug si o sectiune unde sa iti poti configura diversi parametrii, de exemplu sa poti alege doar anunturile publicate intr-o anumita categorie.
Pana atunci, download de aici.

Despre Minute / Net

02 July 2007

Minute pe net este un tumblelog.
Adica, un fel de blog in care articole scurte prezinta informatii ce imi atrag atentia. Nu exista comentarii sau categorii. Posturile nu au nici macar un titlu.
Nu sunt lucruri pe care eu le consider interesante sau amuzante. Prin eventualele completari incerc sa fiu cat mai distant si sa nu exprim nicio opinie pentru a pastra sensul sursei initiale.

Intr-o proportie foarte mare, minutele sunt asigurate folosind fluxurile rss/atom cu continut in limba romana. Cred ca am indexate cel putin 200 de feeduri din cele mai diverse domenii folosind o categorie speciala in Google Reader.

Primul post l-am scris pe 7 Iunie cu toate ca aveam aplicatia aproape gata din Aprilie. Pana acum, siteul a fost in “private beta” fiind “promovat” doar prin statutul pe care il aveam pe Y!Mess.

Planuiam acest proiect de cel putin un an, insa atunci continutul oferit in principal de bloggeri era destul de subtire. Mai mult, nu toate ziarele ofereau in versiunea online un feed. Acum starea generala a webului romanesc parca s-a mai imubatatit facilitand aparitia siteurilor cu continut generat de alti utilizatori.
Minute / net va evolua catre o aplicatie mult mai complexa, insa schimbarile vor fi facute in timp.

Autofinantare: investitia in propriile proiecte.
Context: Romania—> IT—> Software—> Web.

Singurul motiv bun pentru care as investi intr-un proiect propriu in contextul descris mai sus ar fi satisfactia realizarii unui produs prin forte proprii. Sa fim realisti, castigul material iese din discutie cel putin in primul an.
Pe de alta parte ar putea sa fie “The First Big Thing” pe piata din Romania.

Ar trebui sa stiu sa joc un triplu rol: sa fiu producator ( programator / designer ), utilizator dar si client.
Si sa am calitatile si subiectiviatea necesara pentru fiecare rol in parte: sa fiu un client exigent, un producator bun, un utilizator sceptic.
Nu inseamna ca o sa incep sa ma cert singur prin casa pentru un termen limita nerespectat, insa voi avea nevoie de organizare.
Ah, si sa stiu sa imi promovez produsul.

Cu 8 ore petrecute la munca timp de 5 zile pe saptamana, autofinantarea inseamna abandonarea unor proiecte aditionale aducatoare de bani suplimentari.

Prin noiembrie anul trecut am inceput sa caut un Peugeot 307 pe motorina second-hand. Trebuia sa aibe 90 sau 110 cai, motor de 1.6 sau de 2.0 si cutie de viteze manuala. Si sa nu fie gri, alb sau rosu. Nu intru in amanunte despre cum am ajuns la aceste cerinte, depaseste scopul acestui articol insa imi era foarte clar ce vreau.
M-am pus pe cautat pe siteurile de specialitate de la noi. Nu a fost foarte greu sa gasesc anunturi ce corespundeau exigentelor mele care sa se incadreze si in bugetul avut la dispozitie.

Insa, ca un power-user de web ce sunt, nu am fost incantat de felul cum se arata si se comporta respectivele siteuri.
Ati vazut vreodata autovit.ro ? Ca o paranteza, trafic.ro ne indica peste 750.000 de vizitatori in februarie.
Normal ca mi-am zis ca pot face ceva mai bun, mai usor de folosit si mai aratos.

Si m-am pus pe analizat viitoarea concurenta. Asa mi se pare normal: sa imi fac o idee asupra numarului de vizitatori ce se invart in acest domeniu.
Si am pus pe hartie: autovit.ro 630 (suntem in noiembrie) + .... masini.ro …. si inca vreo 2-3 siteuri. Am facut adunarea repede si am aflat cel putin estimativ cam cate clickuri se dau pe siteuri de acest gen.
(Acum stau si ma intreb daca aceasta informatie ar fi fost utila…)

Normal ar fi fost sa incep sa analizez cam cum ajunge lumea pe respectivele siteuri, sau sa incep sa schitez o interfata, o baza de date ceva.
Dar nu, m-am pus si am bagat datele colectate anterior intr-un fisier excel.
Daca tot eram aici, am spus ca ar fi mai relevant daca as lua traficul din ultimile 6 luni.
Apoi cum ar fi daca as face si niste grafice? Cu portocaliu sau cu verde?
Dar daca as scrie un script in Ruby care sa faca toata treaba pentru mine??? Si m-am pus pe script.
De mult imi doream sa folosesc hpricot combinat cu putin XPath. Dupa cateva ore am reusit sa scriu cate un fisier csv pentru fiecare site “analizat”.
Daca tot eram la scripturi, de ce sa nu adaug si alte facilitati? De exemplu sa imi aduca si ultimile referinte. Dar de ce sa nu fac o baza de date SQLite care sa tina toate aceste detalii? Si apoi, cum ar fi sa fac si o interfata web ajutat de Rails pentru a afisa niste grafice dragute, eventual facute cu SVG::Graph ?

Dupa vreo 2-3 samptamani de “analize” si presat de alte probleme ( de exemplu am devenit proprietarul masinii cautate ), am abandonat total proiectul, spre bucuria celor de la autovit.ro. In tot timpul asta eram constient, parca radeam de inventiile mele intrebandu-ma cat de mult pot devia de la ideea initiala.

Acum cred ca am invatat lectia: prea multe detalii pot ucide un proiect.