Size: a a a

Programming Offtop

2020 July 23

(

( in Programming Offtop
Ilmir
Цикл for давно появился?
Смотря что тебе нужно сделать, пройтись по иммутабельной структуре - рекурсия, если нужно что-то мутабельное - forM
источник

I

Igor in Programming Offtop
Ilmir
В лиспе есть, почему бы не добавить в другие ФП языки?
тонко тонко 😌
источник

I

Ilmir in Programming Offtop
(
Смотря что тебе нужно сделать, пройтись по иммутабельной структуре - рекурсия, если нужно что-то мутабельное - forM
Тогда наверняка даже есть parallelFor.
источник

(

( in Programming Offtop
Ilmir
Тогда наверняка даже есть parallelFor.
ну есть, только называется forConcurrently/mapConcurrently, кстати, в этой же библиотеке
источник

I

Ilmir in Programming Offtop
(
Оно и так отменит все остальные, эксепшен вылетает наверх, так же как и в котлине
Не, у нас Exception ловится внутри библиотеки, и только после отмены всех детей пробрасывается наверх. Причём CancellationException пользовательский код не имеет права ловить. И кидать только в очень редких случаях. В идеале, он вообще не должен быть виден.
источник

I

Igor in Programming Offtop
Ilmir
Не, у нас Exception ловится внутри библиотеки, и только после отмены всех детей пробрасывается наверх. Причём CancellationException пользовательский код не имеет права ловить. И кидать только в очень редких случаях. В идеале, он вообще не должен быть виден.
> Причём CancellationException пользовательский код не имеет права ловить.


и шо ты мне сделаешь, я вообще в другом городе 😎
источник

AM

Andrew Mikhaylov in Programming Offtop
Ох бля жиза, я до сих пор по проекту catch(e: Exception) выгребаю.
источник

I

Ilmir in Programming Offtop
Igor
тонко тонко 😌
У самого-то что на аватарке? Разве не диалект идеального языка, спущенного на землю самими богами через пророка Маккарти.
источник

I

Igor in Programming Offtop
Ilmir
У самого-то что на аватарке? Разве не диалект идеального языка, спущенного на землю самими богами через пророка Маккарти.
если ты так называешь мой самописный "стат-типизированный-встраиваемый-lisp-с-интеропом" то да
источник

I

Igor in Programming Offtop
источник

AM

Andrew Mikhaylov in Programming Offtop
Вы скорее всего пропустили, что происходит на просторах Minecraft расследований – тут на днях обнаружили «сид» мира из главного меню Minecraft и обнаружили не случайно, а провели целое расследование которому можно позавидовать.

«Сид» мира, это код для генерации мира, зная этот код и версию игры, мы можем с вами ими обменяться и играть в рамках одного мира, каждый у себя (то есть карта будет одинаковая).  7 лет никто не мог найти этот «сид» из главного меня, хотя переодически кто-то пытался.

Легко узнать «сид», если вы нашли его в интернете, но как по 4 скриншотам найти нужный, если всего может быть 281 474 976 710 656 вариантов миров от этих сидов?

Я правда впечатлен:

🟩 Для начала чуваки выяснили версию игры из которой еще Notch делал скриншоты для главного меню, потому, что генерация мира много раз менялась – это сделать оказалось довольно просто, они просто посмотрели мета-данные скриншотов и нашли что они сделаны 27 июня 2011 года, таким образом установили, что версия игры ~beta 1.7.3.

🟩 Дальше чуваки попробовали полностью воссоздать это место в любом другом мире, для этого они написали специальный софт сравнения ракурсов со скриншотом. Это точное воссоздание нужно, для последнего шага, кода чуваки написали алгоритм поиска такого же места – об этом позже.

🟩 Следующим шагом они попытались определить реальные координаты места в мире где был сделан скриншот. Для этого чуваки вычислили Z&Y-координаты через облака видные на скриншоте (!).

🟩 Для определения X-координаты, никак кроме как магией я эту внимательность назвать не могу: если вы видели Minecraft-блок покрытый травой, вы можете подумать что трава рандомно расположена на нем – на самом деле это не рандом, каким-то образом положение «травы» на блоке зависит от координат блока и одинаковое во всех возможных «мирах». Короче чувак построил длинную полосу из блоков и высаживая на каждом «траву» сравнивал с тем скриншотом, что у них был. И в итоге он так и нашел X-координату и подтвердил координаты Z и Y 🤯

🟩 Опять, используя траву, один из чуваков заметил – что травинки разных оттенков. Это происходит из-за «смешивания» биомов разной флоры в игре той версии. Дальше он сделал граф этих значений и уменьшил количество потенциальных сидов с числа о котором я писал вверху, до ~90 миллиардов. Я так понимаю они повторили алгоритм смешивания биомов для этого шага отдельно, не в самой игре.

🟩 Если вглядитесь в скриншот, то видно, как биом средней полосы переход в пустыню, дальше они опять применили метод из прошлого шага и получили ~11 миллионов потенциальных вариантов миров.

🟩 Теперь, в теории, они могли запустить алгоритм, который бы брутфорсил все миры в поисках блоков воссозданной сцены в начале этого поста, но это заняло бы слишком много времени, им нужно было уменьшить количество потенциальных сидов хотя-бы до ~2 миллионов, чтобы посчитать на CPU такой объем данных.

🟩 Но, оказалось, что у Minecraft сообщества уже есть «сервер распределённых вычислений Minecraft @home» где они, делясь вычислительными мощностями своих ПК, ищут, например самый высокий кактус во всех мирах и тп. Поэтому с помощью этих вычислений, они таки смогли брутфорсом найти правильный «сид» мира из главного меню 🔥 Иронично, что таких сидов оказалось два.

В общем, я в очередной раз радуюсь интернету и интернет-сообществам за факт их существования.

А вот и сид если хотите поиграться сами:
Beta 1.7.3, seed: 2151901553968352745

Интернет – 💖

Тут видео с деталями как ребята это сделали:
https://youtu.be/GaRurhiK-Lk
источник

ML

Mikhail Levchenko in Programming Offtop
источник

AE

Alexandr Emelyanov in Programming Offtop
Andrew Mikhaylov
Вы скорее всего пропустили, что происходит на просторах Minecraft расследований – тут на днях обнаружили «сид» мира из главного меню Minecraft и обнаружили не случайно, а провели целое расследование которому можно позавидовать.

«Сид» мира, это код для генерации мира, зная этот код и версию игры, мы можем с вами ими обменяться и играть в рамках одного мира, каждый у себя (то есть карта будет одинаковая).  7 лет никто не мог найти этот «сид» из главного меня, хотя переодически кто-то пытался.

Легко узнать «сид», если вы нашли его в интернете, но как по 4 скриншотам найти нужный, если всего может быть 281 474 976 710 656 вариантов миров от этих сидов?

Я правда впечатлен:

🟩 Для начала чуваки выяснили версию игры из которой еще Notch делал скриншоты для главного меню, потому, что генерация мира много раз менялась – это сделать оказалось довольно просто, они просто посмотрели мета-данные скриншотов и нашли что они сделаны 27 июня 2011 года, таким образом установили, что версия игры ~beta 1.7.3.

🟩 Дальше чуваки попробовали полностью воссоздать это место в любом другом мире, для этого они написали специальный софт сравнения ракурсов со скриншотом. Это точное воссоздание нужно, для последнего шага, кода чуваки написали алгоритм поиска такого же места – об этом позже.

🟩 Следующим шагом они попытались определить реальные координаты места в мире где был сделан скриншот. Для этого чуваки вычислили Z&Y-координаты через облака видные на скриншоте (!).

🟩 Для определения X-координаты, никак кроме как магией я эту внимательность назвать не могу: если вы видели Minecraft-блок покрытый травой, вы можете подумать что трава рандомно расположена на нем – на самом деле это не рандом, каким-то образом положение «травы» на блоке зависит от координат блока и одинаковое во всех возможных «мирах». Короче чувак построил длинную полосу из блоков и высаживая на каждом «траву» сравнивал с тем скриншотом, что у них был. И в итоге он так и нашел X-координату и подтвердил координаты Z и Y 🤯

🟩 Опять, используя траву, один из чуваков заметил – что травинки разных оттенков. Это происходит из-за «смешивания» биомов разной флоры в игре той версии. Дальше он сделал граф этих значений и уменьшил количество потенциальных сидов с числа о котором я писал вверху, до ~90 миллиардов. Я так понимаю они повторили алгоритм смешивания биомов для этого шага отдельно, не в самой игре.

🟩 Если вглядитесь в скриншот, то видно, как биом средней полосы переход в пустыню, дальше они опять применили метод из прошлого шага и получили ~11 миллионов потенциальных вариантов миров.

🟩 Теперь, в теории, они могли запустить алгоритм, который бы брутфорсил все миры в поисках блоков воссозданной сцены в начале этого поста, но это заняло бы слишком много времени, им нужно было уменьшить количество потенциальных сидов хотя-бы до ~2 миллионов, чтобы посчитать на CPU такой объем данных.

🟩 Но, оказалось, что у Minecraft сообщества уже есть «сервер распределённых вычислений Minecraft @home» где они, делясь вычислительными мощностями своих ПК, ищут, например самый высокий кактус во всех мирах и тп. Поэтому с помощью этих вычислений, они таки смогли брутфорсом найти правильный «сид» мира из главного меню 🔥 Иронично, что таких сидов оказалось два.

В общем, я в очередной раз радуюсь интернету и интернет-сообществам за факт их существования.

А вот и сид если хотите поиграться сами:
Beta 1.7.3, seed: 2151901553968352745

Интернет – 💖

Тут видео с деталями как ребята это сделали:
https://youtu.be/GaRurhiK-Lk
Наркоманы
источник

ML

Mikhail Levchenko in Programming Offtop
clojure взяли под крыло в каком то банке🤔
источник

AE

Alexandr Emelyanov in Programming Offtop
Но работа проведена огромная
источник

AM

Andrew Mikhaylov in Programming Offtop
Alexandr Emelyanov
Но работа проведена огромная
Но наркоманы)
источник

AE

Alexandr Emelyanov in Programming Offtop
Andrew Mikhaylov
Но наркоманы)
Безусловно)
источник

AE

Alexandr Emelyanov in Programming Offtop
Это же каким фанатом надо быть
источник

AM

Andrew Mikhaylov in Programming Offtop
Не, ну наверное над тулингом, который чанки анализирует, интересно поработать
источник

AE

Alexandr Emelyanov in Programming Offtop
Ну тут самоцель такая что пользы никакой, спортивный интерес
источник