hunspell c api

Ahogy a cím írja!

Hunhandle
Megnyitott szótárállományok struktúrája.

void Hunspell_create(const char *, const char *)
Szótárat nyit meg.
Első paraméter aff fájl útvonala.
Második paraméter dic fájl útvonala.

int Hunspell_spell(Hunhandle *, const char *)
Szó helyességét ellenőrzi.
Paraméterek:
1. megnyitott szótár
2. szó
Visszatérési érték:
0 – hibás
> 0 – helyes

char *Hunspell_get_dic_encoding(Hunhandle *)
Szótár karakterkészletét adja vissza.
pl: UTF-8

int Hunspell_suggest(Hunhandle *, char***, char *)
Javaslatot tesz a hibás szóra.
Paraméterek:
1. szótárállomány
2. lista amibe elhelyezi a javaslatokat
3. szó
Visszatérési értéke a lista hossza. Ha nincs elem a lista NULL.

Teszt kód:
[snippet=24205]

A kód a következő kimenetet produkálja:
0
1

UTF-8

11
helyes
tejes
lejes
nejes
pejes
vejes
bejes
fejes
hetes
heges
heves

gugli os

Bejelentették. Kb sejthető is volt, hogy mit akarnak, azt is hogy hogyan.
Rögtön kapóra is jön egy -egyenlőre- tervben létező rendszerhez:
Sokszor volt már az, hogy mentünk volna el, de hoppá meg kéne nézni a menetrendet! Minden gép már ki volt kapcsolva, mire betölt el is megy a busz/vonat/hév/akármi. Ezért már egy ideje gondolkodtam azon, hogy fel kéne használni a “csökkentsük a bootidőt” hype-ot.  Összeszedni egy vasat, amire egy megfaragott linux kerül, valami egyszerű felülettel.  És itt jön be a google os. Ők már alapból azokon gondolkodnak, hogy gyorsan bootoljon és csak egy böngésző legyen rajta. Még ugyan nem szedtem le, de ha reszelhető annyira amennyire nekem kell máris megvan az operációs rendszer, csak egy kezdőlapot és egy megfelelő vasat kell alátolni! (hibernáláskompatibilis + ssd merevlemezes + passzív hűtésű/csendes)

Jó móka lesz!

ActivityFeed

A twitteren már elcsipogott program béta állapotba került. Mi ez az ActivityFeed?
Volt egy gondom, miszerint a youtube felhasználók aktivitását nem tudtam rss-ben követni*. Magamnak megírtam, majd viteez “nyüstölésének” köszönhetően publicitást kapott. Ezen az oldalon. Egyenlőre próbálgatás szintjén megy a program, de a tesztjeim egész biztatóak. A sebessége és működőképessége nagyban függ a youtube-tól, de ezzel együtt is egész jól megy.

* nem mondom hogy lehetetlen a követés, de nem is a legpraktikusabb.

Kiránduljunk gwave-vel!

Pár hete megérkezett a google wave. Eddig nézegettem, szoktam a felületet. Kiment néhány meghívó, így többed magammal is ki tudtam próbálni mire jó. A klasszikus msn-féle több szereplős játék a sodoku személyében jelent meg, ez a fajta felhasználás nem is volt váratlan. Viszont ennél sokkal többre is lehet használni a programot, igaz egyenlőre csak tervben. Az én példám amin keresztül szeretném bemutatni egy lehetséges felhasználási módot, az a klasszikus szervezzünk kirándulást. Azért ez, mert jelenleg is elérhető eszközökkel ezt tudom elég szemléletesen bemutatni. Persze olykor-olykor el fogok rugaszkodni a valóságtól és néhány lehetséges kiterjesztés ötletet is bemutatok.

Van egy baráti társaság, akik rendszeresen eljárnak kirándulni. Az ötletgazdag főszervező kitalálja, hogy szombaton olyan szép esős nap lesz, miért ne mennének el, kirándulni valahova?!
Mivel mindnyájan Budapest környékén élnek, adott a gondolat, valahova a környékbe induljanak el. A szervezőt nevezzük mondjuk connornak. Connor készít egy új bejegyzést, amibe térképre felviszi a szükséges információkat, leírja, hogy mikor és hol van találkozási pont, mi a cél stb.

