Alleksh
-
Постов
140 -
Зарегистрирован
-
Посещение
-
Победитель дней
10
Тип контента
Профили
Форумы
Календарь
Сообщения, опубликованные Alleksh
-
-
8 минут назад, melamoori сказал:
Не очень понятно написано с:
Дыры в гол... игре просто.
-
На каком Вы сервере играете?
Поищите в папке с игрой (%appdata%/.simplemc/): -
Попробуйте использовать утилиту smsniff для того, чтобы узнать, отправляются ли пакеты лаунчером на сервер.
-
Мода Avaritia на сервере нет пока что.
-
Йорик
-
5 часов назад, MuTik сказал:
Да, да, давайте каждый день вайп
На клиент уже закинули Avaritia, с последнего вайпа прошло уже 3 месяца. Сколько еще томить людей?
Поддерживаю! Хоть и не сегодня, но в скором времени ?
-
Артас
-
Что может дать такая сеть из нескольких компов?
1) Ускорение заводов.
Ведь если несколько ПК будут одновременно работать с сортронами - завод будет работать быстрее, верно?
2) Создание баз данных.
К примеру - имеем мы сеть из 30 компов, а нам нужно обновить базу данных предметов. Неужели в каждый ПК добавлять данные?
В этом случае весьма полезны базы данных.
Покажу использование сетей на примере чата.
И так, давайте создадим чат.
Примечание:
Данный чат можно реализовать и через один пк, используя несколько мониторов.
Идея:
Есть два вида устройств - сервер и клиент.
Сервер всего один, клиентов - множество.Для начала напишем сервер.
Идея сервера:
Получаем ID устройства, куда отправить данные, номер команды и получаемые данные.
Отправляем по указанному ID ответ.
Храним сообщения на диске.
Команды:
0 - отправить кол-во сообщений(записать в 0x301-0x302).
1 - отправить сообщение по номеру(берём из 0x403-0x404 номер, записываем в 0x301-0x3FF ответ).
2 - Получить сообщение - в 0x403-0x4FF находится сообщение.
Разметка сервера:
0x400 - ID
0x401 - номер команды
0x402 - Можно ли начинать работу?
0x403-0x4FF - получаемые данные.
0x300 - завершена ли работа?
0x301-0x3FF - данные клиента.
Реализация сервера:
Переменные:
VARIABLE NOW_SIZE
Для начала - напишем базу данных, для хранения сообщений:
HEX
: ADD_NEW_MESSAGE NOW_SIZE @ 1+ DUP NOW_SIZE ! BLOCK 70 MOVE FLUSH ;
: GET_MESSAGE BLOCK ;Давайте добавим пару тестовых сообщений:
Как можно увидеть, сообщения записались отлично:
Давайте теперь доработаем наш сервер:
HEX: CONNECT_TO_ID 400 C@ RBP! ;
: PROCESS_COMMAND_0
CONNECT_TO_ID NOW_SIZE @ 301 ! ;
: PROCESS_COMMAND_1
403 C@ GET_MESSAGE
CONNECT_TO_ID 301 70 MOVE ;
: PROCESS_COMMAND_2
404 ADD_NEW_MESSAGE CONNECT_TO_ID ;
: SWITCH_COMMAND
401 C@
DUP 0= IF DROP PROCESS_COMMAND_0ELSE DUP 1 = IF DROP PROCESS_COMMAND_1
ELSE 2 = IF PROCESS_COMMAND_2 THEN THEN THEN ;
: START_SERVER400 3 0 FILL
BEGIN
400 C@ 0<>
IF BEGIN 402 C@ 0<> UNTIL
SWITCH_COMMAND
CONNECT_TO_ID 1 300 C! 400 3 0 FILL
THEN KEY? UNTIL ;Наш сервер готов!
Теперь давайте напишем клиент:
Для начала напишем функции для отправки/получения сообщений:
VARIABLE MYID
: CONNECT_TO_SERVER 0 RBP! ;
: SET_READY 1 302 C! ;
: WAIT_WHILE_EXECUTED BEGIN TICK 400 C@ 0<> UNTIL ;
: GET_SIZE
CONNECT_TO_SERVER 0 301 C!
MYID C@ 300 C! 0 400 C!
SET_READY
WAIT_WHILE_EXECUTED
401 @ ;
: RECEIVE_MESSAGE
CONNECT_TO_SERVER
1 301 C! 303 !
MYID C@ 300 C! 0 400 C!
SET_READY WAIT_WHILE_EXECUTED 401 ;
: SEND_MESSAGE
CONNECT_TO_SERVER 2 301 C!
MYID C@ 300 C! 0 400 C!
100 304 70 MOVE
SET_READY WAIT_WHILE_EXECUTED ;
: SEND 100 80 ACCEPT SEND_MESSAGE ;
И так, код мы ввели.
Давайте всё это подключим:
MYID у первого клиента - 5, у второго - 6.
Давайте протестируем!
Всё сработало отлично! Поздравляю!- 2
-
Alleksh#0284
-
Табак
-
Один
-
картофельная запеканка
-
Тема
-
И так, вам необходимо реализовать структуру, в которой необходимо хранить больше одного числа? Два числа? Число и строку? Число, строку, исполняемый код?
Вам определённо нужно прочитать эту статью.
Для начала стоит ознакомиться с некоторыми командами:
HIDE - прячет последнее слово из словаря.REVEAL - восстанавливает спрятанное слово в словарь.
HEADER - берёт следующую строку из буфера, создает слово с этим именем.
ALLOT - берёт n со стека, выделяет n байт и возвращает начало выделенной памяти.
, - выделяет 2 байта, записывает в них значение со стека.
,C - выделяет и записывает 1 байт.
,S - Аналогично ',' , только для строки. Адрес должен находиться в стеке.
Давайте узнаем, как работает VARIABLE:
Она вызывает функцию CREATE, выделяет 2 байта, записывает туда 0.
Давайте узнаем, что делает CREATE:
Идёт вызов функции HEADER, определение которой нам известно.
Выделяет один байт, записывает 0x22.
Примечание:
Во второй части гайда я рассказывал, что это инструкция ENT, которая определяет, что нужно далее делать.
Выделяет еще два байта, записывает туда 0x534.
Давайте узнаем, что это за функция!
А это - функция DOVAR, которая записывает адрес следующего байта и возвращает нас в предыдущее слово.
То есть, когда мы пишем VAR - исполняется функция DOVAR. DOVAR - то же, что и EXIT, лишь оставляет в памяти адрес следующих двух байт.
То есть VAR @ можно на заменить 25FD @:Ладно, мы понимаем, как можно записывать переменные и строки.
Но как записывать исполняемую часть?
Давайте посмотрим на исходный код слова " : ":
Определение HEADER, HIDE нам известно. Про 0x22 мы уже говорили...
А что значит "[" ?
Тут всё крайне просто - в STATE хранится режим, в котором мы сейчас находимся(1 - компиляция, 0 - диалог).
Завершение компиляции - слово " ; "
Выделяет два байта, записывает в них адрес EXIT.
Вызывает " ] ", который возвращает нас обратно в диалоговый режим.
Вызывает REVEAL, определение которого нам известно.
Теперь, понимая всё это, давайте напишем слово для генерации структур данных, обозначающих предмет.
Для начала разметка:
Первый байт(он же 0x00) - 0x22, вхождение в строку.
0x01-0x02 - 0x0534(DOVAR)
0x01-0x02 - RedPower id #1
0x03-0x04 - RedPower id #2
0x05-0xXX - наша строка, где на 0xXX будет храниться 0x00, что является концом строки.
Давайте напишем функцию, которая будет выделять память для этого:
HEX
: ADD_ITEM
HEADER 22 ,C 534 ,
SORTSLOT@ DROP , ,
CR ." Enter string size: "
100 80 ACCEPT UATOI 1+ DUP 1+ ALLOT
CR ." Enter item name: "
OVER ACCEPT DROP ;
Как можно увидеть по дампу - функция работает отлично.
Чтобы получить нужные нам данные можно написать:
Всё работает отлично!
Давайте теперь создадим массив таких предметов.
Вот и появилась первая проблема - размер строк не зарезервирован, то есть - он разный, и невозможно подобрать определённое кол-во элементов массиве, размер будет разным.
У этой проблемы есть два решения:
1) Создавать массив с определенным кол-вом выделенных байт, каждая структура данных будет указывать на место следующей, кол-во элементов указываем в начале массива.
2) Создать массив с определенным кол-вом элементов, у которых будет точный размер.
Давайте реализуем первый.
Разметка:
0x00-0x01 - размер массива(байт).
0x02-0x03 - кол-во элементов в массиве.
0x04-0xXX - элементы массива(где XX - размер массива в байтах + 2).
Разметка элемента:
0x00-0x01 - указатель на место в памяти следующего элемента.
0x02-0x03 - RedPower id #1
0x04-0x05 - RedPower id #2
0x05-0xXX - наша строка, где на 0xXX будет храниться 0x00, что является концом строки.
Реализация:
: ALLOCATE_MASSIVE CREATE DUP ALLOT ! ;
VARIABLE MASSIVE_ADDR
VARIABLE ELEM_ADDR
VARIABLE MASSIVE_SIZE
: MASSIVE_GET_ELEMSIZE MASSIVE_ADDR @ 2 + @ ;
: MASSIVE_SET_ELEMSIZE MASSIVE_ADDR @ 2 + ! ;
: ADD_ELEMENT_TO_MASSIVE
MASSIVE_ADDR !
MASSIVE_ADDR @ @ MASSIVE_SIZE !
MASSIVE_GET_ELEMSIZE 1+ MASSIVE_SET_ELEMSIZE
MASSIVE_ADDR @ 4 + ELEM_ADDR !
MASSIVE_GET_ELEMSIZE 0<>
IF MASSIVE_GET_ELEMSIZE 1- 0 DO
ELEM_ADDR @ @ ELEM_ADDR @ !
LOOP THEN
SORTSLOT@ DROP
ELEM_ADDR @ 2 + ! ELEM_ADDR @ 4 + !
CR ." Enter string size: "
100 80 ACCEPT UATOI DUP 4 + ELEM_ADDR @ !
CR ." Enter string: "
ELEM_ADDR @ OVER 6 + ACCEPT ;
Попробуем инициализировать массив:
Всё отлично! Размер массива инициализирован.
Попробуем добавить элемент "Diamond" в массив.
Просмотрим дамп памяти массива:
Всё отлично! Теперь по адресу 0x2FF2 размещен указатель на 0x2FFF, где будет находится следующий элемент массива.
Удачи Вам в Ваших разработках!Первая часть: https://f.simpleminecraft.ru/index.php?/topic/5936-redpower-компьютеры/
Вторая часть: https://f.simpleminecraft.ru/index.php?/topic/5941-redpower-компьютеры-вторая-часть-понимание-системы/Третья часть: https://f.simpleminecraft.ru/index.php?/topic/5951-redpower-компьютеры-третья-часть-еще-глубже-ускорение-заводов/
Четвертая часть: https://f.simpleminecraft.ru/index.php?/topic/5965-redpower-компьютеры-четвёртая-часть-собственные-структуры-данных/
- 1
- 1
-
Если Вы не читали прошлую часть - рекомендую её к прочтению. Без неё многое тут может быть непонятно.
Вторая часть:Сейчас мы поговорим о том, как можно ускорять свои заводы, используя меньшее кол-во команд.
Для начала Вам необходимо кое-что знать:
Для того, чтобы подключиться к устройству - необходимо использовать команду " RBP! ", ID устройства должен находится в стеке.
Взаимодействие проходит таким образом:
На Вашем устройстве кусок памяти 0x300-0x3FF это 0x400-0x4FF на другом. И наоборот.
То есть, изменяя байт 0x300 мы изменяем 0x400 на другом.
Не нужно использовать во время диалога, т.к. любое отображение ставит в RBP! номер терминала, который указан в TERMADDR.Вот моя сеть:
Попробуем написать команду, которая отправит данные другому устройству:
: SEND CR ." ENTER MESSAGE: "400 100 ACCEPT DROP RBP!
400 300 OVER STRLEN MOVE ;
На 0x100 находится TIB буфер(для строк), мы не пишем сразу в 0x300 т.к. сейчас мы подключены к матрице, следовательно будем изменять её.
Попробуем отправить устройству с ID 15 нашу строку:
И вот, о чудо, мы получили нашу строку:
И так, вернёмся к периферии.
Во первых, таблица(взято с http://minecrafting.ru/topic/6612/ ) :
Курсор:
0x01: столбец x
0x02: строка y
0x03: режим (0: спрятан, 1: сплошной, 2: мигающий)
Буфер ввода с клавиатуры (16 байт, FIFO):
0x04: Указатель начала очереди
0x05: Указатель конца очереди
0x06: Значение клавиши в начале очереди
Действия с областями:
0x07: Команда (1: заполнить, 2: выделить(инверсия цвета); 3: копировать)
Координаты левого верхнего угла:
0x08: x координата области источника / Значение для заполнения
0x09: y (необходимо только для копирования)
0x0A: х координата области, требуемой для изменения
0x0B: y координата области, требуемой для изменения
0x0C: Ширина области
0x0D: Высота области
Доступ к видеопамяти:
0x00: Номер строки для чтения/изменения
0x10-0x60: Содержимое строки
Это - память терминала (чтобы править, нужно использовать 0x300+addr).
Зная всё это, мы можем понять, что, например, с монитором не всё так просто.
Воспользуемся командой DECOMPILE, чтобы просмотреть, как работает EMIT:
Давайте разбирать.
1) 0xF08-0xF12 Берёт из адрес терминала из TERMADDR и переключает устройство на него.
2) 0xF14-0XF18 В 0x300 записывается наш символ.
Далее идёт смена координат, это не столь важно.
А не так и сложно, как показалось с первого взгляда, верно?
Воспользуемся таблицей(взято с http://minecrafting.ru/topic/6612/ ) :
0x00-0x7F: Буфер дисковода, размером в 1 сектор (128 байт).
0x80-0x81: Номер сектора
0x82: Команда для дисковода: (далее значения этого байта)
0: Ничего или удачное завершение предыдущей команды
1: Прочитать имя дискеты
2: Записать имя дискеты
3: Прочитать ID дискеты (серийный номер)
4: Прочитать сектор дискеты
5: Записать сектор дискеты
0xFF: Неудачное завершение предыдущей команды
Давайте посмотрим, как работают функции взаимодействия с дисководом(про запись/чтение на дискеты, кстати, поговорим в следующих частях).
SAVE" записывает на диск всё от 0x500 до HERE.
Во первых, она использует слово DISKNAME". Давайте декомпилируем и его:Не так уж и сложно, записывает данные на 0x300-0x380 и записывает номер команды в 0x382.
Вернёмся к SAVE".
Далее идёт подготовка к запуску цикла, цикл записывает каждые 128 байт от 500 до HERE используя DISKWS.
Давайте посмотрим и на него:
И снова, не всё так уж и сложно. Приблизительно то же, что и в случае DISKNAME".
Всё просто, не правда ли?
Давайте перейдём к самому вкусному - сортроны.
Таблица:
0x00: микрокоманда
1: Определить размер инвентаря
2: Прочитать содержимое слота
3: Извлечь
4: Фильтр
0x01: Количество предметов
0x02: Номер слота
0x04: Идентификатор предмета (4 байта!)
0x08: Повреждённость предмета
0x0A: Предел прочности предмета
0x0C: Исходящий цвет
0x0D: Входящий цвет
Разберём команду SORTPULL:
И снова, запись адреса в RBP, запись номера слота в 0x302, кол-ва предметов в 0x301.
Использует SORTCMD.
Давайте проанализируем и его:
Во первых, что мы можем увидеть - снова запись адреса в RBP.
Ожидание исполнения команды.
Проверка на то, не случилось ли каких-либо ошибок при работе.
Если случились - выводим Sorter Error и выполняем QUIT.
Вы все ещё можете спросить, как это позволит нам ускорить свои заводы?
А всё просто:
Во первых, Вы можете убрать из SORTPULL последних две команды, если они вам, очевидно, не нужны.
И две первых, если Вы все еще работаете с сортроном, к которому подключены.
Давайте теперь попробуем написать очень быструю команду извлечения ВСЕХ предметов из сундука.
Заменим SORTCMD, уберём проверку на ошибки и переключение SORTADDR.
Оставим ожидание выполнения.
HEX
: BETTER_SORTCMD
DUP 300 C! 300 C@ = 5 TICKS ;
: GET_ALL_ITEMS
SORTADDR @ RBP!
1 BETTER_SORTCMD 302 @
0 DO40 301 C! I 302 !
3 BETTER_SORTCMD LOOP ;
Вторая функция, использует стандартные методы:
: GET_ALL_ITEMS2 SORTSLOTS 0 DO 64 I SORTPULL DROP LOOP ;
Вот, мы убрали переключение на SORTADDR, убрали проверки каждый раз в SORTCMD.
Давайте теперь сравним две функции:
Наша GET_ALL_ITEMS справилась за 4.2 секунды.
GET_ALL_ITEMS2 справилась за 6.9 секунд.
Этот пример НЕ СОВЕРШЕНЕН, можно ещё сильнее ускорить.
ВАЖНО:
Оставляйте проверку на ошибки в конце функции.
Почему?Требование международных стандартов.
Просто если что-то пойдёт не так, сортрон зависнет например, или шину разорвёт на стыке чанков.
В следующем гайде я покажу, как создавать и взаимодействовать и создавать собственные структуры данных.Первая часть: https://f.simpleminecraft.ru/index.php?/topic/5936-redpower-компьютеры/
Вторая часть: https://f.simpleminecraft.ru/index.php?/topic/5941-redpower-компьютеры-вторая-часть-понимание-системы/Третья часть: https://f.simpleminecraft.ru/index.php?/topic/5951-redpower-компьютеры-третья-часть-еще-глубже-ускорение-заводов/
Четвертая часть: https://f.simpleminecraft.ru/index.php?/topic/5965-redpower-компьютеры-четвёртая-часть-собственные-структуры-данных/
- 5
- 1
-
Авантюрист
-
Теперь перейдём к более сложным вещам.
В том случае, если Вы сразу перешли сюда после первой части - не спешите, для начала попрактикуйтесь, узнайте получше FORTH.
Сейчас я вам поведаю о том, как формируются слова в памяти.
Для начала - создадим функцию DUMP:
Она принимает на вход адрес, два значения.
addr n1 n2 DUMP
Выводит n1 строк по n2 байт по адресу addr.
VARIABLE PARAM
DECIMAL
: DUMP
16 RADIX ! PARAM !
0 DO CR
DUP I PARAM @ * + DUP U. BS ." : "
PARAM @
0 DO DUP I + C@ DUP 16 < IF ." 0" THEN . LOOP
PARAM @ 0 DO DUP I + C@ EMIT LOOP
DROP LOOP ;
Когда вы напишете в консоли ' %word% - в стек запишется адрес исполняемой части слова, которую можно выполнить написав EXECUTE.
Перейдём к байт-коду данного слова.
Инструкции RedCPU:
http://www.eloraam.com/nonwp/redcpu.php
Каждое созданное Вами слово будет начинаться с 0x22, что является инструкцией ENT.
Каждая следующая инструкция после ENT будет указателем на исполняемую часть другого слова.
Например:
Примечание:
Каждая цифра, адрес и т.п. записывается наоборот(записав 0x4488 в памяти окажется 0x88 0x44).
Если процессор видит команду 0x22 - он понимает, что далее необходимо брать по два байта, переходить по адресу и исполнять данный код.
У вас, возможно, мог возникнуть вопрос:
-Хмм, что же находится по адресу 0x55C?
Что же, давайте воспользуемся командой >NAME(добавляет в стек адрес строки)
Не удивительно.
Если бы там не было команды EXIT - он начал бы исполнять то, что находится по адресу 0x0000, где находится всякий мусор.
Давайте теперь узнаем, как записываются числа и строки, ведь у них нет определенного адреса:
Как можно увидеть - используются специальные слова, которые определяют вхождение в строку и число. Так же можно заметить, что строка заканчивается на 0x00.
Давайте теперь, учитывая это, напишем декомпилятор:
HEX VARIABLE NOW_ADDR
: DECOMPILE
OVER 1 + NOW_ADDR !
0 DO CR NOW_ADDR @ U. BS ." : "
NOW_ADDR @ @
DUP 550 = IF DROP NOW_ADDR @ 2 + @ . NOW_ADDR @ 4 + NOW_ADDR !
ELSE FE2 = IF NOW_ADDR @
BEGIN 1 + DUP C@ DUP EMIT ." " 0= UNTIL
NOW_ADDR !
ELSE NOW_ADDR @ @ >NAME TYPE NOW_ADDR @ 2 + NOW_ADDR !
THEN THEN LOOP ;
Давайте теперь попробуем декомпилировать функцию SAVE":
Все сработало отлично!
Если возникли какие-либо вопросы - пишите их в комментарии к этому посту, постараюсь ответить. Тема достаточно сложная для восприятия.
В следующей части мы ознакомимся как взаимодействовать с периферией(дисководы, сортроны, мониторы и т.п.) напрямую(не используя стандартные команды).
Первая часть: https://f.simpleminecraft.ru/index.php?/topic/5936-redpower-компьютеры/
Вторая часть: https://f.simpleminecraft.ru/index.php?/topic/5941-redpower-компьютеры-вторая-часть-понимание-системы/Третья часть: https://f.simpleminecraft.ru/index.php?/topic/5951-redpower-компьютеры-третья-часть-еще-глубже-ускорение-заводов/
Четвертая часть: https://f.simpleminecraft.ru/index.php?/topic/5965-redpower-компьютеры-четвёртая-часть-собственные-структуры-данных/
- 5
- 4
-
Многие недооценивают компьютеры из RP, а еще больше - не знают о них вовсе.
В этом гайде я о них вам поведаю.
Для начала вам понадобится:
Центральный процессор, монитор, дисковод, объединительная плата, 8K RAM модуль, extended FORTH disk (желательно).
Примечание:
Позади ЦП вы можете установить до 8 8K RAM модулей.
Устанавливаете центральный процессор, позади него - объединительную плату, на неё - 8K RAM модуль:
Чтобы объединять разную периферию(дисководы, мониторы, ЦП и т.п.) - их можно ставить вплотную друг к другу, или же использовать плоские кабеля:
Каждый блок может иметь собственный ID, устанавливать его можно используя отвёртку, нажав shift+ПКМ:
Компьютер использует эти ID для подключения к устройству, рекомендуется делать их разными в одной сети.
К слову про сети:
Как можно наглядно увидеть, устройство(далее - узел) номер один видит лишь 3 и 2.
То есть, узлы не могут пропускать через себя сигнал. Чтобы подключить первый узел к шестому - необходимо, чтобы между ними была связь в виде плоских кабелей.
И так, вернёмся к постройке нашего ПК.
Нажав ПКМ по ЦП, мы увидим такой интерфейс:
Disk - идентификатор загрузочного дисковода,
Console - идентификатор монитора, в котором мы будем работать,
ID - идентификатор ЦП.
START - Запустить устройство.
HALT - Отключить устройство.
RESET - Остановить работу устройства, при нажатии START - загрузка с дискеты.
Датчики справа от кнопок обозначают, включено ли устройство.
Сверху - включено, снизу - отключено.
Итак, приступим к самому компьютеру.
Чтобы он запустился - необходимо вставить в дисковод дискету и нажать START в ЦП.
Если вы всё правильно настроили - вас должно встретить следующее сообщение:
Во первых, нужно ознакомиться с синтаксисом FORTH.
Этот язык использует для своей работы стек, то есть вводя какое либо число и нажимая ENTER - вы его добавляете в стек.
Последнее число, которые мы добавили выйдет первым:
Арифметические операции забирают последние два числа со стека и кладут на вершину итог.
2 2 * . выведет 4,
2 6 * . выведет 12,
1 2 3 * + . выведет 7.
Чтобы исполнить какое-либо слово - достаточно просто его написать:
Создание слов
VARIABLE %name% - создать переменную с именем %name%.
CONSTANT %name% - создать константную переменную с именем %name%.
Для формирования исполняемых слов есть кое-что интереснее:
: %name% %body% ;
Где %name% - имя, а %body% - тело слова(то, что мы будем исполнять).
Например, в словаре есть слово "EMIT".
Оно берёт последнее значение со стека и выводит его в виде символа(ASCII).
42 в таблице ASCII - *
Создадим слово STAR, которое выведет звезду:
Ознакомиться со словарём и многим другим можно тут:
http://minecrafting.ru/topic/6612/
В следующих частях я расскажу о более сложных вещах, со знанием которых вы сможете делать большие заводы, обслуживаемые лишь 1 ПК.Первая часть: https://f.simpleminecraft.ru/index.php?/topic/5936-redpower-компьютеры/
Вторая часть: https://f.simpleminecraft.ru/index.php?/topic/5941-redpower-компьютеры-вторая-часть-понимание-системы/Третья часть: https://f.simpleminecraft.ru/index.php?/topic/5951-redpower-компьютеры-третья-часть-еще-глубже-ускорение-заводов/
Четвертая часть: https://f.simpleminecraft.ru/index.php?/topic/5965-redpower-компьютеры-четвёртая-часть-собственные-структуры-данных/
- 3
- 6
-
@Lego_Chubzik Зачем создавать твинки и "лайкать" самого себя? Какой в этом смысл?
И этими же твинками понижать репутацию других игроков.
-
У extra utilities есть очень мощные генераторы RF. За первую неделю игры у меня было ~10^13 RF энергии, что = 2,5 * 10^12 EU. Мне кажется, добавление такого мода слишком упростит развитие.
- 1
-
-
03.06.2018 в 01:01, maxvlod сказал:
Из всех пунктов полезен только 7, занимался взломом всего чего только возможно.
Вот солью я бд этого сайта, расшифрую пароли и всё. буду иметь базу вида email:pass потом закину её в софт и буду брутить ваши вк и т.д.
лол, базы email:pass редко где встречаются, чаще используется email:hash. Естественно, есть шанс коллизии но это намного лучше, чем email:pass. И что же ты с хэшем будешь делать?
Иногда используют email:cryptPass. Шифруют пароли собственным 1024-битным ключем. При таком шифровании чаще используется AES в связке с twofish/serpent. Иногда эти 3 алгоритма вместе. Существует 2^1024 этих ключей, на поиск уйдет очень большое количество времени.
Если пытаться перехватить данные как MITM, при передаче данных через https невозможно влезть в соединения, пакеты зашифрованы. На расшифрование 2048-битных ключей уйдут годы.
-
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Форум
в Архив
Опубликовано
Согласен!