Как жаль, что очень многие сейчас забыли про проект
LinuxGazette, а ведь он живет и здравствует по сей день.
Как жаль что очень многие современные разработчики в сфере FOSS не читали статью от туда:
И не знают про цикл статей “Writing Documentation” в этой самой LinuxGazette:
В частности, POD оказался достаточно простым и ненакладным способом писать документации в виде страниц руководств (man-pages).
Люди, разработчики, программисты! Пишите документацию! Хорошая документация очень привлекает внимание к проекту, помогает разобраться в нем, легче написать какие-то модификации, патчи и, в конечном итоге, помочь ему и вам.
Примеры отвратительного документирования? Да пожалуй почти все творения FreeDesktop.org (по моему мнению, так их деятельность, это диверсия в рядах FOSS), к примеру HAL, для которого сначала написали реализацию, и, по-моему, до сих пор не существует спецификации, как результат - им показалось что HAL тяжел, разделили его на отдельные демоны-сервисы, а кто был завязан на него получили головную боль (особенно кто пользовался монтированием флешек/дисков, или тот же Xorg, которому пришлось придумывать свою систему для настроек подключенных на горячую устройств ввода).
Или xdg-utils… посмотрите man xdg-open (навеяно дискуссией в #archlinux-ru@FreeNode), вроде и есть, ну никакой ясности не вносит - кто, что будет открывать, какие браузеры или переменные окружения будут использоваться, какие окружения рабочего стола поддерживаются.
Ну и последнее, вы что нибудь можете сказать о загадочной утилите ck-launch-session из комплекта PolKit? Нет? Да она даже на –help или -h подсказки не выдает, кто она и что делает. А ведь применяется много кем, кто не использует gdm/kdm/etcdm, в знакомой мантре в .xinitrc:
exec ck-launch-session startkde
Проблема сводится к тому, что при запуске Xorg связь начинает умирать. Для восстановления достаточно переключиться в консоль. Причины и связи мне не понятны, и вообще фантастически выглядит решение проблемы: перепрошивка точки доступа. Вот где тут связь???
Пока разбирался, научился запускать драйвер ath5k - просто для его включения нужно активизировать 2 rfkill устройсва:
- сначала eeepc-wlan (см вывод rfkill list)
- после появится ещё одно - phy0, и активировать его
- затем, в обязательном порядке - ifconfig wlan0 up
после чего можно начинать работать.
Точка доступа (DWL-G700AP) же, была последним шагом - нет нормальной связи, так хоть поэксперементирую. Прошивку туда залил Wive-ng, она на базе ядра Linux 2.4, и очень значительно расширяет возможности точки, превращая её в полноценный маленький сервер с управлением по ssh/telnet:
- pppoe-client
- pptp-client
- dhcp
- iptables/nat
- балансировка трафика
- роуминг (прозрачный переход от точки доступа к точке доступа)
- vlan
- широкий диапазон регулировки мощности (больше чем в базовой поставке, но для значений больше 20, следует применять принудительное охлаждение)
- smbclient (но… не могу представить для чего :) если бы было память побольше, можно было бы туда запихнуть rtorrent с веб-интерфейсом (или даже без оного), а так…)
- и ещё всего и вся по мелочи
В результате и связь при запущенных Xorg поднялась. Хитрая уличная магия.
По прошивке и вообще точке доступа:
General:
Wive:
Wive-ng:
Всё, снова работает на сайте. Под формой ввода логина/пароля ссылка для входа при помощи OpenID
Есть у меня проектик, он как тестовый полигон, хоть код и достаточно в большом количестве поддается только одной характеристике: исторически сложилось. Но на нем первом я опробовал кросс-компиляцию для Windows из Linux. Теперь его же перевел в обучающих целях на
Cmake. Однако, все новое не должно отменять старых достижений, как следствие встал вопрос - а как теперь делать сборку для Windows?
С учетом того, что система сама по себе пока малознакома, решил понапрягать гугл (точнее:
http://google.com/linux)
Почти сразу нашел две статьи мини-цикла:
Сделав по этому методу, немного помучавшись, получил все-таки рабочее окружение для отстройки и собрал в проект. Но не давало покоя много ручной суетливой работы, и, практически, полный отказ от уже реализованных методов поиска Qt библиотек в Cmake.
Именно по вышеуказанной причине я решил продолжить изыскания. Поиском по готовым модулям Cmake нашел упоминание некой директивы CMAKE_TOOLCHAIN_FILE
, которая, по внутреннему ощущению, должна была мне помочь.
Дальнейший поиск привел меня на вики самого Cmake:
How to use MinGW to cross compile software for Windows, где было сказано про тот самый toolchain file. С минимальными изменениями поместил его в каталог cmake в корне дерева проекта.
Ниже приведу листинг этого файла, назвал его win32-x-mingw32.cmake, в адоптации для ArchLinux:
# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Windows)
# which compilers to use for C and C++
SET(CMAKE_C_COMPILER i486-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i486-mingw32-g++)
SET(CMAKE_RC_COMPILER i486-mingw32-windres)
# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH /usr/i486-mingw32)
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# next options is needed by some cases
#set(CMAKE_EXE_LINKER_FLAGS
# ${CMAKE_EXE_LINKER_FLAGS}
# -Wl,-subsystem,windows
# -Wl,-enable-auto-import
# -Wl,-enable-runtime-pseudo-reloc)
# Uncomment this if you have problem: unrecognized option '-rdynamic'
#set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)
set(MINGW32 1)
Это, конечно, не все, остались последние штрихи.
Использование данного тулчайна приведет к установке переменной CMAKE_CROSSCOMPILING
, на основании этого, перед вызовом
find_package(Qt4 REQUIRED)
или аналогичного, достаточно вставить (в случае ArchLinux и пакета mingw32-qt из
AUR или моей репы
mingw32) следующий код:
if(CMAKE_CROSSCOMPILING)
set(QT_HEADERS_DIR "/usr/i486-mingw32/include")
set(QT_LIBRARY_DIR "/usr/i486-mingw32/lib")
endif()
После этого сборка осуществляется примерно так:
mkdir win32-build
cd win32-build
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/win32-x-mingw32.cmake ..
make
Все! :)
PS проверено на Cmake 2.8.1 и Qt 4.6.2
Updated: обновлён файл тулчейна
Сегодня.
К заголовку приставить копирайт - один из комментов на хабре к этому:
http://www.youtube.com/watch?v=3-gVSKARKPM&hl=en&fs=1
Обсуждение на хабре:
http://habrahabr.ru/blogs/arbeit/94273/
Ну?
Внимание: статья полностью неактуальна ввиду переезда на статику в 2019 году.
Случайно наткнулся на плагин
dokubookmark, ставится в два движения, настраиваются неймспейсы… Но тороплюсь.
Для чего нужен: позволяет быстро создать web-закладку (а по сути запись в DokuWiki) на текущий сайт, помимо этого, сразу можете назначить теги (если стоит плагин
tag), автоматом так же вставится текущий выделенный текст (если он есть) на странице, это дело можете сразу подправить, выбрать направление: публичные или приватные закладки (для приватных закладок рекомендую отдельнную область имен (namespace), которой назначить, соответственно, ограниченные права) и сохранить.
Как их потом искать? В шаблоне по-умолчанию сразу ставится тег Bookmark, я рекомендую его не убирать, потом по этому тегу просматривать свои закладки. Помимо этого:
- по назначенным тегам, если озаботились этим
- поиском по сайту
Что бы это дело работало, создайте себе браузерную закладку (я бы предположил поместить её на панель закладок, если оная у вас включена), с любым именем и следующим содержимым в качестве адреса:
javascript:Q=document.selection?document.selection.createRange().text:document.getSelection();void(window.open('http://SITE/wiki/doku.php?do=dokubookmark&te='+encodeURIComponent(Q)+'&ur='+encodeURIComponent(location.href)+'&ti='+encodeURIComponent(document.title),'dokuwikiadd','scrollbars=yes,resizable=yes,toolbars=yes,width=680,height=520,left=210,top=150,status=yes'));
Только исправьте адрес и путь на сайте на свои.
Все, пробуйте :)
UPD: Поддержка кирилицы
Из коробки пока не работает нормально с кирилицей (решение ниже, оно же отправлено разработчику)
Вы можете заметить, что для экранирования передаваемой строки используется escape()
, так что кодировку строки-источника мы определить никак не сможем. Есть другие вызовы, которые так же экранируют строку, но в кодировке UTF-8, не зависимо от настроек сайта, это:
Но этого не достаточно, в самом плагине, нужно открыть файл helper.php и заменить все вхождения
htmlentities($some_text_var)
на
htmlentities($some_text_var, ENT_COMPAT, "UTF-8")
Дело в том, что у htmlentities()
, согласно документации, кодировка по умолчанию ISO-8859-1, за подробностями в документацию (умный форматировщик кода у меня тут, даже ссылки сразу на первоисточники поставил, пользуйтесь).
UPD2: Все, эти пляски не нужны, автор обновил версию, за что ему большое спасибо :)
Коротко: include плагин некорректно закрывает <div>
если задана опция отображать только первую секцию, в результате может поехать… Ну сами догадайтесь.
Исправление, подразумевается, что мы в директории plugins:
- открыть include/helper.php
- найти там функцию
_get_firstsec(&$ins, $page)
- найти в ней строку
php$ins[] = array('section_close');
- заменить на:
php$ins[] = array('section_close', array());
- очистить кеш
- радоваться :)
Вот так выглядело до исправления:
http://img153.imageshack.us/img153/1839/screenshoot201005221900.png
Так после:
http://img232.imageshack.us/img232/1196/screenshoot201005222034.png
UPD: написал письмо разработчикам, отреагировали быстро, в git уже есть изменения :)
Опять на правах реминдера:
http://pics.livejournal.com/alenkablazy/pic/0003rdsa/s640x480
На правах реминдера.
http://www.youtube.com/html5
позволяет включить для видео тег
и забыть о необходимости флеша. Работает сразу в chrome/chromium, для Firefox есть расширение которое заменяет тег на
и после этого нормально работает.
Статей на эту тему много, к примеру:
Но нигде не нашел внятного объяснения как сохранять права доступа, группу и владельца, особенно, если удаленный сервер (backup-сервер) работает не от пользователя root.
В общем, постановка задачи:
- инкрементный бекап
- клиент-сервер
- сохранять права доступа, владельца и группу
- сохранять только указанные директории, представлять возможность исключения по паттерну, делать исключения в исключениях :)
- выполнение каких-то операций пред выполнением резервирования
Поставил из любопытства, в частности поглядеть на новые средства конфигурации для Input устройств - теперь HAL не используется, а используется, в Linux (кстати, а как на других *nix?), UDEV.
Сразу, для олдовых мужиков, которые издревле конфигурировали иксы через /etc/X11/XFree86.conf или /etc/X11/xorg.conf, тут практически ничего не изменилось:
- появилась возможность “дробить конфигурацию”, ложить в отдельных файликах в /etc/X11/xorg.conf.d
- именно для Input-устройств появилась новая конфигурационная секция (что бы все драйверы не грузились, только нужное) -
InputClass
о которой можно так же почитать в man xorg.conf (там обратите внимание на новые директивы, которые помогают определять устройство, всякие Match*
)
Теперь, как узнать различную информацию которую можно подсунуть этим самым Match*
?
Тут рекомендуют обратиться к udevadm, но отчего-то у меня она оказалась мало-информативна. Воспользовался логикой: UDEV берет информацию из SYSFS, при помощи правил в /etc/udev/rules.d добавляет/модифицирует свою, но основную можно глянуть и самому в SYSFS. Для этого идем в /sys/class/input делаем ls и смотрим сколько у нас тут всякого! По крайней мере у меня на EeePC:
$ ls
event0 event11 event4 event7 input0 input11 input4 input7 mice
event1 event2 event5 event8 input1 input2 input5 input8 mouse0
event10 event3 event6 event9 input10 input3 input6 input9 mouse1
Ну а потом обзором по всем этим устройствам, меня больше интересовало имя моего тачпада, это оказалось устройство event10:
$ cat /sys/class/input/event10/device/name
ETPS/2 Elantech Touchpad
Там и другие файлы, другая информация есть, смотрите что нужно.
Из остальных: event1 оказался клавиатурой, там же оказались и ACPI кнопки типа Power Button (event5, event6 - почему только два?), Sleep Button (event4), встроенная usb веб-камера (event8), PC Speaker (event11). Унификация, фигли :)
Ну и вот мои конфиги:
-
Для тачпада: /etc/X11/xorg.conf.d/09-elantech.conf```
Section “InputClass”
Identifier “touchpad catchall”
# Как я получил имя продукта, описано выше
MatchProduct “ETPS/2 Elantech Touchpad”
Option "SHMConfig" "on"
Option "MaxSpeed" "1.00"
Option "MinSpeed" "0.75"
Option "Emulate3Buttons" "on"
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "1"
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
Option "LockedDrags" "11"
Driver "synaptics"
EndSection
* Для переключения раскладки клавиатуры: **/etc/X11/xorg.conf.d/09-keymap.conf**```
# Мои общесистемные настройки переключения клавиатуры для Xorg 1.8
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
Option "XkbModel" "evdev"
Option "XkbRules" "base"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:lwin_toggle,grp_led:scroll,compose:ralt,terminate:ctrl_alt_bksp"
EndSection
Немного более детально можно почитать:
PS на правах хинта, а то постоянно вылетает из головы: получить базовый xorg.conf: X -configure или Xorg -configure
Выпустил версию 0.4.0 из основных изменений:
- добавлена поддержка подложки (фоновой картинки), для реализации отображения синнузий
- поддержка импорта из текстовых файлов данных с возрастом, плюс реализована совместимость со старыми форматами
- оптимизация отрисовки проекций крон: реализована отрисовка кривыми Безье
- экспорт построений в SVG
Как обычно версия для Windows отстроена путем кросс-компиляции, требуется тестирование.
Полный список изменений:
ChangeLog
Скачать:
Download
Как оказывается спокойно с выключенным IM.
Да, вот тут раздача свена, друг, ещё будучи в VL LUG начинал портировать, потом долго мутили немцы:
http://www.linux.org.ru/forum/games/4773950
Сегодня ходили с Настей на Фалазу в однодневку. В субботу вечером погода пугала серыми низкими облаками, хотя на вопрос от Насти по поводу погоды в воскресенье, уверенно ответил - все отлично, прогноз погоды я ещё не знал. Перед сном таки заглянул и, надо же, действительно - отлично :)
В начале десятого уже выгрузились в Анисимовке, на сопках виднеются снежные шапки, начинают вкрадываться сомнения в успехе и целесообразности нашего безнадежного дела, но активным движением в сторону горнолыжки зажимаем свои сомнения в кулак.
По дороге на горнолыжку, несколько не доходя до Пасеки, случился, не нарочно, классический акт стопа попутки (ну откровенно говоря водитель сам остановился..): Настя отходит с дороги по своим делам, я высматриваю корягу, говорю, рядом с ней полежу. Пока делаю сиё труднейшее дело, слышу шум приближающейся машины и, чуть недоезжая, она останавливается. Мне любопытно, поднимаю голову: Настя вышла на дорогу, дверь открыта, разговаривает с водителем, и тут из-за коряги выруливаю я… А ситуация получилась такая: она вышла на дорогу и водителеть притормозил, открыл дверь, спросил куда и предложил садиться, Настя сказала, что не одна (в этот момент выруливаю я). Таким образом с ветерком доезжаем до самой горнолыжке за что, Человеку, большое спасибо :)
Дальше подъем, поднялись по боку трассы до верху, снег тут плотный, влажный. Наверху трассы несколько сместили тропу, сейчас проще подняться до самого конца подъемника и за ним чуть спуститься, высмотреть метки на деревьях краской и топать по тропе. Предварительно спустились вниз к домикам, запаслись водой, на всякий случай. Я надел бахилы.
Тропа пока хорошая, достаточно прочная, но временами таки проваливались по самый пояс. Ненароком вспомнилась сцена из фильма “Властелин колец”, когда герои передвигались по снегу - все проваливались, а эльф бежал по снегу, тогда и родилась присказка которой сопровождалось каждое проваливание: эх, все таки мы не эльфы :)
По тропе вышли на хребет, подниматься было тяжко, решено сделать привал. Находим, как грачи, проталину, Настя быстро собирает “порох” на растопку, я пока подыскивают полешки, что бы удобно сложить костер - вскипятить чаю. Пока собираю, поддтаскиваю, она разводит огонь. Перекусываем, пьем чай, тратим около 40-60 минут, но душевно. Формируем программу-максимум и несколько вариантов программ-минимумов.
Программа максимум:
- Дойти до вершины, насладиться видом, спуститься, сделать чаю в термос, сделать чаю на привал, дойти и успеть на электричку
Программы минимумы:
- Дойти до вершины, быстро спуститься, успеть на электричку. Чай не делаем.
- Не дойти до вершины, топать до часа Ч, поворачивать назад, делать чай, успевать на электричку
- Не дойти до вершины, топать до часа Ч, поворачиваться назад, не делать чай, успевать на электричку
- Предыдущее с неуспеванием на электричку :simple_smile:
Выполнили, забегая вперед, программу-максимум :)
Костер после привала затушили: большие палешки повтыкал в снег, мелкие угли присыпали снегом, на всякий. После перекуса стало заметно веселее идти, атож, организм не дурак покушать :) Кроме того, развился навык болталогии, хотя дыхание сбивалось, но болтали о всякой ерунде и не только, вставляя “мы не эльфы” время от времени. По пути встрели группу туристов из пяти человек, судя по рюкзакам - были с ночевой или шли откуда-то далеко (типа траверса или..) из за больших рюкзаков, были тяжелее, поэтому они были точно не эльфы) Кроме того, попутно представляли как будет выглядеть обратная дорога, прикидывали, как лучше, сразу на пятой точке скатываться или использовать её только как средство экстренного торможения, сошлись на том, что на месте решим.
И вот, внезапно, вершина :) Прекрасный вид. На ней опять поставили крест, следанный из подручных материалов - молодцы ребята, кто это сделал, а вот священно-служителям я бы рекомендовал лично такие места посещать, а то по-отрастили брюха, забыв про грех чревоугодия, ну да не я им судья. Осмотрелись, почти сразу за нами поднялись две девочки - Надя и Марина (познакомились чуть позже). Перебросились парой приветственных фраз, приглашаем на обратном пути, если успеют, присоединиться к нашему привалу с костром и чаем. Сказали, отправляемся в обратную дорогу.
Первая часть спуска (до нашего бивуака) была веселой и быстрой, скатывались как на лыжах, тормозя за деревья или любимой частью тела, на которую всегда находятся приключения. Попутно шутили, почему некоторые ёлочки наклонены в строну спуска, сошлись на том, что это их карма быть стопорами, помошниками в торможениях.
На старом бивуаке вновь разводим костер, достаточно быстро кипятим воду для термоса и прямо в нем завариваем чай. Ставим второй котелок, малость перекусываем. Только поспевает чай, подходят девчата, те, которых встретили наверху, тут уж знакомимся, представляемся. Угощаемся чаем и шоколадками. Обратную дорогу идем вместе. Настя подсушивает обувь, носки, у меня влажно, но не хлюпает - польза от бахил явная.
Вторая часть спуска до горнолыжки чуть более трудна - снег тут за день больше подтаял и чаще проваливаемся, хотя тоже быстро преодолеваем. Идя после по дороге, думаем, что хорошо бы кто опять остановился и подбросил, с этими мыслями и болтавней, плавно и незаметно дошли до самой деревни. По дороге находим первого клеща (его проблемы).
В деревне нас встречают собачки, которые за годы жизни много встречались с туристами и научились понимать, когда у них можно по-клянчить какие-то вкусности, мы не можем устоять перед их благодарным и просящим взором, скармливаем остатки сала и колбасу с сыром и обеспечиваем себя экскортом до самой станции :)
За время похода и поездки в электричке пришел к выводу, что болтологию нужно рассматривать с точки зрения релятивисткой механики: расстрояния проходятся быстрее за разговором. Правда пока затрудняюсь сейчас ответить, что именно происходить: сокращение расстояния или убыстрение тока времени. Нужно, однако, садиться за научный труд :laughing: Хотя иногда трудно говорить при ходьбе, да и дышать больше ртом приходится, что бывает чревато.
Кроме того, заметил, что рюкзак нужно иметь всегда с поясным ремнем (пошел со своим спортивно-городским), потому как, даже не очень тяжелый рюкзак, который давит только на плечи, значительно утомляет спину, а с ремнем можно часть нагрузки перенести на поясницу, тем самым повысив комфорт в движении.
Ну все, до новых встреч и новых знакомст в лесу, если всопмню что интересного - допишу.
UPD:
Фото, которые сделала Надя
А это стихи, которые она написала пока обратно ехали в электричке:
№1
Когда не на пару и не на работу
Встается легко в без пятнадцати пять,
И адреналин прогоняет дремоту
Когда начинаешь ботинки искать…
Но завтрак сготовлен и собран рюкзак,
Созрел в голове план коварный похода,
Нельзя упустить электричку никак
И вдаль повела нас тропа от порога.
Нас лес повстречает прохладой весенней,
Прибавив для вкусу дорожную грязь.
И после цепочка из этих мгновений
Нас в каменных джунглях согреет опять.
Дорога к вершине – в капризах из наста,
И снег норовит заползти в башмаки
Еще б потеплей - и нужны будут ласты,
Но в них не удобно по лесу ползти…
Нас мало по малу пускает Фалаза,
И небо к нам ближе стало чуть-чуть
Становиться жить разноцветнее сразу,
И рядом маячит Вселенская Суть!
№2
Как-то раз на выходные
Мы ударились в бега.
Взяли тапки запасные,
Взяли в термосе чайка.
Без потерей мы добрались,
На вершине - солнца свет.
Мы б от счастья разорались,
Но там был уже дуэт!
Саша с Настей не орали,
И не прыгали везде,
Ну, мы их зауважали,
Расспросили: че, да где.
Они стрелку нам забили,
На хребте да у костра
Там все вместе чай попили,
Но дорога нас ждала.
Электрон не за горами
Пешкодрапом – два часа.
Восхищались небесами,
Говорили про леса…
По пути нас провожали
Два дворняги – другана,
Колбасы когда им дали
Обещали ждать всегда.
Вобщем мы в больших надеждах
На совместный вновь поход,
Может, на вершинах снежных,
Может и наоборот!