All streams
Search
Write a publication
Pull to refresh
55
0
Variable name @kahi4

Database administrator

Send message

Пару заметок:

хорошо у вас развиты soft skills

С одной стороны тут абсолютно все помешаны на логических тестов и стоит потренироваться проходить как выбирать один из пяти квадратиков (вы с этим не раз столкнетесь, но это бесполезный скилл, который, вдобавок, еще и неплохо тренируется), с другой -- сейчас не модно говорить soft skills и вообще грубо, на их место пришел cultural fit.

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

почему вы хотите переехать в Швецию

Шведы достаточно понимающие люди, в текущей позиции можно говорить прямо.

Как правило, в качестве задания на проверку дается технический кейс, на реализацию которого отведено ограниченное количество времени (например, 1 неделя).

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

Рабочие визы в Швеции действительно дают быстро, да и бумажек особо не просят (даже не нужна справка о несудимости). Но сразу подавайте на всех, с кем едите, в противном случае привезти супруга будет очень очень долго. К слову: не обязательно быть официальным супругом, есть варианты с документами, подтверждающими что вы проживаете вместе больше года и вместе путешествовали.

Ну и главное:

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

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

Вообще подобные рассказы начинают с "а зачем это вообще нужно?".

Попробуем улучшить статью: зачем? Ну хранили бы пароль и хватит. Оказывается, что мы не хотим чтобы в случае утечки кто-то получил все пароли, отсюда нам нужно преобразовывать пароль каким-то образом в белиберду чтобы нельзя было преобразовать обратно. Функцию, которая преобразовывает одно множество в другое без возможности преобразования обратно и принято называть хеш-функцией. Самая простая: f(x) = 1. попробуй преобразовать обратно.

Но теперь у нас новая проблема: любой пароль даст ту же единицу и, соответственно, быстро подберется. Т.е. нам нужна функция, которая преобразует входную строку с минимум конфликтов, особенно для малых изменений (пароли, условно, находятся в пределах 20 символов и много похожих).

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

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

Но, как мы заметили, если хотя бы немного изменить входное значение (пароль) - выход поменяется значительно. Таким образом мы можем дописывать какое-то значение, которое не хранится в базе данных, к каждому паролю, тогда пароли, которые дают конфликты с теми, что мы украли из базы данных, нам не помогут - если ему дописать такую же соль - результат будет уже значительно другой и пароль уже не подойдёт (это ещё одно требование к криптостойкой хеш функции - "абсорбция" не должна выполняться, т.е. F(A) = F(B), но F(A+C) !== F(B+C)). Вот такое не хранимое в бд значение и называется солью.

Осталось только выяснить что делать если соль утеряна или утекла...

Нужен ли матан чтобы написать такую хеш функцию? Естественно. Нужно ли самому придумывать такую функцию? Нет. Любое статистическое отклонение позволит значительно упростить перебор, и задача разработки такой функции требует огромный математический опыт и багаж.

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

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

Странно что это делают авиакомпании, а не Боинг и FAA. Что-то мне подсказывает, что проблема не техническая, а кто-то просто хочет продавать вайфай на борту или что-то в этом духе. (Да, когда люди ждут очереди на взлёт, а единственная связь - это вайфай за деньги или премиум класс это вдруг обретает смысл)

Вот да. Что будет если кто-нибудь зальёт, например, фильм? Будет трактоваться как торрент и письмо счастья прилетит всем, кому не повезло и его нода так же решила пировать этот фильм? И как его забанить в местном поиске? И, если есть центральная ручка бана, кто судьи то?

Ох, простите, просмотрел.

Интересно. Но команда Реакта так же работает над чем-то похожим, советую ознакомиться с server side components

Возьмём http запрос на html файл: первые символы фиксированны, где-то в теле должно быть <!DOCTYPE html/>, <body> И пару других заранее известных строк. Если файл (точнее ответ с статусом, заголовками, кукакими и контентом) будет больше чем ключ в виде N случайных чисел - перебор до смешного прост.

Дальше, передать ключ из 2048 * 4 байт та ещё задача, ещё большей задачей является генерация этих чисел, все ГПСЧ обладают предсказуемостью и уже исходя из небольшого количества первых заранее известных строк уже вскрывается весь ключ. Даже если вы солите каждый раунд случайного числа, статистически все еще есть 0.001 вероятность выпадения числа А, когда у других - 0.0000001. Но, допустим, у вас совсем совсем крипкостойкий случайный алгоритм.

Определить длину ключа по известному файлу тоже не сложно. Благо, плюс, в отличие от степени, вычисляется очень быстро, перебирать на той же видеокарте просто. (Это к тому зачем степень нужна). Мы опираемся на факт что узнав одно число, мы вскрываем его сразу для всех букв по индексу [k*N], где N - длина ключа. А вот mod не позволяет узнать оригинальное число, ой… вот он зачем?

