Hatred's Log Place

DON'T PANIC!

Jan 6, 2010 - 1 minute read - Comments - life

Что я достиг в жизни. Философское

Да, через пару дней, в цифрах будет уже видно что пошла вторая четверть века человека (если принять за век 100 лет). Ну и тут надоумили, буквально меньше часа назад: * Солидная работа/начальник отдела/свой бизнес/хороший заработок - нет * Видный деятель - нет * Свой дом/квартира - нет * Машина - нет * Семья - нет

Что-то сплошные нули. И что считал своими достижениями, озвучивая вслух - самому смешно становится, или пытаюсь представить - а что если меня бы тут не было? И рисуется картинка: а ничего не изменилось бы.

И мыслей никаких.

UPD: 2014 год, и почти по всем пунктам - true, а оглядываясь назад - още посрать: “ща нет, потребуется - будет”. ЧТД.

Dec 27, 2009 - 1 minute read - Comments -

BibTeX + ГОСТ + UTF8

В поставке TeXLive! есть стилевые файлы для BibTeX реализующие работу с библиографическими записями согласно стандартов ГОСТ 7.80-2000((БИБЛИОГРАФИЧЕСКАЯ ЗАПИСЬ. ЗАГОЛОВОК. http://ru.wikisource.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_7.80%E2%80%942000)) и ГОСТ 7.1-84((БИБЛИОГРАФИЧЕСКАЯ ЗАПИСЬ. БИБЛИОГРАФИЧЕСКОЕ ОПИСАНИЕ. Устарел, после выхода ГОСТ 7.1-2003. Стили требуют переработки. http://ru.wikisource.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_7.1%E2%80%942003)): gost780s/gost71s((аналогичные стандартному стилю plain, библиографические записи помечаются номерами и сортируются в алфавитном порядке)) и gost780u/gost71u((аналогичные стандартному стилю unsrt, без сортировки, порядок определяется порядком цитирования в тексте)). Всё хорошо, но камрад Морфей из местной группы пользователей Linux столкнулся с тем, что они не работают с UTF8.

Беглый поиск привел на сайт “TeX в ЯрГУ” в раздел “Программы”, где я нешел следующее:

UTF8-версия BIBTEX-стилей для оформления библиографии по ГОСТ

В архиве 4 стилевых файла: * utf8gost71s.bst * utf8gost71u.bst * utf8gost780s.bst * utf8gost780u.bst

Назначение аналогично им коллегам для 8битных кодировок.

Кроме того там же лежит пример использования (в директории test), так, что думаю, никаких сложностей возникнуть не должно.

Dec 26, 2009 - 1 minute read - Comments - linux

Copy/Paste в консоли

Идея не моя: http://muhas.ru/?p=19

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

c_buffer="/tmp/ccopy.$USER"
ccopy()
{
  cat /dev/null > $c_buffer
  chmod 600 $c_buffer
  # сделано так, потому как файлы могут содержать пробелы в имени
  while [ $# -gt 0 ]
  do
    echo `pwd`/$1 >> $c_buffer
    shift
  done
}
cpaste()
{
  echo "Paste files:"
  cat $c_buffer | while read line
  do
    echo $line
    cp -a "$line" ./
  done
}

Записываем это в файл ~/.bashrc и запускаем новую копию оболочки.

Для копирования файлов/директорий из текущего каталога в буффер ccopy file1 “file with spaces” directory2

Переходим в целевую директорию и делаем: cpaste

Возможные доработки: 1. обработка полных путей файлов 2. поддержка регистров

Повторюсь - идея комрада Muhas :laughing:

Dec 26, 2009 - 1 minute read - Comments - life linux

Статья в OpenSource

Вышел выпуск 54 электронного журнала “OpenSource” (приложение к журналу “Системный администратор”), а в нем опубликована моя первая статья, можно сказать - первый опыт публикации вообще: «Собираем свое окружение рабочего стола». Скачать выпуск можно: http://osa.samag.ru/info/OpenSource054.zip

Dec 10, 2009 - 2 minute read - Comments -

Редактор для работы с LaTeX

Испробывал их не много, но принципиально разные. Начинал в Kile, потом перебрался на Emacs, потом обратно на Kile.

В Kile устраивало все, кроме сильной привязки к KDE. В Emacs же стало что-то лениво разбираться дальше. Другие редакторы по тем или иным причинам не устраивали.

Таким образом поиск привел к Texmaker, написал который первоначальный автор Kile - Pascal Brachet. И всем он повторял первоначальный Kile, да вот не было в нем такой удобной функциональности как Шаблоны, мастер создания документа эту проблему не решает. И вот недавно натыкаюсь на проект TexmakerX, который является форком Texmaker с дополнительными патчами.

Сайт программы: http://texmakerx.sourceforge.net/

Для ArchLinux доступен в AUR

У меня вся установка уложилась в три команды: cd ~/build aur texmakerx pacman -U texmakerx/texmakerx-1.9.3-1-i686.pkg.tar.gz

aur это мой скриптик, взять можно в GIT: http://hatred.homelinux.net/git/scripts.git git clone http://hatred.homelinux.net/git/scripts.git/

Внешний вид:

Краткий перечень возможностей: * шаблоны * быстрый доступ к различным символам (типа стрелок) * быстрая сборка * доступ к основным командам LaTeX через меню * отдельное меню для работы с математикой * пользовательские теги и команды (бывает удобно, хотя непонятно почему количество ограничено…) * для документа разбросанного по многим файлам, можно определить Мастера - т.е. при запуске отстройки в качестве параметра будет передавать не имя файла в текущем буфере, а имя Мастер-документа. * подстветка синтаксиса * автодополнение команд * проверка орфографии * закладки, нумерация строк и пр. удобности нормального редактора кода

Ну и плюс, редактор, как и его прародитель - Texmaker - кроссплатформенный.

Dec 10, 2009 - 1 minute read - Comments -

Автодополнение адреса при вводе в Firefox

Меня просто бесит как это сделано в Firefox 3.x.x. Тупит, тормозит. Сегодня предпринял меры по некоторой оптимизации в результате получилось следующее: 1. открываем about:config в адресной строке 2. устанавливаем следующие параметры: * browser.urlbar.matchOnlyTyped в true (нужно создать этот параметр, тип bool) - отключит поиск по заголовкам сайтов, оставит только по URL * browser.urlbar.richResults в false (этот параметр так же нужно создать вручную) - влючит старый вид выпадающего диалога.

Полезные ссылки по теме: * http://forums.mozillazine.org/viewtopic.php?f=38&t=685365 * http://kb.mozillazine.org/Browser.urlbar.maxRichResults * http://kb.mozillazine.org/Browser.urlbar.richResults

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

Dec 6, 2009 - 1 minute read - Comments - programming

Серия статей на IBM DeveloperWorks "Программирование на Qt"

Впринципе очередной пересказ документации и прочих книжек, но пусть тут будет, достаточно подробно и интересно: * Часть 1. Введение. Инструменты разработчика и объектная модель * Часть 2. Типы, варианты, ссылки и разделение данных * Часть 3. Контейнеры

Dec 3, 2009 - 1 minute read - Comments - linux

Немного про распознавание текста (OCR) в Linux

Наверное самое слабое место для Linux систем. Хотя проектов достаточно много, например gocr, tesseract или ocrad, но многие из них до сих пор не вышли из зачаточного состояния, требуют для более-менее удовлетворительной работы длительное обучение, и даже после оного достаточно отвратительно распознают текст.

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

Но, несмотря на это, в настоящее время - это лучшая программа для распознавания под Linux.

На данный момент существует несколько способов её использования: 1. из командной строки, доступна из коробки 2. программа cuneiform-qt, довольно убога на данный момент 3. программа yagf - достаточно удобна, хотя ещё и не достаточно функциональна, может работать сразу со сканером при помощи xsane 4. веб интерфейс - CuneWebForm, ссылки тут: * http://cunewebform.nntc.nnov.ru/ - попробовать непосредственно в работе, поддерживает закачку в виде отдельных картинок и в виде пакета в zip архиве. * http://fireforge.net/frs/download.php/434/cunewebform-0.2svn.tar.gz - ссылка на скачивание, дабы дома или в локальной сетке развернуть.

Куниформ работает и потихоньку эту свою работу делает, надеюсь будет развитие.

Nov 17, 2009 - 1 minute read - Comments - programming

Medit: работаем с FreeBasic

По аналогии с medit: ‘PHP check syntax’ tool создаем фильтр для FreeBasic Compiler:

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

Дополнительно, помещаем файл синтаксиса для Бейсика в директорию ~/.local/share/medit/language-specs, предварительно распаковав:

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

fbc -lang qb $DOC -Wl -L/usr/share/freebasic/lib/linux/
if [ $? -eq 0 ]; then
  termit -e "bash -c '$DOC_DIR/$DOC_BASE; read -p <br/>"Hit <Enter> for continue<br/>"'"
fi

Вместо эмулятора терминала termit можно использовать xterm, функционал сохранится. Клавишу для запуска рекомендую F9, т.е. классическая F5 уже занята для перезагрузки документа.

Все, после этого можно полноценно набирать программы на диалекте QBasic в редакторе, имея при этом подсветку синтаксиса, автоотступы, букмарки, выполняя их по клавише F9. Если в тексте программы будут ошибки, после запуска компилятора они будут выведены в панели вывода и подсвечены красным.

Стоит отметить, что используя графические режимы (типа “screen 9”) программы запускаются в виде окна, перевести в полноэкранный режим можно нажатием сочетания клавиш Alt-Enter, текстовые программы будут вести диалог в текстовом окне терминала.

Все, пробуйте :)

Nov 17, 2009 - 5 minute read - Comments - linux programming

Текстовый редактор Medit

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

Требования

Как-то я озадачился выбором текстового редактора, который бы было одинаково комфортно использовать как для редактирования кода и разработки, так и для быстрого открытия и редактирования обычных текстов. При этом что бы он был простым для простых вещей, и расширяемым для сложных. Таком образом выработался набор требований: 1. т.к. нужно редактировать код, нужна подсветка синтаксиса, должна быть возможность создавать свои схемы подсветки 2. автоотступ, как при вводе кода, так и при обычном текстовом редактировании 3. отображение номеров строк, мне привычно - отдельной колонкой 4. многооконный интерфейс образованный вкладками 5. отступ блока кода и обратный отступ 6. фолдинг - сокрытие блока кода 7. поддержка кодировки текста 8. поддержка поля вывода для внешних команд 9. собственно вызов внешних команд 10. боковые панели для быстрой навигации по дереву каталогов и открытия файлов (удобно работать в проекте) 11. расширяемость - простые средства добавления нового функционала, без написания кода.

Знакомимся - MEdit

Повторю то, что кратко сказал в первом посте про данный редактор:

MEdit((http://mooedit.sf.net)) замечательный редактор, написанный на Gtk, пока, за малым исключением, удовлетворяет все мои запросы. Корнями уходит графическому интерфейсу GGAP((http://ggap.sourceforge.net/)) для GAP((http://www.gap-system.org/)).

Теперь же давайте рассмотрим его соответствие моим требованиям к хорошему текстовому редактору: 1. подстветка синтаксиса: есть, описание в xml файлах, можно делать свои схемы 2. автоотступ: есть 3. отображение номеров строк: есть 4. многооконный интерфейс образованный вкладками: есть 5. отступ блока кода и обратный отступ: есть, в конфигурации по-умолчанию клавишами Tab и Shift+Tab соответственно 6. фолдинг: нет, но как оказалось, в тех редакторах, что он есть, мною не использовался. 7. поддержка кодировки текста: есть, но иногда после переключения нужно делать File -> Reopen With Codepage… 8. поддержка поля вывода для внешних команд: есть + поддержка фильтров, но это подробнее позже 9. собственно вызов внешних команд: есть, через механизм Инструментов (или Тулов, от английского Tools) 10. боковые панели для быстрой навигации по дереву каталогов и открытия файлов: есть 11. расширяемость: есть, через механизм плагинов (C или Python), через механизм Инструментов, которых реализован ооооочень удобно.

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

Инструменты

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

Сами инструменты могут быть описанием программы на встроенном Python, LUA или быть командой оболочки (в большинстве случаев - BASH).

Общие параметры для всех языков, это: * Включен - определяет включен инструмент или нет * Файлы - задает, в случае открытия какого файла будет доступен данный инструмент (например в зависимости от того файл какого языка мы редактируем). Тут могут быть заданы маски файлов, выражение типа: langs: c++, c, pascal или регулярное выражение типа: regex:<br/>.[ch]$. Пустое значение подразумевает что доступно при редактировании всех документов. На основе этого я сделал свой тул для валидации кода php. * Параметры - определяют при каких условиях инструмент будет отрабатывать, представляет собой разделенный запятыми список: * need-doc - документ должен быть открыт * need-file - инструмент не будет работать для новых, ещё не сохраненных на диск файлов * need-save - документ будет сохранен перед выполнением команды * need-save-all - все открытые документы будут сохранены перед выполнением команды

Для встроенных языков параметры этим и ограничиваются, все остальное осуществляется программно (типа куда производить вывод сообщений).

Для Типа команды “Команда оболочки” доступны так же следующие параметры: * Ввод - что будет посылаться на стандартный ввод команды, скрипт должен уметь принимать стандартный ввод * Вывод - куда будет посылаться вывод команд: * Ничего - никуда, редактор будет недоступен пока команда не завершится * Ничего, асинхронно - никуда, можно сразу продолжать работу с редактором * Панель вывода - собственно текст будет выведен в панель вывода, к этому выводу можно определить фильтр, о чем скажу ниже * Последние пункты соответственно вставят результаты или в текущую позицию в документе или в новый документ. * Фильтр - как будет восприниматься текст в панели вывода. Например, если это сообщения компилятора, можно выделить строки содержащие сообщения об ошибках компиляции, подсветить их красным и сделать возможность перехода на строку с ошибкой по клику мыши. Определено несколько стандартных фильтров: * Default - ничего не подствечивает, если строка вывода начинается с имя_файла:номер_строки то по клику по такой строке будет произведена попытка открыть файл и перейти на указанную строку. * Остальные специфичны для конкретных применений. Посмотреть их описания можно в /usr/share/moo/filters.xml

Описания языка LUA и Python можно посмотреть в справочном руководстве к редактору, в формате HTML, если он у вас установлен по тем же путям, то можно открыть по этой ссылке: /usr/share/doc/medit/help/sect-user-tools.html

Для SHELL скриптов, как самых простых в реализации, рассмотрим переменные окружения к которым можно обращаться: * $DOC - имя документа без пути к нему * $DOC_DIR - полный путь к документу * $DOC_BASE - имя документа без расширения (последнего элемента отделенного точкой) * $DOC_EXT - расширение документа * $LINE - номер строки в которой стоит курсор * $DATA_DIR - директория в которой хранятся настройки medit, бывает удобно, что бы некоторые сценарии сохраняли или читали от туда свои настройки.

Как реализовывать конкретный функционал, уже удел вашей фантазии.

Да! На каждый созданный документ, можно после в Изменить -> Настройка горячих клавиш, можно настроить свою клавишу. Оду и ту же клавишу можно назначать на разные инструменты, если они выбираются для разных файлов. Если будет отображаться одновременно два инструмента с одинаковой горячей клавишей, будет выполнен тот, который идет раньше.

Остальное

Тут кратко рассмотрю основные интересности о medit: * описание синтаксиса можно сохранять в пользовательскую директорию: ~/.local/share/medit/language-specs * свои фильтры можно добавлять в файл ~/.local/share/medit/filters.xml причем нужно писать только сам фильтр, например: xml <filter id="php-syntax-check" name="php-syntax-check"> <match what="stderr" pattern=".*Parse error:.* in (?P&lt;file&gt;[^:]+) on line (?P&lt;line&gt;<br/>d+)" style="output-error" / <match what="stdout" pattern=".*Parse error:.* in (?P&lt;file&gt;[^:]+) on line (?P&lt;line&gt;<br/>d+)" style="output-error" / </filter> без всяких дополнительных обрамлений.

Собственно пока всё, будет дополняться.

Nov 16, 2009 - 3 minute read - Comments - life

Я - препод

Почти по аналогии: Я - робот.

С 9 по 14 ноября читал первый курс лекций для учителей информатики в ПИППКРО по программе “Установка и администрирование Пакета Свободного Программного Обеспечения (ПСПО)”.

Попробую поделиться своими впечатлениями по этому поводу с разных точек зрения…

Собственно начнем с того, что читать лекции мне понравилось :)

Но теперь о нехорошем: изначально данная программа рассчитывалась на 9 дней по 8 академических часов, при этом можно ещё было избежать какой-то каши в голове. Но даже в этом случае, она не была способна выполнить тех задач, которые ставились. Непонятно было, для чего рассказывать учителям об основах языка C++.

На самом же деле, программу сократили до 6 дней по 10 часов, в результате 12 часов у нас вылетело и бежать приходилось галопом по европам, но оставим это на совести организаторов.

Непонятным в программе с названием “Установка и администрирование” стало наличие раздела - Программное обеспечение для Объектно Ориентированного программирования… программисты и администраторы разные люди.

Непонятным для меня этапом стало то, что курс администрирования читается учителям информатики… Получается, помимо учительской нагрузки на них ложится нагрузка, как минимум: сетевого администратора (установка серверов, проектирование сети), системного администратора и оператора (поддержка пользователей, устранение их проблем), техника (монтаж оборудования и сети) и инженера по информационной безопасности (обеспечение конфиденциальности и целостности данных, политики обеспечения информационной безопасности). И это за те же деньги, что получает сам учитель, ну может какие надбавки, но это же не соизмеримо с зарплатами 5 человек!

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

Диким стало что они учат детей Ворду и Экселю! Нельзя же учить конкретной программе, для этого есть отдельные специализированные курсы. Нельзя использовать подобные слова-паразиты. Есть строго определенные: Текстовые процессор, Электронная таблица и т.д. Нельзя строить программу обучения на специфицических, и, что греха таить, частично удобных функциях, конкретных приложений, без возможности адаптации и реализации заданий в других продуктах, начиная от Лексикона и редактора Слово и Дело до OpenOffice Writer, AbiWord и KOffice Word для текстовых процессоров и от каких-то простеньких электронных таблиц до OpenOffice Calc, Gnumeric и KOffice Spreadshit.

Когда касался введения в ООП (Объектно Ориентированное Программирование) был опечален незнанием основных определений, что такое инкапсуляция, полиморфизм, наследование, да и что такое класс и объект. Хотя это есть в школьной программе, и они этому учат детей.

В заключении хочу сказать, что, возможно, кому-то будет неприятно читать, что я написал выше, возможно меня после этого не будут приглашать читать лекции, пусть, но молчать тоже нельзя. А то все говорят, вот наша школа, наши ВУЗы… Пока учителя не научатся сами учиться, пока курсы повышения квалификации будут только галочкой в личном деле, они ни каким образом не смогут причислить себя больше к интеллигенции и наше образование будет лететь в Тар-Тар.

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