понедельник, 12 января 2009 г.

ROX и .PSD Thumbnails

Сильно раздражало неправильное создание\отображение тумбнэйлов .psd файлов в линукс вообще и в rox-filer в частности. Ковырял, думал, нашел решение.

vim /usr/lib/rox/MagickThumbnail/magickthumb.py

Ищем код:
if
cmd='convert -flatten -mattecolor "%s" -frame %sx%s+%s+%s -size %sx%s "%s" -resize %sx%s +profile "*" "%s"' % (bcolor, frame_width, frame_width, outer_bevel, inner_bevel, rsize, rsize, inname, rsize, rsize, frfname)


видоизменяем:
if
cmd='convert -flatten -mattecolor "%s[0]" -frame %sx%s+%s+%s -size %sx%s "%s0" -resize %sx%s +profile "*" "%s"' % (bcolor, frame_width, frame_width, outer_bevel, inner_bevel, rsize, rsize, inname, rsize, rsize, frfname)


всего 3 символа, и MagickThumbnailer начнет конвертить только первый слой (для .psd это критично)
еще следует проверить числовое значение Perfomance - Max Size

ЗЫ: имена файлов должны быть на англицком и без спецсимволов, их magickthumbnailer не понимает

PSS: достаточно поставить magickthumbnailer и назначить его только для PSD

понедельник, 20 октября 2008 г.

Opera 9.6 и Flash Player 10

На самом деле поставить сей плагин очень просто. По старинке качаем tar.gz с офф сайта и кидаем libflashplayer.so в папку с плагинами (у меня /usr/lib/nsbrowser/plugins). Не работает, а почему?

Читаем new dependencies needed for Flash Player 10:
cURL
Mozilla's Network Security Services (NSS)
Further, glibc >= 2.4

NSS без мозиллы мало у кого стоит Х) Ставим этот пакет (около 4.5 метров с зависимостями) и наслаждаемсо

вторник, 7 октября 2008 г.

grep Installed Packages

emerge -s SOMETHING >> text.file

Поиск в репозитории по слову web выдаёт дохрена пакетов. Этот вывод перенаправляеццо в файл, затем grep'аюццо только установленные пакеты:

Способ#1[этот пример смотрить в HTML - кусок кода зохаван]:
grep -A4 -B2 "Latest version installed: \[ Not Installed \]" file.txt >> stuff_i_dont_want.txt &&
diff file.txt stuff_i_dont_want.txt | sed 's/^

Способ#2:
sed -n '/^\*/{N ; h; n ; /\[ Not Installed \]/b ; :a ; H; n ; /^$/!ba ; H; x; p}' file.txt

Способ#3:
grep -v -P "^\*\s.*$\n^.*$\n^.*\[ Not Installed \]$\n^.*$\n^.*$\n^.*$\n" test.txt

Вывод всех НЕ установленных пакетов:
cat txt-file | grep 'Not Installed' -A4 -B2
* media-plugins/gst-plugins-theora
Latest version available: 0.10.14
Latest version installed: [ Not Installed ]
Size of files: 1,587 kB
Homepage: http://gstreamer.freedesktop.org/
Description: plugin for gstreamer
License: GPL-2

* media-plugins/gst-plugins-ximagesrc [ Masked ]
Latest version available: 0.10.7
Latest version installed: [ Not Installed ]
Size of files: 1,705 kB
Homepage: http://gstreamer.freedesktop.org/
Description: plugin for gstreamer
License: GPL-2 ]

пятница, 3 октября 2008 г.

Tree Size for Linux

du -h --max-depth=1
man du

du -m --max-depth=1 | sort -gr

четверг, 4 сентября 2008 г.

Транслитерация

Как-то появилась необходимость перевести достаточно большое количество имен файлов с русского в транслит, а также несколько текстовых файлов. В связи с этим был написан следующий скрипт:
translit.sh
Код:
#!/bin/bash

#Author: Desidis
#Created at: Thu Sep 4 17:37:26 EEST 2008

OPT=$1
file_name=$2
char=`enca -i "$file_name"`
command="`basename \"$0\"`"
#Functions
display_usage() {
cat << EOF
Usage: $command [--all_in_dir] находясь в нужной папке
$command [--text_in_file] имя файла
$command [--single_file] имя файла
Use "$command --help" для более полной помощи.

EOF
}
text_in_file() {
f_f=`echo "$file_name" | awk -F. '{print NF-1}'`
l_f=`echo "$file_name" | awk -F. '{print NF}'`
begin_file_name=`echo "$file_name" | cut -d. -f 1-$f_f`
end_file_name=`echo "$file_name" | cut -d. -f $l_f`
f_f_n=$begin_file_name.translit.$end_file_name
DIRECTORY=/tmp/translit
if [ -d $DIRECTORY ]
then :
else
mkdir $DIRECTORY > /dev/null 2>&1
if [ $? != 0 ];
then
echo "Немогу создать временную директорию" >&2
exit 1
else :
fi
fi
cat "$file_name" | iconv -f "$char" -t koi8-r | catdoc -d us-ascii -s koi8-r > $DIRECTORY/tmp
mv $DIRECTORY/tmp "$f_f_n"
rm -r $DIRECTORY
echo "Транслитерация '"$file_name"' завершена"
}
all_in_dir () {
for i in *
do
name=`echo "$i" | iconv -f utf8 -t koi8-r | catdoc -d us-ascii -s koi8-r`
mv "$i" "$name"
echo "Переименовано "$i" в "$name""
done
exit 0
}
single_file () {
name=`echo "$file_name" | iconv -f utf8 -t koi8-r | catdoc -d us-ascii -s koi8-r`
mv "$file_name" "$name"
echo "Переименовано "$file_name" в "$name""
}
display_help () {
cat << EOF

Options:
--all_in_dir Транслитерирует имена всех файлов в текущем каталоге
--single_file Транслитерирует имя указанного файла
--text_in_file Производит транслитерацию кирилицы в указанном файле
EOF
}
case $OPT in
--all_in_dir) all_in_dir
;;
--text_in_file) text_in_file
;;
--single_file) single_file
;;
--help) display_help
;;
*) display_usage
;;
esac

вторник, 12 августа 2008 г.

mount -t cifs

Монтирование виндоз-шары с утф8
sudo mount -t cifs //[IP]/[FOLDER] /media -o username=user,uid=1000,iocharset=utf8,dir_mode=0770,file_mode=0660

четверг, 7 августа 2008 г.

proftpd

USE="-alc" emerge proftpd
#нах*й alc!!!!


cp /bin/false /bin/ftp
echo "/bin/ftp" >> /etc/shells
#обойти pam


useradd -g ftp username # добавить анонимуса в группу фтп
chown -R someuser:somegroup home/ftp #передать владение папкой c рекурсией
vim /etc/ftpusers #убить анонимуса
mount --bind olddir newdir #жесткая ссылка на локальные папки


#Редактируя посмотри нормальный конфиг
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anonymous access.
DefaultAddress 192.168.10.9
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
RequireValidShell off
#AuthPAM off
#AuthPAMConfig ftp
UseReverseDNS off
IdentLookups off
AllowOverride off
WtmpLog off
# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit the maximum number of processes per service
# (such as xinetd).
MaxInstances 30

# Set the user and group under which the server will run.
User nobody
Group nogroup

# Normally, we want files to be overwriteable.

AllowOverwrite on


# A basic anonymous configuration, with no upload directories.

User anonymous
Group ftp

# We want clients to be able to login with "anonymous" as well as "ftp".
# UserAlias anonymous ftpd
# UserAlias nobody proftpd
# UserAlias anonymous nobody
# Limit the maximum number of anonymous logins.
MaxClients 10

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message

# Limit WRITE everywhere in the anonymous chroot.

DenyAll


AllowOverwrite on

AllowAll