Pull to refresh
0
0
Send message

Создание Scrapbook-макета на CSS Grid

Reading time7 min
Views7.1K
Недавно на уроках дошкольной подготовки моему сыну поручили в течение недели присматривать за плюшевым мишкой, что предполагало необходимость взять мишку в какое-то приключение, а свои воспоминания об этом добавить в альбом. Мне очень понравилось делать этот альбом и подтолкнуло к мысли о том, как бы я сделал нечто подобное с помощью CSS Grid!


Total votes 10: ↑9 and ↓1+8
Comments0

Как мы переложили управление инфраструктурой на Terraform — и начали жить

Reading time22 min
Views39K
image
У нас было 4 Amazon-аккаунта, 9 VPC и 30 мощнейших девелоперских окружений, стейджей, регрессий — всего более 1000 EC2 instance всех цветов и оттенков. Раз уж начал коллекционировать облачные решения для бизнеса, то надо идти в своем увлечении до конца и продумать, как все это автоматизировать.

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

Статья длинная, поэтому запаситесь попкорном чаем и вперед!

И еще один нюанс — статья писалась на основе версии 0.11, в свежей 0.12 многое изменилось но основные практики и советы по прежнему актуальны. Вопрос миграции с 0.11 на 0.12 заслуживает отдельной статьи!
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments22

Безопасность контейнеров в CI/CD

Reading time12 min
Views11K
На дворе наступила осень, во всю бушует техноутопия. Технологии стремительно рвутся вперед. Мы носим в кармане компьютер, вычислительная мощность которого в сотни миллионов раз больше мощности компьютеров, управлявших полетами на Луну. С помощью Youtube VR мы можем плавать в океане с медузами и китами, а роботы давно исследуют безжизненные горизонты холодных планет.

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

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

image

Читать дальше →
Total votes 32: ↑20 and ↓12+8
Comments6
Большинство управляющих и владельцев бизнеса не до конца представляют себе список факторов, которые должны быть учтены при проектировании беспроводной сети. Да и некоторые системные и сетевые администраторы, привыкшие к работе с проводными сетями, поддерживают мифы и легенды, которыми окутаны беспроводные сети. В данном материале мы попытаемся обозначить основные моменты, на которые стоит обратить внимание на этапе проектирования Wi-Fi сетей. По этому списку можно будет понять, насколько вы подготовлены с технической точки зрения.
Подробности – под катом
Total votes 22: ↑22 and ↓0+22
Comments6

Медленный софт

Reading time16 min
Views20K
От переводчика: проблема медленного программного обеспечения стала одной из главных тем обсуждения на Хабре и Hacker News в последние недели. Например, см. статью Никиты Прокопова «Моё разочарование в софте» и 2432 комментария к ней.

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

Если вы используете компьютер для выполнения важной работы, то заслуживаете быстрого ПО. Слишком часто современный софт не удовлетворяет этим требованиям. В исследовательской лаборатории Ink & Switch мы изучили причины такой ситуации, программное обеспечение в итоге стало лучше. В этой статье опубликованы результаты нашего исследования.
Total votes 24: ↑22 and ↓2+20
Comments66

FB2D — 2D framework for Linux Frame Buffer (Rust)

Reading time3 min
Views4.8K

Вот решил поведать о библиотеке, которую написал недавно. Возможно кому-то и пригодится.
Это 2D framework на языке Rust для рендеринга непосредственно в Linux Frame Buffer /dev/fb0.


Задача была — на Raspberry Pi выводить на экран / телевизор простые 2D сцены. Raspberry Pi работает под управление собранного при помощи YoctoProject custom headless Linux. Window Managers отсутствуют, так же, как и OpenGL. Остается только Frame Buffer.


В случае с Frame Buffer обрабатывать приходится каждый пиксель. Так как я для Raspberry Pi пишу в основном на GoLang, то решил написать библиотеку на Go. Очень быстро понял что Go не подходит мне по производительности. Массивные операции с памятью он не смог выполнить за разумное время.


Тогда я обратил внимание на Rust, который выполнял похожие тесты намного быстрее.

Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments8

24-ядерный CPU, а я не могу набрать электронное письмо (часть 2)

Reading time10 min
Views12K
В прошлой статье я обещал подробнее раскрыть некоторые детали, которые опустил во время расследования [подвисаний Gmail в Chrome под Windows — прим. пер.], включая таблицы страниц, блокировки, WMI и ошибку vmmap. Сейчас восполняю эти пробелы вместе с обновлёнными примерами кода. Но сначала вкратце изложим суть.

Речь шла о том, что процесс с поддержкой Control Flow Guard (CFG) выделяет исполняемую память, одновременно выделяя память CFG, которую Windows никогда не освобождает. Поэтому если вы продолжаете выделять и освобождать исполняемую память по разным адресам, то процесс накапливает произвольный объём памяти CFG. Браузер Chrome делает это, что приводит к практически неограниченной утечке памяти и подвисаниям на некоторых машинах.

Нужно заметить, что подвисаний трудно избежать, если VirtualAlloc начинает работать более чем в миллион раз медленнее, чем обычно.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments16

Serverless и React 2: ловкость рук и никакого мошенничества

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


В основе материала — расшифровка доклада Марины Миронович с нашей весенней конференции HolyJS 2018 в Санкт-Петербурге.
Total votes 29: ↑24 and ↓5+19
Comments1

Новые процессоры ARM смогут потягаться с Core i5

Reading time3 min
Views42K

Согласно собственным тестам ARM, процессор Cortex-A76 уже примерно соответствует по производительности разогнанному процессору Core i5-7300U, рассеивая при этом менее 5 Вт (TDP), в сравнении с 15 Вт у чипа Intel

Процессоры ARM традиционно используются в смартфонах и планшетах, но в последнее время производители ПК вроде Asus и HP решили, что производительность и низкое энергопотребление этих «камней» вполне подходят для ноутбуков. Глядя на такое положение вещей, сама компания ARM анонсировала процессорные архитектуры, специально предназначенные для конкуренции с Intel и AMD на ноутбуках и настольных компьютерах в 2019−2020 годы. По мнению ARM, новые чипы вполне могут сравниться и даже превзойти процессоры Intel в однопоточной производительности.
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments165

Как я не уехал в США и стал Президентом в России

Reading time13 min
Views58K
В этом лонгриде я рассказываю как от безработного дорасти до президента. Запаситесь терпением и чувством юмора!



Как я стал безработным


В 2007-м мои рабочие будни проходили в большом “курятнике” в центре Москвы. В роли курочек выступали менеджеры, высиживающие свои проекты, на отведенной каждому площади в полтора квадратных метра на территории общего оупен-спейса. Контора носила очень гордое название, что-то в стиле Super Mega World Media Ventures. Ой, да именно такое и носила, только без Super Mega.

Бизнес-идея мирового венчура заключалась в том, чтобы “понабрать по объявлению” как можно больше менеджеров со всяческими идеями и пусть они стартапят свои проекты кто во что горазд. Авось парочка из них станет новыми фейсбуками — теория больших чисел в действии.
Читать дальше →
Total votes 124: ↑91 and ↓33+58
Comments422

11 лучших шрифтов для программирования

Reading time3 min
Views256K
Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

Я ранжировал шрифты по следующим показателям:

  • Насколько различимы схожие символы, такие как 0O, 1lI.
  • Легко ли читается шрифт (ширина строк, ширина/высота символов).
  • И мои личные предпочтения!

Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
Читать дальше →
Total votes 56: ↑54 and ↓2+52
Comments117

Руководство по написанию защищённых PHP-приложений в 2018-м

Reading time18 min
Views57K

Приближается 2018 год, и технари — в частности веб-разработчики — должны отбросить многие старые методики и верования в сфере разработки защищённых PHP-приложений. Особенно это относится ко всем, кто не верит, что такие приложения вообще возможны.


Это руководство — дополнение к электронной книге PHP: The Right Way с сильным уклоном в безопасность, а не общие вопросы программирования на PHP (вроде стиля кода).

Читать дальше →
Total votes 75: ↑72 and ↓3+69
Comments38

Почему один процесс NGINX берёт на себя всю работу?

Reading time7 min
Views21K

Метод масштабирования TCP-серверов, как правило, очевиден. Начни с одного процесса, когда будет нужно — просто добавь ещё. Так делают многие приложения, включая HTTP-серверы типа Apache, NGINX или Lighttpd.



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

Total votes 29: ↑27 and ↓2+25
Comments8

Устройство NVRAM в UEFI-совместимых прошивках, часть первая

Reading time9 min
Views46K
Здравствуйте, уважаемые читатели. Когда-то очень давно, почти 3 года назад, я написал пару статей о форматах данных, используемых в UEFI-совместимых прошивках. С тех пор в этих форматах мало что изменилось, поэтому писать про них снова я не буду. Тем не менее, в тех статьях был достаточно серьезный пробел — отсутствовали какие-либо упоминания об NVRAM и используемых для её хранения форматах, т.к. тогда разбор NVRAM мне был попросту неинтересен, ибо те же данные можно получить из UEFI Shell на работающей системе буквально одной командой dmpstore.
По прошествии трех лет выяснилось, что хранилище NVRAM умеет разваливаться по различным причинам, и чаще всего это событие приводит к «кирпичу», т.е. воспользоваться вышеупомянутой командой уже не получится, а данные (или то, что от них осталось) надо доставать. Собрав пару развалившихся NVRAM'ов вручную в Hex-редакторе, я сказал "хватит это терпеть!", добавил поддержку разбора форматов NVRAM в UEFITool NE, и решил написать цикл статей об этих форматах по горячим следам и свежей памяти.
В первой части поговорим о том, что вообще такое этот NVRAM, и рассмотрим формат VSS и его вариации. Если интересно — добро пожаловать под кат.
NVRAM - наш рулевой!
Total votes 33: ↑33 and ↓0+33
Comments22

Внутри супер-быстрого CSS-движка: Quantum CSS (aka Stylo)

Reading time9 min
Views26K

Привет, Хабр! Представляю вашему вниманию перевод статьи Inside a super fast CSS engine: Quantum CSS (aka Stylo) автора Лин Кларк.


Вы возможно слышали о Project Quantum… Это проект по существенной переработке внутренностей Firefox с целью ускорить браузер. По частям мы внедряем наработки нашего экспериментального браузера Servo и значительно улучшаем остальные элементы движка.


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


image


Прим. переводчика: под катом много иллюстраций. Все они кликабельные (для просмотра в большем разрешении). Если Вы наткнетесь на неточности перевода и другие ошибки — буду благодарен, если сообщите об этом в комментариях или в личку.

Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments16

«Ржавая» IP-камера: прошивка на Rust

Reading time4 min
Views24K
До появления ботнета Mirai только особо интересующиеся знали о том, что находится внутри обычных IP камер. В большинстве случаев там стоит обычный линукс, причем частенько с дефолтным рутовым паролем, а то и вообще без него: у нас в офисе стоит такая камера, с прошивкой от декабря 2016 года и беспарольным рутовым телнетом.

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

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

Мы решили исправить эту ситуацию своей прошивкой, причем сделав ставку на Rust.
Читать дальше →
Total votes 70: ↑66 and ↓4+62
Comments45

Переход на embedded PostgreSQL в unit-тестах

Reading time13 min
Views37K

В приложениях, работающих с базами данных, естественным образом возникает потребность в тестах, которые проверяют корректность результатов выполнения запросов. На помощь приходят различные встроенные (embedded) базы данных. В этой статье я расскажу о том, как мы перевели unit-тесты с HSQLDB на PostgreSQL: зачем это затеяли, с какими трудностями столкнулись и что нам это дало.

Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments49

Система управления складом с использованием CQRS и Event Sourcing. Проектирование

Reading time6 min
Views10K
image
Итак, после постановки требований описанной в части 1 можно перейти к проектированию системы.

Основная наша задача в проектировании, как это понятно из названия статьи, добиться разделения интерфейсов на Query и Command, чтобы впоследствии разделить бизнес сценарии на те, которые будут читать данные (Query интерфейсы) и на те, которые будут изменять данные (Command интерфейсы). А также обеспечить минимальное время ожидание (latency) на обновление данных, доступных через Query, после того как мы изменили данные через Command.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments11

Kotlin vs. Java: скорость компиляции

Reading time5 min
Views36K


Как уже знают все Android-разработчики, Google недавно объявила об официальной поддержке Kotlin в Android. Многие риски, связанные с использованием этого замечательного языка в Android-проектах, сняты. Но актуальным, особенно для очень крупных проектов, каким является Badoo, остаётся вопрос о скорости сборки. Я был рад обнаружить, что в сети уже есть исследования на эту тему, и переводом одного из них хочу поделиться.


Итак, если вы переводите приложение с Java на Kotlin, будет ли оно компилироваться дольше?

Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments33

Мультиисключение или Хочу поделиться одним интересным архитектурным приемом

Reading time6 min
Views15K
Мне никогда не нравилась в фреймворках на PHP работа с ошибками. И даже употребление этого слова не нравилось. Чтобы сразу уточнить — я не про фатальные ошибки, не про error_reporting, я про то, что называют ошибками валидации. То в моделях, то в формах — это уж от фреймворка зависит.

Вы только гляньте. Вот например Yii и Yii2, получение ошибок валидации модели:
$errors = $model->getErrors();

Symfony, ошибки формы:
$errors = $form->getErrors();

Активно рекламирующийся Pixie (давненько про него ничего не было):
$result = $validator->validate($data);
$errors = $result->errors();


Что тут не так?
Да всё. Всё не так. Весь этот код очень дурно пахнет, он пахнет временами PHP4, спагетти-архитектурой и диким смешением понятий.

Что же делать?

Читать дальше →
Total votes 23: ↑13 and ↓10+3
Comments127
1
23 ...

Information

Rating
Does not participate
Location
Гродно, Гродненская обл., Беларусь
Registered
Activity