log69 blogja

NN / teszt / jövőkép

Fél évvel ezelőtt elkezdtem tanulmányozni digitális idegrendszereket (neural network). Írtam egy labda játékot 1-2 hónapja JS-ben tesztelni, hogy mennyire tudom tanítani. 1-2 perc tanítással elég jó probléma megoldásra képes kiterjesztve a megtanultat újakra, melyekkel még nem találkozott. Itt egy videó róla:

ball

Ezzel az volt a célom, hogy minél kezdetlegesebb összeállításból vizsgáljam, hogy milyen hatékonyságot kapok. Megdöbbentően jót. Ugye a probléma nem egyértelmű, ugyanis a labdával csak fix távolságot tudok ugrani, míg a közeledő utak és hézagok véletlen hosszúságúak. Ezért nem mindegy hogy hány lépéssel előre gondolkodsz ahhoz hogy tudd, hol kell elkezdeni az ugrást ahhoz, hogy a távolabbinál is jó legyen még.

Coffeescript / natural sort

Ezen bejegyzés alapján megírtam Ruby mintájára a CS verziót is a természetes sorba rendezésre. Trükkös volt kicsit.

Bemenet egy tömb, melynek elemeit úgy rendezi sorba, hogy a sorba rendezendő szöveget további elemeire bontja szöveget szövegnek, számot pedig számnak értelmezve, figyelmen kívül hagyva a white space-t. Ennek eredményeként az alábbi igaz lesz:

" hello 3 " < " hello 11 "

Cél hogy ne számítson hogy hol mennyi white space van, illetve hogy a számokat számként hasonlítsa össze, és így a 11 nem kerül a 3 elé.

Ruby -> CS

Ha már Ruby-t nem tudom a webre húzni kliens oldalon (Opal sajnos nagyon lassú és nem jó design), akkor sincs gond. Coffeescript-tel közel állok hozzá produktivitásban.

Viszont hiányzik több tömb metódus ami Ruby-ban alap. Elkezdtem megírogatni CS-hez, egyelőre ennyi kell (optimalizálva az alábbi hozzászólások alapján):

http://paste.ubuntu.com/25886797/

dhash #1

Régóta fontolgatom hogy írok egy faék, strukturálatlan tárolást lehetővé tevő adat kezelő cuccot hash tag-ekkel. Coffeescript-ben írom. Működés:

  • ha szöveg mellé hash tag-eket is írsz, akkor tárol
  • ha vagy szöveget írsz, vagy pedig hash tag-et, akkor keres
  • a kérés elküldhető enter-rel vagy pedig a szövegdobozra klikkeléssel (nem akarok plusz gombot kitenni vagy pedig azzal trükközni hogy css-el odamontirozok egy gombot a szövegdobozon belülre)
  • a hash tag-ekre klikkeléssel több tag-et is beledobhatsz a szövegdobozba ha többre akarsz szűrni, majd klikkelj utána rá az elküldéshez ha nem írsz be mást
  • kis- nagybetű és ékezet nem számít, illetve szó töredékre is lehet keresni (max kényelem)
  • számot is megadhatsz, ekkor számolni fog vele és keresésnél mutatni fog egy max értéket, egy szummát és egy grafikont is hogy lásd a tendenciát (ez még folyamatban)
  • fájl feltöltés lehetőségét is tervezem
  • törlés még nincs benne, ezt még tervezem hogy hogyan valósítsam meg - vagy adatonként odarakok egy X-et a sor végére, vagy pedig egyetlen gombot teszek ki ami mindig mindent töröl, még nem volt időm átgondolni
  • mobilra is optimalizálom

Xcalib + hwe

Ubuntu 16 / hwe kernel (4.10) + hwe xorg

Képernyő negatívhoz ezt a parancsot használom:

xcalib -i -a

Ez viszont törik az új Xorg-ra váltásnál Intel VGA-val. Megoldás itt:

https://askubuntu.com/a/945565

-> /etc/X11/xorg.conf.d/20-intel.conf


Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
EndSection

FF / addon / manual to auto review

https://discourse.mozilla.org/t/concern-about-how-add-on-auto-review-ca…

Röviden: Mozilláék automatikus kód elemzésre váltottak a manuálisról és már meg is jelentek bizonyos kiegészítőknél kártékony kódok (bányászást végeznek és hasonló). Ráadásul a megbízható kiegészítők sem azok az automatikus update rendszer miatt, ugyanis bármikor jöhet kártékony kód a szerzőtől ha úgy dönt.

