Szkriptek: Python, Perl, Bash, ...

Ruby / eval / wrong number of arguments / require

Sziasztok,

Mikor Ruby kódot futtatok az eval() funkcióval (ez ugye szöveget értelmez Ruby kódként), akkor az eval() meghívása előtt defniálnom kell bizonyos require hívásokat az értelmezett kódból, de nem mindegyiket.

Azt most hagyjuk hogy miért akarom megetetni a kódot az eval()-lal.

Futtassuk az alábbi szöveget eval-lal:

eval "require 'resolv'; require 'json'; puts 5**5"

Habár ez nem ad hibát, és nem is tudom reprodukálni a saját kódomnál lévő problémát, általában némelyik require-t be kell tenni az eval futtatása elé. De nem mindegyiket.

(Az eredeti kódot nem adhatom ki, illetve hatalmas a kódbázis és nincs idő lenyomozni hogy milyen kombinációban nem adna hibát az eval.)

Ha viszont így futtatom, akkor jó:

require 'resolv'
eval "require 'resolv'; require 'json'; puts 5**5"

Körülbelül 15 require-t használok az eredeti kódban, és pont hogy beépítettekre dob hibát, nem pedig külső gem-ként telepítettre.

Vajon miért lehet ez? Miért kell bizonyos require-t (2-t a 15-ből) definiálnom az eval előtt és miért pont azt?

A hibaüzenet az eval() futtatásakor ez:
http://paste.ubuntu.com/23223835/

Egy másik kérdésem, amiből a fenti következik. Erre valakinek ötlet?

https://www.ruby-forum.com/topic/6879045

Nincs valami pipe megoldás, amivel a string-et úgy tudnám kiszolgálni mintha fájl lenne?

Köszi.

CSV2Excel in Python

sziasztok

csvbol kellene kinyernem adatokat es egy leteo .xlsx file-t update-elni
az adatok megvannak, szepen tudok olvasni az xlsx-bol illetve a csv-bol is, de valamiert nem megy az iras/frissites funkcio

esetleg otlet valakinek?

import xlwt
import xlrd
from xlutils.copy import copy

rb = xlrd.open_workbook('ICPCopy.xlsx')

wb = copy(rb)

w_sheet = wb.get_sheet(0)

w_sheet.write(0,0,'modification')

wb.save('ICPCopy.xlsx')

Error:


Traceback (most recent call last):

File "C:\workspace\test\src\writer.py", line 16, in
wb.save('ICPCopy.xlsx')

File "C:...\AppData\Local\Programs\Python\Python35\lib\site-packages\xlwt\Workbook.py", line 696, in save
doc.save(filename_or_stream, self.get_biff_data())

File "C:\...\AppData\Local\Programs\Python\Python35\lib\site-packages\xlwt\CompoundDoc.py", line 262, in save
f = open(file_name_or_filelike_obj, 'w+b')

PermissionError: [Errno 13] Permission denied: 'ICPCopy.xlsx

python-video-converter

Sziasztok!

Valaki esetleg dolgozott már itt a python-video-converter nevű modullal?

Ezt a script-et faragom most éppen csak kicsit elakadtam.
http://pastebin.com/XyKGftJA

PyCharm-ot használok IDE-nek(laptopn), de a script egy másik gépen futna(headless). Ezt esetleg tudjátok, hogyan lehetne remote futtatni?

1. Szeretném, ha a fájllistába nem csak .mkv vagy .mp4-et hanem mind a kettőt belevenné.
2. Szeretném, hogy ha a videokodec H264, akkor a codec csak 'copy' lenne, illetve, hogyha az audio codec 'dts', akkor ac3-ra konvertálná, amúgy csak 'copy'. Ha a fájl alapból H264 és !nem DTS, akkor nem is kéne igazából konvertálni.

Nagyon köszi előre is, ha esetleg tudtok segíteni.

[Megoldva][Bash] Szöveg szavai tömb elemekbe

Sziasztok!!

Hogy tudnám ezt megcsinálni.
Példa:
TEXT="A hó fehérke még alszik ...."
a szavak (azaz a szóközökkel elválasztott karakterek) bekerüljenek egyesével egy tömbe

TOMB[1]="A"
TOMB[2]="hó"
TOMB[3]="fehérke"
TOMB[4]="még"
...
TOMB[N]="vége"

[Megoldás]
IFS=' ' read -ra TOMB <<< "$TEXT"
for i in "${TOMB[@]}"
do
echo $i
done

Könyvtár figyelése PHP - MEGOLDVA

