логин: 
<< предыдущая заметкаследующая заметка >>
10 декабря 2009
мелочи

Добавил к редактору заметок возможность отключать автоматическую переделку кавычек и тире.

Добавил автоформатирование. То есть, теперь можно писать заметки просто текстом, не заботясь о тэгах перевода строки. Автоформатирование есть двух типов — техническое <p>/<br> и "художественное" — <p class=pd>, <p class=d> — это когда как в книжке с отступами красной строки, типа прозу писать. Вот как я сейчас ;)

Все это будет работать, если не только обновиться из репозитария (ну или скачать lleoblog.zip — он все равно пойдет в репозитарий к Лаврентьеву и там загрузит tar.bz2 — надеюсь, он там обновляется не раз в сутки, а формат этот (как божится Лаврентьев) откроет даже любой rar в Виндоус, я сомневаюсь, но типа делаю умное лицо и киваю), но и установить обновления базы. Это отдельная система, которая позволит в будущем на лету править базу пользователя, если поменялся в движке алгоритм. Через репозитарий ведь не исправишь пользовательские базы. Для пользователя это элементарно: надо просто зайти в админку /admin, и там внизу в конце страницы появится кнопка обновления. Ее надо просто нажать, и оно всё само сам сделает, ни о чем думать не надо. Технически это сделано так: модули с инструкциями апгрейда подкладываются по одному в папку /module/upgrade, и оттуда исполняются, если чуют, что для них есть работа.

А вот инструкция Лаврентьева, имблоажу:

 

Я сейчас активно обновляю движок.

Про комментарии могу рассказать следующее.

Простыня комментариев — это лента из блоков:

<div id=1001 class=c0 style='margin-left: XXX px'>сюда ставится коммент по шаблону</div>
<div id=1002 class=c0 style='margin-left: XXX px'>сюда ставится коммент по шаблону</div>
<div id=1003 class=c1 style='margin-left: XXX px'>сюда ставится коммент по шаблону</div>
<div id=1004 class=c0 style='margin-left: XXX px'>сюда ставится коммент по шаблону</div>

Сам шаблон комментария по умолчанию (они, кстати, могут быть разные и указываться в дизайне страницы) лежит здесь для базового дизайна страниц: http://lleo.me/dnevnik/install?template/comm/comment_tmpl.ht[...]

В шаблоне встречаются переменные типа {имя} (или {#имя} — то же самое, но с очисткой нежелательных html-символов).
Эти переменные шаблону передает сервер, в них самая разная информация о комментарии. Давайте я их перечислю:

{#id} — уникальный номер комментария в базе (у меня сейчас чуть ли не шестизначный)
{paren} — некая готовая html-конструкция (как правило, иконка), которая по клику покажет раскроет родительский комментарий, если комментарий не первого уровня. Движок ее рисует сам в другом месте (что наверно мое упущение).

{#BRO} — сокращенное имя браузера автора комментария
{#BROlong} — полное имя браузера автора комментария

{#country} — двухбуквенный код страны
{#countryname} — полное название страны
<i class="flag-{#country}"></i> — на месте этой конструкции появится иконка — флажок страны

{#city} — сокращенное название города, если он определился по IP
{#citylong} — полное название города, если он определился по IP

{date} — дата комментария
{datetime} — не помню, тоже какая-то дата, наверно полная, с минутами

{rul} — 1 или 0 — пометка для самых важных комментариев (в реальной жизни пока не часто используется, но в принципе идея была для постов (напр. «Как мне настроить роутер ASUS RT16N?) выводить на первый уровень только самые ценные комментарии с важными инструкциями.

{#golos_plu} число плюсиков, которые получил комментарий
{#golos_min} число минусиков, которые получил комментарий

{ifpodzamok} переменная-флаг: 1 — комментарий просматривает тот, кто имеет подзамочный доступ (им показывается чуть больше информации), 0 — обычный посетитель

{admin} переменная-флаг: 1 — комментарий просматривает админ сайта (ему показывается больше информации), 0 — обычный посетитель или подзамочный

{name} — имя автора комментария

{#img} — линк на иконку автора комментария (если она есть)

{text} — сам текст комментария (конструкция с очисткой {#text} не применяется, так как при обработке комментария движок уже мог вставить HTML-конструкции: картинки, ссылки, аудиоплеер)

{newuser} переменная-флаг: 1 — автор комментария под небольшим подозрением на спам, 0 — обычный автор

{scr} переменная-флаг: 1 — комментарий скрыт ото всех, кроме админа и подзамков, 0 — открыт

Теперь пару слов про систему условных ветвлений (о да, господи, наросло в движке и такое). Формат покажу на примере фразы:

Ага, я вижу, что вы {?country:
Россия:кацап
Украина:хохол
Израиль:жид
США:пиндос
:не определились
*:из какой-то малопопулярной страны
?}, с чем вас и поздравляю!

начало и конец тэга {? ... ?}, варианты перечислены по строкам и разделены двоеточием. В примере движок выдаст разный текст в зависимости от значений переменной country. Для США напишет «Ага, я вижу, что вы пиндос, с чем вас и поздравляю!», звездочка * ставится в конце списка и означает «любое». В качестве текста вместо «пиндос» может бюыть любая конструкция, включая HTML-тэги, лишь бы там не было перевода строки или, упаси боже, еще одного такого же ветвления. Впрочем, есть один вариант.

Второй способ записи той же конструкции — заменить все переводы строки на знак | Вот так:

Ага, я вижу, что вы {?country:|Россия:кацап|Украина:хохол|Израиль:жид|США:пиндос|:не определились|*:из какой-то малопопулярной страны|?}, с чем вас и поздравляю!

И вот эту форму записи (в виде одной строки) можно вставлять в качестве строк в форму записи первого типа.
То есть, условное ветвление все-таки допускает вложенность, но всего одну на каждый из вариантов.

Осталось сказать, что в движке есть ряд аякс-обращений к движку (действий), обычно они делаются через JS-функцию majax: onclick=«majax(...)"

Для сокращения размера текста некоторые из этих функций вынесены отдельно и находятся в главном JS-файле фреймворка main.js: http://lleo.me/dnevnik/install?js/main.js|

Поэтому если в темплейте комментария встречается что-то типа «kl(this)", то это означает, что такой короткой записью вызывается небольшая стандартная функция, которая по this пойдет искать вверх до главного DIV, чтобы найти id комментария, после чего даст некий запрос на сервер. Например, kpl(this) поставит комментарию плюсик, kmi(this) — минус. Все такие запросы обрабатывает сервер, после чего обычно комментарий (главный DIV id=XXXXX) заменяется новым содержимым, которое высылает сервер. Если посетитель поставил комментарию плюсик — ему заменится весь комментарий, и там уже будет виден его плюсик.

В новой версии движка полезные иконки сделаны одним файлом и сверстаны в css. Например, иконка почтового конвертика: <i class='e_kmail'></i> Если на него кликнуть, движок откроет окошко для написания комментария в личку: <i class='e_kmail' title='написать' onclick="majax('mailbox.php',{a:'newform',unic:{unic}})"></i> Это более новое наслоение, которое я не успел убрать в отдельную функцию.

Для разных данных в одном комментарии есть несколько классов, например: <div class=ctxt>{text}</div> Эти классы заданы в главном sys.css: http://lleo.me/dnevnik/install?css/sys.css| Но по-хорошему им там делать нечего, их можно менять как угодно (короткие имена им были даны для экономии трафика, ведь бывают простыни и по 500 комментариев).

/* комментарии */
.opc, .cnam, .rul1,.rul0 {cursor: pointer}
.rul1,.rul0,.cplu,.cmin,.kmail {float:left}
.c0, .c1, .c2, .c3, .c4, .c5, .c6 { font: 80% sans-serif, Helvetica, Arial, Verdana; width: 60% !important; border: 1px solid #bbb;
/* IE */ filter: progid:DXImageTransform.Microsoft.shadow(direction=120, color=#888888, strength=10);
box-shadow: #888 5px 5px 5px; border-radius: 0.8em 0.8em 0.8em 0.8em; overflow: auto; padding: 0.4em 0.4em 0.4em 0.4em; margin: 0.4em 0 0 0.4em; }
.c0 { background-color: #AAFAFA; }
.c1, .opc { background-color: #F1F1F1; }
.c2 { background-color: #FFFBDF; border: 1px solid red; }
.c3 { background-color: #FFEBCD; border: 1px solid red; }
.c4 { background-color: #eAf; border: 1px solid red; }
.c5 { background-color: #Aef; border: 1px solid red; }
.c6 { background-color: #Aef; border: 1px solid red; }
.ctxt { padding: 5pt; text-align: justify; }
.cwho,.ctim,.cbro { font-size: 8pt; display:inline; margin: 0 10pt 0 10px; top: 0px; position: relative; float: right; }
.ctim,.cbro,.cwho,.kr,.rul0,.rul1,.kmail,.cnam,.cplu,.cmin { display:inline; }
.cnam { font-size: 12pt; font-weight: bold; }
.cplu,.cmin { font-size:10pt; }
.cplu {color:#f99;cursor:n-resize} .cplu:before { content:'+'} .cplu:after { content:' '}
.cmin {color:#99f;cursor:s-resize} .cmin:before { content:'\2212'} .cmin:after { content:' '}
.cplu:hover,.cplu:active {color: red;}
.cmin:hover,.cmin:active {color: blue;}

Осталось сказать, что сам комментарий имеет классы .c0, .c1, .c2, .c3, .c4, .c5, .c6
c0 — обычный
c1 — скрытый (подзамкам, админу и автору вышестоящего комментария, если это был ответ ему) виден с зеленым фоном
c2 — кажется, комментарий админа
остальные — не помню, не используются в реальной жизни

И последнее. У комментария есть переменная level, которая 0 для комментария нулевого уровня, а 1, 2, 3 и т.п. для соответствующего по глубине в ветке. Сейчас в движке этот level тупо умножается на 50px (точно не помню) и для основного DIV комментария (того, у которого id, внутрь которого помещается вышеописанный темплейт) делается отступ margin-left: (level*50) px


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

 

 

Дизайн системных (всплывающих) окон движка можно описывать в переменных конфига config.php, которые по умолчанию равны:

$wintempl="<div class='corners'><div class='inner'><div class='content' id='{id}_body' align=left>{s}<div onclick=\\\"clean('{id}')\\\" class='can2'></div></div></div></div>";

$wintempl_cls='popup';

При этом движок создает окно как div с классом $wintempl_cls (по умолчанию 'popup', вообще его дефолт описан в /css/sys.css), и в этом div разместит $wintempl, в который вместо {id} подставит идентификатор окна (конструкция '{id}_body' обязана присутствовать!), а вместо {s} - содержимое.

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


{_STYLES:

.popupAAA { overflow:visible; top:100px;left:100px;position:absolute;z-index:999; }

.popupAAA .contentAAA{padding:4px 4px; background:#A3F1E0}

.contentAAA {cursor:default}

.canAAA { position:absolute; top:1px; right:8px; width:16px; height:16px; cursor: pointer; }

.canAAA:after { content: url(/blog/design/e3/ledred.png); }

_}

{_SCRIPTS:

var wintempl_cls='popupAAA';

var wintempl="<div class='corners'><div class='inner'><div class='contentAAA' id='{id}_body' align=left>{s}<div onclick=\"clean('{id}')\" class='canAAA'></div></div></div></div>";

_}

<center><a href="javascript:ohelpc('okno_test','заголовок','проверка');void(0)">показать окно</a></center>


Результат:

показать окно

 

 

Вопрос: два компа под Линуксом соединены в сеть, на одном поднят SMB-сервер Samba, на другом — SMB клиент (cifs). При копировании длинного файла на сервер записывается ровно 2048Мб, после чего возникает ошибка. В каких настройках проблема?

Ответ под катом.

[показать спрятанное]
Правильный ответ: просто на диске сервера осталось свободно ровно 2048Мб. Ну почему со мной всегда случается такое?!

 

 

Движок поддерживает толковый автопостинг заметок в разные типы соцсетей — Facebook, VK, LJ, Twitter, Yandex-fotki. Рассказываю, как это настроить и включить. Рассказываю в основном для пользователей многопользовательского binoniq.net, но разумеется любой движок-стэндалон справится с этим еще лучше.

Автопостинг позволяет оперативно присутствовать в соцсетях, а также удачно децентрализует контент личного домена в наше непростое время.

Сразу скажу по поводу аналогов. Честно говоря, я не сильно изучал аналоги и не знаю, как работает автопостинг при помощи специализированных сайтов (по моему скромному опыту — крайне криво и погано) и как работают плагины Вордпресса (говорят, они там есть тоже). Но я точно знаю, что мой движок делает не просто пост в Фейсбук и ВК, а переносит туда и фотки, и делает заметку не казуального формата, а формата Note, где по-максимуму сохраняется форматирование и можно постить длинные статьи с множественными фотографиями, перемежающимися текстом. Также мне не приходится думать об обновлении зеркал — по нажатию кнопки движок обновит заметку во всех внешних зеркалах, если текст изменился, а также позволяет удалить выборочно, если вам того захотелось. Я делал это под свои нужды и сильно сомневаюсь, что какой-то движок или сервис умеет всё это делать в том же объеме. Но было бы интересно услышать рассказы, как оно у других.

Итак, как настроить автопостинг?

настраиваем ВКонтакте
настраиваем Livejournal (или lj.rossia.org)
настраиваем Twitter
настраиваем Facebook
настраиваем Яндекс.Фотки


ВКонтакте

Итак, настраиваем автопостинг ВКонтакте. Наша задача — зарегистрировать сайт в качестве т.н. «приложения» и получить ключи. И идем по ссылке https://vk.com/editapp?act=create или просто жмем кнопку «создать приложение:

Заполняем от фонаря поле «имя» и устанавливаем тип «стэндалон»:

Проходим череду унижений ВКонтактика, связанных с высылкой на мобильник дурацкого кода для подтверждения, что я это я и реально хочу создать приложение:

Приложение создано. Идем во вкладку «информация», там ничего трогать не надо, только убедиться, что название на месте (а куда оно денется-то?):

Идем во вторую вкладку «настройки». Здесь:
1) вписываем адрес сайта и базовый домен (у меня аккаунт lleo на binoniq.net, поэтому я вписал lleo.binoniq.net)
2) обязательно включаем опцию «Open API» — по умолчанию выключена
3) проверяем состояние, что приложение включено и видимо
4) копируем себе авторизационные ключи, на которые указывают зеленые стрелки — собственно, ради этого мы и унижались

Теперь идем в свой блог.
Как вы помните, если вы залогинены, то в своем аккаунте будете видеть слева вверху маленький желтый шарик. При наведении на него мышкой получаем админскую панель. Выбираем в ней «редактор переменных», и в раскрывшемся окошке жмем на иконку создания новой переменной. Чтоб вы понимали: в движке это как бы файлики, которые создаются в базе данных, но никак снаружи их увидеть нельзя. Движок использует их для хранения настроек.

Создаем для начала переменную «template.vk» (имя не принципиально, его вы позже укажете в настройках автопостинга):

Содержимое темплейта автопостинга примерно следующее. Вместо {url} будет подставлен url оригинальной заметки, вместо {text} — ее текст. Формат ВК (мы используем постинг в формате note) не подразумевает особого форматирования, но там все же есть элементы разметки, если интересно:

==заголовок первого типа==
===заголовок второго типа===
====заголовок третьего типа====
<blockquote>блок с цитатой</blockquote>
[http://link.ru|описание ссылки]
[[photo121212_1212322|100px|100px]] — вставка картинки из альбома ВК

Теоретически, вы можете использовать всё это при оформлении своего темплейта, но я не пробовал, а написал просто:

Точно так же создаем переменную «autopost» — вот это имя принципиально, здесь перечисляются все аккаунты для автопостинга с их ключами.

Пока у нас аккаунт только один ВК, прописываем строчку, где пишем название протокола vk и через пробел имя темплейта, и те два ключа, что мы нашли в местах, указанных зелеными стрелочками:

В редакторе заметки движка около кнопки «Записать» (ох, как неудобно, надо бы мне исправить) есть кнопка «Social Media» — запостить заметку (по состоянию последнего сохранения, а не то, что на экране) во все соцсети, перечисленные в autopost (у нас пока один лишь VK). Вторая кнопка («List SM») не очень нужна — она позволяет посмотреть, куда была запощена эта заметка, и выборочно поудалять:

При первом нажатии «Social Media» движок обнаружит, что пока авторизации нет, и предложит ее создать. Здесь надо нажать «эту ссылку», она откроется в новом окне. К самой нашей странице мы еще вернемся:

Итак, во второй вкладке открылся сайт ВКонтактика, где тот начнет финальную фазу унижения — потребует авторизацию. Соглашаемся со списком херни:

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

Ну и возвращаемся на свою вкладку, где копируем эту строку и нажимаем «Go»:

Теперь все готово, заметка запостилась. Лишь иногда (ну может, раз в пару недель, в месяц, в полгода) параноидальный ВКонтактик будет требовать ввести капчу при постинге заметки. Движок это отлавливает и даже комментирует, ничего обременительного:

Пару слов о том, как именно работает автопостинг ВКонтакте из движка. Как говорят знатоки, «ВКонтакт развивается по спирали — всё поспирали у Фейсбука»(копирайт не мой). Как и в Фейсбуке, здесь есть два вида постов: wall и note. Первый тип предназначен для казуалов, которые хотят сообщить миру небольшой абзац своих мыслей, иногда сопроводив 1 объектом: фоткой, роликом, ссылкой или «заметкой» (note). Заметка — это формат для продвинутых умов: некое литературное произведение не с одним, а с множеством объектов (например, фоток), которое позволяет элементы верстки, множественные линки на внешние сайты, а главное, только так можно делать красиво оформленные фоторепортажи, где снимки чередуются абзацами текста. Движок обучен работать именно в таком формате. И если в вашей заметке в движке были фотки, он создаст на ВКонтакте отдельный альбом для этой самой заметки, туда их скопирует (и постарается даже найти какие-то слова для подписи — вот только ему трудно понять, у фотки была подпись в абзаце до нее или после, берет то, что после). После чего сделает красивую верстку заметки note, и уже эту note опубликует. Некоторые клиенты ВКонтактика (например, жаловались на Айпад) отображают формат Note слегка сбивчиво по абзацами без фоток, но это, извините, проблема ВКонтактика, что он не в состоянии ображать на всех устройствах материалы своего собственного формата.


livejournal.com

Итак, продолжим настройку автопостинга. Теперь настроим ЖЖ. Вызываем (желтый шарик) админское меню, выбираем «редактор переменных» и тыкаем редактировать все тот же «autopost»:

Я туда добавил сразу три строчки, потому что ЖЖ у меня, так сложилось, три: lleo.livejourlnal.com, lleo-kaganov.livejourlnal.com, а также аккаунт на lj.rossia.org, который совсем не ЖЖ, но работает по тому же самому протоколу FLAT. В этом случае FLAT-url сервера надо указать последней опцией (по умолчанию он ЖЖ). Вписываем: название протокола lj, через пробел: логин, пароль, и если надо — имя flat. Слава Кришне, ЖЖ не использует крышесносящие суперавторизации, и здесь просто хватает логина/пароля:

Создаем template.lj (я для простоты сделал один на все три аккаунта). Что в нем важно.
{url} — ссылка на оригинал поста
{text} — сюда движок подставит текст поста, либо есть другая форма записи:
{text999} — тоже текст, но в нем вставить <lj-cut> после абзаца, с которого объем текста уже превысил 999 символов (число может быть любым). Учтите, что фотку движок считает за 500 символов, поэтому 999 я взял из расчета, чтобы две фотки до ката не влезли.
Строчку {foto_source:yandex:lleokaganov} уберите. Вместо нее ничего не подставляется, это просто команда движку, чтобы при автопостинге в ЖЖ адреса фоток брались не с моего сервера, как в исходном посте, а заменялись на копии (если они есть), загруженные в аккаунт lleokaganov на Яндекс-фотках (движок умеет постить и туда). Типа, вдруг мой сервер висит, не надо, чтоб фотки в ЖЖ зависели от него.

Итак, снова нажимаем в заметке автопостинг. Что видим? Открылось окошко, в нем пошел автопост. Ну, ВКонтакт мы уже этой заметкой окучили, текст ее не изменился, поэтому движок ничего править во ВКонтактике не полез (а он с той же легкостью умеет удаленно править заметки во всех во всетях, кроме Твиттера), а просто написал зелененьким «ok». В ЖЖ lleo и lleo-kaganov заметки запостились. А вот третий автопостинг продолжает крутиться и повис. Догадываетесь почему? Спасибо Роскомнадзору, сайт lj.rossia.org забанен в России. С моего lleo.me из Канады проблем нет, а вот binoniq.net в России, поэтому постить туда не может. Ну, как-нибудь позже я придумаю заплатку.

Кстати, если нажать на кнопку «List SM», то в открывшемся окне можно выборочно красным крестиком поудалять удаленные кросспосты или их части (нажать +, но на binoniq пока он не работает почему-то), или записи о них в базе (синяя черточка, не рекомендую, это было для отладки, вам незачем тереть в базе инфо об удаленном посте, когда сам он останется):

Теперь последнее. Как сделать так, чтобы внизу заметки выводился список удаленных кросспостов? Открываем админское меню, выбираем «фотоальбом». Это уже давно никакой не фотоальбом, а довольно навороченный файл-менеджер движка. Кликаем раскрыть папку «template», находим шаблон заметки «blog.html» (если вы не меняли опции заметки, по умолчанию именно он), выбираем иконку редактировать:

Редактируем дизайн. Вставляем в нужное место (у меня внизу) модуль CROSSPOSTED с опцией template={tmpl} У меня используется более навороченный код с таблицами

показать код
{_CROSSPOSTED:
template=<div align=right><table border=0><tr><td align=left><i>Копия заметки в моих аккаунтах соцсетей:</i><br>{tmpl}<div>Как читать мой сайт <a href='http://lleo.me/dnevnik/free'>если что</a></div></td></tr></table></div>
_}

Теперь список сделанных внешних кросспостов отображается внизу заметки:

Дальше у нас осталось научить движок постить фотки в аккаунт на Яндексе, постить инфо о появившейся заметке в Твиттер, и постить на Фейсбук.


Facebook

С Фейсбуком — всё похоже на ВК, только проще. Ну, то есть, сложнее. Потому что эти пидоры с весны 2014 запретили постить заметки формата notes — единственный формат, в котором можно было верстать полноценные обзоры с форматированием, ссылками и множественными фотками по тексту:

Для тех, кто не успел зарегистрировать свое «приложение» до мая 2014 (я успел) — только формат простой публикации, максимум — одна фотка внизу заметки.

Итак, создадим приложение. Заходим в Фейсбука по ссылке: https://developers.facebook.com/apps «My Apps» — «Add a new App»:

Вводим названием, тип выбираем «веб-сайт». Потом оно выкинет на какую-то страницу с кодом, где будет спрашивать всякие глупости, введите ей адрес своего блога:

После этого всю свистопляску пора закончить — внизу страницы соответствующая кнопочка справа, либо найдите ссылку 'Skip to Developer Dashboard'. А затем зайти уже в настоящие настройки этого приложения и получить секретный ключ, нажав «Show»:

Далее эти ключи прописываете в autopost. Строка для Фейсбука аккаунта lleokaganov у меня в autopost прописана так:

facebook template.facebook lleokaganov 641968935872295 c850f531bf785e1401753e550493aeb6

Темплейт «template.facebook» такой:

с моего блога на Бинонике: {url}

{text}



оригинал заметки: {url}
в ФБ заметка может отображаться не полностью


Yandex-fotki

С Яндекс-фотками всё тоже просто. Регистрация приложения и описание тут: https://tech.yandex.ru/fotki/, но конкретно для создания приложения надо зайти сразу сюда: https://oauth.yandex.ru/client/new и прописать так:

Здесь важно:
— написать какое-нибудь имя и описание (например, у меня для Биноника это http://lleo.binoniq.net)
— выставить все права (4 шт) для Яндекс.Фотки
— прописать правильно Сallback URL: http://lleo.binoniq.net/ajax/protocol.php
Для постинга с lleo.me/dnevnik оно у меня соответственно: http://lleo.me/dnevnik/ajax/protocol.php Ключевое здесь — /ajax/protocol.php, там у движка находится универсальная ответка.

Строка для Яндекс-фоток аккаунта lleokaganov у меня в autopost прописана так:

yandex template.facebook lleokaganov 39e051e1d4cE433db819cf812f132f4f d2efef1f3214402d98c47e21c9591edc

С темплейтом не стал париться, оставил от Фейсбука. Какой там на фиг темплейт для фоток? А поле указать движок требует.


Twitter

У Твиттера есть такая полусекретная ссылка https://dev.twitter.com/apps/new, идем туда, создаем приложение:

Идем сразу на последнюю на вкладку «Permissions», устанавливаем тат опцию «Read and Write»:

Идем на вкладку «Keys and Access Tokens», внизу страницы находим кнопочку: Token Actions: Create my access token, жмем ее, получаем ключи:

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

twitter template.tw lleokaganov 6Gc3N4wgHуArEABrN4ul1Q y3bIcSatenbRx2AEljy2n5Pd4qzMOozEDd2BIVVBOB 12709499-xR6RtAQWAJu3wk6iRdrRefeDUssXee0WPoOEJdTp 81A6K4JeYemotVDsRJuJoIdxKemdfMHRrnwDYNnfY7nUyw

Переменную темплейта template.tw создаем совсем бесхитростный:

{Header} {url}

Постинг в Твиттер настроен.

Google-plus

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

Fido

Нет и не уверен, что будет ;) Хотя технически движок вполне бы смог ;)))

Автопостинг куда-то еще?

Не вопрос, если есть толковое API и необходимость, могу допилить.

 

 

Долгие годы мой домашний компьютер носил имя lleo.homeip.net, поскольку своим динамическим DNS был приписан к dyndns.org. Но потом эти подонки решили, что их суперсервис по хранению несчастной dns-записи стоит денег, причем примерно столько, сколько не каждый домен стоит — 20$ в год. Возможно они даже писали мне об этом, но кто же читает спам на иностранном языке? Тем, кто не знал о новой финансовой политике, они отключили сервис. Более того: восстановить lleo.homeip.net вообще нельзя, потому что в домене homeip.net больше адреса не выдаются. В связи с этим подонкам на dyndns.org были посланы лучи ненависти, а я задумался, как сделать динамический адрес иными способом.

Выяснилось, что это очень легко делать при помощи Яндекса. Если у тебя есть свой домен где-то в Канаде (lleo.me), то для него все равно полезно завести почту домена на Яндексе, а раз уж она заведена, то у своего сайта можно сделать дополнительный поддомен (например home.lleo.me и еще сколько понадобится) и прописывать DNS своего домашнего компа. Таким образом пользователь идет по всем вопросам в Канаду, но на home.lleo.me (или aaa.home.lleo.me) — ко мне домой в коридор.

Идем в свой аккаунт https://pdd.yandex.ru/domain_ns/lleo.me/ и добавляем две строки для своего сервера home:

Заодно правим запись SOA ставим TTL=900, шоб побыстрее. Если ваш провайдер меняет IP динамически, теперь задача его обновлять. У Яндекса есть свой API для обновления этих записей. Дока переехала — было api.yandex.ru/pdd/doc/api-pdd/reference/, стало на api.yandex.ru/pdd/doc/reference/ (убралось из адреса /api-pdd/): http://api.yandex.ru/pdd/doc/reference/api-dns.xml Итак, сперва один раз в жизни получаем токен: https://pddimp.yandex.ru/token/index.xml?domain=lleo.me:

<result><ok token="4b6f2779da1a90b3df90c643d11e879b6f919a2a1a9ea8406fb072128"/></result>

Затем один раз в жизни считываем записи, чтобы узнать их id: https://pddimp.yandex.ru/nsapi/get_domain_records.xml?token=4b6f2779da1a90b3df90c643d11e879b6f919a2a1a9ea8406fb072128&domain=lleo.me, получили немеряную простыню всякого говна, находим нужные строки:

<record domain="home.lleo.me" priority="" ttl="21600" subdomain="home" type="A" id="15588710">46.242.39.135</record>
<record domain="*.home.lleo.me" priority="" ttl="21600" subdomain="*.home" type="A" id="15588353">46.242.39.135</record>

Итак, нашли нужные id: 13518138 и 15588353, формируем строки изменения IP:

#!/bin/sh

IP=`ifconfig rl0 | grep '^[[:space:]]*inet' | tail -1 | sed -e 's#.*inet *##' -e 's#.*##'`

wget --no-check-certificate -O /tmp/homeip1 "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=4b6f2779da1a90b3df90c643d11e879b6f919a2a1a9ea8406fb072128&domain=lleo.me&subdomain=home&record_id=15588710&ttl=900&content=${IP}"

wget --no-check-certificate -O /tmp/homeip2 "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=4b6f2779da1a90b3df90c643d11e879b6f919a2a1a9ea8406fb072128&domain=lleo.me&subdomain=%2A.home&record_id=15588353&ttl=900&content=${IP}"

 

 

Как вы помните, в движке комментарии делаются по шаблону, который задается в файле /template/comm/
comment_tmpl.htm Это по-умолчанию. Но для комментариев конкретной заметки шаблон (как и дизайн) можно переключить на другой файл из той же папки (например: comment_ej.htm). Чтобы это сделать, нужно в темплейт заметки, либо прямо в сам текст заметки вставить строку, которая инициализирует переменную в JS и PHP вместо той, что по-умолчанию:

<script>var commenttmpl='{_PHPEVAL:$o=$GLOBALS['comment_tmpl']='comment_ej.htm';_}';</script>

В многопользовательском режиме движка пока не работает по причине запрета PHPEVAL (пользовательский PHP), но если кому-то это нужно на Бинонике, я напишу модулёк, который это будет делать сам.

Необходимость менять для отдельной заметки дизайн комментариев мне видится при организации всяких там конкурсов и акций, тестировал тут: http://lleo.me/dnevnik/2015/03/21_ejik.html

 

 

Друзья! Да, мне еще раз перед всеми вами феерически стыдно за свою ошибку в коде, и будет стыдно еще долго. Я в прошлом посте говорил, что найдена уязвимость и слёзно просил обновиться. Сегодня я снова об этом.

Обновились, насколько я могу видеть, только трое (условно обозначим их как z--r, Мик-н и Кон-в).

Вы спросите, как я это вижу? Дело в том, что в инсталляторе движка какое-то время была кнопка (кажется, ее давно нет) типа «похвастаться установкой», по нажатию которой на мой сайт сообщался адрес вашего движка. В первый год эти адреса даже выводились на страничке слева, но потом я взялся за ум и список убрал — именно на такой случай, если найдется неприятная уязвимость: чтоб враг не узнал, где ее искать. Сейчас я этот список нашел и прошелся руками по всем. Большая часть движков давно не существует, но некоторые работали. Я полагаю, что список серверов у меня был далеко не полный, а очень-очень старый. Поэтому если вы ставили движок в течении последний пары лет, то его в нем не оказалось.

К сожалению, уязвимость настолько гнусная, что позволяет произвольному пользователю заменить любой файл на сервере. В этой ситуации я рассудил, что глупо ждать, пока это сделает кто-то другой, и сам заменил уязвимый файл на исправленный там, где это было можно.

Так движок стал неуязвим у Ер-ва, vo-ne и М.М. Еще раз извините за это вынужденное вмешательство, я лишь обновил один файл php, переименовав старый.

Другие три движка (как я уже писал выше) попытку хака отвергли — значит, уже обновлены.

Все остальные мне просто неизвестны, но если вы читаете эти строки — обновите движок с любого из источников.

Еще раз извините.

 

 

Я задолбался подгружать пользовательские юзерпики по месту жительства. Они тормозят загрузку страницы дневника (потому что не везде быстрый сервер), со временем исчезают (особенно у Гугля), и вообще. Поэтому отныне при логине движок берет картинку, обрабатывает ее, обжимает, и кладет пользователю в папку как user/{unic}/userpick.jpg

А чтобы преобразовать все уже имеющиеся, в /install появляется кнопка «Преобразовать IMG (2499)».
И вот эти 2499 уже много-много минут отрабатываются, пока я пишу этот пост:


PS: Речь пока о /dnevnik — все новые изменения именно в этой ветке движка. Если обновляться, то с нее.

 

 

Опять Палант обнаружил дырки в движке — две. Позор мне.

Рекомендую обновиться.

Кроме того, я обновил систему логина. Теперь мы используем не виджет Логинзы, а виджет http://ulogin.ru — он гораздо более пристойный. Мы используем его для логина по OpenID и для соцсетей. В Логинзе обнаружена дыра, позволявшая провести регистрацию от имени любого пользователя любого сервиса. Господь им судья.

 

 

Необходимо срочно обновиться! Уже пару лет как. Еще раз извините.

У кого по причинам совсем уж старой версии не работает даже обновление /install и даже /minstall.php — то удалите minstall.php нафиг и скачайте базовые файлы движка одним архивом: http://lleo.me/dnevnik/minimum.zip

В будущем мы вообще отказываемся от minstall.php — вместо него в /install у каждого движка будет кнопка «install.zip», которая формирует в корне файл minimum.zip с основными файлами, которые позволят поднять движок до той степени, чтобы запустился /install и загрузилось всё остальное.

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

[показать спрятанное]
1) скачать и распаковать http://lleo.me/dnevnik/minimum.zip,
2) переименовать «htaccess» в «.htaccess», исправив в нем переменную "RewriteBase /blog/" на ваш случай (если движок в корне, то просто "/")
3) в css/sys.css найти "/dnevnik/" и тоже исправить на ваш случай (если в корне, то "/")
4) config.php.tmpl переименовать в config.php и там поправить:
— четыре строки с параметрами для MySQL:
$msq_host = "хост MySQL";
$msq_login = "логин MySQL";
$msq_pass = "пароль MySQL";
$msq_basa = "название базы в MySQL";
— Если движок ставится в папку, а не в корень, поправить $blogdir="папка/";
— Прописать в $httpsite полное имя вашего сайта, как он виден снаружи.
— Везде, где встретится "_md5_" — вбить строчку с произвольной хуетой.

 

 


Date: Tue, 9 Dec 2014 01:46:21 +0000

From: «E. V.»

To:   Leonid Kaganov <[email protected]>

Subj: Raspberry Pi


Привет!

Итак, что делать с Малинкой. Тезисно — 4:30 ночи, я сонный уже.

1. Дистрибутивы

Я пользовался двумя:

a. Raspbian (http://www.raspbian.org/).

Это такой Debian, собранный для Малинки — с правильным ядром, плеерами и т.п. И, увы, пакетов там раз в 10 меньше, чем в x86 Дебиане, но основные есть.

Можно поставить без гуи, можно с гуи (по дефолту — легкий LXDE).

Нормальный дистрибутив, general purpose.

На «серверных» малинках у меня именно такой.

б. RaspBMC (http://www.raspbmc.com/)

На базе Raspbian (т.е. тоже на apt), но заточенный под медиаплеер — это именно то, что я тебе показывал вчера. Ставится сразу с таким вот Гуи и минимальным набором других пакетов. Там даже ssh нужно через gui сначала включить!

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

Такой на малинках-плеерах — в Лондоне (ее я тебе привез) и в Москве (у папы). Я раньше тоже был большим фанатом ставить фильмы через ssh и командную строку, но потом оценил силу ИК-пульта.

2. Как ставить?

Берешь SD- карточку, скачиваешь образ, потом:
# dd bs=4M if=raspbmc-2014-06-13.img of=/dev/mmcblk0
# sync

3. Как конфигурировать базовые вещи в Raspbian?
# rspi-config

4. Какое видеоплеер для Raspbian?

omxplayer , он умеет пользоваться GPU.

Какой видеоплеер для RaspBMC?

дефолтный — он как-то работает, большую часть форматов держит (хотя и не все)

5. Какой дефолтный логин-пароль у RaspBMC?

В отличие от Raspbian, при установке RaspBMC, тебя ни разу не спросят логин-пароль. А он есть!
default login: pi
default password: raspberry

Для доступа к руту — sudo su

6. Скорость.

Сейчас посмотрел, фильм 1.5 гб — 1.5 часа проигрывается по wi-fi ок. А более тяжелых на ноуте что-то не нашлось. С локальной SD-карточки я точно пробовал 1080p.

7. Какую SD-карточку брать?
Самую быструю! Это правда важно, с медленной Малинка совсем дохнет. Ultra High Speed (UHS-I) Class 1 — смотри, чтобы это было написано Та, что была вчера — Samsung EVO.

Вроде, основное рассказал.
Если что — пиши, попробую ответить.

Женя

 

 

С этим у меня была проблема, потому что старые инсталляторы (install.php, /admin) разобраны, и я им не доверяю. А новый — хороший, графический — работает только когда установлен движок, налажены конфиги и т.п. для обновлений. Как быть? Я взял старый install.php и допилил его, чтоб он ничего не трогал, а качал некий минимум файлов (полтора десятка), необходимый для того, чтобы в движке поднялся хотя бы /install

Аналогично, если /install поломался, можно всегда через minstall.php обновить основные файлы, которые позволят заработать разделу /install (ну, может, разве что пароль в config.php опустошить придется, отредактировав $admin_hash1=''; — это если IP сменился).

Итак, установка движка на хостинг теперь выглядит так:

1. Скачать и залить на хостинг файл /minstall.php

2. Зайти на браузером на http://--хостинг--/minstall.php, нажать «install» (кнопку, не ссылку). Установить все, что предложит, может, придется повторить, пока не выдаст табличку настройки конфига.

3. Вбить в табличку пароли для mysql и прочую ерунду.

4. Все готово, теперь можно запустить раздел /install

5. Ну а дальше тривиально: нажать «INSTALL», убрать из предложенного лишнее (fido, например, и файлы mp3 кукушечки) и проинсталлировать полный движок. Затем перегрузить /INSTALL и нажатием кнопочек посоздавать таблицы Mysql, какие предложит.

6. Все должно заработать. Учтите, что в /install надо нажать «ADD ADMINS» и добавить свой браузер в админы. После этого можно писать первую заметку, нажав 'N' или вызвать админскую панель 'A'.

 

 

Поскольку всякие там Убунту-центры и софты явно не поспевают за законодательными инициативами Российской Федерации, часы у меня переводиться не захотели, а Московское время оставалось исключительно GMT-4.

Поэтому выходим в консоль:

sudo dpkg-reconfigure tzdata

Там в меню: «None of the above», затем выбираем «GMT-3»

Затем перезапуск:

sudo ntpdate 0.ru.pool.ntp.org

Если ругается на порт — можно сперва остановить ntpd:

sudo /etc/init.d/ntp stop

Заработало! Мааданбля!

 

 

В движке появилась система обмена личными сообщениями. Подробно об интерфейсе — в дневнике: http://lleo.me/dnevnik/2014/08/19.html

В движке система состоит из:

1. Таблицы mailbox — ее предложит создать /install

2. Аякс-части движка /ajax/mailbox.php

3. Модуля вызова {_MAILBOX:_}
Возвращает число новых писем. Чтобы окно с новыми сообщениями всплывало, его надо вставить в темплейты — я вставил в /template/blog.htm и /template/bank.htm

<p><div title='личная почта' onclick="majax('mailbox.php',{a:'mail'})"><img src='{www_design}e2/kmail.png'>{_MAILBOX:_}</div>

На движках с многопользовательским режимом типа binoniq.net я пока обновления не ставил и не тестировал: там могут быть глюки или проблемы с уязвимостью вашей переписки при заходе в чужие хакерские аккаунты, содержащие произвольный JavaScript — надо вспомнить, где там прописывается флажок защиты окна, мне пока лень :) Протестировал, должно работать.

 

 

Заканчивая очередной пост в движке, нажал кнопку «запостить в соцсети» и вдруг вылезло такое окно:

Да, глубоко я проработал автопостинг, оказывается. Многие нештатные ситуации учел и предусмотрел в движке :)

 

 

Ситуация: разбираюсь с API Вконтактика - на моем тестовом домашнем сервере работает, на канадском сайте - нет. Почему? Вконтактик возвращает посылку в формате json:

{"response":[{"pid":328328322,"id":"photo83220314_328328322","aid":194496433,"owner_id":83220314,"src":"http:\/\/cs608929.vk.me\/v608929314\/9b2c\/_gMwKCSPHvQ.jpg","src_big":"http:\/\/cs608929.vk.me\/v608929314\/9b2d\/VRi0-64LxHg.jpg","src_small":"http:\/\/cs608929.vk.me\/v608929314\/9b2b\/s-iiUj9HIMA.jpg","width":3,"height":14,"text":"95% (864)<br><br>Нет, нашу Победу не отдадим никому!","created":1399682380}]}

Если вдруг у кого-то на хостинге нет поддержки JSON, я в коде PHP пишу заплатку:

if(!function_exists('json_decode')) { function json_decode( $string, $assoc_array = false ) {
эмулирующая библиотека
} }

Теперь следите за руками. На домашнем сервере JSON нет. Поэтому он эмулируется заплаткой и всё прекрасно работает. А вот в Канаде JSON есть. Поэтому заплатка не задействована. И этот самый встроенный json_decode на этой самой посылке спотыкается и возвращает пустой массив.

PHP Version 5.3.10-1ubuntu3.11
json support enabled
json version 1.2.1

Я хуею, дорогая редакция!

 

 

Восстановил полезную фичу, бывшую когда-то в моем старом движке (еще тех времен, когда он не был публичным движком-проектом, а работал как скрипты /dnevnik) - это геоопределение комментаторов. Теперь в комментариях появились обозначения типа Санкт-Петербург или Los Angeles

Определение происходит при приеме нового комментария, и использую я для этого две фичи: открытый сервис http://ipgeobase.ru/geo?ip=123.456.789.123 и (если он не смог определить страну и город) - то вызов консольной утилиты whois (проверьте, чтоб на вашем сервере она стояла, иначе apt-get install whois) с дальнейшей попыткой определить город. Это сложно, потому что редкий админ настолько дисциплинирован, чтобы указать тэг City: Moscow, обычно пишут тэг Address как бог на душу положит.

Все полученные результаты по диапазону IP, чтоб лишний раз не грузить вопросами внешние ресурсы, записываются в базы geoip и geoipd (в /install позвольте движку их создать).

В комментах отображается флажок страны и (если удалось) город. Для старых комментов есть возможность вручную на ссылку whois и заставить систему принудительно провести проверку IP, отныне записав в базу комментариев уточненные данные по этому IP. Пусть этим развлекаются посетители.

Нюанс: если вы обновляете движок с корневой системы (например, home.lleo.me), а у вас движок не корневой (например, установлен в папку /blog), то вам придется руками (я использую в меню админа "фотоальбом") поправить адрес картинки флажков в /css/sys.css - например в моем случае я ищу конструкцию background: url("/design/flags.png") и исправляю на background: url("/blog/design/flags.png")

PS: Если у вас есть какие-то другие идеи, как точно узнать город для любого IP мира, поделитесь. Разумеется, метод имеется в виду простой, открытый и бесплатный типа вышеупомянутого ipgeobase.ru Потому что концепция движка не предполагает импортировать скачанные в торрентах внешние базы, инсталлировать новый бинарный софт на свой сервер и прочие системные операции руками, которые многим владельцам движка недоступны на их хостинге.

 

 

UPD: Ну понятно, разобрались. Это, значит, защита от хака, причем в случае с авторизацией приложения Фейсбука — необходимая по определению. У меня, правда, в заначке был личный способ обхода браузерных политик с подменой своей страницы на чужую, нашел его случайно, и вроде даже год назад во всех браузерах он работал... но применять его не буду ;) В общем, открывается новое окно скриптом, закрывается тоже скриптом, обращается к главной странице тоже скриптом (это когда Фейсбук отработал и редиректнул окно со своей страницы на мою указанную). Проблема в том, что браузеры блокируют автоматические окна. Поэтому в большинстве браузеров открыть новое окно скриптом нельзя, а надо вывести пользователю кнопку или ссылку и попросить нажать рукой. Всё, что нажато рукой вниз по процедуре воспринимается браузером как легальное новое окно, и тогда оно открывается. Маразм, но будем так действовать.


Как выясняется, теперь (с какой радости?! с каких это пор?!) нельзя открывать в iframe многие страницы:

Еще ладно Opera — она (на скриншоте выше) хоть пишет суть проблемы и даже предлагает как-то ее решить. А Firefox, например, просто рисует пустое окно.

Вы спросите, зачем открывать подобные страницы в iframe? Представьте себе, Фейсбук требует авторизацию по своему протоколу — типа ему хочется показать пользователю свою страницу, там попросить пользователя залогиниться, либо нарисовать ему кнопку «разрешить приложению это» и всё такое, и только поизгалявшись, выдаст ключ. И я совершенно не представляю, как эту авторизацию выполнить без iframe. Потому что иначе придется уйти с основной страницы, а там, может, распахнуты кучи меню, в формах данные незаписанные, идет параллельный автопостинг аяксом во многие другие соцсети и вообще основная страница занята важными делами, и ей совершенно не улыбается бросить всё и кидать браузер на Фейсбук решать его дебильные проблемы.

Как вы думаете, что это за новомодная хуйня появилась? И как ее обойти? Могу я, например, открыть в браузере новое окно, а потом его закрыть?

 

 

Практически единственный чужой код, который присутствовал в моем движке — это аякс. Ну, который /design/JsHttpRequest.js на 24кб (это больше половины всего моего main.js!) и к нему еще /include_sys/JsHttpRequest.php, который вообще непонятно, чем занимается.

Это говно мамонта долгое время работало как-то, и даже позиционировало себя как процедуру, которая может по аяксу грузить файлы (фотка, загруженная в коммент). Но выяснилось, что оно давно уже не работает с движком Chrome и всеми его клонами Safari, включая мобильные браузеры. То есть — фотку не грузит.

Заебало совсем. Причем, я прекрасно отдаю себе отчет в том, что реализовать Аякс можно тремя способами (JS-инжекция, POST-iframe и какие-то штатные процедуры браузеров, у каждого свои). Для коротких запросов можно и JS, а вообще для всего остального, включая загрузку фоток, годится POST.

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

<form onsubmit="return ajaxform(this,'comment.php',{a:'comsend',b:1, и прочие дополнительные переменные, если лень их вставлять отдельным тэгом hidden})">

[ну дальше всякие тэги формы]
<input type='submit' value='отправить'>
</form>

И всё. И оно аяксом отправляется на сервер на урл comment.php. На сервере в ответной части вообще практически ничего делать не надо. Ну инклюдим разве что вспомогательные и авторизационные:
include «../config.php»;
include $include_sys.»_autorize.php»;
А дальше берем пришедшие переменные из $_POST (файлы из $_FILES). Ответом отправляем исполняемый код JS командой otprav(«alert('всё дошло!')"); И все проблемы с фотками остались в прошлом, и работает быстро и гарантированно на любых браузерах.

В будущем надо будет вообще от этого старого JsHttpRequest.js избавляться. Просто пока у меня готова только функция ajaxform(), которая передает не массив данных, а данные из уже готовой формы. Потому что там, где загружена фотка — там уже всегда есть какая-то форма, иначе браузер просто не может ее взять. Осталось только заменить процедурку, чтобы можно было ей передавать не форму, а массив, а форму она сама где-нибудь скрыто сделает.

UPD: Все, вообще убрал старый аякс. Вроде работает. Ох, чую будут глюки...

 

 

Задача: протестировать, сколько продержится аккумулятор у нового смартфона Highscreen. Схема тестирования ясна: надо положить на окно в режиме карты по GPS с максимально ярким экраном и посмотреть, сколько выдержал (предыдущий выдержал более 7 часов).

Первая проблема в том, что за смартфоном надо следить, когда вырубится аккумулятор. Дежурить у окна, то бишь. Вторая проблема в том, что гребаный Андроид 4.2.1 не имеет режима «не выключать экран», а имеет лишь максимум в 30 минут. Это подлость неимоверного размера.

Пришлось собрать устройство (на основе уже знакомого нам робота Бяши). Как раз пришел из Китая пакет с 50 штуками фоторезисторов — никому не надо? Просто 1 стоил столько же, сколько 50, поэтому купил кучку. В итоге фоторезистор приделан к удобной бляшке для правильного укладывания ровно на экран, подключен к Ардуине и настроен выдавать звуковой сигнал, когда экран телефона погаснет. Крышка коробки, понятное дело, закрывается, обеспечивая темноту.

Тестирование началось в 13:13. Будем бегать к окну по писку робота Бяши...

UPD: Спасибо за советы! Установил «Keep Screen On free», задал приложение Гугль-карты как неблокирующее, включил. Экран не выключается! Теперь робот меня позовет к подоконнику не каждые 30 минут, а когда аккумулятор сядет. Надеюсь, на измерения это приложение не сильно повлияет ;)

А вот тогда такой вопрос: а посоветуйте приложение, чтобы играло HD-видео (желательно по сети) непрерывно? Ну, плейлист какой ему бы задать или как?

 

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий