log69 blogja

Ruby / Multiple vulnerabilities in RubyGems

 ( log69 | 2017. augusztus 31., csütörtök - 22:36 )

Ruby / MRI és Rubinius sebesség

 ( log69 | 2017. augusztus 19., szombat - 13:00 )

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

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

 ( log69 | 2017. augusztus 17., csütörtök - 9:48 )

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

 ( log69 | 2017. július 30., vasárnap - 9:58 )

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

Ruby / split regex-szel

 ( log69 | 2017. július 30., vasárnap - 2:15 )

Ezért szeretem a Ruby-t, mert szinte mindent lehet, de egyszerűen és intuitív módon.

Szükségem volt arra, hogy szét daraboljak egy szöveget úgy, hogy külön a szöveg részek és külön az egybefüggő számok (digitek). Találomra betettem a split metódusba egy regex illesztést sima érték helyett és működött:

text = "hello33world222"

text.split(/\d+/)
=> ["hello", "world"]

text.scan(/\d+/)
=> ["33", "222"]

Fake video source to share screen (Ubuntu 16)

 ( log69 | 2017. július 12., szerda - 8:53 )

sudo apt install libav-tools v4l2loopback-dkms

sudo modprobe v4l2loopback

avconv -f x11grab -r 15 -s 1920x1080 -i $DISPLAY -f v4l2 /dev/video1

Web speech API

 ( log69 | 2017. július 3., hétfő - 8:42 )

Hangfelismeréssel játszok az utolsó pár videómban, nyugodtan használjátok a kódjaimat. Tudnátok segíteni népszerűsíteni megosztással?

Egy oktató videó sorozatot csinálok (angolul mert több nyelvre nincs időm és a globális piacnak szánom), ha akartok kapcsolódni pl segíteni magyar oktató videókat csinálni a platformon vagy akár üzletileg más szempontból, nyugodtan keressetek.

Célom adott funkcionalitások megvalósítása nagyon egyszerű és rövid kóddal:

https://www.youtube.com/watch?v=o8NUoUszR38

Egyenlet

 ( log69 | 2017. június 11., vasárnap - 0:19 )

Mi az alábbi egyenlet levezetése?

x^x = 3

frontfoo #2 / web app wizard / open source

 ( log69 | 2017. május 27., szombat - 20:24 )

Előző bejegyzésemben bemutattam nektek a fejlesztői platformom egy részét, amely segítségével nulláról írtam egy egyszerű és hatékony megoldást egy gyakorlati problémára az adatkezelés területén 1 óra alatt, vágatlanul, magyarázatokkal.

Viszont ez hosszú.

Az alábbi videómban kísérletet teszek arra, hogy drasztikusan leosszam ezt az időt.

frontfoo

 ( log69 | 2017. május 20., szombat - 19:37 )

További fejlesztéseimet szeretném megmutatni nektek. Szívesen veszek véleményt.

Gyors fejlesztői platform adat backend-del webes frontend fejlesztéshez:

Létrehozok "élőben" egy valós megoldást, ez a 10 perces bemutató szöveg után kezdődik és kb. 1 órás, mely egy lassú hangvételű programozás folyamatos magyarázattal a jobb követhetőségért. Alap webes ismeret szükséges. Nem rövid, viszont végig visz egy nulláról felépített teljes megoldáson, melynél az egyszerűség a cél egy működő alapmegoldást biztosítva.

videó itt | példa kód itt

Adatkezelőm plugin rendszere HTML és JavaScript-tel megvalósítva

 ( log69 | 2017. április 2., vasárnap - 11:28 )

Előző blog bejegyzésemhez még idetűzöm a plugin megoldásom leírását, melyhez szívesen veszek véleményt és kritikát.


Az adatkezelőmben lehet adatot tárolni, keresni és elemezni egyszerű módon céges funkciókkal megtámogatva. Viszont jogosan felmerülhet az igény arra, hogy minél kevesebb tanulás mellett azonnal és gyorsan be tudjunk illeszteni egy saját programozott megoldást, amely fogja az adatokat és önkényesen manipulálja.

Egyszerűsítés a végső megoldás mindig

 ( log69 | 2017. március 31., péntek - 20:21 )

Írtam egy szösszenetett egy apró kutatási irányomról face-en (szükséges a platform), ide is beteszem, kíváncsi vagyok kit mennyire érdekel az életében és munkájában az egyszerűsítés lehetősége.


Mit lehet tenni, ha a cég növekedésével hatványozottan nő a bonyolultsági szint és így a szükséges idő és energia?

Hatványozottan növelni a hatékonyságot úgy, hogy ne kelljen folyamatos befektetés. Ezzel folyamatosan növekvő megtakarított időt kapunk folyamatosan csökkenő ráfordítandó energiával.

Ezt hogy lehet megtenni?

CentOS / Apache / httpd dead but subsys locked

 ( log69 | 2017. március 3., péntek - 9:01 )

https://klimchuk.wordpress.com/2015/09/08/httpd-dead-but-subsys-locked/

Centos 6.x 64 bit, Apache 2.2.15

Probléma:
service httpd status
httpd dead but subsys locked

Megoldás:
for sem in `ipcs -s | awk '{print $2}'`; do ipcrm -s $sem; done

service httpd restart

sleep 1

pgrep -lf httpd

Ruby 2.4.0

 ( log69 | 2016. december 25., vasárnap - 10:38 )

https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/

Unify Fixnum and Bignum into Integer

Ruby had two visible Integer classes: Fixnum and Bignum. Ruby 2.4 unifies them into Integer. All C extensions which touch the Fixnum or Bignum class need to be fixed.


RUBY_VERSION => "2.3.3"

5.class => Fixnum

(55**55).class => Bignum


RUBY_VERSION => "2.4.0"

5.class => Integer

(55**55).class => Integer

linux / ps / all consumed resources by processes in realtime

 ( log69 | 2016. december 16., péntek - 21:49 )

alias s=' watch -n 5 "ps -e -o pid,uname,pmem,pcpu,cmd --sort=-pcpu,-pmem | head -8; echo; ps -e -o pid,uname,pcpu,pmem,cmd --sort=-pmem,-pcpu | head -8; echo; df -h -T -l -x tmpfs -x devtmpfs; echo; free -m" '

s

OCS Inventory / CentOS 6

 ( log69 | 2016. november 17., csütörtök - 13:21 )

Infó:
https://en.wikipedia.org/wiki/OCS_Inventory
http://www.ocsinventory-ng.org

Kliens oldalra az agent-jüket kell feltenni.

Szerver oldalra telepítés:

Host: SL 6.x 64 bit
DB: MySQL 5.7 (gyártó oldaláról csomagból telepítve)

1) Frissebb Perl telepítése forrásból (v5.18.2, csomagban csak 5.10 van):

http://www.cpan.org/src/README.html

cd /usr/local/src
wget http://www.cpan.org/src/5.0/perl-5.18.2.tar.gz
tar xf perl*
cd perl*
./Configure -des
make install

FF 50

 ( log69 | 2016. november 16., szerda - 0:08 )

https://www.mozilla.org/en-US/firefox/50.0/releasenotes/

Egy rakás komoly felhasználást gátló hiba van, és semmit nem javítanak. Egyetlen árva nem security fix figyel a listában. Most nem sorolom amiket jelentettem meg ismerek is.

Ruby / tömb szétválogatás

 ( log69 | 2016. szeptember 24., szombat - 15:38 )

Ha több paramétert adunk vissza egy tömbben, akkor az alábbi módon is szétválogathatjuk:

res = [1,2]

Így is lehet:

a, b = res

Nem kell ez:

a = res[0]
b = res[1]

Ruby / webes processzek közti osztott memória

 ( log69 | 2016. szeptember 21., szerda - 16:48 )

Request-ek közti gyors permanens adat elérés a cél pár apróságra (eldobható statisztikák), amit nem akarok db-ben tárolni, mert ágyúval verébre lenne.

Redis vagy saját sima text fájlba írkálós megoldás? A tesztek alapján lehetne az utóbbi :)


Setup:

sudo apt install redis-server
sudo gem install redis

Saját megoldás:

http://paste.ubuntu.com/23211865/


Teszt:

irb

require "benchmark"
require "redis"

r = Redis.new

# 100k test (redis 4.5x gyorsabb)

r.set "test", (1..100_000).map{rand}

FF 49

 ( log69 | 2016. szeptember 20., kedd - 15:36 )

http://www.ghacks.net/2016/09/20/firefox-49-release/

Kíváncsi leszek a "Simplify page" funckióra (nyomtatóhoz tinta kímélő kimenete egy weboldalnak).

Még egy: "Tab appearance and behavior changes. Scroll position and zoom level are remembered for open tabs for instance, and Firefox won't play sound from multiple tabs at once anymore."

Backup DVD-re parancssorból

 ( log69 | 2016. szeptember 14., szerda - 15:00 )

Problémám volt brasero-val adat dvd készítésekor. Meg amúgy is jobban kedvelem a parancssort, mert be tudom automatizálni.

- az M kapcsoló folytatja, de első íráshoz Z kapcsolóval való írás kell
- M kapcsoló hibát dob ha nem talál kezdetleges szekciót, ezért a ||
- $1 a kiírandó mappa elérési útja
- a mappa tartalma íródik csak ki, a mappa nem
- többször meghívható folytatólagos íráshoz
- usb-s dvd íróval ellenőriztem többszöri írással
- gyors, nincs szórakozás klikkelgetésekkel, kiírja és kész

Fejlesztések, egyéb gondolatok

 ( log69 | 2016. szeptember 13., kedd - 23:08 )

Pár szó az adat kezelő megoldásomról, rövid bemutatása, gondolatok a miértekről és a hogyanokról, további gondolatok praktikai fejlesztésekről és szoftver környezettől független kérdésekről.

https://youtu.be/xTNttLgOMjY

Firefox / performance check

 ( log69 | 2016. augusztus 24., szerda - 18:32 )

Firefox melyik kiegészítője vagy weboldala viszi el a legtöbb erőforrást? Nyisd meg az alábbit. Egészen egyszerű és jól áttekinthető felületet ad.

about:performance

További beállítások:

about:about

Ruby / egyszerű labirintus generálás

 ( log69 | 2016. augusztus 17., szerda - 21:02 )

Még egy régi C64-es könyvemben volt Basic-ben egy egyszerű algoritmus labirintus generálásra, melynek természetesen nem garantált az átjárhatósága két oldalról. Az egyszerűség a szépsége.

asch Basic interpreterjéről jutott eszembe, gondoltam bedobom ide. Ruby-ban így is lehet például:

2000.times{ print (rand < 0.5) ? "\\" : "/" }