К слову, он не только затем чтобы было сложнее получить оригинальное число всего по одному совпадению, но ещё чтобы перекрыть вот такую странную вещь:

Вы написали

В диапазоне миллиарда

Мне не нужно проверять миллиард. Я знаю что английские буквы поместятся в 7 бит, так что мне достаточно проверить 128 чисел от s до s+128, где s - зашифрованное число. В итоге у нас уже нужно перебрать просто смешное количество вариантов, каждый из которых - сумма. Хуже того, это мгновенно открывает длину ключа, потому что я могу сделать s mod 128 и получить порядок чисел дальше просто посмотреть когда он начинает повторяться. Да мне даже http / html знать не нужно, да даже не только английский, а все языки на все, это все равно 16 бит на символ, это уже не миллиарды опций на перебор, в всего 64 тысячи.

Но да, если текст передан только один раз и он короче ключа - это сработает, но тогда проще сразу текст передать, чем сам ключ.

PS я абсолютно ничего не понимаю в криптографии, но уже способен сказать что ваш шифр ещё хуже чем шифр Виженера, представьте что профессионал сделает.

useMemo не подойдёт в данном случае, потому что в будущем он может сбросить состояние в любой момент и пересоздать объект, см документацию

Но, как заметили выше, не очень понятно зачем это нужно. Какая-то хитрая альтернатива HOC? Как по мне, так это только затрудняет чтение кода, потому что нужно будет просматривать больше кода чтобы понять откуда появился пропс, когда можно было просто сделать что-то типа:

вместо
const ComponentWithRouterProps = useCurry(Component, routerProps);

делать
const routerProps = useRouter();

return <Component {...routerProps} />

Или, раз уж компоненту нужен роутер, просто делать useRouter внутри, при необходимости делать разделение через контексты. Это если про переиспользование кода.

Если ответ: для упрощения тестирования, то ИМХО HOC контейнеры гораздо проще в написании, проще в тестировании, и проще в переиспользовании.

Заголовок и сама статья вводят в заблуждение, создавая ощущение что в Java нельзя писать асинхронные запросы, а в js писать многопоточно плохо-плохо. И первое, и второе - не так.

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

А теперь вбейте инпут, удалите город из списка, а потом нажмите add.

Но согласен, что пример не самый удачный

Я как-то озадачился измерением со2 и купил за 40 евро готовый прибор. Он показал 2500 ppm. В лесу. После дождя.

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

Поддерживаю. Вообще, судя по графикам из этой статьи, m1pro должен быть совсем ничего быстрее i7-10700k, но на практике у меня м1про запускает тесты, билдит Вебпак сборку, ставит зависимости и собирает нативную версию минимум в два раза быстрее (причём у i7-10700k была фора в виде tmpf).

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

Да я знаю. Но мы не работаем на американский регион, а если это американский экспат в Европе - мы далеко не первые кто ему не даст вводить буквами. Но, может, и расширим в будущем.

Мы не требуем формата и вводить можно со скобками, пробелами и тире (буквы нельзя, но это было бы уже слишком). Но мы вынуждены валидировать что он верный, иначе мы не сможем отправлять смс автоматически, а для нас это критично.

Но валидация внутри вычищает мусор, и используем библиотеку гугла, которая ест все номера, включая разрешённые региональные (и правильно восстанавливает страну по ним). Пока не нашли лучшего способа.

Был и остаюсь уверенным, что стандартный и единственно верный способ разбирать номер телефона - https://github.com/google/libphonenumber

Все остальное очень быстро перестаёт работать, как только появляются новые регионы, потому что правила формирования региональных (коротких) номеров мягко говоря случайно и не предсказуемо, но часто люди привыкают к ним достаточно сильно

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

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

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

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

Есть, к слову, странный способ обойтись без прокси, но требует, мягко говоря, значительных телодвижений, вплоть до целой архитектуры, заточенной под эти изменения. В целом я говорю про первый ангулар, он же нынче angularjs, в котором есть специфичный digest цикл. Суть в том, что все изменения над объектом должны проводиться только внутри специальной функции (в случае с ангуларом все хендлеры и методы были автоматически обёрнуты в этот цикл), которая после завершения всех операций, сравнивает предыдущее состояние объекта и новое и, таким образом, определяет какие поля поменялись. Если вы поменяете поле два раза и более внутри одного цикла, обработчик сработает только раз, и вообще не сработает если вы поменяете его обратно на значение с которого начинали.

Звучит как безумие, но тот же redux не то чтобы далеко ушёл от этой идеи.

Во втором+ ангуларе используются «зоны» (zone.js) для этого, но не уверен как они работают, так что ничего утверждать не буду.

Information

Rating
Does not participate
Date of birth
Registered
Activity