Pull to refresh
27
0
Maksim @MuLLtiQ

Software engineer

Send message

Rust и парадокс Блаба

Reading time11 min
Views33K

Несколько недель назад я наткнулся на сравнительный анализ Rust, D и Go от Андрея Александреску. Андрей, уважаемый член сообщества C++ и главный разработчик языка программирования D, нанес Rust сокрушительный удар под конец своего повествования, высказав нечто, что выглядит довольно проницательным наблюдением:



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



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

Читать дальше →

Метод Санделиуса для получения случайных перестановок

Reading time4 min
Views16K
Статьи о получении (псевдо)случайных чисел, о проверке качества полученных последовательностей неизменно вызывают интерес у населения Хабра.

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

Метод описанный ниже предложен Санделиусом (М. Sandelius) еще в 1962 г. в работе [1].

Читать дальше →

Микросервисные паттерны проектирования

Reading time6 min
Views99K
Здравствуйте, Хабр!

В ближайшее время читайте пост о русском переводе долгожданной книги "Создание Микросервисов" Сэма Ньюмена, которая уже отправилась в магазины. Пока же мы предлагаем почитать перевод статьи Аруна Гупты, автор которой описывает самые интересные паттерны проектирования, применимые в микросервисной архитектуре
Читать дальше →

Ваше проектирование – отстой

Reading time5 min
Views33K
… но это нормально. Любое проектирование отстой. И всегда будет отстоем.

Если вы мне не верите, давайте объясню…

Ни один проект не переживает встречи с реализацией


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

Данные, которые вы ожидали как обязательные в ответе внешнего сервиса, могут отсутствовать (или быть невалидными). Ожидаемая уникальность может оказаться совсем не уникальной на практике (даже в sha1 когда-нибудь случаются коллизии). Процессы, которые предполагались надежными, будут падать гораздо чаще, чем вы ожидали.

Это нормально.

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

Недостающие данные могут быть сделаны опциональными или заменены умолчальными.

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

Ограничение уникальности можно
Читать дальше →

15-летие Википедии: интересные факты, события прошлого года и торт от Роскомнадзора

Reading time3 min
Views14K

Торт для «Википедии» от Роскомнадзора в честь 15-летия ресурса

16 января одному из наиболее известных интернет-ресурсов мира исполнилось 15 лет. Да, время бежит быстро — казалось, только недавно все мы стали пользоваться интернет-энциклопедией, а энциклопедии уже много лет. Как известно, основан ресурс Джимми Уэйлсом и Ларри Сэнгером, финансистом и философом.

По словам основателей, Википедия является не просто сайтом, а «символом эпохи взаимодействия, в которую мы живём, и это не просто инструмент, это воплощение мечты, столь же древней, как человеческий интеллект и собрания Александрийской библиотеки».
Читать дальше →

Лучшая подарочная книга для начитанных фанатов JavaScript

Reading time11 min
Views27K
Здравствуйте, уважаемые хаброжители!

Мы вынашиваем амбициозные планы по изданию вот такой книги:



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

Приятного чтения, и поучаствуйте пожалуйста в опросе!
Читать дальше →

В клиенте OpenSSH обнаружена серьёзная уязвимость CVE-2016-0777

Reading time2 min
Views40K

Сегодня стало известно о новой уязвимости в клиенте OpenSSH получившей идентификаторы CVE-2016-0777 и CVE-2016-0778. Ей подвержены все версии программы от 5.4 до 7.1.

Обнаруженный баг позволяет осуществить атаку, приводящую к утечке приватного ключа. Аутентификация ключа сервера предотвращает атаку типа man-in-the-middle, так что злоумышленникам понадобится сначала получить доступ к машине, на которую вы пытаетесь зайти. Хотя, при подключении к машине впервые, не сверяя ключ, MITM возможен.

До тех пор пока вы не обновите уязвимые системы рекомендуется использовать следующий фикс:
echo -e 'Host *\nUseRoaming no' >> /etc/ssh/ssh_config

Обновления для различных ОС уже выходят, в том числе выпущена portable версия OpenSSH 7.1p2.

Клиент OpenSSH версий от 5.4 до 7.1 содержит код экспериментальной функции «roaming», позволяющей продолжать сессии. Серверная часть этой функциональности никогда не была опубликована, но существующий код клиента уязвим — злоумышленники могут получить часть памяти клиентской машины, содержащую приватный ключ. По умолчанию эта функция включена, поэтому узявимость достаточно серьёзна.
Читать дальше →

Почему ваш любимый мессенджер должен умереть

Reading time18 min
Views329K
image
Кладбище мессенджеров, на котором обязательно должны оказаться Skype, Viber, WhatsApp, Hangouts, ooVoo, Apple iMessage, Telegram, Line, Facebook messenger и еще сотни мессенджеров, которым только предстоит выйти в ближайшее время.

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

