Alexander
Хотя хз они как и фб странные в этом отношении
Dmitry
а что значит сложность ок но неэффективно?
Dmitry
большая константа или что?
Anonymous
ну сложность измеряется не только у времени, а еще и у памяти. может по памяти не оч было
Alexander
В смысле лапша вместо кода
Anonymous
а на доске можно что-то кроме лапши написать?
Alexander
И несколько предположений о задаче, которые можно было и не делать, упрощающих
Alexander
Точно можно было если не рваться в бой на 30сек подумать о задаче в целом
Максим
Кстати о подкастах. Кто-то знает а "Бананы и Линзы" всё? Или просто каникулы?
Максим
Жаль :(
Alexander
не факт
Alexander
время покажет
Alexander
не факт что все
Artem
Во всяком случае, сейчас никаких планов у бывших ведущих, как я понял, нет
Alexander
/me снял и спрятал шляпу соведущего куда-то подальше
Quet
@qnikst а чего там кстати, у всех одновременно время закончилось? или надоело?
Quet
вроде ж тем много (если не каждую неделю то каждые две) -- точно найдется что обсудить
Alexander
всем поднадоело, а Рому если я правильно понял совсем достало
Alexander
может быть вернём но где-то раз в месяц
Alexander
иначе кворум не собрать будет
Quet
или заменить рому? )
Alexander
Рома делал все
Alexander
Вообще планы вернуть были, но это секрет и может не взлетит, так что пока можно считать, что все, но в тайне надеяться
Quet
про хаскель вроде и буржуйских подкастов активных нет?
Quet
был когда-то haskellcast но тоже сдох
Dmitry
@qnikst а если ты не спишь, не поделишься, как у себя safecopy используете?
Anonymous
hackage вообще жив? или это нормально что там haddock-api старее чем тот что вместе с ghc 8.0.2 идет?
Anonymous
я не пойму почему ты это ставишь в претензию hackage
Anonymous
просто кто-то что-то не залил))
Alexander
@voidlizard сплю, делаешь структуру V1 сериализуешь через safeCopy, на другой стороне через safeGet читаешь, если потом меняешь ее - то старую переименовываешь старую структуру в V0, пишешь новую и тайпкласс для миграции, если тебе приходит V0 то к нему автоматом применяется преобразование
Dmitry
как бойлерплейта избежать при копировании?
Alexander
Но так не все миграции и с миграциями при связанных событиях сложно, как порешали скажу как
Alexander
Весь бойлерплейт это старые структуры в коде и класс миграции
Alexander
Не очень дорого, тем более что их в специальный модуль положить можно
Dmitry
ну код миграции это по сути копирования одних (всех) полей в другие и инициализация новых полей
Dmitry
https://gist.github.com/voidlizard/5a937e7e407c625a894c9c88a37693c8
Dmitry
бойлерплейт же по сути дела
Alexander
Ну без него как-то сложно..
Dmitry
ну да, обсудили - coerce здесь не поможет
Dmitry
но как-то вообще не алё выглядит
Alexander
Ну а как кроме, только протобуф если
Alexander
Где поля индексированы и есть default для новых
Dmitry
ладно, проще смириться, наверное.
Alexander
Можно наверное как протобуф сделать, но там же тоже бойлерплейт будет..
Dmitry
не, это всё негуманно уже
Alexander
У нас то вообще задница, у нас граф в котором экзестенциальные типы живут
Alexander
Между версиями типы могут меняться так что нужно читать весь граф чтобы значение восстановить
Alexander
А в новой версии новые типы и надо уметь прочитать старые бинарные данные и восстановить
Alexander
Поидее RFC на то как это делать написали, но пока не запилили
Anonymous
лол
Anonymous
практическая атака на SHA1
Anonymous
солидно
Dmitry
гиту пипец, хотя он вроде бы может переехать на sha256
Dmitry
потому, что он полагается на хэши sha1 и теперь можно подбирать объекты, которые им соответствуют?
Vladislav
Там вроде не используются криптографические свойства sha1
Dmitry
но я не читал статью об атаке
Vladislav
потому, что он полагается на хэши sha1 и теперь можно подбирать объекты, которые им соответствуют?
Для такой атаки нужен доступ к репозиторию на запись, а с ним, думаю, и так много способов все сломать
Alexander
Я правильно понял, что они там генерят 2 одинаковых файла (по хешу), а не по нужному sha строят файл?
Vladislav
они пока только одну пару сгенерировали
Vladislav
причем потратив кучу ресурсов: "This attack required over 9,223,372,036,854,775,808 SHA1 computations. This took the equivalent processing power as 6,500 years of single-CPU computations and 110 years of single-GPU computations."
Anonymous
Max
сначала они пришли за md5, я молчал. потом пришли за sha-1, я молчал. когда пришли за мной, никто не заступился за меня.
Ilya
https://habrahabr.ru/post/322478/
Anonymous
гиту пипец, хотя он вроде бы может переехать на sha256
Почему пипец? Если в гите встречаются два объекта с одинаковыми хешами, то более старый всегда будет перезаписывать более новый. Ссылочка на комментарий Линуса: http://marc.info/?l=git&m=115678778717621&w=2
igo
я даже как-то раз был тем счастливчиком, столкнувшимся с совпадением хешей, это я ещё только осваивал гит и был очень рад сложившимся обстоятельствам. 😏
Anonymous
Почему пользователям? От удачно проведённой атаки, sha-1 не будет "коллизиться"через коммит. Да и мне sha-1 нравится. Назовут чексуммой и дальше будут использовать.
Anonymous
А что вышло? Просто тихо ничего не сработало?
igo
but since it [sha1 hash] matches an old object, a new object won't be created, and the commit-or-index ends up pointing to the _old_ object.ага.
igo
я вроде просто потом пару пробелов в код добавил или пустую строку в конец файла, и нормально, зашло. но я долго не понимал проблемы.
Anonymous
Очень, очень счастливый человек.
Max
раньше наверное коллизии чаще были
Max
потому что я тоже в самом начале натыкался, а потом много лет не вижу такого
Max
может раньше он как-то иначе считался, или ошибки какие-то были, хз
Anonymous
Из того, что я помню, были коллизии в аббревиатурах (укорочённых хешах)
Anonymous
Вроде дефолт был равен 7 и это не конфигурилось никак
Anonymous
Подвижки в вычислении нужного числа символов в укорочённых хешах до сих пор есть. Кому интересно, можно посмотреть https://github.com/git/git/commit/e6c587c733b4634030b353f4024794b08bc86892