Архив автора: admin
aiohttp 0.14
Из вкусного — Web Sockets для aiohttp.web серверов, оптимизация скорости работы, множество мелких улучшений.
Полный список изменений — здесь.
Автор: Andrew Svetlov
Запуск Android программ в Linux
Google дал для своего детища ChromeOS, который по сути своей Linux, возможность запускать Android приложения. По иронии судьбы, Android — это то же Linux с Java машиной ART в новых версиях и Dalvik в старых. Теперь в Linux мы мучаемся с запуском программ, написанных для несколько иной Linux системы на кроссплатформенном языке Java. Технология называется App Runtime for Chrome или кратко ARC, которую разработали Кен Микстер (Ken Mixter) и Джош Вудвард (Josh Woodward).
Первые релизы ARC, которая ещё делает свои первые шаги, шли с ограничениями типа: работало некоторое количество приложений и только в ChromeOS. Разработчик НЕ из Google по имени Влад Филиппов ака vladikoff устранил ограничения и представил свою версию ARC под названием ARChon. Нам понадобится браузер Google Chrome старше 37 версии и всё что мы будем делать — это использовать API расширений Chrome. Гугловский ARC — это расширение. ARChon — расширение. Все программы Android, что вы установите — это расширения.
Если вы будете использовать ARChon, то вы замените Google ARC, но не удалите его. Так что процедура безболезненная и не опасная.
Установка Архона.
Предполагаю, что с установкой Google Chrome вы уже справились. Осталось зайти на ARChon Custom Runtime Guide и скачать нужной архитектуры ARChon. Скачав архив, распакуйте его.
И тут остановитесь. Минутка истории! Начиная c Chrome 35 для ОС MS Windows, Google решил запретить установку новых и работу прежде установленных расширений, размещённых НЕ в магазине Chrome WebStore. Потом был полный запрет сторонних расширений в мае 2014 года. Теперь чтобы установить стороннее расширение даже если вы ему доверяете, нужно провернуть несложный финт ушами.
Нам нужно в Терминале запустить Google Chrome вот так:
google-chrome --enable-easy-off-store-extension-install
Теперь через Инструменты -> Расширения можно добавить скачанный и распакованный Архон. Поставьте галочку «Режим разработчика» и нажмите «Загрузить распакованное расширение». Укажите на распакованный каталог Архона, игнорируя предупреждения.
Установка Android программ в Linux без проблем.
Сообщество подготовило обширный список программ, с указанием статуса работоспособности и URL. Вам осталось посетить онлайн электронную таблицу Chrome APK Official Apps List. Я никогда не кидал свиней в птиц и решил, что самое время проверить возможность работы Android программ в Linux'е на примере именно этой игрушки Angry Birds. Скачал, распаковал, добавил как расширение и запустил.

Установка Android программ в Linux через /dev/ass.
Как быть если на руках есть только пакет с Android программой в формате apk? Сначала проверьте в Chrome APK Official Apps List чтобы данная программа не была в красном цвете статуса Crash или Unusable. Я наивно полагал, что справлюсь с игрушкой Plants vs Zombies v1.2, но она обломала мне рога. И тут я вспомнил, что для популярной игры World of Tanks есть программа-помощник World of Tanks Assistant. Скачать apk из Google Play мне помог сайт apk-dl.com, выдав прямую ссылку на требуемое.
Теперь нам нужен инструмент chromeos-apk, который позволяет конвертировать пакет apk в удобоваримое расширение:
- Ставим Node Package Manager:
sudo apt-get install npm
- Качаем node.js. Чтобы не заморачиваться с исходниками и не компилировать какой-либо софт в Убунту с пакетным менеджментом, выбираю Linux Binaries (.tar.gz). Распаковываю архив и запоминаю путь к нему. Бинарник node оказался у меня в /home/brovko_rs/temp/node/bin/
- Обновляю до последней версии chromeos-apk
sudo npm install -g chromeos-apk@latest
- Перехожу в каталог с файлом ru.worldoftanks.mobile_1.8.2.apk и конвертирую, подсказывая где взять бинарник node:
PATH=$PATH:/home/brovko_rs/temp/node/bin chromeos-apk ru.worldoftanks.mobile_1.8.2.apk
Должно быть выдано подобное:
Directory " ru.worldoftanks.mobile.android " created. Copy that directory onto your Chromebook and use "Load unpacked extension" to load the application.
- Установка WoT Assistant в виде расширения через Инструменты -> Расширения закончилось неудачей, как до этого и Plants vs Zombies. Дело в том, что нужно из файла ru.worldoftanks.mobile.android/manifest.json взять строку
"name": "ru.worldoftanks.mobile"
и, превратив её в
"message": "ru.worldoftanks.mobile"
, добавить в файл ru.worldoftanks.mobile.android/_locales/en/messages.json в раздел extName
"extName": {
"description": "Extension name",
"message": "ru.worldoftanks.mobile"
}Теперь установка программы в виде расширения должна закончиться успешно. Это помогло WoT Assistant, но не помогло Plants vs Zombies, который установился, но продолжал к
рашиться. - Можете закрепить Android программы в Unity Launcher, чтобы в дальнейшем быстро вызывать программу. Ведь никто визуально даже не догадается, как это запущено и как это работает. Главное работает!

Твики.
Программы в мире Android привыкли работать на мобильных устройства: смартфонах и планшетах. Окно программы вписывается в невидимое устройство и, если вам хочется сделать resize, чтобы было покрупнее, то это вполне можно сделать. В папке, которая содержит распакованный Archon есть 2 файла gen_main.min.js и gen_index.min.js
Найдите в них
tablet: {"long": 1280, "short": 800}и подправьте под свои нужды.
Более действенно будет добавить
"resize": "scale"
в раздел arc_metadata в файле manifest.json у самого приложения. После всех манипуляций не забудьте Перезагрузить (Ctrl+R) расширение.
Если у приложения нет своего значка, то на панели Unity Launcher будет дефолтный значок зелёного робота. Самый простой способ сменить значок — это любой понравившийся значок положить в распакованную папку приложения, затерев там icon.png. Остальное произойдёт без вас автоматически.
Вот в принципе и всё! Если вам чего-то не хватало из мира Android и вы страстно хотели это запустить в своей Linux системе, то теперь есть реальный шанс сделать это.
Дополнительные материалы:
Проект по запуску Android приложений в Ubuntu.
Андроид программы в Ubuntu через AVD.
LXC 1.0: Более углублённое использование контейнера. Установка Android в контейнер LXC.
Автор: Roman Brovko
Когда начинается старость и как сохранить Молодость!
Когда начинается старость и как сохранить Молодость!
Во сколько лет мы начинаем стареть?
От чего зависит наступление старости?
Как развивается старость?
Как выглядит старость?
Как противостоять процессу старения?
как выглядит. Пора ответить на главный вопрос: как с ней бороться?
Итак, что делать?
Мы подошли к тому, чтобы поговорить о наиболее действенных методах борьбы со старением, – о продуктах серии AGEXPERT™, которые разрабатывались именно с этой целью.
Подведем итоги
Как распределяется вес страницы сайта при внутренней перелинковке сайта
Привет всем! Сегодня хотелось бы рассказать Вам о таком важном моменте в продвижении сайта, как распределение веса на страницах сайта. Все Вы слышали, что с помощью внутренней перелинковки можно увеличить вес страниц, которые продвигаются в поисковых системах. Правильное распределение веса на сайте — одно из составляющих частей внутренней оптимизации.
Сайтам, которые монетизируются контекстной, тизерной или баннерной рекламой, необходим трафик. Поисковый трафик зависит от позиций сайта в поисковой выдаче по ключевым запросам. Одной из составляющих ранжирования страницы в выдаче является ее вес. Если вес продвигаемых страниц будет выше, значит их позиции будут расти, что приведет к увеличению трафика на сайте, а следовательно, и доходов с него.
У многих вебмастеров на сайте установлены бесплатные шаблоны, да и у тех, кто заказывал себе платный шаблон скорее всего не настроено распределение веса. Из-за этого вес страниц распределяется неправильно.
Как распределяется вес внутри сайта
У каждого веб-сайта есть главная страница, несколько page страниц (карта сайта, контакты, о сайте т.д.), рубрики и самое главное — записи. Мы пишем и публикуем десятки постов в месяц, чтобы привлечь на эти статьи посетителей из поисковых систем. По сути, мы делаем ставку на продвижение сайта статьями и получение бесплатного трафика из поисковых систем.
Нам не нужно продвигать рубрики, поскольку они чаще всего являются высокочастотным запросом. И в Топе по этим ВЧ ключам сидят старые авторитетные сайты. Накачивать page страницы весом тоже не имеет смысла, никто не ищет «контакты», «о сайте» в поисковой выдаче. Если главная продвигается не по ВЧ запросу, а носит брендовое имя, по которому Ваш сайт и так будет в Топе, бессмысленно наращивать вес главной страницы. Если мы пишем информационные статьи для привлечения трафика, то необходимо наращивать вес этих страниц по такой схеме:

Давайте возьмем стандартный сайт на WordPress и разберем распределение веса на нем. В оформлении сайта обычно присутствуют сквозные элементы, находящиеся на всех страницах (меню в шапке и футере, виджеты в сайдбаре).
Как передается вес по страницам
Главная страница index.php. На этой странице у нас есть сквозное горизонтальное меню, у кого-то оно дублируется еще и в футере, в контентной колонке выводятся анонсы последних постов, а в сайдбаре присутствует виджет категорий. Дополнительно может выводиться виджет популярных или последних записей. Следовательно главная страница передает им всем долю веса.
Идем дальше. Странички page.php передают вес виджетам из сайдбара, другим пейджам из сквозного меню в шапке сайта. Рубрики сайта, которые находятся в сайдбаре, получают вес от всех. Но отдают вес не только статьям, а и сквозным элементам шаблона.
И вот мы дошли до самого интересного в нашем анализе — страницы постов single.php. На такой веб-страничке есть верхнее меню, виджеты в сайдбаре, похожие записи по теме поста и ссылки из записи для перелинковки. По всем этим ссылкам уходит вес из статьи. А страницы постов получают вес из рубрик, карты сайта, а последним записям некоторое время передается вес с главной. Отдельного внимания заслуживают страницы в виджете сайдбара, которые получают вес, как сквозные блоки.
Графически эту схему распределения веса на сайте можно представить на картинке:

В таком распределении вес главной страницы сайта наибольший. Страницы page.php неприоритетные в продвижении, находясь в сквозном меню, получают больше веса, чем статьи. То же самое и с рубриками. А статьи, которые должны быть в приоритете, получают наименьший вес.
Чтобы распределение веса влияло на рост позиций статей в выдаче, нужно добавить тэг nofollow к ненужным ссылкам. Важный момент касательно nofollow. По ссылке, к которой добавлен nofollow, не передается вес, но он и не остается у страницы. Вот Вам пример: со страницы идет 5 ссылок условно передавая вес по 0.2. Три из них мы закрываем в nofollow, оставшиеся две передают вес в сумме 0.4. 0.6 веса утекает в никуда, но не остается у страницы донора.
Чтобы самостоятельно позакрывать те элементы, которые оттягивают на себя вес, нужно быть php программистом. Вы можете самостоятельно погрузиться в решение этой проблемы или делегировать работу фрилансеру программисту. Тем не менее каждому из нас под силу закрыть ненужные ссылки в меню.
Как закрыть ссылки в меню сайта в nofollow
Чтобы вес не передавался по сквозным ссылкам отдельных страниц меню, добавим к ним тэг nofollow. Такую возможность предусмотрели разработчики WordPress. В админке блога в левом вертикальном меню, найдите пункт «Внешний вид», а в нем подпункт «Меню». В правом верхнем углу экрана, под надписью приветствия кликните по надписи «Настройки экрана». Раскроется спойлер настроек. Найдите в нем пункт Отношение к ссылке (XFN) и поставьте галочку:
У каждого из элементов меню появилась форма «Отношение к ссылке (XFN)», в нее и прописываем nofollow. Ссылку на карту сайта закрывать нельзя! Робот, попадая на эту страницу, идет дальше по ссылкам, обновляет старые и заносит в базу новые посты. Также я не добавляла нофолоу к главной. Не забудьте сохранить изменения.

Проверим работу. Обновите сайт, нажмите сочетание клавиш ctrl + u и посмотрите выводиться ли rel=»nofollow» у ссылок меню. Если Вы все сделали правильно, то тэг будет выводиться.
Дополнительно можно закрыть от индексации страницы пагинации на главной и в рубриках вот таким кодом:
/*** Добавляем мета тэги noindex,nofollow для пагинации ***/
function my_meta_noindex () {
if (
is_paged() // Все страницы и любые страницы пагинации
) {echo "".'<meta name="robots" content="noindex,nofollow" />'."n";}
}
add_action('wp_head', 'my_meta_noindex', 3); // добавление мета тэгов noindex, nofollow в head
Обращаю Ваше внимание, что одно правильное распределение веса на сайте не гарантирует попадания статьи в Топ. Нужно учесть еще ряд факторов, таких, как контент на сайте, поведенческие факторы и прочих.
Если у Вас стоит плагин Platinum SEO, в нем есть пункт «nofollow category listings on posts«, выберите его галочкой, и на страницах постов у ссылок на рубрики появится тэг rel=»nofollow«. Все, проблему с передачей веса категориям из постов Вы решили.
А, как на Вашем сайте передается вес между страницами? Пишите в комментариях.
Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.
Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.
С массовым переходом на systemd, вопрос запуска скрипта от имени пользователя root при загрузке ОС, стал всё чаще подниматься на форумах и в умах линуксоидов, которым ещё не приходилось сталкиваться с этой новой системой инициализации. Меня этот вопрос так же не обошёл стороной, когда пришлось внедрять корпоративный дистрибутив, использующий systemd и появилась необходимость запускать при загрузке ОС x11vnc от имени пользователя root. Выяснилось, что в systemd, эта задача решается с помощью service-файлов, имеющих простой для понимания формат и создаваемых по стандартному, для этих целей, шаблону. Файлы эти располагаются в /lib/systemd/system (системные) и /etc/systemd/system (эта директория приоритетнее первой для systemd) и имеют имена вида: название.service. Загляните в эти директории, просмотрите несколько service-файлов имеющих знакомые названия типа network.service или cups.service и в общих чертах всё станет ясно. Содержание созданного мной service-файла таково:
[root@comp-core-2-81b58d system]# cat startvncserver.service
[Unit]
Description=Start vnc server /usr/bin/startvncserver[Service]
Type=oneshot
ExecStart=/usr/bin/startvncserver
RemainAfterExit=yes[Install]
WantedBy=graphical.target
Где, Description=Start vnc server /usr/bin/startvncserver — Описание сервиса.
Type=oneshot — Задание метода окончания периода запуска сервиса. Oneshot означает что действие, выполняемое сервисом должно быть окончено до запуска следующего сервиса.
RemainAfterExit=yes — Используется в связке с предыдущей опцией и говорит systemd о том, что данный сервис хоть и завершит свою работу после выполнения скрипта, но должен оставаться со статусом active.
ExecStart=/usr/bin/startvncserver — Путь к скрипту для выполнения.
WantedBy=graphical.target — Параметр, который даёт понять systemd, на какой стадии загрузки системы нужно выполнить данный сервис. multi-user.target соответствует init3. graphical.target соответствует init5.
Для запуска, остановки, перезапуска, просмотра статуса и включения в автозгрузку сервиса (и соответственно нашего скрипта), используются стандартные команды systemd.
Запустить:
[root@comp-core-2-81b58d system]# systemctl start startvncserver.service
Остановить:
[root@comp-core-2-81b58d system]# systemctl stop startvncserver.service
Перезапустить:
[root@comp-core-2-81b58d system]# systemctl restart startvncserver.service
Посмотреть статус:
[root@comp-core-2-81b58d system]# systemctl status startvncserver.service
И самое важное! Для запуска сервиса при загрузке ОС, его нужно включить:
[root@comp-core-2-81b58d system]# systemctl enable startvncserver.service
С автозагрузкой скрипта разобрались, теперь разберём сам скрипт и опции запуска vnc сервера x11vnc. В нашем случае, подключаются клиенты только из локальной сети, поэтому шифрование мы не используем. Из необходимых требований — запрет завершения процесса от имени пользователя и запрет чтения пароля на подключение пользователем. Поэтому мы запускаем x11vnc от имени root и храним пароль в файле, доступном на чтение только ему.
[root@comp-core-2-81b58d system]# cat /usr/bin/startvncserver
#!/bin/bashwhile [[ $(test -f /var/run/xauth/A* ; echo $?) -ne 0 ]]dosleep 1sdone/usr/bin/x11vnc -noipv6 -shared -forever -passwdfile /etc/x11vncpasswd -bg -display :0 -auth /var/run/xauth/A*
Где, используя цикл while мы задаём проверку того, появился ли файл «магической печенки», необходимый для запуска vnc сервера и если он ещё не появился, то ждём 1 секунду и проверяем вновь. Когда необходимый файл появляется, запускаем x11vnc со следующими опциями:
-noipv6 — Не использовать ipv6.
-shared — Обеспечить возможность подключения одновременно нескольких клиентов. Без этой опции, при подключении одного клиента, второй уже подключиться не сможет.
-forever — Не завершать работу сервера после подключения первого клиента.
-passwdfile /etc/x11vncpasswd — Указать, где искать пароль для подключения. Пароль содержится в текстовом файле, без шифрования, либо создаётся командой x11vnc -storepasswd в интерактивном режиме и записывается в файл ~/.vnc/passwd в шифрованном виде. При использовании первого варианта, нужно выставить права на чтение файла только пользователю root и соответственно запускать x11vnc от имени root, что я в общем и описываю.
-bg — запустить процесс на заднем фоне, то есть отвязать его от текущего терминала.
-display :0 — номер дисплея для подключения. По умолчанию в одномониторных системах это :0.
-auth /var/run/xauth/A* — путь к файлу с магической печенкой 🙂 То есть файлу авторизации X сервера. Где он лежит в вашей системе, можно выяснить так:
[yar4e@yar4e-admin ~]$ ps aux | grep X
yar4e 6888 0.0 0.0 568 144 pts/5 D+ 14:39 0:00 grep X
root 7324 0.0 0.9 42356 19852 tty7 Ss+ Mar26 26:19 X :0 vt7 -auth /var/run/xauth/A:0-uyXr3I
Всё вышеописанное реализовывалось на Alt Linux P7 TDE и может незначительно отличаться на вашем дистре.
Автор: Yar4e