foofighter blogja

WSAPI > Wolfram API > PHP v0.1

Okosabb vagy mint egy kilencedikes?

1. Egy ember az A HÉV-megállóban várakozik. Elunja a várakozást, és elindul a következő B megálló felé. Mikor az A és B közötti út harmadát megtette, megpillantja az A megálló felé 30 km/h sebességgel közeledő szerelvényt. Ha teljes sebességgel futni kezd akár az A, akár a B megálló felé, éppen eléri a vonatot. Mekkora az a maximális sebesség, amellyel futni tud?
(A) 8 km/h
(B) 9 km/h
(C) 10 km/h
(D) 11 km/h
(E) 12 km/h

Arduino > Általános leírás ATmega328

Arduino Duemilanove ATmega328

A leírás http://arduino.cc/en/Main/ArduinoBoardDuemilanove fordítása

Áttekintés

The Arduino Duemilanove ("2009") mikrokontroller alaplap az ATmega368 chipjére épül. 14 digitális I/O tüskével (ebből 6 használható PWM kimenetként azaz a fázist lehet módosítani), 6 analóg kimenettel, 16 MHz-es kristály oszcillátorral, USB porttal, tápbemenettel, ICSP headerrel(nem fordítottam le, mert nem tudom mit jelent) és RESET gombbal rendelkezik. Mindene van, amire egy mikrokontrollernek szüksége lehet. Indításhoz vagy USB-n, vagy AC/DC adapterrel (elemtöltőm adapterével működött [12V/2.5A - GPPB13GSSA]) vagy elemmel adjunk neki áramot.

Arduino > Nyomógomb

Vajon hogy lehet megoldani azt, hogy gomb lenyomásra kapcsoljon be a LED?

Kell csinálni az Arduinohoz egy nyomógombot. Na itt fogy el a tudomány.

Ezen az oldalon szépen le van írva mit kell tenni hozzá. Az elfekvő PC-ből sikerült kibányászni egy bekapcsoló gombot, de se ellenállásom, se ilyen dugdosós panelem nincs hozzá..

Leírás

A nyomógomb két áramköri pontot összekötő alkatrész. A példánkban egy LED-et kapcsol be lenyomás hatására.

Arduino > Villantsunk LED-et

Honnan a túróból szerezzek LED-et? Kint -8°C, bent meg sehol egy LED.
Országomat egy LED-ért. De nicsak itt a sarokban van egy kiszolgált Celeron 300-as gép. Tuti van benne LED. És igen van.

Villantsunk LED-et!

Hardveres rész

De előtte még le kéne szedni róla a drótot. Először is a forrasztást tartó gumibugyit tépjük le róla. Ehhez egy körömvágó olló is alkalmas, ami akár az olló életébe is kerülhet. Ezután kombinált fogóval párszor megforgatom a forrasztást és már kezemben is a szépséges zöld LED. (Oldradio most biztos megdicsérne)

Arduino 2009 azaz Duemilanove

A kép méretaránytalan: 14 colos kijelzőn 11 centi a valóságban 7cm azaz a valódi méret a képen látott 7/11-ed része

Hogy munkára bírjuk ezt a kis mikrokontrollert kell szerezni egy USB-A és B kábelt. Ez, ha van nyomtatónk, nagy valószínűséggel rendelkezésre áll.

Windows 7-re elsőre nem volt egyszerű a telepítése. A nevét se tudom megjegyezni 'duemilanove', azért gyakorolom. :D

Hogy miért volt problematikus Win7-re rakni? Mert alapból installta magát és a letölthető IDE rögtön elhalt. Eszközkezelőben uninstalltam és újrabedugtam. Ekkor megjelent az eszközkezelőben az Arduino, aminél (kis idő után) meg tudtam csinálni a frissítést az ftdichip.com-ról letöltött meghajtóval. Miután ez sikerült, megjelent egy virtuális soros port persze jelezte hogy hibás. Más ötletem nem volt így automatikusan frissítettem a soros portot és hipp-hopp megjavult.

