Pull to refresh
65
0
Send message

История одного SSL рукопожатия

Reading time5 min
Views18K
Привет, Хабр!

Недавно мне пришлось прикручивать SSL с двухсторонней аутентификацией (mutual authentication) к Spring Reactive Webclient. Казалось бы, дело нехитрое, но вылилось оно в блуждание в исходниках JDK с неожиданным финалом. Опыта набралось на целую статью, которая может оказаться полезной инженерам в повседневных задачах или при подготовке к собеседованию.

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

Разрешаем доступ к веб-серверу только через CloudFlare (iptables)

Reading time2 min
Views20K

Cloudflare — отличная штука для защиты сайтов от разных компьютерных жуликов — хацкеров. Однако, если они всё же узнали как-то оригинальный IP веб-сервера, на котором расположен сайт, они как минимум будут пробовать атаковать его по IP, минуя прокси. Можно городить редиректы, слать NGINX-ом ресеты кодом 444 при попытке зайти на несуществующие домены, но самый железный выход из ситуации такой: открыть http/https трафик на сервер только для IP адресов нашей защитной прокси.
Читать дальше →

Meta Crush Saga: игра, выполняемая во время компиляции

Reading time21 min
Views11K
image

В процессе движения к долгожданному титулу Lead Senior C++ Over-Engineer, в прошлом году я решил переписать игру, которую разрабатываю в рабочее время (Candy Crush Saga), с помощью квинтэссенции современного C++ (C++17). И так родилась Meta Crush Saga: игра, которая выполняется на этапе компиляции. Меня очень сильно вдохновила игра Nibbler Мэтта Бирнера, в которой для воссоздания знаменитой «Змейки» с Nokia 3310 использовалось чистое метапрограммирование на шаблонах.

«Что ещё за игра, выполняемая на этапе компиляции?», «Как это выглядит?», «Какой функционал C++17 ты использовал в этом проекте?», «Чему ты научился?» — подобные вопросы могут прийти к вам в голову. Чтобы ответить на них, вам придётся или прочитать весь пост, или смириться со своей внутренней ленью и посмотреть видеоверсию поста — мой доклад с Meetup event в Стокгольме:


Примечание: ради вашего психического здоровья и из-за того, что errare humanum est, в этой статье приведены некоторые альтернативные факты.

Разработка нового статического анализатора: PVS-Studio Java

Reading time19 min
Views19K

Picture 3

Статический анализатор PVS-Studio известен в мире C, C++ и C# как инструмент для выявления ошибок и потенциальных уязвимостей. Однако у нас мало клиентов из финансового сектора, так как выяснилось, что сейчас там востребованы Java и IBM RPG(!). Нам же всегда хотелось стать ближе к миру Enterprise, поэтому, после некоторых раздумий, мы приняли решение заняться созданием Java анализатора.
Читать дальше →

Особенности вызова функций в С++

Reading time33 min
Views63K

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


  • Регистры и их назначение при вызове функций.
  • Передача и возврат простых типов и структур.
  • Как передача по ссылке и по значению влияют на оптимизации тела функции компилятором.
  • Как используется место при многочисленных вызовах функций.
  • Механизм виртуальных вызовов.
  • Оптимизация хвостовых вызовов и рекурсии.
  • Инициализация структур, массивов и векторов.

Осторожно! Статья содержит большое количество кода на C++ и ассемблере (Intel ASM с комментариями), а также множество таблиц с оценками производительности. Всё написанное актуально для x86-64 System V ABI, который используется во всех современных Unix операционных системах, к примеру, в Linux и macOS.

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

Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя

Reading time4 min
Views83K
Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…
Читать дальше →

Чему я научился, пройдя множество собеседований в компаниях и стартапах из сферы ИИ

Reading time14 min
Views38K
За последние восемь месяцев я прошел собеседования в самых разных компаниях — DeepMind в Google, Wadhwani Institute of AI, Microsoft, Ola, Fractal Analytics и некоторых других — в основном на позиции Data Scientist, Software Engineer и Research Engineer. По ходу дела мне предоставлялись возможности не только пообщаться со многими талантливыми людьми, но также по-новому взглянуть на себя с пониманием того, что хотят услышать работодатели, когда беседуют с кандидатами. Думаю, если бы я располагал этой информацией раньше, то мог бы избежать многих ошибок и подготовиться к собеседованиям куда лучше. Это и стало импульсом к написанию данной статьи — возможно, она поможет кому-нибудь получить работу мечты.


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

Подсчёт пчёл нейросетью на Raspberry Pi

Reading time7 min
Views30K
Опубликовано 17 мая 2018 года

Сразу после установки улья я подумал: «Интересно, как подсчитать количество прилетающих и улетающих пчёл?»

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

Во-первых, нужно собрать образцы данных. Raspberry Pi, стандартная камера Pi и солнечная панель: этого простого оборудования достаточно, чтобы записывать один кадр каждые 10 секунд и сохранять 5000+ изображений в день (с 6 утра до 9 вечера).


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

Как запретить Windows 10 перезагрузку после обновлений

Reading time2 min
Views94K
Всем привет. Удивительно, но ответ на этот вопрос (точнее, «как сделать всё так, чтобы было как раньше») слабо освещён в рунете. Да и в целом готовое решение ещё нужно поискать.
Однако проблема требует решения т.к. система восстанавливает после перезагрузки далеко не все приложения.

Итак:
Читать дальше →

Как я начал бояться и разлюбил Windows 10

Reading time4 min
Views177K


Lego выпустила специальные тапочки, чтобы избавить пользователей от боли. А что сделал ты, Microsoft?


На обновлении Windows 10 (сейчас у меня сборка 1803) каждый раз замирает сердце — что поломается на этот раз. Дабы поделиться болью и лечением, я собрал самые частые обращения от людей за последние пару месяцев. В копилке: прекращение доступа на серверы, сбой работы приложений и откровенно странные глюки.

И да начнется рефлексия

Разработка умных устройств на примере контроллера теплого пола на ESP8266

Reading time11 min
Views24K
Хочу поделиться своим опытом разработки умного устройства. В этой публикации я опишу аппаратное (кратко) и программное (более подробно) обеспечение.

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

Грязные трюки разработчиков видеоигр

Reading time12 min
Views78K

Предыдущие части: раз, два, три.

Благодарим за игру!


В первой части Wing Commander при выходе из игры мы получали от нашего менеджера памяти EMM386 исключение. Экран очищался и на него выводилась единственная строка, что-то типа «Ошибка менеджера памяти EMM386. Бла-бла-бла».

Нам нужно было выпустить игру как можно быстрее, поэтому я отредактировал ошибку менеджера памяти в hex-редакторе, чтобы она выглядела как «Благодарим за то, что играли в Wing Commander».

— Кен Демарест

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

История создания домашнего облака. Часть 4. Актуализация 2018 – Debian 9 и Nextcloud 13

Reading time15 min
Views29K
С момента публикации трёх прошлых частей я получил несколько отзывов от людей, которые, никогда не пользовавшись linux, по предложенным инструкциям смогли успешно «поднять» свои домашние сервера. Я не собирался делать дополнение по обновлению софта, предполагая, что есть хорошая база, отталкиваясь от которой каждый сможет вполне самостоятельно, при наличии времени и желания, актуализировать свой веб-сервер и облачный движок. Однако, после того как я занялся этим сам, как всегда появились некоторые моменты, освещение которых может помочь новичку сэкономить время. И я решил написать эту «дифференциальную» часть, отступив от принципа «всё в одной статье». Поэтому, в первую очередь, этот материал будет интересен тем, кто достаточно подробно ознакомился с тремя предыдущими статьями и/или положил их в закладки. Использование нового программного обеспечения делает неверными некоторые ранее изложенные инструкции и четвёртая часть будет содержать только обновление подобной информации.

Если изложить кратко, то новый сервер мы строим на Debian 9 вместо 8, SQL меняем на открытую MariaDB, а PHP 5 на более быстрый PHP 7. Движок Nextcloud обновится с версии 11 до 13. Так же я упомяну как немного походим по граблям — сначала вдоль, а потом и поперёк.


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

Дистанционное управление системой отопления

Reading time14 min
Views34K
Интернет вещей (IoT, Internet of Things) является многообещающим направлением, как уверяют аналитики. Одним из главных трендов IoT является автоматизация жилья или, как любят выражаться маркетологи, создание «умного дома».

Оставим в покое словесные упражнения и рассмотрим конкретный проект.
Читать дальше →

Поиск и устранение неисправностей Node.js-приложений под капотом

Reading time14 min
Views13K
С момента появления Node.js диагностика совершенствовалась в несколько этапов, от отладки приложений до глубокого анализа производительности. В этот раз речь пойдет о стратегиях использования таких инструментов, как core dump debuggers, flame graphs, ошибках в production и утечке памяти.


Мы расшифровали для Хабра доклад Николая Матвиенко из Grid Dynamics с нашей конференции HolyJS. Далее повествование идёт от лица спикера.
Читать дальше →

Найден третий препарат для лечения андрогенетической алопеции (облысения)

Reading time3 min
Views80K

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

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

Справа налево. Что такое dir=rtl и как приручить арабский язык

Reading time8 min
Views41K


Привет, Хабр. Мы недавно перевели на арабский язык 2ГИС Онлайн, и хотим поделиться своим опытом адаптации интерфейса под RTL (right-to-left). Это будет актуально и для иврита, и для персидского языка.


Я разделю этот опыт на две статьи — теоретическую и практическую. Сегодня — больше про теорию. Я расскажу, зачем нам понадобилось переворачивать весь интерфейс, что для разработчика интерфейсов значит фраза «сделать арабскую версию» и как справиться с арабским языком, смешанным с английским. Особое внимание уделю алгоритму, по которому строится отображение текста смешанной направленности — unicode bidirectional algorithm.

Дальше читать

Используем GPG для шифрования сообщений и файлов

Reading time9 min
Views194K

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



GPG (также известный как GnuPG) создавался как свободная альтернатива несвободному PGP. GPG используется для шифрования информации и предоставляет различные алгоритмы (RSA, DSA, AES и др.) для решения этой задачи.

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

Выпуск#21: ITренировка — актуальные вопросы и задачи от ведущих компаний

Reading time5 min
Views10K
Подоспел очередной выпуск ITренировки — задач, предлагаемых на собеседования в ведущие IT-компании.

КДПВ

В подборку вошли задачи и вопросы от Facebook, которые задают желающим устроиться на должность разработчика. Традиционно, отобраны как простые задачи, так и не очень. Рекомендуем попробовать решить задачи самостоятельно, ссылку на оригинальные решения мы обычно добавляем в секцию ответов.
Читать дальше →

Задачи с собеседований (front-end)

Reading time18 min
Views341K
Так получилось, что за свою карьеру front-end разработчика, я побывала на многих собеседованиях. Тема прохождения интервью не теряет своей актуальности, а в комментариях, когда речь заходит о собеседованиях, начинают ломаться копья. Хочу тоже внести свой вклад и поделиться накопившейся коллекцией вопросов. Прошу.

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

Information

Rating
Does not participate
Registered
Activity