Hatred's Log Place

DON'T PANIC!

Apr 26, 2011 - 2 minute read - Comments -

Samsung GT-B2710

Стал обладателем данного аппарата. Критерием покупки стало: * ЗвонИт (так же работает в UMTS сетях) * SMS отправляет * Пыле-влаго-ударо-защищённый корпус (в походах полезные свойства) * GPS на борту * Цифровой компас (не зависит от GPS) * “Автономный” режим (мне полезно в горах, экономить батарею, не выключая аппарат вцелом) * Стоимость в пределах 5000 руб.

Из дополнительных бонусов: * GPRS/EDGE * Браузер * E-mail клиент, умеющий IMAP4 * Синхронизация контактов, календаря, задач по SyncML (можно скрестить с адресной книгой Google Mail) * Секундомер * Java приложения (для того же GPS пригодится) * Шагомер (хотя больше игрушка) * Bluetooth * Сигнал SOS * Оповещение заданных номеров о смене SIM карты (эдакий противоугон, но ещё не проверял)

Из почти стандартного: * Календарь * Будильник (автоповтор 5 минут, и, кажется, не настраивается) * Калькулятор * Заметки

Из прочего, крайне не обязательного * Поиск - удобно искать по слову в контактах, заметках, SMS сообщениях * FM-radio * Аудиопроигрыватель * Мировое время - показывает время в разных часовых поясах * Конвертер длинн, валют и пр.

GPS

В комплекте есть только тестовое приложение, которые выдаёт в цифровом виде текущую координату и высоту. Для целей навигации этого мало. Поставил программку MapNav: http://mapnav.spb.ru

Умеет карты Google/Yandex/куча всего другого, кроме того, умеет локальные карты, на сайте есть рекомендации и программки для подготовки. К примеру, можно привязать генштабовские, перегнать их в GeoTiff и создать карту для заливки в телефон. Пока это ещё не реализовывал.

По поводу программки есть один нюанс: при вводе имени точки и ещё в некоторых случаях становится непонятно как переключать язык и как удалять введённые символы. Это недоработка (или фича?), в таких случаях нажмите и удерживайте клавишу #, откроется полноценный редактор для данного поля.

GPS ещё особо в бою не проверялся, но, в машине достаточно точно определял скорость движения, а у подножия г.Острой (пос.Кавалерово) говорил, что высота 211 метров, что, впринципе, соответствует действительности.

Синхронизация SyncML

Тут особо рассказывать от себя не буду, сразу ссылка: http://digital-activity.org/2010/12/10/%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BD%D0%BE%D0%B9-%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-samsung-xcover-271-b2710-c-google/

Копипаста самой операции: Menu -> Apps -> Synchronise -> Options -> New sync profile.

Profile Name: Google

Sync Category -> Contacts ->

Contacts: Activate

Remote contacts: contacts

User ID: ваш.логин@gmail.com

Password: ваш.пароль.от.этой.записи

Save -> Back

Sync type: Full sync

Sync server: https://m.google.com/syncml

Network profile: ну какой там у вас профиль чтобы в инет ходить

Save

Start

Отдельно дополню: в настройках Sync server так же укажите ваши логин и пароль от Google Mail.

Apr 10, 2011 - 1 minute read - Comments - programming c++

Image Ruler 0.98.1

Выпустил версию 0.98.1 программы Image Ruler для измерения на растровых изображениях.

Изменений минимум: * Добавлен вывод суммирующей длинны при измерении ломанной линией (столкнулся с расчётом маршрута по карте) * В win32 сборку добавлены плагины графических форматов: теперь из коробки открываются jpeg/gif и иже с ними, иначе работал только png.

Apr 7, 2011 - 1 minute read - Comments - programming

Eclipse, русский и проверка орфографии

Нужно: * установленный Eclipse * установленный aspell русский (е+ё, хотя тут на выбор) и английский словари.

Пишем скрипт, примерно такого содержимого (или выполняем команды вручную)

#!/usr/bin/env bash
aspell dump master en      >  /tmp/ru-en.dictionary
aspell dump master ru-yeyo >> /tmp/ru-en.dictionary

получившийся файл (/tmp/ru-en.dictinary) кладём в какое-то постоянное место, например в ~/documents: mv /tmp/ru-en.dictionary ~/documents

В запущенном Eclipse идём в Window -> Preferences -> General -> Editor -> Text Editor -> Spelling (или в поиске вводим Spell, само найдётся). В секции Dictionaries параметр Platform dictionary выставляем в none, а в User defined dictionary прописываем наш получившийся словарик: ~/documents/ru-en.dictionary

Сохраняемся, закрываем настройки, пользуемся.

Apr 2, 2011 - 1 minute read - Comments -

Цикл статей про источники питания