tervezet
M.j.:
El tudnék képzelni egy alkalmazást a turistautak.hu-tól ami képes keresni és megjeleníteni a különféle útvonalakat, azok szakaszait kijelölve be tudnám illeszteni a bejegyzésbe. A bejegyzés megkapja a geo koordinátákat.
Egy másik alkalmazást is el tudnék képzelni a geocaching.hu-tól, amit beágyazva a bejegyzéshez kapcsolt útvonalterv alapján a lehetséges környéken lévő geocacheing ládákat listázza ki. (kis program a túrához)

Következő lépésként megnézzük, hogy milyen időjárás lesz. Az időjárást lekérdezem az adott napra majd beszúrom:

idojarasM.j.:
Ide is van ám ötletem! 🙂 Az idokep.hu gadgetjét beszúrva ismét a geo koordináták alapján lekérdezi az adott napra az időjárást, és javasol túrázáshoz megfelelő öltözéket a várható időjárás mellé.

Majd a bejegyzést elkészítve, a többeket meghívja Connor és megindul a szervezés.

A túra után a picasa-ra feltöltött galériám képeit beszúrva mondok köszönetet a résztvevőknek:

képmegosztás

Összegzés

Ha mindezt meg lehetne csinálni így ahogy leírtam akkor nagyon tetszene az alkalmazás! Persze jelenleg is lehet ilyet szervezni a wave-vel csak egyenlőre suta. Ez a példa is mutatja, hogy milyen lehetőségek rejtőznek egy ilyen alkalmazásban, ha írhatunk hozzá szabadon kiterjesztést! Milyen adatok beágyazásának lehet értelme? Turisztikai nevezetességek, útvonal tervezés, menetrend tervezés, galéria/kép beszúrás, videó beszúrás, fájl csatolás, naptár/esemény beszúrás, tv műsor beszúrás, fesztiválok, események programjainak beszúrása (pl mire menjünk el a szigeten ?!) stb.

Annak egyenlőre nem néztem utána, hogy egy adott bejegyzéshez lehet-e csatolni mikróformátumot API szinten. Ennek azért lehet jelentősége, mert így a különféle gadget-ek tudnának egymással kommunikálni, még nagyobb automatizmust elérve ezzel. A fenti ötletelésem is ezeken alapul, hiszen a gadgetek beszúrásával a bejegyzés még nem lesz felokosítva a gadget által végzett munka eredményeivel.

M.j.: Így például egy hogyan jutok oda gadget-nek is látnám értelmét. Otthonról megnézem a fenti bejegyzést. Egy gadget atomatikusan lekérdezi a honnan-t (laptop geo adata), a hovát (bejegyzésben található indulás helyszíne) és a mikort (indulás időpontja). Majd ezek alapján javasol közlekedési eszközöket. Gödöllőn lakom, Gödöllőről megyek => javasol vonatot a Keletihez 8:00-ra. Ezt beszúrhatom és kereshetek társaságot az utazáshoz. stb
A mikróformátumokban meg közismert, hogy milyen lehetőségek rejlenek!

Nekem alapvetően tetszik ez a játékszer és látok is benne fantáziát a jövőre nézve! Persze mindez akkor fog kiderülni, hogy életképes-e ha mondjuk édesanyám ül le a kifrorrott magyarul beszélő program elé. Akkor fog megmérettetni az alkalmazás. Ők még csak az e-mailnél tartanak. A számítógépet nem használók közül mondjuk a húgom féle emberek azok akik eljutottak az RSS-ig. És akkor hol van még a többi hype?!…

Redmine from Eclipse with mylyn

There is a great Eclipse plugin witch helps you to use various bugtrackers. This plugin’s name is Mylyn! There is a connector for Redmine too, witch name is redmin-mylyncon. Let’s see how to set it up!

Server side:
ruby script/plugin install https://redmin-mylyncon.svn.sourceforge.net/svnroot/redmin-mylyncon/redmine_mylyn_connector/tags/CURRENT
mv vendor/plugins/CURRENT vendor/plugins/mylyncon
rake db:migrate_plugins RAILS_ENV=production
/etc/init.d/apache2 restart

Client side:
Download the plugin from this Eclipse repository:
http://redmin-mylyncon.sourceforge.net/update-site/nightly/

Redmine eclipse-ből

