http://www.slideshare.net/k0smik0/hackit05-slide-umlhandler
A short introduction about UML UserModeLinux and UML-Handler tool and related issues.
September 3, 2010
September 2, 2010
k-shaper mini how-to
http://www.slideshare.net/k0smik0/hackit05-trafficshapingandkshaperintroduction
A short introduction about linux and iptables architecture as well as traffic shaping engines in this environment, and relational issues.
A solution is provided by k-shaper, and these slides show a mini how-to.
This is part of my academic training, and it was introduced at HackMeeting in Naples, in 2005.
K-Shaper code is available at: https://github.com/k0smik0/k-shaper
A short introduction about linux and iptables architecture as well as traffic shaping engines in this environment, and relational issues.
A solution is provided by k-shaper, and these slides show a mini how-to.
This is part of my academic training, and it was introduced at HackMeeting in Naples, in 2005.
K-Shaper code is available at: https://github.com/k0smik0/k-shaper
Labels:
iptables
,
linux
,
perl
,
qos
,
traffic shaping
August 2, 2010
phonegap & springme for android
an interesting introduction to phonegap & springme, for android development
June 28, 2010
June 19, 2010
May 27, 2010
screen session crypted password
sometimes i use irssi in screen, but in a box not mine...
so, i would like no one, except me, can reattach my screen...
read: i don't want superuser-root can reattach my screen....
a few of search (and test), et voila:
in screen, type:
ctrl-a ENTER
:password ENTER
[screen asks for password 1th time] TYPE_MY_PASS
[screen asks for password 2th time] RETYPE_MY_PASS
then, if u reattach (only screen -r) it will ask for pass
finally, if u want all future screen sessions use THAT (crypted) password, u have to:
enjoy it ;D
so, i would like no one, except me, can reattach my screen...
read: i don't want superuser-root can reattach my screen....
a few of search (and test), et voila:
in screen, type:
ctrl-a ENTER
:password ENTER
[screen asks for password 1th time] TYPE_MY_PASS
[screen asks for password 2th time] RETYPE_MY_PASS
then, if u reattach (only screen -r) it will ask for pass
finally, if u want all future screen sessions use THAT (crypted) password, u have to:
- obtain pass: ctrl-a ]
copy crypted string (i.e. "WWKHW6FMEu6TAjk234j")
- save a line into .screenrc as below:
echo password WWKHW6FMEu6TAjk234j >> .screenrc
enjoy it ;D
May 22, 2010
check auth.log
sometimes i'm paranoid and i want check who try to log in my server...
but auth.log is a very large and blinding file... so:
obviously a script is a smarter solution ;D
links: authCheck
but auth.log is a very large and blinding file... so:
cat /var/log/auth.log | egrep -e "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" | cut -d":" -f4 | uniq | sed 's/[a-zA-Z\-]//g' | awk '{print $1}' | uniq
obviously a script is a smarter solution ;D
links: authCheck
May 19, 2010
we love to compile on the edge ;D
ok, in this post i'll spend two words about a my debian builder-cc enhanced version.
you know builder-cc is a gcc/g++ wrapper, which utilize some bash env variable to optimize/tune/etc compilation, using -mtune -ftracer and so on...
in builder-cc (and builder-c++) only 2 variables are used, that is
DEBIAN_BUILDARCH (to specify architecture as pentium3,prescott,k7,k8,core2 and so on...) and DEBIAN_BUILDGCCVER (just the gcc version: 4.2, 4.3, ...)
however, i love extreme situations, and these 2 variables are not enough for me.. i want use also -ftrace -fomit-frame-pointer -mSOMEsse etc...
so, just another variable: EXTREME_COMPILING (what wonderful name, isn't ;D ?)
with "EXTREME_COMPILING=yes" we could have:
-pipe -O2 -msse4 -ftracer -mcx16 -msahf -fomit-frame-pointer -momit-leaf-frame-pointer -other-options-we-like
and NOW, 'cause most people have multicore processore (core2duo,quad,etc), it would be smart use make "-j" option; -j = jobs -> it specifies the number of simultaneously jobs (i.e. compiling). So i use -j9 'cause i have a i7 (ht-quad = 8cores) [or you can using -j`echo $((`getconf _NPROCESSORS_ONLN`+1))` ]
For this last i wrote "builder-make", which use SMP_MAKE=9 <- -j9
To be more simpler, i used same prefix in variable names:
BUILDER_ARCH
BUILDER_GCCVER
BUILDER_EXTREME_COMPILING
BUILDER_SMP_MAKE
ACHTUNG!
in order to use builder-cc, builder-c++ and (last) builder-make, we must:
1) use this links structure:
2) declare above variables with "declare -x" or "export" before launch gcc/g++/make, or declare in /etc/bash.bashrc or ~/.bashrc or... or.
ok, here the scripts: links:
builder-cc
builder-c++
builder-make
or code below:
you know builder-cc is a gcc/g++ wrapper, which utilize some bash env variable to optimize/tune/etc compilation, using -mtune -ftracer and so on...
in builder-cc (and builder-c++) only 2 variables are used, that is
DEBIAN_BUILDARCH (to specify architecture as pentium3,prescott,k7,k8,core2 and so on...) and DEBIAN_BUILDGCCVER (just the gcc version: 4.2, 4.3, ...)
however, i love extreme situations, and these 2 variables are not enough for me.. i want use also -ftrace -fomit-frame-pointer -mSOMEsse etc...
so, just another variable: EXTREME_COMPILING (what wonderful name, isn't ;D ?)
with "EXTREME_COMPILING=yes" we could have:
-pipe -O2 -msse4 -ftracer -mcx16 -msahf -fomit-frame-pointer -momit-leaf-frame-pointer -other-options-we-like
and NOW, 'cause most people have multicore processore (core2duo,quad,etc), it would be smart use make "-j" option; -j = jobs -> it specifies the number of simultaneously jobs (i.e. compiling). So i use -j9 'cause i have a i7 (ht-quad = 8cores) [or you can using -j`echo $((`getconf _NPROCESSORS_ONLN`+1))` ]
For this last i wrote "builder-make", which use SMP_MAKE=9 <- -j9
To be more simpler, i used same prefix in variable names:
BUILDER_ARCH
BUILDER_GCCVER
BUILDER_EXTREME_COMPILING
BUILDER_SMP_MAKE
ACHTUNG!
in order to use builder-cc, builder-c++ and (last) builder-make, we must:
1) use this links structure:
[k0smik0@widgy bin]$ pwd /usr/bin [k0smik0@widgy bin]$ ls -l g++* gcc* make* lrwxrwxrwx 1 root root 11 19 mag 17:51 g++ -> builder-c++* -rwxr-xr-x 1 root root 253104 26 feb 06:56 g++-4.4* lrwxrwxrwx 1 root root 10 19 mag 17:51 gcc -> builder-cc* -rwxr-xr-x 1 root root 239080 17 feb 11:53 gcc-4.3* -rwxr-xr-x 1 root root 251440 26 feb 06:57 gcc-4.4* lrwxrwxrwx 1 root root 7 7 mar 12:18 gcc.real -> gcc-4.4* lrwxrwxrwx 1 root root 7 7 mar 12:23 g++.real -> g++-4.4* lrwxrwxrwx 1 root root 12 7 mar 12:24 make -> builder-make* -rwxr-xr-x 1 root root 31070 16 feb 06:04 make-kpkg* -rwxr-xr-x 1 root root 166448 2 nov 2009 make.real*
2) declare above variables with "declare -x" or "export" before launch gcc/g++/make, or declare in /etc/bash.bashrc or ~/.bashrc or... or.
ok, here the scripts: links:
builder-cc
builder-c++
builder-make
or code below:
## builder-cc #!/usr/bin/perl if ($ENV{BUILDER_GCCVER} eq undef && $ENV{BUILDER_ARCH} eq undef && $ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("gcc.real", @ARGV); } elsif ($ENV{BUILDER_ARCH} eq undef && $ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("gcc-" . $ENV{BUILDER_GCCVER}); } elsif ($ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("gcc-" . $ENV{BUILDER_GCCVER}, "-mtune=$ENV{BUILDER_ARCH}", "-march=$ENV{BUILDER_ARCH}", @ARGV); } else { # these options are _VERY_ personal, and architecture dependant - you risk to fail compile - careful with that axe, eugene! @flags = ("-pipe","-O2","-msse4","-ftracer","-mcx16","-msahf","-fomit-frame-pointer","-momit-leaf-frame-pointer"); @target = ("gcc-" . $ENV{BUILDER_GCCVER}, "-mtune=$ENV{BUILDER_ARCH}", "-march=$ENV{BUILDER_ARCH}", @flags, @ARGV); } exec @target or die "Unable to exec @target[0]: $!\n";
## builder-c++ #!/usr/bin/perl if ($ENV{BUILDER_GCCVER} eq undef && $ENV{BUILDER_ARCH} eq undef && $ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("g++.real", @ARGV); } elsif ($ENV{BUILDER_ARCH} eq undef && $ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("g++-" . $ENV{BUILDER_GCCVER}); } elsif ($ENV{BUILDER_EXTREME_COMPILING} eq undef) { @target = ("g++-" . $ENV{BUILDER_GCCVER}, "-mtune=$ENV{BUILDER_ARCH}", "-march=$ENV{BUILDER_ARCH}", @ARGV); } else { # these options are _VERY_ personal, and architecture dependant - you risk to fail compile - careful with that axe, eugene! @flags = ("-pipe","-O2","-msse4","-ftracer","-mcx16","-msahf","-fomit-frame-pointer","-momit-leaf-frame-pointer"); @target = ("g++-" . $ENV{BUILDER_GCCVER}, "-mtune=$ENV{BUILDER_ARCH}", "-march=$ENV{BUILDER_ARCH}", @flags, @ARGV); } exec @target or die "Unable to exec @target[0]: $!\n";
## builder-make #!/usr/bin/perl if ($ENV{BUILDER_SMP_MAKE} eq undef) { @target = ("make.real", @ARGV); } else { @target = ("make.real", "-j$ENV{SMP_MAKE}", @ARGV); } exec @target or die "Unable to exec @target[0]: $!\n";
encode dv to theora
just a little script to encode from dv to theora (ogg vorbis video) - download: dv2theora
or
or
#!/bin/sh VIDEO_QUALITY=7 #0-10 ### do not modify below ### DV_FILE=$1 FILE=`file $DV_FILE 2>&1` echo $FILE | grep DV >/dev/null 2>&1 || (echo "Usage: dv2theora a_valid_dv_file.dv" && exit 1) ffmpeg2theora -f dv -v $VIDEO_QUALITY -o ${DV_FILE/%dv/ogv} $DV_FILE
an elegant script for multithreading bash execution
ok, we are in 2010 and we have (at least) a duo-core (i hope ;D)
recently, i buyed my first NEW computer (after ten years i've spended in building my computers, assembling used hardware... buyed on ebay or similar... now i'm too old to this.. and i buyed a _complete_ case ;D)
...a ht-quadcore i7 with 6gb ram ;D
and now i want all my sw/script/etc in multithreading.. damn, i have an optocore and i want use it!
so, it's a good chance for xargs.
in example, some days ago i encoded from dv to theora (11 files):
- sequential solution (11 iteration, sequentially):
then we have
but.. where is the problem?
oh, it's simple - xargs handles substitutions as find, with {} - bad, very bad.
so, there is just a better solution:
links: mdo ("mdo" means MultipleDOing) or copy and past from below:
just simpler
enjoy it ;D
recently, i buyed my first NEW computer (after ten years i've spended in building my computers, assembling used hardware... buyed on ebay or similar... now i'm too old to this.. and i buyed a _complete_ case ;D)
...a ht-quadcore i7 with 6gb ram ;D
and now i want all my sw/script/etc in multithreading.. damn, i have an optocore and i want use it!
so, it's a good chance for xargs.
in example, some days ago i encoded from dv to theora (11 files):
- sequential solution (11 iteration, sequentially):
for DV_FILE in `ls -1 *dv`; do ffmpeg2theora -f dv -o ${DV_FILE/%dv/ogv} $DV_FILE done- "parallel" solution (11 parallel processes - if u want your cpu(s) start to cry...):
for DV_FILE in `ls -1 *dv`; do # just added & to command, to send in background ffmpeg2theora -f dv -o ${DV_FILE/%dv/ogv} $DV_FILE & donenow, an inline solution with xargs: supposing we have a script "dv2theora" as:
#!/bin/sh DV_FILE=$1 ffmpeg2theora -f dv -o ${DV_FILE/%dv/ogv} $DV_FILEand dv files are named as 1.dv 2.dv etc...
then we have
echo `seq 1 11` | xargs -n1 -P3 ./dv2theoraxargs takes argument from pipe and gives them to command "dv2theora" - option P3 means "3 parallel processes"
but.. where is the problem?
oh, it's simple - xargs handles substitutions as find, with {} - bad, very bad.
so, there is just a better solution:
links: mdo ("mdo" means MultipleDOing) or copy and past from below:
#!/bin/sh # number of cpus/threads u want at same time SMP_PARAMETER=3 # do not modify below [ $# -lt 1 ] && echo "Usage: mdo " && exit 1 argv=("$@") COMMAND=${argv[0]} unset argv[0] echo ${argv[@]} | xargs -n1 -P$SMP_PARAMETER $COMMANDand now i can use as below:
mdo dv2theora `find . -type f -iname '*.dv'`just more intuitive
just simpler
enjoy it ;D
Subscribe to:
Posts
(
Atom
)