Hatred's Log Place

DON'T PANIC!

Feb 5, 2010 - 1 minute read - Comments -

Medit из mercurial

Текущая версия замечательного редактора tags:medit?do=showtag&tag=medit|medit это 0.9.4 и она не обновлялась больше года. Решил собрать и попробовать сборку из mercurial, благо, смотря на даты последних изменений можно заметить, что работа ведется:

http://bitbucket.org/muntyan/moo/

Не все гладко - несколько переработан интерфейс, некоторые ошибки так и не исправлены (типа стоит галочка “переносить текст”, а он не переносится, а если убрать - будет переноситься).

Кроме того, сменили систему сборки на cmake, в результате не все доделали, и пришлось сделать два патча и один work-around для того, что бы пакет собрался вообще и с ctags, в частности. Кроме того, правила cmake пока не докрутили для python-plugin, в результате ни консоли питона, ни питоновских команд для пользовательских утилит. Хотя меня не это больше смущает - на питоне сделан терминал был, удобная, иногда, штука.

По питону, есть бага: http://sourceforge.net/tracker/?func=detail&aid=2929703&group_id=167563&atid=843451 будемс следить.

В общем, в результате изысканий, сделал правило для сборки и поместил в AUR: http://aur.archlinux.org/packages.php?ID=34336 там же необходимые патчи, хотя они тривиальны.

Да, рекомендую ознакомиться со справкой к программе, там вы найдете, в частности, как управлять поведением редактора на разных файлах (типа установить ширину отступа и кодировку, делается в манере, схожей с vim)

Feb 2, 2010 - 1 minute read - Comments - programming

C/C++ Coding Style

Наконец дошли руки оформить и свои устоявшиеся привычки кодирования, разложить по полочкам и свести к единому результату, а то читая свои творения некоторые, потом долго приходится волосы приглаживать.

В общем вот: /C/C++ Coding Style

По ходу будет дополняться.

Jan 30, 2010 - 2 minute read - Comments -

Толи лыжи не едут...

В общем, сегодня выбрался наконец попробовать свои деревяшки в район бот-сада. Понял что нужно, однако, учиться :laughing:

Первое что понял - крепление полная опа. Нога ходит и болтается как г в проруби. Для этих лыж нужно резиновую подкладку ложить, иначе… ну не знаю, одни мучения. В общем попробую, если не поможет - буду вообще переосмысливать.

Далее, вообще не понял как идти в подъем %-) ну качусь назад и все, или мазь нужно было положить потеплее, и что с собой её не взял, хотя была положена -2 – -8. На одном подъемчике ноги так разъехались, почти шпагат вышел, мышцу потянул :)

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

Спуск… Да, сначала нужно тормозить научиться и лыжи закапываться и все, ну да, спускался по целине, учился не на лыжне. И вообще поворачивать в движении, а то я тормозить только падением освоился, благо снег мягкий.

Подвели мои трекинговы палки, которые хотел подъюзать вместо лыжных, что-то там поломалось уже и теперь они не фиксируются, а ведь даже года не отходили и походов-то было раз два и обчелся. Как лыжную палку пришлось использоваться обычную палку.

Но позитив есть, хоть и не очень много :) Спасли так же бахилы, когда с лыж слезать приходилось - снега по колено, ноги не промокли, хотя подтаивало.

И на заметку: http://www.sportfamily.ru/podrostok/sky

Jan 26, 2010 - 2 minute read - Comments - linux

Настройка сетевого сканирования

Таска возникла на работе, ничего сложного и по интернетам наверное есть, заметка для себя.

Для Xerox/Samsung МФУ и сканеров рекомендую поставить sane версии не ниже 1.0.20, т.к. там появилась нативная поддержка этих девайсов, в замен глючному Unified Linux Drivers (ULD).

Серверные настройки

Сервер - тот к кому подключен сканер

  1. в /etc/sane.d/dll.conf убираем строки добавленные при установке ULD, обычно содержат в себе слово mfp, добавляем строчку: xerox_mfp
  2. в /etc/sane.d/saned.conf прописываем адреса для которых разрешено сканирование, например, для все сети:192.168.13.0/24
  3. в /etc/xinetd.d/saned disable = yes заменяем на disable = no. Возможно сдесь же, придется исправить группу и пользователя от которого будет стартовать сервер saned.
  4. рестартуем xinetd

