Category: it

Category was added automatically. Read all entries about "it".

спецы Линукс: прошу помощи!

© https://lleo.me/dnevnik/2021/10/25

Не могу побороть проблему, прошу помощи зала!

Кратко: не могу поднять в новом сервере звуковую карту USB. C железом этого роутера-сервера (Banana BPI R2) работает только один специально заточенный клон Debian, но в нем нет звуковых модулей *.ko, где их взять и как приладить — не понимаю. Иными словами, дальше лучше не читать — тема для специалистов.

UPD: решено, спасибо Sergey Nazaryev:

Sergey Nazaryev:

— нашёл репозиторий, в котором лежали исходники ядра: https://github.com/frank-w/BPI-R2-4.14

— откатился в репозитории до версии ядра, которая была использована в составе образа (откатился до коммита 4d86407fb1a376c6ef257e82180702553e7c4f65)

— собрал идентичное ядро и модули к нему:
Запустил их скрипт для конфигурации и сборки ядра:
./build.sh importconfig
./build.sh config
./build.sh
В процессе конфигурации добавил snd_usb_audio и всё что было рядом в качестве модулей (сам SND судя по всему вкомпилен в ядро; config.gz может это подтвердить).
Собрал, запустил make modules_install INSTALL_MOD_PATH=$PWD/modules
Ещё в файле scripts/dtc/dtc-lexer.l надо поменять строчку YYLTYPE yylloc на extern YYLTYPE yylloc, а то ничего не будет собираться.

— закинул модули в /lib/modules (прим. LLeo: вот ссылка на готовый архив бинарников конкретно для версии 4.19.62-bpi-r2: /lib/modules-4.19.62-bpi-r2-main, я тупо заменил старый /lib/modules, сделал depmod -a, перегрузил систему, и звуковая карта появилась!)

— в /etc/asound.conf прописал, чтобы дефолтным «устройством» был plughw (https://unix.stackexchange.com/a/373858); таким образом в момент, когда какое-либо приложение пыталось выдать звук в ALSA, он был сконвертирован в поддерживаемый USB-звуковой картой формат:

/etc/asound.conf

pcm.!default {
 type plug
 slave {
 pcm "hw:1,0"
 }
}


[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/25

О восстании машин

© https://lleo.me/dnevnik/2021/10/17

Смею успокоить прогрессивное человечество: пока алгоритмы Гугль-объектива, глядя на банальный QR-код, видят в нем черный квадрат немалевича и успешно ищут похожие изображения, возникновение искусственного разума и восстание машин откладывается на неопределенный срок.





это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/17

Попрактиковался в английском

© https://lleo.me/dnevnik/2021/10/14

Постучалось ко мне в Фейсбуке существо по имени Михаил Белый. Существо не понимало по-русски, жило в материковом Китае, имело телефон +86 и искало любого живого человека (сгодился даже я), который его поймет. Проблему существо объяснило так: его молодой китайской фирме нужны программисты, нет ли у меня знакомых программистов? На вопрос, почему бы не пойти на job.ru или погуглить на github, существо объяснило, что это все закрыто в Китае. А вообще ему нужно пробиться за программистами на некий upwork.com, где его, я так понял, забанили за спам. Я уж было растрогался и решил ему помочь завести аккаунт и даже завел mbeliy175@gmail.com с паролем IamFakeMan, что его очень расстроило. В процессе разговора выяснилось, что «тетенька дайте воды попить, а то так есть хочется, аж переночевать негде» (не знаю, как это звучит на китайском). В том смысле, что в итоге существо попросило не менее, чем полный доступ к моему ноутбуку. А также ему было нужно для будущих регистраций мое паспортное имя и мой ИНН. Подозреваю, что и это не полный список хотелок. Я объяснил, что существу с фейковым именем Михаил Белый и фейковой фоткой наверно не готов давать рута на своем ноутбуке, и существо тут же предложило мне купить отдельный ноутбук, чтобы воткнуть в мою сеть в России и платить мне за это 100$ в месяц. Но только чтобы подписываться всюду именем Леонид Каганов и моим ИНН. Я пообещал ему поспрашивать у друзей. Поэтому два вопроса:

1. Нет ли среди вас случайно лохов?

2. Не понимаю схему разводки. Может, это и правда китайский студент, которому позарез надо пробиться через великую китайскую стену?



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/14

Пока, Фейсбук!

© https://lleo.me/dnevnik/2021/10/13

Новости моих соцсетей.

Фейсбук

Фейсбук сам торопит, напоминает и называет конкретную даты, когда мой аккаунт Фейсбка наконец исчезнет и перестанет жрать мое время — 28 октября, накануне Грелки, заботливо. Я понятия не имею, о чем речь и что за «протект» предлагается включить, но подозреваю, что это связано с мобильными приложениями. Нет, фейсбук, у меня никогда не было установлено твое сраное приложение и никаких бэкдоров твоей уебищной конторы я устанавливать уж точно не собираюсь, мне и твоего Вацапа многовато. Напоминаю всем фейсбучным френдам: я не пропал, не перестал писать, не выкинул вас из друзей, а больше месяца назад принял решение уйти из фейсбука. Веду я блог по-прежнему, как и все последние 20 лет, на своем сайте, также он дублируется в телеграм и другие нормальные соцсети. Если вам далеко ходить на мой сайт, а хочется удобств и быть в тренде, подпишитесь на мой телеграм-канал. Станете трехтысячным подписчиком, там как раз одного не хватает, и я жду вас.

Ютуб

Слегка ебанулся и Ютуб — прислал грозное письмо, что видео под названием «07 02 NewSuper Машина Davis mpg», якобы загруженное мною сегодня — часовой концерт группы «Машина времени» лохматого года — содержит многочисленные нарушения авторских прав и поэтому «Ваше видео заблокировано в следующих странах: Antarctica, British Indian Ocean Territory, Greenland, Saint Pierre and Miquelon». Я исключительно хорошо отношусь к Андрею Вадимовичу, но никаких видео не грузил. И даже не видел. И даже стран таких не знаю. Тем не менее, видео открывается по присланной ссылке как якобы загруженное мною, хоть и скрытое от посторонних. Впору решить, что мой аккаунт взломан, но (помимо абсурдности акции) есть нюанс: в списках моих видео в Ютуб-Студии оно не фигурирует, и если бы не письмо с ссылкой, я бы о нем никогда не узнал. Написал о ситуации в Ютуб, там тоже очень удивились, обещали разобраться и доложить. Забудут, скорее всего, но зато вежливые, пообщался с живым оператором. Не фейсбук.

Движок

Добрый Владимир Ильич Ленин из предыдущей заметки любезно пообещал в интересах мировой революции взломать мой сайт без особого труда, если будет свободная минутка. Глянул одним глазом код движка на Гитхабе и тут же успешно взломал, обнаружив архипозорную XSS-уязвимость в первом же попавшемся абзаце, предназначение и смысл которого я сам не помню. Уязвимость я поправил, владельцы движка — обновитесь с /dnevnik (binoniq я пока не обновлял, так как по понятным причинам для XSS уязвимы только движки в однопользовательском режиме). С содроганием смотрю на портрет Ильича и недоумеваю, сколько же еще архидыр в моем архикоде.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/13

умер Алекс Мась

© https://lleo.me/dnevnik/2021/10/09

В это невозможно поверить, но 6 октября умер Алекс Мась — удивительно светлый человек, известный IT-деятель и предприниматель, создатель конференций и стартапов.

Его работоспособность потрясала, он был в вечном движении, постоянно изобретал проекты и фонтанировал идеями. «Я сплю 4-5 часов, мне хватает» — рассказывал он мне.

Алекс был удивительно красив во всем. Он не любил скандалы, он всегда улыбался, он носил только красные рубашки, а ездил на красном додже с надписью «ДЗЕН» в качестве номера. Это не было каким-то особым блатом — он просто пришел в ГАИ и оформил себе ДЗЕН в качестве номера. Это мог сделать каждый, но это сделать мог только Мась.

Это был человек, который жил и украшал жизнь вокруг, развивал IT-индустрию и умер от болезни в один день со Стивом Джобсом. Совершенно не представляю себе Киев без Алекса, очень грустно и совершенно невозможно поверить.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/10/09

А вот кто шарит в MySQL?

© https://lleo.me/dnevnik/2021/09/29

Совет нужен. Имеется таблица актуальных сущностей типа MEMORY для торчания в памяти. В таблице раз в несколько секунд кратко отмечаются некие сущности — например девайсы. Или посетители сайта. Если такая сущность в таблице была, обновляется только время посещения, иначе создается новая запись. Раз в минуту приходит смотреть таблицу стационарный скрипт cron и удаляет всё, что не обновлялось последние 10 минут. А теперь вопрос:



Вот схожая таблица посетителей:



Не дохера ли великие индексы и объемы данных у таблицы, в которой живёт 12 (во втором случае 48) сущностей? Откуда там мегабайты? Или это похоже на ошибку отображения? Или это накапливаются какие-то индексы, которые тоже имеет смысл периодически дропать и пересоздавать?

PS: Кстати про UDP — я почти разобрался и почти написал на чистом С крошечный UDP-сервер для девайсов, чтобы они его пингали по UDP вхолостую, а если такое случилось, что есть для них сообщения в базе, то о том будет ответ UDP, и тогда пусть уж бегут и забирают по TCP. Простенько, минимальная нагрузка на сервер и девайсы, даже AES думаю не привинчивать. Как доделаю, опубликую код, может, кому пригодится.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/29

Немножко занялся своим сервером

© https://lleo.me/dnevnik/2021/09/22

Чуть оптимизировал страницы.

Убрал нахуй все счётчики, метрики и прочие бэкдоры Гугля и Яндекса. Не вижу в них больше смысла для личного сайта. Я же не продажами косметики тут занимаюсь, последний раз изучал статистику годы назад, нахер она вообще нужна сегодня, статистика от гигантов. А ваши ресурсы в моем блоге они жрут, да ещё и следят.

Средствами JS закэшировал беготню вашего браузера за ковидной статистикой, карантинками и прочим внешне собираемым контентом. В браузерах есть локальные хранилища до 5 мб на сайт, и минут 10-20 там все эти данные точно могут полежать без лишних АЯКС-запросов на сторону. Средствами движка на клиенте такие вещи надо решать, я считаю. Тем более, это очень просто, там же пара строк на JS.

Что касается кэширования вообще, то меня удивляет, что не кэшируются браузером JS и CSS на моих страницах — по крайней мере, Firefox показывает, что каждый раз грузит их заново. Картинки кэшируются, скрипты и css нет. Почему? Кто разбирается, может глянуть? Наверно лучше напрямую на сервер: по http://kz. Так оно через CloudFlare, а по kz.lleo.me отвечает сам мой сервер.

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

Я пока не очень представляю, как это может помочь мне содержать вебсайт или ускорить AJAX-обмен средствами JS (не уверен, что браузер умеет в UDP), но, например, свои девайсы я бы хотел перевести на UDP для связи с сервером.

Также слышал, есть какой-то сверхбыстрый протокол работы с сайтами HTTP поверх UDP, назвается QUIC, и его можно вкомпилировать в nginx на сервере. Но я так понял, основные браузеры его толком не поддерживают. Или поддерживают с плагинами? Кто в курсе и что может посоветовать?

Наконец, по совету Олега Ховайко я всё-таки твердо намерен поставить на свой сайт крипто-DNS от Emercoin и прочие другие штуки. Мы что-то слишком мало с вами тратим времени на развитие и популяризацию новых технологий. Нас всех закроют раньше.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/22

Живые девайсики

© https://lleo.me/dnevnik/2021/09/21

Дошли руки сделать наконец админку для девайсиков — в основном поливальных станций — на lleo.me/bot Там много всякого полезного, особенно конечно удаленное администрирование девайсов. Оно неспешное, но позволяет управлять девайсом из любого места, в том числе редактировать на нем скрипты и настройки.

Удалось это сделать потому, что девайсы пингают сервер время от времени. К сожалению, интернет-технологии пошли по неправильному пути развития, IPv6 не внедряется сознательно уже лет двадцать, и до сих пор нет никакой возможности переслать два байта к хосту, если он сидит на внутреннем IP (а за внутренним IP сидят вообще все, кроме серверов). Так что единственный способ девайсам общаться — это пингать какой-то сервер¸например (по дефолтным настройкам) мой.

Кстати о пингах: также отдельно сделал страничку наблюдения за жизнью девайсов онлайн. Для этого пришлось освоить тип базы MEMORY, которая в памяти хранится, и научиться вести учет онлайн-событиям на сервере. Заодно сделал в дневнике список онлайн-посетителей внизу странички, но это так, баловства ради. Проверить, какие нагрузки сервер держит.

А вот отображение живых девайсов полезно. Оказалось, в живых их сейчас немного. Ну либо остальные отключили в настройках пинг моего сервера, но в это верится с трудом. Из соображений секюрности я не могу получать никаких данных, кроме имени, которое присвоил пользователь. И вижу, что живых сейчас всего 10. Из них 5 мои: 3 в Чертаново у меня и отца, а еще мои 2 в Питере на цветы и кактусы (кактусы поливает раз в неделю). Штуки две или три наверно у Ильина — вот это Fialki это точно у него в Домодедово где-то работает. А еще чья Default3?


<input ... >

UPD: А нет, ещё вижу один живой девайс. Это вообще прикол, потому что девайс этот делал не я. А система моя. Какой-то мудрый чувак из сети спросил меня, сможет ли моя операционка поливать много растений, если он спаяет себе девайс и припаяет дофига разных насосов на все мыслимые ноги процессора. Я порадовался, надавал советов по настройке, и видимо он это сделал. По крайней мере загадочное устройство сервер не пингает ежеминутно, но исправно присылает на него отчеты о выполненных поливах (это немного другой протокол) — грамотно написанные, даже указано, какой пин за какой овощ отвечает :) Так что живых устройств не 10, а 11.




это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/21

Программисты, хотите поржать над OZON.RU ?

© https://lleo.me/dnevnik/2021/09/11_1

Это прямо такой анекдот, что распространение в тематических форумах приветствуется. Программисты поймут.

Есть известный магазин OZON.RU, в нем API для продавцов. Год назад один друг, служащий в торговле, попросил ему сделать системку, которая бы загружала на OZON карточки товаров для продажи, чтобы ему не приходилось год за годом переносить руками все графы из каталогов склада. Я в этой истории вообще не сотрудник, не программист, а просто совершенно левый человек, который помогал старому другу в основном из любви к искусству. Системку я наваял, год всё жило где-то у меня на lleo.me, и работало быстро и интерактивно, облегчая монотонный труд оператора.

API Озона и так было кривым, но теперь вышла новая версия, а старая отключена... В двух словах на пальцах объясню принцип, чтобы поняла даже блондинка.

Допустим вы продаете товар: не важно, рояль, детское питание или сраный шнурок. Вы должны завести через API карточку своего товара. Помимо «Цена = 200 руб» вы заполняете в карточке кучу характеристик товара, чье количество может быть и сотня обязательных параметров (для ноутбука). Здесь и далее синтаксис запросов для понятности опускаю, голый архитектурный смысл карточки таков:

«Категория» = «Кабели»
«Бренд» = «Beauty Bakerie»
«Цвет» = «Зелёный», «Черный»

Это недостижимый идеал юзабилити. Так было бы устроено API нормальных людей. В Озоне такого не было никогда. В OZON.RU системные архитекторы от бога. Они не могут принимать от клиентов имя категории «Кабели» и пробить по своей базе, что она у них имеет внутренний номер 17028634 сегодня. Сегодня — потому что их номера постоянно меняются. Нет, они требуют, чтобы номер выяснил сам клиент (!). То есть — сделал лишнее обращение к API отдельным методом и узнал, что категория «Кабели» имеет номер 17028634. И еще одно обращение к API — узнать, что атрибут «Бренд» имеет внутренний номер 85, «Цвет» — 10096, и так далее. Только сделав кучу лишних запросов, клиент мог создать карточку в формате API v.1 по смыслу примерно такую:

«Категория» = «17028634»
«85» = «Beauty Bakerie»
«10096» = «Зелёный», «Черный»

Уже мило, правда? Но такое счастье было лишь до недавнего времени. Всё развивается, развились и технические сотрудники OZON.RU С 1 сентября они выключили API v.1 и включили API v.2 Видимо, я пока единственный его пользователь. Новое API требует передавать номерами не только атрибуты, но и их значения:

«Категория» = «17028634»
«85» = «971072945»
«10096» = «3141», «5925»

Значит, клиент должен выяснить еще и номера своих значений? Ну конечно! Делая дополнительные запросы к API методом /v2/category/attribute/values и только им. Метод позволяет выкачивать словарь всех возможных значений для каждой из характеристик товара!

Чтобы узнать номер бренда «Beauty Bakerie» надо всего лишь сделать... подряд 867 запросов. Чтобы получить порциями по 50 штук (максимальное ограничение) все 43350 названий брендов на сегодняшний день, и в конце списка найти свой «Beauty Bakerie» = 971072945. А характеристик у товара ещё много. И для каждого значения надо узнать его номер. Например «Стран-производителей» сейчас в базе Озона всего 266, и за каких-нибудь 6 запросов вы все их узнаете. Далее вам предстоит выкачать 10100 названий атрибута «Коммерческий тип». Затем — 303150 названий атрибута «Серии», сделав 6062 запроса... Понимаете, да? ШЕСТЬ ТЫСЯЧ СУКА КЛИЕНТСКИХ ЗАПРОСОВ К СЕРВЕРУ ТОЛЬКО ЧТОБЫ УЗНАТЬ НОМЕР ОДНОГО ЗНАЧЕНИЯ ДЛЯ ОДНОГО ИЗ АТРИБУТОВ! Только потому, что программисты поленились сделать это на стороне сервера и вынесли на голову клиентов свои собственные проблемы со своей собственной нумерацией своей собственной сраной базы!

Понимаете, да? Это примерно как если бы я в своем блоге требовал от посетителей предварительно выяснить и указать в тексте своего комментария к заметке внутренний номер заметки (у этой заметки он 5034, например, но кого это должно волновать, кроме программиста и его базы на сервере?)

На мои недоуменные вопросы теходдержка OZON.RU отвечает:

11 сентября, 19:46
Уважаемый партнёр, к сожалению необходимо запрашивать полный список для получения нужных данных, вы можете сохранить его в своей базе данных и отсортировать нужные значения. Также вы можете написать скрипт, который будет в автоматическом режиме выгружать или искать необходимые вам значения из нашей базы.
Если у вас остались вопросы связанные с API будем рады помочь.

У меня, простого русского писателя-фантаста, конечно, остались вопросы.

Какую зарплату ежемесячно получают программисты компании OZON.RU?

Есть ли у них главный программист, архитектор, постановщик задач, или работают как-то так?

Сколько классов в среднем у них образование?

Оно уже завершено или еще продолжается, раз выключение старой версии API было приурочено к 1 сентября?

Знают ли инвесторы и руководство OZON.RU о том, какой системный ад происходит в отделе технической разработки?

Не жалко ли им своих серверных мощностей?

У меня много вопросов.
Но задавать их, как вы понимаете, нет смысла и некому.


UPD: Пришел новый ответ:

12 сентября, 8:26
Добрый день, уважаемый партнер.
Согласен с вами, что на данный момент механизм добавления бренда неудобен.
Наша команда разработки в курсе этой проблемы.
На данный момент решается вопрос о реализации работы метода.
В планах есть добавить переменную query или search в [https://api-seller.ozon.ru/v2/category/attribute/values], на основе которой будет происходить регистро-нечувствительный поиск по справочнику.
К сожалению точные сроки реализации неизвестны, информацию об обновлении, можно смотреть здесь:
https://docs.ozon.ru/api/seller/#tag/News
Сейчас большинство партнеров, хранят бренды на своей стороне.
Затем периодически обновляют информацию, так как справочники брендов динамические.
Понимаю, что предложенный вариант не совсем удобен, но к сожалению на данный момент других, более удобных способов нет.
В случае возникновения дополнительных вопросов, обращайтесь, будем рады вам помочь.


UPD 2: Нет, ну совсем сил нет. Наверно я это зря написал:

Простите, вы там вообще наркоманы упоротые?

Мало того, что вы отключили старый API и нарушили работу систем всех своих партнеров.
Мало того, что ваш новый API чудовищно непрофессионально спроектирован и заставляет делать сотни тысяч обращений к серверам чтобы локально вытянуть кучу гигантских словарей и узнать, каким сраным временным индексом в своих грёбаных внутренних базах вы сегодня обозначили нужное value. Так у вас еще и эти базы битые, содержат взаимно противоречащие дубли?!!

category_id = 17028634 attribute_id = 85 value = Hama id = 5092609
category_id = 17028634 attribute_id = 85 value = Hama id = 115527429

Вы вообще что ли ничего не умеете, даже индексы строить?! Вас по итогам районной олимпиады трудоустроили в корпорацию? Может вам всем отделом уже пойти на курсы какие-нибудь по программированию и базам данных? Господи Кришна, на что я блять, простой писатель-фантаст, трачу своё сука время, помогая другу с автоматизацией его неведомого склада, который я ему наладил год назад и забыл нахуй, а теперь вы блять всё поломали. Да будьте вы прокляты, ебанаты хтонические!




это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/09/11_1

Сделал автопостинг в telegra.ph

По настоятельному совету друзей и в связи с предстоящим уходом из фейсбука запилил еще одно зеркало дневника — на https://telegra.ph

Это удивительный по нашим временам сервис — любой незалогиненный может там запилить постик любого содержания и рассылать всем на него ссылку. Но я залогиненный.

Телеграф — детище Телеграма. То есть Павла Дурова. Как гласила народная молва, «ВКонтакт развивается по спирали — всё поспирали у Фейсбука». Поразительно, с какой тщательностью Павел Дуров переносит в свои проекты все костыли и грабли, которые десятилетиями выстраивал Фейсбук в попытках перепилить сервис обмена текстовыми заметками в сервис по обмену еще и фотками, ссылками, видосиками, а потом еще и заметками.

Как вы наверно знаете, в Фейсбуке есть три сущности: «Page», «Page+attachment» и «Note». Page — это просто текст, постик. Если при наборе постика ты упомянул ссылку или добавил фотку — постик превращается в Page+attachment — постик с вложением: внизу под текстом рисуется фотка или превью первой из ссылок (ссылка считается аттачментом). Page+attachment ранжируется и показывается Фейсбуком менее охотно, чем Page, поэтому я сперва создавал пост без ссылок, чтобы Фейсбук его создал в категории Page, а затем редактировал текст, добавляя все нужные ссылки, — категорию публикации после ее редактирования Фейсбук уже не в силах изменить, он кривой. Позже вместо одной фотки Фейсбук разрешил прикреплять целый фотоальбом — тогда фотки единой кучей лепятся внизу. Самой интересной опцией была «Note» — она позволяла создавать посты с элементами верстки: делать курсив, подчеркивание, цитату, а главное — перемежать текст многочисленными фотками, обсуждая их по ходу заметки. Почему вообще возникло такое дебильное деление материалов на три категории, почему их нельзя хранить в одной базе публикаций и почему вообще эти внутренние проблемы ебаных программистов должны быть вывалены на уши пользователя и представлены как правило — большой вопрос к криворуким программистам и мальчику-школоте, создавшему Фейсбук. Со временем Фейсбук запретил создавать Note через API, а теперь, я так понимаю, запретил создавать Note вообще. По крайней мере, в моем аккаунте создавать Note стало запрещено.

К чему я это рассказываю? Все уродливые костыли, сложившиеся сами собой при развитии программного кода Фейсбука от говна к мировому говну, были Павлом Дуровым почему-то восприняты как святые правила. Все костыли и глупости он бережно перенес сперва во ВКонтакт, а затем в Телеграм. Телеграм — точно такой же Page или Page+attachment. Вы можете опубликовать в Телеграм туда либо голый текст, либо прикрепить снизу материал — фотку, ссылку, альбом фоток, видосик, музычку или просто файл. Но вот чтобы реализовать функционал Note Павлу Дурову пришлось изобрести отдельную сущность — Telegraph. Как и в Фейсбуке и в VK (там тоже есть отдельные Note), в Телеграфе можно написать заметку с минимальными элементами форматирования а также перемежая фотки текстом.

Список тэгов для форматирования здесь тоже ограничен. Available tags: a, aside, b, blockquote, br, code, em, figcaption, figure, h3, h4, hr, i, iframe, img, li, ol, p, pre, s, strong, u, ul, video. Некоторых из них даже я не знаю, да и знать не желаю.

Заливка текста заметки в Телеграф по АПИ — невообразимая криворукость. Вы должны взять свою верстку заметки в HTML, удалить все неразрешенные тэги, затем прогнать через DOM-преобразование, пришлось ставить на сервер библиотеку apt-get install php-dom Во-первых, это надо чтобы устранить возможные ошибки, незакрытые тэги P и так далее. Во-вторых, чтобы получить структуру DOM и написать свою процедуру, которая будет гулять по ее узлам и потомкам, чтобы перевести DOM в нормальный Array. Что, в свою очередь, нужно, чтобы в конечном итоге перевести Array в JSON. Да, вы не ослышались: Telegraph требует перегнать структуру HTML через DOM в JSON. Иначе его программисты просто не знают, как побороть уязвимости и удалить опасные атрибуты и тэги. Причем, эта трансляция делается невероятно кривым способом в вымышленном формате, который нигде не описан в документации telegraph https://telegra.ph/api — там лишь приведена процедура на JS, которая это бы сделала (я не проверял), будь постящий робот запущен не на сервере, а прямо в браузере с живой страницы контента.

Но даже после этого в Telegraph куча глюков. Например, если вы размещаете в структуре DOM фотку тэгом IMG, то готовьтесь к тому, что она может все равно вывалиться из верстки в подвал под заметкой. Либо — поменяется местами с предыдущим тэгом P, если они на одинаковом уровне в одном children. Чтобы этого избежать, в большинстве случаев достаточно оборачивать каждую фотку в загадочный тэг figure — узнать об этом можно лишь скачав код заметки, созданной вручную в предлагаемом Телеграфом редакторе. И так далее.

Еще из прекрасных глюков: пост на Телеграфе невозможно удалить. Его можно разве что отредактировать, забив содержимое словом «delete». А удалить залитые файлы нельзя вообще никак — например, картинки надо заливать на telegra.ph/upload отдельно, чтобы подставлять в тэг их локальный адрес.

Но я все-таки сделал модуль постинга заметок в движке на PHP. Вы тоже можете пользоваться автопостингом на Бинонике или в собственном движке. Для начала надо создать аккаунт на Телеграфе, открыв браузером ссылку и получив ключ (access-token):

В менюшке желтого шарика на своей странице Биноника в «редакторе переменных» надо отредактировать переменную «autopost», добавив к перечню зеркал новую строку для Телеграфа, где перечислить через пробел название модуля telegraph, имя темплейта своё название блога на Телеграфе и длинный полученный ключ:

telegraph template.telegraph lleo a4e3fd2ffc53df63a8cb01ce2362a633e6a8288e1941714ae4aa4838239c

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

{text}<p><hr><aside><i>оригинал заметки: <a href='{url}'>{url}</a></i></aside>

Если вы хотите, чтобы в ваш аккаунт Telegram (куда у вас конечно же тоже был настроен постинг) шли не заметки, а быстрее и полнее открывающиеся сущности из Телеграфа, просто добавьте в тексте «autopost» в строке с описанием телеграма и его ключей в конце через пробел лишнюю опцию «telegraph:lleo» (имя вашего блога).

Выглядят посты в Telegraph так: https://telegra.ph/Htonicheskie-mesta-gorodov-Peterburg-Udelka-08-30 Имена в URL Телеграф почему-то берет на себя придумывать сам, ориентируясь на заголовок поста и свои соображения о сегодняшней дате и других постах с тем же заголовком. Повлиять на выбор имени нельзя, а имя твоего зарегистрированного аккаунта в URL никак не фигурирует — из линка не поймешь, кто создал публикацию, мог и любой аноним на сайте.

Конкретно этот пост выглядит так: так

А вот как прикреплять к Телеграму коментарии, пока не разобрался.

UPD: Прикольно: во время автопостинга этой заметки, ошибку внезапно выдал... Twitter! Оказывается, в Твиттере запрещено упоминать Телеграф!

Twitter lleokaganov — Error: We can't complete this request because this link has been identified by Twitter or our partners as being potentially harmful. Visit our Help Center to learn more.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/08/30_telegraph