Eclipse-hez létezik egy nagyszerű plugin ami segítségével a programból lehet használni a különféle bugtracker programokat (annyira különféléket hogy akár Gmail&calendar-hez is kötni lehet). Ez a plugin a mylyn! A redminehoz is létezik kötés, ezt redmin-mylyncon -nak hívják. Nézzük meg hogyan kell beüzemelni:

Szerver oldal:
ruby script/plugin install https://redmin-mylyncon.svn.sourceforge.net/svnroot/redmin-mylyncon/redmine_mylyn_connector/tags/CURRENT
mv vendor/plugins/CURRENT vendor/plugins/mylyncon
rake db:migrate_plugins RAILS_ENV=production
/etc/init.d/apache2 restart

A ruby hajlamos néha elhasalni az SF terheltsége miatt. –force kapcsolóval adjuk újra ki mindaddig amíg probléma nélkül le nem fut!
Ha mindent jól csináltunk a plugin oldalon megjelenik az új elem.

Ecplise alá pedig a szokásos módon telepítsük innen a plugint:
http://redmin-mylyncon.sourceforge.net/update-site/nightly/

redmine telepítése

Több időt töltöttem már eddig redmine telepítésével mint amennyit feltétlenül szerettem volna ezért álljon itt egy howto (amolyan comment nélküli):

svn co http://redmine.rubyforge.org/svn/branches/0.8-stable redmine-0.8
apt-get install libapache2-mod-fcgid libopenssl-ruby1.8 ruby rubygems libmysql-ruby1.8 rake libfcgi-ruby1.8
gem install -v=2.1.2 rails
mv public/dispatch.cgi.example public/dispatch.cgi
mv public/dispatch.fcgi.example public/dispatch.fcgi
rm public/.htaccess public/dispatch.rb.example

mv config/database.yml.example config/database.yml
mv config/email.yml.example config/email.yml

rake db:migrate RAILS_ENV=”production”

apache2:
<VirtualHost *:80>
ServerName redminehost

DocumentRoot /path/redmine-0.8/public

SetEnv RAILS_ENV production
DefaultInitEnv RAILS_ENV production
# Loglevel debug
<Directory /path/redmine-0.8/public>
AddHandler fcgid-script .fcgi
Options -Indexes +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
</Directory>
</VirtualHost>

a2ensite …

admin/admin

audió fájlok egyesítése

A youtubeon találtam egy egész jó felvételt Rachmaninov op.18 zongoraversenyényről. Alexis Weissenberg zongorázik és Herbert von Karajan vezényel. Egyetlen probléma, hogy 4 részben van.
Nosza egyesítsük!

Kiszedjünk az audiót:
ffmpeg -i r01.mp4 -vn r01.wav
ffmpeg -i r02.mp4 -vn r02.wav
ffmpeg -i r03.mp4 -vn r03.wav
ffmpeg -i r04.mp4 -vn r04.wav

Összefűzzük őket:
sox r01.wav r02.wav r03.wav r04.wav r.wav

Majd mp3-at csinálunk belőle.
ffmpeg -i r.wav -acodec libmp3lame -ab 192000 r.mp3

A kevésbé ráérősek csinálhatják pl audacity-vel. 🙂

mj: sox program a sox csomagban van! (meglepő)

esetem az ASUS laptoppal

Tisztelt cím_felkialtojel_

A tegnapi napon vásároltam egy K50IJ-SX009L asus laptopot, melyre előtelepítve linux operációs rendszer volt _zarójel nyit_redflag_zárójel zár_. Az egy dolog, hogy grafikus felület nélküli operációs rendszerrel árulnak egy laptopot 2009-ben, de a linux-szal telepített laptopon is van olyan hardware eszköz melyet nem támogat az operációs rendszer. Egészen pontosan a wifi és a hangkártya azok melyeket az újonnan feltelepített rendszer nem volt képes kezelni. Az interneten való tájékozódás után derült ki, hogy az ezen szériához értékesített hibásan kezelt eszközöket egyik linux terjesztés sem támogatja. Ezek után jogos a kérdés, hogy akkor hogyan képzelték azt, hogy a laptopot linux operációs rendszerrel értékesítik _kérdőjel_. Véleményem szerint ez teljes mértékben kimeríti a vásárlók megtévesztését.
Várom mielőbbi javaslatukat a probléma megoldására _felkialtojel_

Köszönettel_kettospont_
Gossler Károly