Или запускаем saned как сервер. Вот кстати полный конфиг для /etc/xinetd.d/saned:

service sane-port
{
	disable			= no
        port        	= 6566
	socket_type 	= stream
        wait        	= no
	groups			= yes
	user        	= saned
	group       	= users
	server      	= /usr/sbin/saned
}

Клиентская часть

Клиенты - те, с которых будет производиться сканирование.

Тут настройка проста, в /etc/sane.d/net.conf прописать адрес или адреса хостов, к которым подключены сканеры, можно задать таймаут опроса.

Дополнительно

На некоторых системах потребуется монтирование usbfs, что бы организовать правильный доступ к устройству пользователей, на работе в Мандриве это: none /dev/bus/usb usbfs auto,busgid=100,busmode=0775,devgid=100,devmode=0664 0 0

У меня на ArchLinux: none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0 группа для vbox :wink: ну а так, почти не отличается

ID групп и пользователя и права задаёте те, которые у вам нужны.

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

Jan 26, 2010 - 2 minute read - Comments -

Пара исправлений для FBReader

С давних пор пользуюсь для чтения электронных книг замечательной программкой FBReader. Особо мне нравилось то, что он мог на основе параметров пользователя оформлять книги, которые находятся в простом TXT файле.

Например, люди, которые делают OCR могут использовать следующие способы для выделения абзацев: * длинные строки, новый абзац с новой строки - такое правда встречается редко * в начале обзаца строка имеет отступ а 1-2-3 и т.д. пробелов или табуляций * абзацы разделены пустой строкой Второй и третий случай - наиболее частые, а сам текст обычно выравнен на 80 символов, что бы можно было читать в DOS-терминале

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

Второй вариант, разделение глав, тут обычный случай: по окончании главы 2 и более пустые строки, после заголовка одна пустая строка - самый частый случай. Программа на основе таких данных может строить оглавление и осуществлять быстрый переход, что является достаточно удобным функционалом.

Конечно, данные критерии не покрывают абсолютно все случаи, но большинство - это точно.

Теперь о проблеме: в какой-то момент поломалось форматирование TXT файлов, с разделением абзацев по отступу первой строки, проявлялось так:

Отступ имела первая строка азбаца, после чего азцаз закрывался и вторая строка абзаца так же печаталась с новой строки с отступом, и это очень сильно резало глаза.

Сегодня дошли руки покопаться в исходниках, благодаря ну очень внятной структуре, разобраться много времени не заняло, да и исправления можно сказать косметические, вот патч:

--- ./fbreader/src/formats/txt/TxtBookReader.cpp.orig	2010-01-26 01:33:14.083167173 +1000
@@ -27,7 +27,8 @@
 
 void TxtBookReader::internalEndParagraph() {
 	if (!myLastLineIsEmpty) {
1. 	myLineFeedCounter = 0;
+		myLineFeedCounter = -1; /* Fixed by Hatred: zero value was break LINE INDENT formater -
+		                           second line print with indent like new paragraf */
 	}
 	myLastLineIsEmpty = true;
 	endParagraph();
@@ -76,7 +77,9 @@
 		((myFormat.breakType() & PlainTextFormat::BREAK_PARAGRAPH_AT_EMPTY_LINE) && (myLineFeedCounter > 0));
 
 	if (myFormat.createContentsTable()) {
1. 	if (!myInsideContentsParagraph && (myLineFeedCounter == myFormat.emptyLinesBeforeNewSection() + 1)) {
+	    /* Fixed by Hatred: remove '+ 1' for emptyLinesBeforeNewSection, it looks like very strange
+	       when we should point count of empty string decrised by 1 in settings dialog */
+		if (!myInsideContentsParagraph && (myLineFeedCounter == myFormat.emptyLinesBeforeNewSection())) {
 			myInsideContentsParagraph = true;
 			internalEndParagraph();
 			insertEndOfSectionParagraph();

Или альтернативная ссылка: http://codepad.org/GO5GIN7Y

Сейчас попробуем запостить разработчикам.

UPD: собственно: http://groups.google.com/group/fbreader/browse_thread/thread/a0f77eb79add8571?hl=en

Jan 25, 2010 - 3 minute read - Comments -

Аналогии

Когда объяснял процесс монтирования сменных накопителей в nix (читая курсы в ПИППКРО), родилась аналогия про прививу к дереву черенка и организации одного большого дерева (черенок это наш сменный носитель, флешка, CD/DVD и т.д.). Там же родилась юморная аналогия про один корень в nix и несколько корней в win - в nix у нас могучий дуб, а в win - несколько кустиков.

На прошедшем семинаре в коллекцию аналогий попала ещё одна, предложил камрад ad_user. Но для начала скучное техническое объяснение.

Все знают, что на большинстве IBM PC совместимых компах (какая архаика), нам на жестких дисках досталась таблица разделов, которая хранится в MBR (Master Boot Record). Сама MBR находится в первом секторе жесткого диска (в общем случае, можно подставить: flash, floppy & etc), и имеет размер 512 байт. В эти 512 байт нужно было запихнуть код загрузчика, сигнатуру, а на таблицу разделов выделил 64 байта, по 16 байт на раздел (тип раздела, его расположение)… Уже поняли? На первых PC на жеском диске можно было иметь всего 4 раздела (или диска C, D, E, F). После POST_(аппаратное_обеспечение)|POST процедур PC BIOS передает управление коду загрузчика в MBR. Именно поэтому, если хотим откзаться от MBR, нужно отказываться и от PC BIOS (как сделано в маках: EFI (Extensible Firmware Interface, вместо BIOS) + Таблица_разделов_GUID|GPT (GUID Partition Table))

Через некоторое время оказалось, что этого не достаточно, для некоторых задач требовалось делить жесткий диск больше чем на 4 раздела… А что делать - железа было уже очень много, а PC славится обратной совместимостью (когда-то это тру, когда-то - нет), исправить просто так формат - не получится… Тогда придумали совместимый алгоритм, так называемый Extended_Boot_Record|EBR (Extended Boot Record).

Что из себя представляет. В описании раздела в MBR есть поле - типа раздела, договорились, если вписать туда 0x05, это будет типом расширенного раздела, а в полях адреса, будет указан адрес EBR, в которой содержится: указатель на раздел, указатель на следующую табличку EBR и сигнатура (такая же как у MBR). На самом деле там больше полей, но часть просто не используется.

Таким образом, у нас получается по цепочке создать столько разделов сколько нужно. Кстати, были вирусы и зловредные программки, которые исправляли в EBR указатель на следующую табличку, на какую-то предыдущую, делая тем самым зацикливание. Ясно дело, при загрузке система сходила с ума :)

Условно принимают что расширенный раздел один, и остальные диски располагаются в нем, это не верно, но для восприятия в большинстве случаем - достаточно. Т.е. в общем случае у нас может быть 3 primary раздела и 1 extended, двух расширенных разделов в MBR быть не может. Стандарт. В Extended - сколько нужно logical разделов.

Ничего непонятно? :) теперь время аналогия:

у нас есть удлинитель на 4 розетки, если мы подключим туда 4 потребителя (создадим 4 primary раздела), мы больше потребителей подключить не сможем (в случае дисков - уменьшить размер существующего раздела и создать в освободившемся месте новый), а если мы сделаем так: подключим 3 потребителя, а 4е гнездо, подключим удлинитель на 2 розетки - в одну подключаем потребителя (кофеварку), а во вторую, ещё один такой удлинитель… и так пока мощности хватит :)

в общем, как-то так :)

PS да, в случае nix, нумерация primary разделов 1-4, а extended - от 5, так что не удивляйтесь, если у вас будут3 primary раздела 1, 2, 3 и сразу 5 (первый раздел в расширенном разделе).

Jan 24, 2010 - 1 minute read - Comments -

Флибуста

Или полное название: Книжное братство Флибуста - добротная сетевая библиотека, книжки в fb2 и доступны для чтения онлайн.

А фрегат на фоне волны из страницы книги на логотипе наводит мысль на происхождение название ресурса от слова - флибустьеры… как-то даже приятно)

Собственно что это я, спасибо mountain-diu за наводку, и вот собственно сам сайт: http://flibusta.net/

PS Таня, если читаешь, думаю тебе понравится )

Jan 24, 2010 - 3 minute read - Comments -

Лыжи

Смолил лыжи. Теперь весь подъезд люто на меня смотрит: занятие увлекательное, но запааааааах… Вот ссылка в тему: http://www.mail-archive.com/speleokedr@ngs.ru/msg01540.html, процитирую: > Привет, любители весеннего солнца и деревяных лыж. > > в связи с наступившей весной, мокрым снегом и подлипом, а по утрам жестким настом, рекомендуется просмолить наши туристкие деревяные лыжи. Смолить нужно смолой Уктус для деревяных лыж, продается в магазине Старт(пр Дзержинского), 130 р бутылочка 80 грамм, хватает на 3 лыжи(т.е. 1,5 пары). Как смолить? наливаем смолу на скользящую поверхность лыжи, берем щепку(или кисточку) и размазываем равномерным слоем по площади всей лыжи. Далее берем горелку, плитку, костер(удобнее всего китайская насадка одеваемая на газовый балон) и греем лыжу, пока почти вся смола не впитается, удаляем тряпкой остатки смолы. чем дольше греть лыжу тем лучше, только не сожгите:) > > Также рекомендуется в качестве антиподлипа использовать серебрянку: смесь из парафина(свеча) и аллюминевой пудры. сотоношение свечи к пудре: 2 к 1. > > > ps на смоленные лыжи серебрянка ложится лучше, чем не на смоленные

Только я лыжи преде нанесением смолы тоже прогревал - растекается лучше. Кроме того, что бы смола не густела в бутыльке, я поставил рядом плошку с горячей водой и бутылек ставил туда.

Для чего нужно смоление? Опять цитата (http://www.sport-dic.ru/html-sport/s/smolenie-l3j.html): > СМОЛЕНИЕ ЛЫЖ > Процедура подготовки лыж к эксплуатации. Обработка скользящей поверхности новых лыж специальной смолой или жидкими смолистыми мазями. Хорошая пропитка предохраняет лыжи от влаги, разбухания, образования трещин и лучше держит лыжную мазь.

Теперь ещё переварить как правильно накладывать мазь на мои “дрова”, а то информация разница, где говорят - на всю поверхность наносить мазь держания, в от тут говорят такое: > Ваши лыжи деревянные. Наверное, здесь уместно лирическое отступление. Времена деревянных лыж и кирзовых ботинок безвозвратно прошли. Это, конечно, не значит, что на них никто не катается. Тем более это не значит, что деревянные лыжи не имеют права на существование. Прогресс - дело великое, покупают сейчас в основном лыжи с пластиковой скользящей поверхностью. И причина этому даже не в том, что все больше людей озабочены “имиджем”, пластиковые лыжи действительно имеют ряд преимуществ. И все же. Если нужно намазать деревянные лыжи, все очень просто: берете мазь держания и наносите ее на центральную часть скользящей поврехности (под колодку). Для того, чтобы совсем было понятно, объясню, что такое колодка. В деревянных лыжах это прогиб. Длина колодки примерно 50 см от пятки ботинка, поставленного в крепление, вперед к носку лыжи. Хорошо бы, чтоб лыжи были смоленые. Тогда они не будут впитывать влагу, дольше прослужат и будут лучше скользить. Но дело ваше. Можно и не смолить. > > С лыжной мазью тоже можно слишком не мудрить. “Висти” будет вполне достаточно. Это недорогая, проверенная ни одним поколением лыжников мазь. Бывалые лыжники знают, что раньше мазь “Висти” наносили по всей длине, а под колодку “теплее”, чем температура воздуха. Может быть это и так. То есть не исключено, что вы “попадете в температуру” и мазь “покатит”, вернее, “не покатит”. Но вообще-то, мазь нужно подбирать по температуре. Наносить ее нужно тонким слоем, растирать - растиркой. Можно, конечно, не растиркой, но удобнее все же ею. И помните 1 слой хорошо, а 2 - лучше. > > Если мазь “Висти” (“Луч”, “МВИС”) нанесена правильно. то ее хватит на километров 10-15. Этим она главным образом и отличается от дорогих импортных мазей. И если вы бежите на лыжах далеко, нужно будет просто подмазать колодку еще раз. Да и температура воздуха к тому времени может измениться. И не забывайте о прописных истинах - старую мазь перед нанесением новой нужно снимать. Обычно это делают скребком. Есть специальные смывки для мазей.

Бум думать :)

