Pull to refresh
319
93.1
Владимир @Firemoon

Пользователь

Send message

Нет, поля не выравниваю. Была идея извлекать ячейки с условием, а весь остальной сканворд нарисовать на «конве», но тогда нужно извлекать ещё и стрелочки. В общем, решил максимально не усложнять в первой итерации.

Если бы на Хабре можно было бы давать медальки своим подписчикам, я бы дал вам медаль I степени за преданность :)

civit.ai -> Models -> Filters -> (выбрать) SD3 -> Закрыть фильтры

Прям ссылку на эту поисковый запрос, увы, нельзя сделать.

Я могу ответить только достаточно поверхностно: LLM и рисующие нейросети имеют разную специфику и, соответственно, архитектуру.

Ранее в статье про Midjourney я писал, что у них появилась команда /shorten, которая немного показывает как работает токенайзер, который удаляет предлоги и прочий «шум». Ну и генерация изображения -- это итеративный процесс, в котором картинка за пару десятков шагов «вытягивается» из шума. Причем картинки, в общем-то, понятны на любом языке. На страничке анонса SD3 написано, что их новые модели имеют от 800 миллионов параметров до 8 миллиардов. Примем эти «параметры» за некую метрику размера модели.

Языковые модели -- это трансформеры, которые получают текст на вход и «угадывают» какой токен должен быть следующим. И с текстом есть проблемы: языков много.

Для сравнения GPT-J-6B, опенсурсный аналог GPT-3, состоит из 6 миллиардов параметров и (в моих тестах) достаточно часто говорит дичь. Причем только на английском. Википедия заявляет (а она может врать), что настоящая GPT-3 содержит 175 миллиардов параметров, ну и GPT-3 уже умела говорить на многих языках.

Отсюда простой вывод: чем больше параметров в модели -- тем больше нужно мощности, чтобы с ней поладить.

Ну, месяц прошёл. Приём ответов этим комментарием закрывается.

И ответ для желающих, а также явно тегну @whocoulditbe и @DimaFromMai, как людей, которые показали свой интерес, но не дошли до решения.

Задача этого дампа была использовать описанные в статье приёмы, но не сделать решение невозможным.

Шаг 1

Большая часть статьи посвящена тому, что символы кодируются как разница между временными метками в теле ICMP-пакета. Автоматизируем разбор дампа, в моем случае -- через scapy.

from scapy.layers.inet import ICMP
from scapy.utils import rdpcap

scapy_cap = rdpcap('contest.pcap')

data = []

for i in range(2, len(scapy_cap), 2):
    prev = scapy_cap[i - 2]
    curr = scapy_cap[i]

    assert prev[ICMP].type == 8
    assert curr[ICMP].type == 8

    p_s = int.from_bytes(prev[ICMP].load[0:8], "little")
    p_ms = int.from_bytes(prev[ICMP].load[8:16], "little")

    c_s = int.from_bytes(curr[ICMP].load[0:8], "little")
    c_ms = int.from_bytes(curr[ICMP].load[8:16], "little")

    diff = (c_s - p_s - 1) * 1_000_000 + (c_ms - p_ms)
    data.append(diff)

print(data)

Если считать с ограничением в миллисекунды, как указано в статье, то разница -- идеально точная секунда. Так не бывает :) Считаем в микросекундах и получается что-то такое:

[9, 0, 30, 6, 1, 12, 0, 13, 3, 12, 14, 2, 0, 5, 2, 6, 0, 7, 1, 9, 2, 8, 26, 2, 5, 5, 1, 0, 5, 4, 11, 3, 11, 1, 19, 1, 0, 7, 1, 1, 21, 29, 2, 5, 4, 16, 0, 6, 22, 11, 0, 7, 1, 9, 7, 2, 12, 0, 6, 22, 11, 0, 6, 1, 22, 5, 1, 0, 6, 22, 11, 0, 30, 6, 1, 0, 9, 7, 33, 0, 1, 21, 12, 3, 5]

Что делать с этим набором данным -- под следующим спойлером.

Шаг 2

Это, конечно, ещё не ответ, но раз нам обещали загадку, значит ответ где-то рядом. В статье можно найти такой абзац:

Если передавать необходимо текст, то можно использовать компактную кодировку. Например, только заглавные буквы алфавита и пробел: 34 символа для русского алфавита. А если алфавит отсортировать с учетом частотности символов, то отклонение множества пакетов будет в рамках погрешности и заметить передачу будет сложнее.

