Как стать автором
Обновить
72
0

Пользователь

Отправить сообщение

Thunderbird, RNP и важность хорошего API

Время на прочтение15 мин
Количество просмотров4K


Недавно мне довелось побеседовать с разработчиком Thunderbird о проектировании API. В ходе этой беседы я поделился соображениями о RNPновой реализации OpenPGP, которую Thunderbird недавно стал использовать вместо GnuPG.

Собеседник скептически отнесся к моему тезису о том, что API RNP нуждается в улучшении, и спросил, «разве это не субъективно – какие API лучше, а какие хуже?». Согласен, у нас нет хороших метрик для оценки API. Но не соглашусь, что мы в принципе не в силах судить об API.

На самом деле, подозреваю, что большинство опытных программистов узнают плохой API, если увидят его. Думаю, далее в этой статье получится разработать хорошую эвристику, которую я попытаюсь выстроить на моем собственном опыте работы с (и над) GnuPG, Sequoia и RNP. Затем я рассмотрю API RNP. К сожалению, этот API не только можно запросто использовать неправильно – он к тому же обманчив, поэтому пока его не следует использовать в контекстах, где принципиальная роль отводится соблюдению безопасности. Но целевая аудитория Thunderbird – это люди, известные своей уязвимостью, в частности, журналисты, активисты, юристы и их партнеры, отвечающие за коммуникацию; все эти люди нуждаются в защите. На мой взгляд, это означает, что в Thunderbird должны лишний раз подумать, стоит ли использовать RNP.
Читать дальше →

Переписывание сценария и производственный хаос: с какими проблемами столкнулись разработчики культовой BioShock Infinite

Время на прочтение9 мин
Количество просмотров8.4K
image

Сегодня стартуют продажи Press Reset — одной из самых ожидаемых книг, посвященных игровой индустрии. Её автор, известный журналист Джейсон Шрайер (“Кровь, пот и пиксели”), подробно анализирует те ситуации, которые приводили к закрытию успешных студий и знаменитых проектов. Издание Polygon опубликовало отрывок книги, посвященный обстоятельствам создания легендарной игры BioShock Infinite. Под катом — перевод публикации.
Читать дальше →

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Время на прочтение14 мин
Количество просмотров58K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →

Падение Slack 4 января 2021

Время на прочтение7 мин
Количество просмотров10K


