Выложил свой движок на Гитхаб: https://github.com/lleokaganov/lleoblog
Это весь мой движок — система ведения блога, сайта, автопостинг в соцсети и всё прочее — целиком, со всеми мыслимыми кренделями, пакетами, гуделками, тараканами и некоторыми внешними пакетами. Код весь мой, кроме TTF и содержимого /extended — там всякий софт редактора в стиле Ворда, модули работы со звуком и прочее, что вам скорее всего не пригодится.
Для установки понадобится:
1) Переименовать config.php.tmpl в config.php Вписать в нем вместо lleo.me свой домен, а также прописать пароли от MySQL. Пока больше ничего трогать не надо.
2) Если у вас старомодный apache — достаточно переименовать htaccess в .htaccess, и на этом всё.
Если у вас современный nginx — придется повозиться с его настройками: запретить папку /hidden и переадресовать любые непонятные запросы на index.php У меня примерно так:
4) Теперь можно браузером открыть mysite.ru/install, убедиться, что движок поднялся, и закончить установку, обновляя эту страницу, создавая таблицы mysql и т.п.
В принципе должно работать, я попроверял у себя, вроде всё взлетает без проблем.
Хорошо бы дать права на запись папок и файлов движка — движок у себя там много чего перезаписывает, без этого может не взлететь. У админа, кстати, в движке есть встроенный онлайн-файл-браузер с редактором файлов, называется «фотоальбом» почему-то в меню. Хотя как раз редактирования фоток нету — ну разве что так, по мелочи, перевернуть можно.
Не обязательно ставить движок в корневую папку сайта. Если вы хотите его поставить в отдельную папку, корневую, надо в config.php прописать эту папку в переменную со слэшом на конце: $blogdir='dnevnik/'; Также возможно придется поправить пути в файлах /css/*.css Хотя я не помню, где-то в /install кажется была кнопка, которая css исправляла сама.
Будьте осторожны: до тех пор, пока движок не выдаст авторизационный номер (логично, если это будет 1) и вы не пропишете его руками в config.php в переменную $admin_unics='1'; (админы назначаются только вручную из соображений безопасности) — до этого момента любой посетитель вашего сайта будет обладать правами админа (пока $admin_unics='';)
А вот нажимать кнопку INSTALL и пытаться обновить движок с какого-то внешнего сервера уже в общем-то и не надо. На github сейчас самая последняя версия. Я не придумал пока, как буду ее автоматически поддерживать, но придумаю.
В начале января начал перебираться на новый сервер с nginx+php-fpm. Сайты на MODx прямо залетали. С твоим движком возникли проблемы с конфигурацией, писал в технический блог, удалось решить путём подбора) С костылями, правда. Надо попробовать твой конфиг. Хочу сделать публикацию в телеграм, как у тебя.
«// ýêðàíèðîâàòü»
find . -type f -name '*.php' -print -exec iconv -f cp1251 -t utf-8 {} -o {}.utf8 ;
Поэтому если хочется, чтобы на Гитхабе была более-менее свежая версия, придется сочинять софт, который рисует в отдельной папке отдельную копию для Гитхаба.
Но тут ещё есть особая проблема: движок-то работает в 1251, и все сообщения в нем 1251. В utf не тестировался, будет ли работать - совсем не уверен.
Неопределенность в том, что кто-то может завязаться на ваш софт, а вы потом поставите неприемлимую лицензию, и человек потеряет все время и усилия.
Поэтому лучше выбрать хоть какую-нибудь лицензию, а потом поменять, если передумаете, в новых релизах. При этом старые релизы будут со старой лицензией, и люди всегда смогут их использовать.
Если вы хотите сделать ваш софт очень свободным и бесплатным, то поставьте MIT license. Если свободы не хотите, а хотите, чтобы код всегда оставался ваш, с обязательным упоминанием вас и некоммерческим, открытым, тогда ставьте GPL3.
Чтобы добавить лицензию, добавьте файл LICENSE.txt в корень репозитория.
Для MIT:
Для GPL3 вот:
Правильно ли я вас понял, что я должен положить в корень файл LICENSE.txt с нижеследующим текстом в кодировке UTF-8 (не свойственной моим файлам):
===========================================
The MIT License fo shizzle my nizzle
Copyright 2006-2019 Leonid Kaganov, Russia
+7-916-6801685, lleo@lleo.me,
Permission is hereby granted, free of charge, to any person obtaining a copy of this software (except extended/* and design/ttf/* ) and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: the above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* * *
MIT-лицензия: грабь, воруй, сношай гусят
Copyright 2006-2019 Леонид Каганов, Москва - Санкт-Петербург
+7-916-6801685, lleo@lleo.me,
Бесплатно разрешаю любому лицу использовать копии этого ПО и осуществлять операции с ним без ограничений, включая, помимо прочего, право на использование, копирование, изменение, слияние, публикацию, распространение и / или продажу. Всё это, разумеется, возможно при cохранения данного файла с информацией об авторе и способах связи с ним, которая должна быть включена во все копии или используемые части ПО.
Лицензия не распространяется на содержимое /extended/* и /design/ttf/*, где лежат дополнительные модули чужого авторства, у которых собственные лицензии. Эти компоненты можно смело удалить, поскольку они приведены в ознакомительных целях и для работы системы не нужны, а лишь предоставляют некоторые дополнительные сервисы для особых задач, связанных с обработкой текста, звука, графики и т.п.
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БЫЛО СОЗДАНО ДЛЯ СЕБЯ И СВОИХ ЗАДАЧ, У МЕНЯ ОТЛИЧНО РАБОТАЕТ УЖЕ МНОГО-МНОГО ЛЕТ, А У ВАС НЕ ЗНАЮ. ПОЭТОМУ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ» - ТО ЕСТЬ БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ТОМ ЧИСЛЕ (НО НЕ ОГРАНИЧИВАЯСЬ) ЕСЛИ У ВАС ЧТО-ТО НАЕБНЁТСЯ, НЕ ЗАРАБОТАЕТ, ЛИБО ПРИ ИСПОЛЬЗОВАНИИ ДАННОГО ПРОДУКТА ЧТО-ТО НАНЕСЕТ ВРЕД, ИСПОРТИТ ОКРУЖАЮЩИЕ ФАЙЛЫ, ЗАЛЬЕТ КРОВЬЮ ПОЛ И ЗАБЛЮЁТ КОВРОЛИН. Ни при каких обстоятельствах автор не несет ответственность за любой ущерб, пропавшие данные и потраченное время, и не принимает никаких исков и претензий, хотя оставляет за собой право их выслушать, чтобы посочувствовать вам на правах психотерапевта, хотя за спиной конечно же позлорадствовать и поржать с друзьями, как это принято у психотерапевтов.
Пользуясь случаем, предлагаю всем желающим платную или бесплатную помощь в установке, настройке, доделке, переделке данного ПО, а также разработке любых новых функций, частей, а также разработку любых других систем под ваши задачи, в том числе не связанные с этим ПО. Сайты, серверные системы, мобильные приложения, электроника на микроконтроллерах и всевозможные сетевые связи между вышеперечисленным (JS, PHP, C, Linux) - вот моя область интересов. Напоминаю координаты: lleo@lleo.me, +7-916-6801685
===========================================
По содержанию - все, что угодно, хотя я рекомендую использовать образец слово-в-слово, ниже объясняется как.
По процедурному вопросу, можно даже проще, есть инструкция на гитхабе как добавить лицензию, и темплейты популярных лицензий там тоже есть:
Вот мой вольный перевод относящихся к делу пунктов:
1. Пойдите
нахуйна основную страницу своего репозитория в гитхабе.2. Над списком файлов, нажмите "Create new file" (создать новый файл).
3. В названии файла напишите LICENSE или LICENSE.md
4. Справа от имени файла нажмите "create a license template" (создать заготовку лицензии)
5. На странице слева, под "add license to your project" (добавить лицензию в ваш проект) посмотрите, что там есть, и выберите лицензию.
6. Нажмите "review and submit" (проверить и захерачить).
7-10. Добавить коммит.
11. Заебись.
Я просто залил файл LICENSE.txt - этого тоже недостаточно?
Я теперь должен унижаться, бегать по сайту, принадлежащему Микрософту, своим браузером, двигать там мышкой, открывать какие-то менюшки, нажимать в незнакомом интерфейсе какие-то кнопки, выбирать специальные опции по добавлению и присвоению проекту именно лицензий... Если так - да пошли бы они нахуй с такими правилами, оно мне больно надо ;) Кому надо - найдут в корне файл, не рассыплются. Верно я мыслю?
Ничего не делать тоже было бы достаточно.
Нет правил, есть возможности.
Это свобода, Леонид, которая, как известно (и очевидно вновь и вновь) "так и остается призраком на этом континенте скорби".
Наслаждайтесь! :)
Заглянуть, убедиться, что это MIT / Apache / LGPL - и НЕ ЧИТАЯ ее, понять, что можно и что нельзя делать с этим кодом.
Если же автору хочется донести до интересующегося его кодом какую-то отсебятину - она кладется в файле README, который на том Гитхабе отображается под списком файлов автоматически при входе.
И да, "сношай гусят" - это простительная шалость, а вот работа только с cp1251 - это уже извращение ;)
шестилетнему ребенкуЛлео. Хочет он гусят ебать, свобода, что поделаешь...<pre>
O WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2019 Leonid Kaganov
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
</pre>
Вы как-то переоцениваете количество потенциальных пользователей
1. аффтар низашо не отвечает
2. афторские права принадлежат мне. лицензия обязана распространяться вместе с исходниками
3. данный софт можно свободно использовать и модифицировать в некомерчиских целях. При модификации запрещается удалять упоминания об авторских правах. Отличия внесенные кем либо должны быть помечены (чтоб мне не краснеть за чужОй говнокод) и могут содержать ссылку на их автора.
4. При использовании данного продукта в составе другого, этот другой продукт обязан распространяться под любой лицензией не противоречившей данной. (вот вам аналог GPL-virus :) )
5. при использовании в коммерческих целях - связаться со мной, занести долю малую и получить дополнительное разрешение. или ваще запретить коммерческое использование. или разрешить....
6. итд
а совсем без лицензии низя....
Это только index.php
Так вот, почти все антивирусы того времени с новомодными "эвристиками" страшно ругались и находили в этих файлах "вирусы".
Причина проста: я слегка перехватывал управление клавиатурой с единственной целью: отловить нажатие ESC от пользователя и мгновенно прекратить выполнение программы. В то время это было удобно для отладки и вообще - чтоб комп не повис, если что-то в программе пошло не так. Но антивирус считал, что я написал вирусы.
Тут уместно сравнение с проверкой орфографии в текстовом редакторе. Если слово подчеркнуто красным, то, вполне возможно, вы специально написали его неправильно, но скорее всего это ошибка.
Тут вопрос даже не в том, что анализатор нашел какие-то ошибки и предупреждения, а в их количестве. Все равно, что открыть текст вордом, а он весь красный, сверху до низу. :) Возможно конечно, что текст специально написан в падонкоффском стиле, но...
1. Код очень сложно читать. Как будто пытаешься восстановить текст пропущенный через шреддер.
2. Используется много устаревших функций и не оптимальных подходов.
3. Работа с БД.
3.1. В файле намешаны функции из mysqli и mysql.
3.2. SQL-запросы повсеместно формируются "склейкой" строк, что очень-очень плохо и небезопасно.
4. Частое использование оператора '@'. Т.е. ошибки не обрабатываются, а тихо спускаются в /dev/null
2) mysqli детектируется автоматически, движок работает и с тем и с другим, именно поэтому там в коде оба варианта можно найти. А вы бы писали код только с одним из вариантов?
3) Запросы SQL сложные, случаев много. Вы бы писали как? Вопрос в очистке данных, а он, как вы можете заметить, решается тщательно.
4) А для чего по-вашему изобретен @?
Честно сказать, я пока вообще не вижу для себя никакой пользы в публикации кода на Гитхабе. Надеюсь в будущем услышать какие-то дельные и конкретные советы, но пока что в отзывах (не только ваших) нет ничего, что могло бы принести проекту конкретную и ощутимую пользу. А такая надежда была.
2. Я бы (пере)писал код с PDO. Даже не так. Я бы работал с БД через интерфейс, за которым, в зависимости от необходимости, подключал любую необходимую реализацию. Хоть mysql(i), хоть postgresql, хоть oracle с mssql. Кстати, с вашего позволения, займусь этим, хорошо?
3. Мне по работе приходится писать очень много PHP-шного кода, активно использующего разные БД. Одновременно. Масштабы сильно больше чем у вас в движке, честное слово. Единственный кейс, когда с ходу нельзя использовать подготовленные запросы - конструкция "WHERE a IN(...)". Но и там есть довольно простой и надежный вариант обхода.
Нет, наврал, еще один вариант есть - когда имя таблиц/полей генерируется динамически - но это фу-фу-фу.
4. Он был изобретен на самой заре PHP, когда язык был страшен и глюкав. В современном языке использование этого оператора сродни детской "уборке" методом запихивания разбросанных игрушек под кровать. Вроде в комнате и убрано, но мы то знаем.
Ну как минимум один баг то с mysqli_connect уже нашли
Нанесению пользы очень мешает пункт 1. Но думаю, что как только людям удастся прорваться через дебри, то процесс пойдет. 4 форка уже есть, значит народ заинтересовался:)
Хочу сказать вот ещё чего: да,я совершенно не тратил усилия на понятность кода, зато тратил много сил, чтобы движок инсталлировался на большинстве хостингов как есть. Он работает у меня и не только у меня на самых разных серверах, включая домашние роутеры.
Поэтому принципы, которые хотелось бы сохранить, были такие:
1) Движок - не единичный экземпляр. Он должен работать у всех в общем случае при базовых настройках. Не факт, что человек имеет возможность менять что-то в настройках своего хостинга. Нельзя заставлять человека, чтобы у него был инсталлирован какой-нибудь unictime_post_module и SuperProxyAgent и MemCache, иначе движок не поднимется. Считается, что у человека вообще нет доступа к консоли, к установке софта и модулей. Если пишется работа с Memcache или mysqli, надо обеспечить работу движка и там, где их не установлено. Может не быть file get contents или json decode, тогда надо писать заплатки для этих функций (они есть кстати).
2) Консоли может уже не быть. Все изменения админ может сделать по вебу, открыв браузером /install
3) Нельзя вносить изменения, которые парализуют работу движков. Если надо добавить поле в таблицу - пишется софт переезда в модулях, появляется новая кнопка а /install - "добавить поле count", например.
Таким правилами я руководствовался последние 12 лет.
Вот тут статистика за 18 год
PHP 5.4 ~1%
PHP 4 отсутствует как класс.
Салем так: даже обязан обеспечить минимальную работоспособность на любой версии php с отсутствующими модулями curl, iconv, с запрещёнными серверу исходящими соединениями, и далее при отсутствии file_get_contents.
Вы уверены, что у Asus R16 openwrt есть PHP7? Я чота совсем не уверен. И устраивать себе на пустом месте недельный геморрой с перепрошивкой роутера никакого желания нет :)
У вас же движок публичного сайта, не какая-нибудь интранет-система, где на безопасность можно возлагать болт. Если у него появится какое-то коммерческое будущее, придется отвечать не только за свой код, но и за грехи того, на чем он работает.
Иначе можно до маразма дойти, ведь где-нибудь всегда будет стоять древняя версия PHP 5.2, хоть в 2030 году, когда весь мир будет сидеть на PHP 27.4. Невозможно ведь поддерживать совместимость со ВСЕМИ версиями, которые когда либо существовали. PHP 5.2 вышел в 2006-году. Пора бы уже и на заслуженный отдых. В том числе и из-за существующих дыр в безопасности.
С чего вы вообще взяли, что мой движок работает c php4? Вы пробовали? А если не работает, мы спорим впустую? А если работает, что конкретно вы предлагаете в нем сломать чтобы работать перестал? ;)
Один форк - мой, признаю, что покамест заинтересован в основном в саркастических комментариях. Один форк - ваш, хрен знает, что вас заинтересовало, наверное помочь хотите.
По-моему основная проблема - не первый пункт, а нежелание сделать гитхаб источником истины. А так даже непонятно толком как с этим всем работать: инсталляция, как я понимаю, включает в себя догрузку какого-то альтернативного кода из дневника. А может нет. А если да - то какая там версия, что заменяется/изменяется по сравнению с гитхабом? Как одновременно предполагается разрабатывать, если основная версия не в гитхабе? Кто будет синхронизовать изменения, как, когда? Как следить за версиями, откатывать если надо?
В общем, не хочу звучать сильно негативно, загрузка на гитхаб - сильный ход, но надо бы обработать deployment напильником, если, как Леонид говорит, желательны изменения от других разработчиков.
setkey(['D','В','в'],'',function(e){document.location.href=wwwhost;},true); // в блог
Это строка 95.
Дело в том, что комбинация Alt+D во всех броузерах переводит фокус в строку адреса, а у тебя в блоге Alt игнорируется и при нажатии Alt+D загружается последняя запись. Жутко неудобно.
Лучше, конечно, в setkey() ввести понятие модификатора, возможно, есть люди, которым Alt+D не нужен, а к просто D уже привыкли.
UPD: У тебя, что, исходники в 1251? Не стыдно? :D
Вообще убрал всё лишнее, все равно я этим не пользуюсь.
Оставил только:
setkey('esc' // закрыть последнее окно
setkey('enter' // если не открыто окон - окно правки
setkey(['U','Г','г'] // личная карточка
Ну и для админа:
if(adm) {
setkey(['E','У','у'], // редактор заметки
setkey(['N','Т','т'], // новая заметка
}
Вы, я вижу, очень грамотно в этом разбираетесь, поэтому встречный вопрос: мне хотелось бы в редакторе (заметок, комментариев) сделать полезные кейшоты. Например, выделил мышкой, нажал какой-нибудь ctrl-чего-то - и выделенный текст оказался в двойных красивых кавычках. Либо жирным выделен. Либо вставлен полезный символ типа неразрывного пробела или длинного тире.
Какие посоветуете сочетания клавиш?
А вот на вопрос не отвечу. Кроме очевидного Ctrl+B, Ctrl+I стандартов, вроде, и нет.
UPD1: ZXCV с Ctrl трогать нельзя, понятное дело, F, S и P - тоже, а больше что-то в голову ничего и не приходит.
UPD2: Ctrl+N и Ctrl+T в большинстве броузеров - новое окно и новая вкладка соответственно.
Ctrl+A — выделить всё
Ctrl+W — закрыть окно/вкладку
Ctrl+Q — закрыть совсем
Ctrl+R — перезагрузить страницу
Ctrl+D — сделать закладку
Ctrl+B — показать закладки
Ctrl+H — показать историю
Ctrl+J/K/L — пойти в строку адреса/поиска
Ctrl+U — показать исходник
и пр.
С Alt вызываются пункты меню, которые могут быть какие угодно, так что тут вообще ни на что рассчитывать нельзя.
Я, например, этот квест так и не смог пройти, т.к. не знал как доказать, что моё приложение про автопостингу не делает того, чего делать и не собиралось.
Разве это не то, что нужно?
Вы, как человек с нулевым опытом в этой области, для меня нулевой авторитет. Если когда-нибудь сделаете свой первый автоматический пост в Фейсбук и через сутки так же автоматически его отредактируете, поправив опечатку - вот тогда и поговорим. А пока вам просто рано лезть в такие дискуссии.
Если бы мне понадобился постинг в ФБ я бы действовал так же, как и с любым другим сервисом. 3 шага - зарегистрировался как разработчик, быстро пробежался по описанию API и how-to, взял готовый пакет/модуль/библиотеку для нужного языка и среды разработки, коммиты в который были за последние несколько месяцев хотя бы (потому, что их, наверняка, десятки). Всё. С инстаграмом, я так и сделал. С ЖЖ ещё проще (на удивление, API там ещё работает!). А вам было влом даже первый шаг выполнить (вы что, первый раз в жизни девелоперский логин где-то заводите?), но не влом делать свой велосипед из костылей. И виноваты в этом сервисы. И FB вам подляны делает, и Github у вас тупой, не может разобраться с кодировкой, и так далее... Любой сервис — это же живая вещь, он постоянно развивается и меняется. Но никому, в здравом уме, не придёт в голову вводить breaking changes в свой внешний API, не предупредив клиентов за месяцы. Мне постоянно приходят уведомления с Azure и AWS о том, что через пару месяцев будет что-то новое, а через полгода-год старое отключат. И вас бы тоже ФБ предупредил заранее. А если доступ к API платный (я сейчас не конкретно про ФБ), так там, наверняка и SLA в договоре и с его нарушением клиенты радостно в суд побегут. Вас не смущает, что сломалось только у вас, и больше ни у кого в мире? Если бы все роботы в один момент перестали работать с ФБ, крик на полмира поднялся бы.
Обхитрить их систему рейтинга — это да, веская причина для любых костылей. Я, правда, сомневаюсь, что она работает так, как вы думаете, а если и так, то такие коэфициенты, обычно, тюнятся каждую неделю. Ну и непонятно, почему поменять пару строк в адресах API — это сложно, а перенастроить хром проще? И, кстати, потом не удивляйтесь, если, вдруг, нейросеть, обученная на тысячах спамеров с похожим способом, вдруг пристрелит ваш аккаунт.
А вы - аноним, набегающий попиздеть о том, как плохо я всё делаю, и как хорошо сделали бы вы, если бы вдруг захотели.
Хотите доказать свое мастерство? Сделайте публикатор заметок Фейсбука в формате note (текст, перемежающийся фотками), принесёте пользу мне и множеству людей. Но вы не сделаете. Во-первых, потому что теоретик, только в комментах попиздеть умеете. Во-вторых, потому что неправильно мыслите и такая задача вам не по зубам. А вот я, как обычно, сделаю в ближайшее время и предложу всем желающим готовое решение и бесплатный сервис на Бинонике.
Не знаю как сейчас, надо разбираться. Но ещё год назад там висело под описанием "эта функция отключена с АПИ 2.х"...
В движке в protocols.php у меня собственно остались и наглядно видны все этапы большого пути. А именно:
1) Изначально АПИ Фейсбука позволял /note - все мои посты шли туда с вёрсткой и множественными фотографиями по ходу текста. Как на сайте, в ЖЖ, ВК и и.п.
2) Затем Фейсбук закрыл в АПИ /note Просто навсегда и для всех, ибо нехуй. Остался /post - текст и под ним одна фотка или ссылка или видео. Ладно, я переписал всю систему. Хотя стало уже совсем неинтересно.
3) Затем Фейсбук ИЗМЕНИЛ формат /post и снова всё перестало работать. Ладно. Я разобрался, чего-то там правил под новые edge и параметры, снова заработало.
4) Затем facebook отключил page вообще. Осталось то ли для сообществ, то ли не для личного аккаунта, а только на стену, то ли из каких-то особо авторизованных приложений... Не знаю, как сейчас, но висело разъяснение, что для всех прочих эта функция удалена. Мне лень гуглить, но в дневнике я об этом писал. И вот тогда я написал новый блок постинга под phantomjs - типа как браузером.
5) Недавно я сделал новую модель уже на headless chrome. Пока умеет делать пост с фотками (одной или пачкой) или видеороликом. В движок пока не интегрировал. В планах - вернуться к формату note. Я часто пишу развернутые статьи с вёрсткой и объектами, кастрированный формат "одна фоточка плюс текстик" меня мало устраивает.
Подытоживая:
-- Фейсбук меняет АПИ каждый год в среднем. Бегать за ним и всё переписывать сложно. В о время как интерфейс пользователя остаётся неизменным: окно ввода текста, кнопочк добавления фоток и "опубликовать". Перенастраивать виртуальный браузер вообще не проблема если что.
-- В АПИ Note уже нету и не будет. Точно так же в любой момент могут отключить Page
-- Никто не знает, как сейчас (или в будущем) Фейсбук рейнгует посты, сделанные через АПИ. Есть подозрения, что им заранее присваивается мусорный рейтинг и сильно режется выдача. Человек, использующий АПИ с точки зрения Фейсбука - не пользователь. Он готовит материалы на стороне и не скроллит свою ленту, читая рекламу. А то и - не дай боже - вдруг даже использует чей-то неофициальный мобильный клиент, а значит, не установил официальный! Фейсбуку такие не нужны.
Если у вас ещё остались вопросы, почему я перестал использовать АПИ и не собираюсь к нему возвращаться, я с удовольствием отвечу.
Если есть идеи - с ещё большим удовольствием выслушаю.
То есть вместо использования https://graph.facebook.com/<user_id>/feed, когда автоматически используется самая новая версия, которая в будущем может измениться так, что все сломается, нужно использовать конкретную версию, которая при любых изменениях будет гарантировано работать в будущем именно так, как сейчас: https://graph.facebook.com/v3.2/<user_id>/feed
А еще сейчас Фейсбук очень активно пропихивает свой GraphQL в массы, и там с версиями все в порядке
Так что на Вашем месте я бы дал им еще один шанс, потому как всякие Фантомы, Хедлесс Хромы и прочие Селениумы - это довольно костыльно и медленно.
Поэтому будет chrome.
То, о мы столь справедливо говорите - тормоза - решается переездом на принципиально иную система постинга. Сейчас постинг происходит в момент работы админа с заметкой. А надо - отдельную машину с очередью на постинг, отловом ошибок, числом допустимых попыток и т.п. Такая система, во-первых, не создаст сверхнагрузки и подозрительных одновременных запросов, если заметки начнут постить сразу несколько человек (в многопользовательском движке). Во-вторых, никому не придется ждать результата. Запрос встал в очередь - можешь выключать браузер, минут через пять все опубликовано. Это в планах ближайших.
Во-вторых, можно делать системы отложенного постинга.
Наконец, можно раздавать возможность автопостинга в разные сети как сервис.
Теперь что касается преимуществ headless chrome:
1) Ты не зависишь от капризов Фейсбука по изменению апи и санкций: ты не выделяешься из категории "обычный пользователь" с его точки зрения.
2) Пользователю не надо проходить сложную (для дилетантов), запутанную (интерфейс постоянно меняется, я делал гид со скриншотами, они устарели за год) и унизительную процедуру регистрации как девелопер для получения ключей. Достаточно логина и пароля, далее система все сделает сама.
3) Этот метод также сможет работать с сервисами, которые АПИ вообще не имеют. Пример: Яндекс.Дзен Вы хотите иметь возможность автопостинга своих материалов на Дзен? У меня это в планах.
Однако, там все разбивается об перманентно усиливающийся контроль по IP, в т.ч. по геолокации. Даже если внутри РФ сначала залогинеться на локальной машине где-нибудь в Краснодаре, а затем попробовать запостить что-нибудь через бот-хостинг в Питере - выдаст страйк с просьбой подтвердить, что вы это вы. Я уж не говорю про другие страны.
Друг-писатель Леша Филиппов попросил сайт, где бы он с читателями мог вместо фейсбука общаться. Я хотел попробовать Ваш.
Подскажите пож. по установке.
Распаковал в корень на апаче. Создал и прописал mysql базу,юзера и пароль.
Когда 2й раз (пурвый потребовала $admin_unics="0") захожу на
Твой unic=0
MySQL ERROR:
mysqli_query("INSERT INTO `unic` (`ipn`,`time_reg`) VALUES ('2887681044','1548781483')")
Table 'dnevnik.unic' doesn't exist
Может из-за того, что фейковый hostname на локалхост завернут ?
в логе апачи:
[Tue Jan 29 19:04:43.634788 2019] [php7:warn] [pid 3560] [client 172.30.132.20:48888] PHP Warning: array_merge(): Argument #1 is not an array in /var/www/site_mod/MAIN.php on line 153
А надо ли мне сперва создавать таблицы, базы mailbox и unic ?
p.s. отбой. поставил sql.sql и жизнь наладилась. Извините, но удалить пост не получается, только редактировать даёт.
Название базы у меня странное - u0637742_bino, потому что мой ISP manager добавил префикс u0637742_ (мой логин на хостинге) сам к имени bino.
Глядя на ромбики, начинаю думать - не в кодировке ли дело? Для движка я сделал базу с кодировкой cp1251.
Мне важно отладить все глюки при установке. А они, увы, случаются разные и по самым загадочным причинам.
Одно время я даже собирал коллекцию самых смешных глюков, потом бросил. Например, у одного хостера движок не мог работать потому что... хостер по какой-то своей паранойе запрещал доступ к любым папкам, имя которых начиналось на /temp Соответственно шаблоны из папки /template были недоступны. Пришлось в коде движка сделать имя этой системной папки редактируемым в config.php эПереименовали папку на данном конкретном хостинге в /netemplate и всё заработало. Ну вот как такое можно предусмотреть или отладить дистанционно? :)
Сейчас в собственном OUTBOX доступны только последние 20 записей, а к более старым записям доступа нет, и это печалит...
По-моему, это плохая идея.
Нынешняя система сообщений, по типу почтовых, куда удобнее — с асинхронными ответами, с таймстэмпом на каждом соообщении, с INBOX и OUTBOX.
Можно добавить поддержку фолдеров по юзерам, но только как опцию, а не как единственный вариант.
Объединённый mailbox часто удобнее.
Только нужна сквозная нумерация сообщений, а не как сейчас, от 1 до 20 на каждой странице опять и опять.
Заходишь в OUTBOX, видишь последние свои 20 отправленных сообщений, нажимаешь кнопку «следующие» — а оно перебрасывает в INBOX (и на Windows и на Android и на iPad).
У тебя может быть режим админа портит, попробуй в режиме простого юзера.
Например, накопилось более 50 исходящих сообщений, какое-то переполнение, или что-то в этом роде.
Спросим людей: у кого есть такая проблема, а у кого нет?
(среди имеющих более 20 исходящих записей в OUTBOX)
Google Chrome
Version 69.0.3497.81 (Official Build) (64-bit)
Linux mjolnir 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
:)
Сейчас попробую обновить/развернуть на домашней машине.
На счёт обновления. Может сделать, как у Tiny Tiny RSS? Там тоже код с гитхаба берётся, обновляется просто вручную клоном репозитория, но при этом анализируется конгфиг и структура БД, при необходимости обновления запускается скрипт, который обновления вносит или информирует об изменениях (новых переменных) в конфиге.
Если таким образом можно будет брать текущую версию с гитхаба — это годный план.
Кстати, конфиг достаточно изменился с старых версий. При установке уже не надо _md5 вручную прописывать :). Собственно об этом писал — было бы круто, если б при обновлении прилетала информация о нужном/не нужном в конфиге для новой версии.
Соединение с MySQL есть, таблицы созданы. PHP 7.3.1, Apache 2.4.25. Запускаю в докере, но думаю, что это не имеет значения.
А еще показывает, что нет PHP-GD модуля, хотя в соседней вкладке phpinfo говорит, что есть.
Скрины прилагаются. Заранее спасибо за помощь.
Проблема с unic=0 все еще актуальна.
всего комментариев: 155