Jan 24, 2010 - 2 minute read - Comments -

Немного про фишинг

Оригинал запостил в juick: http://juick.com/hatred/498774


интересный вариант фишинга наблюдал буквально на днях. Да я являюсь обладателем пустого аккаунта на одноглазиках, в моем круге и мире, а так же вконтакте. Пользуюсь 99.99% последним, остальные - исторически сложилось. Про быдло не нужно, каждый считает что быдло кто угодно, только не он. Скучно.

Так, вот, многие помнят как шумели истории, когда “рыбаки” выуживали пароли хомячков, а те даже не замечали, пока от их имени активно не начинали спамить.

Делается обычно как: приходит письмо-подделка, полностью дублирующее внешний служебных писем (вашу фото прокомментили, кто-то просится к вам в друзья, на ваш счет поступил перевод и т.д. и т.п.) и ссылкой для быстрого перехода, причем домен там чуть-чуть, одной двумя буквами отличается от оригинала (нужно было озадачиться - коллекцию собрать, но да ладно), пример * http://vkontakte.ru/mail.php (правильная ссылка) * http://vkontakkte.ru/mail.php * http://vkontate.ru/mail.php * http://vkonttakte.ru/mail.php и т.п.

По такой неправильной ссылке открывается сайт-подделка, при этом не сам сайт, а только диалог входа - ввод логина и пароля. И вот вы, счастливые, что к вам в друзья стучится Наоми Кембел, потными ручками вводите свой логин и пароль и… и он улетает в базу злоумышленникам, а они вас тупо перенаправляют на оригинальный сайт, где вас или повторно попросят ввести пароль или произойдет автовход.

Что в таких случаях делать? Прежде всего - ДУМАТЬ и быть внимательными, желательно регулярно менять пароли, если забываете, запаситесь на паре флешек синхронной копией базы и программы KeePassX (можно прочитать и как KeepAss… что часто больше отражает её суть), и храните пароли в ней, не ходить по ссылкам из письма, а набирать сайт вручную - нужные ссылки у вас и так скорее всего в истории сохранены (если параноик и чистишь постоянно, то это не про тебя)

Так, что-то лирика большая, собственно про сам вариант: в аккаунте у пользователя (форум, стучится новый контакт в ICQ/Jabber/etc) в качестве сайта указан хомяк на какой нить соц-сети, ессесно, интересно глянуть - а что такое, быстро копируешь вставляешь… и получаешь, что выше описано, причем инертность, по крайней мере у меня тут большая, но если появляется диалог входа, я таки внимательно изучаю ссылку. В этом варианте даже не надо заморачиваться на подделке письма, адресов обратных, а внешний вид страницы сайта, сдергивается httrack’ом, wget или curl’ом за пару секунд и дальше чуть чуть быдло-кодинга на чих-пых и готово. Так что будьте внимательны, мы тут на войне.

Хау. Я все сказал.

PS не только соцсетей это касается, просто пока они модны, и там тусуется в т.ч. много леммингов, они - лакомый кусочек, для спамеров в том числе. А так этом может быть какой нить интернет-банк, ещё что нить.

Jan 23, 2010 - 1 minute read - Comments -

Termit 2.3.0

Если кто захочет собрать Termit 2.3.0 (в AUR пока только PKGBUILD для 2.2.0), столкнется с фейлом линковки, соорудил это:

--- ./src/CMakeLists.txt.orig	2010-01-23 22:26:13.037085590 +1000
@@ -2,7 +2,7 @@
 
 INCLUDE_DIRECTORIES(${TERMIT_SOURCE_DIR})
 
-INCLUDE (FindGTK)
+INCLUDE (FindGTK2)
 
 INCLUDE (FindPkgConfig)
 pkg_search_module(VTE REQUIRED libvte>=0.13 vte>=0.13)
@@ -37,13 +37,13 @@
 #  LINK_FLAGS ${TERMIT_LDFLAGS})
 #set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${TERMIT_LDFLAGS})
 
-SET(TERMIT_LDFLAGS "")
-FOREACH(ldflag ${VTE_LDFLAGS} ${GTK_LDFLAGS})
1.  SET(TERMIT_LDFLAGS "${TERMIT_LDFLAGS} ${ldflag}")
-ENDFOREACH(ldflag)
-set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${TERMIT_LDFLAGS}")
+#SET(TERMIT_LDFLAGS "")
+#FOREACH(ldflag ${VTE_LDFLAGS} ${GTK_LDFLAGS})
+#  SET(TERMIT_LDFLAGS "${TERMIT_LDFLAGS} ${ldflag}")
+#ENDFOREACH(ldflag)
+#set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${TERMIT_LDFLAGS}")
 
-target_link_libraries(${TARGET} ${LUA_LIBRARIES})
+target_link_libraries(${TARGET} ${LUA_LIBRARIES} ${VTE_LDFLAGS} ${GTK_LDFLAGS})
 
 INSTALL(TARGETS ${TARGET} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
 

Альтернативная ссылка: http://codepad.org/ovoBTiFN

Собрал, обновил, в комментах к AUR-версии отписал о выходе новой версии и патче.

PS классная утилита curlpaste, помогает одним движением залить текстовый файлик на сервисы типа pastebin и получить прямой линк для отправки собеседнику. Работает не только с файлами, но и с иксовым буффером обмена, может отправлять стандартный вывод программы. В общем самое оно для обмена конфигами и/или логами, кусками кода и т.д.

Jan 23, 2010 - 1 minute read - Comments -

LaTeX и подготовка презентаций

Может вы меня и посчитаете конченным гиком, но мне так больше понравилось готовить презентацию, нежели в OO Impress.

Тут только несколько ссылок на то, что как как делать. Основа - это пакет beamer, который есть в TeXLive, но в статье Балдина есть упоминание и о более простых решениях. Еще вариант - пакет prosper.

Итак: * http://wiki.linuxformat.ru/index.php/LXF91:LaTeX - Статья Балдина в Линукс Формат, как раз посвященная презентациям в LaTeX. На основе этих статей он выпустил книгу, крайне рекоменду: “LaTeX - компьютерная типография” * http://mydebianblog.blogspot.com/2007/07/latex-beamer.html - Записки Дебианщика, тоже статья про beamer * http://latex-beamer.sourceforge.net/ - домашний сайт (En) * http://happymutant.com/latex/misce/beamer.php (En) * http://heather.cs.ucdavis.edu/~matloff/beamer.html (En) * http://www.pletscher.org/writings/latex/beamer.php (En) * http://freshmeat.net/articles/making-presentations-with-latex-and-prosper - создание презентаций с prosper

Для просмотра можно использовать любой PDF-viewer, у меня с этим справились: evince и ePDFViewer.

Jan 16, 2010 - 1 minute read - Comments - programming

Medit: работает с FreePascal

Продолжаем цикл статей :simple_smile: ну и в предверии семинара.

Для начала создадим фильтр, вид его будет такой:

<filter id="FreePascal" name="FreePascal">
  <match what="stdout" pattern="(?P&lt;file&gt;[^:]+)<br/>((?P&lt;line&gt;<br/>d+)[,0-9]*<br/>) Error:.*" style="output-error" />
  <match what="stdout" pattern="(?P&lt;file&gt;[^:]+)<br/>((?P&lt;line&gt;<br/>d+)[,0-9]*<br/>) Fatal:.*" style="output-error" />
</filter>

В отличии от бейсика, файл синтаксиса для паскаля уже есть, поэтому здесь мы не будем делать каких-то движений.

После создаем инструмент Run Pascal, файлы - *.pas; тип - Команда оболочки; вывод - Панель вывода; фильтр - FreePascal, сам код такой:

fpc $DOC
if [ $? -eq 0 ]; then
  xterm -e "bash -c 'cd $DOC_DIR; ./$DOC_BASE; read -p <br/>"Нажмите ENTER для продолжения<br/>"'"
fi

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

Что имеем в итоге: достаточно полноценную среду для обучения программированию на FreePascal, написанию терминальных программ с подстветкой синтаксиса, поддержкой русского языка, выводом диагностических сообщений компилятора с подстветкой строк с ошибками и быстрому переходу к этим строкам в редакторе.

Jan 15, 2010 - 1 minute read - Comments - linux

Mplayer и отсутствие xv

В продолжении этой темы вывод видео с -vo xv не увенчается успехом, и в X11 будет использоваться, по умолчанию, драйвер x11 - минус ровно один: не масштабируется видео к полному экрану. И xvinfo вас не порадует…

Вспомнил свою бытность на P100 и мало-мало памяти: * вывод видео через sdl * вывод audio через sdl * кеширование * и т.п.

В результате, получился такой конфиг ~/.mplayer/config

# видео-выход, посмотреть возможные: mplayer -vo help
vo=sdl
# audio-выход, посмотреть возможные: mplayer -ao help
ao=sdl
# Автоматическая синхронизация аудио и видео - следитие за процессором, на некоторых просто не успевает видео в высоком качестве декодироваться, отсюда возникает причина задержки, такое  лечится только апгредом
autosync=100
# Предварительное кеширование, для проигрывания интернет радио задавайте 512-1024, не больше
cache=8192
# ну это украшательство, просто цветной вывод, т.к. mplayer использую консольный, глаз рудается, да.
msgcolor=true

Ну в общем, в отсутствии xv такая конфигурация работает довольно прилично, правда видео в высоком разрешении ещё не проверял, но, как мне кажется, нетбук не для того предназначен.

ЗЫ с помощью -vo fbdev или -vo fbdev2 (кстати, чем они отличаются?) можно смотреть видео в консоли с фрейм-буффером, а с помощью -vo aa (ч/б) или -vo caca (более продвинуто) - втыкать видео в псевдографике.

Jan 14, 2010 - 4 minute read - Comments - linux

EeePC: uvesafb + родное разрешение в консоли и X11

Пришло время ядра 2.6.32 (уже 2.6.32.3) в core репозитория ArchLinux, да вот незадача: поломали они графику.

Проявляется так: через некоторое время работы, в иксах начинает дергаться экран, как в дерьмовом фильме, где после крутого взрыва на космическом корабле все мониторы взорвались, а последний, для связи с Землей, перед последним вздохом показывает дерганное изображение оператора с того конца. Еще через некоторое время графика фризится, на некоторых версиях иксовых дров (2.9.1) это финиш, для тех что из git - можно переключиться в консоль и там вырубить иксы, да вот запустить их не получится до полной перезагрузки. Да это не паника - система продолжает работать.

Если задать опцию powersave=0 для модуля i915, проявление вышеописанных багов несколько снижается, но не исчезает. Кроме того, после suspend-to-ram фейл появляется почти сразу.

Подумав, решил на время отказаться от родных драйверов в сторону vesa, мне главное нормальная и стабильная работа (да, Арч, что бы моск не заплыл :))

Собственно, все свелось к следующему

Для начала ставим пакет v86d из extra: pacman -S v86d

После установки редактируем файл /etc/modprobe.d/uvesafb.conf на предмет нужного нам разрешения экрана, ставим сразу (верно для моего EeePC 1000H) 1024x600-32

И загружаем модуль usevafb: modprobe uvesafb

Ииии облом :) получим разрешение 800x600 и растянутое изображение - приятного мало.

Связано с тем, что видеобиос на некоторых чипах не поддерживает переключение в нативное разрешение, глюк, согласно статье в вики: http://wiki.archlinux.org/index.php/Uvesafb#Uvesafb_and_915resolution

Там же находим способ как обходить - использовать хак под названием 915resolution лежит он в AUR, только берите версию 915resolution-static - там содержится патч для поддержки 945GME. Собираем этот пакет и ставим.

Дальше запускаем: sudo 915resolution -l

смотрим какие режимы предоставляет. Я для переопределения под номером 54 (в hex виде) - бывший 1024x768-32.

Если поддержки чипа нет - то будет об этом сказано, в этом случае - гуглите, патчите.

Дальше, нужно соблюдать порядок: * сначал хачим биос:915resolution 54 1024 600 * потом уже загружаем модуль uvesafb:modprobe usevafb (при наличии настройки в /etc/modprobe.d/uvesafb.conf)

В случае ArchLinux данную загрузку можно осуществить через initrd, для этого: 1. редактируем хук: /lib/initcpio/hooks/915resolution на предмет нужного режиме (смотрим выше что написал, про хачим биос) 2. редактируем /etc/mkinitcpio.conf и дабавляем в строку HOOKS следующие хуки: 915resolution и v86d (сначала первые потом второй - порядок важен) 3. запускаем: mkinitcpio -p kernel26

Все, при перезагрузке все станет на свои места, либо вручную вызвать нужные команды. Кстати на официальном сайте uvesafb есть информация (http://dev.gentoo.org/~spock/projects/uvesafb/faq.php) как при работе выключить фреймбуфферную консоль и вернуть текстовую моду: > Can I unload the uvesafb module and switch back to a text mode? > > Yes, provided your Video BIOS supports saving the VBE state. This is supported by the vast majority of the currently available BIOS-es. If yours does not support this feature, you will get an appropriate warning in the kernel log. In order to switch back to a text mode, you will need to detach fbcon: echo 0 > /sys/class/vtconsole/vtcon1/bind (make sure the VT_HW_CONSOLE_BINDING kernel config option is selected, otherwise this will do nothing). After you do that, you should be automatically switched back a text mode console. You will also be able to unload uvesafb and fbcon if they have been built as modules.

Уже мы все такие радостные, да? :) а теперь сделайте suspend-to-ram, ога, у меня не проснулось :) точно проснулось но графика слетела. В попытках исправить (для засыпания использую pm-utils с модулем uswsusp) поместил два скрипта в /etc/pm/sleep.d * скрипт 10_915resolution:```bash#!/bin/bash

case $1 in hibernate|resume) /usr/sbin/915resolution 54 1024 600 ;; esac

  * скрипт **10fbcon**:```bash#!/bin/bash

case $1 in
    hibernate|resume)
    echo 0 > /sys/class/graphics/fbcon/subsystem/fb0/state
    ;;
esac

Первый запустит хак, т.к. после сна/гибернейта он имеет тенденцию сбрасываться, а система находится в тупняке - а чо происходит то! Второй, скорее традиция - когда после сна консоль не просыпалась, исправляло ситуацию.

В общем, пока все, огромная просьба - протестить, отписаться.

Да! после сна, бывает черный экран - переключаемся в консоль и обратно. И для иксов достаточно прописать нужный режим (Modes “1024x600”) и драйвер vesa.

ЗЫ жду когда родные дрова починят, поставил бы Торвальдс Арч, что ли :)

Jan 13, 2010 - 1 minute read - Comments -

"Проявка" RAW

Что-то последнии посты были бредом чистой воды, пора исправлять ситуацию.

Итак начнем с того, что буквально вчера-сегодня по RSS с http://linuxgraphics.ru пролетела новость о программе darktable.

Собственно она позиционируется как замена Адобе Лайтруму. Не знаю на сколько она соотвутствует данному критерию, сам до сих пор использую UFRaw, нужно будет попробовать и её.

Итак, ссылки в тему: * Официальный сайт: http://darktable.sourceforge.net/ * Новость о выходе версии 0.4: http://www.linuxgraphics.ru/news.php?readmore=1132 * Беглый обзор: http://www.linuxgraphics.ru/articles.php?article_id=85

Обзор хоть и беглый, затрагивает и другие RAW конвертеры и обращает на основные недостатки.

В ArchLinux данной программы нет в репозиториях, есть в AUR: * стабильная сборка (пока версия 0.3, но читая man makepkg правим под себя): http://aur.archlinux.org/packages.php?ID=31518 * git-сборка: http://aur.archlinux.org/packages.php?ID=31515