Flat |
Отправлено: 4 декабря 2018 — 08:23 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Yamaliya пишет: дали бы хоть взглянуть
Работа пока не окончена, то есть пока что-то выкладывать смысла нет. Полностью готовы функции по работе с файлами. Отличительной особенностью является то, что насколько это возможно данные буду писаться на старое место на диске физически, что разгружает сервер. Исключена возможность обнуления файлов при отключении например питания сервера.
Вот кому интересно:
Спойлер (Отобразить)CODE:
function sibb_getArr($path)
{
global $Error;
$b=file($path);
array_shift($b);
return $b;
}
function sibb_getTab($path)
{
global $Error;
$b=file($path);
array_shift($b);
$l=count($b);
$a=array();
for($i=0; $i<$l; ++$i)
$a[$i]=explode('|',$b[$i]);
return $a;
}
function sibb_saveArr($arr,$path)
{
$b="<?php {die('Access denied!');}?>\n";
$l=count($arr);
for($i=0; $i<$l; ++$i)
$b.=$arr[$i]."\n";
sibb_fput($b, $path);
}
function sibb_saveTab($arr,$path)
{
$b="<?php {die('Access denied!');}?>\n";
$l=count($arr);
for($i=0; $i<$l; ++$i)
$b.=implode('|', $arr[$i])."\n";
sibb_fput($b, $path);
}
function sibb_fput($str, $path)
{
global $ErrorTxt;
$len=strlen($str);
$f=file_exists($path);
if($f)
{
if($fSize == $len)
{
if(!($f = fopen($path, "rb+"))){sibb_writeLog($ErrorTxt['6']); exit('Error!');}
flock ($f,LOCK_EX);
fwrite($f, $str);
flock ($f,LOCK_UN);
fclose($f);
}
else
{
$name=basename($path);
$tmpName=pathinfo($path, PATHINFO_DIRNAME).'/tmp_'.mt_rand(100000,999999).'_'.pathinfo($path, PATHINFO_BASENAME);
if(!($f = fopen($tmpName, "wb"))){sibb_writeLog($ErrorTxt['6']); exit('Error!');}
flock ($f,LOCK_EX);
fwrite($f, $str);
flock ($f,LOCK_UN);
fclose($f);
if(filesize($tmpName)!=$len){sibb_writeLog($ErrorTxt['6']); exit('Error!');}
unlink($path);
rename($tmpName, $name);
}
}
else
{
if(!($f = fopen($path, "wb"))){sibb_writeLog($ErrorTxt['6']); exit('Error!');}
flock ($f,LOCK_EX);
fwrite($f, $str);
flock ($f,LOCK_UN);
fclose($f);
}
return;
}
function sibb_addToArr($str, $path)
{
sibb_fputAdd($str, $path);
}
function sibb_addToTab($arr, $path)
{
$b=implode('|',$arr)."\n";
sibb_fputAdd($b, $path);
}
function sibb_fputAdd($str, $path)
{
global $ErrorTxt;
if(!($f = fopen($path, "ab"))){sibb_writeLog($ErrorTxt['6']); exit('Error!');}
flock ($f,LOCK_EX);
fwrite($f, $str);
flock ($f,LOCK_UN);
fclose($f);
}
function sibb_confSave($arr,$path)
{
$buf="<?php if(!defined('EXBB_OK')){die('Access denied!');}\r\nreturn ";
$buf.=var_export($arr,true);
$buf.=";?>";
sibb_fput($buf, $path);
return;
}
Пользовательские данные будут сохранятся в более приемлемом формате через разделители, а рабочие данные как массивы, чтобы можно было их сразу инклюдить в код.
Сейчас делаю регистрацию. Шаблоны у же готовы, осталось ещё сделать активацию по ключу и приём регистрационных данных.
-------------
ООП не будет и не ждите
Я вообще считаю, что добавление ООП в ПХП было серьёзной ошибкой. Язык то создавался простым и понятным. "ООП в вебе лучший способ полностью загрузить сервер ненужными действиями", как кто-то хорошо сказал.
В этом смысле разворот движка в сторону ООП было серьёзной ошибкой, которая сейчас аукнулась отсутствие разрабов-непрфессионалов. А профессионалы с эти движком связываться просто НЕ БУДУТ. Думаю, с этим никто спорить не будет.
Простота была потеряна, и пора очень пора её возвратить.
Команде надо было улучшить существующий код и всё. А сейчас придётся всё переделывать..
*********************************
большие куски кода прячьте, пожалуйста, в тэг "спойлер".
модератор. |
Flat |
Отправлено: 28 ноября 2018 — 10:55 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Flat пишет:Переделал всё обратно.
В который раз всё переделал. Раньше менюшки у меня прописывались в своём конфиг-файле, поэтому можно было менять конфигурацию меню прямо в этом файле. Теперь я от этого отказался по нескольким причинам.
1. Зачем постоянно греть конфиг, да и сервер, если конфигурирование меню происходит отнюдь не часто? Даже можно сказать - никогда..
2. Ради убыстрения и упрощения кода.
вот пример такого шаблона:
Спойлер (Отобразить)CODE:
<?php if(!defined('EXBB_OK')){die('Access denied!');}
function EXBB_logomenuTpl()
{
global $Skin;
?>
<table width="100%" cellspacing="6" id="logomenu" border="0">
<tr>
<td align="left" valign="bottom" nowrap>
<img src="./templates/<?php echo $Skin?>/im/help.gif" title="Переход на страницу помощи" border="0" alt="">
<a href="index.php?action=15" title="Переход на страницу помощи">
<b>Помощь</b>
</a>
<img src="./templates/<?php echo $Skin?>/im/members.gif" title="Пользователи" border="0" alt="">
<a href="index.php?action=15" title="Список пользователей форума">
<b>Пользователи</b>
</a>
<img src="./templates/<?php echo $Skin?>/im/rules.png" title="Правила" border="0" alt="">
<a href="index.php?action=15" title="Прежде чем использовать данный форум внимательно прочитайте правила!">
<b>Правила</b>
</a>
<img src="./templates/<?php echo $Skin?>/im/search.gif" title="Поиск" border="0" alt="">
<a href="index.php?action=15" title="Поиск по форуму">
<b>Поиск</b>
</a>
</td>
</tr>
</table>
<?php
}
exbb_logomenuTpl();
?>
Думаю, что это единственно верный путь, так как много вариантов шаблонизации перепробовал, но лучше самого пыха с этим никто не справится. Как тут видно, я полностью исключил и языковую поддержку, по тем же причинам.
В редакторе такой код отлично подсвечивается.
Решил не делать универсальный движок, а остановится на чисто узкоспециализированном и простом как заклёпка. Честно говоря я это делаю чисто для себя, для своего проекта, но если кому нибудь понадобится то весь код под свободной лицензией будет.
------------ |
Flat |
Отправлено: 4 ноября 2018 — 07:59 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Вот у меня на сайте есть форма контактов, так с неё всё стабильно на mail.ru приходит, причём в секунды, то есть сразу.. И скрип-то простой, ничего там нет навороченного, всё стандартно, никаких извратов.. Вчера сидел, разбирался, что к чему, но так и не нашёл бага. Продолжу искать в чём причина. Почему на одном и том же сайте, с формы контактов доходит, а с форума нет. |
Flat |
Отправлено: 30 октября 2018 — 07:09 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:Если незарегистрированные пользователи не смогут писать через кнопку обратной связи (гости одним словом), то смысл тогда этой кнопки вообще?
Да, - я ступил. Вспомнил, что гостям мы выводили с капчей.. |
Flat |
Отправлено: 29 октября 2018 — 14:20 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:Стали писать через кнопку обратной связи не зарегистрированные пользователи.
Мы же вроде запретили незарегистрированным?
Parapsixolog пишет:Но никто, не пишет в письме контактные данные. И как теперь им ответить?
Гостям выводить поле для ввода своего обратного адреса. |
Flat |
Отправлено: 27 октября 2018 — 07:22 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Parapsixolog пишет:если движок делать на sqlite, то форум потеряет своё главное приимущество, чисто текстовая база данных.
Согласен с вами на все 100%.
Совершенно верно: у движка есть собственная ниша, и пусть так и будет.
Parapsixolog пишет:Вот сейчас, exbb сильно проигрывает ведущим форумным движкам во внешнем виде, и как правильно было замечено, в трудности установления модов.
Сейчас я усиленно начал заниматься новым ядром. Практически большую часть времени посвящаю движку. Новая система шаблонов позволит более вменяемо создавать новые стили, а разделение кода и данных - подключать новые моды одним нажатием кнопки.
Текстовая база будет по структуре почти соответствовать нынешней, однако она будет легко читаема и изменяема. Вот пример шаблона:
CODE:<table width="100%" cellspacing="6" id="logomenu" border="0">
<tr>
<td align="left" valign="bottom" nowrap>
{menulinks}
</td>
</tr>
</table>
[@]
<img src="./templates/{skin}/im/{img_file_name}" title="{titletxt}" border="0" alt="">
<a href="index.php?action={action}" title="{titletxt}">
<b>
{menutext}
</b>
</a>
Вот пример базы:
CODE:<?php if(!defined('EXBB_OK')){die('Access denied!');}
return array (
'id' => 1,
'name' => 'Admin',
'pass' => '1ce01f993877ef78e96f87cbce1a7924',
'mail' => 'admin@mail.ru',
'status' => 'ad',
'title' => '',
'posts' => 3,
'showemail' => 0,
'www' => '',
'aim' => '',
'icq' => '',
'location' => '',
'joined' => 1443622340,
'sig' => '',
'sig_on' => 1,
'timedif' => '0',
'upload' => 1,
'avatar' => 'personal/1-avatar.jpg',
'last_visit' => 1488469344,
'postedLink' => '',
'lastpostdate' => 1487525549,
'lastpostlink' => 'topic.php?forum=17&topic=2',
'lastpostname' => 'ffffffff',
'lang' => 'russian',
'skin' => 'BloodRosesExBB',
'interests' => '',
'new_pm' => 0,
'sendnewpm' => 0,
'visible' => 0
);?>
Такая же структура у конфигов.
Работа движется в верном направлении. |
Flat |
Отправлено: 23 октября 2018 — 08:10 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Parapsixolog пишет:Хотя конечно мне exbb в целом хватает, но если новый движок будет более быстрым и функциональным, то я только за!
Главное сделать ядро, а потом если кому понравится то многие могут подключится к его развитию, так как в одиночку трудно вытянуть.
Кое что уже сделал. Вот думаю: если писать всё с нуля то займёт годы. Может быть сделать так: переделать существующий двиг, кое-что поменять, но в целом старый код оставить. Изменить общую структуру, ввести элементы data-driven programming, что позволит ввести нормальную систему плагинов. Это более простая задача, и более реальная..
У меня сейчас затор образовался по работе с базой. Всё сложно получается, да и базу будет не так легко редактировать и чинить. Не лучше ли в подобном случае использовать cqlite?.
Я вчера писал, что создал новую функцию именно для exbb, которая позволит писать новые данные на старое место в существующем файле. Мне такая идея понравилась, как говорит молодёжь - что-то "торкнуло"..
Преимущества очевидны:
1) если во время записи в файл произойдёт сбой сервера, то данные с большой вероятностью не потеряются. Максимум придётся вручную подремонтировать и все дела. Если бы файл писался на новое место на диске, как сейчас происходит, то данные с большой вероятностью будут потеряны.
2) там отсутствует сериализация, поэтому база легко читаема.
То есть сделать форк существующего движка. Вдохнуть в умирающего новую жизнь.. |
Flat |
Отправлено: 22 октября 2018 — 18:31 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Flat пишет: Чтобы изменить что-либо в файле нужно весь файл перезаписывать заново, это сильно напрягает сервер, так как происходит незаметная дефрагментация памяти.
Кстати, проблему можно сильно ослабить если изменить способ сохранения файлов в exbb. Сегодня накропал и протестировал функцию, которая может заменить существующую. файлы при таком способе переписываются на старое место. если файл меньше необходимого, то запись происходит в два этапа. короче говоря мне понравилось. ели взять существующий двиг, изменить в нём шаблоны и пр. в целом оставив код как есть, то можно сравнительно быстро сварганить неплохой движок. |
Flat |
Отправлено: 21 октября 2018 — 07:46 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Konstantin247 пишет:А если написать поддержке Mail.ru, они ведь увидят почему письмо не добавлено в ящик регистрировавшегося? Увидят какое требование не соблюдено?
По идее должны знать.
Konstantin247 пишет:что за движок? Форумный? На файлах?
Это форумный движок, и именно на файлах, как и exbb. Занялся потому, что данный двиг достиг своего потолка в развитии и дальше уже развиваться больше не будет, по разным причинам. В основном потому, что в него изначально были заложены неверные концепции по части расширяемости. Например чтобы установить какой-то плагин, нужно его прописывать прямо в коде вручную, причём во многих местах. То есть всё жёстко завязано. Работа с файлами тоже сомнительная. Чтобы изменить что-либо в файле нужно весь файл перезаписывать заново, это сильно напрягает сервер, так как происходит незаметная дефрагментация памяти. Хостер не обрадуется когда узнает.. До сих пор существует опасность обнулить какой-то файл.
Новый движок тоже файловый, но файлы в нём будут прямого доступа. Это означает, что новый двиг будет серьёзным конкурентом другим движкам на MySQL и других серверных базах данных. Тут уже не будет перезаписи целого файла: для изменения одного поля достаточно переписать его на старое место. Эта операция просто космически быстра. Также там будет новая система шаблонов. Останется мультиязычность. Плагины можно будет вставлять автоматически нажатием одной кнопки. |
Flat |
Отправлено: 20 октября 2018 — 08:10 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Вот они эти требования:
https://help.mail.ru/developers/..._rules/technical
Там написано:
Цитата:Данные требования разработаны с учетом стандартов, разработанных и принятых участниками глобальных рабочих групп по противодействию спаму, мошенничеству и другим формам электронных злоупотреблений.
Несоответствие требованиям может привести к частичной или полной недоставке вашей электронной почты.
Поэтому надо соответствовать.. |
Flat |
Отправлено: 20 октября 2018 — 07:58 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Konstantin247 пишет:Но какие изменения надо внести в движке форума, чтобы всё нормально заработало?
По крайней мере узнать требования самого mail.ru если таковые есть, по части почты. Я бы сам занялся, но пока руки не доходят, новый движок пишу. Надо прояснить технические требования для разработчиков. |
Flat |
Отправлено: 19 октября 2018 — 07:45 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Zeg пишет:Вероятно, пользователю хватило бы функции отслеживания появления новых сообщений в созданной им теме или же получение уведомление об ответе на свой пост (функция ответа постом на чей-то пост в exbb весьма условная).
Согласен. Не только на свой пост, но и упоминание своего ника в каком-либо посте, как это имеет место например в вобле. |
Flat |
Отправлено: 19 октября 2018 — 07:24 • Тема: Проблема с получением почты на майл ру • Форум: Решение проблем |
Ответов: 30 Просмотров: 0
|
Zeg пишет:Сейчас владельцы сайтов на разных движках повсеместно жалуются на недоходящие письма на mail.ru.
Кстати, у меня там периодически слетает почта, так что приходится восстанавливать свой пароль. Очень неприятный момент. На яндексе ничего такого не наблюдаю, как и на гмэйл. |
Flat |
Отправлено: 10 октября 2018 — 07:20 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Yamaliya пишет:для отправки и восстановления пароля, если вы его забыли
Да, это полезная штука. Только в современных движках, в том числе и этом, пароль хранится в хэшированном виде. То есть с шифрованием "в одну сторону", когда пароль зашифровывают, а расшифровать уже не могут. Для идентификации пользователей сравнивают уже готовые хэши паролей, один из которых хранится в базе форума, а другой, например в куках на стороне пользователя. Поэтому админ форума не может знать настоящий незашифрованный пароль юзера. А раз не может, то не может и отправить его на почту для восстановления. В таком случае генерируют новый пароль или предлагают пользователю придумать новый. Конечно, даже в этом случае почта необходима для идентификации пользователя хотя бы по его почтовому адресу. Так что вы в этом абсолютно правы, что почта необходима, как и NordWest, но с некоторыми уточнениями.
Yamaliya пишет:для уведомления о новых сообщениях и о новых темах. На примере этого форума: зачем заходить на него каждый день, если новые сообщения могут не появляться весьма длительное время?
Вам, как пользователю это ненужно. Но мне, как админу (а вы ведь, тоже админ на своей площадке) это снизит посещаемость. Мне лично легче кликнуть и зайти на форум, который быстрее открывается чем почтовые сервисы, и на главной странице увидеть строку: " Со времени вашего прошлого посещения появились новые сообщения в ответ на ваше." А в своём профиле можно посмотреть их список. Ну, о вкусах не спорят, тем более, что в данном движке такой штуки нет, поэтому тут только через почту, согласен.. |
Flat |
Отправлено: 9 октября 2018 — 08:37 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
NordWest пишет:Крайне желательно, что бы в настройках форума был указан адрес реального почтового ящика.
У меня настоящий.
NordWest пишет: Я планирую
Кстати до сих пор не решена проблема с визуальным растягиванием форума при слишком длинной строке в тэгах code. Перешёл по ссылке и такая проблема у вас, как впрочем и здесь.
NordWest пишет:Нужно допиливать отправку через SMTP.
Конечно нужно это делать..
У меня вопрос философский, чисто ради осознания определённых вещей. Сформулируйте (кто-либо) точно, что по вашему даёт работа форумного движка с почтой, как таковой? Что это даёт конкретному юзеру? . Из моего личного опыта могу сказать следущее. Я зарегистрирован на многих форумах, и на некоторых из них имеется несколько тысяч сообщений, так как интересуюсь многими вещами помимо программирования. Из опыта могу сказать, что работа с почтой лично мне не требуется. В нормальных форумных движках есть развитая система личных сообщений и уведомлений, через форум. Форум, ведь, должен быть вещью самодостаточной. Например, взять уведомление пользователя по "мылу" о новых сообщениях в ответ на моё, или упоминание моего имени в каком-либо посте. Там есть выбор как получать уведомление: по почте или через личку. По почте крайне неудобно: если сообщений много, то приходится постоянно проверять свою почту, также приходится часто её чистить, это утомительно.. Так можно дойти до абсурда: можно общаться через форум посредством почтовых отправлений.. А форум тогда зачем? Для координации действий юзеров?. Это мой опыт. Возможно кто-либо другой получает от этого какой-то кайф, но не я.. Мне нужно обязательно ПОСЕТИТЬ свой любимый форум, на котором мне сообщат что происходило со дня моего отсутствия. Если бы не было такой фичи, то и посещаемость резко увеличилась бы, так как волей-неволей человек привыкает открывать страницу форума, а посещаемось важна для поисковиков. Выходит, что подобные фичи с уведомлениями по мылу являются врагами посещаемости? Выходит так. Но как же совсем без почты? Никак нельзя, ибо все имеют почту, все форумные движки. А раз надо быть "как все", так стало быть надо иметь её и у себя.. Философия, брат такая.. |
|