Vagyis soha nem tudjuk meg ha volt olyan időablak ahol lefutott kártékony kód.

Egyelőre nincs stratégia a megelőzésre. Utólagos reagálás most is működik, de nem elégséges.

Részemről például ezért vágytam régóta saját kiegészítőre JS blokkoláshoz. Én akarom a kontrollt. Ezen kívül egyetlen kiegészítőm van, Ajnász hupper addonja. Ebben egyelőre megbízunk ;)

Firefox Send

Ha valakinek hasznos:

Privát, titkosított fájlmegosztás: Küldjön át fájlokat biztonságos, privát és titkosított hivatkozáson keresztül, amely automatikusan elévül, hogy ne maradjanak a dolgai örökké online.

https://send.firefox.com

Elvileg több mint 1 GB is lehet.

Firefox WebExtension / YesScript2 / Block scripts on specific sites #1

Előzmények itt.

Akartam egy kiegészítőt írni, ami blokkol scripteket bizonyos oldalakon. Ez meg van, tervezem még tovább fejleszteni beállító felülettel, ahol be lehet dobni oldalakat. Elvileg Chrome kompatibilis lehet a kód, de ezt még tesztelni kell.

Zram / Ubuntu 16 x64

8 GB RAM van a gépemben, viszont nincs swap partícióm, swap file-t meg nem támogat BtrFS:

https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_fil…

Egy játékot akartam indítani, amely elment swap mellett, viszont a rendszer befagy / belassul swap nélkül. Értem hogy kicsit több mem kéne, vagy pedig hely kilapozni pár dolgot.

Nem akarok swap-ot, ezért kutattam. Rátaláltam Zram-ra. Nagyon jó. Tömöríti a memóriát, de csak akkor, ha swap-ba menne. Tehát közel nulla erőforrást foglal.

sudo apt install zram-config

+ egy reboot és kész.

Ruby / sorbarendezés #2

Előzmény itt. Lényeg:

toMpEr ötletét felhasználva összeraktunk egy algo-t arra az igényemre, hogy úgy tudjak rendezni tömbben lévő szöveget, hogy a számot numerikusan vegye figyelembe.

Ezt most tovább fejlesztettem azzal, hogy betettem egy ".strip"-et azért, hogy figyelmen kívül tudjam hagyni a szóközök és tabok helyét és mennyiségét. Szerintem elég trükkös és remek algo hogy még egy blog bejegyzést megérjen:

Ruby / MRI és Rubinius sebesség

Teszteltem a kommentek és üres sorok nélküli 17 ezer soros eléggé komplex kódomat az alábbi környezetben, mely egyébként 60-80 SQL hívást eszközöl klikkenként. Nyilván sokszori futtatással, warm-up után. Egyetlen hívás 40 és 80 ms között fut le MRI-vel (átlag 60 ms).

OS: Ubuntu 16.04 LTS, x64 / Apache + FCGI

MRI, v2.4.1, forrásból fordítva
Rubinius, v 3.84 (MRI 2.3.1), forrásból fordítva

Eredmény: Rubinius 4x lassabb átlagban

(MRI az ún. eredeti C-ben írt interpreter, Rubinius pedig egy C++-ban és Ruby-ban fejlesztett alternatíva)

Web app költség követéshez

Ha valakinek hasznos mobilra, nyugodtan használjátok ingyenesen vagy írjátok át a kódot. Fontos számomra a rendkívüli egyszerűség és fapadosság, ne legyen rengeteg funkció és logika. Célom a platform népszerűsítése, de szeretnék ingyenesen elérhető értékeket biztosítani a közösségnek.

Screencast:
https://www.youtube.com/watch?v=qYIgVXL2qkM
https://www.youtube.com/watch?v=knpJn8g3shA

Ruby / sorbarendezés alfanumerikusan és numerikusan is

Felhasználó által megadott neveket akartam sorba rendezni úgy név szerint, hogy figyelembe vegye a számokat is (az adatok MySQL db-ből jönnek). Például legyenek a címek:


world
hello 15
hello 2

Csak alfanumerikusan rendezve így néz ki:


hello 15
hello 2
world

Én pedig ezt akartam:


hello 2
hello 15
world

Úgy oldottam meg, hogy átkonvertálok a sorba rendezéshez minden szöveget úgy, hogy minden egyes szám elé beteszek annyi nullát, hogy egy fix hosszot adjon ki a számjegyekkel együtt, majd sorba rendezem őket (ezt megelőzően a db nekem már név szerint sorba hozta).