33 буквы алфавита + пробел = 34 символа. В нашем массиве данных минимальное значение 0, максимальное -- 33, отлично подходит. Переходим по ссылке и честно забираем оттуда буквы в порядке убывания частотности символа. При это заглавные буквы будут или строчные -- неважно, на ответ не влияет. Получается что-то такое:

voc = ["о", "е", "а", "и", "н", "т", "с", "р", "в", "л", "к", "м", "д", "п", "у", "я", "ы", "ь", "г", "з", "б", "ч", "й", "х", "ж", "ш", "ю", "ц", "щ", "э", "ф", "ъ", "ё"]

Остается вопрос: где должен быть пробел. Хотя пробел можно расположить куда угодно, это всего 33 строки на проверку, что относительно быстро перебирается. Но интуитивно хочется поместить в начало (код 0) или в конец (код 33).

dec = [voc[i] for i in data]
print("".join(dec))

Ответ

Пробел прячется на нулевой позиции. Ответ:

в этом дампе нет совершенно никакого сообщения тчк совсем тчк точно тчк это всё обман

ICMP-пакеты, как и UDP-пакеты, фрагментируются при превышении MTU.

А ещё у вас по адресу из дампа гитлаб по хттп смотрит наружу, это часть загадки?

В загадке участвует только дамп. Так что гитлаб по хттп не является частью загадки.

Да. Если размер данных (флаг -s) больше паттерна, то паттерн вмещается несколько раз.

Эхо-запросы по умолчанию (с их 32 или 56 байтами данных) весьма неприметные. И к пакетам с малым объемом минус "легко обнаружить из-за размера" действительно неприменим. Мало ли кто что пингует.

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

Раз стену вернуть не получается, то хоть изображения к статье вернём.

Достаточно в меню игры выбрать "multiplayer -> host saved game" и позвать друзей.

Единственный плюс сервера - он работает всё время.

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

И несколько инстансов все же можно запустить на одном физическом сервере, насколько я помню, Factorio преимущественно однопоточная. У Eternity Cluster физических серверов меньше, чем игровых.

Мне тоже. Но это КДПВ, она должна привлекать внимание.

Если вам хочется продолжить царапать глаз дальше, то карту я скачал отсюда: https://factoriomaps.com/beta/user/Xarovin/Osira/index.html

В своей игре я использую что-то вроде City Block:

Очень общий скриншот на тысячу часов, модпак Seablock

Программистам стоит помнить, что хранить не стоит создавать тысячи маленьких файлов без веской причины.

Во-первых, это неэффективно с точки зрения занимаемого места.

Во-вторых, можно нарваться на ситуацию, когда у Вас на диске свободно 10+ гигабайт, а операционная система говорит, что `No space left on device` (нет места). Такое бывает, когда закончилось место для inode (грубо говоря это запись о файле в файловой системе). Да, в линуксе на некоторых файловых системах количество файлов на диске ограничено х)

На Windows точно не знаю, но там тоже может присутствовать такое ограничение.

Насколько я знаю, у MicroSD есть механизмы защиты, в том числе для защиты от чтения. Википедия говорит, что это требование Secure Digital Music Initiative (SDMI), возможно, это аббревиатура поможет вам в поисках как именно защищается флешка.

В моем опыте были проблемы с флешками, на которые поставили пароль через телефоны Nokia на платформе S40. Даже отформатировать такую флешку с потерей данных было проблемно, поэтому они просто навсегда отправлялись на полку.

Если сделать telnet на порт, где сидит SSH, то оттуда донесется что-то вроде

$ telnet 127.0.0.1 22 
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.1

Так что просто смена поможет, но ненадолго.

BeOS я искал как раз потому что там обещали суперпользователя не root. Ну и я пошёл проверять, так сказать, в оригинале. Хотя, конечно, функциональность UNIX там ограничена.

Клиент телеграма можно добавить как «игру» для игрового режима. Но чтобы как на ПК переключаться между Телеграмм и игрой — нет, так нельзя.

Подразумевается, что правила для всех одинаковы, поэтому ожидаемый ответ — нет, игнорировать правила нельзя.

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

Information

Rating
49-th
Location
Челябинск, Челябинская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
Python
Flask
SQLalchemy
Bash
C