OpenID
Всё, снова работает на сайте. Под формой ввода логина/пароля ссылка для входа при помощи OpenID
Всё, снова работает на сайте. Под формой ввода логина/пароля ссылка для входа при помощи 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, не зависимо от настроек сайта, это:
encodeURI()
encodeURIComponent()
Различия между ними можно посмотреть в этой статье (и о escape()
так же):
http://habrahabr.ru/blogs/webdev/17640/, после чего выберите ту, которая по вкусу.Но этого не достаточно, в самом плагине, нужно открыть файл helper.php и заменить все вхождения
htmlentities($some_text_var)
на
htmlentities($some_text_var, ENT_COMPAT, "UTF-8")
Дело в том, что у htmlentities()
, согласно документации, кодировка по умолчанию ISO-8859-1, за подробностями в документацию (умный форматировщик кода у меня тут, даже ссылки сразу на первоисточники поставил, пользуйтесь).
UPD2: Все, эти пляски не нужны, автор обновил версию, за что ему большое спасибо :)
Коротко: include плагин некорректно закрывает <div>
если задана опция отображать только первую секцию, в результате может поехать… Ну сами догадайтесь.
Исправление, подразумевается, что мы в директории plugins:
_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
На правах реминдера.
позволяет включить для видео тег
<video>
и забыть о необходимости флеша. Работает сразу в chrome/chromium, для Firefox есть расширение которое заменяет тег на
<embed>
и после этого нормально работает.
Статей на эту тему много, к примеру:
Но нигде не нашел внятного объяснения как сохранять права доступа, группу и владельца, особенно, если удаленный сервер (backup-сервер) работает не от пользователя root.
В общем, постановка задачи:
Поставил из любопытства, в частности поглядеть на новые средства конфигурации для Input устройств - теперь HAL не используется, а используется, в Linux (кстати, а как на других *nix?), UDEV.
Сразу, для олдовых мужиков, которые издревле конфигурировали иксы через /etc/X11/XFree86.conf или /etc/X11/xorg.conf, тут практически ничего не изменилось:
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 из основных изменений:
Как обычно версия для Windows отстроена путем кросс-компиляции, требуется тестирование.
Как оказывается спокойно с выключенным IM.
Да, вот тут раздача свена, друг, ещё будучи в VL LUG начинал портировать, потом долго мутили немцы: http://www.linux.org.ru/forum/games/4773950
Сегодня ходили с Настей на Фалазу в однодневку. В субботу вечером погода пугала серыми низкими облаками, хотя на вопрос от Насти по поводу погоды в воскресенье, уверенно ответил - все отлично, прогноз погоды я ещё не знал. Перед сном таки заглянул и, надо же, действительно - отлично :)
В начале десятого уже выгрузились в Анисимовке, на сопках виднеются снежные шапки, начинают вкрадываться сомнения в успехе и целесообразности нашего безнадежного дела, но активным движением в сторону горнолыжки зажимаем свои сомнения в кулак.
По дороге на горнолыжку, несколько не доходя до Пасеки, случился, не нарочно, классический акт стопа попутки (ну откровенно говоря водитель сам остановился..): Настя отходит с дороги по своим делам, я высматриваю корягу, говорю, рядом с ней полежу. Пока делаю сиё труднейшее дело, слышу шум приближающейся машины и, чуть недоезжая, она останавливается. Мне любопытно, поднимаю голову: Настя вышла на дорогу, дверь открыта, разговаривает с водителем, и тут из-за коряги выруливаю я… А ситуация получилась такая: она вышла на дорогу и водителеть притормозил, открыл дверь, спросил куда и предложил садиться, Настя сказала, что не одна (в этот момент выруливаю я). Таким образом с ветерком доезжаем до самой горнолыжке за что, Человеку, большое спасибо :)
Дальше подъем, поднялись по боку трассы до верху, снег тут плотный, влажный. Наверху трассы несколько сместили тропу, сейчас проще подняться до самого конца подъемника и за ним чуть спуститься, высмотреть метки на деревьях краской и топать по тропе. Предварительно спустились вниз к домикам, запаслись водой, на всякий случай. Я надел бахилы.
Тропа пока хорошая, достаточно прочная, но временами таки проваливались по самый пояс. Ненароком вспомнилась сцена из фильма “Властелин колец”, когда герои передвигались по снегу - все проваливались, а эльф бежал по снегу, тогда и родилась присказка которой сопровождалось каждое проваливание: эх, все таки мы не эльфы :)
По тропе вышли на хребет, подниматься было тяжко, решено сделать привал. Находим, как грачи, проталину, Настя быстро собирает “порох” на растопку, я пока подыскивают полешки, что бы удобно сложить костер - вскипятить чаю. Пока собираю, поддтаскиваю, она разводит огонь. Перекусываем, пьем чай, тратим около 40-60 минут, но душевно. Формируем программу-максимум и несколько вариантов программ-минимумов.
Программа максимум:
Программы минимумы:
Выполнили, забегая вперед, программу-максимум :)
Костер после привала затушили: большие палешки повтыкал в снег, мелкие угли присыпали снегом, на всякий. После перекуса стало заметно веселее идти, атож, организм не дурак покушать :) Кроме того, развился навык болталогии, хотя дыхание сбивалось, но болтали о всякой ерунде и не только, вставляя “мы не эльфы” время от времени. По пути встрели группу туристов из пяти человек, судя по рюкзакам - были с ночевой или шли откуда-то далеко (типа траверса или..) из за больших рюкзаков, были тяжелее, поэтому они были точно не эльфы) Кроме того, попутно представляли как будет выглядеть обратная дорога, прикидывали, как лучше, сразу на пятой точке скатываться или использовать её только как средство экстренного торможения, сошлись на том, что на месте решим.
И вот, внезапно, вершина :) Прекрасный вид. На ней опять поставили крест, следанный из подручных материалов - молодцы ребята, кто это сделал, а вот священно-служителям я бы рекомендовал лично такие места посещать, а то по-отрастили брюха, забыв про грех чревоугодия, ну да не я им судья. Осмотрелись, почти сразу за нами поднялись две девочки - Надя и Марина (познакомились чуть позже). Перебросились парой приветственных фраз, приглашаем на обратном пути, если успеют, присоединиться к нашему привалу с костром и чаем. Сказали, отправляемся в обратную дорогу.
Первая часть спуска (до нашего бивуака) была веселой и быстрой, скатывались как на лыжах, тормозя за деревья или любимой частью тела, на которую всегда находятся приключения. Попутно шутили, почему некоторые ёлочки наклонены в строну спуска, сошлись на том, что это их карма быть стопорами, помошниками в торможениях.
На старом бивуаке вновь разводим костер, достаточно быстро кипятим воду для термоса и прямо в нем завариваем чай. Ставим второй котелок, малость перекусываем. Только поспевает чай, подходят девчата, те, которых встретили наверху, тут уж знакомимся, представляемся. Угощаемся чаем и шоколадками. Обратную дорогу идем вместе. Настя подсушивает обувь, носки, у меня влажно, но не хлюпает - польза от бахил явная.
Вторая часть спуска до горнолыжки чуть более трудна - снег тут за день больше подтаял и чаще проваливаемся, хотя тоже быстро преодолеваем. Идя после по дороге, думаем, что хорошо бы кто опять остановился и подбросил, с этими мыслями и болтавней, плавно и незаметно дошли до самой деревни. По дороге находим первого клеща (его проблемы).
В деревне нас встречают собачки, которые за годы жизни много встречались с туристами и научились понимать, когда у них можно по-клянчить какие-то вкусности, мы не можем устоять перед их благодарным и просящим взором, скармливаем остатки сала и колбасу с сыром и обеспечиваем себя экскортом до самой станции :)
За время похода и поездки в электричке пришел к выводу, что болтологию нужно рассматривать с точки зрения релятивисткой механики: расстрояния проходятся быстрее за разговором. Правда пока затрудняюсь сейчас ответить, что именно происходить: сокращение расстояния или убыстрение тока времени. Нужно, однако, садиться за научный труд :laughing: Хотя иногда трудно говорить при ходьбе, да и дышать больше ртом приходится, что бывает чревато.
Кроме того, заметил, что рюкзак нужно иметь всегда с поясным ремнем (пошел со своим спортивно-городским), потому как, даже не очень тяжелый рюкзак, который давит только на плечи, значительно утомляет спину, а с ремнем можно часть нагрузки перенести на поясницу, тем самым повысив комфорт в движении.
Ну все, до новых встреч и новых знакомст в лесу, если всопмню что интересного - допишу.
UPD:
Фото, которые сделала Надя
А это стихи, которые она написала пока обратно ехали в электричке:
№1
№2
Сегодня ходили на водопад на ключе Левый Горбатый (один из “шкотовских водопадов”) в составе трех человек: Я, Юс, Лиза (хотя должно было быть 7 мордолиц), планировали на два дня но так сложилось, что обратились в однин. Но по порядку.
Для начала, на сайте Зеленого есть описание маршрутов на Шкотовское плато, от себя внесу небольшие коррективы как добираться туда, и выбираться от туда, описание для безлошадных :)
Для начала добираемся до Шкотово, сделать это можно на первой электричке, что идет из Владивостока до Тихоокеанской, отправляется в 6.21. Прибывает она примерно в 8.10-8.15, почти сразу есть автобус до Сергеевки, можно сесть до него, или в 9.05 есть автобус 564 (???) Уссурийск-Партизанск (уточните в кассе), если будет задержка.
На автобус садимся, берем билеты до села Центрального, но объясняем водителю, что не на повороте выходим, а чуть дальше “фазенды” (это определение услышал сегодня от водителя, говорит: тут выходят люди, которе потом напрямую в Центральное идут пешком, с поворота слишком круто), где выезд на лесовозную дорогу (географически находится точно севернее самого Центрального). В прошлом году водитель был злой, особо объяснений слушать не стал, сегодня почти как карета остановилась :) и всего 50 руб с человека, даже за багаж не взял - тут видать как повезет, но вообще, спасибо мужику :)
Ну а дальше топаем по дороге, проходим серпантин, дальше, когда обрыв станет слева от дороги, а сопка справа (до этого будет наоборот), спуск к водопаду отмечен кучей наклеек, веревочек на дереве, сегодня там висели буддийские флажки.
Ладно, теперь о впечатлениях.
Собрали в Шкотово, сели на автобус 9.05, доехали, шел мокрый снежок, приехав на поворот в вступив на лесовозную дорогу впечатлились просто страшной кашей из глины, на счастье нам, чуть подмерзшей, так что прошли без особых проишествий.
Пока шли, замечали увелечение снежного покрова и явное понижение температуры. Снег то усиливался, то стихал, то вообще переставал. Не пожалел, что взял свои бахилы - высокая галоша позволяла не волноваться о мокром снеге и мелких лужец под ним.
На место пришли около 13 часов, натянули тент, что бы защитить себя и рюкзаки от снега, на печке сделали чаю, попили, перекусили, немного накатили коньячку из фляжки. А вокруг красота: хвойные с толстыми снежными шапками, почти как в фильмах, сам водопад ещё подо льдом, но красоту и впечатления это не отменило: обзор шикарный. И воздух…
Ещё как пришли, все несколько мокрые - снег не сухой же, Юрка переоделся в сухое, я по старинной привычке - нет (лучше двигаться и не мерзнуть или развести костер), сидим, получился такой диалог:
Ю: тебе нормально, не мерзнешь?
Я: неа, нормально
Ю: как так, я в сухом и у меня жира больше!
Я: ну дык, зато у меня - качественней! :laughing:
Вот так, настоящие мужики всегда найдутся чем помериться :)
Обратно выдвинулись примерное в 15 часов. И вот стали замечать, обратный процесс со негом и температурой: ближе к дороге снега вообще не стало, зато дорога превратилась в наглядную демонстрацию весенней распутицы на Руси, а место въезда на грунтовку в сплошное глиняное болото - еле прошли.
Как вышли, в кустах на противоположной стороне дороги, разбили пикничок, почистили обувь, пока подъехал знакомый и добросил до Шкотово. Там, пока ждали, подъехали велосипедисты, что ехали с нами на первой электричке, оказалось с одним, Сашей, уже познакомились, буквально неделю назад - они с нашим общим знакомым ехали на сплав под Партизанск, в общем - Земля квадратная :) Они оказались из турклуба Гринтур, катались до Стеклянухи, там сплавлялись, тоже поделились впечатленями. В общем, доехали вместе в приятной компании, ведь турист туристу, друг, брат и лишняя банка тушенки :laughing:
В этом выпуске вторая часть моей статьи по схемотехнике в Linux: “Схемотехника в Linux с помощью gEDA. Часть 2: pcb”
Скачать выпуск: http://osa.samag.ru/get/OpenSource058.zip
PS выпуск первоапрельский, но вредительства нет :)