Tips&Tricks > Nyomtatási sor lelövése [Win + Lin]

Probléma:
Egy PDF formátumú könyvből ki szeretnénk nyomtatni pár oldalt, de figyelmetlenek voltunk és az összes oldalt kezdi el nyomtatni a nyomtató. Hogyan szakítsuk félbe a nyomtatást?

Rossz megoldás:
Kikapcsoljuk a nyomtatót. Operációsrendszerfüggetlen megoldás viszont ha bekerült a nyomtatási sorba akkor, ha újra bekapcsoljuk a nyomtatót folytatódni fog a nyomtatás.

1. Durva megoldás Windows-on:
Print Spooler újraindítása parancssorból


net stop spooler
net start spooler

Forrás: Windows nyomtatás

LUA > UnitTest > Lunit

Miért érdemes fejest ugrani a tesztelésbe?
Az igények változásával a kódok is változnak. Hogy ellenőrizni tudjuk tudja-e még teljesíteni a régi specifikációt teszteket írunk. Erre ad lehetőséget Michael Roth lunit csomagja.

Telepítés:


luarocks install lunit

Ahhoz hogy közelebbről is megismerkedjünk az egységteszteléssel, átugrunk egy pythonos oldalra. És megpróbálunk írni egy római szám konvertáló progit, ahol toRoman függvény 1 és 3999 közötti egészből csinál római számot.

LUA > GUI > wxLua I

wxLua - a wxWidgets-re épülő GUI keretrendszer, ha a parancssoros programunk túl sok paramétert kér be vagy interaktív felületre van szükségünk, akkor irány a wxLua.

Telepítés:

Luarocks híján kénytelenek vagyunk kézzel megejteni:


$ wget http://sourceforge.net/projects/wxlua/files/wxlua/2.8.10.0/wxLua-2.8.10.0-src.tar.gz/download
$ tar xzvf wxLua-2.8.10.0-src.tar.gz && cd wxLua-2.8.10.0
$ configure
$ make
$ sudo make install

Rögtön elkezdhetünk játszani a samples mappában lévő példaszkriptekkel.

LUA > Csomagkezelés > LuaRocks III

Luasvn telepítése ubuntu alá azaz a rockspec fájl módosítása

Először is takarítsunk:


rm -Rf /usr/local/lib/luarocks

$ # -- lássuk, hogy a dolog nem megy
$ luarocks install luasvn
$ # -- vonuljunk el egy sarokba, ahol nyugodtan megszerkeszthetjük a forrást
$ # --
$ mkdir luasvn && cd luasvn
$ # -- leszedjük a luasvn rockspec fájlját
$ # --
$ luarocks download luasvn
$ grep gz luasvn-0.4.0-1.rockspec 
  url = "http://luaforge.net/frs/download.php/4131/luasvn-0.4.0.tar.gz",
$ # -- leszedjük a tar.gz-t
$ wget http://luaforge.net/frs/download.php/4131/luasvn-0.4.0.tar.gz
$ tar xzvf luasvn-0.4.0.tar.gz
$ # --
$ # -- szerkesszük meg kedvenc editorunkkal a luasvn.c-t
$ # -- az include-ok után rakjuk bele:
$ # -- #define APR_LOCALE_CHARSET "UTF-8"
$ # --
$ scite luasvn-0.4.0/src/luasvn.c
$ # --
$ # -- a kibontott csomagot csomagoljuk vissza
$ # --
$ tar czvpf luasvn-0.4.0.ff.tar.gz luasvn-0.4.0
$ # --
$ # -- módosítsuk a rockspec fájlt, hogy a módosított forrást használja
$ # --  *   url = "file:///home/foofighter/luasvn/luasvn-0.4.0.ff.tar.gz",
$ # --  *   az apr-1 -et cseréljük le apr-1.0 -re
$ # --
$ luarocks install luasvn-0.4.0-1.rockspec
$ # -- ellenőrizzük, hogy minden jól ment
$ # --
$ lua -lsvn -e "for k,v in pairs(svn) do print(k,v) end"

LUA > Csomagkezelés > LuaRocks II

1. A feltelepített modulok elérése LUA szkriptből [SOLVED]

Rossz hír fogad:

The Lua libraries path

To use modules installed with LuaRocks, all you need to do is make sure they are found by Lua's module loading mechanism. The exact location depends on your installation flags, and how to set up the Lua modules path depends on your Lua interpreter and your application: you can use the LUA_PATH and LUA_CPATH environment variables, or update the value of the package.path and package.cpath variables from Lua code.

If you installed the Lua interpreter bundled with LuaRocks on Windows, or if you built both Lua and LuaRocks on Unix with the default paths, the default library path settings will be already appropriate.

LUA > Csomagkezelés > LuaRocks I

Ja mi is a LuaRocks? A LUA csomagkezelője akar lenni, ami még le is fordítja a C függőségeket. Tudja a verziókövetést és a függőségkezelést, de azért a Rubygems-től még messze van(igazából nem ismerem a rubygems-t, de egy összehasonlításban olvastam és hát így okosabbnak tűnök).

Kezdjük azzal, hogy a luarocks megtalálható a synaptic-ban, felrakása tulajdonképpen Windows-életérzés. Az első, amit szemet szúr, hogy a feltelepített verzió 1.0-s viszont a legújabb 2.0.1-es. Igaz hogy a két verzió között csak félév van, de akkoris. Ez visszaköszönő jelenség az ubuntu világában, hogy a csomagok nagy része erős késésben van az aktuális verzióhoz képest.

LUA > LPeg + OOP > Komplexet tudó Számológép

HEURÉKA! Működik.. :D

Most már csak azt kéne kitalálni, hogy mire érdemes használni a komplex számokat. :D

Függőségek:
* complex.lua => http://foofighter.pastebin.com/f169d44
* calc.lua => http://foofighter.pastebin.com/f255d8a7c
[code]
require "calc"

arg[1] = "(2r10i+2)*10+2r-58i"

if arg[1] == nil then

print ""
print "Lpeg calc v0.3 + Complex --- LUA calculator"
print "made by foofighter"
print "================================"
print "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html"
print ""
print "Usage: lua t_calc.lua "
print "Example: lua t_calc.lua (2r10i+2)*10+2r-58i"
print ""
print ""
os.exit(1)
end

ERROR > WID62 és a Xubuntu 9.10 [SOLVED]

A karmikus koalára frissítés után a Websphere Integration Developer 6.2 egyes gombjai kattintásra nem reagálnak, új felhasználói feladatot és üzleti folyamatot menüfából nem lehet létrehozni. A gond érinti az IBM Installation Managert, így egy update se segített.

Debuggolást segítő lépések:
(1) .eclipse törlése
(2) workspace törlése


/opt/IBM/WID62/eclipse -debug -consolelog -data workspace > eclipse.log 2>&1

Működő MEGOLDÁS: (update)

ERROR > VMware-Workstation-6.5.0-118166 és a Xubuntu-9.10

Kezdődött azzal, hogy a Vmware nem indult. Itt azt javasolják, hogy töröljük ki a modules könyvtárat és a vmware újragenerálja a modulokat.


rm -Rf /usr/lib/vmware/modules/binary

A kernel a 2.6.28-ról 2.6.31-re frissült.

A logban ennyi van:

Logging to /tmp/vmware-root/setup-9806.log
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmmon
ERROR: modinfo: could not find module vmnet
ERROR: modinfo: could not find module vmblock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module vsock
Using 2.6.x kernel build system.
In file included from /tmp/vmware-root/modules/vmmon-only/./include/vmware.h:25,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:48:
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_types.h:103:7: warning: "__FreeBSD__" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/./include/vmware.h:25,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:48:
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_types.h:160: error: conflicting types for ‘uintptr_t’
include/linux/types.h:41: note: previous declaration of ‘uintptr_t’ was here
In file included from /tmp/vmware-root/modules/vmmon-only/./include/x86.h:20,
                 from /tmp/vmware-root/modules/vmmon-only/./include/machine.h:24,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:15,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/x86apic.h:79:1: warning: "APIC_BASE_MSR" redefined