ui_kettospont_ a formot fejlesztő céget felvilágosíthatnák, hogy a kettőspont, felkiáltójel és a kérdőjel is írásjel. Köszönöm.

gui unittest

Ilyenkor úgy érzem hogy igazolva vagyok, hogy az ötleteim nem is annyira nagy hülyeségek! 🙂
Most találtam meg az előző bejegyzésben írt elképzelés tökéletes opensource megvalósítását! Firefoxra!
A program neve Selenium. Próbálgatása még folyamatban.
http://seleniumhq.org/

kattintson a gép!

Facebook-on nem rég felfedeztem a farmville alkalmazást. Nagy általánosságban elmondható hogy nem játszom. Bár néha amikor már nagyon sok a gőz és elkap a nosztalgia, akkor előveszem az age of empires-t vagy a settlers-t. De ez is minden 20. szökőévben 1x van.
A játék lényege annyi, hogy van egy x*x méretű táblád amire ültethetsz és vásárolhatsz mindenféle kelléket. Kezdetben jól kiszámoltam hogy mit érdemes és mostanra szépen gyarapodó gazdaság van… egy 12*12-es mezőn ami annyit jelent, hogy aratáskor, felásáskor és ültetéskor kell kattintani egyet. Ez ugye 12*12 (-1 mert csak 143 van valójában) * 3 kattintás lenne. Mivel azért továbbra sem vagyok időmilliomos, lusta is egy picit és kiváltképp nem vagyok titkárnő hogy kattintgassak tegnap este írtam egy programot ami mindezt megcsinálja. Már úgyis régóta meg szerettem volna nézni hogy mivel lehet kattintásokat, billentyű leütéseket és egérmozgást imitálni linux alatt. A megoldást a xlib-ben és a gdk-ban találtam meg.
Gdk segítségével nézem meg egy adott pixel színét:

import pygtk
pygtk.require('2.0')

import gtk

screen = gtk.gdk.screen_get_default()
img = screen.get_root_window().get_image(int(x), int(y), 1, 1)
print screen.get_system_colormap().query_color(img.get_pixel (0, 0))

Míg a mozgatást…

from Xlib import display, X, XK

self.display = display.Display()
self.root = self.display.screen().root

pointer = self.root.query_pointer()
pointer.root_x, pointer.root_y

… a kattintást…

#1 left, 2 middle, 3 right
Xlib.ext.xtest.fake_input(self.display, Xlib.X.ButtonPress, 1)
self.display.sync()

Xlib.ext.xtest.fake_input(self.display, Xlib.X.ButtonRelease, 1)
self.display.sync()

és a billentyűleütést az xlib végzi.

Üzleti(bb) felhasználásban is látom némi értelmét a programnak. Komplexebb felületteszteléshez lehet(ne) használni oly módon, hogy a böngésző szabványos csatornán kommunikálva kérné a programtól a műveletet majd ezek után ellenőrizné a végrehajtás eredményét. Így meg lehetne oldani sárkánydobás (drag’n’drop), gépelés, billentyűleütések, egérmozgások (akár gesztikulációk) emulálását és ezáltal webalkalmazások tesztelését.
Több X indítással meg akár tesztfarm létrehozása sem lehetetlen elképzelés.
Másik elvetemült ötlet szerint akár a követett és felvett felhasználói műveletek is visszajátszhatóvá válnak.

adatlopás?

connor@tudor:~$ resolveip goolge.hu
IP address of goolge.hu is 193.28.86.55
connor@tudor:~$ resolveip google.hu
IP address of google.hu is 74.125.77.104
IP address of google.hu is 209.85.229.104
IP address of google.hu is 216.239.59.104
connor@tudor:~$ resolveip 193.28.86.55
Host name of 193.28.86.55 is netem.hu

webprogramozó

tapasztalatok webprogramozó okj-s tanfolyásról:

infó órán feladat: csináljunk egy szöveges dokumentumot az asztalra
előttem ülő srác a következő:
start -> office -> word
tanár “nem-nem, asztal jobb klikk -> új -> szöveges dokumentum”
srác jobb klikk a start menü gombjára
“nem-nem, felette”
srác jobb klikk az asztal egyik ikonjára
“nem-nem, mellé”
ok, végre megtalálta
csinálni kellett egy vbs scriptet
van benne egy olyan h msgbox
nah srác beírja ‘msg box’
és nem megy
“biztos szar a gép” és újraindította