Последние годы конкуренция на рынке мессенджеров как никогда высока. Доступный интернет у каждого в смартфоне позволил мессенджерам стать самыми часто используемыми приложениями. Только ленивый сейчас не пишет свой мессенджер. Каждый день выходит новое приложение, обещающее совершить революцию в способах коммуникации. Доходит даже до абсурда вроде приложения Yo, позволяющего слать друг другу только одно слово.
У каждого мессенджера есть своя аудитория, агитирующая пользоваться именно их любимым сервисом. В итоге приходится заводить кучу учетных записей в различных сервисах и устанавливать кучу приложений, чтобы иметь возможность оперативно связаться со всеми необходимыми людьми.

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

image

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


Читать дальше →

Да вы задолбали своим информационным обществом

Reading time11 min
Views66K

Диск с музыкой. Работает почти как AudioCD.

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

Спускаемся ниже по истории. Что было до этого? Факс. Он был аналогом современной электронной почты: сообщение передавалось мгновенно, вылезало из устройства и было готово к прочтению.

Идём глубже. Факса и телефона теперь тоже нет. Вы отправляете телеграмму. Как раз серьёзные телеграфные узлы были вытеснены с бэкбона телефонами. Биржи узнавали новости телеграммами. Британские журналисты из самых далёких концов света сообщали данные телетайпом. Вы могли вызвать любого человека на встречу телеграммой, которую бы отнёс специальный пацан на ваш почтовый коммутатор, а потом второй пацан – от другого локального коммутатора до адресата. Почти как сотовая сеть, только пинг больше.

Продолжаем путешествие. Отключаем электричество, появляются первые лаги, поначалу незаметные. Вот в Праге работает полноценная пневмопочта. Написали пером письмо, просушили песком и промокательной бумагой, положили в специальную капсулу. Вжух! Капсула полетела на другой конец города. Кстати, если выколупать оптику из магистрали, можно будет устроить пневмопочту в защитной трубке, так что частично обратная совместимость сохранена.
Читать дальше →

Что такое RESTful на самом деле

Reading time8 min
Views239K
А ваше приложение — RESTful? Чтобы ответить на этот вопрос нужно сначала разобраться что такое RESTful. Бытует мнение, что отдавать правильные коды ответов в HTTP — это уже RESTful. Или делать правильные идемпотентные HTTP-запросы — это вообще очень RESTful. Мы в Хекслете сделали практический курс по протоколу HTTP (отличия версий, отправка форм, аутентификация, куки и пр.), и в нем мы стараемся рассказать о правильном использовании запросов, но нужно понимать, что RESTful это не про HTTP, это вообще не про протоколы интернета. Современный веб и взаимодействие между браузером и сервером с помощью HTTP и URI могут удовлетворять принципам RESTful, а могут и не удовлетворять.

В сегодняшнем переводе — простое и понятное описание RESTful, и какой должна быть система, чтобы ее можно было так называть.

Читать дальше →

Инструменты для взлома, мелькавшие в сериале Mr Robot

Reading time3 min
Views134K
image

Всё время, пока в Голливуде снимали фильмы про хакеров, самым популярным инструментом для «взлома» была утилита nmap. Когда продюсеры фильма пытались добавить немного реалистичности, на экране компьютеров мелькал вывод nmap. Вроде бы первой отличилась Тринити из фильма «Матрица». Также эта утилита появлялась в Elysium, The Bourne Ultimatum, Die Hard 4 и других киношках.

image

Первый сезон Mr Robot получил одобрение от специалистов по безопасности за попытки реалистичного показа работы хакеров. В показанных эпизодах хакеры общались через IRC, использовали виртуальные машины Linux, а главный герой ходил в толстовке с капюшоном. Естественно, поскольку это телешоу, создателям пришлось проявить толику творчества. И пока им удаётся сохранять неплохой баланс между повествованием и реальными техническими возможностями.

Кратко рассмотрим увиденные нами в сериале средства для взлома.

Kali Linux


image

Несколько раз можно видеть использование дистрибутива Kali Linux – операционки, изначально снабжённой инструментами для проникновения и тестирования безопасности систем. Если вам интересна тема сетевой безопасности – скачивайте её себе и начинайте пробовать. Естественно, только в учебных целях. Не взламывайте чужие компьютеры – это незаконно!
Читать дальше →

Убийцы оптимизации

Reading time9 min
Views43K
image

В этом посте изложены советы, как не написать код, производительность которого окажется гораздо ниже ожидаемой. Особенно это касается ситуаций, когда движок V8 (используемый в Node.js, Opera, Chromium и т. д.) отказывается оптимизировать какие-то функции.
Читать дальше →

Решение головоломки Галакуб на Питоне

Reading time9 min
Views32K
На новый год купил племяннику головоломку Галакуб. Задача собрать из разных деталей куб размером 4х4х4. Суммарный объём деталей, как раз, 4х4х4. Прежде, чем дарить надо было собрать головоломку. Красивое симметричное решение нашлось достаточно быстро. Но стало интересно единственное это решение или нет. Интуиция подсказывала, что единственное, но хотелось проверить.


Я решил по-быстрому запилить скрипт для перебора всех вариантов. В идеале нужно было успеть до новогодней речи Путина. Ситуация усугублялась тем, что код писался на Макбуке моих родителей. Поставить на него какие-то библиотеки — это задача покруче, чем написать саму программу.

Код получился на удивление красивый и понятный. Его удобно объяснять. Может быть, текст будет полезен, например, изучающим Питон.
Читать дальше →

Создание функции на Rust, которая принимает String или &str

Reading time3 min
Views11K

От переводчика


КДПВСтатья — одна из серии постов, рассказывающих об использовании некоторых полезных библиотечных типажей и связанных с ними идиом Rust на примере строковых типов данных. Информация бесспорно полезная как для начинающих программистов на Rust, так и для тех, кто уже успел себя немного попробовать в этом языке, но ещё не совсем освоился с богатой библиотекой типажей. Оригинальный пост содержит несколько неточностей и опечаток в коде, которые я постарался исправить в процессе перевода, однако в общем и целом описанные подходы и мотивация правильные, подходящие под понятие «лучших практик», а потому заслуживают внимания.


В моём последнем посте (англ.) мы много говорили об использовании &str как предпочтительного типа для функций, принимающих строковые аргументы. Ближе к концу поста мы обсудили, когда лучше использовать String, а когда &str в структурах (struct). Хотя я думаю, что в целом совет хорош, но в некоторых случаях использование &str вместо String не оптимально. Для таких случаев нам понадобится другая стратегия.
Читать дальше →

Microsoft уведомит пользователей о state-sponsored кибератаках

Reading time2 min
Views8K
Компания Microsoft опубликовала у себя в блоге информацию о дополнительных мерах по обеспечению безопасности пользователей. Она будет сообщать своим пользователям о том, что их аккаунты Microsoft, включая, Outlook.com и OneDrive были скомпрометированы лицом или группой лиц, относящихся к state-sponsored кибергруппе.



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

Читать дальше →

Не стало Иэна Мёрдока, основателя Debian

Reading time3 min
Views28K
В понедельник, 28 декабря, скончался Иэн Мёрдок (Ian Murdock). Это человек, вклад которого в Open Source сообщество и в развитие всей ИТ отрасли сложно переоценить. Если вы пользуетесь Linux, то ваш дистрибутив, скорее всего, основан на Debian. Вторая половина названия — это Иэн, выпустивишй первый релиз дистрибутива в 1993-м году. (Первая половина — это Дебра, его девушка а затем жена.) А может быть, вам довелось работать с OpenSolaris? Это тоже во многом его заслуга. Ему было всего 42.
Читать дальше →

Ненормальное функциональное программирование на python

Reading time7 min
Views45K

После просмотра курса Programming Languages и прочтения Functional JavaScript захотелось повторить все эти крутые штуки в python. Часть вещей получилось сделать красиво и легко, остальное вышло страшным и непригодным для использования.

Статья включает в себя:
  • немного непонятных слов;
  • каррирование;
  • pattern matching;
  • рекурсия (включая хвостовую).


Статья рассчитана на python 3.3+.
Читать дальше →

Феномен инди-игры для Steam на миллион долларов

Reading time5 min
Views58K


В данной статье хотел поделиться своими наблюдениями по волнующем каждого инди-разработчика вопросу — «В чем секрет однопользовательских игр-миллионников?». В качестве объекта наблюдения мною выбрана относительно свежая игра – Undertale. Данная игра примечательна тем, что нарушает каноны общепринятой игровой индустрии и вызывает адскую зубную боль у «профессионалов», показывая такие финансовые результаты.
Читать дальше →

Проблемы при использовании Math.random()

Reading time18 min
Views46K
image

В английском есть такая аббревиатура — TIFU. Привести здесь её точное значение мы не можем, но вы без труда найдёте его в Сети. А после «литературной обработки» TIFU можно перевести как «сегодня я всё испортил». В контексте этого поста данная фраза относится к использованию функции Math.random() в JavaScript-движке V8. Хотя случилось это не сегодня, а пару лет назад. Да и дров я наломал не по своей вине, корень зла таится в самой этой функции.

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

Дональд Кнут, «Искусство программирования», том 2.

Надеюсь, что к концу этого поста вы согласитесь с двумя утверждениями:

  • Мы были идиотами, поскольку использовали генератор псевдослучайных чисел в V8, не понимая его ограничений. И если очень лень, то безопаснее использовать криптографически стойкие генераторы псевдослучайных чисел.
  • В V8 необходима новая реализация Math.random(). Работу текущего алгоритма, кочующего от одного программиста к другому, нельзя считать удовлетворительной из-за слабой, неочевидной деградации, часто встречающейся в реальных проектах.

Хочу подчеркнуть, что сам движок V8 — замечательный продукт и его создатели очень талантливы. Я ни в коей мере не обвиняю их. Просто эта ситуация иллюстрирует, насколько сильно влияют на процесс разработки даже небольшие нюансы.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity