Интересный плагин FirefoxNotify для поклонников Ubuntu использующих Gnome. Плагин заменяет стандартное уведомление окончания закачки на схожее уведомление Ubuntu 9.04

Интересный плагин FirefoxNotify для поклонников Ubuntu использующих Gnome. Плагин заменяет стандартное уведомление окончания закачки на схожее уведомление Ubuntu 9.04

Сделал загрузку изображений на twitpic. Логин и пароль от twitter используются из настроек twit.el. Если эти настройки не установлены, спрашивает в минибуффере.
Для отправки post-запросов просмотрел несколько вариантов и проще всего для этой задачи оказалось дергать curl через shell-command.
Функция twitpic-upload-and-post загружает изображение и отправляет сообщение в twitter (с описанием, которое пользователь может ввести в минибуффер).
Функция twitpic-upload только загружает.
by Pavel Vyazovoi (vyazovoi@gmail.com) at 03.07.2009 19:50:59
Команда KDE on Windows с радостью сообщает о выпуске KDE 4.3 RC1 на этой платформе. Помимо этого, доступны свежие сборки таких приложений, как Konsole, Yakuake, Kile, KDevelop и Konversation, а также теперь на Windows выпущены некоторые приложения из состава KOffice 2.0.1.
Не забывайте, что это тестовые версии, и их стабильная работа не гарантируется. Впрочем, мы ведь говорим о KDE on Windows, какая тут стабильность? :) Не забудьте в KDE Installer выбрать версию “unstable latest”. К слову, некоторые из перечисленных приложений могут быть и не включены в готовящиеся в ближайшее время стабильные релизы.
Обратите внимание, что приложения из состава kdesdk и kdegraphics теперь также доступны в виде отдельных пакетов. Это значит, что вместо установки всего kdegraphics, вы можете выбрать, к примеру, только gwenview или kolourpaint.
# cat > /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
[Ctrl+D]
# cat > /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
[Ctrl+D]
# cat > /etc/sysconfig/network-scripts/ifcfg-bond0Загружаем модуль и перегружаем сеть:
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.10.70.0
IPADDR=10.10.70.77
NETMASK=255.255.255.0
USERCTL=NO
[Ctrl+D]
# cat >> /etc/modprobe.confПросмотр статуса:
alias bond0 bonding
options bond0 mode=1 miimon=100
[Ctrl+D]
# service network restart
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 2
Permanent HW addr: 00:1b:11:50:7a:01
Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:18:fe:8c:a1:96
Внимание! Это переводная статья, источник здесь. Мое мнение может не совпадать с мнением автора статьи, выкладываю для ознакомления. Продолжая читать этот перевод, вы соглашаетесь с тем, что все претензии следует предъявлять автору статьи – Steven J. Vaughan-Nichols.
Все люди, которые достаточно наивны, чтобы полагать, что ПО от Microsoft пригодно для использования в системах для решения ответственных задач, были шокированы, узнав, что в сентябре этого года (2008 – прим.перевод.), Лондонская фондовая биржа остановила работу на целый день из-за сбоя в системе TradElect, которая была разработана под Windows. Хотя биржа и пыталась скрыть, что проблема была именно в TradElect, они не смогли внятно объяснить причину такого сбоя. Все же, источники, работающие на бирже, сообщили мне, что причиной сбоя была именно TradElect.
После этого, Clara Furse, руководитель, который привнесла систему TradElect на биржу, уволилась без объяснения причин. Источники в Лондон Сити (то же, что и Уолл Стрит в Нью-Йорке) сообщили мне, что сбой системы TradElect был последней соломинкой для ее пребывании на этом посту. Новый CEO, Xavier Rolet, сообщил, что собирается немедленно прекратить использовать TradElect.
TradElect работает на Windows Server 2003, запущенной на серверах HP ProLiant. ПО TradElect, в свою очередь, это смесь из C# и .NET программ, написанных совместно Microsoft и Accenture, всемирной консалтинговой фирмой. ПО использует Microsoft SQL Server 2000. Это ПО было написано для обеспечения времени отклика меньше 10 мс и работы системы в реальном времени, для обеспечения биржевых торгов.
ПО TradElect никогда не достигало заданных показателей. Еще хуже было то, что конкуренты Лондонской Фондовой Биржи, в частности, Chi-X, с программной платформой для торгов MarketPrizm, могли обеспечить такой уровень. Многие гадали, на чем запущена MarketPrizm. Ответ – это Linux.
Большие компании очень редко раскрывают устройство своей инфраструктуры, как это сделает Лондонская биржа. С другой стороны, ПО для компаний тоже очень редко дает сильные и очевидные сбои, как в случае с биржей. Я могу только догадываться, как много сбоев ПО для компаний на платформе Windows скрывается внутри IT-департаментов компаний, чтобы скрыть свой выбор старых и глючных программных решений на платформе Windows.
Я уверен, что руководители Лондонской биржи не смогут отличить Linux от Windows без технарей. Тем не менее, они способны на это, когда их бизнес полностью остановится на глазах у всего мира.
Итак, могу ли я предложить Лондонской Фондовой Бирже Linux, в качестве основы для их следующей программной инфраструктуры? Linux прекрасно работает как в Chi-X, так и в CME (Chicago Mercantile Exchange), NYSE (New York Stock Exchange), и многих, многих других компаниях.
initrd.img изменяется так, чтобы, после загрузки и старта ядра, с носителя в память копировался файл со сжатым образом файловой системы корневого раздела (SquashFS). Далее поверх корневого раздела монтируется aufs-tmpfs и стартует Ubuntu.$ mkdir -p ~/ubuntu-ram/{etc,tmp,image,scripts}$ sudo aptitude install lilo mtools genisoimage debootstrap syslinux squashfs-tools
$ cp -a /etc/initramfs-tools ~/ubuntu-ram/etc/isoКонфиги initramfs для iso-образа
$ cp -a /etc/initramfs-tools ~/ubuntu-ram/etc/usb
$ export IMGROOT=~/ubuntu-ram/imageВходим в изолированное окружение
$ sudo -E -s
# chroot debootstrap jaunty $IMGROOT http://mirror.ubuntu.optilink.ru/ubuntu/
# echo "aufs / aufs rw 0 0" > $IMGROOT/etc/fstab
# cp /etc/apt/sources.list $IMGROOT/etc/apt/
# cp /etc/resolv.conf $IMGROOT/etc/
# cat <<EOF > $IMGROOT/etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 hostname.domain hostname
EOF
# cat <<EOF > $IMGROOT/etc/network/interfaces
auto lo
iface lo loopback
EOF
# echo "hostname.domain" > $IMGROOT/etc/hostname
# mount -t proc none $IMGROOT/proc
# mount -o bind /dev $IMGROOT/dev
# mount -t devpts none $IMGROOT/dev/pts
# mount -t sysfs none $IMGROOT/sys
# chroot $IMGROOT bashСоздаем аккаунт администратора и русскую локаль
# adduser --gecos 'System Administrator' demiurgУстанавливаем ядро и требуемые утилиты
# usermod -a -G adm demiurg
# locale-gen ru_RU.UTF-8
# aptitude updateНастраиваем часовой пояс и консоль
# aptitude install linux-image-server grub aufs-tools squashfs-tools
# dpkg-reconfigure tzdataДалее система настраивается под себя (ставим дополнительные программы, правим конфиги под себя).
# dpkg-reconfigure console-setup
# aptitude cleanОтмонтируем файловые системы
# exit
# umount $IMGROOT/procВыходим из режима суперпользователя
# umount $IMGROOT/dev/pts
# umount $IMGROOT/dev
# umount $IMGROOT/sys
# exit
$
$ cat <<EOF > $IMGROOT/../etc/iso/hooks/load_modules
#!/bin/sh
set -e
PREREQ=""
prereqs () {
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
force_load squashfs
force_load isofs
force_load aufs
exit 0
EOF
$ chmod +x $IMGROOT/../etc/iso/hooks/load_modulesСоздаем скрипты, выполняющиеся во время загрузки initrd
$ cat <<EOF > $IMGROOT/../etc/iso/scripts/init-premount/udev_into_ram
#!/bin/sh
PREREQ=""
prereqs () {
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
mknod /dev/loop0 b 7 0
mkdir /disk
WAIT_COUNT=15
while [ ! -e /dev/scd0 ] && [ "$WAIT_COUNT" -gt 0 ]
do
tmp=$((WAIT_COUNT-=1))
sleep 1
done
echo -n "Please wait... "
mount -t iso9660 -o ro /dev/scd0 /disk
cp /disk/root.sqfs /
echo "done"
umount /disk && rm -Rf /disk
EOF
$ chmod +x $IMGROOT/../etc/iso/scripts/init-premount/udev_into_ramСкрипт, монтирующий файловую систему aufs
$ cat <<EOF > $IMGROOT/../etc/iso/scripts/init-bottom/aufs_root
#!/bin/sh
#
# https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
#
# Copyright 2008 Nicholas A. Schembri State College PA USA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# <http://www.gnu.org/licenses/>.
# Thank you Voyage Linux for the idea, http://voyage.hk/ Great job on release 0.5
#
# Tested with 8.04.1
#
#
# ****************************************************************************************
#
# Change log
#
# 2008.08.01 Added debugging comments in "drop to a shell" section. grub option aufs=tmpfs-debug will stop the init script.
# reviewed *********** fix fstab on tmpfs ******************
# rootaufs failed when system was booted with /dev/xxx and fstab had uuid= info.
# BlaYO pointed out the best and simplest solution was to use grep -v. Grep replaces a sed one liner.
# Add the comment block to fstab
#
#
#
case $1 in
prereqs)
exit 0
;;
esac
export aufs
for x in $(cat /proc/cmdline); do
case $x in
root=*)
ROOTNAME=${x#root=}
;;
aufs=*)
aufs=${x#aufs=}
case $aufs in
tmpfs-debug)
aufs=tmpfs
aufsdebug=1
;;
esac
;;
esac
done
if [ "$aufs" != "tmpfs" ]; then
#not set in boot loader
#I'm not loved. good bye
exit 0
fi
# This is a simple overview of the steps needed to use aufs on the root file system and see the /rw and /ro branches.
# initramfs init-botton script
# move the root file system to aufs/unionfs readonly /ro
# root is mounted on ${rootmnt}
# create tmpfs on /rw
# create a aufs using /ro and /rw
# put some files on the tmpfs to fix mtab and fstab
# move aufs to rootmnt to finish the init process.
# No changes to the root file system are made by this script.
#
# Why!
# This will allow you to use a usb flash drive and control what is written to the drive.
# no need to rebuild the squashfs file just to add a program.
# boot to single user mode. The system works the way you expect. boot aufs=tmpfs and no changes are written to the flash.
# run ubuntu on an eeePC .
# Install
# Install ubuntu 8.04 Hardy. Hardy has aufs installed by default
# apt-get update
# apt-get dist-upgrade
# apt-get install aufs-tools
# echo aufs >> /etc/initramfs-tools/modules
# put this file in /etc/initramfs-tools/scripts/init-bottom/rootaufs
# chmod 0755 rootaufs
# # clean up menu.lst
# update-grub
# update-initramfs -u
# vi /boot/grub/menu.lst
# add aufs=tmpfs to the default entry.
# do not add this line to single user mode.
# boot to single user mode in order to install software.
# note: if your home account is on the root file system, your files are in ram and not saved.
#
echo
echo " root-aufs: Setting up aufs on ${rootmnt} as root file system "
echo
modprobe -q --use-blacklist aufs
if [ $? -ne 0 ]; then
echo root-aufs error: Failed to load aufs.ko
exit 0
fi
#make the mount points on the init root file system
mkdir /aufs
mkdir /rw
mkdir /ro
# mount the temp file system and move real root out of the way
mount -t tmpfs aufs-tmpfs /rw
mount --move ${rootmnt} /ro
if [ $? -ne 0 ]; then
echo root-aufs error: ${rootmnt} failed to move to /ro
exit 0
fi
mount -t aufs -o dirs=/rw:/ro=ro aufs /aufs
if [ $? -ne 0 ]; then
echo root-aufs error: Failed to mount /aufs files system
exit 0
fi
#test for mount points on aufs file system
[ -d /aufs/ro ] || mkdir /aufs/ro
[ -d /aufs/rw ] || mkdir /aufs/rw
# the real root file system is hidden on /ro of the init file system. move it to /ro
mount --move /ro /aufs/ro
if [ $? -ne 0 ]; then
echo root-aufs error: Failed to move /ro /aufs/ro
exit 0
fi
# tmpfs file system is hidden on /rw
mount --move /rw /aufs/rw
if [ $? -ne 0 ]; then
echo root-aufs error: Failed to move /rw /aufs/rw
exit 0
fi
#*********** fix fstab on tmpfs ******************
# test for /dev/sdx
# this is not on the real file system. This is created on the tmpfs each time the system boots.
# The init process will try to mount the root filesystem listed in fstab. / and swap must be removed.
# the root file system must be mounted on /ro not on /
if [ "$aufsdebug" -eq 1 ]; then
echo " root-aufs debug: Remove the root file system and swap from fstab "
echo
echo
echo " ROOTNAME $ROOTNAME "
echo " resume $resume "
echo
echo ' BlaYO pointed out that grep can be used to quickly remove '
echo ' the root file system from fstab. '
echo
echo ' Thank you BlaYO for the debug info.'
echo
fi
# old code
# I'm sure that sed can do this in one step but I want to correct on the rootname not matching the root in fstab.
#cat /aufs/ro/etc/fstab|sed -e s/$ROOTNAME/\#$ROOTNAME/ -e s/$resume/\#$resume/ >/aufs/etc/fstab
#Add the comment block to fstab
cat <<EOF >/aufs/etc/fstab
#
# RootAufs has mounted the root file system in ram
#
# This fstab is in ram and the real fstab can be found /ro/etc/fstab
# the root file system ' / ' has been removed.
# All Swap files have been removed.
#
EOF
#remove root and swap from fstab
cat /aufs/ro/etc/fstab|grep -v ' / ' | grep -v swap >>/aufs/etc/fstab
if [ $? -ne 0 ]; then
echo root-aufs error: Failed to create /aufs/etc/fstab
#exit 0
fi
# add the read only file system to fstab
#ROOTTYPE=$(/lib/udev/vol_id -t ${ROOT})
ROOTTYPE=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f3)
ROOTOPTIONS=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f4)
echo /dev/loop0 /ro squashfs ro,relatime 0 0 >>/aufs/etc/fstab
# S22mount on debian systems is not mounting /ro correctly after boot
# add to rc.local to correct what you see from df
#replace last case of exit with #exit
cat /aufs/ro/etc/rc.local|sed 's/\(.*\)exit/\1\#exit/' >/aufs/etc/rc.local
echo mount -f /ro >>/aufs/etc/rc.local
# add back the root file system. mtab seems to be created by one of the init proceses.
echo "echo aufs / aufs rw,xino=/rw/.aufs.xino,br:/rw=rw:/ro=ro 0 0 >>/etc/mtab" >>/aufs/etc/rc.local
echo "echo aufs-tmpfs /rw tmpfs rw 0 0 >>/etc/mtab" >>/aufs/etc/rc.local
echo exit 0 >>/aufs/etc/rc.local
#build remountrw
echo \#!/bin/sh >/aufs/bin/remountrw
echo mount -o remount,rw ${ROOT} >>/aufs/bin/remountrw
chmod 0700 /aufs/bin/remountrw
#build remountro
echo \#!/bin/sh >/aufs/bin/remountro
echo mount -o remount,ro ${ROOT} >>/aufs/bin/remountro
chmod 0700 /aufs/bin/remountro
# This should drop to a shell. (rewrite)
if [ "$aufsdebug" -eq 1 ]; then
echo
echo " root-aufs debug: mount --move /aufs ${rootmnt} "
echo
echo ' root-aufs debug: init will stop here. '
echo
exit 0
fi
mount --move /aufs ${rootmnt}
exit 0
EOF
$ chmod +x $IMGROOT/../etc/iso/scripts/init-bottom/aufs_rootНа этом настройка initramfs заканчивается.
~/ubuntu-ram/scripts/make-iso.sh»#!/bin/shДелаем его исполняемым
WORKDIR=/path/to/ubuntu-ram
SQUASHFS_ROOT=$WORKDIR/image/
ISO_ROOT=$WORKDIR/tmp/
rm -Rf $ISO_ROOT/*
# Получаем версию ядра в окружении
version=$(basename $(readlink $SQUASHFS_ROOT/initrd.img))
version=${version#initrd.img-}
mount -o bind $WORKDIR/etc/iso $SQUASHFS_ROOT/etc/initramfs-tools
chroot $SQUASHFS_ROOT mkinitramfs -v -o /boot/initrd.img-$version $version
umount $SQUASHFS_ROOT/etc/initramfs-tools
mkdir $ISO_ROOT/isolinux
cp $SQUASHFS_ROOT/boot/initrd.img-$version $ISO_ROOT/isolinux/initrd.gz
cp $SQUASHFS_ROOT/boot/vmlinuz-$version $ISO_ROOT/isolinux/vmlinuz
cp /usr/lib/syslinux/isolinux.bin $ISO_ROOT/isolinux/
cat <<EOF > $ISO_ROOT/isolinux/isolinux.cfg
DEFAULT server
TIMEOUT 1
LABEL server
menu label ^Server
kernel vmlinuz
append initrd=initrd.gz root=/root.sqfs loop=/dev/loop0 rootfstype=squashfs aufs=tmpfs ro
EOF
#
mksquashfs $SQUASHFS_ROOT $ISO_ROOT/root.sqfs \
-e $SQUASHFS_ROOT/boot/* \
$SQUASHFS_ROOT/initrd.img \
$SQUASHFS_ROOT/vmlinuz
# Создаём ISO
mkisofs -o $WORKDIR/image.iso -r \
-V "MYUSBSERVER" -v -no-emul-boot \
-boot-load-size 4 -boot-info-table \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot $ISO_ROOT
$ chmod +x ~/ubuntu-ram/scripts/make-iso.shПосле выполнения скрипта в директории «
~/ubuntu-ram» будет создан требуемый iso-образ.$ cat <<EOF > ~/ubuntu-ram/etc/usb/hooks/load_modules
#!/bin/sh
set -e
PREREQ=""
prereqs () {
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
force_load usb_storage
force_load squashfs
force_load vfat
force_load aufs
exit 0
EOF
$ chmod +x ~/ubuntu-ram/etc/usb/hooks/load_modulesКопируем скрипт «
etc/iso/scripts/init-bottom/aufs» в «etc/usb/scripts/init-bottom/aufs».$ cat <<EOF > ~/ubuntu-ram/etc/usb/scripts/init-premount/udev_into_ram
#!/bin/sh
PREREQ=""
prereqs () {
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
mknod /dev/loop0 b 7 0
mkdir /disk
WAIT_COUNT=15
while [ ! -e /dev/disk/by-label/MYUSBSERVER ] && [ "$WAIT_COUNT" -gt 0 ]
do
tmp=$((WAIT_COUNT-=1))
sleep 1
done
echo -n "Please wait... "
mount -t vfat -o ro /dev/disk/by-label/MYUSBSERVER /disk
cp /disk/root.sqfs /
echo "done"
umount /disk && rm -Rf /disk
EOFНиже приведён скрипт создающий бутовую USB-флешку. Скрипт сохраняется в файл «
~/ubuntu-ram/scripts/make-usb.sh»#!/bin/shДелаем скрипт исполняемым
WORKDIR=/path/to/ubuntu-ram
SQUASHFS_ROOT=$WORKDIR/image/
ISO_ROOT=$WORKDIR/tmp/
rm -Rf $ISO_ROOT/*
# Получаем версию ядра в окружении
version=$(basename $(readlink $SQUASHFS_ROOT/initrd.img))
version=${version#initrd.img-}
mount -o bind $WORKDIR/etc/usb $SQUASHFS_ROOT/etc/initramfs-tools
chroot $SQUASHFS_ROOT mkinitramfs -v -o /boot/initrd.img-$version $version
umount $SQUASHFS_ROOT/etc/initramfs-tools
mkdir $ISO_ROOT/isolinux
cp $SQUASHFS_ROOT/boot/initrd.img-$version $ISO_ROOT/initrd.gz
cp $SQUASHFS_ROOT/boot/vmlinuz-$version $ISO_ROOT/vmlinuz
cat <<EOF > $ISO_ROOT/syslinux.cfg
DEFAULT server
TIMEOUT 1
LABEL server
menu label ^Server
kernel vmlinuz
append initrd=initrd.gz root=/dev/disk/by-label/MYUSBSERVER loop=/dev/loop0 rootfstype=squashfs aufs=tmpfs ro
EOF
#
mksquashfs $SQUASHFS_ROOT $ISO_ROOT/root.sqfs \
-e $SQUASHFS_ROOT/boot/* \
$SQUASHFS_ROOT/initrd.img \
$SQUASHFS_ROOT/vmlinuz
echo "Please insert USB flash drive and press Enter"
read
# /dev/sdX - Ваша USB-флешка
lilo -M /dev/sdX
lilo -A /dev/sdX 1
mkfs.vfat /dev/sdX1
syslinux -f /dev/sdX1
mlabel -i /dev/sdX1 ::MYUSBSERVER
mount -t vfat /dev/sdX1 /mnt
cp -a $ISO_ROOT/* /mnt
umount /mnt
exit 0
$ chmod +x ~/ubuntu-ram/scripts/make-usb.sh
Если вы следите за KDE Planet, то наверняка заметили очередной холивар вокруг KHTML и WebKit (а если следите давно, то знаете, что эта тема поднимается далеко не в первый раз).
KHTML нельзя назвать плохим продуктом. Не случайно ведь Apple, создавая WebKit, взяла за основу именно его. Но ситуация с современным развитием веба такова, что требования к браузерам и веб-приложениям стремительно растут, маленькие команды не успевают за этими изменениями, стандарты не отображают реального положения дел, а веб-разработчикам приходится во многих случаях адаптировать свой код для каждого браузера.
За разработчиками основных браузерных движков стоят большие организации и финансовая поддержка. За разработкой KHTML стоят три человека, которым просто нравится работать над ним в свободное время.
В результате, попытавшись воспользоваться единственным входящим на настоящий момент в KDE4 браузером, вы будете весьма ограничены в возможности использовать современные веб-приложения, игнорировать популярность которых просто невозможно. Но самое ужасное — многие дистрибутивы даже не включают в свой состав другие браузеры! Представьте себе впечатления человека, начавшего знакомство с Linux’ом с Kubuntu LiveCD. Не имея возможности даже воспользоваться своими любимыми веб-сервисами, он надолго потеряет желание повторять такие эксперименты.
Почему же KHTML до сих пор входит в KDE?
Есть ряд причин, по которым KHTML продолжает своё развитие. Во-первых, он используется не только в Konqueror, но и в KMail, Kopete и других приложениях. Из-за этого KHTML не может быть исключён из состава KDE, по крайней мере, на протяжении разработки KDE4.
Но самое главное — KHTML существует потому, что есть разработчики которые хотят над ним работать. Если человек работает над каким-либо проектом бескорыстно в своё свободное время, имеем ли мы право от него требовать, чтобы он вместо этого занялся чем-то другим, что его вовсе не интересует? WebKit — очень большой проект, над которым работает множество людей, многие из которых получают за это зарплату. Вячеслав Токарев говорит, что ему не интересно следить за работой такого множества людей и стараться успевать за ними.
Тут, конечно, играет роль и психологический аспект: если в команде KHTML каждый разработчик — “демиург”, то влившись в команду WebKit, они будут одними из тысячи.
Таков закон развития открытого ПО: разработка должна поддерживаться мотивацией разработчиков. Если разработчик не хочет работать над чем-либо сам, или же ему не платят за это деньги, то наступает застой. Мы видим это на примере KDE Windows, который, при большом спросе на этот проект, развивается довольно медленно из-за сликом малого количества мотивированных разработчиков и проблем с взаимодействием между энтузиастами и работниками компаний. Мы видим, как при работе по несколько лет без релизов, как это было с KDE4 до выхода 4.0 и KOffice2 до выхода KOffice 2.0, многие разработчики теряют мотивацию и опускают руки. Мы видим, как разработчикам KOffice не интересно заниматься поддержкой форматов MS Office, а релиз KDE4-версии K3b появился на горизонте только после того, как Mandriva начала спонсировать его разработку.
А что же с WebKit KPart?
Здесь снова налицо проблема с мотивацией разработчиков. О проекте WebKit KPart, который позволил бы в Konqueror и других приложениях свободно переключаться между движками KHTML и WebKit, говорят очень много, но лишь немногие разработчики занимаются его разработкой.
Сегодня, правда, один из разработчиков, работавший над этим проектом, признался, что есть гораздо более сложная проблема: Konqueror слишком глубоко интегрирован с KHTML, и простая замена KPart не приведёт к хорошему результату. Konqueror очень сильно завязан на API KHTML, а различия между KHTML и WebKit в настоящее время очень глубокие.
Вдобавок, как пишут многие разработчики, использующие QtWebKit, его развитие происходит довольно медленно. К примеру, в Plasma совсем не использует KHTML, а исключительно QtWebKit, и как пишет её главный разработчик Аарон Сейго, он разочарован текущим состоянием интеграции WebKit в Qt.
В комментариях к его заметке разработчик основанного на QtWebKit HTML-редактора также жаловался на отсутствие нужного ему функционала. Впрочем, представитель Qt Software Ariya Hidayat посоветовал разработчикам высказывать свои замечания на IRC-канале #qtwebkit.
Что ж, похоже, решения проблемы с KDE-браузером приходится ждать со стороны разработчиков QtWebKit и таких браузеров, как Arora и Rekonq. Оба этих проекта пока ещё находятся в ранней стадии развития, но обещают надлежащую интеграцию с KDE.
Одним из аргументов против KDE в извечных DE-холиварах является трудность создания новых стилей виджетов и оконных декораций. Оппоненты приводят примеры из мира Gnome: Emerald, Pixmap, Clearlooks, Aurora, Murrina и их разнообразные настройщики.
Что же может предложить KDE в этом плане? Давайте посмотрим.
Plasma Emerald Theme Generator
Это пограничный вариант, так как для работы требуется Compiz, не совсем родное для KDE приложение.
Суть этого генератора проста как две копейки: на основе любой существующей в системе plasma-темы создаются оконные декорации. Код основан на Kdm/Ksplash/Theme Generator
Найти Plasma Emerald Theme Generator можно здесь.
deKorator
deKorator — стиль оконных декораций, поддерживающий смену тем, относительно недавно был портирован на Qt4/KDE4, попутно получив пару приятных добавлений в виде встроенного предпросмотра (диалог выбора оконных декораций в “Настройках системы”) и поддержки ARGB visuals.
Темы для деКоратора лежат здесь, также народ потихоньку портирует Emerald’овские, и уже поступило несколько фичереквестов по поводу добавления полезной в этом деле функциональности.
Aurorae Theme Engine В отличии от Emerald и deKorator, работающих с форматом png, Aurorae, ещё один стиль декораций, дружит уже c SVG. Если вы не новичок в векторной графике, то это хороший повод раскочегарить Inkscape.
Движок Aurorae ещё очень молодой, построен с использованием Plasma-технологий, есть поддержка ARGB. А вот реальной непрозрачности (opaque) в нём пока нет, но планируется добавить в ближайшем будущем. Тем, помимо референсной, пока создано только три штуки, и автор поощряет креативных пользователей на создание новых. Сообщения об ошибках и запросы на дополнительную функциональность также приветствуются.
Стили виджетов
Среди стилей виджетов ситуация более напряжённая.
Есть QtCurve — универсальный движок, работающий с Qt3, Qt4 и GTK2-приложениями и обеспечивающий единообразность их внешнего вида.
QtCurve содержит немалое количество настроек, включая использование градиентов, степень “скругления” виджетов, разные варианты полос прокрутки и сепараторов. Доступна возможность экспорта и импорта файла настроек.
Bespin тоже интересный стиль: есть множество настроек, и способ обменяться с сообщниками результатами кропотливого тюнинга.
Но всё же, к этим стилям виджетов результаты своего креатива в графическом редакторе не приспособишь. А потому, встречайте:
QuantumStyle
QuantumStyle — это стиль виджетов для Qt4 и KDE4, поддерживающий сменные SVG-темы. Надеюсь, ваш Inkscape после Aurorae ещё не успел остыть?
Темы для этого движка создаются примерно так:
Теперь новый пункт должен появиться в диалоге выбора стиля в “Настройках системы” и qtconfig. Для верности можно выполнить команду kbuildsycoca4.
QuantumStyle находится на стадии RC3, но уже вполне может применяться в быту, несмотря на некоторое количество багов, недостающих виджетов и отсутствие диалога конфигурации.
Но самое важное, чего ему нехватает — это контрибуторов. Без них не будет развития, новых тем, найденных и исправленных ошибок и новой функциональности.
Таблицы используемые FreeRadius
mysql> show fields from radgroupcheck;
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| GroupName | varchar(64) | NO | MUL | ||
| Attribute | varchar(32) | NO | MUL | ||
| op | char(2) | NO | == | ||
| Value | varchar(253) | NO | |||
| nas | varchar(32) | NO | MUL |
mysql> show fields from radgroupreply;
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| GroupName | varchar(64) | NO | MUL | ||
| Attribute | varchar(32) | NO | MUL | ||
| op | char(2) | NO | = | ||
| Value | varchar(253) | NO |
Парамерты в таблице для группы пользователей работающих через Juniper
mysql>select * from radgroupcheck where GroupName=’e120_test’;
| 15 | e120_test | Pool-Name | := | nas120 | xxx.xxx.xxx.xxx |
mysql> select * from radgroupreply where GroupName=’e120_test’;
| 20 | e120_test | Framed-Compression | := | Van-Jacobsen-TCP-IP |
| 21 | e120_test | Framed-Protocol | := | PPP |
| 22 | e120_test | Service-Type | := | Framed-User |
| 23 | e120_test | Framed-MTU | := | 1500 |
| 41 | e120_test | ERX-Virtual-Router-Name | = | default |
| 35 | e120_test | ERX-Service-Activate:1 | = | local(5120000) |
| 36 | e120_test | ERX-Service-Activate:2 | += | inet(1280000) |
| 37 | e120_test | ERX-Qos-Profile-Name | = | QP-DoubleMicro |
| 38 | e120_test | ERX-Qos-Parameters | = | QPD-DoubleMicro-Local 5120000 QPD-DoubleMicro-Inet 128000 |
| 42 | e120_test | ERX-Address-Pool-Name | = | PPPoE |
| 43 | e120_test | ERX-Local-Loopback-Interface | = | loopback 0 |
Ответы радиуса BRAS’у передаётся IP-адрес с маской, скорость для сервисов (2 сервиса – локал на скорости 5мб/с и Инет на скорости 128кб/с), параметры для шейпинга (исходящий на абонента шейпится, входящий от абонента полисится) – 2 строки
Sending Access-Accept of id 59 to ххх.ххх.ххх.ххх port 50000
Framed-Compression := Van-Jacobson-TCP-IP Framed-Protocol := PPP Service-Type := Framed-User Framed-MTU := 1500 ERX-Virtual-Router-Name = "default" ERX-Service-Activate:1 = "local(5120000)" ERX-Service-Activate:2 += "inet(1280000)" ERX-Qos-Profile-Name = "QP-DoubleMicro" ERX-Qos-Parameters = "QPD-DoubleMicro-Local 5120000 QPD-DoubleMicro-Inet 128000" ERX-Address-Pool-Name = "PPPoE" ERX-Local-Loopback-Interface = "loopback 0" Framed-IP-Address = ххх.ххх.ххх.ххх Framed-IP-Netmask = 255.255.255.255
В случае наличия большой флешки удобно сделать следующее:
Можно создать на ней зашифрованный раздел при помощи LUKS на котором хранить чувствительные данные, вроде SSH ключей, документации по работе и т.д. При вставке такой флешки в Linux машину сразу появится диалог с предложением ввести пароль от второго раздела, дабы примонтировать его. А в случае с Windows можно воспользоваться FreeOTFE Которая имеет разные версии: требующую права администратора (для работы с зашифрованными разделами как с дисками, после расшифрования) или не требующую (для работы с ними через специальное подобие Explorer-a).
Рекомендуется кинуть эти программы на незашифрованный раздел, не забыв о контрольных суммах. (приложите программы sha1sum.exe и md5sum.exe, ссылки на них в английской и русской википедии) Не забывайте, что мир Windows кишит вирусами, которые повреждают исполняемые файлы этой операционной системы и размножаются в том числе через флешки
PS ещё посоветовал бы использоавть флешку, обеспечивающую физическую сохранность данных, вроде пуленепробиваемой Pretec.
После выхода браузера Mozilla Firefox 3.5, я ждал, когда пакет обновится на AUR’e. Но, к удивлению, эта версия тянет за собой gcc-snapshot. В комментариях к gcc-snapshot пользователи пишут, что этот снепшот не компилит Firefox. Остается выжидать?
Советую всем, кто еще не читает. Здесь собираются фиды со многих блогов, обновления каждый день, и можно найти довольно-таки много чего интересного.
Без особого шума и пыли 1 июля был выпущен первый кандидат в релизы KDE 4.3. Нововведений в грядущем релизе предостаточно, например:
Этот выпуск ещё один шаг на пути к финальному релизу KDE 4.3. Напомню, что согласно изначальному плану, именно эта версия должна была стать окончательно пригодной для использования конечным пользователем и быть включенной в популярные современные дистрибутивы.
Подробней о нововведениях и изменениях на русском языке можно прочитать на сайте www.kde.ru по этой ссылке.
Только что на одном из подоконников в коридорах факультета ВМиК МГУ обнаружили десяток флэшек. По 2 гига каждая. На стальной боковине надпись маркером Linux. Внутри fat32 раздел с syslinux и образом RFRemix-11-i686. Бутиться пока не пробовал.
Пингвины откладывают яйца? Галагтеко опасносте?
Журнал посвященный самому популярному настольному дистрибутиву Linux – Ubuntu.
Цитата:
“Full Circle – это свободный и независимый журнал, посвящённый семейству операционных систем Ubuntu, основанных на Linux. Каждый месяц мы предоставляем сообществу перевод полезных статей, написанных авторами и читателями журнала.”
скачать в Казахстане
photos/2009/20090628 - название альбома/. Очень удобно, потому что обычно один день — одна тема, и даже при алфавитной сортировке каталога альбомы упорядочены хронологически. И такая организация не зависит ни от операционной системы, ни от конкретной программы-каталогизатора.#!/bin/sh
ARCHIVE=$HOME/photos
for f in "$@"; do
DT=$(exiftool -s -DateTimeOriginal "$f")
YEAR=$(echo $DT|awk '{print $3;}'|awk -F: '{print $1;}')
ISODAY=$(echo $DT|awk '{print $3;}'|sed 's/://g')
TARGET="$ARCHIVE/$YEAR/$ISODAY"
install -d "$TARGET" && \
install "$f" "$TARGET"
echo "$f -> $TARGET"
done
$ import-photos *
/home у меня, естественно, на большом, и там же профиль Firefox-а. Браузер же по-умолчанию сохраняет в него текущую сессию каждые 10 секунд и туда же пытается писать кэш. Пишет он синхронно (то есть ждёт, пока не запишется), поэтому и замирает на секунду при каждом чихе.toolkit.storage.synchronous с целым значением 0 (запись на диск вести асинхронно, то есть не ждать, пока, например, состояние сессии действительно запишется)browser.cache.disk.parent_directory, его строковое значение установить в /dev/shm/firefox-username (сохранять кэш в памяти, а не писать на диск; кэш, конечно, будет утерян при перезагрузке, и памяти потребуется больше, но зато и работать будет быстрее)browser.sessionstore.interval поставил 60000 (60 секунд), вместо 10000 (10 секунд).Я вот тут прикинул и выходит, что GNOME 3.0 попадает на Fedora 13.. или наоборот...
Когда что-нибудь синхронизируете из интернета через rsync, особенно если это что-то большое и займёт не один час, а то и сутки, не забывайте использовать --timeout=120, да и вообще будьте готовы к обрывам соединения:
while [ $? -ne 0 ]; do
sleep 2;
rsync -avHP --delete-after --stats --timeout=120 \
cdimage.debian.org::debian-cd/ /storage/debian-cd/;
done
Как мы уже писали, в KDE 4.3 разработчики добавили поддержку нового протокола системного трея. Часть приложений уже переделали с учётом требований нового протокола, ещё больше программ планируется окучить к выходу KDE версии 4.4
Чтобы ещё больше порадовать пользователей, в текущем trunk реализована такая штука:
Plasma-виджеты теперь могут быть встроены непосредственно в область уведомлений — см. значок батареи на скриншоте выше. Графического конфигуратора пока нет, но очевидно, что он появится в ближайшем будущем.
Если вы недавно собрали свежую версию KDE из разрабатываемой ветки SVN-репозитория и хотите лично опробовать новую фичу, откройте файл $KDEHOME/share/config/plasma-desktop-appletr, найдите в нём systray-секцию и добавьте новый пункт (здесь [Containments][3][Applets][63] используется в качестве примера):
[Containments][3][Applets][63][Configuration][Applets][137] geometry=24,2,22,22 immutability=1 plugin=battery zvalue=0
За новость сердечно благодарим Marco Martin aka notmart.
by noreply@blogger.com (Programmaster) at 30.06.2009 21:00:00
Надо подумать, на что же перевести блог, чтобы плагинов было много, чтобы openID поддерживало, чтобы движок активно развивался, а главное был удобным...
Полагаю, что интересующиеся темой Google Android уже в курсе, что недавно вышел Android NDK (Native Development Kit). Этот пакет позволяет разрабатывать "нативные" приложения для платформы Android, в обход стандартного SDK, основанного на специальной редакции Java (Dalvik). Новость на самом деле весьма неоднозначная. Вчера в комментариях в одном блоге я отчасти высказал свое мнение по этому вопросу, но напишу еще здесь подробней.
Операционная система для мобильных устройств должна быть изначально спроектирована с расчетом именно на мобильное использование. Здесь должен быть специальный подход к интерфейсу, хранению данных, интеграции приложений, уведомлениям, использованию памяти и т.д. И именно эту задачу решает Dalvik, который с этой точки зрения разработан очень грамотно. Использование Java как основы видится мне также безусловным плюсом из-за достаточно низкого порога вхождения и наличия огромного количества "готовых" программистов. Очень важно разрабатывать программы, сохраняя этот единый подход, предлагаемый API системы. Мне кажется, это очевидно. Читать далее »
А также RPM переходит на сжатие XZ / LZMA.
Давно откладывал этот пост, т.к. планировал написать развернутую заметку. Теперь понял - времени на развернутую заметку в ближайшие дни не найду, а ссылкой поделиться очень хочется.
Ещё неделю назад этот пост бы вышел в виде краткого обзора Archlinux community contributions, но теперь этот проект заслуживает отдельной статьи.
Буду краток: это новый веб-браузер, который пропитан KISS насквозь. По сути сам исполняемый файл uzbl - одно окно с движком webkit, без каких-либо контролов, который принимает комманды через пайп. Хочешь перейти по ссылке - скрипт, сохранить закладку - пиши скрипт на любимом языке. Правда ситуация облегчается тем, что разработчики и комьюнити uzbl уже написали целую кучу скриптов на все случаи жизни.
Большинство скриптов в репозитории с программой.
by Pavel Vyazovoi (vyazovoi@gmail.com) at 30.06.2009 09:22:12
Когда-то давно я писал, о том как настроить GPRS на Nokia E61. Тогда я даже не представлял как заставить работать интернет через bluetooth. Сейчас же в Russian Fedora Remix 11 (а также в ALT Linux, ASPLinux и Ubuntu) появилась довольно простая возможность сделать это только при помощи мышки. Мудрая идея Леонида Кантера сделала меня счастливым на всё время отпуска.
Как это работает в Russian Fedora Remix
В RFRemix аплет Blueman должен быть запущен по умолчанию. Если это не так, то отдайте команду
/usr/bin/blueman-applet
В области уведомлений у вас должна быть иконка Bluetooth. Щёлкнув по ней, откроется окно, в котором необходимо, нажав на кнопку Найти, определить устройство для выхода в интернет.

После того как нужное устройство появилось, необходимо установить с ним связь. Для этого нужно щёлкнуть по нему правой кнопкой мыши и выбрать пункт Cоединить.

Далее обычная процедура. Нужно ввести код, который после нажатия кнопки ОК нужно будет продублировать на телефоне. После этого справа от названия устройства появятся графики “стабильности” соединения, которые впрочем через секунду исчезнут. Если вы не хотите всякий раз подтверждать передачу данных на телефоне, то щёлкните правой кнопкой мыши по нашему устройству и выберите пункт Доверенный.
После этого необходимо получить доступ к модему устройства. Для этого щёлкаем по нему правой кнопкой мыши, выбираем пункт Последовательные порты, Служба доступа к сети через модем.

Если всё пройдёт удачно, то справа от названия устройства появятся уже знакомые нам графики, а через некоторое время должно автоматически появиться окно:

Новое соединение можно добавить и вручную, щёлкнув правой кнопкой мыши по иконке NetworkManager в области уведомления, выбрав Изменить соединения..., далее вкладка Мобильные широкополосные и кнопка Добавить.
Нажав на кнопку Вперёд, нужно выбрать страну и оператора связи:

После этого нужно нажать на кнопку Вперёд а затем на Применить.
Осталось только соединиться с сутью. Для этого необходимо щёлкнуть по иконке NetworkManager и выбрать наше соединение:

Возможные проблемы
Иногда связь с телефоном обрывается и заново настроить её не удаётся. В таких случаях нужно удалить устройство и настроить его заново.
Как это сделать в другом дистрибутиве
Если вы хотите внедрить эту технологию в свой дистрибутив, то вам потребуется Blueman (есть во многих дистрибутивах), NetworkManager, пропатченный для работы с MBCA, сам пакет mbca и база данных телефонных операторов по странам.
На NetworkManager необходимо наложить патч и собрать аплет с ключом --with-mbca.
Аарон Сейго (Aaron Seigo) в предверии готовящегося релиза KDE 4.3 не поленился и сделал видеообзор возможностей Plasma в KDE 4.3.

Plasma 4.3 Screencast
На протяжении 10 минут можно узнать о ряде значимых изменений. Те, кто не обладает достаточными знаниями английского языка (например, я), может довольствоваться видеорядом, остальные же могут почерпнуть интересную информацию из комментариев. По словам самого Аарона, чтобы сделать полный обзор всех возможностей грядущего релиза, потребуется минимум час, а в отведенные десять минут он успел показать и рассказать следующее:
Скачать torrent-файл можно по этой ссылке. Аарон Сейго просит не уходить с раздачи тех, кто уже скачал файл.
exiftool. Чтобы откатить дату на один год и 12+1 (13) часов, поступаем так:$ exiftool "-DateTimeOriginal-=1:0:0 13:00:00" *.jpg
exiftool их услужливо сохранит):$ for f in *_original ; do mv $f ${f%_original} ; doneНаконец-то в новом 64 пакете Nero исправили баг, который я отослал ещё 2 февраля. А я думал забудут.
When you are building rpm-packages you select arch amd64 for 64-bit package.
$ rpm -qp nerolinux-3.5.2.3-1.x86_64.rpm --qf ”%{arch}\n”
amd64
This is wrong for RPM. “Amd64” arch is used only in deb-packages, for rpm-packages should be used “x86_64” arch. So if arch is “amd64” I can not use yum (package manager) for installing nero 64 from local custom repository.
Please, fix this bug in next releases.
thank you for your e-mail.
thank you very much for the information. I will forward that information to our developers.
Should you have any further queries, please do not hesitate to contact us again.
Best Regards
Max Blank
Nero Support
Nero AG
Im Stoeckmaedle 13-15
76307 Karlsbad
Germany
Fax : +49 (0)7248 928 499
http://www.nero.com
(wl-folder-get-petname (elmo-folder-name-internal
wl-summary-buffer-elmo-folder))
(defun vyazovoi/wl-folder-switch ()
(setq my-wl-current-petname (wl-folder-get-petname (elmo-folder-name-internal
wl-summary-buffer-elmo-folder)))
(cond ((equal my-wl-current-petname "INBOX@domain")
(message "Настройки для domain"))
((equal my-wl-current-petname "INBOX@gmail")
(message "Настройки для gmail"))
(t
(message "Настройки по умолчанию"))))
(add-hook 'wl-summary-prepared-hook 'vyazovoi/wl-folder-switch)
by Pavel Vyazovoi (vyazovoi@gmail.com) at 29.06.2009 13:21:54
Роясь в дебрях Интернета откопал интересную утилиту Munin. Основное ее предназначение - визуализация множества показателей операционой системы, на которой она установлена и не только на ней. Средство очень удобное и простое в инсталляции. Для CentOS буквально пара команд:
yum install munin
yum install munin-node
Запуски системы осуществляется с помощью команды:
service munin-node restart
Конфигурационные файлы записываются в папку /etc/munin. Основных конфига два: munin.conf и munin-node.conf.
Доступ к статистике можно получить по адресу http://имя_или_ip_адрес_вашего_сервера/munin/
Статистика обновляется каждых 5 минут.
Вот двух словах все. ![]()
sudo semanage permissive -a httpd_tПример того как сделать домен безопасности с названием httpd_t для Apache снова принудительным:
sudo semanage permissive -d httpd_tПример того как используя команду semanage просмотреть разрешающие домены SELinux:
sudo semanage permissive -l
sudo semanage login -l | grep defaultрезультат команды будет каким-то таким:
__default__ unconfined_u SystemLow-SystemHighВ примере выше Linux-пользователи по умолчанию сопоставлены SELinux-пользователю unconfined_u.
sudo semanage login -m -s user_u "__default__"В результате все новые Linux-пользователи будут по умолчанию сопоставляться ограниченному SELinux-пользователю user_u.
sudo useradd -Z guest_u joeВ результате будет создан новый Linux-пользователь с именем joe, который будет сопоставлен SELinux-пользователю guest_u, вместо определенного по умолчанию SELinux-пользователя.
sudo semanage user -l
sudo semanage login -l
sudo semanage login -a (...)
sudo semanage -m (...)
sudo semanage -d (...)
Всем привет!
После большого перерыва, вызванного сдачей диплома в институте я вновь продолжу радовать Вас интересными статьями.
Сегодня мы рассмотрим вопрос кодирования видео с miniDV видеокамеры.
Задача: Сбросить видео на ПК и пережать его для последующего хранения.
Нам потрбуеться:
1) Ядро с поддержкой FireWire 1394 или v4l (смотря кто как будет скидывать видео)
2) Программа dvgrab (собственно с её помощью мы будем грабить видео с miniDV кассеты из консоли)
3) Программа mencoder (Входит в поставку с видео плеером mplayer)
4) Программа avimerge для склеивания нескольких avi файлов в один (входит в состав transcode)
Грабим видео:
Для начала нам потребуется подключить видеокамеру к ПК.
В случае с FireWire 1394 никаких драйверов нам не нужно, просто подключаем и работаем.
В случае подключения камеры по средствам USB нам нужно определиться с её поддержкой ядром Linux.
Как мы уже знаем, сделать это можно с помощью команды lsusb и затем скомпилировать подходящий модуль ядра.
Я решил упростить себе жизнь и просто купил внешнюю карту FireWire 1394.
Для начала установим пакет dvgrab
Затем нам нужно перемотать miniDV кассету на начало и подключить камеру к ПК.
Теперь перейдём к процессу сграбливания видео:
Утилита dvgrab имеет множество полезных параметров, давайте рассмотрим некоторые из них:
-a, -autosplit – Этот параметр отвечает за нарезку видеофайлов, т.е dvgrab будет резать видео автоматические на куски, между нажатиями на кнопку запись/стоп. Это очень удобно если Вы хотите рассортировать сюжеты.
-f, -format – Позволяет в ручную задать формат видео потока, если параметр не задан, то dvgrab автоматически попытается определить формат данных. Если у Вас hdv камера то нужно обязательно указать этот параметр.
-F, -frames – Количество кадров
-s, -size – Устанавливает лимит на видео файл. По умолчанию установлен размер 1024 мегабайта, что удобно если Вы монтируете DVD диск.
-V, -v4l2 Если Вы планируете скинуть видео через драйвер v4l2
О остальных параметрах Вы можете почитать man dvgrab
В моём случае я воспользовался вот такой конструкцией:
dvgrab –format raw -size 20000 cam.dv
Поскольку размер одной кассеты около 13 Гб, то всё видео будет сохранено одним файлом, это для удобства кодирования.
Кодируем видео:
Да бы не вдаваться в подробности я дам Вам мою конструкцию для перегона видео:
Первый проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=1:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3
Второй проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=2:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3
При таких параметрах 1 час видео занимает около 800 Мб
При необходимости Вы можете изменить битрейд видео и звука для достижения желаемого качества.
Склеиваем видео:
Для склеивания видео в один большой файл мы воспользуемся утилитой avimerge.
Делается это очень просто:
avimerge -o com.avi -i 1.avi 2.avi 3.avi
Где com.avi – это итоговый видео файл, а 1.avi 2.avi 3.avi - это видео файлы, предназначенные для склеивания.
После обработки полученное видео Вы можете нарезать на диск или разместить в интернете.
Из видео хостингов я рекомендую воспользоваться www.veoh.com
На нём нет ограничения как по размеру видеофайла, так и по продолжительности самого видео.

Я перепробовал достаточно много Twitter-клиентов для Linux. Но почему-то ни один из них меня не порадовал настолько, чтобы не искать ему замены. Mitter как-то не прижился, уж очень он аскетичен. Поэтому до недавнего времени я использовал, в основном, twhirl. Но он, несмотря на все его достоинства, не очень радует из-за того, что написан для Adobe AIR. И памяти потребляет больше, и выглядит не очень "родным" для Linux.
После выхода Ubuntu 9.04 я понял, что от Twitter-клиента мне хочется трех вещей:
Оказывается, такая программа существует - Gwibber. Именно то, что мне нужно. Вчера я ее опробовал и, судя по всему, останусь на ней в качестве моего единственного Twitter-клиента в Linux. Если кто-то ее еще не видел, очень рекомендую взглянуть. Программа, кстати, поддерживает не только Twitter, но и Jaiku, Identi.ca, Facebook, Flickr, Digg.
Немного напишу об установке Gwibber в Ubuntu 9.04. Читать далее »
lsb_release. $ lsb_release -irc
Distributor ID: UbuntuЕсли этой утилиты в исследуемой системе нет, то версию дистрибутивов, основанных на Debian/RedHat/Gentoo можно узнать так (спасибо Ярославу Шаповалу)
Release: 9.04
Codename: jaunty
$ cat /etc/*release*в дистрибутивах, основанных на Slackware
$ cat /etc/slackware-versionв SUSE
$ cat /etc/issue
Итак, подводим итоги наших двух опросов. Первый опрос был относительно шрифтов. Подавляющее большинство (58%) высказалось за первый вариант, а именно за тонкий (серый на вид) шрифт.
Такое начертание достигается простой пересборкой freetype с включёнными bytecode interpreter и subpixel rendering, которые отключены по патентным соображениям в Fedora.
35% предпочли различные манипуляции с шрифтами как в Ubuntu и Mandriva. Данное начертание достигается путём пересборки cairo, fontconfig и libXft (freetype также пересобирается).
От себя скажу, что я перешёл на использование второго варианта. Две недели на ноутбуке и теперь на большом мониторе.
Что касается дистрибутива, то благодаря опросу в Russian Fedora Remix по умолчанию будет использоваться первый вариант.
Второй опрос был организован по просьбе одного знакомого (по Jabber) и касался способов обновления системы. Большое спасибо всем, кто портировал emerge в Fedora, надеюсь ваши наработки окажутся в апстриме. Об urpmi жалко никто не вспомнил.
Опрос показал, что 53% ставят систему с нуля. К ним я отношу и себя. Как бы за многие годы этот способ наиболее эффективен. Правда для его реализации нужно немного нестандартно (особенно если у вас ноутбук с маленьким диском, а ваш суппорт упорно всё ставит на один раздел) подходить к разбивке жёсткого диска (до сих пор люди удивляются, а потом не нарадуются, когда я им это рассказываю), однако результат этот оправдывает (у вас должно быть минимум два раздела под систему, под текущую и под будущую, и раздел с /home). Заодно после того, как вы долго разрушали свою систему, можно всё начать с чистого листа.
Yum upgrade (33%) – процесс долгий и интеллектуальный (да, приходится удалять зависимости, на которых затыкается обновление, или пытаться воспользоваться хитрыми плагинами), к тому же результат всякий раз непредсказуем (как рассказывают и в Ubuntu тоже).
Обновлением через установочный диск пользуются 9%. Здесь много подводных камней. Например, если во время обновления исталлятор вдруг наткнётся на I/O error (допустим болванку плохо записали), то потом вы уже не сможете продолжить обновление. Также всякий раз обновление работает по новому. Например в 11 версии нельзя обновиться с 11-й (!), с 10-й можно, с 8-й нет (с 9-й не знаю).
Preupgrade (5%) – процесс очень похож на предыдущий с точки зрения механизма обновления.


by Sergei Danilov (noreply@blogger.com) at 28.06.2009 17:28:28
Решил попробовать сегодня это чудо. Если кто не в курсе – реализация Python написанная на C# и предназначенная для платформы .Net. Данная реализация позволяет использовать как python-овские типы и библиотеки, так типы Net Framework в одном приложении.
Использование технологий Microsoft в неродной для них среде Linux в комбинации с нестандартным языком программирования оставляет послевкусие всемогущества и вседозволенности – рекомендую хотя бы попробовать.
Готового проекта под ArchLinux я не нашел, поэтому просто скачал бинарники с официального сайта. В качестве Quick Start Guide можно использовать примеры с The Iron Python Cookbook.
Для запуска скриптов на выполнение я использовал командную строку:
$ mono [path to iron python]/ipy.exe [path to sources dir]/script.py

За прошедшую неделю в думах над моим проектом в голове накопилось несколько мыслей, о которых мне хотелось бы сейчас написать:
стоит ли стремиться к строгой работе с GDB/MI?
окоченевшие строки, или в поисках Лиспа;
как заблудиться в исходниках GNU Emacs;
Special: Java-ад расширения Eclipse CDT.
Много думал, много расстраивался, но в итоге что-то, кажется, понял. Закрепляю мысли сей заметкой.
В прошлой заметке я говорил про то, что решил отображать ответы GDB/MI в рекурсивные списковые структуры Emacs Lisp, состоящие из вложенных друг в друга ассоциативных и не очень списков. Такого вида, например:
Например, если (условная) команда MI -basket-info выводит в терминал
что-то вроде:
{basket=[{color="green",taste="delicious"},{color="red",taste="disgusting"}]}
то этот ответ будет переведён в структуру basket следующего вида:
(defvar basket '((apples . (((color . "green")
(taste . "delicious"))
((color . "red")
(taste . "disgusting"))))))
В настоящий момент я использую входящий в состав Emacs парсер JSON для выполнения этого преобразования.
Обращение к членам структуры я сначала делал с помощью простеньких самописных процедур навроде такой:
(fadr-member basket ".apples[0].color")
=>
"green"
Проблемы, на которые указали разработчики Emacs, побудили
меня ещё раз подумать над возможностью применения вместо этого других
функций, например defstruct и Ко из пакета cl.
Для структурирования данных под Emacs Lisp есть средства более
высокого уровня, например EIEIO или макросы defstruct из пакета
cl. Их плюсом является то, что при работе со структурами мы
бесплатно получаем простеньку проверку типа структуры (то есть не
удастся попросить поле X у структуры, которая обладает только полем
Y). Это придаст большую строгость общению Emacs и GDB. А с EIEIO ещё
и всякое наследование, ну почти все CLOS-овые дела в общем.
Сейчас я просто перевожу всю структуру из ответа MI в списки. Когда я извлекаю из этих списков значения полей, я делаю предположение о том, что там эти поля есть, на основе того, что написано в мануале по GDB/MI и того, что MI выплёвывает на самом деле. Код устроен так, что если в MI поменяется состав выходных записей, моё предположение может стать ошибочным, и код молча сломается. Но зная характер разработки MI, я этого не боюсь :)
С другой стороны, как бы я поступил при использовании defstruct или
EIEIO?
С defstruct/defclass мне потребовалось бы сначала описать схемы
ответов (список наличествующих в них полей). Использумых Емаксом
команд MI много, так что таких описаний (и произведённых от них
конструкторов/селекторов) пришлось бы использовать тоже много.
В то же время, в MI состав ответа для одной и той же команды может
быть неоднородным: например, в выводе команды -break-info для
разных точек останова информация о файле/строке может присутствовать
или нет, в зависимости от того, куда была эта точка останова
поставлена. Вот кусочек:
[{number="1",
type="breakpoint", disp="keep", enabled="y", addr="0x08048458",
at="<printf@plt>",
times="0",original-location="printf"},
{number="2",
type="breakpoint", disp="keep", enabled="y", addr="0x0804859d",
func="main", file="test.c",
fullname="/home/sphinx/.emacs.d/elpa/gdb-mi-0.5/test.c", line="14",
times="0", original-location="test.c:14"}]
Получается, на каждую команду понадобится даже не одна схема, а
несколько, а определять необходимую к использованию придётся во время
исполнения согласно тому, какие поля на самом деле есть в выводе (если
описать в схеме все возможные поля, уменьшится строгость, к которой
мы стремимся при использовании defstruct или defclass)!
Получается, что мы не требуем от вывода MI удовлетворения какому-то
контракту, а выбираем контракт на основе того, что у нас в выводе!
Дополнительные затраты будут связаны с тем, что в MI ответы на самом деле имеют не единичную глубину вложенности, так что потребуется описывать схему для каждого уровня.
Раз возможность повышения строгости кода под вопросом, просто ради
селекторов смысла использовать defstruct или EIEIO я не вижу.
Было бы хорошо, если бы MI был грамотно спроектирован (а не как сейчас) и имелось бы формальное описание всего протокола, по которому бы я мог сгенерировать нужный код на Лиспе. Но всего этого нет, хотя мне, возможно, хотелось бы в будущем сделать что-то на эту тему.
Прежде всего, цитата Алана Перлиса:
The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.
Действительно плохой идеей было использование С-подобной нотации для доступа к моим структурам. Было так:
(fadr-member basket ".apples[0].taste")
=>
"delicious"
При написании этого кода я стремился к компактности и (с привычной для меня точки зрения) наглядности нотации. Когда-то любимые точечки с квадратными скобками придавали стройным рядам Лисп-смайликов пикантность.
Но так делать плохо.
Был однажды тред на тему такой нотации на ЛОР. Использование строк для реализации какой-либо нотации показалось мне «неспортивным» ещё тогда :)
Один из Emacs-хакеров сказал, что такая нотация чужеродна, уродливая и совсем-совсем не круглоскобовская.
Тут же оперативно начатый тред в c.l.l помог мне взглянуть на вещи трезво.
Выбранная мной нотация имеет следующие проблемы:
для обработки приходилось использовать операции на строках и регулярные выражения, которые чужеродны Лиспу, в котором принято оперировать символами и списками (отсюда дублирование («duplication of process»));
мои строки находятся на некотором удалении от обычных Лисповских кододанных (они как будто прячут что-то под одеждой («vehicle for hiding information»)).
Паскаль Б. указал на неожиданную (не думал о таком раньше) для меня проблему с инъекцией вредоносного кода в макросах.
Забавно, но в Emacs есть пакет bindat, который, казалось бы,
предназначен для работы с какими-то там упакованными бинарными
данными. Но в его составе нашлась функция bindat-get-field, которая
делает то же самое, что fadr-member, только с нормальным синтаксисом
(никаких строк!):
(bindat-get-field basket 'apples 0 'taste)
=>
"delicious"
Эта нотация не длиннее использовавшейся ранее ни на символ, но при этом хорошо вписывается в окружающую Лисп-среду. Пока что я решил использовать её.
Заглянул в код Eclipse CDT, связанный с MI.
Дерево исходников с глубиной вложенности в более чем десять директорий (ну это, похоже, так везде, где Java). Пиздец.
Четырнадцать тысяч строк мусора на Java. Пиздец.
На каждую MI-команду свой класс, который при этом парсит почти совершенно по факту, без всяких строгих схем (как в моём коде сейчас).
Этот шокирующе многословный и громоздкий пример позволяет мне думать, что в моём коде, наверное, не всё уж так и плохо, а Emacs Lisp не так уж и страшен, как кажется на первый взгляд.
Может я чего ещё и не понимаю в составлении программ, но следовать примеру CDT мне что-то сейчас совсем не хочется. Как и иметь дело с Java в каком-либо виде.
Сегодня я хочу рассказать о весьма полезной для IT-специалистов книге:Tuning IBM System x Servers for Performance
Авторы:
ISBN: 0738489794
IBM Form Number: SG24-5287-04
Количество страниц: 1098
Язык: Английский
Издание: Fifth edition, февраль 2007
Издатель: IBM Redbooks
С момента выхода десятой версии флешплеера, пользователи социальной сети «В контакте», использующие Linux, столкнулись с проблемой отправки граффити. Поскольку рассчитывать на отзывчивость разработчиков не приходиться, нужно выходить из положения самостоятельно.
До недавнего времени эта проблема решалась откатом на девятую версию флешплеера, но сейчас есть, на мой взгляд, более прогрессивный метод, позволяющий отправлять граффити из десятой версии.
Для этого нужно всего лишь установить этот userscript с помощью Greasemonkey (работу в Opera не проверял).
Прошу прощения за тормоза
Представляю вашему вниманию первый полноценный выпуск ZTC (Zabbix Templates Collection) - набора шаблонов и UserParameter скриптов zabbix для мониторинга доступности и производительносити серверов.
В этой версии включены шаблоны для общего мониторинга Linux, а также мониторинга PostgreSQL, PostgreSQL+Slony и nginx запущеных под Linux.
Я надеюсь, что это будет кому-нибудь полезно, и жду отзывов, багрепортов, запросов новых функций и патчей в trac, комментарии к этой записи или любым другим способом.

##IBM
IPSec ID xxxxxxxxx
IPSec gateway xx.xx.xx.xx
IPSec secret xxxxxxxxxxxx
Xauth username xxxxxxxxxxx
Xauth password xxxxxxxxxxxx
IKE Authmode psk
DPD idle timeout (our side) 0
##Scnsoft
IPSec ID xxxxxxxxxxxx
IPSec gateway xxxxxxxxxxxx
IPSec secret xxxxxxxxxxxxx
Enable Single DES
Xauth username xxxxxxxxxxx
Xauth password xxxxxxxxxxxxxx
CA-File /etc/vpnc/scnsoft.pem
IKE Authmode hybrid
Connect Banner:
| WELCOME TO SCIENCESOFT NETWORK!
|
vpnc: quick mode response rejected: (ISAKMP_N_INVALID_MESSAGE_ID)(9)
this means the concentrator did not like what we had to offer.
Possible reasons are:
* concentrator configured to require a firewall
this locks out even Cisco clients on any platform expect windows
which is an obvious security improvment. There is no workaround (yet).
* concentrator configured to require IP compression
this is not yet supported by vpnc.
Note: the Cisco Concentrator Documentation recommends against using
compression, expect on low-bandwith (read: ISDN) links, because it
uses much CPU-resources on the concentrator
by Sergei Danilov (noreply@blogger.com) at 26.06.2009 15:48:46