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