В статье разбираются ситуации, когда операции над вещественными числами с плавающей двоичной точкой (типы float и double в C#) дают результаты, отличные от ожидаемых интуитивно. Подробно разобраны причины этих отличий, приведены примеры, когда результат получается разный в .NET и .NET Framework или изменяется при переключении между конфигурациями Debug и Release, а также между x86 и x64. Даны общие сведения о стандарте IEEE 754 и особенностях этого стандарта, приводящих к названным эффектам. Объяснены принципиальные различия между .NET и .NET Framework в части операций с вещественными числами.
software engineer & geographer
Своя криптосистема с открытым ключом. Задача о рюкзаке. Часть I — пакет
Все мы знаем популярную задачу о рюкзаке. Все мы также знаем, что такое асимметричное шифрование и для чего оно используется. А если не знаете - то вот и повод узнать, потому что в этой статье мы попытаемся на основе задачи о рюкзаке написать свою систему шифрования с открытым ключом на C#. Основную логику криптосистемы спрячем в отдельный NuGet-пакет, который затем используем для написания собственного простого web-сервера (тоже на C#, конкретней на ASP.NET Core) с БД. Этот сервер будет представлять собой мессенджер, где пользователи смогут регистрироваться и посылать друг другу сообщения, а также проверять свою почту на наличие оных. Собственная система шифрования позволит нам обмениваться информацией между клиентами и сервером, а в случае перехвата противник не сможет её дешифровать (или, по крайней мере, сможет, но не сразу).
Здесь вы найдёте простой пример своей криптосистемы, основанной на известной задаче. Для тех, кто не знает, что такое криптосистемы с открытым ключом, эта статья - шанс потрогать их руками. Пристёгивайтесь, будет жарко.
Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни
На Хабре рассказывали про «чак норрисов» от программирования, таких как Линус Торвальдс, Фабрис Беллар и Джефф Дин. Конечно, есть и другие феноменальные таланты, их много. Зачастую эти люди далеки от публичности, никогда не давали интервью и известны только по никам. Но их объединяет одно — выдающиеся индивидуальные разработки, которые разрывают шаблон и выделяются из общей массы.
Мы собирали этот список несколько лет. Начнём с последних строчек своебразного хит-парада… Знакомьтесь — Джастин Танни (Justine Tunney), хакерша и гений системного программирования.
О Thread и ThreadPool в .NET подробно (часть 1)
Эта текст покрывает ответы на некоторые совсем базовые вопросы и вместе с тем сразу погружает в проблематику получения ответа на вопрос: "как работать лучше? однопоточно, многопоточно или многопоточно, но на ThreadPool?". Ответ на этот вопрос может изначально показаться очень простым и понятным, однако реальность совершенно иная: всё как и везде сильно зависит от ситуации: от типа задачи, от её размера, от прочих условий, которые так просто в голову сами собой не придут.
А потому мы пройдёмся в первую очередь по IO-/CPU-bound операциям, стоимости создания потока, базовым основам работы пула потоков (но только основы), а далее -- углубимся в анализ чёрного ящика: от чего зависит производительность пула потоков? Каков объём работы приемлим для того чтобы в него планировать?
Закончим мы главу несколькими, возможно, пугающими выводами об объемах работы, приемлимой для того чтобы обеспечить производительную работу приложения на пуле потоков.
Также отмечу, что материал постепенно переходит от начального уровня сложности 🥤 через ⚠️ средний уровень к ☠️ высокому, о чём вы сможете узнать по пиктограммам.
Нет, Open Source не означает «бесплатная поддержка»
Примерно такие диалоги периодически возникают у меня с пользователями, отвлекая от гораздо более важных вещей:
Юзер: Здравствуйте, хочу зарепортить баг в вашей программе. Я: Отлично! Для этого откройте тикет, пожалуйста. Юзер: Но тикеты вроде входят в платный пакет? Я: И? Юзер: Просто хочу сказать, что ваша программа сломана, чтобы вы могли починить её. Я: Да, с вашей стороны это запрос на поддержку. Пожалуйста, откройте тикет. Юзер: …бл%$#%$...
Обращение к Javascript-сообществу: перестаньте писать квадраты
Пост про то, почему стоит, как минимум избегать квадратичной сложности в тех местах, где на это нет никаких причин. Если вы широко используете .concat
в .reduce
эта статья для вас. В ней я попытаюсь разобрать на пальцах почему это может быть очень плохим решением, и как это исправить.
Самый беззащитный — уже не Сапсан. Всё оказалось куда хуже…
Под катом мои комментарии на некоторые тезисы.
{/UPD}
Больше года назад хабравчанин keklick1337 опубликовал свой единственный пост «Самый беззащитный — это Сапсан» в котором рассказывает как он без серьёзных ухищрений получил доступ ко внутренней сети РЖД через WiFi Сапсана.
В ОАО «РЖД» прокомментировали результаты этого расследования. «Есть результаты проверки. Почему удалось взломать? Наверное, потому, что злоумышленник. Наверное, из-за этого… Ну, он из „фана“. Юный натуралист. Там уязвимостей, которые бы влияли на утечку каких-то критических данных, нет. Мультимедийный портал „Сапсанов“ функционирует как положено и не нуждается в доработке», — заявил Евгений Чаркин.
То есть вместо того, чтобы выразить благодарность за обнаруженную уязвимость, автора обозвали «злоумышленником» и «Юным натуралистом».
К сожалению, но специалисты РЖД, начиная с директора по информационным технологиям, отнеслись к статье очень пренебрежительно, проигнорировав важное указание автора:
Также оттуда в сеть РЖД есть впн. Если захотите — найдёте её там сами.
И вот, год спустя я попал в сеть РЖД даже не садясь в Сапсан.
Видимо, только этот котэ добросовестно охраняет вокзал.
Как именно я попал в сеть РЖД с пруфами, чего не сделал директор по информационным технологиям ОАО «РЖД» Чаркин Евгений Игоревич и возможные последствия — под катом.
Скоро будет самая беззащитная страна. Системный взгляд на проблемы информационной безопасности в России
Вчера @LMonoceros опубликовал пост с более чем 1000 плюсами. Подобных горячих ИБ статей и на Хабре и на других ресурсах я за свои 13 лет в ИБ видел немало.
Но меня привлекло вот это:
Скрин сделан на момент 21-15 по московскому времени 13.01.2020.
Поразительно! 1002 плюса и ни одного минуса. НИ ОДНОГО!
С точки зрения критического мышления тут либо "консенсус широких масс", либо Хабр взломали.
Я верю в первое.
Это значит массы готовы; и пора думать: как системно решать проблемы ИБ в нашей стране?
Лично у меня нет желания уезжать куда-либо, собираюсь растить своих детей у нас; поэтому мне далеко не всё равно чем всё это закончится. Огромное количество компаний, таких как РЖД, кладут болт на ИБ и… их не клюёт "жареный петух".
25 лучших репозиториев GitHub для разработчиков Python
О 30-кратном увеличении параллелизма в Node.js
У нас запущено 4000 контейнеров Node (или «воркеров»), обеспечивающих работу нашего сервиса интеграции с банками. Сервис изначально был спроектирован так, что каждый воркер был рассчитан на обработку только одного запроса за раз. Это снижало воздействие на систему тех операций, которые могли неожиданно заблокировать цикл событий и позволяло нам игнорировать различия в использовании ресурсов различными подобными операциями. Но, так как наши мощности были ограничены одновременным выполнением лишь 4000 запросов, система не могла достойно масштабироваться. Скорость выдачи ответов на большинство запросов зависела не от мощности оборудования, а от возможностей сети. Поэтому мы могли бы улучшить систему и снизить стоимость её поддержки в том случае, если бы нашли способ надёжной параллельной обработки запросов.
Занявшись исследованием этого вопроса, мы не смогли найти хорошего руководства, в котором речь шла бы о переходе от «отсутствия параллелизма» в сервисе Node.js к «высокому уровню параллелизма». В результате мы разработали собственную стратегию перехода, которая была основана на тщательном планировании, на хороших инструментах, на средствах мониторинга и на здоровой дозе отладки. В итоге нам удалось повысить уровень параллелизма нашей системы в 30 раз. Это эквивалентно снижению затрат на поддержку системы примерно на 300 тысяч долларов в год.
Данный материал посвящён рассказу о том, как мы увеличили производительность и эффективность наших Node.js-воркеров, и о том, что мы узнали, пройдя этот путь.
Эксперименты с нейронными сетями на данных сейсморазведки
Данная статья описывает эксперимент по анализу применимости нейронных сетей для автоматизации выделения геологических слоев на 2D-изображениях на примере полностью размеченных данных из акватории Северного моря.
Рисунок 1. Проведение акваториальной сейсморазведки (источник)
Что такое *args и **kwargs в Python?
Это — основы. Это то, что помогает людям понимать окружающий мир. Но утверждение «количество параметров равно количеству аргументов» закладывает в голову новичка бомбу замедленного действия, которая срабатывает после того, как он увидит в объявлении функции таинственные конструкции
*args
или **kwargs
.Не позволяйте всяким значкам загонять себя в ступор. Тут нет ничего архисложного. В общем-то, если эти конструкции вам незнакомы — предлагаю с ними разобраться.
Отслеживаем прогресс выполнения в Python
Зачем нужны индикаторы прогресса?
Индикаторы прогресса (progress bar) — визуальное отображение процесса работы. Они избавляют нас от необходимости беспокоиться о том, не завис ли скрипт, дают интуитивное представление о скорости его выполнения и подсказывают, сколько времени осталось до завершения.
Человек ранее не использовавший индикаторы прогресса может предположить, что их внедрение может сильно усложнить код. К счастью, это не так. Небольшие примеры ниже покажут, как быстро и просто начать отслеживать прогресс в консоли или в интерфейсе быстро набирающей популярность графической библиотеки PySimpleGUI.
Проблемы основных паттернов создания data-driven apps на React.JS
Для создания интерфейсов React рекомендует использовать композицию и библиотеки по управлению состоянием (state management libraries) для построения иерархий компонентов. Однако при сложных паттернах композиции появляются проблемы:
- Нужно излишне структурировать дочерние элементы
- Или передавать их в качестве пропсов, что усложняет читабельность, семантичность и структуру кода
Для большинства разработчиков проблема может быть неочевидна, и они перекидывают ее на уровень управления состоянием. Это обсуждается и в документации React:
Заметка о void в JavaScript и TypeScript
void
. Это — тип, использование которого сообщает программисту о том, что соответствующие функции и методы при их вызове ничего не возвращают.Сущность
void
имеется также в JavaScript и TypeScript. В JS это — оператор. В TS это примитивный тип данных. И там и там void
ведёт себя не так, как могли бы ожидать многие из тех, кто сталкивался с void
в других языках.Как работает альфа-композитинг
Возможно, прозрачность не кажется какой-то интересной темой. Формат GIF, позволявший некоторым пикселям просвечивать сквозь фон, опубликован более 30 лет назад. Почти в каждом приложении для графического дизайна, выпущенном за последние два десятка лет, поддерживается создание полупрозрачного контента. Эти понятия давно перестали быть чем-то новым.
В своей статье я хочу показать, что на самом деле прозрачность в цифровых изображениях намного интереснее, чем кажется — в том, что мы воспринимаем как нечто само собой разумеющееся, есть невидимая глубина и красота.
I. Дезадаптации. II. СДВГ или ленивый придурок?
Напоминание: СДВГ, тем более в выраженной форме, обостряет многие когнитивные искажения. У таких пациентов, как я, выпукло проявляется эффект Даннинга-Крюгера. Переходящая все границы небрежность компрометирует факты и источники информации, а сниженный интеллект при полном отсутствии внимания к значимым деталям ставит под сомнение выводы и обобщения.
Ответ — нет! Вы не ленивый придурок, если задаете себе такой вопрос. Вы “счастливый” обладатель одного или нескольких сразу дезадаптивных механизмов, реализованных вашим мозгом, в результате чего блокируются некоторые поведенческие выходы.
Психотерапия. Марс в доме Сатурна и интрацеребральные инъекции гомеопатического псилоцибина
Обычно я начинаю каждую свою статью с такого Предупреждения: Данная статья написана не квалифицированным врачом-психиатром, а пациентом с тяжелой патологией.
Напоминание: СДВГ, тем более в такой сильно выраженной форме, обостряет многие когнитивные искажения. У таких пациентов, как я, выпукло проявляется эффект Даннинга-Крюгера. Переходящая все границы небрежность компрометирует факты и источники информации, а сниженный интеллект при полном отсутствии внимания к значимым деталям ставит под сомнение выводы и обобщения.
Но сейчас не буду. У многих психологов может подгореть. Но я начну:
Осторожно доктор
Это ответ на неожиданную статью на Хабре психиатра с тридцатипятилетним стажем Александра Геннадьевича Данилина, также довольно известного youtube влогера. До его статьи на Хабре я не обращал на его творчество внимания, как выяснилось, зря.
Но сначала короткое предисловие.
Для меня психиатрия болезненная и личная история. К сожалению, это очень специфичная область медицины, в которой эзотерика и мракобесие очень успешно сопротивляются научному знанию. Дело в том, что доказательной медицине вообще чуть более тридцати лет. И медицинское сообщество только сейчас с кровавой рвотой исторгает из себя всякую гомеопатию. В психиатрии же ввиду объективных факторов процесс идет тяжелее всего. Эта область все еще является заповедником для шарлатанов, невежд, идиотов и фриков от науки со своими особыми трактовками и истинами, почерпнутыми из “философских размышлений”. Революция в нейронауках, в частности, в психологии и психиатрии происходит прямо сейчас. Увы, не для всех.
К не слишком компетентным, но придерживающимся стандартных программ и методик лечения психиатрам, я отношусь довольно холодно. Тем не менее, они делают то, чему их научили. Как правило, это позволяет им вывести пациента из острого психотического состояния. Ну, а дальше у него по крайней мере будет шанс. Возможно, в будущем разработают лучшие методики, будут лучше лечить. Но вот фрики, выковыривающие свои антинаучные гипотезы из известного места и применяющие их при лечении тяжелых пациентов, вызывают во мне острое нестерпимое желание жечь, жечь, жечь в драконьем пламени. Я слишком хорошо знаю, к чему приводит их невежество.
Я был в этом аду, я в нем горел.
Зубы мудрости: удалить нельзя оставить
Уважаемые друзья, сегодня я предлагаю вам поговорить о зубах мудрости. Причём, поговорить о самом сложном и самом непонятном — показаниям к их удалению.
Издавна с восьмёрками (третьими молярами или «зубами мудрости») связано очень много анекдотов, суеверий, легенд и историй, в том числе весьма страшных. И распространена вся эта мифология не только среди обычных людей, но и в медицинском сообществе. Постепенно, в ходе обсуждения, я попробую их развенчать и показать, что зубы мудрости — не такая уж проблема, как в плане диагностики, так и в плане удаления. Тем более, если речь идёт о современном докторе и современной клинике.
Information
- Rating
- Does not participate
- Location
- Беларусь
- Date of birth
- Registered
- Activity