Habrahabr лучшее

Лучшие публикации за последние 24 часа
Подписка на Лента Habrahabr лучшее Habrahabr лучшее
Добрый день.

В открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами.

Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).

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


Ваш компьютер не является быстрой версией PDP-11
Привет, Хабр!

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

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

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →
Президент Египта Абдул-Фаттах Халил Ас-Сиси подписал новый закон, который ужесточает контроль над интернетом. Новый закон «О киберпреступности» позволяет заблокировать на территории страны веб-сайты, если они представляют угрозу национальной безопасности или экономике.

Любой человек, причастный к работе или посещению такого сайта, может быть подвергнут тюремному заключению сроком до 1 года или штрафу до EGP100 000 ($5593).

Власти заявляют, что новые меры необходимы «для борьбы с нестабильностью и терроризмом».
Читать дальше →
Всем привет!

Сегодня расскажем об опыте одного из наших DevOps проектов. Мы решили реализовать новое приложение под Linux с использованием .Net Core на микросервисной архитектуре.

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

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

Поэтому использовали такие технологии:

  • .Net Core для реализации микросервисов. В нашем проекте использовалась версия 2.0,
  • Kubernetes для оркестрации микросервисов,
  • Docker для создания образов микросервисов,
  • шина интеграции Rabbit MQ,
  • EK для логирования,
  • TFS для реализации конвейера CI/CD.

В этой статье поделимся подробностями нашего решения.



Это расшифровка нашего выступления на .NET-митапе, вот ссылка на видео выступления.
Читать дальше →
Не так давно в датацентре, в котором мы арендуем серверы случился очередной мини-инцидент. Никаких серьезных последствий для нашего сервиса в итоге не было, по имеющимся метрикам нам удалось понять что происходит буквально за минуту. А потом я представил, как пришлось бы ломать голову, если бы не хватало всего 2х простеньких метрики. Под катом коротенькая история в картинках.
Читать дальше →


ПрологДейственным компонентом защищенного периметра агрессивной стратегии Информационной Безопасности является процедура запрета на подключение, использование и любое задействование USB-накопителей, встроенных считывателей (карт-ридеров) и дополнительных устройств на защищаемом оборудовании.

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

Даже когда просто находишь USB-накопитель на улице, то лучше проверить его, подключив к устройству с Linux.

Ну хорошо, а когда под рукой много USB-накопителей – не выкидывать же их? Я, например, записываю на такие неиспользуемые USB-накопители образы Linux Mint и просто раздаю знакомым и друзьям для их установки.

Но вот как можно использовать такие ненужные накопители против целой страны… Про это история ниже.

Сокращение далее по тексту — Human Rights Foundation — HRF.

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

Существует ряд исключительных ситуаций, которые скажем так… Несколько более исключительны чем другие. Причем если попытаться их классифицировать, то как и было сказано в самом начале главы, есть исключения родом из самого .NET приложения, а есть исключения родом из unsafe мира. Их в свою очередь можно разделить на две подкатегории: иcключительные ситуации ядра CLR (которое по своей сути — unsafe) и любой unsafe код внешних библиотек.


Давайте поговорим про эти особые исключительные ситуации.


ThreadAbortException

Вообще, это может показаться не очевидным, но существует четыре типа Thread Abort.


Данная статья — третья из четырех в цикле статей про исключения. Полный цикл:
Архитектура системы типов
Cобытия об исключительных ситуациях
Виды исключительных ситуаций (эта статья)
— Сериализация и блоки обработки
Читать дальше →


Изображение: Pexels

7 августа Илон Маск заявил в своем твиттере о намерении вывести акции Tesla с публичного рынка, выкупив их по цене $420 за каждую. Миллиардер сообщил, что хочет обрести независимость от колебаний цен на бирже и уже готовится к сделке. Последние две недели СМИ обсуждают, состоится ли сделка и кто поможет ее профинансировать: по разным оценкам для выполнения обещания Илону Маску потребуется от $66 до $72 млрд. Читать дальше →
Во время распространения млекопитающих по планете температура Земли резко и опасно повышалась – и планета может столкнуться с этим снова.