4 января 2021 года для многих людей во всем мире, также как и для большинства работников Slack был первым рабочим днем после нового года (за исключением специалистов горячей линии и службы поддержки, которые никогда не спят). День в Азии и утро в Европе прошло спокойно, но когда забрезжил рассвет в Америке мы стали получать сообщения от внешней службы мониторинга о росте количества ошибок. Мы начали разбираться, в чем дело. Ситуация с ошибками ухудшалась и мы инициировали процесс расследования инцидентов (о том, как у нас устроено управление инцидентами подробнее можно почитать в статье Райана Каткова (Ryan Katkov) All Hands on Deck https://slack.engineering/all-hands-on-deck/).

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

Снупп Догг и «Голодные игры»: кто спасает книжную индустрию в период пандемии

Время на прочтение5 мин
Количество просмотров6.5K
image

Когда прошлой весной по всей Америке закрылись книжные магазины, глава издательства Chronicle Books Тирелл Махони готовилась, что вот-вот наступит полная катастрофа: доходы компании стремительно падали. А спустя несколько месяцев выяснилось, что от разорения компанию спас не кто иной, как рэпер Снупп Догг со своей поваренной книгой “From Crook to Cook”, изданной еще два года назад. В 2020 году продажи книги подскочили в два раза — до 205 000 экземпляров. Не “новинки”, а именно такие книги внезапно взяли на себя роль драйвера прибыли и в итоге дали книжной индустрии шанс выжить.
Читать дальше →

История советских ядов: состав, кто их разрабатывал и зачем

Время на прочтение15 мин
Количество просмотров37K

Яд — оружие женщин? Да, это оружие женщин, трусов и евнухов.

История разработки ядов и их использования окутаны ореолом мифов и легенд. Сейчас мы уже не можем досконально разобраться в устройстве токсинов, которые пускали в ход Александр Борджиа или чем пропитывала перчатки Екатерина Медичи.

Поэтому в этой статье будет краткая сводка советских разработок XX века — давайте без политики разберемся в том, что мы точно знаем про советские яды, их создателей, а также про местных Джеймсов Бондов, которые их использовали. А история там богатая.

Токсикологическая лаборатория 


Истоки


История советских ядов и секретных убийств при помощи отравлений неразрывно связана с одним учреждением. В далеком 1921 году Владимир Ленин основал строго засекреченную, токсикологическую лабораторию для «борьбы с врагами советской власти» (формулировка из Положения о лаборатории). Новосозданная организация получила нейтральное название «Специальный кабинет» и подчинялась непосредственно председателю Совета Народных Комиссаров (т.е. Ленину). В задачи входило изготовление и совершенствование ядов для убийства «врагов». Во время жизни и после смерти вождя пролетариата «кабинет» особо себя не проявил: работа велась дилетантски, к тому же Лубянка предпочитала более эффективные методы устранения неугодных. 


Генрих Ягода
Читать дальше →

Как самый недооценённый контрибьютор спасал язык Rust от смерти

Время на прочтение6 мин
Количество просмотров24K

Дэйв Херман, самый недооценённый контрибьютор Rust

Автор оригинала — Брайан Андерсон. Он тоже имеет отношение к работе над языком Rust. Понятно, что в своей статье он будет хвалить этот язык, но важнее другое: он раскрывает внутреннюю кухню проекта. Андерсон рассказывает про первые несколько лет работы над Rust в стенах компании Mozilla. Он хочет восстановить справедливость, вспомнив выдающегося, но скромного ментора и инженера, который во многом решил судьбу проекта. 

Я считаю, что язык Rust сейчас явно на подъёме. Вспоминаю, как много нужно было сделать правильно, чтобы достичь успеха. Команда неоднократно принимала судьбоносные решения, в которых не была полностью уверена. Каждое неверное решение могло привести проект к провалу. Иногда мы просто не знали правильный ответ. Но в каждой такой ситуации как будто происходило маленькое чудо, и проект двигался дальше. Конечно же, эти «чудеса» происходили не на пустом месте: нас выручала интуиция нескольких очень опытных профессионалов, которые горели проектом и действительно хотели создать что-то крутое.

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

Mozilla Research


К 2009 году Mozilla получила крупную сумму денег от прибыльной сделки с Google (он стал поисковиком по умолчанию в браузере Firefox). И, насколько я понял, именно в этот момент руководство Mozilla решило вложить деньги в новые проекты.
Читать дальше →

Математики во время Второй Мировой войны: интеллект важнее грубой силы

Время на прочтение10 мин
Количество просмотров28K


Математика — царица наук, она находит применение в физике, химии, географии… В том числе в вооруженных конфликтах. Ход иногда войн во многом определялся размером армии, технологиями, деньгами, природными и людскими ресурсами стран-участниц.

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

Математика в Гитлеровской Германии


В течение первых двух десятилетий 20-го века Германия была центром международного исследовательского сообщества в области математики. Во многом это заслуга Давида Гильберта, крупнейшего после смерти Анри Пуанкаре математика-универсала. Помимо вклада в самые разные области (теорию инвариантов, общую алгебру, математическую физику, интегральные уравнения, основания математики), Гильберт известен формулировкой списка из 23 математических проблем, который определил вектор развития математики в 20 веке. Гёттингенский университет, в котором помимо Гильберта, работали такие известные математики, как Феликс Клейн, Герман Минковский, Дирихле, Рихард Дедекинд стал математической меккой, продолжая традиции математической школы, заложенной Гауссом и Риманом.

Lisp для микроконтроллеров

Время на прочтение7 мин
Количество просмотров7.2K


Lisp для плат Arduino, Adafruit M0/M4, Micro:bit, ESP8266/32, RISC-V и Teensy 4.x.

Новость!


ARM версия 3.6b теперь поддерживает save-image (сохранение образа) на всех платах ATSAMD21 

В последнем релизе ARM uLisp, версия 3.6b, можно сохранять образ всего вашего рабочего пространства Lisp во флэш-память плат ATSAMD21, на которых не предоставляется отдельный чип DataFlash.

Таким образом, поддержка save-image добавляется к Adafruit Neo Trinkey, Adafruit Gemma M0, Adafruit Feather M0, Arduino Zero, Arduino MKRZero и Seeedstudio Xiao M0.

uLisp — это версия языка программирования Lisp, специально спроектированная для работы на микроконтроллерах с ограниченным объемом ОЗУ, от Arduino Uno на основе ATmega328 до Teensy 4.0/4.1. Независимо от платформы, можно использовать ровно одну и ту же программу на uLisp.

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

Кроме того, язык Lisp идеально подходит для изучения фундаментальных концепций программирования. В нем предусмотрена работа со строками, обработка списков и сборка мусора, а также этот язык отлично подходит для выражения сложных идей – например, научить робота выбираться из лабиринта или найти кратчайший путь на карте. uLisp не только поддерживает базовый набор функций Lisp, но и содержит расширения для Arduino, поэтому данный язык идеально подходит для управления Arduino.
Читать дальше →

30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 2

Время на прочтение6 мин
Количество просмотров16K


Первая часть интервью.

Распределенная система контроля версий Git


Дж.А.: Linux – только первая из ваших работ, глобально повлиявших на мир опенсорса. В 2005 году вы также создали Git, исключительно популярную распределенную систему контроля версий. Вы быстро перенесли дерево исходников ядра Linux из проприетарного хранилища Bitkeeper в новоиспеченный Git, который сделали опенсорсным, и в том же году передали поддержку Git Джунио Хамано. История этих событий увлекательна, расскажите, что побудило вас передать этот проект так быстро, и как вы нашли и выбрали Джунио? 

ЛТ: Итак, ответ на этот вопрос состоит из двух частей.


Во-первых, я совершенно не хотел создавать новую систему контроля исходников.  Linux был создан, так как мне очень интересен низкоуровневый интерфейс между аппаратным и программным обеспечением — в принципе, эта работа была выполнена из любви к предмету и личного интереса. Напротив, Git был создан из необходимости: не потому, что я интересуюсь контролем исходников, а потому что большинство имевшихся на тот момент систем контроля версий вызывали у меня подлинное отвращение, а та единственная, что показалась мне наиболее терпимой и при этом действительно весьма хорошо сочеталась с моделью разработки Linux (BitKeeper) стала несостоятельной.
Читать дальше →

Первое поколение компьютеров: от Древнего Рима до Второй Мировой

Время на прочтение15 мин
Количество просмотров77K


Лень — двигатель прогресса. Стремление человечества хотя бы частично автоматизировать свою деятельность всегда выливалось в различные изобретения. Математические вычисления и подсчеты также не избежали научного прогресса. Ещё в Древнем Риме местные «таксисты» использовали аналог современного таксометра — механическое устройство, которое определяло стоимость поездки в зависимости от длины маршрута. Время шло, и к середине прошлого века эволюция вычислительных систем привела к появлению нового типа устройств — компьютеров. Тогда, конечно, их так никто не называл. Для этого использовался другой термин — ЭВМ (электронно-вычислительная машина). Но время и прогресс стерли границы между этими определениями. Так как же прогресс дошел до первых ЭВМ и как они работали?

История развития


Арифмометр


Одно из главных событий в истории развития вычислительных систем является изобретение арифмометра. Арифмометр — это механическая вычислительная машина, предназначенная для выполнения алгебраических операций. Первая схема такого устройства датируется 1500 годом за авторством Леонардо да Винчи. Вокруг его схемы в 60-х годах 20 века возникло много споров. Доктор Роберто Гуателли, работавший в IBM с 1951 года по проекту воссоздания машин Леонардо да Винчи, в 1968 году создал копию счетной машины по эскизам 16-го века.
Читать дальше →

Как звезда бейсбола вложил в разработку игры $50 000 000 — и потерял всё

Время на прочтение8 мин
Количество просмотров34K
image

Игровая индустрия — это современное эльдорадо. По крайней мере, такое впечатление создают квартальные отчеты компаний с их красивыми графиками роста выручки и громадными инвестициями. Но за каждым громким успехом стоит множество провалов, закрытий, отмен, “сгоревших” вложений и поломанных судеб. Одна из таких историй — банкротство “звездной” 38 Studios, созданной знаменитым бейсболистом Куртом Шиллингом. Мы выбрали главное из посвященной студии публикации Bloomberg.

30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 1

Время на прочтение23 мин
Количество просмотров38K


Тридцать лет назад Линусу Торвальдсу был 21 год, он был студентом Хельсинского университета. Именно тогда он впервые выпустил ядро Linux. Анонс этого события начинался так: «Я делаю (свободную) операционную систему (просто в качестве хобби, большой и профессиональной она не будет…)». Три десятилетия спустя все топ-500 суперкомпьютеров в мире работают под Linux, равно как и более 70% всех смартфонов. Linux явно стал и большим, и профессиональным. 
Читать дальше →

Почему стоит начать изучение программирования с языка C

Время на прочтение6 мин
Количество просмотров33K
Краткое содержание: автор статьи объясняет, почему С хорош именно на этапе обучения и прокачки мозгов будущего программиста. А через некоторое время, или даже параллельно, можно выучить более современный язык и заняться, например, Enterprise- или Web-разработкой.


Фото: Liam Briese on Unsplash

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

Назовём навскидку несколько популярных языков. Для Enterprise-разработки активно используют Java (скоро там закрепится и Kotlin), C#, для Web-разработки — JavaScript, Go, Python и PHP, для мобильной разработки — Swift, Java/Kotlin, ну и осмелюсь назвать JavaScript (потому что может, потому что React Native). Разработчики игр часто пользуются C# и С++. Все они востребованы по нескольким причинам:
Читать дальше →

Что запрещает принцип Паули?

Время на прочтение7 мин
Количество просмотров29K

Принцип запрета Паули с однозначной многочастичной волновой функцией эквивалентен требованию, чтобы волновая функция была антисимметричной по отношению к обмену частицами. Как это объяснить на пальцах? Легко - ткните пальцем в стол, в монитор, во что-нибудь твердое. Глубоко пронзили материю? Удалось достичь перекрывания атомных электронных облаков пальца и стола? Нет? Не удивительно. Читайте дальше, если хотите узнать, почему так.

Читать далее

HTML-теги и атрибуты, о которых вы, возможно, не знали

Время на прочтение14 мин
Количество просмотров54K

image


Эта статья — шпаргалка по HTML-тегам. Поэтому не будем разглагольствовать, сразу к делу.


abbr


Тег abbr определяет аббревиатуру или акроним. Аббревиатура или акроним расшифровываются с помощью атрибута title.


<abbr title="HyperText Markup Language">HTML</abbr> был разработан британским ученым Тимом Бернерсом-Ли приблизительно в 1986—1991 годах.

abbr часто используется совместно с тегом dfn, идентифицирующим понятие или термин:


<p><dfn><abbr title="Cascading Style Sheets">CSS</abbr></dfn> - формальный язык описания внешнего вида документа (веб-страницы).</p>

address


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

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

Человеко-читаемый JavaScript: история о двух экспертах

Время на прочтение7 мин
Количество просмотров7.9K


Каждый хочет быть экспертом. Но что это хотя бы означает? За годы работы мне встречалось два типа людей, именуемых «экспертами». Эксперт первого типа – это человек, который не только знает в языке каждый винтик, но и непременно все эти винтики использует, независимо от того, приносит ли это пользу. Эксперт второго типа также знает каждую синтаксическую тонкость, но разборчивее подходит к выбору инструмента для решения задачи, учитывая ряд факторов, как связанных, так и не связанных с кодом.

Давайте угадаю, эксперта какого типа вы хотели бы видеть в своей команде. Второго, верно? Это такой разработчик, который стремится выдавать удобочитаемый код, такие строки JavaScript, которые будут понятны другим специалистам, и которые легко будет поддерживать. Но характеристика «удобочитаемый» редко является определяющей – на самом деле, она обычно заключена в глазах смотрящего. Итак, к чему нас это приводит? К чему нужно стремиться, если наша цель – удобочитаемый код? Есть ли в данном случае явно верный или неверный выбор? Зависит от многого.

Очевидный выбор


Чтобы облегчить труд разработчика, TC39 в последние годы добавил множество новых возможностей в ECMAScript, в том числе, многие проверенные паттерны, заимствованные из других языков. Одним из таких нововведений, появившихся в ES2019, является метод Array.prototype.flat(). Он принимает аргумент глубины или Infinity и выравнивает массив. При отсутствии аргументов глубина массива по умолчанию равна 1.
Читать дальше →

Как крупное кредитное бюро Experian 5 лет зарабатывает на уязвимости в своей системе

Время на прочтение7 мин
Количество просмотров6.9K


В 2017 году портал KrebsOnSecurity уже сообщал об уязвимости в одном из трёх крупнейших кредитных бюро в США. Уязвимость позволяет злоумышленникам отменить запрос клиента бюро Experian о замораживании кредитного счёта и получить доступ к его персональным данным. На прошлой неделе один клиентов рассказал сотрудникам KrebsOnSecurity, что и сейчас можно разморозить счёт без входа в соответствующий аккаунт на сайте Experian. Я решил вновь поднять больную тему о проблемах с безопасностью информационных систем кредитных бюро.


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

У Experian есть специальная страница, где можно ввести информацию для восстановления забытого PIN-кода. Такой «удобной» возможностью могут воспользоваться и злоумышленники, чтобы узнать ваш PIN. Но для этого нужно иметь достаточно информации о вас. Раньше мы надеялись, что не на все вопросы можно ответить, имея при себе чужие персональные данные, которые периодически утекают в сеть из базы Equifax и других кредитных бюро. 

История клиента


В прошлом году Дюн Томас, инженер-программист из Сакраменто (Калифорния), заморозил свои кредитные счета в Experian, Equifax и TransUnion, так как узнал, что мошенники пытались получить доступ к средствам на счетах, используя адрес его пустующего дома (в штате Вашингтон), выставленного на продажу.
Читать дальше →

Обзор Prisma ORM: как забыть об SQL и сосредоточиться на данных

Время на прочтение14 мин
Количество просмотров23K


Это статья-обзор о Prisma ORM.

ORM (англ. Object-Relational Mapping — «объектно-реляционное отображение или преобразование») — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

Работа с базами данных (моделирование данных, изменение схем, формирование запросов и т.п.) — одна из наиболее сложных задач, возникающих при разработке приложений. Prisma предлагает решение, позволяющее сосредоточиться на данных вместо SQL.

Что такое Prisma?


Как утверждают разработчики, Prisma представляет собой «открытую ORM нового поколения для Node.js и TypeScript», реализующую «новую парадигму объектно-реляционного отображения».

Поддерживаемые языки программирования:

  • JavaScript
  • TypeScript
  • Go (в разработке)
Читать дальше →

Оптимизируем производительность: JavaScript (V8) vs AssemblyScript (WebAssembly)

Время на прочтение16 мин
Количество просмотров7.3K


Чтобы повысить производительность web-приложений, используйте WebAssembly в связке с AssemblyScript, чтобы переписать критически важные для производительности компоненты web-приложения, написанные на JavaScript. «И это действительно поможет?», — спросите вы.

К сожалению, на этот вопрос нет чёткого ответа. Всё зависит от того, как вы будете их использовать. Вариантов много: в одних случаях ответ будет отрицательный, в других — положительный. В одной ситуации лучше выбрать JavaScript вместо AssemblyScript, а в другой — наоборот. На это влияет множество различных условий.

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

Кто я такой и почему занимаюсь этой темой? 


(Данный раздел можете пропустить, это несущественно для понимания дальнейшего материала).

Мне по-настоящему нравится язык AssemblyScript. Я даже в какой-то момент начал помогать разработчикам финансово. У них небольшая команда, в которой каждый серьёзно увлечён этим проектом. AssemblyScript — очень молодой язык, похожий на TypeScript и способный компилироваться в WebAssembly (Wasm). Именно в этом и заключается одно из его преимуществ. Раньше, чтобы использовать Wasm, web-разработчик должен был учить чуждые ему языки типа С, C++, C#, Go или Rust, так как в WebAssembly изначально могли компилироваться именно такие высокоуровневые языки со статической типизацией. 

Хотя AssemblyScript (ASC) и похож на TypeScript (TS), он не связан с этим языком и не  компилируется в JS. Схожесть в синтаксисе и семантике нужна, чтобы облегчить процесс «портирования» с TS на ASC. Такое портирование в основном сводится к добавлению аннотаций типов.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность