← All posts tagged code

Balancer
code Lua
Есть тут ещё кто живой с Lua? :) Можете ответить, почему так?

> print(bit.band(0xff000033, 0xff))
255

> print(bit.band(0xff33, 0xff))
51

> print(0xff000033)
4278190131

То есть интересует первое, следующие два действия — для проверки того, что логика работает и 32-х битные числа понимаются :)
Balancer
code nginx ошибки
nginx ppa сломали. Не апгрейдится штатно. Вот простейшее решение:

Work-around fix:

Edit /var/lib/dpkg/info/nginx-common.config

and add a return on the first line of the log_symlinks_check function.

e.g.:

 log_symlinks_check() {
     return                <---- here
     # Skip new installations
     [ -z "$1" ] && return
Balancer
Bash code cp cli find
Скопировать все файлы за 2009-й год из подкаталогов в целевой каталог с сохранением структуры.

find . -newermt 20090101 -not -newermt 20100101 -type f -exec cp -a --parents \{\} /tmp/2009/ \;

Полезно для раскладывания хаотично пополняемых каталогов в squash+aufs слои.
Balancer
code Lua
Наверное, стреляю в ногу, но не пойму, почему в lua так работает:

local sda, scl = 2,1
i2c.setup(0, sda, scl, i2c.SLOW)

а так — нет:

i2c.setup(0, 2, 1, i2c.SLOW)

Это в продолжение http://juick.com/Balancer/2817867#14

Ни ошибки, ничего. Просто перестаёт работать i2c. Чуть голову не сломал, пока не понял, почему у меня в какой-то ситуации железка перестаёт работать :)
Balancer
Bash code hint cli mv
Переименовать все картинки в подкаталоге, перенеся их в текущий с последовательной нумерацией:
find Wallpapers -type f | cat -n | while read n f; do mv "$f" "$(printf "bg%06d.jpg" "$n")"; done
Balancer
P2P движки форумы markdown Infonesy Если я правильно понял https://github.com/mybb/Parser, то на 2-й версии MyBB можно использовать Markdown. И тогда можно будет перевести на него все форумы Infonesy по умолчанию.

— Движок Авиабазы и сейчас понимает Markdown, просто чтобы народу голову не забивать, вариант BBCode используется без возможности выбора альтернативы
— MyBB 2
— Vanilla Forum
— FluxBB
— Flarum (правда, там кривой и принципиально не расширяемый Markdown без таблиц)

Получается, всё, что я щупал и признал интересным, теперь сможет поддерживать Markdown. Отлично :)
Balancer
социальные_сети code P2P Infonesy
Решил попробовать включить в файлы для обмена топиков ещё и UUID постингов. Чтобы приёмная нода сразу могла понять, все ли постинги есть у неё и при необходимости запросить у исходной недостающее (например, когда нода включается в работу поздно, когда идут пополнения уже имеющегося давно топика). В таком духе:

{
    "UUID": "ru.balancer.board.topic.39814",
    "Node": "ru.balancer.board",
    "Title": "G36",
    "Date": "Wed, 14 Jun 2006 03:22:00 +0400",
    "Modify": "Fri, 25 Mar 2016 22:57:26 +0300",
    "Type": "Topic",
    "ForumUUID": "ru.balancer.board.forum.6",
    "Keywords": [
        "армия"
    ],
    "Author": "Stribog",
    "AuthorMD": "059a7f25d4be01ae98f401048f0f2f5b",
    "AuthorEmailMD5": "059a7f25d4be01ae98f401048f0f2f5b",
    "AuthorUUID": "ru.balancer.board.user.8395",
    "Posts": [
        "ru.balancer.board.post.759526",
        "ru.balancer.board.post.759563",
        "ru.balancer.board.post.759910",
        "ru.balancer.board.post.759919",
        "ru.balancer.board.post.4124847",
        "ru.balancer.board.post.4125397",
        "ru.balancer.board.post.4126108",
        "ru.balancer.board.post.4126149",
        "ru.balancer.board.post.4126164",
        "ru.balancer.board.post.4126167",
        "ru.balancer.board.post.4126172",
        "ru.balancer.board.post.4126877",
        "ru.balancer.board.post.4126954",
        "ru.balancer.board.post.4144048",
        "ru.balancer.board.post.4144049",
        "ru.balancer.board.post.4144841",
        "ru.balancer.board.post.4144956"
    ]
}

Проблема — есть много огромных топиков. Так что сразу за 4 дня в обменном репозитории легло 23Мбайт файлов. Это на 876 штук. В то время, как всех остальных файлов (постинги, описания аттачей, форумы, категории) за 14 дней всего на 16Мбайт (16255 штук).

Т.е. основной обменный трафик в этом случае будут составлять файлы постингов.

Не то, чтобы 23Мбайт за 4 дня много (хотя трафика реально много больше, т.к. топики же обновляются с каждым постингом), но как-то выглядит неаккуратно. А ещё есть идея попробовать файлы постингов засовывать в ipfs, и хеши вписывать в файл топика. Чтобы приёмная нода могла постинги уметь прочитать даже при падении исходной ноды без поиска других нод с архивом этих постингов. Это ещё примерно удвоит размер файлов топиков...

Прямо не знаю, что делать :) Наверное, пока лучшая идея не появится, буду, таки, писать и UUID постов и IPFS-хеши... Но — не красиво :-/
Balancer
Gentoo code выпиливание
Ай, красавцы :) Давно не следил, но, похоже, тренд остаётся. Только на помощь Samuli Suominen пришёл Pacho Ramos? :)

!!! The following installed packages are masked:
- app-emulation/vagrant-1.4.3-r2::gentoo (masked by: package.mask)
/var/portage/tree/profiles/package.mask:
# Pacho Ramos <pacho@gentoo.org> (05 Jan 2016)
# Needs to be bumped but it lacks maintainer, bug #505124. Removal in a
# month.

- net-fs/tahoe-lafs-1.10.0-r2::gentoo (masked by: package.mask)
/var/portage/tree/profiles/package.mask:
# Pacho Ramos <pacho@gentoo.org> (06 Jan 2016)
# Cannot be installed, bug #541626. Removal in a month.
Balancer
Juick баги unicode utf-8 На Juick, оказывается, невозможно написать сообщение с новыми символами utf-8. Смайлики всякие, emoji и т.п. Получается пустое сообщение, которое нигде не отображается.
Balancer
XML документация docbook markdown bb-code Забавно, что пару лет назад, когда меня интересовал промежуточный слой XML для хранения логики BB-code разметки перед конвертацией в HTML ( linux.org.ru ) никто не предложил DocBook XML. Похоже, это то, что нужно. И позволит унифицировано задействовать разметки в других форматах, хоть Markdown, хоть AsciiDoc. Надо будет попробовать задействовать на практике.
Balancer
FORTH мемуары BORS© У меня был интересный этап в развитии нынешнего PHP-фреймворка. В ~1998-м, делая первые сайты, я задумался о шаблонной обработке и упрощении разметки (BBCode родился чуть позже и до России дошёл почти на год позже, Markdown даже в планах не было). Был придуман свой язык разметки, который парсился через QBasic, генерируя уже HTML-код, который и использовался в статических страницах.

Скоро меня запарили проблемы расширения новым функционалом решений на qbasic и я написал парсер на SP-Forth. Написал так, что исходный файл с разметкой без переделки был полноценной программой на Форте :) Вот в таком виде оно полноценно и развернулось.

Уже потом были переход на Perl вместе с выходом в онлайн, перевод платформы на PHP, более 10 лет развития движка… Но прикольно вспоминать, что корни некоторых решений уходят ещё в Forth-прошлое :) // для habrahabr.ru
Balancer
WTF code
Ломаю голову над кодом в одном известном форуме:
> $this->ipsclass->base_url = $this->ipsclass->base_url;
Это в конструкторе. И в этот момент $this->ipsclass == NULL. Как оно работало раньше - не представляю. Мне, чтобы оно заработало теперь, пришлось логику инициализатора переписывать :)
Balancer
Gentoo Давно не писал про отжиги гентудевов, хотя их было не мало. Надоело. Но сегодня обнаружил новый прикол — полностью замаскировали sun-jdk.

[code]
!!! The following installed packages are masked:
— dev-java/sun-jdk-1.6.0.45::gentoo (masked by: package.mask)
/usr/portage/profiles/package.mask:
# Tom Wijsman <TomWij@gentoo.org> (30 Jun 2013)
# Sun JDK and JRE contain critical vulnerabilities and receive no further
# updates; masking to make users aware of this, users that still need this
# package and have no alternative can unmask at their own risk. See bug #473830.
[/code]

Интересно, как скоро они дойдут до маскировки python или gcc? :)
Balancer
блоги Android клиенты форумы Авиабаза У меня давний технический затык.Хочу приличный клиент для блогов/форумов Авиабазы. Блогов/форумов — потому что по сути у меня блоги — это элемент форумов.

После долгих изысканий пришёл к выводу, что в качестве таковых клиентов альтернатив нет WordPress'у (реально обалденный клиент) и Tapatalk (не лучший вариант, но альтернативы просто отсутствуют).

Дальше логика простая, рождённая ещё на LiveStreet (хотя там только юзеры синкались, не записи). Поднимаем WordPress и настраиваем двухсторонний синк с моими блогами. Пишем в WP из клиента — запись появляется на и форумах. Пишем в блог на форумах — читать можно в клиенте под Андроидом. Естественно, та же история с комментами.

Итак, с движком для блогов всё понятно. Тем более, кстати, что у WordPress и десктопный клиент нынче великолепный. Весь из себя WYSIWYG и AJAX, удобный, функциональный...

Вот с форумами оказался затык. Вообще, я поначалу долго думал реализовать свою поддержку Tapatalk через их API. Но быстро сдался. Я тупо не нашёл документации по API. Пытался разбираться на примерах их плагинов к популярным форумам, но не осилил. Времени жалко :)

Дальше логика та же. Ставим какой-то форум с официальной поддержкой Tapatalk и делаем двухсторонний синк с ним. Целиком на новый движок не переходим, так как мне функционал и архитектура ни одного из популярных движков не нравятся, а переписывать чужие движки... опять получится мой вариант, который, кстати, из punBB растёт.

Открытых движков с поддержкой Tapatalk целых шесть. Первая мысль была о phpBB. Прошло больше десятка лет с того момента, как у меня был последний негативный опыт с этим движком, старое овно успело забыться, движок в 3-й версии мегапопулярен... Была надежда, что его достаточно вылизали :)

Поставил, погонял в паре с Tapatalk. Отлично. Полез в потроха, оценить удобство интеграции с ним без ковыряния в коде. Адъ и Израиль. Сообщения хранятся в перелопаченном BB-коде, ускоряющим вывод. Пример кода в Juick не кинуть, но это реально извращение :) С подключением плагинов относительно невесело. Часто требуются патчи движка. В общем, всё как и было 10 лет назад, только ещё BB-код в бэкенде доломали. В общем — не наш выбор.

Simple Machines. Даже не ставил. По тестам производительность хреновая. Ещё очень свежи в памяти ряд случаев, когда меня через него ломали. В общем, не щупал. Может и зря, ну и фиг с ним.

Kunena — на Joomla. Не то, чтобы у меня предубеждения против Joomla, но как-то не впечатлило. Ни рыба, ни мясо…

bbPress. Внезапно оказалось, что у WordPress'а есть «нативный» форумный движок. Исследования отзывов в Интернете (да, это был обязательный элемент по всем движкам — общий поиск, LOR, Хабр, AlternativeTo, …) Года до 2009-го был полной опой с массой негатива, в последних версиях стал много лучше. Вариант был интересен тем, что плотно интегрирован с WordPress, который, напомню, у нас итак стоит блоговым параллельным движком из-за качественного клиента. На этот движок я в итоге делал большие ставки. Плевать, что интерфейс не привычный, всё равно основные пользователи будут на форуме через мою морду сидеть. Зато у WordPress сейчас лучшая, вероятно, система плагинов. Полный автомат, ничего вручную качать не надо, ничего не надо патчить. Сказка. Поставил. Поиграл. Понравилось. Полез в потроха, чтобы повозиться с конвертацией. Закрыл и решил больше не возвращаться. В WordPress все объекты (блоговые записи, постинги, топики, форумы, страницы сайта) в одной таблице. Это ад. Как представляю, как это всё будет работать, когда в таблице будет 2-3-5 млн. записей… Жесть. Отказать.

Vanilla. Очень много позитива об этом движке. Загорелся. Поставил. Муть с плагинами и разметкой. Из коробки даже bbcode нет. Плагины конфликтуют. Всё кривое. Многое требует патчей. Добило то, что по бенчмаркам оно ещё и тормозом оказалось.

Итить... в Juick больше не влезает (при чём он молчит как партизан). Так что продолжил на plus.google.com
~~~
Balancer
HTML баги Google_Chrome То потухнет, то погаснет… Только я отписывался ( #2324244/3 ), что в chromium-25 глючит атрибут title (не всплывает тултип), а в chrome-26 — нет, как после обновления перестал работать title уже и в chrome-26. Какая была раньше точно версия, не в курсе, сейчас — 26.0.1410.63

Ну вот как так разрабатывать можно? o_O



Мля. Пока писал, наткнулся на баг code.google.com

Оказывается не баг, а фича. Тултипы перестают работать, когда в браузере открыто много табов. Пипец приехали… Позакрывал лишнего — заработало. XXI век. 8Гб оперативки.

Интересно, в Опере на Вебките также будет или нет? :)
Balancer
Linux lxc rrdtool LXC рулит, однако. Дошли руки до поковыряться со старыми данными munin, недоступными из-за апгрейда 32 to 64 бит. Дамп, как обычно, вовремя был забыт, только бинарные файлы. Ну и традиционное «ERROR: This RRD was created on another architecture». А тут осенило. Глянул — LXC отлично поддерживает 32-х битные контейнеры в 64-х битном хосте.
[code=bash]
lxc-create -n ubuntu32 -t ubuntu — -r quantal -a i686
[/code]
и готово. Загрузился в 32-х битный контейнер, сделал дамп старых .rrd, вышел в хост, восстанвил из дампа уже на 64-х битах, через gist.github.com — и готово. Старые данные уже доступны снова:
balancer.ru

Теперь надо, наконец, разобраться с munin на тему динамических графиков, чтобы смотреть и данные старше, чем за год. Ну и на Авиабазе попробовать восстановить архив munin'а, там в конце 2009-го такая же бяка была, тогда не решённая :)