In file included from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/apic.h:11,
                 from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/smp.h:13,
                 from include/linux/smp.h:36,
                 from include/linux/topology.h:33,
                 from include/linux/gfp.h:7,
                 from include/linux/kmod.h:22,
                 from include/linux/module.h:13,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:12:
/usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/apicdef.h:133:1: warning: this is the location of the previous definition
In file included from /tmp/vmware-root/modules/vmmon-only/./include/x86.h:21,
                 from /tmp/vmware-root/modules/vmmon-only/./include/machine.h:24,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:15,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/x86desc.h:593:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/./include/machine.h:24,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:15,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/x86.h:830:1: warning: "PTE_PFN_MASK" redefined
In file included from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/paravirt.h:7,
                 from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/irqflags.h:61,
                 from include/linux/irqflags.h:57,
                 from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/system.h:11,
                 from /usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/processor.h:17,
                 from include/linux/prefetch.h:14,
                 from include/linux/list.h:6,
                 from include/linux/module.h:9,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:12:
/usr/src/linux-headers-2.6.31-16-generic/arch/x86/include/asm/pgtable_types.h:182:1: warning: this is the location of the previous definition
In file included from /tmp/vmware-root/modules/vmmon-only/./include/vcpuset.h:78,
                 from /tmp/vmware-root/modules/vmmon-only/./include/modulecall.h:22,
                 from /tmp/vmware-root/modules/vmmon-only/./common/vmx86.h:18,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:16,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:226:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:230:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:298:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:304:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:402:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:489:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:576:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:663:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:665:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:748:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:750:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:831:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:833:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:912:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:914:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:1073:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:1077:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:1308:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_atomic.h:1433:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:20,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/compat_wait.h:37:5: warning: "VMW_HAVE_EPOLL" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/compat_wait.h:43:5: warning: "VMW_HAVE_EPOLL" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/linux/driver.h:20,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:49:
/tmp/vmware-root/modules/vmmon-only/./include/compat_wait.h:60: error: conflicting types for ‘poll_initwait’
include/linux/poll.h:70: note: previous declaration of ‘poll_initwait’ was here
In file included from /tmp/vmware-root/modules/vmmon-only/./include/vm_basic_asm.h:32,
                 from /tmp/vmware-root/modules/vmmon-only/./include/vm_asm.h:25,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:52:
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_asm_x86.h:48:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_asm_x86.h:109:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_asm_x86.h:278:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_basic_asm_x86.h:385:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/./include/vm_asm.h:30,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:52:
/tmp/vmware-root/modules/vmmon-only/./include/vm_asm_x86.h:430:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_asm_x86.h:676:7: warning: "_MSC_VER" is not defined
/tmp/vmware-root/modules/vmmon-only/./include/vm_asm_x86.h:716:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-root/modules/vmmon-only/linux/vmhost.h:13,
                 from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:71:
/tmp/vmware-root/modules/vmmon-only/./include/compat_semaphore.h:5:27: error: asm/semaphore.h: No such file or directory
In file included from /tmp/vmware-root/modules/vmmon-only/linux/driver.c:80:
/tmp/vmware-root/modules/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘compat_exit’
/tmp/vmware-root/modules/vmmon-only/./include/compat_kernel.h:21: error: expected declaration specifiers or ‘...’ before ‘exit_code’
/tmp/vmware-root/modules/vmmon-only/./include/compat_kernel.h:21: warning: type defaults to ‘int’ in declaration of ‘_syscall1’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:144: error: unknown field ‘nopage’ specified in initializer
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:145: warning: initialization from incompatible pointer type
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:148: error: unknown field ‘nopage’ specified in initializer
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:149: warning: initialization from incompatible pointer type
/tmp/vmware-root/modules/vmmon-only/linux/driver.c: In function ‘LinuxDriver_Ioctl’:
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1656: error: ‘struct task_struct’ has no member named ‘euid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1656: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1657: error: ‘struct task_struct’ has no member named ‘fsuid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1657: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1658: error: ‘struct task_struct’ has no member named ‘egid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1658: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1659: error: ‘struct task_struct’ has no member named ‘fsgid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1659: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1661: error: ‘struct mm_struct’ has no member named ‘dumpable’
/tmp/vmware-root/modules/vmmon-only/linux/driver.c:1672: error: too many arguments to function ‘smp_call_function’
make[2]: *** [/tmp/vmware-root/modules/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmmon-only] Error 2
make: *** [vmmon.ko] Error 2

LUA > Math > Tökéletes parkolás

Ennek a vezetőnek azt hiszem nincs szüksége a képletre. És így lehet kijönni belőle.

Ez meg lehetne szériafelszereltség

Én a következőképp számolnám a minimális hosszt:
az autó mint téglalap átfogója + görbevetület, amíg egyenesbe rakja az autót

Viszont fogalmam sincs hogy kell kiszámolni a görbevetületet...

Pithagorasz segíts: r^2=(r-s)^2+w^2

LUA > OOP > Komplex számok

LUA noha nem OOP nyelv, de adott a lehetőség objektumok létrehozására. A dolog hasonlít a JavaScriptnél megismert prototájpolásra. Itt most a Komplex számokat próbáljuk egységbe zárni.

Ha visszaemlékszünk tanulmányainkra, akkor egy Komplex szám áll egy valós és egy képzetes részből.
Az összeadás így néz ki:
C = A + B --> c.r = a.r + b.r és c.r = a.i + b.i

Azt hiszem a kódot böngészve két dolog mindenképp magyarázatot követel:
(1) setmetatable metódus jelentősége
(2) self.__index mibenléte

(1) a metatable egy tábla, amiben ha létrehoztunk mondjuk az __add függvényt akkor két tábla összeadása hirtelen értelmet nyerhet, mert ezek a függvények hívódnak meg
(2) A .__index metametódus, azaz akkor hívódik meg, ha olyan tábla értéket akarunk meghívni, ami nem létezik.
Kód:

LUA > LPeg > Saját számológép

Azt hiszem mindenki álmodott saját számológépről. Ez a fajta igencsak érdekes, mert egy mintaillesztő nyelvet használ a célra. Mindehhez fel kell rakni az lpeg-t, ami az én csomagkezelőmben (synaptic) az "lpeg" keresőszó alapján megtalálható.

Mivel több vagy kevesebb az LPeg a reguláris kifejezéseknél? LPeg-ben a minták elsőosztályú változók, úgy mint a függvények.

Hogyan is kéne értelmezni a kódot?
(1) Létrehozzuk a lexikai elemeket: Whitespace karakterek, Számok, Nyitó/Csukó zárójel, Szorzás/Osztás operátor, Összeadás/Kivonás operátor.
(2) Írunk egy függvényt, ami megkapja a két operandust és a közrezárt operátort. Az operátor alapján dönti el milyen műveletet végez az operandusokon, az eredményt visszaadja
(3) A bonyolult rész. Nyelvtan definiálása. A tábla első bejegyzése az a nem-terminális elem, amit meghív az adott mintára. Ezután a kulcsok változók amiknek az értékei LPeg minták.

LUA > C függvény elérése > sleep(int sec);

Korábban írtam egy bugyuta lua szkriptet, ami a magyarországon található közlekedési lámpa állapotátmeneteit volt hivatott szimulálni. Nagyszerű érzés, hogy nem sikerül a vermet túlcsordítani, de jó lenne, ha kicsit lassabban pörögne. Ekkor jön a képbe a sleep függvény. Mivel nem az ANSI C szabvány része, így natívan nem is tartalmazza a lua.

Kód


#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

int l_sleep(lua_State *L){

	unsigned int sec = luaL_checknumber(L, 1);
	sleep(sec);
	return 1;
}

static const luaL_reg reg_sleep[] = {
	{"sleep", l_sleep},
	{NULL, NULL} // őrszemek
	}; 
int luaopen_sleep(lua_State *L){
	luaL_register(L, "io", reg_sleep);
	return 1;
}

Fordítás:


cc -o sleep.so -shared sleep.c

LUA > C függvény elérése > Könyvtárlistázás

Cél: Könyvár tartalmának listázása LUA-ban

Működés:

Nézzük a LUA értelmező szemszögéből. A require függvény megpróbálja behúzni a modult: a megadott paramétert , .dll vagy .lua kiterjesztéssel a LUA_PATH vagy LUA_CPATH környezeti változók elérési útjaiban. Ha talált egy dll-t, meghívja a luaopen_dir függvényt, ami a Lua állapotváltozót adja át, egy lua_State típusra mutató pointert L. Az L-be ezután regisztrálni kell a modul nevét. A luaL_register harmadik paraméterként olyan lual_Reg rekordokat tartalmazó tömböt vár, aminek utolsó eleme a {NULL,NULL} rekord. A luaL_reg rekord a függvény nevéből LUA-ban és a hivatkozott függvény C nevét tartalmazza. Végre elérkezünk az l_dir függvényhez, ami valóban csinál valamit.

LUA > Tail rekurzív függvény > Közlekedési lámpa

Ha valakinek elvonási tünetei lennének, mert mondjuk nem vezethet íme egy béjnácska villanyrendőr implementáció.
Ami elsőre feltűnik, hogy nincs veremtúlcsordulás. Na ez a tailrekurzió áldása.
Itt kipróbálható: http://www.lua.org/cgi-bin/demo

[code]
function feny(...)
print(...)
end

function CsakPiros()

feny("piros")
return PirosEsSarga()
end
function PirosEsSarga()

feny("piros","sarga")
return CsakZold()
end
function CsakZold()

feny("zold")
return CsakSarga()
end
function CsakSarga()

feny("sarga")
return CsakPiros()
end

LUA > Állapot nélküli iterátor > rt_cache-ből származó ip-k decimális pontossá alakítása

Feladat:

Az rt_cache-ből származó hex alakú ip-k decimálissá alakítása. Érdekesség, hogy az rt_cache-ben fordítva van az ip.

Teszt:


   Be: 0100007f
   Ki: 127.0.0.1

Megvalósítás:

Az általános for ciklust használom. Az általános for ciklus nagy előnye lua-ban, hogy egy generátor függvényt(olyan függvény, ami függvényt ad vissza) hív meg a ciklusban.

 Szintaxis: for k,v in func(akarmi) do 

Ahhoz hogy a k és v értékek elérhetőek legyenek a generált függvénynek vissza kell ezeket adnia. Példánkban az srev függvény visszad egy függvényt, a bemenetét és a ciklusváltozó kezdeti értékét. Tulajdonképpen az ált. for ciklus-nak ez az "interfésze": minden egyes ciklusban meghívja a kapott ciklusfüggvényt, a visszaadott bemenettel és a módosított ciklusváltozóval. A meghívott ciklusfüggvénynek is vannak megkötései: addig hívódik meg, amíg visszaad valamilyen értéket és ezek az értékek másolódnak a k és v változóba.
Lehet kicsit túlbonyolítottam. Még lehet átírom.

Rejtélyes kapcsolat

Nem tudom hova tenni ezt a kapcsolatot:


netstat -nt

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp    65232      0 <sajat-ip>:57152   80.249.173.219:9133     ESTABLISHED

Istennek nem tudom pidhez társítani a folyamatot.

Adatforgalom:

Folyamatos TCP Keep-Alive és TCP ZeroWindow csomagok

Megunt hostname tartós megváltoztatása

Mindenkinek eljön az életében az a pillanat, amikor lecseréli a hostnevét.


$ sysctl kernel.hostname
regi-hostnev
$ sudo sysctl kernel.hostname=uj-hostnev

Természetesen ez nem tartós megoldás.

Ez tuti: (legalábbis xubuntun){upd}


sh-4.0# echo uj-hostnev >/etc/hostname

Google: permanent hostname change