Archívum
január 16
Már azt se tudom, melyik végén fogjam meg... (OOP "tervezés")
Megint elővettem kedvenc gumicsontom, a router logok feldolgozásának problémáját.
Nem tudok vele még elindulni sem igazán. Procedurális megközelítéssel nem lenne gond, kismillió if-then-else, néhány regex, oszt jónapot.
De OOP használattal...
Amit kitaláltam, az eleve rossznak tűnik, mert nem tudom úgy megfogalmazni a dolgokat, hogy objektumok, amelyeknek vannak tulajdonságai és viselkedése, mert jelen esetben max. a log sorait tudom elképzelni efféle objektumként, amiből lehet n+1 féle, közös ősből származtatott osztályt gyártani, épp csak felesleges.
És a feldolgozás nem része a sorra épülő osztály viselkedésének, azt valahogy nem tudom összepárosítani vele.
Ha a másik végéről indulok neki, hogy
ggyártok egy osztálynak nevezett elemet, ami példányosításkor kap
1. egy iterátort (megnyitott input file leginkább), aminek az elemein végig lépked
2. meg egy feldolgozó objektumot, aminek a metódusait hívogatja minden egyes elemnél (1. válogat -> kell-e foglalkozni az iterátorból jövő elemmel, ha igen, akkor mondjon rá egy típust, 2. parse-olás - az előzőtől kapott érték alapján feldarabol, 3. filter - a feldarabolt sort a típusa alapján ellenőrzi, hogy kell-e egyáltalán, 4. kigyűjti belőle az adatokat és a típushoz tartozó tárolóba pakolja, 5. loop, 6. vége az iterátor adatainak, visszaadja a begyűjtött adatokat)
Akkor meg ott akadok el, hogy ezt tisztán procedurális megközelítésnek tartom, szinte kizárólag a szintaxis kedvéért használok OO eszközöket.
Ráadásul az adatok tárolásának a helye sem tűnik jól meghatározhatónak, mert ebben a felállásban kb.
Nem tudok vele még elindulni sem igazán. Procedurális megközelítéssel nem lenne gond, kismillió if-then-else, néhány regex, oszt jónapot.
De OOP használattal...
Amit kitaláltam, az eleve rossznak tűnik, mert nem tudom úgy megfogalmazni a dolgokat, hogy objektumok, amelyeknek vannak tulajdonságai és viselkedése, mert jelen esetben max. a log sorait tudom elképzelni efféle objektumként, amiből lehet n+1 féle, közös ősből származtatott osztályt gyártani, épp csak felesleges.
És a feldolgozás nem része a sorra épülő osztály viselkedésének, azt valahogy nem tudom összepárosítani vele.
Ha a másik végéről indulok neki, hogy
ggyártok egy osztálynak nevezett elemet, ami példányosításkor kap
1. egy iterátort (megnyitott input file leginkább), aminek az elemein végig lépked
2. meg egy feldolgozó objektumot, aminek a metódusait hívogatja minden egyes elemnél (1. válogat -> kell-e foglalkozni az iterátorból jövő elemmel, ha igen, akkor mondjon rá egy típust, 2. parse-olás - az előzőtől kapott érték alapján feldarabol, 3. filter - a feldarabolt sort a típusa alapján ellenőrzi, hogy kell-e egyáltalán, 4. kigyűjti belőle az adatokat és a típushoz tartozó tárolóba pakolja, 5. loop, 6. vége az iterátor adatainak, visszaadja a begyűjtött adatokat)
Akkor meg ott akadok el, hogy ezt tisztán procedurális megközelítésnek tartom, szinte kizárólag a szintaxis kedvéért használok OO eszközöket.
Ráadásul az adatok tárolásának a helye sem tűnik jól meghatározhatónak, mert ebben a felállásban kb.
január 12
Jelszó
A következő két karakterlánc közül:
a.) "TQmfz:aVLzMJ6.*{"
b.) "Az nem lehet, hogy annyi szív hiába onta vért!"
melyik a jobb jelszó? Miért?
(Az elsőt a Strong Random Password Generator segítségével állítottam elő.)
■ a.) "TQmfz:aVLzMJ6.*{"
b.) "Az nem lehet, hogy annyi szív hiába onta vért!"
melyik a jobb jelszó? Miért?
(Az elsőt a Strong Random Password Generator segítségével állítottam elő.)
január 11
"Programozási tételek"
Sziasztok!
Új vagyok itt :) Most OOP-t szeretnék tanulni otthon TypeScripten részben JavaScripten. (Pár hét múlva HTML-el és CSS-el folytatni. :) )
A konkrét kérdésem ez: Magyarul rengeteg infót találok un. "Programozási tételek"-ről.
Sehogy se bírok rájönni ennek az angol megfelelőjére. Az egyes típusalgoritmusokat (Pl. szétválogatás, maximum, unio) megtalálom ugyan a Google-ben más nyelveken, de ezek sehol sincsenek mint egy csoport leírva, vagy tagelve.
Más módokon se találtam a gugliban.
Nem létezik, hogy ez egy magyar találmány lenne!
Van ennek ("Programozási tételek") valami angol neve?
Előre is köszi a választ :)
■ Új vagyok itt :) Most OOP-t szeretnék tanulni otthon TypeScripten részben JavaScripten. (Pár hét múlva HTML-el és CSS-el folytatni. :) )
A konkrét kérdésem ez: Magyarul rengeteg infót találok un. "Programozási tételek"-ről.
Sehogy se bírok rájönni ennek az angol megfelelőjére. Az egyes típusalgoritmusokat (Pl. szétválogatás, maximum, unio) megtalálom ugyan a Google-ben más nyelveken, de ezek sehol sincsenek mint egy csoport leírva, vagy tagelve.
Más módokon se találtam a gugliban.
Nem létezik, hogy ez egy magyar találmány lenne!
Van ennek ("Programozási tételek") valami angol neve?
Előre is köszi a választ :)
Van-e PHP és milyen verzió?
Kívülről hogy lehet megállapítani egy web szerverről, hogy van-e rajta PHP és ha van, akkor milyen verzió?
Kívülről alatt azt értem, hogy böngészőből/curl/wget/egyéb segédeszköz segítségével.
Van erre valami bevett módszer?
Az a baj, hogy nem tudom eltalálni a megfelelő keresőkifejezést, így a nyomorult google csupa olyan találattal szórakoztat, hogy hozzak létre egy .php file-t...
■ Kívülről alatt azt értem, hogy böngészőből/curl/wget/egyéb segédeszköz segítségével.
Van erre valami bevett módszer?
Az a baj, hogy nem tudom eltalálni a megfelelő keresőkifejezést, így a nyomorult google csupa olyan találattal szórakoztat, hogy hozzak létre egy .php file-t...
január 9
Docker "kedvesség" - process limits
Ez de fura... a szerveremen nem tudom honnan, be van állítva egy default process limit a usereknek:
ulimit -u
30784
Én úgy tudtam, hogy ez unlimited by default, de most olvasgatva úgy tűnik, az unlimited egy Debian specialitás, egyébként a kernel beállít egy alapértéket. (ettől kezdve nem értem, hogy működhet a fork bomb nevű poén)
No mindegy, a minap az androidos telefonomat sikerült kiakasztani egy ilyen fork bomb segítségével, hogy kis híján a szervizben kötött ki :D
Most docker konténerben akartam kipróbálni, de biztos-ami-biztos inkább megnéztem a konténer limitjeit. És itt jött a meglepetés: a host minden processzének be van állítva limit, kivéve a docker konténert. A konténerből simán megfektethetem a hostot is egy ilyen fork bomb segítségével...
Nem gáz ez egy kicsit?
Update: O.K., lehet limitet adni a konténernek, de ha külön nem gondoskodom róla, akkor bizony limitálatlanul rohangál...
■ ulimit -u
30784
Én úgy tudtam, hogy ez unlimited by default, de most olvasgatva úgy tűnik, az unlimited egy Debian specialitás, egyébként a kernel beállít egy alapértéket. (ettől kezdve nem értem, hogy működhet a fork bomb nevű poén)
No mindegy, a minap az androidos telefonomat sikerült kiakasztani egy ilyen fork bomb segítségével, hogy kis híján a szervizben kötött ki :D
Most docker konténerben akartam kipróbálni, de biztos-ami-biztos inkább megnéztem a konténer limitjeit. És itt jött a meglepetés: a host minden processzének be van állítva limit, kivéve a docker konténert. A konténerből simán megfektethetem a hostot is egy ilyen fork bomb segítségével...
Nem gáz ez egy kicsit?
Update: O.K., lehet limitet adni a konténernek, de ha külön nem gondoskodom róla, akkor bizony limitálatlanul rohangál...
január 8
github privát repo (blogposzt, jobb híján a fórumon)
Azt írja az Arstechnica, hogy egy mai bejelentés szerint, mostantól az ingyenes accountok tulajdonosai is használhatnak privát repot.
Érdekes... tudom, rosszindulatú vagyok, de már megint az okot, a hátsó szándékot keresem a dolog mögött.
Vajon csak annyi lenne, hogy sokan kerestek más helyet a kódjaiknak, miután a Microsoft felvásárolta a githubot és próbálják megtartani azokat, akik maradtak?
Vagy (ennek még utánanézek a felhasználási feltételek közt) arra számítanak, hogy így értékesebb kódokat is megkapnak? Bár ezt nem hiszem, aki komoly szoftvert fejleszt és nem hajlandó nyíltforrásúvá tenni, az nem fog ingyenes tárolót használni.
Szóval kíváncsi vagyok. :)
■ Érdekes... tudom, rosszindulatú vagyok, de már megint az okot, a hátsó szándékot keresem a dolog mögött.
Vajon csak annyi lenne, hogy sokan kerestek más helyet a kódjaiknak, miután a Microsoft felvásárolta a githubot és próbálják megtartani azokat, akik maradtak?
Vagy (ennek még utánanézek a felhasználási feltételek közt) arra számítanak, hogy így értékesebb kódokat is megkapnak? Bár ezt nem hiszem, aki komoly szoftvert fejleszt és nem hajlandó nyíltforrásúvá tenni, az nem fog ingyenes tárolót használni.
Szóval kíváncsi vagyok. :)
január 7
Feldolgozási sorrend?
Ha van egy szövegfájlom (linux kernel logja), amiben sokféle, javarészt ismert szerkezetű sor található, akkor milyen sorrendet szokás követni a feldolgozásban?
Előbb parse-olás és utána a szűrés a már szétszedett, kielemzett sor mezőinek értéke alapján?
Vagy előbb a szűrés regex alapján és attól függően, hogy milyen mintára illeszkedett a sor, mehet a trancsírozás és a mezők értékét csak a különböző feldolgozásokhoz, statisztikákhoz használom fel?
Vagy ennek egy változata, hogy dupla szűrést csinálok: egyet a parse-olás előtt, hogy eldöntsem, milyen sort is kaptam, majd egy másikat ami már a mezők alapján szűr?
■ Előbb parse-olás és utána a szűrés a már szétszedett, kielemzett sor mezőinek értéke alapján?
Vagy előbb a szűrés regex alapján és attól függően, hogy milyen mintára illeszkedett a sor, mehet a trancsírozás és a mezők értékét csak a különböző feldolgozásokhoz, statisztikákhoz használom fel?
Vagy ennek egy változata, hogy dupla szűrést csinálok: egyet a parse-olás előtt, hogy eldöntsem, milyen sort is kaptam, majd egy másikat ami már a mezők alapján szűr?
január 6
el nem végzett munka
Üdv!
Van két táblám és egy működő lekérdezésem ez az:A count(m.mego) megoldottam értéke az elvégzett feladatok száma. Ha nulla az az el nem végzett feladat.
Ez kilistázza egy embernek az elvégzett és el nem végzett feladatait. Abban kérnék segítséget hogy ez ne csak egy emberét listázza ki hanem csoportosan mindenkiét a felhasználónévvel együtt. Itt már van harmadik tábla.
Próbálkoztam így:meg így:
Ezek sajnos nem listázzák ki az el nem végzett feladatokat. Tudna valaki segíteni?
Köszi.
■ Van két táblám és egy működő lekérdezésem ez az:
select f.feladat, f.db, count(m.mego) megoldottam from feladatok f left join matek m on f.feladat=m.felnev and m.id='$id' and m.mego='Jó' and DATE(m.ido)=CURDATE() where f.db<>0 group by f.feladat,f.dbEz kilistázza egy embernek az elvégzett és el nem végzett feladatait. Abban kérnék segítséget hogy ez ne csak egy emberét listázza ki hanem csoportosan mindenkiét a felhasználónévvel együtt. Itt már van harmadik tábla.
Próbálkoztam így:
select u.user, f.feladat, f.db, count(m.mego) megoldottam from feladatok f left join matek m
on f.feladat=m.felnev and m.mego='Jó' and DATE(m.ido)=CURDATE() left join users u
on u.id2=m.id where f.db<>0 group by u.user, f.feladat,f.dbselect
u.user,
f.feladat,
f.db,
count(m.mego) megoldottam
from users u
join matek m on u.id2=m.id
right join feladatok f on f.feladat=m.felnev
and m.mego='Jó'
and DATE(m.ido)=CURDATE()-2
where f.db<>0
and u.user <> 'Mindenki'
group by
u.user,
u.feladat,
f.db");Köszi.
január 4
docker vs lxc
Láttam, hogy többen használjátok a dockert. Van köztetek olyan, aki az lxc-t is ismeri? Ezek milyen viszonyban vannak egymással?
Annyi "tiszta", hogy a docker az kb. arról szól, hogy egy app/konténer és a konténer addig él, míg az applikáció. Az lxc konténerben több applikáció is futhat, valahol egy chroot és egy virtuális gép közt van.
Viszont amennyire emlékszem, az lxc konténerek update-elése belülről is mehet talán (bemegyek a konténerbe és mondjuk debian esetén egy apt-get upgrade-del letudom a dolgot), míg a docker esetében, ha jól értem, a karbantartóra kell várnom, hogy az image-et update-elje, csak utána tudom lerántani magamhoz a javított verziót.
Ez tényleg így van?
Ha így van, ez jó dolog éles környezetben, hogy esetleg több napos késéssel jön meg egy biztonsági javítás?
----
Mondjuk felmerültek bennem olyan apróságok is, hogy ha van egy webes applikációm, amihez tartozik web szerver, RDBMS, reverse proxy valami middleware (mondjuk egy komolyabb MQ szoftver), az kapásból négy-öt konténer, amiket már nem annyira egyszerű kézben tartani külön management szoftver nélkül.
(asszem, janoszen írta valahol, hogy ha kettőnél több konténer, akkor már kell valami management cucc föléjük)
■ Annyi "tiszta", hogy a docker az kb. arról szól, hogy egy app/konténer és a konténer addig él, míg az applikáció. Az lxc konténerben több applikáció is futhat, valahol egy chroot és egy virtuális gép közt van.
Viszont amennyire emlékszem, az lxc konténerek update-elése belülről is mehet talán (bemegyek a konténerbe és mondjuk debian esetén egy apt-get upgrade-del letudom a dolgot), míg a docker esetében, ha jól értem, a karbantartóra kell várnom, hogy az image-et update-elje, csak utána tudom lerántani magamhoz a javított verziót.
Ez tényleg így van?
Ha így van, ez jó dolog éles környezetben, hogy esetleg több napos késéssel jön meg egy biztonsági javítás?
----
Mondjuk felmerültek bennem olyan apróságok is, hogy ha van egy webes applikációm, amihez tartozik web szerver, RDBMS, reverse proxy valami middleware (mondjuk egy komolyabb MQ szoftver), az kapásból négy-öt konténer, amiket már nem annyira egyszerű kézben tartani külön management szoftver nélkül.
(asszem, janoszen írta valahol, hogy ha kettőnél több konténer, akkor már kell valami management cucc föléjük)
január 4
Rekurzió
Lenne egy egyszerű feladat: nested tömbben megszámolni egy adott elem gyakoriságát, rekurzív módon.
Nekem van egy megoldásom, de nem igazán tetszik és érdekelne más megoldás.Ami nem tetszik:
- van benne egy 'for'
- biztos van szebb megoldas :)
■ Nekem van egy megoldásom, de nem igazán tetszik és érdekelne más megoldás.
function countItems(arr, item) {
var result = 0;
(function count(arr, item){
for (var i=0; i<arr.length; i++){
if (Array.isArray(arr[i])){
count(arr[i], item);
} else if (arr[i] === item) {
result++;
}
}
})(arr, item);
return result;
}
var arr = [
["banana", "strawberry", "apple", ["banana", "strawberry", "apple", ["apple"]], "apple"],
"apple",
["banana", "strawberry", "apple", ["banana", "strawberry", "apple"]]
];
console.log(countItems(arr, "apple"));- van benne egy 'for'
- biztos van szebb megoldas :)



