Hatred's Log Place

DON'T PANIC!

Jun 2, 2011 - 1 minute read - programming c++

Qt Creator Plugins Docs

По мотивам рассылки qt-creator@qt.nokia.com, подборка документации по написанию плагинов для Qt Creator’а:

Для примера можно поглядеть различные плагины на гиториусе: https://gitorious.org/search?q=qt+creator+plugins

Если будет появляться новая информация, буду дополнять пост.

May 18, 2011 - 13 minute read - туризм

"12 месяцев" или все времена года за три дня

Давно давно был запланирован небольшой походик на майские праздники, близ девятого мая. Поход в рамках “Школы начальной туристической подготовки” - поделиться опытом, поглядеть на людей в реальной обстановке.

Изначально маршрут захватывал г.Синюю и реку Правая Икрянка (с выходом в Ястребовку), но просчитав маршрут, оценив возможности группы, решил, что не успеем и скорректировал:

Ключ Еломовский-Первый водопад (“Звезда Приморья”)-г.Лысая-г.Белая-р.Малая Алексеевка-р.Алексеевка-первый мост.

С выброской нам помог Руслан из Партизанска (если кому нужно будет его контакты - обращайтесь). Доставил нас до ЖД вокзала в Партизанске, где мы сели на электричку.

Apr 27, 2011 - 1 minute read - programming

Maven trouble

Сегодня отхватили, что Maven отказался на отрез выкачивать пакеты с HTTPS репозитария JBoss, матерясь: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Решение найдено было тут: http://blogs.sun.com/andreas/entry/no_more_unable_to_find

Если коротко:

  1. Качаем класс: http://blogs.sun.com/andreas/resource/InstallCert.java
  2. Компиляем его:javac InstallCert.java
  3. Запускаем рраз:java InstallCert repository.jboss.org жмахаем 1 и
  4. Запускаем два:java InstallCert repository.jboss.org видим что сертификат теперь trusted.
  5. Копируем файл jssecacerts в $JAVA_HOME/jre/lib/security
  6. Удаляем кеш Maven:rm -rf ~/.m2/repository

Всё, после этого должно всё работать.

Apr 26, 2011 - 10 minute read - туризм

Начальник обоза

Даааа… люблю себя насяльника называть :laughing:

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

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

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

Неделя до петли

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

На выходных (16-17 апреля) прикидывал раскладку, сочинял меню. Коля (Live) так же вызвался быть в обозе и помочь с закупкой продовольствия (его машина тут очень пригодилась). Сначала примерно прикинул меню, учёл замечания Кати по нему, составил раскладку, пользуясь материалами лекции по питанию в Школе начальной турподготовки и, в какой-то степени, своим опытом организации ПВД.

Меню получилось таким:

Приём Меню
Суббота
Завтрак Завтрак в столовой
Обед Суп сайровый
::: Чай
::: Печенье-1
::: Хлеб
::: Сало
Ужин Картофель с тушёнкой
::: Хлеб
::: Чай
::: Колбаса
::: Сыр
::: Сгущенное молоко
Воскресенье
Завтрак Гречка с тушёнкой
::: Хлеб
::: Чай
::: Печенье-2
::: Шоколад
Обедо-перекус Сыр
::: Колбаса
::: Сыр
::: Хлеб
::: Чай (пакетированный)
::: Кипяток в термосах
::: Шоколад

Продуктов на 22 человека (вышло даже с запасом, так что можно запитать ещё человека 2-3 или получить добавки :))

Продукт Количество
Картофель сырой 9 кг
Морковь сырая 6 шт.
Сушёная смесь зелени 1 пачка
Лук 6 луковицы
Честнок 5 шт.
Лавровый лист минимальная тара
Горбуша (консервы) 6 банок
Рис 200 гр
Тушеная говядина 9 банок
Масло растительное 0,5 л бутылка
Чёрный перец, горошек минимальная тара
Гречка 1,8 кг
Сало 650 гр
Колбаса сырокопчёная 1500 гр
Сыр «Российский» 750 гр
Сыр копчёный (колбасный) 750 гр
Хлеб чёрный («Бородинский») 8 булок
Чай чёрный 200 гр
Чай чёрный, пакетированный 1 упаковка
Сгущённое молоко 3 банки/тубы
Шоколад 600 гр
Конфеты шоколадные 200 гр
Печенье-1 1,5 кг
Печенье-2 1,5 кг
Сахар 1,5 кг
Соль 150-200 гр

По деньгам вышло около 200 руб с человека

Котлов на такую ораву нужно штуки 4 с такими ТТХ:

  • 12 литров - для питания
  • 10 литров - для чая
  • 5-7 литров - для хознужд
  • 3 литра - для тушения (тушил тушёнку, морковь, лук), или глубокая сковородка (но она, обычно, тяжелее)

Во вторник Коля делает основную массу закупок и отвозит всё это добро в клуб в одной коробке.

Среда, последний сбор

В среду притащил свой 110л рюкзак в клуб для загрузки группового снаряжения: котлов, топора, пилы, сам захватил 4м полиэтиленовой плёнки (легче китайского тента, более компактна и более прочна, если применять для технических нужд, типа закрыть дрова на ночь, от возможного дождя/снега/тайфуна), получил плакаты, мегафон для судей, стол, скамейки.

Как всё было получено, замотано, заложено, сгрузили всё в одно место для погрузки на фуру.

А в клубе тем временем суета: народ разбирает, проверяет и упаковывает велосипеды, каты…

Когда уже вышли из клуба, позвонил Коля, предложил озадачится газовой плиткой (с 5л пропановым баллоном), решили, что по такой погоде сия затея более чем здравая! Правда, как в последствии выяснилось - не без оговорок :)

Отъезд

Пятница (и снова не тринадцатое!), на работу притопал уже собранным, опять мелкие подколки от коллег, но и мы не лыком шиты! :)

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

Выехали почти по хронометру в 19.00 и… сразу же встали в пробку, выбирались до 19 КП (после которого движение стало чуть живее) около 6-7 часов, за всю последующую дорогу сделали только одну остановку в Уссурийске и всё равно, добрались до Кавалерово, к интернату, только к 8 утра. Народ кое как подремал, но отдыхом это трудно было назвать.

Старт

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

Я выдал Игорю мегафон, растянул с Колей плакаты старта и ПФСТ, где-то помогал нашим гринтуровским что-то подтащить, что-то помочь. Благодаря Маше, договорились о доставке нас на пит-стоп.

Готовились долго, несколько не вложились в регламент мероприятия, так что сразу пошла задержка. Но вот построение, приветственные речи, Кате с Марсиком под звуки гимна предоставляют честь поднять флаг, чем ознаменовать открытие соревнований. Ещё немного речей и участники отправляются на старт.

  1. На старт!
  2. Внимание!
  3. Марш!

И, несмотря на непогоду и штормовое предупреждение, экстремальная гонка началась!

Пит-стоп

Через некоторое время мы с Женей, Колей и Машей отправляемся на пит-стоп, по дороге прибываем указатели направления, куда ехать.

Хорошей идеей от дядьки Live было купать разовой посуды - реально пригодилось, а так же частично пользовалось и в лагере, на ночёвке, и даже на финише.

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

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

Готовлю суп (плюс навернулся когда спускался к реке), грею чай, головой отвечаю за Марсика. Маше предоставилась возможность немного покимарить в машине. К моменту первого финиша (Зелёный и Ко) уже готово всё для питания, успели буквально впритык, но успели :) Встречаем наших, гоним на кормежку и обогрев, правда кто-то сразу начинает заниматься сборкой катов. С Марсиком встречаем экипаж Кати и Олега, отдаю её свою мембранку, что бы хоть чуточку теплее было.

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

Реакция участников не однозначна - кто-то радуется такому обороту событий, кто-то ворчит (на самом деле, я думаю, они тоже рады были :))

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

Вечер

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

Присоседились к костру к ребятам из Партизанска (команда “Сучан”, а в народе, за их каски - “Англичане”), перетащили продукты, стол, лавки, выдал удлинитель организаторам, выдал рекомендации по подготовке продуктов (чистка картофеля, нарезка лука, моркови), с Колей малость попилили дров (потом меня заменили). Дальше занялся готовкой ужина - картофеля с мясом (получился правда больше картофельный суп, да и мясом тушняк можно назвать с большой натяжкой :))

Спасибо Кате и Олегу, что тем временем поставили палатку, от меня потребовалось только закинуть свои спальные вещи во внутрь.

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

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

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

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

Утром подъём в 5.30, что бы успеть приготовить ребятам завтрак, а то старт в 8.00.

Утро

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

Ботинки мокрые… благо взял две пары шерстяных носок - пока пропитались ноги уже расходились и согрели ботинок.

Утром опасался, что станет проблемой развести костёр, но нет: сохранились горячие угли под слоем золы. Топориком натесал щепы и стружек, аккуратно размёл золу, выложил колодец, оставил немного прогреться дровишкам. Тем временем нарубил ещё немного полешек. Когда костёр начала дымить, поработал чуть хобочкой и, почти сразу, огонь вспыхнул. Но этой ноте потопал будить Николая. Ему передались бразды правления костром, а сам занялся готовкой: гречка с тушёнкой, чай.

А лагерь тем временем просыпался, просыпались и судьи. К моменту объявления: “старт первой команды на троллей через сорок минут”, завтрак был почти готов.

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

Шаг, последний, больше шагов не осталось
Сердце похолодело - держись!

Старт первой команды. Маша помогает и моет котлы. Пока идут команды успеваем накипятить воды и разлить по термосам (хороший жаркий костёр - залог успеха, а так же спасибо соседям за костровую решётку!). Упаковываемся и собираем лагерь, обожжённые банки закапываем в землю - так они значительно быстрее разложатся, да и не будет кострище глаз мозолить грудой железяк.

Упаковываемся сами, ходим перекладываем коробки для велосипедов, готовим их к погрузке на транспорт. В лагере помогаем судьям снять тенты, сбухтовать верёвки, загрузить рюкзаки по машинам и распределить народ по оным (спелики - скромность не всегда полезное свойство!) для доставки на финиш.

На одной машине Коля заменил сильно уставшего с вечера водителя :)

Так потихоньку и выбрались, у трассы только загрузили коробки и вперёд, в Кавалерово, к финишу команд.

На небе тем временем пыталось выглядывать солнце…

Финиш

Финиш устроили на центральной площади (или нет?). Помогли расстелить тенты, выгрузить на них рюкзаки, прикрыть их от дождя - солнце так и не смогло побороть густые облака. Вытащили столик, термоса, сделали нарезку колбасы, сыра, в общем, достали всё, что можно быстро приготовить и умять за обе щёки. Растянули плакаты соревнований и ПФСТ.

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

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

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

Сборы, погрузка, обратный путь.

А у меня отлегло - свою задачу я, вроде, выполнил :)

Как итог

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

Обоз на подобных соревнованиях крайне нужная и полезная штука. Далее на уровне тезисов:

  • На 10 человек должно быть два обозника, причем обязательно, что бы у них был свой транспорт, дабы не зависеть сильно от судейского для забросок на питстопы, на базу.
  • Готовить питание в нужные сроки получается даже без сильной спешки.
  • Хорошо бы иметь свой транспорт и для заброски снаряжения (например катов на старт водного этапа), вещей к месту ночёвки (хотя бы просто как можно ближе, если нет возможности проехать).
  • Газовая печка штука хорошая, но нужна ветро-защита.
  • На котлы нужны крышки!
  • Не забывайте половники!
  • Разовую посуду (глубокая миска, большая ложка, стаканчики) стоит брать всегда, в количестве N*1.5, где N - число участников обоза.
  • Утром второго дня делать плотный завтрак - народ на финиш приехал поголовно голодным.
  • На финиш планировать кипяток в термосах (и озадачивать народ что бы отдавали термоса), бутерброды с колбасой, сыром, сладкое. Хлеб на финиш можно не планировать - купить можно в местных магазинах.
  • Что вспомню - допишу :)

Фото 1: http://ua0ljj.bdk.com.ru/travel/2011/kavalerovo_2011/index.html

Фото 2: http://spider.bdk.com.ru/2011/2011-04-24-petlya/

Статья на примамедиа: http://primamedia.ru/news/25.04.2011/153337/sorevnovaniya-po-sportivnomu-turizmu-proshli-v-primore-v-ekstremalnih-pogodnih-u.html

Apr 26, 2011 - 2 minute read -

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 - programming c++

Image Ruler 0.98.1

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

Изменений минимум:

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

Apr 7, 2011 - 1 minute read - 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 -

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

Цикл статей про источники питания: http://naf-st.ru/articles/ip/

Apr 1, 2011 - 1 minute read - 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 - 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 - 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 - linux

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

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

Mar 16, 2011 - 1 minute read - 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

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