Подробно это описано в АрчВики по следующим ссылкам:
Рекомендую использовать первый способ, а ещё - подкорректировать вики, у меня пока руки не доходят.
Беда в том, что меню генерируется без картинок. Пошаманив немного, а если быть точнее - подсмотрев в Mandriva 2009.1 как это сделано, сделал небольшой патч для xdg_menu который добавляет иконки в меню:
--- xdg_menu.old 2009-10-08 15:27:26.387920020 +1100
@@ -65,6 +65,89 @@
}
}
+sub findicon
+{
+
+# my $theme = "hicolor";
+
+ my $iconname = shift;
+
+
+ my $home = $ENV{"HOME"};
+ my $xdg_data_dirs = $ENV{"XDG_DATA_DIRS"};
+
+ my (@xdg_data_dirs);
+ @xdg_data_dirs = split(":",$xdg_data_dirs);
+
+ my (@icon_search_path);
+
+ my (@categorylist);
+ @categorylist = ("apps", "places", "devices", "actions", "animations", "categories", "emblems", "emotes", "filesystems", "intl", "mimetypes", "status", "stock");
+
+ my (@sizelist);
+ @sizelist = (16, 22, 24, 26, 32, 36, 48, 64, 72, 128, 192, 256);
+
+ my $thisdir = $home."/.icons";
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+ foreach my $dir (@xdg_data_dirs)
+ {
+ my $theme = "hicolor";
+ my $size;
+ my $category;
+ foreach $size (@sizelist)
+ {
+ foreach $category (@categorylist)
+ {
+ $thisdir = $dir."/icons/".$theme."/".$size."x".$size."/".$category;
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+ }
+ }
+ $thisdir = $dir."/icons/mini";
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+ $thisdir = $dir."/icons";
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+ $thisdir = $dir."/icons/large";
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+ $theme = "gnome";
+ foreach $size (@sizelist)
+ {
+ foreach $category (@categorylist)
+ {
+ $thisdir = $dir."/icons/".$theme."/".$size."x".$size."/".$category;
+ ( -d $thisdir ) && push @icon_search_path, $thisdir;
+
+ }
+ }
+ }
+
+ push @icon_search_path, "/usr/share/pixmaps";
+
+ my $filename;
+
+ #if ( -f $iconname )
+ #{
+ # return $iconname;
+ #}
+ #else
+ {
+
+ foreach my $dir (@icon_search_path)
+ {
+ foreach my $ext ('','.png','.xpm')
+ {
+ $filename = $dir."/".$iconname.$ext;
+ ( -f $filename ) && return $filename;
+ }
+ }
+ }
+}
+
+sub add_png_extension_if_needed ($)
+{
+ my ($f) = @_;
+ return $f =~ /<br/>.(png|xpm|svg)$/ ? $f : "$f.png";
+}
+
sub scan_AppDir ($$;$)
{
my ($pool, $dir, $topdir) = @_;
@@ -1565,11 +1648,13 @@
$indent = 0 unless defined $indent;
my $menu_name = $menu->{'PrepName'};
+ #my $menu_icon = $menu->{'PrepIcon'} || "folder" ;
+ my $menu_icon = findicon($menu->{'PrepIcon'} || "folder");
if($indent)
{
$output .= ' ' x $indent;
1. $output .= "menu <br/>"$menu_name<br/>" folder {<br/>n";
+ $output .= "menu <br/>"$menu_name<br/>" $menu_icon {<br/>n";
}
foreach my $entry (@{$menu->{'entries'}})
@@ -1580,9 +1665,10 @@
my $name = $desktop->{'PrepName'};
my $exec = $desktop->{'PrepExec'};
+ my $icon = findicon(add_png_extension_if_needed($desktop->{'Icon'})) || "-";
$output .= ' ' x $indent;
1. $output .= " prog <br/>"$name<br/>" none $exec<br/>n";
+ $output .= " prog <br/>"$name<br/>" $icon $exec<br/>n";
}
elsif ($entry->{type} eq 'menu')
{
У меня получилось примерно следующее:

Наболело, размещаю тут копию письма на адреса mail@expresspk.ru и primexpress@mail.ru (взяты с http://expresspk.ru) с копией на info@primamedia.ru
Предлагаю разместить ссылку на этот пост на всех доступных вам ресурсах. А так же писать свои комментарии в адрес ЭкспрессПК.
Доброй ночи.
Ребата, вы совсем… … отменять последние электрички?
Теперь что бы сходить в поход на выходные, куда нить на Скалистую или Воробья, обратно нужно бегом
бежать, что бы успеть на ЕДИНСТВЕННУЮ вечернюю электричку? или есть какой другой способ выбраться
из Красноармейского с рюкзаком под 25 кг за спиной?
А из города? Ладно, убрали электричку в 21:40, ерунда, что теперь, после работы с девушкой в кино не
сходить, потому как живешь на угольной, последний автобус примерно в 20:00, а более-менее хорошее
кино идет часа два, а ещё и добраться от кинотеатра нужно. Вы плюнули, мы - утерлись. Второй раз,
в первый было, когда днем электричек стало практически незаметно.
Но когда отменяется и электричка на 20.30 из центра, это уже смачный харчок (и не говорите, что
мол, Чуркинская осталась, до Моргородка из центра, ещё добраться нужно, по пробкам, сколько
времени теряем?). Или что, нету никакой на вас управы, и можете творить что хотите? Терпеть хамство
контроллеров? Хотя их ещё понять можно, вы, понятия не имею, как вас прилично называть можно,
сидите далеко, а им аплеухи достаются за ваши творения. А нам, ночевать на лавочке или платить по
600-800 рублей за такси до Угольной? А если в Артеме или Надеждинске человек живет?
Повторюсь с вопросом: какие альтернативные пути добраться домой на Угольную, вечером из
Владивостока, хотя я чертовски некорректен: Угольная - это Советский район, г.Владивстока, так что,
просто из одного конца Советского района (Вторая речка) до другого? Сверхдорогое такси? А сделать
это же днем? На марштурке за 60 рублей? или на забитом, как сардины в бочку, 102 маршруте, который
тоже ходит не часто и намного дольше?
PS копию письма размещаю у себя в блоге http://hatred.homelinux.net в открытом доступе.
–
Пытающийся найти к вам хоть каплю уважения,
Alexander Drozdov
Покрутил тут ардуино,точнее прикручивал к нему ЖКИ, для него хоть и есть готовая библиотека, но хотелось разобраться с даташитом и сделать по описанию (задача удалась процентов на 90, т.к. подглядывать в исходники библиотеки пришлось, но, как в итоге оказалось, из-за небольшой ошибки в схемотехнике,так бы моё работать начало).
Но суть не в том, там команды формируются битами и битами же в байте задаются её параметры. По классике жанра делаются примерно такие дефайны в шестнадцатеричном виде:
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
или в восьмеричном:
#define BIT0 0001
#define BIT1 0002
#define BIT2 0004
#define BIT3 0010
#define BIT4 0020
#define BIT5 0040
#define BIT6 0100
#define BIT7 0200
тут нетрудно проследить закономерности, разделив биты в группы по 4 (в hex представлении) или по 3 (начиная с нулевого, в oct представлении).
Но голова не резиновая, решил поискать, а не придумали что в C/C++ для непосредственного задания констант в битовом представлении.
Оказалось - придумали, по крайней мере в компиляторах GCC и GCC-AVR можно задавать непосредственно битовое число, используя префикс 0b
:
#define BIT0 0b00000001
#define BIT1 0b00000010
#define BIT2 0b00000100
#define BIT3 0b00001000
#define BIT4 0b00010000
#define BIT5 0b00100000
#define BIT6 0b01000000
#define BIT7 0b10000000
или (кому как более наглядно):
#define BIT0 0b1
#define BIT1 0b10
#define BIT2 0b100
#define BIT3 0b1000
#define BIT4 0b10000
#define BIT5 0b100000
#define BIT6 0b1000000
#define BIT7 0b10000000
Не ручаюсь абсолютно на совместимость с другими компиляторами (да и нет её скорее всего), но интересно было бы узнать как там обстоят дела с подобной bin-нотацией констант.
PS да, объединять потом в нужное число или исключать нужные биты:
unsigned char c1 = BIT0 | BIT4 | BIT7; /* включить биты */
unsigned char c2 = c1 ^ BIT4; /*выключить биты */
if(c1 & BIT4) {} /* проверить установку бита */
UPD:
Вот выдержка из документа по GCC, страница 556:
6.56 Binary constants using the ‘0b’ prefix
nteger constants can be written as binary constants, consisting of a sequence of ‘0’ and ‘1’ digits, prefixed by ‘0b’ or ‘0B’. This is particularly useful in environments that operate a lot on the bit-level (like microcontrollers).
Секция 6 этого документа зовется “Extensions to the C Language Family”, в начале этой секции говорится:
GNU C provides several language features not found in ISO standard C. (The ‘-pedantic’ option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro GNUC, which is always defined under GCC.
These extensions are available in C and Objective-C. Most of them are also available in C++. See Chapter 7 [Extensions to the C++ Language], page 547, for extensions that apply only to C++.
Some features that are in ISO C99 but not C89 or C++ are also, as extensions, accepted by GCC in C89 mode and in C++.
сиречь, если захотите публиковать программу, скомпилируйте её с параметром -pedantic
, проверьте все предупреждения и… или давайте рекомендации или используйте препроцессорные директивы.
Потребовалось сверлить маленькие отверстия в печатной плате. Обычно для таких дел используется микродрель, которая представляет собой моторчик с насаженным цанговым патроном в который уже крепятся сверла.
Посмотрел в Омеге, такая там стоит около 700 рублей, пока соотношение - нужности/цены не в её пользу, но отверстия сверлить нужно. Купил сверла 0.5, 0.7 и 1.0 мм (нужно ещё будет 1.5 мм взять), нашел дома двигатель (мощный движок EG1000 от привода ЭПО), сбил шестеренку…
И тут стал вопрос - а как сверла то крепить? Тут вспомнил, что в наборе “юного химика”, у меня должен быть шприц с иглой, снял иглу, ухватил крепко тонкогубцами и стянул пластиковое основание, примерил - туда в аккурат с натягом взалит 1мм сверло, и то хорошо, капнул каплю лактайта, насадил сверло.
На шток двигателя намотал немного изоленты, промазав лактайтом (лучше если усадить термоусадки, но у меня подходяшего диаметра не оказалось).
Cобрал конструкцию, питание подал 12В от старого блока питания, ещё AT. Вращение получилось соосное, попробовал - нормально сверлит дерево, стеклотекстолит в т.ч. с фольгой, так что пока на первое время хватит. Вот только движок сильно греется, так что нужно делать перерывы или сменить на менее мощный.
Конструкция в сборе:

UPD:
Но в Омеге купил таки микродрель, хотя теперь мало-мало плююсь, вал там из какого-то сверх-мягкого материала, нужно будет отдельно патрон взять на мощный мотор, если что суровое сверлить :)
Вчера перебирал завалы своей радиоэлектронной элементной базы. Походу копания попались довольно забавные вещички, некоторым место в музее уже :)
Фото смотреть подкатом.
Искал, что себе подключить на послушать на работе, в результате ничего подходящего не нашел. Сделал на связке mpd+icecast2 (почитать можно тут и тут).
Адрес: http://hatred.homelinux.net:8000
Добавить в проигрыватель: http://hatred.homelinux.net:8000/radio.ogg
Пару заметок для ArchLinux:
- создать директорию: /var/log/icecast и сменить владельца на nobody
- прописать в загрузке сначала icecast, потом mpd
Ну и запустил вещание свободной музыки с Magnitune, добавлял при помощи плагина к gmpc - gmpc-magnatune.
ЗЫ сегодня в эфире джаз :)
Купил давно, да вот только руки дошли.
http://headshotboy.livejournal.com/93626.html пейсатель Багиров пилит сук на котором сидит, поможем сохранить ветку - поругаем его.
Да, к нацикам, как и к обратному их проявлению, ровно как и другим радикалам отношения не имею )
Иногда сайт переезжает на новое место, часто при этом структура не меняется и возникает необходимость как-то довести до пользователя, что данное событие состоялось. Можно просто уведомить в новостях, это безусловно нужно, но я использовал следующий вариант…
Для случая использования apache+php (другие варианты возможно будут рассмотрены, особо интересно на nginx+perl):
В корне сайта создаем файлы .htaccess и index.php
.htaccess:
RewriteEngine on
RewriteBase /
RewriteRule ^$ index.php [L]
RewriteRule (.*) index.php [QSA,L]
index.php:
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Refresh" content="10;http://linuxdv.ru<?=$_SERVER['REQUEST_URI']?>">
</head>
<body>
<div align="center">
<h1>Сайт переехал</h1>
Сайт переехал на новый хостинг, предоставленный компанией <a href="http://linuxcenter-dv.ru">Линуксцентр ДВ</a><br />
Через 10 секунд Вы должны быть перенаправлены на новый адрес, если Ваш браузер не поддерживает перенаправление,
нажмите на ссылку ниже для перехода на новую страницу:<br />
<strong>
<a href="http://linuxdv.ru<?=$_SERVER['REQUEST_URI']?>">http://linuxdv.ru<?=$_SERVER['REQUEST_URI']?></a><br />
</strong>
</div>
</body>
Пример работы можно посмотреть по следующему адресу (может стать уже неактивным): http://vl-lug.homelinux.net
Реализовано измерение площадей, написаное базовое руководство пользователя.
Подспутно некоторая оптимизация по скорости.
Страница для скачивания тут
На прошлых выходных второй раз за этот год гоняли на о.Пуятин.
День первый, суббота. К 12 подъежаю на «Mon Plaisir», на борту: Миха, девченки с ним: Галя и Саша, Леха (Петров) и его подруга, гм память на имена - хреновая, Даша (?). Через некоторое время подъезжает кеп, Люба, Саша, его жена и доча. Ещё через некоторе время отходим, дизель не заводится с кнопки - разбираюсь - хреновый контакт на фишке, зачищаю, собираю, вроде нормально. Отходим на дизеле, на набережной забираем Серегу, его жену Аню с дочей. Идем в бухту Новик, в скором времени поднимаем паруса идем под ними и по дизелем, потом его глушим, все нормально. С парусами имел дело впервые. Дальше не интересно: доходим до месте, сгружаем Серегу с семейством у его яхты, сами идем дальше, становимся на якорь, все купаются загорают. Вечером возвращаемся на базу. Делаю тумблер для помпы, откачиваю воду, переносной помпой выкачиваю воду из-под аккумуляторов. Сбегал в мазагин, купил немного пищи, на газовой печке побыстрому сготовил перекус, дождался пока вода откачается, лег спать. час ночи.
День второй, воскресение. Около 8 утра звонит кеп, говорит что будет через полчаса, интересуется что по провизии, даёт указание доготовить оставшиеся пельмени, запустить холодильник, и положить туда, сделал. Сегодня оказывается везем на отдых туристов, из экипажа только кеп и я. Сборы долго не затянулись, отдали концы, зашли на нефтебазу, залили танки. Пока шли до набережной, вымыл палубу. Загрузили туристов - баулов и еды на неделю наверное, там к нам присоединился старый друг Лехи - Володя, с женой - Олесей. Такой гурьбой и поли туда же где были в субботу, выгрузили пассажиров - с выгрузкой помогал Серега со своей надувной лодкой. Через некоторое время он собрался сходить во владивосток, нам под ответственность оставил лодку.
Тут пошло начало начал, точнее полного 3.14здеца.
Леха, уже чуть под шофе - оказывается мало нужно, хотя пили вино. Кеп даёт добро туристам покататься на лодке, на мои замечания по поводу просьбы Сергея, что лодку только если вещи с берега возить - ставшая классической на окончание дня фраза: я капитан, я знаю что делаю. Хорошо, ты капитан - я дурак. Далее ничего не предвещало беды, тут крик Володи: “Саня помоги!” знаю что собирался малую из туристов с яхты на берег на её круге-уточке оттранспортировать, доплыла она сюда сама, а обратно - боиться. Я в сортите, вылетаю пулей от туда, на ходу сбрасываю очки и арафатку (плечи прикрыл), ныряю с борта, только потом соображаю что нужно делать - ветром уносит эту самую уточку. За ней метров 400 с передышками гнался - догнал, собираюсь плыть обратно… Кеп к тому времени отдается команду, поднимают якорь и идут типа ко мне на помощь, спасать, значится… Только кеп к этому времени уже зашлифовался пивом, по яхте без качки ходит как будто шторм. Когда ко мне поодошли, даже двигатель не заглушил, на что я зацепился пальцем за кранец, и сильно оттолкнулся от борта - не охото под винт быть затянутым. Спасательный конец, ессесно не готов. Со второго захода уже лучше но и то, только потому, что Володя дизель полностью заглушил. Поднялся на борт.
Небольшая справка: якорь в этот день я бросал два раза, я его вообще на этот день бросал всего два раза. Но на постановку у нас уходило секунт 30-60, пока я протуплю.
Пропущу момент, когда кеп скомандовал бросать якорь, чуть ли не когда мы килем дно шкребли. Я салага, морского дела не знаю, но мне это нравится, и всё что я делаю - я пытаюсь понимать: поймешь - учить не нужно, будет как само собой разумеющееся. Ещё пытюсь выполнять команды, но уже понимать их перестаю.
Кеп какого-то черта гоняется по бухте, мучает резкими реверсами дизель (последствия показали себя чуть позже): мы то уйдем то на середину бухты, то вернемся и опять чуть не шкребем килем дно, наконец, когда в очередной раз напомнил о себе словами: “Кеп, ну якорь то мы бросать будем?”, была команда: “Бросать якорь!”.
Встали, подошел уже Серега, смотрел на наши лавировки, тихо, наверное, офигивал. Начали забирать туристов на борт. И тут кеп опять отличился: трап у нас на корме, там же - выхлопная труба дизеля, людей подвозит Серега, вещи, а он играется с дизелем, на замечания по поводу - люди же этим дышат, отвечает классической фразой номер 1 и: “а мне нравится этот звук”.
С горем пополам загрузились, отходим. Побережья я не знаю. Но где-то посередине бухты, меня что-то толкает спуститься вниз и что я вижу: перья дыма, командую всем кто внизу выметываться на палубу, срываю короба с дизеля, начинает валить дым не по детски, глаза режет, дышать трудно, быстро соображаю где моя арафатка, повязываю на лицо, дышать проще. Передвигаюсь на корточках: тут дыма маньше, глаза не так режет. По факту: при включенном дизеле начинает плавится шланг выхлопа, внизу он прогорел и весь выхлоп шел во внутрь, это ещё не все: остатки отработки на дизеле начинали просто закипать, возможно - сдохло охлаждение, но я в дизелях не в зуб ногой. Кроме того, если поддавать газ он просто скачет взад-вперед как бешенный, мне даже страшно стало, если он вылетит со станины. Двигатель остановили, проходил Серега, не согласился взять нас на буксир, я в субботу видел как паруся ставят, опыта - такой маленький пушной зверек.
Начинаю готовить паруса к подъему, ветер - фордевинд, но слабый! Генуи нет, спинакера нет (да и поставил бы я их???) уже когда начинаю поднимать стаксель (а в какой последовательности нужно поднимать паруса???), и тут только слышу: поднять грот. прошлом уже 5 минут. поднимаю стаксель, пока болтается как… в стакане. Поднимаю грот, одного и туристов прошу что бы следил, что бы не вылетал из ликпаза. Подняли. Сделали бабочку. Какие ещё настройки, как и что ещё делать оптимально - я не знаю!
Но ход появился, по лагу - около 1.5, иногда - 2х узлов.
Володя позвонил - договорился с другом, жену нужно возвращать домой. Нужно так нужно, хотя его поддержка не помешала бы: кепу плохо станет или отрубится, и что мне делать? методом тыка учиться управлять яхтой? на которой из аппаратуры - лаг и эхолот. Ходовые огни без светофильтров. Топовые ещё не заведены. А уже темнеет.
Ладно, туристы тоже вызванивают кого-то - их всех снимают. Пока снимают, Володя с другом возвращатся, предлагают взять на буксир, от меня просят только что бы я на руль встал: если вдруг сеть какую наматают на винт что бы успел отвернуть, дабы не проторанить.
Нахожу конец, наматваю на утку, на насу, конец передаю на катер. Кеп уже с пеной у рта орет, кто приказал, классическая фраза номер 1 и так далее. Чуть не лезет лицо стучать. С Володец пытаемся его утихомирить, пытаемся объяснить. Толку ноль. Тут уже звучат приказы: с яхты вон, за борт. Тут уже и я залупился, собрал вещи и перешел с Володей на катер, конец буксирный сбросили.
Так мы шли послеживая за ним. Он отрубил все огни, летучий голандец. Около Елены надеялись, что на мель попадет (на всякий пожарный подготовил якорь, оставалось только сбросить), да переночует, а утром Владимир Васильевич подойдет и вместе мало-мало дойдут. Повезло, буквально по бровка продрейфовал. Слава на катере аж присвиснул.
В общем проследили до куда могли, они на катере отправились на стоянку на такаревскую кошку, там высадились, собрались, меня добросили до морвокзала, там я словил такси и на моргодок на базу, буквально минут через 20-30 подошел и он, на входе попытался завести дизель, чем его окончательно отправил на тот свет, повезло, пришвартовался.
Васильич ничего особо не говорил, обранил одну фразу, типа - очко за такие геройства тебе вырвать нужно.
А я вот теперь в сомненьях: правильно сделал что покинул яхту, или нет, даже больше склоняюсь, что нет, но это же звездец…
ЗЫ походу сезон в этом году закрыт. 2 выхода после ремонта. рекорд.
Тут столкнулся с проблемой: появляются временами у меня файлики, документики подготовленный в ворде с расширением *.doc
и вот незадача, когда, допустим в Thunar’е пытаемся их запустить - пытается загружать в текстовый редактор mousepad. Через свойства задаешь окрывать в OpenOffice Writer, так после этого все текстовые файлы начинают открываться в нем, почесал репу…
запустил mime-editor, смотрю тип text/plain и что я вижу? А вижу, что в условиях определения типа стоит расширение *.doc
… какого… При этом существует тип application/msword который делает что нужно.
Ползу в /usr/share/mime делаю
grep -R ‘*.doc’ ./
Смотрю где упоминается ‘*.doc’ и что теперь я вижу? Добрые люди из KDE сделали такое в файлике packages/kde.xml
:
<mime-type type="text/plain"> <!-- As discussed on xdg list, *.doc is needed here for disambiguation -->
<glob pattern="*.doc"/>
</mime-type>
Пусть сами себе там дискутируют, взял и удалил нафиг эту секцию, после чего сделал
sudo update-mime-database /usr/share/mime
и перезапустил xfce, теперь все нормально.
Если вы сюда пришли, значит, что такое Alfresco уже знаете, если нет, можно почитать:
Что бы не повторяться, буду описывать только те моменты, с которыми я столкнулся и там ответов не нашел.
Начнем.
Установите пакет mutagen:
pacman -Sy mutagen
В каталоге с вашей коллекцией mp3 файлов выполните команду:
find -iname ‘*.mp3’ -print0 | xargs -0 mid3iconv -eCP1251 –remove-v1
Команда перекодирует старые теги из кодировки CP1251 в UTF8, запишет тег версии id3v2.4 и удалит теги первой версии.
Минус способа: если коллекция используется совместно с проигрывателями из альтернативной системы, не все они понимают теги формата 2.4. Поведение при этом различное: от игнорирования тега, до ругани на битый файл.
Hint: в mpd после этого нужно перечитать список проигрывания, например так:
mpc update (дождитесь завершения, статус можно смотреть запуская mpc без параметров)
mpc clear
mpc listall | mpc add
Опционально:
mpc rm all
mpc save all
P.S. Попутно обновил страницу интернационализации на ArchWiki