Sziasztok!

Hirtelen nem jut eszembe egyszerű megoldás a következő problémára:
Adott egy könyvtár, amibe folyamatosan kerülnek be fájlok és ideális esetben pár mp múlva el is tűnnek, mert egy feldolgozó elkapja őket. De előfordulhat, hogy nem sikerül feldolgozni, ilyenkor ott marad. Na erre kellene nekem riasztót írnom.
Az egész egy HP-Unixon van, először bash irányba indultam, de a Unix-os find-ban nincs mmin. Ezért arra gondoltam, hogy a bash script csak egy könyvtár listát csinál és azt elküldi FTP-n egy Linuxra. Ott pedig egy percenként futó PHP-vel ellenőrizhetném, hogy van-e benne mai fájl. Ha van, berakom egy táblába, és a 'hanyszor' oszlopot 1-re állítom. Ha a következő futáskor is benne van, növelem a 'hanyszor' értékét, majd ha az eléri az ötöt, mehet a riasztás.
Eddig ez talán működne is, de mi van, ha a következő listában olyan fájl van, ami eddig nem volt a táblában? Teszem azt, első körben bekerült a táblába a,b és c fájl. A második körben jön egy b,e fájl lista. Ha a táblában lévő adatokat nézem végig egy ciklussal, abból ugyan ki fog derülni, hogy a b-t növelni kell, de nem derül ki, hogy az e új fájl.
Biztos pofon egyszerű a megoldás, csak késő van már nekem hozzá :)

Köszönöm!

R nyelv GUI

R nyelvet RStudio környezetben használok mérések értékelésére. Most az a gondom, hogy kellene egy olyan program, amivel a technikusok a kérdőívek adatait és mérési eredményeket beviszik egy adatbázisba (MySQL). A kérdésem az, hogy az R nyelv Tk felületével érdemes-e nekiállni vagy valami általános nyelven, amit ismerek (php) álljak neki. Hogyha más nyelven írom, akkor persze az eredményközlés macerás lesz.
Köszönöm a segítséget.

perl memória szivárgás kikerülése

Szervusztok!

Egy kiragadott részlettel is (lentebb) sikerült előállítanom azt, hogy egy adathalmot olvasva, majd kicsit gereblyézve, folyamatosan nő a memória igénye a perl-nek. Próbálom a lehetőségeket számításba venni, de az utolsó találatnál megállt bennem minden.

- adatbázis
- undef @var;
- @var = ();
- perldoc -q "program shrinks"

Segítsetek kikerülni ebből, amit köszönök előre is!
Üdv,
vfero


#!/usr/bin/perl -w

use utf8;
use strict;
use locale;
use Switch;
use English;
use warnings;
use Env qw(@HOME $USER);
use Data::Dump::Streamer;
use List::MoreUtils qw(uniq);
use Term::ReadKey;
use List::Util qw(min max);
#---------------------------------------------
sub checkLimit($$$){
my ($p_a,$p_limit,$p_res) = @_;

foreach (@{$p_a}){
if($_ > ${$p_limit}){ push(@{$p_res}, $_) };
}
}
#---------------------------------------------
# MAIN
my @a = ();

# fill
for(my $c=0 ; $c < 100000 ; $c++){

$a[$c] = rand();
if(($c % 10000)==0) {print $c . "\n"}
}

my $limit;
my @res;

printf("Data filled %s, check the memory. ex.: memstat -w -p %s\n",$#a,$PID); ReadKey(0);

# check
foreach $limit(map { 0.01 * $_ } 1..100 ){

checkLimit(\@a,\$limit,\@res);

printf("limit %0.3f count %d\n",$limit, $#res );
@res=();
}
undef @res;

printf("Pls check again the memory usage. ex.: memstat -w -p %s\n",$PID); ReadKey(0);
exit ;
__END__

first

17012k: PID 1098 (/usr/bin/perl)
4352k( 0k): /usr/lib/locale/locale-archive 1098
16k( 8k): /usr/bin/perl 1098
3620k( 1536k): /usr/lib/libperl.so.5.18.2 1098
2068k( 12k): /usr/lib/perl/5.18.2/auto/Fcntl/Fcntl.so 1098
2064k( 12k): /usr/lib/perl/5.18.2/auto/Hash/Util/Util.so 1098
2068k( 16k): /usr/lib/perl/5.18.2/auto/IO/IO.so 1098
2380k( 328k): /usr/lib/perl/5.18.2/auto/re/re.so 1098
2076k( 20k): /usr/lib/perl/5.18.2/auto/List/Util/Util.so 1098
2084k( 32k): /usr/lib/perl/5.18.2/auto/Data/Dumper/Dumper.so 1098
2064k( 12k): /usr/lib/perl/5.18.2/auto/Filter/Util/Call/Call.so 1098
2060k( 8k): /usr/lib/perl/5.18.2/auto/Tie/Hash/NamedCapture/NamedCapture.so 1098
2120k( 60k): /usr/lib/perl/5.18.2/auto/B/B.so 1098
2080k( 28k): /usr/lib/perl5/auto/Term/ReadKey/ReadKey.so 1098
2064k( 12k): /usr/lib/perl5/auto/B/Utils/Utils.so 1098
2080k( 28k): /usr/lib/perl5/auto/Data/Dump/Streamer/Streamer.so 1098
2068k( 16k): /usr/lib/perl5/auto/PadWalker/PadWalker.so 1098
2128k( 72k): /usr/lib/perl5/auto/List/MoreUtils/MoreUtils.so 1098
3096k( 1044k): /lib/x86_64-linux-gnu/libm-2.19.so 1098
2064k( 12k): /lib/x86_64-linux-gnu/libdl-2.19.so 1098
2092k( 36k): /lib/x86_64-linux-gnu/libcrypt-2.19.so 1098
2152k( 100k): /lib/x86_64-linux-gnu/libpthread-2.19.so 1098
148k( 140k): /lib/x86_64-linux-gnu/ld-2.19.so 1098
3840k( 1768k): /lib/x86_64-linux-gnu/libc-2.19.so 1098
--------
67796k ( 5300k)

second

23804k: PID 1098 (/usr/bin/perl)
4352k( 0k): /usr/lib/locale/locale-archive 1098
16k( 8k): /usr/bin/perl 1098
3620k( 1536k): /usr/lib/libperl.so.5.18.2 1098
2068k( 12k): /usr/lib/perl/5.18.2/auto/Fcntl/Fcntl.so 1098
2064k( 12k): /usr/lib/perl/5.18.2/auto/Hash/Util/Util.so 1098
2068k( 16k): /usr/lib/perl/5.18.2/auto/IO/IO.so 1098
2380k( 328k): /usr/lib/perl/5.18.2/auto/re/re.so 1098
2076k( 20k): /usr/lib/perl/5.18.2/auto/List/Util/Util.so 1098
2084k( 32k): /usr/lib/perl/5.18.2/auto/Data/Dumper/Dumper.so 1098
2064k( 12k): /usr/lib/perl/5.18.2/auto/Filter/Util/Call/Call.so 1098
2060k( 8k): /usr/lib/perl/5.18.2/auto/Tie/Hash/NamedCapture/NamedCapture.so 1098
2120k( 60k): /usr/lib/perl/5.18.2/auto/B/B.so 1098
2080k( 28k): /usr/lib/perl5/auto/Term/ReadKey/ReadKey.so 1098
2064k( 12k): /usr/lib/perl5/auto/B/Utils/Utils.so 1098
2080k( 28k): /usr/lib/perl5/auto/Data/Dump/Streamer/Streamer.so 1098
2068k( 16k): /usr/lib/perl5/auto/PadWalker/PadWalker.so 1098
2128k( 72k): /usr/lib/perl5/auto/List/MoreUtils/MoreUtils.so 1098
3096k( 1044k): /lib/x86_64-linux-gnu/libm-2.19.so 1098
2064k( 12k): /lib/x86_64-linux-gnu/libdl-2.19.so 1098
2092k( 36k): /lib/x86_64-linux-gnu/libcrypt-2.19.so 1098
2152k( 100k): /lib/x86_64-linux-gnu/libpthread-2.19.so 1098
148k( 140k): /lib/x86_64-linux-gnu/ld-2.19.so 1098
3840k( 1768k): /lib/x86_64-linux-gnu/libc-2.19.so 1098
--------
74588k ( 5300k)

logstash xml split array

Sziasztok,

A kovetkezo xml filtert kene alkalmassa tennem, hogy a tobb elemes tomboket kulon eventkent kuldje tovabb a logstash:
A jelenlegi filter a 0 indexeket egy eventkent elkuldi, a cel, hogy a [@] eventeket is elkuldje mint uj event. Itt egy reszlet az XML-bol is.
*Szerkesztve
atraktam a filter code-ot es az xml peldat pastie-re mert, a hup szerkeszto nem kompatibilis velem.
http://pastie.org/10866373
Ha esetleg van otleted, azt oszd meg velem.
Koszonom,