k001
k001
:...
Back Viewing 20 - 40 Forward
викторина

В каком случае программа mkfs (точнее даже mkfs.vfat) может выдать ошибку Not a directory (ENOTDIR)? Комменты скринятся до вечера понедельника (11 января).

Tags: ,
ПТ Санс (PT Sans) rpm for fedora

Компания ParaType на днях взяла да и объявила "о выходе в свет шрифта ПТ Санс—первой общенациональной бесплатной шрифтовой гарнитуры", да ещё и под открытой лицензией. Смущает только отсутствие лицензии на английском языке.

А я сегодня взял да и сделал пакетик для Федоры (совсем чуть-чуть, одним глазком подглядев на спек из ALTLinux). Вдруг кому надо, берите:

pt-sans-fonts.spec (1.4K)
pt-sans-fonts-2009.12-1.fc10.src.rpm (1.7М)
pt-sans-fonts-2009.12-1.fc10.noarch.rpm (2.0М)

В версии указан префикс fc10, но должно работать и с более свежими Федорами.

"Microsoft TrueType core fonts for Web" for Fedora Linux

Однажды люди в Microsoft сделали хорошее делода ну? )

Вот спек-файл: microsoft-core-fonts.spec (5K).

Чтобы поставить себе это на Федору, вот примерно что нужно сделать:
wget http://kir.sacred.ru/lj/microsoft-core-fonts.spec
yum install fontpackages-devel xorg-x11-font-utils wget cabextract
rpmbuild -bb microsoft-core-fonts.spec

(если всё сложилось хорошо, то где-то среди последних строчек будет строка, начинающаяся со слова Wrote:, а после неё имя файла. Вот возьмите это имя файла (полное, вместе с путём) и напишите:
rpm -ihv имя_файла

и снова иНЖАЛИД ДЕЖИЦЕ

Про иНЖАЛИД ДЕЖИЦЕ я уже писал. Про то, как перекодировать кракозябры -- тоже.

Теперь для ностальгирующих советских инженеров-программистов -- как получить слова типа иНЖАЛИД ДЕЖИЦЕ. Довольно просто:

$ echo Invalid device | iconv -f KOI-7
иНЖАЛИД ДЕЖИЦЕ
$ echo Hello, world! | iconv -f KOI-7
хЕЛЛО, ВОРЛД!
$ echo Bad command or file name | iconv -f KOI-7
бАД ЦОММАНД ОР ФИЛЕ НАМЕ

Вот не помню, какие там были ещё ошибки. А вот, нагуглил:
АРЕ ЫОУ СУРЕ?

Кто-нибудь ещё что-нибудь помнит?

Tags: , ,
про юниксы и интернеты

[info]vitus_wagner@lj пишет, что примерно в эти дни 15 лет назад "проникал в ночи в одну из лабораторий Вагенингенского Университета на предмет полазить по интернету посредством стоявшей там рабочей станции SGI". Я вспомнил и свои истории, которые в основном уже описаны в этом журнале.

Впервые с юниксами я столкнулся впервые примерно в 1995 году

С Интернетом, увы, впервые познакомился несколько позднее, году в 1996 примерно, причём было это в Ярославле, в
фирме "Кари". Я тогда работал в их ухтинском филиале, занимаясь по большей части локальными сетями (разработкой проектов и иногда даже их воплощением), и попал в командировку в "головной" офис (кажется, изучали СКС от AT&T, плюс ещё был курс по Sun Solaris). Помню, что мне посоветовали начать браузинг с сайта www.yahoo.com. В то время Гугла ещё не было, альтависта искала посредственно, а интернет был (по нынешним меркам) не очень большой, поэтому тематический древовидный каталог сайтов был довольно удобным средством. Был вечер, стоял ящик "Ярпива", которым с нами любезно поделились, и я долго тыкал по ссылкам, читая всякое разное. Помню, смотрел разные галереи ASCII Art'a.

А в следующем, 1997 году я уже делал интернет в нашем городе, чуть подробнее про это написано тут

VPS == OpenVZ ?

Забавно, второй раз уже встречаю, когда человек говорит "у меня VPS" и при этом как бы подразумевает, что это OpenVZ (ну или Parallels [Virtuozzo] Containers).

Ну, скажем, как если бы кто-то говорил "у меня Линукс" и при этом подразумевалось бы, что это, скажем, Ubuntu или там, я не знаю, Red Hat. Так ведь не делают обычно, пишут, какой именно Линукс, какой дистрибутив. А с OpenVZ так делают -- "у меня VPS" с большой (но не 100%) вероятностью означает "у меня OpenVZ" или "У меня Parallels Containers".

В прошлый раз мы выясняли по всяким признакам, OpenVZ ли это (ссылку лень искать). В этот раз товарищ сразу говорит про tcpsndbuf, из чего мы понимаем, что это оно.

Наверное, слово VPS уже стало эдаким нарицательным брендом, как, скажем, термос. Жалко, что VPS, а не контейнер или VE. Не люблю я слово VPS, от него за версту несёт маркетингом. Впрочем, есть ещё хуже слово -- VDS, его, наверное, придумали маркетоиды, которые решили, что VPS -- это круто, но всё ещё недостаточно.

А вот VE (Virtual Environment) неплохой термин, плюс коннотации к VM (Virtual Machine).

Tags: ,
Chrome OS

Сегодня на работе целый день ковырялся с Chrome OS. Ну что, это такая штука на базе Ubuntu 9.04 "Karmic Koala" (только ядро 2.6.30), какие-то патчи от Moblin на предмет быстрой загрузки и т.п., оконный менеджер полноэкранный и без декораций, но зато с эффектами а-ля Compiz, ну и центральным компонентом, конечно, браузер Google Chrome.

Чтобы залогиниться, надобно написать свой аккаунт в гугле и пароль от него -- для этого там написан специальный модуль PAM. Локальной аутентификации в релиз-версиях нет (впрочем, в девелоперской можно собрать).

Плюс я его попробовал собрать. Собирается довольно быстро (за счёт того, что там примерно штук 30 пакетов "свои" (точнее, в основном, чужие, но со своими патчами, поэтому и пересобираются), а остальное тащится из репозитория убунты.

Осталось двоякое ощущение. С одной стороны, вроде, прикольная штука -- быстро грузится (быстрее даже, чем eeepc), красивая, работает и т.п., ну и вообще молодцы! С другой стороны, осталось ощущение какой-то наколенной поделки, собранной по частям. Хотя, может, это для того, чтобы всё быстро сделать.

Ну и, конечно, мне такая "облачная" система, где всё лежит в Интернете, а ОС -- это просто такой интернет-терминал, не очень нужна. Я пока не готов, чтобы вот совсем всё было в Интернете. Хочу картинки, фильмы, музыку, программы, документы иметь и локально тоже. Вот когда интернет будет бесконечно быстрым и ужасно дешёвым -- тогда ещё можно будет подумать.

Tags: ,
gphoto bug

В продолжение этого эпического фейла. Репозиторий gphoto не осилил, купил себе новый кард-ридер за 141 рубль.

До этого ещё выяснил, что люди, оказывается, тот баг пофиксили только в девел ветке, а тем временем выпустили ещё штук 5-6 "стейбл" релизов. Пофиксить баг в стабильной ветке им в голову почему-то не пришло.

oh sh*t

Just came across this stupid bug in gPhoto. The problem is it can't work with directories having more than 1024 files (i.e. images). Looks like we are living in a time when directories can have more than 1024 files, who the hell could have imagined that? I can easily see a developer saying "1024 should be more than enough for everyone!"

And no, they don't have a released version with this bug fixed, nor they have a link to the patch in the bugreport so I could apply it. The comment (dated August, 2008) just says "its actually already fixed for quite some time".

Another bug is in camera itself -- it can only work in PTP2 mode, no USB storage mode at all. Say hello to Canon!

Finally, one of my cardreaders is broken, and another one I left in the office. I won't even touch this with a stick otherwise.

mencoder for navi

Сам всё время забываю эти длинные командные строки, поэтому напишу сюда.

Вот как перекодировать видео для того, чтобы смотреть его на навигаторе (320х240 WinCE5):

mencoder -vf scale -zoom -xy 320 -oac lavc -ovc lavc -lavcopts \
acodec=mp2:abitrate=128:vcodec=mpeg4:vbitrate=400 \
-o outfile.mp4 infile.avi


Может, конечно, можно как-то поиграться и сделать в два прохода, или аудиокодек получше взять... Но это уже работает.

Tags: , ,
git stash

А ещё в новых версиях GIT появилась отличная команда git stash. Это когда у вас есть локальные модификации, которые коммитить ещё рано (или совсем не нужно), а нужен чистый репозиторий. Так вот, обычно я откладывал в сторону эти модификации так:

git diff > my.diff
git diff | patch -p1 -R


А теперь это можно делать так:

git stash

Ну и там есть команды, чтобы посмотреть отложенное в сторону, применить его, и т.д.

Update: ну да, не "в новыз версиях", а несколько раньше. Эта фича появилась в середине 2007 года. Чёрт его знает, почему я про это сейчас пишу. Наверное, потому, что с недавних пор git в некоторых случаях предлагает явно ей воспользоваться.

Tags: , ,
проклятье Windows

У меня не было дома Windows, потом на одном компьютере появилась (после того, как в команде rm -f /tmp после слеша поставили пробел).

Теперь она периодически заражается вирусами. Я их периодически лечу. Они появляются снова. Эту неравную и бесполезную битву я проигрываю.

Linux определённым кругам пользователей в моём доме не подходит, потому что в нём не работает онлайн(!) игра Fragoria. Казалось бы, ей нужен браузер и Adobe Flash, всё это есть, но после ввода логина и пароля появляется пустой экран (HTML source тоже пустой).

Домашние на меня злятся, я сам на себя злюсь (потому что негоже быть сапожником без сапог), но как-то кардинально решить проблему не получается.

Tags: ,
приколы нашего комьюнити

Человек задаёт вопрос в следующей форме:

Задачка
Можно ли (сделать так и эдак)?


Естественно, много кто отвечает одним словом "можно". Формально на заданный вопрос ответ исчерпывающий. Я тоже еле-еле удержался, чтобы тоже так не ответить.

А вы бы как ответили?

Tags: ,
wiki spam checker

За обедом придумали с коллегой некий антиспам, позволяющий выставить оценку изменению вики-страницы. Ну, то есть, если изменение хорошее, то оценка положительная, а если плохое, то отрицательная. Принцип довольно простой, но я не хочу тут его описывать, чтобы спамеры не читали.

Тулза представляет из себя дикую смесь shell-скриптов с вкраплениями sed, awk, sort и т.п. Воткнул вызов в крон, получаю отчёты по почте. Вот пример отчёта:

-274.38	http://wiki.openvz.org/w/index.php?title=Talk:Main_Page&oldid=7616&diff=7852
  -8.00	http://wiki.openvz.org/w/index.php?title=Compiling_the_OpenVZ_kernel_(the_Debian_way)&oldid=6641&diff=7857
   0.00	http://wiki.openvz.org/w/index.php?title=Main_Page&oldid=7484&diff=7854
   0.00	http://wiki.openvz.org/w/index.php?title=Template:List_of_precreated_contrib_templates&oldid=7572&diff=7856
  31.22	http://wiki.openvz.org/w/index.php?title=Download_mirrors&oldid=7467&diff=7855
 100.67	http://wiki.openvz.org/w/index.php?title=A_managed_OpenVZ_installation&oldid=7834&diff=7846
 140.15	http://wiki.openvz.org/w/index.php?title=Multiple_network_interfaces_and_ARP_flux&oldid=7835&diff=7847
 187.22	http://wiki.openvz.org/w/index.php?title=Installing_Trixbox_2.0_in_CentOS_VE&oldid=7833&diff=7845
 233.31	http://wiki.openvz.org/w/index.php?title=PPP_in_container&oldid=7836&diff=7848
 274.38	http://wiki.openvz.org/w/index.php?title=Talk:Main_Page&oldid=7852&diff=7853


В каждой строчке оценка изменения и ссылка на него. Отчёт отсортирован так, чтобы вначале были изменения с самыми плохими оценками (более всего похожие на спам, с точки зрения программулины).

Буду примерно месяц эксплуатировать в тестовом режиме, чтобы понять, помогает ли. Пока ощущения скорее положительные.

git-commit --interactive

Открыл для себя git-commit --interactive, позволяет выбрать файлы, а из файлов выбрать ханки, которые надо коммитить. Вполне удобно.

Вот как бывает... (С) Юрий Антонов

Нашёл багу фичу? в glibc. Update: на всякий случай зафайлил #10818 в sources.redhat.com bugzilla.

[kir@kir ~]$ cat null.c
#include <stdio.h>

int main(void) {
fprintf(stdout, "%s\n", NULL);
printf("%s%s\n", NULL, NULL);
printf("%s\n", NULL);
}
[kir@kir ~]$ gcc -o null null.c
[kir@kir ~]$ ./null
(null)
(null)(null)
Segmentation fault


glibc-2.9-3.x86_64
gcc-4.3.2-7.x86_64

А всё потому, что
(1) кто-то слишком умный оптимизирует printf с агрументами ("%s\n", str) до puts(str);
(2) puts(NULL) вызывает strlen(NULL);
(3) последний почему-то сегфолтится.

git-svn rules

Какая, оказывается, чудесная вещь git-svn! Я с её помощью вполне удобно работаю с SVN репозиторием, свободно используя весь "локальный" арсенал git. А как накидаю патчей, говорю две команды

# отложить мои коммиты в сторону
# вытащить всё самое свежее из svn
# положить как коммиты в локальный git
# накатить поверх мои отложенные патчи
git-svn rebase

# закоммитить мои коммиты в удалённый svn repo
git-svn dcommit

О, сколько нам открытий чудных...

Нашёл сегодня в одной, не буду упоминать тут, какой именно, программе следующий код:

if ((fp = fopen(file, "w")) < 0)
...


Удивился, конечно. Видимо, раньше было написано open, или ещё почему. Исправил, конечно. Но не в этом суть.

Более всего удивился тому, что gcc не ругается даже с -Wall. Выяснил, что указатель он приводит к unsigned, поэтому результат сравнения всегда ложен.

Попробовали с коллегой написать так:

unsigned int a;
if (a < 0)
return 1;
return 0;


И опять gcc не ругается, а вместо этого даже с -O0 генерит код, который не делает никаких сравнений, а сразу возвращает результат. То есть, собака, знает, что сравнение бессмысленное, но молчит.

Оказалось, надо ему сказать -Wextra, и уж тогда начинает ругаться. Для второго случая вот так:
warning: comparison of unsigned expression < 0 is always false

cd vs. ssh

Замечал, что иногда пишу cd host.com вместо ssh host.com. А сегодня вот делал наоборот -- писал ssh ~/some/directory и удивлялся, почему не работает комплишен (Tab). Чуть-чуть холодным потом не покрылся, думал, каталог пропал.

Я это к чему? Сеть -- это компьютер! (С)

Tags:
про баш и про даш

В баше можно сделать
. /some/file || exit 1

При этом мы получим, что хотим -- или заинлайним файл /some/file, или выйдем с ошибкой:
a.sh: line 1: /some/file: No such file or directory

Просто и понятно.

А в даше (который в Debian часто стоит шелом по умолчанию) такой фокус не проходит. Самый простой вариант добиться того, что мы делаем выше -- написать
cat /some/file >/dev/null || exit 1
. /some/file || exit 1


(Второй exit 1 тут нужен для совместимости с предыдущим вариантом, если последняя команда в /some/file вернула ненулевой код). Чем плох такой вариант (кроме того, что много писанины и имя файла два раза упоминается)? А тем, что сообщение об ошибке будет менее осмысленное:
cat: /some/file: No such file or directory

Казалось бы, причём тут cat?

Вариантом, работающим в обеих шеллах, будет что-то вроде
if test -f /some/file; then
echo "/some/file: No such file or directory"
exit 1
fi
. /some/file


Вроде всё хорошо (кроме того, что кода ещё больше, имя файла упоминается уже три раза)? Ан нет! Мы проверили, что файл есть, но не проверили, можно ли его прочитать. Ну, добавим ещё один if... Но даже и это не спасёт нас, потому что системное сообщение об ошибке strerror(ENOENT) мы заменили на своё произвольное, что сводит на нет усилия локализаторов.

Итого -- лучше всего сделать через cat, а юзер пускай догадывается, причём тут cat.

Если у кого есть более кошерный вариант -- расскажите.

Tags: , , ,
Back Viewing 20 - 40 Forward