Цикл статей про источники питания: http://naf-st.ru/articles/ip/ * Общие положения: http://naf-st.ru/articles/ip/aboutip/ * Неуправляемые выпрямители: http://naf-st.ru/articles/ip/neupv/ * Управляемые выпрямители: http://naf-st.ru/articles/ip/upv/ * Умножители напряжения: http://naf-st.ru/articles/ip/umn/ * Сглаживающие фильтры: http://naf-st.ru/articles/ip/sf/ * Стабилизаторы напряжения: http://naf-st.ru/articles/ip/stn/ * Стабилизаторы в интегральном исполнении: http://naf-st.ru/articles/ip/kren

Apr 1, 2011 - 1 minute read - Comments - programming

Перенос строки по заданной границе без разбивки слов (word-wrap) в Java

В составе Apache Commons есть чудная библиотечка Lang в которой есть класс WordUtils который и поможет нам решить поставленную задачу, примерно следующим образом:

package test;

import java.io.IOException;

import org.apache.commons.lang.WordUtils;

public class WordWrap
{
  public static void main(String[] args) throws IOException 
  {
    String str = "This is a sentence that we're using to test the wrap method";
    System.out.println("Original String 1:<br/>n" + str);
    System.out.println("<br/>nWrap length of 10:<br/>n" + WordUtils.wrap(str, 10));
    System.out.println("<br/>nWrap length of 20:<br/>n" + WordUtils.wrap(str, 20));
    System.out.println("<br/>nWrap length of 30:<br/>n" + WordUtils.wrap(str, 30));

    String str2 = "This is a sentence that we're using to test the wrap method and hereisaveryveryveryverylongword";
    System.out.println("<br/>nOriginal String 2:<br/>n" + str2);
    System.out.println("<br/>nWrap length of 10, <br/><br/><br/>n newline, wrap long words:<br/>n"
			+ WordUtils.wrap(str2, 10, "<br/><br/>n", true));
    System.out.println("<br/>nWrap length of 20, <br/><br/>n newline, don't wrap long words:<br/>n"
			+ WordUtils.wrap(str2, 20, "<br/>n", false));
  }
}

Mar 25, 2011 - 1 minute read - Comments - programming

Сортировка "цифровых" строк в Java

Для сортировки массивов в Java есть Arrays.sort(array). Есть так же форма с указанием своего компаратора.

Задача: нужно отсортировать строки, в которых содержатся цифровые значения, вроде:

bg1
bg3
bg20
bg10

После классический сортировки получим такой результат:

bg1
bg10
bg20
bg3

Не всегда это нужно, и не всегда есть возможность выравнивать нулями до формы bg01,bg03,bg30

По ссылке ниже вариант компаратора, выполняющего данную задачу: http://sanjaal.com/java/206/java-data-structure/alphanumeric-string-sorting-in-java-implementation/

Mar 24, 2011 - 1 minute read - Comments - projects programming

Qt Creator и CMake - продолжение

Некоторое время я поднимал тему связки Qt Creator и CMake, тогда всё показалось не очень хорошо.

В общем, собрался и сделал несколько лучше: малость допилил плагин CMakeProjectManager, реализовав следующие фичи: * Дерево проекта берётся не из .cbp файла, а сканированием дерева проекта. Как вариант может оказаться медленно на больших проектах, с другой стороны, релоадинг дерева происходит не каждый раз, а при смене CMakeLists.txt или при добавлении, удалении, переименовывании файлов (этого, кстати, в базовом плагине нет) * Теперь можно создавать новые файлы в дереве проектов непосредственно из Qt Creator’а * Появилась возможность переименовывать файлы * Появилась возможность удалять файлы с диска

Изменения оформлены в виде отдельного плагина (основано на GIT версии Qt Creator, 2.2.81) - CMakeProjectManager2 доступного на Gitorious: http://gitorious.org/hatred-qt-creator-plugins/cmakeprojectmanager2, как устанавливать - читать README.txt, написано моим дряным английским, но, в общем, должно быть понятно.

Кроме того, в основное дерево Qt Creator я подал мёрж-реквест: http://qt.gitorious.org/qt-creator/qt-creator/merge_requests/280

Кроме того, случайно наткнулся мастера новых проектов на CMake: http://apachelog.wordpress.com/2010/09/27/qt-creator-cmake-wizards/ устанавливаются просто.

Mar 18, 2011 - 2 minute read - Comments - linux

Примитивный SMTP клиент

Про SMTP протокол знают все: текстовый, простой, можно почту отослать и при помощи telnet. Собственно, при помощи оного и сделан скрипт ниже.

Mar 16, 2011 - 1 minute read - Comments - programming

Консоль, скрипты, XML и XPath

Иногда в скриптах нужно мало-мало добраться до внутрянки XML файлов – к тегам или свойствам тегов. Для сих целей бывает удобно использовать XPath . Вопрос: а как это делать-то из скриптов?

На помощь приходит утилитка xmllint из состава libxml2. Начиная с версии 2.7.7 или 2.7.8 там появилась опция --xpath которая задаёт выражение для выборки. В более ранних версиях (2.7.6, к примеру) этой опции нет, но есть (в последних тоже) возможность вызова “консоли” и интерактивного разбора XML.

В общем два варианта:

xmllint --xpath '//File/@Name' test.xml

и

echo 'cat //File/@Name' | xmllint --shell test.xml

Остальное - фантазия.

Mar 15, 2011 - 1 minute read - Comments - programming

Qt Creator и CMake

Пакость: Qt Creator умеет импортировать CMake проекты, проблема в том, что в дереве далеко не все файлы отображаются.

Причина: делается этот импорт через откровенную задницу: вызывает cmake с генератором “-G’CodeBlocks - Unix Makefiles’”, генерируя тем самым XML-файл проекта формата CodeBlocks. Но тут накладывается вторая задница: сам генератор обрабатывает файлы только для таргетов: executable, static_library, shared_library, module_library, всё остальное он забывает запихнуть в результирующий ‘.cbp’.

Решение

Для начала накладываем патч на CMake и пересобираем его:

--- cmExtraCodeBlocksGenerator.cxx.orig 2011-03-15 14:28:30.692010962 +1000
@@ -410,12 +410,14 @@
     for (cmTargets::iterator ti = targets.begin();
          ti != targets.end(); ti++)
       {
+      //std::cout << "Type: " << ti->second.GetType() << std::endl;
       switch(ti->second.GetType())
         {
         case cmTarget::EXECUTABLE:
         case cmTarget::STATIC_LIBRARY:
         case cmTarget::SHARED_LIBRARY:
         case cmTarget::MODULE_LIBRARY:
+        case cmTarget::UTILITY:
           {
           const std::vector<cmSourceFile*>&sources=ti->second.GetSourceFiles();
           for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();

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

set(script-files
    process-filelist.sh
)
# hack for display in Qt Creator (with patch for CMake)
add_custom_target(scripts true SOURCES ${script-files})

Всё, после регенерации файлы появятся в списке.

Решение костыльное, но время переписывать импортёр CMake в Qt Creator просто нет, будем надеяться, что разработчики обратят на это внимание.

Mar 6, 2011 - 1 minute read - Comments -

Исследование блоков кода в Emacs

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

Сегодня случайно нашел небольшой хак, частично решающий эту проблему: http://www.physics.utah.edu/~detar/lessons/emacs/emacs/node7.html, процитирую: > Parenthesis checking can also be done with the mouse. Double left click on any parenthesis, brace, or bracket. Emacs then shows the matching symbol and highlights the code between them.

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

Mar 5, 2011 - 1 minute read - Comments -

Поиск от Google

Добавил поиск от Google, а то встроенный в DokuWiki не всегда отрабатывает должным образом, а, судя по логам, робот гугла почти не покидает мой сайт :)

Для поиска сделал кастомный: http://www.google.com/cse/. С рекламой даётся бесплатно.

Что бы разделить запрос и результаты, пользовался этим хинтом: http://googleajaxsearchapi.blogspot.com/2010/03/search-form-and-results-on-two.html

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

Mar 5, 2011 - 2 minute read - Comments -

Emacs Muse

Наконец нашёл удобное средство для html/pdf публикации без излишней навороченности.

Вести сайт при помощи него я не собираюсь, но вот использовать как инструмент для создания отдельных HTML или PDF документов - вполне (первым, наверное, станет перевод документации для crowns на muse).

Что такое Muse и с чем его едят есть даже в русских интернетах: * У Алекса Отта (ну ещё бы! он на нем сайт ведёт): http://alexott.net/ru/writings/EmacsMuseMyPage.html * С упором на публикацию в WordPress: http://oramezo.org/ru/man/muse-howto * Аналогично, но с упором на Хабр: http://habrahabr.ru/blogs/soft/60215/

Ну и официальные источники: * Официальный сайт: http://mwolson.org/projects/EmacsMuse.html * Страница на EmacsWiki: http://www.emacswiki.org/cgi-bin/wiki/EmacsMuse * Быстрый старт: http://mwolson.org/projects/MuseQuickStart.html * Мануал: http://mwolson.org/static/doc/muse.html

За основу своих настроек взял оные из статьи Алекса Отта. Единственно, из коробки взял только его шаблоны для генерации PDF (да и то, наверное, пересмотрю со временем). Для генерации html использую дефолтный шаблон xhtml1.1 – пока не определюсь со своими собственными, так как, по сути, собираюсь только использовать для статей, которые нужно куда-то отправить после.

Ну и для затравки сделал небольшой документ-шпаргалку по muse при помощи самого muse: * muse-файл: * pdf-файл:

Так же стоит обратить внимание на режим org-mode, подробно рассписывать не буду, ограничусь ссылками: * Организация информации — Emacs Org Mode: http://habrahabr.ru/blogs/soft/28098/ * Введение в org-mode emacs: http://habrahabr.ru/blogs/soft/105300/

На последок: muse есть как в основных репозиториях ArchLinux (кстати, разработчик оного - арчевод :)), так и в AUR (emacs-muse-git); режим org-mode есть только в AUR: emacs-org-mode (если не хотите стареньким, идущим вместе с Emacs, пользоваться).