Pull to refresh
2
0
Andrew D.Laptev @agsh

User

Send message

Покоряем высоты для велонавигатора 2ГИС

Reading time14 min
Views11K

Привет, я Артём, ML-инженер. 26 мая 2ГИС зарелизил навигатор для велосипедов и самокатов, одна из его фич — график высот для построенного маршрута. Эта статья о том, как мы получаем этот график.

Читать далее
Total votes 53: ↑52 and ↓1+51
Comments46

Как понять, что стоматолог адекватный

Reading time13 min
Views19K

Лечите нерв без такой штуки? Утройте оценку рисков.

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

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

Сейчас на пальцах покажу и расскажу, на что стоит обратить особенно пристальное внимание, если вы хотите минимизировать риски. Будет ликбез по ОБЖ в стоматологии.

Разберём частые процедуры, как они могут проводиться, как они должны проводиться с точки зрения оценки рисков и оптимума цена/качество — и как понять, что что-то пошло не так, не обладая медицинским образованием.

Так что, граждане, приготовьтесь, сейчас я вам вручу немного ответственности за своё здоровье.
Читать дальше →
Total votes 49: ↑43 and ↓6+37
Comments24

Релокация на машине в Армению

Reading time14 min
Views60K

Доброго дня всем хабровчанам. Примерно месяц назад я переехал из Москвы жить и работать в Ереван. С тех пор периодически меня спрашивают про то как мне удалось доехать до Армении на автомобиле, как вообще устроена релокация и как мне живется после переезда. Так что я подумал-подумал и решил написать об этом статью на Хабр.

Для тех кто заинтересовался
Total votes 88: ↑80 and ↓8+72
Comments247

Разрешение на полет дрона в 2022-м

Reading time5 min
Views116K

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

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

Читать далее
Total votes 45: ↑45 and ↓0+45
Comments51

Бесплатный персональный OpenVPN-сервер на базе Oracle Cloud

Reading time6 min
Views95K

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

Oracle, придя на рынок облачных сервисов, активно привлекает новых клиентов. И одним из инструментов такого привлечения являются Always Free сервисы - зарегистрировавшийся клиент может пользоваться каким-то достаточно ограниченным набором ресурсов, как это следует из названия, бесплатно и неограниченно во времени. В список этих ресурсов входит два compute инстанса (каждый 2 ядра, 1GB RAM, 45GB HDD), которые можно использовать подо что угодно, но в нашем случае мы можем построить на них полностью бесплатный OpenVPN-сервер, буквально не умея практически ничего, кроме тыкания в кнопку Next. Чем мы и займемся.

Читать далее
Total votes 39: ↑37 and ↓2+35
Comments123

Если вы не чистите зубы, то я их вам почищу: FAQ про гигиену

Reading time12 min
Views118K
image

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

Про чистку зубов есть очень много вопросов, поэтому пробежимся по основным:

  • Что будет, если не чистить зубы?
  • Можно ли чистить зубы редко, но ходить к стоматологу время от времени, чтобы он их вам «мощно почистил»?
  • Как проходит чистка зубов в стоматологии?
  • Почему швейцарцы чистят зубы вообще без пасты?
  • Работает ли жвачка?
  • Какие щётки выбирать и как? Что насчёт электрических?
  • Правда ли, что щётку надо выкидывать, когда хотя бы одна ворсинка отклоняется от вертикали?
  • Зачем нужны скребки для языка, межзубные ёршики, зубная нить и всё остальное?
  • Ирригатор заменяет чистку зубов щёткой?
  • Ополаскиватель для рта — хорошая тема?
  • Когда важнее чистить зубы — утром или вечером?
  • Чем ИТ-специалист отличается от среднего пациента по анамнезу относительно гигиены ротовой полости?
Читать дальше →
Total votes 165: ↑159 and ↓6+153
Comments209

Выявляем процессы с дисковой активностью в Linux

Reading time13 min
Views75K
TL;DR: статья рассказывает об удобном, быстром и надежном способе определения Linux-программ, записывающих данные на диск, что помогает в выявлении большой или аномально частой нагрузки на дисковую подсистему, а также позволяет оценить накладные расходы файловой системы. Это особенно актуально для SSD в ПК, EMMC и Flash-памяти в одноплатных компьютерах.
В ходе написания статьи обнаружилось, что запись нескольких килобайт данных на файловую систему BTRFS приводит к записи 3 мегабайт реальных данных на диск.

Введение

«Ой, ерунда, ячейки памяти на современных SSD выйдут из строя через десятки лет обычного использования, не стоит об этом беспокоиться, и уж тем более переносить swap, виртуальные машины и папку профиля браузера на HDD» — типичный ответ на вопрос о надежности твердотельных накопителей c гарантированными ≈150 TBW. Если прикинуть, сколько типичное ПО может писать данных, то кажется, что 10-20 ГБ в сутки — уже большая цифра, пусть будет максимум 40 ГБ, куда уж больше. При таких цифрах ответ вполне разумен — нужно 10 лет, чтобы достичь гарантированных значений по количеству перезаписи ячеек, при 40 ГБ записанных данных ежедневно.
Однако за 6 лет я пользуюсь уже третьим SSD: у первого вышел из строя контроллер, а второй начал перемещать данные между ячейками несколько раз в день, что оборачивалось 30-секундными задержками в обслуживании записи.

После 7 месяцев использования нового SSD я решил проверить количество записанных данных, как их сообщает сам диск через SMART.
19.7 ТБ.
Всего за 7 месяцев я использовал 13% от гарантированного количества записанных данных, притом, что он настроен в соответствии с рекомендациями по выравниваю разделов и настройке ФС, swap у меня почти не используется, диски виртуальных машин размещены на HDD!
Читать дальше →
Total votes 119: ↑117 and ↓2+115
Comments90

Принципы построения REST JSON API

Reading time8 min
Views336K

Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


Зачем


Надеюсь, читающий уже понимает, зачем ему вообще нужен именно REST api, а не какой-нибудь монстр типа SOAP. Вопрос в том, зачем соблюдать какие-то стандарты и практики, если браузеры вроде бы позволяют делать что хочешь.


  • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
  • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
  • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
  • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
Читать дальше →
Total votes 71: ↑55 and ↓16+39
Comments207

Профессиональная контейнеризация Node.js-приложений с помощью Docker

Reading time10 min
Views65K
Автор материала, перевод которого мы публикуем сегодня, работает DevOps-инженером. Он говорит, что ему приходится пользоваться Docker. В частности, эта платформа для управления контейнерами применяется на разных этапах жизненного цикла Node.js-приложений. Использование Docker, технологии, которая, в последнее время, является чрезвычайно популярной, позволяет оптимизировать процесс разработки и вывода в продакшн Node.js-проектов.

image

Сейчас мы публикуем цикл статей о Docker, предназначенных для тех, кто хочет освоить эту платформу для её использования в самых разных ситуациях. Этот же материал сосредоточен, в основном, на профессиональном применении Docker в Node.js-разработке.
Читать дальше →
Total votes 42: ↑34 and ↓8+26
Comments25

Анализ подходов к связыванию модулей в Node.js

Reading time7 min
Views3.2K
Многие разработчики Node.js для связывания модулей используют исключительно создание жёсткой зависимости с помощью require(), однако существуют и другие подходы, со своими плюсами и минусами. О них я в этой статье и расскажу. Будут рассмотрены четыре подхода:

  • Жёсткие зависимости (require())
  • Внедрение зависимостей (Dependency Injection)
  • Локаторы служб (Service Locator)
  • Контейнеры внедряемых зависимостей (DI Container)
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments0

Великая сила newtypes

Reading time7 min
Views4.8K
НовыйТип (newtype) — это специализированное объявление типа данных. Такое, что содержит лишь один конструктор и поле.

newtype Foo a = Bar a
newtype Id = MkId Word


Типичные вопросы новичка


В чём же отличие от data типа данных?

data Foo a = Bar a
data Id = MkId Word

Главная специфика newtype состоит в том, что он состоит из тех же частей, что и его единственное поле. Более точно — отличаясь от оригинала на уровне типа, но имеет такое же представление в памяти, да и вычисляется строго (не лениво).
Если вкратце — newtype более эффективны благодаря своему представлению.

Да это ничего не значит для меня… Буду использовать data
Не, ну в конце-концов, всегда можно включить расширение -funpack-strict-fields :) для строгих(не ленивых) полей или указать прямо

data Id = MkId !Word

Всё же сила newtype не ограничивается лишь эффективностью вычислений. Они значительно сильнее!
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments2

Погружение в разработку на Ethereum. Часть 0: блокчейн не нужен

Reading time7 min
Views13K
Наверняка многие из вас задумывались, зачем вообще понадобился блокчейн и Ethereum в частности. Кто-то возможно пошел дальше и нашел множество красивых характеристик: децентрализация, прозрачность, доверие без посредников, взломостойкость. Это же просто отлично, правда? Да, но…

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments18

15 советов по работе с Github

Reading time8 min
Views62K

Я 10 лет разрабатываю ПО, участвовал в нескольких open source-проектах и в многочисленных не-open source-проектах, работал в больших и малых командах, и везде мы использовали Github в качестве репозитория версионирования.

За это время я перепробовал разные рабочие процессы, и хочу поделиться советами, как построить эффективный и прагматичный рабочий процесс по созданию и сопровождению качественного ПО, который можно применять в любом проекте.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments25

Конференция DEFCON 23. «Как я сбивал назойливый дрон соседского ребёнка». Майкл Робинсон

Reading time19 min
Views45K
Большое спасибо за то, что пришли меня послушать! То, о чём я буду говорить, отличается от выступлений предыдущих спикеров. Сначала я хочу поблагодарить людей, которые помогали мне в подготовке этого выступления. Некоторые из них смогли тут присутствовать, некоторые нет. Это Алан Митчел, Рон МакГайер, Крис Тейлор и Кэти Херитадж и ещё несколько человек, которые захотели сохранить анонимность, поэтому их имена напечатаны на этой картинке чёрным цветом.



Мой сосед меня реально достал, а его ребёнок достал меня вдвойне! Меня раздражают его… сопли, можете заменить «сопли» более подходящим словом из четырёх букв! Но самая большая проблема возникла, когда у соседского парня появилось вот это – квадрокоптер с видеокамерой.



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



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

Я стал искать варианты адекватного ответа. Может быть, это?
Total votes 76: ↑68 and ↓8+60
Comments54

TOП-10: разбор лучших докладов HolyJS 2017 Moscow

Reading time19 min
Views17K

Действуем по старой схеме: я для вас отсматриваю подряд 10 докладов (бесплатно доступных на YouTube), делаю короткое описание содержимого, чтобы неинтересное можно было выбросить. Кроме того, с сайтов собираю ссылки на слайды и описания. Полученное сортирую и выдаю в порядке увеличения рейтинга — то есть в самом низу будет самый крутой доклад. Оценки — это не лайки на YouTube, а собственная оценочная система, она круче лайков.


Предыдущие части:



На этот раз объектом изысканий будет HolyJS 2017 Moscow — известная JavaScript-конференция, четвёртая по счёту. Более 600 JS-разработчиков собрались под одной крышей для того, чтобы обсудить настоящее и будущее JavaScript-сообщества с мировыми экспертами: Douglas Crockford, Lea Verou, Martin Splitt и так далее.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p.

Disclaimer: Все описания являются моим личным мнением. Всё написанное — плод моего больного воображения, а не искажённые цитаты докладчиков (это предостережение написано для того, чтобы докладчики меня не побили).

Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments11

Comedy. Акторы в Node.JS для гибкого масштабирования

Reading time14 min
Views16K

Привет, хабравчане! В этой статье я познакомлю вас с фреймворком Comedy — реализацией акторов в Node.JS. Акторы позволяют масштабировать отдельные модули вашего Node.JS приложения без изменения кода.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments36

Аутентификация в Node.js. Учебные руководства и возможные ошибки

Reading time12 min
Views42K
Однажды я отправился на поиск учебных руководств по аутентификации в Node.js/Express.js, но, к сожалению, не смог найти ни одного, которое меня бы полностью устроило. Некоторые были неполными, некоторые содержали ошибки в сфере безопасности, вполне способные навредить неопытным разработчикам.

Сразу скажу, что я всё ещё нахожусь в поиске надёжного, всеобъемлющего решения для аутентификации в Node/Express, которое способно составить конкуренцию Devise для Rails. Однако, удручающая ситуация в сфере руководств подвигла меня на подготовку этого материала. Тут я разберу некоторые наиболее распространённые ошибки в области аутентификации и расскажу о том, как их избежать.

image
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments3

Опыт работы со взломанным сервером

Reading time3 min
Views47K


Хочу поделиться своим опытом начинающего системного администратора. Так уж случилось, что мой первый блин комом — это было предложение заняться инфраструктурой в одной маленькой компании. Ситуация сложная. Никакой автоматизации, все вручную и по принципу: работает — не трогай, а если не работает и никто не заметил, то считай, что работает. Предыдущий сотрудник не оставил почти никакой документации. Вот доступ к серверам, кофемашина — там, вроде всё…
Читать дальше →
Total votes 62: ↑58 and ↓4+54
Comments51

Какой бывает HTML5-стриминг (и почему mp4-стриминга не существует)

Reading time6 min
Views53K
image

Нередко клиенты спрашивают, умеет ли наш сервер «mp4-стриминг в HTML5». В 99% случаев спрашивающий не понимает о чём говорит. В этом сложно винить клиентов: из-за путаницы с терминами, технической сложности и большого разнообразия вариантов стриминга запутаться очень легко.

В этой статье мы расскажем, какой бывает HTML5-стриминг, какие варианты хорошие, и почему, чёрт побери, нельзя говорить «mp4-стриминг».
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments53

Теория категорий на JavaScript. Часть 1. Категория множеств

Reading time35 min
Views35K


Абстракция – это одна из основных техник в ИТ. Любой язык программирования или моделирования, любая парадигма программирования (процедурная, функциональная, ООП, …) дают ответ на вопрос, как и от чего нужно абстрагироваться. Причём, адепты каждого подхода предлагают какой-то свой вариант абстракции.

Если вы хотите увидеть истинную, универсальную абстракцию, то вступайте в нашу… изучайте теорию категорий. В статье на примере категории множеств с картинками и JavaScript-кодом объясняются самые базовые понятия теории категорий: пределы, универсальное свойство. Рассматривается вычислительный аспект теории категорий.

Также немного говорится про классы, примеси и смеси в JavaScript.

Примеры из статьи можно посмотреть тут.
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments47
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity