Ещё немного о картографии снов

Аватара пользователя
Jace
Сообщения: 56
Зарегистрирован: Вт июл 10, 2018 10:31 am

Re: Ещё немного о картографии снов

Сообщение Jace » Сб май 04, 2019 6:19 pm

И еще. Предлагаю спрятаться куда-нибудь. Нехорошо, что технические вопросы обсуждаются в открытой теме.

Я есть в телеге. При желании могу вспомнить слак.

Аватара пользователя
ioneks
Сообщения: 2399
Зарегистрирован: Ср мар 10, 2010 6:23 pm

Re: Ещё немного о картографии снов

Сообщение ioneks » Сб май 04, 2019 7:58 pm

Jace писал(а):
Сб май 04, 2019 5:07 pm
Каким образом генерировать уникальный id юзера? Я думаю хэшировать текущую метку времени UNIX.
Я пока пользуюсь таким:

Код: Выделить всё

function _gen_id($except)
{
	$len=strlen(ID_ALPHABETH);
	for ($i=0; $i<MAX_ID_GENERATION_ATTEMPTS; $i++) {
		$id='';
		for ($j=0; $j<USER_ID_LENGTH; $j++) {
			$id .= ID_ALPHABETH[rand(0, $len-1)];
		}
		if (!array_key_exists($id, $except)) {
			return $id;
		}
	}
	throw new Exception('Failed to generate user id');
}
Хешировать метку времени хорошо, особенно если сплюсовать её с IP хоста.
Jace писал(а):
Сб май 04, 2019 5:21 pm
Каким образом скрипту сообщать о технических проблемах? Предлагаю JSON.
Тут надо уточнить кто кому что сообщает. Внутри PHP кидать исключения, с сервера клиенту кидать HTTP-статусы, контент при необходимости и в оговорённом формате. Я пока придерживаюсь такой схемы. Если есть программно обрабатываемая инфа, то JSON, а если просто сообщение об ошибке для глаз юзера, то plain text.
Jace писал(а):
Сб май 04, 2019 5:27 pm
Еще уточнение. get_user_by_username() возвращает id юзера?
get_user_info() в каком формате возвращает данные? Ассоциативный массив? Объект? JSON? И тот же вопрос формата переменной относительно аргумента $info функции update_user_info().
Да, id юзера. get_user_info в ассоциативном массиве, например так (это JSON, ну вот с него массив через json_decode(..., TRUE)):

Код: Выделить всё

{
        "username": "qwer",
        "pass_hash": "cbf10403bdc6e65b90cb8cfe31dedb0aecdbd0b9563015810b2ce2c8e95f5ae6",
        "salt": "0341daa02d4f536a491b5bfee10a718d",
        "email": null,
        "creation_timestamp": 1556912757
    }
update_user_info в том же формате берет ассоциативный массив и обновляет в БД те поля, которые есть (напр., только email).
Jace писал(а):
Сб май 04, 2019 6:19 pm
И еще. Предлагаю спрятаться куда-нибудь. Нехорошо, что технические вопросы обсуждаются в открытой теме.

Я есть в телеге. При желании могу вспомнить слак.
Прятаться, по возможности, не будем, если нас отсюда не погонят. Есть причины, по которым все обсуждения лучше вести тут. Если технического контента будет через край, мы лучше создадим под него отдельную тему, можно где-нибудь в лабе, чтобы не засорять раздел сновидений.

Аватара пользователя
Jace
Сообщения: 56
Зарегистрирован: Вт июл 10, 2018 10:31 am

Re: Ещё немного о картографии снов

Сообщение Jace » Сб май 04, 2019 8:44 pm

ioneks писал(а):
Сб май 04, 2019 7:58 pm
Я пока пользуюсь таким
О господи, зачем так сложно?
ioneks писал(а):
Сб май 04, 2019 7:58 pm
Тут надо уточнить кто кому что сообщает
В моей текущей задаче (мост между php и sql, общения с юзером не будет) проблемы могут возникнуть при общении с БД. Вдруг соединение оборвется, база данных сломается...

Код: Выделить всё

function add_user($username, $pass_hash, $salt, $email) {
    global $mysqli;
    if(!isset($email) || $email == ''){
    	$email = NULL;
    }
    $handler = $mysqli->query("SELECT * FROM `users` WHERE `nickname`='".$username."'");
	if(!$handler || $handler->num_rows == 0){
		$id = hash('sha256', time().get_client_ip());
	    $query= "INSERT INTO `users` (`id`, `nickname`, `password`, `salt`, `email`, `avatar`, `creation_timestamp`) VALUES ('".$id."', '".$username."', '".$pass_hash."', '".$salt."', '".$email."', '', '".date("Y-m-d h:i:s", time())."')";
	    $handler = $mysqli->query($query);
	    if(!$handler){
	    	/**
	    	 *  Return technical error in JSON:
	    	return '{ "status": "error", "response": "MySQL error: '.$mysqli->error.'" }';
	    	 *  It's unhandled errors, function just must be restarted.
	    	 */
	    } else {
	    	return $id;
	    }
	} else {
	    return NULL;
	}
}
ioneks писал(а):
Сб май 04, 2019 7:58 pm
например так (это JSON)
Это JSON-объект, а не массив. И декодирован он будет в php-объект. По-моему, в JSON вообще нет ассоциативных массивов, только нумерованные, а также объекты.
ioneks писал(а):
Сб май 04, 2019 7:58 pm
Есть причины, по которым все обсуждения лучше вести тут
Если будут подключаться новые разработчики?

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



И еще вопрос про salt. Что это? Я сначала воспринял его как хеш sha256 и поле в БД сделал соответствующее.

Аватара пользователя
ioneks
Сообщения: 2399
Зарегистрирован: Ср мар 10, 2010 6:23 pm

Re: Ещё немного о картографии снов

Сообщение ioneks » Сб май 04, 2019 9:11 pm

Jace писал(а):
Сб май 04, 2019 8:44 pm
Это JSON-объект, а не массив. И декодирован он будет в php-объект.
json_decode, второй параметр true. Я же писал.

При ошибках лучше кидать Exception, так больше шанс, что на ошибку будет реакция.
Jace писал(а):
Сб май 04, 2019 8:44 pm
Если будут подключаться новые разработчики?
Нет, потому что этот сюжет может развиваться только тут.

Наш код всё равно будет открытый, так что какой смысл его прятать сейчас.

Соль (salt) — это из криптографии. Погугли «salted hash cryptography» или прояндекси «соль при хешировании паролей». Техника улучшения криптостойкости системы.

Аватара пользователя
Jace
Сообщения: 56
Зарегистрирован: Вт июл 10, 2018 10:31 am

Re: Ещё немного о картографии снов

Сообщение Jace » Сб май 04, 2019 9:50 pm

ioneks писал(а):
Сб май 04, 2019 9:11 pm
Нет, потому что этот сюжет может развиваться только тут.
А, понимаю.


Все функции реализованы.
https://cloud.mail.ru/public/3WXJ/4czXLeuVn

Аватара пользователя
ioneks
Сообщения: 2399
Зарегистрирован: Ср мар 10, 2010 6:23 pm

Re: Ещё немного о картографии снов

Сообщение ioneks » Вт май 07, 2019 11:57 am

Программирование мне чем-то напоминает сновидение. Программирование чего-то нового и сложного напоминает мне сновидение в зоне трансмутаций. Ты находишься в окружении хаоса, бурлящего множеством вариантов реализации задумки, в котором сложно выявить стабильные элементы, чтобы запрограммировать их. Какой язык программирования взять? Должна быть форма регистрации, но какая? Она должна сразу появиться, или на неё должна быть ссылка с главной страницы? А на главной странице что должно быть? И в этой неизвестности ты выхватываешь элементы, которые кажутся подходящими. Но проходит день, и ты понимаешь, что ошибся, что должно быть не так. И переделываешь, переделываешь. С начала всё переделываешь с нуля, потом какие-то элементы приживаются, начинают стыковаться друг с другом. И вот уже проступает общая картина, прорисовывается, стабилизируется. Оглядываясь назад и сравнивая её с предыдущими версиями невольно напрашивается сравнение с зоной трансмутаций. И подобно зоне трансмутаций многократное сновидение-программирование стабилизирует её в нечто законченное.

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

К чему я всё это пишу? К тому, что сейчас возникла возможность вам присоединиться к этому «сновидению» программного продукта. Я предупредил вас о том, что сейчас вы увидите лишь обрывки будущей локации, к тому же, непохожие на её будущую, более зрелую ипостась, но когда это останавливало сновидящих от посещения зон трансмутаций? Поэтому я вас приглашаю посетить локацию «DCNet» в её текущей форме. Потыкайтесь в её разные места, попробуйте пол и стены на ощупь, попытайтесь увидеть за элементами интерфейса более глубокий слой реальности, который проступит позже. Поделитесь своими впечатлениями об испытанном тут, давайте обсудим этот опыт. Граф пишет, что будущее формируется в сновидениях. Будущее нашей социальной сети — не исключение. Побудьте немного сновидящими на яву, в этом виртуальном пространстве. Поисследуйте его. Этот импульс пойдёт на формирование следующего сновидения, которое придёт следом, со следующей версией программы. Так мы вместе насновидим что-нибудь клёвое.

Вот ссылка: dcnet.rf.gd. Прошу её нигде не афишировать. Это просто тестовый полигон на каком-то бесплатном хостинге. Пока что, чем меньше людей узнают об этом, тем лучше. Прорастающему ростку нужны тепличные условия, а не базарная площадь.

Alvina
Сообщения: 584
Зарегистрирован: Ср ноя 30, 2016 3:54 pm

Re: Ещё немного о картографии снов

Сообщение Alvina » Вт май 07, 2019 5:17 pm

Новое пространство, отражающее магический мир сновидений начало наполняться и проявляется! Йонекс, Джейс, ребята... оно работает и это волшебно!
Поздравляю всех :friends: !

аметил
Сообщения: 160
Зарегистрирован: Пн май 21, 2018 7:27 am

Re: Ещё немного о картографии снов

Сообщение аметил » Ср май 08, 2019 5:27 am

чет не могу зарегистрироваться!

Аватара пользователя
ioneks
Сообщения: 2399
Зарегистрирован: Ср мар 10, 2010 6:23 pm

Re: Ещё немного о картографии снов

Сообщение ioneks » Ср май 08, 2019 5:43 am

Ошибку пишет какую-то, или как?

Чиноко
Сообщения: 998
Зарегистрирован: Вт ноя 14, 2017 1:59 pm

Re: Ещё немного о картографии снов

Сообщение Чиноко » Ср май 08, 2019 6:28 am

аметил писал(а):
Ср май 08, 2019 5:27 am
чет не могу зарегистрироваться!
Попоробуй ввести логин и пароль английскими символами.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 24 гостя