Начало эры млекопитающих было очень странным. Планета ещё отходила от удивительного исчезновения своих знаменитых суперзвёзд, динозавров. Новейший кратер Земли ещё представлял собой дымящуюся систему гидротермальных источников, бурлящих под Мексиканским заливом. После такого армагеддона наши оглушённые предки тихонько договорились о новых ролях на унаследованной ими по случайности планете. И уже вскоре жизнь приспособилась к новым ритмам – 15-метровые удавы бороздили парники джунглей, птицы выросли до гигантских размеров, имитируя покинувших их кузенов, и появились млекопитающие, относительно похожие на современных, которых мы могли бы признать, несколько постаравшись. И в течение нескольких миллионов лет, освободившись от железной пяты исчезнувших гигантов, они начали экспериментировать. Ранние киты важно бороздили просторы Пакистанского архипелага на четырёх ногах, проверяя жизнь в воде. Первые лемуроподобные приматы прыгали с верхушек деревьев, а всевозможные копытные метались туда и сюда по лесу.
Читать дальше →
Наём инженеров может быть трудной, утомительной и обременительной процедурой. Кандидаты читают книги, как пройти интервью, что говорит о зрелости существующих методов. Мы нанимаем профессионалов для создания продукта, а не для повторной реализации старых алгоритмов. Я ещё не видел программиста, который каждый день пишет маркером на доске без доступа к интернету для проверки своих решений.

В этом блоге я расскажу о процессе найма, который мы разработали в Qstream.
Читать дальше →
Можно ли по-простому рассказать фронтенд-разработчикам о работе «безоблачной» архитектуры Serverless в рамках AWS (Amazon Web Services)? Почему бы и нет. Давайте отрендерим React/Redux-приложение в архитектуре AWS, а после этого поговорим о плюсах и минусах AWS-лямбд.


В основе материала — расшифровка доклада Марины Миронович с нашей весенней конференции HolyJS 2018 в Санкт-Петербурге.
Читать дальше →
njs — это JavaScript-интерпретатор в легковесном веб-сервере, с помощью которого можно создавать новые nginx-переменные и обработчики стадий запроса. Чем njs хорош? Чего не умеет? И зачем вообще его сделали? На эти и другие вопросы ответит Дмитрий Волынцев (xeioex), разработчик nginx и основной разработчик интерпретатора njs.



— Дмитрий, зачем понадобился скриптинг в конфигах nginx?
— Первая причина — директива if. Люди, которые первый раз ее увидели, думают, что можно использовать ее императивно. На самом деле это не так — конфигурация nginx является декларативной. В примере ниже можно подумать, что в ответе будут два header: X-First и X-Second. Но в ответ попадет только второй header, потому что так устроен nginx: если мы напишем две if-директивы, то выберется самая последняя.

location /only-one-if { set $true 1; if ($true) { add_header X-First 1; } if ($true) { add_header X-Second 2; } Читать дальше →
В начале года мы опубликовали несколько материалов о популярных наборах компонентов для React, Angular и Vue. Сегодня мы представляем вашему вниманию перевод статьи из той же серии, посвящённой React Native. Учитывая непрекращающийся рост популярности React, и то, что мобильные приложения и PWA становятся всё востребованнее, неудивителен тот факт, что React Native привлекает всё большее внимание сообщества разработчиков.



Фреймворк React Native очень похож на React в том плане, что его применение подталкивает программиста к созданию пользовательских интерфейсов с использованием изолированных компонентов. Наборы таких компонентов, предназначенные для разработки интерфейсов, дают разработчикам готовые модули, использование которых помогает экономить время, ускоряя работу. Здесь мы обсудим одиннадцать наборов компонентов, которые отличаются хорошей поддержкой их создателей. Они, надеемся, пригодятся всем, кому приходится разрабатывать интерфейсы на React Native
Читать дальше →


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

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

Надеюсь вы подчеркнете для себя что-то полезное, здесь вы можете ознакомиться с ним.
custom-reset.css
Читать дальше →
Искусство воина состоит в сохранении равновесия
между ужасом быть человеком и чудом быть человеком.
«Путешествие в Икстлан»


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

С недавних пор я тружусь на позиции разработчика в компании Digital Design, и иногда мне приходится разбираться с задачами, с которыми я ранее не встречалась. Это интересно и часто весело. Сейчас, например, я пишу корпоративное приложение под Sailfish OS и хочу поделиться с вами своим опытом – об этом и пойдет речь ниже. Следуйте за мной под кат, если вы начинающий разработчик или, так же, как и я, столкнулись с задачей адаптации корпоративного приложения под ОС Sailfish и не знаете, с чего начать, а также те, кто ещё не слышал о Qt и особенностях Sailfish.

Читать дальше →
Захотелось мне написать разговаривающую программу. Очень захотелось, позарез.

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

Знакомьтесь, Ваня Разумный.


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

По поводу результата оговорюсь сразу: целью был не программный код, а формулировка принципов искусственного мышления, функционирующего НЕ на основе физической реальности, как биологические организмы, а на основе СИНТАКСИСА. Поклонники теста Тьюринга, нейронных сетей и машинного обучения могут не беспокоиться.

Внимание, материал объемный.
Читать дальше →
Всем привет!

Однажды меня спросили заказчики, нет ли у меня в проектах целочисленного БПФ, на что я всегда отвечал, что это уже сделано другими в виде готовых, хоть и кривых, но бесплатных IP-ядер (Altera / Xilinx) – берите и пользуйтесь. Однако, эти ядра не оптимальны, обладают набором «особенностей» и требуют дальнейшей доработки. В связи с чем, уйдя в очередной плановый отпуск, который не хотелось провести бездарно, я занялся реализацией конфигурируемого ядра целочисленного БПФ.


КДПВ (процесс отдладки ошибки переполнения данных)

В статье я хочу рассказать, какими способами и средствами реализуются математические операции при вычислении быстрого преобразования Фурье в целочисленном формате на современных кристаллах ПЛИС. Основу любого БПФ представляет узел, который носит название «бабочка». В бабочке реализуются математические действия – сложение, умножение и вычитание. Именно о реализации «бабочки» и её законченных узлов будет идти рассказ в первую очередь. За основу взяты современные семейства ПЛИС фирмы Xilinx – это серия Ultrascale и Ultrascale+, а также затрагиваются старшие серии 6- (Virtex) и 7- (Artix, Kintex, Virtex). Более старшие серии в современных проектах – не представляют интереса в 2018 году. Цель статьи – раскрыть трудности и особенности реализации кастомных ядер цифровой обработки сигналов на примере БПФ.
Читать дальше →
В последнее время набирает популярность тренд «исчезающих фреймворков», локомотивом которого, без сомнения, можно считать SvelteJS — buildtime-фреймворк и компилятор в ванильный javascript.

Несмотря на то, что концептуально Svelte весьма прост, а в использовании еще проще, многие разработчики задаются вопросом, в чем же killer-фича данного фреймворка, да и подхода в целом? Почему это не «yet another javascript framework»?

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

Давайте разберемся, но сначала я расскажу вам одну легенду…


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

PHP 7.3.0 Beta 2 и другие релизы, предложение из PHP Internals, порция полезных инструментов, видеозапись «Пишем блокчейн на PHP», и многое другое.
Приятного чтения!


Читать дальше →
Недавняя публикация о возрождении и развитии двигателя SSME (RS-25) вызвала в ЖЖ наплыв лунных конспирологов в комментариях — судьбу двигателя шаттла они сравнивали с F-1 от Saturn V. Так что сегодня мы сыграем в игру «почувствуй себя руководителем Rocketdyne» и поговорим об извилистом жизненном пути технологий.


Двигатели F-1 и J-2 ракеты Saturn V в музее
Читать дальше →

Страницы

Последние публикации

Новые комментарии