Pull to refresh
20
0
Иван Петропольский @ipetropolsky

Фронтенд-разработчик

Send message

Улучшение Visual Studio Code для новичков

Reading time5 min
Views47K

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

Читать далее
Total votes 18: ↑11 and ↓7+11
Comments29

Игра мечты, которую я делаю вместе с женой (Часть 0)

Reading time3 min
Views34K

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

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

Хитрости разработки Street Fighter II

Reading time12 min
Views10K
image

Часть 1: бумажный след


В конце 90-х в мир аркадных автоматов пришла Capcom. Эта компания из Осаки, казалось, создавала один хит за другим: Ghouls'n Ghosts (1988 год), Final Fight (1989 год), Street Fighter II (1991 год), не говоря уже о множестве других превосходных игр.

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

Последние шесть месяцев я тратил своё свободное время на изучение историй успеха Capcom и, в частности, истории происхождения Street Fighter II. Инженерные решения, ставшие основой CPS-1 были потрясающими, но не менее интересной мне показалась история о том, как разработчики планировали заполненность ROM при помощи бумаги и ножниц.
Читать дальше →
Total votes 85: ↑85 and ↓0+85
Comments9

Полезные консольные Linux утилиты

Reading time13 min
Views116K

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


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Total votes 96: ↑92 and ↓4+110
Comments110

Что в стоматологии поменялось за 30 лет, и почему заниматься наукой в России так больно

Reading time13 min
Views52K
image
Кариес средней стадии, зубы, на которых будет сниматься ткань, изолированы коффердамом. Это настолько очевидно, просто и так улучшает результат даже простых вмешательств, что в регионах вас сожгут на костре за одну только мысль делать так постоянно.

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

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

У нас стоят 3D-принтеры. Мы печатаем на них навигационные шаблоны с дырками, чтобы вставить вам в рот форму, полученную фотограмметрией (панорамной съёмкой камерой внутри рта). Они встают чуть ли не со щелчком ровно по зубам и дают точность до сотых долей миллиметра по позиционированию имплантов. У нас есть ещё много игрушек, но главное изменение в медицине и в стоматологии не в них.

Главное — то, что примерно с появлением Интернета поменялся научный подход. А мы в России отстали в своём консерватизме лет на 30. Но я пришёл сюда не ныть, поэтому расскажу и покажу на конкретных примерах проблемы карательной стоматологии и возможные решения. Если вы готовы вкладывать в прикладную науку, конечно.
Total votes 152: ↑146 and ↓6+191
Comments239

Ansible — давайте попробуем

Reading time8 min
Views137K
Ansible — сравнительно молодая система управления конфигурацией, его история насчитывает чуть более трех лет. Но, несмотря на это, он стремительно и быстро ворвался в мир систем управления конфигурацией, потеснив Chef, Puppet и SaltStack.

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

Итак, чем же хорош ansbile:
  • низкий порог входа;
  • декларативный язык описания конфигурации;
  • на управляемые узлы не нужно устанавливать никакого дополнительного ПО;
  • просто написать дополнительный модуль.

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments25

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон, часть 3

Reading time13 min
Views45K

В этой части мы перестаём говорить о простом и приятном и начинаем говорить о трудном. Переменные в Ansible: scope, precedence, рекурсивная интерполяция. Для тех, кто дочитает до конца, маленький бонус: упрощённая таблица приоритетов, с которой можно жить. Предыдущие части: 1, 2.


Обычно рассказ про переменные в Ансибл начинают с чего-то очень простенького, что создаёт у читателя иллюзию, что переменные в Ансибл — это как в любом другом языке программирования. Мутабельные или немутабельные, локальные и глобальные. Это не так.


Это не так.


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


Обратите внимание — я сказал "значения", потому что "переменные" — это всего лишь имена к значениям. У переменных свой глубокий внутренний мир, и про него во второй части.

Читать дальше →
Total votes 17: ↑16 and ↓1+21
Comments78

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон, часть 2

Reading time17 min
Views64K

Я продолжаю выразительно пересказывать документацию Ансибла и разбирать последствия её незнания (ссылка на предыдущую часть).


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


Мы будем разбирать каждый элемент инвентори (кроме host_group_vars plugin) и обсуждать зачем он, как его использовать правильно, и как неправильно.


Оглавление:


  • Что такое хост? (и немного про транспорты)
  • Доступ IP vs FQDN; inventory_hostname vs ansible_host
  • ansible_user — писать или не писать?
  • Группы
  • Переменные: в инвентори или в плейбуку?
  • Классификация инвентори по происхождению.
Читать дальше →
Total votes 25: ↑24 and ↓1+33
Comments16

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон

Reading time12 min
Views142K

Я делаю много ревью для чужого кода на Ансибл и много пишу сам. В ходе анализа ошибок (как чужих, так и своих), а так же некоторого количества собеседований, я понял основную ошибку, которую допускают пользователи Ансибла — они лезут в сложное, не освоив базового.


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


Ожидаемый уровень читателя — уже написано несколько тысяч строк ямла, уже что-то в продакшене, но "как-то всё криво".

Читать дальше →
Total votes 88: ↑86 and ↓2+108
Comments67

Разбор задач второго этапа Школы программистов HeadHunter 2017

Reading time8 min
Views21K
Второй этап отбора в Школу программистов закончился. Многие из тех, кто поступал в Школу, просили рассказать алгоритмы решения задач, а главное — прислать комбинации, на которых их программа не работает. В этой статье будут описаны решения предлагаемых задач, а в конце статьи вы увидите ссылку на github, где выложен код описанных решений, код программы проверки и тестовые кейсы. Весь код написан на java (хотя решение второй задачи легче писать на питоне). Не буду утверждать, что это единственные правильные решения, существуют и другие, но эти мне нравятся больше всего.


Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments5

TCP против UDP или будущее сетевых протоколов

Reading time27 min
Views174K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Total votes 162: ↑159 and ↓3+156
Comments75

Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

Reading time13 min
Views29K
“Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


Что за игра-то? И кто “мы”?


Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
Остальное под катом - осторожно, тяжелые пиксельартные картинки
Total votes 95: ↑91 and ↓4+87
Comments51

Про одного парня

Reading time14 min
Views192K
История реальная, я все видел своими глазами.

Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
Читать дальше →
Total votes 272: ↑239 and ↓33+206
Comments247

Пользовательские атрибуты в Python

Reading time11 min
Views188K
Вы когда нибудь задумывались о том, что происходит, когда вы ставите точку в python? Что скрывает за собой символ str(“\u002E”)? Какие тайны он хранит? Если без мистики, вы знаете как происходит поиск и установка значений пользовательских атрибутов в python? Хотели бы узнать? Тогда… добро пожаловать!
Читать дальше →
Total votes 101: ↑96 and ↓5+91
Comments20

Парсинг JSON — это минное поле

Reading time25 min
Views158K
image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

Читать дальше →
Total votes 170: ↑164 and ↓6+158
Comments60

Power Query: стероиды для MS Excel и Power BI

Reading time7 min
Views211K
image

В данной статье я хочу рассказать о некоторых возможностях бесплатной и крайне полезной, но пока еще мало известной надстройки над MS Excel под названием Power Query.

Power Query позволяет забирать данные из самых разных источников (таких как csv, xls, json, текстовых файлов, папок с этими файлами, самых разных баз данных, различных api вроде Facebook opengraph, Google Analytics, Яндекс.Метрика, CallTouch и много чего еще), создавать повторяемые последовательности обработки этих данных и загружать их внутрь таблиц Excel или самого data model.

И вот под катом вы можете найти подробности всего этого великолепия возможностей.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments22

Gulp.watch: ловим ошибки правильно

Reading time4 min
Views46K
Во всех современных системах сборки фронтенда есть режим watch, при котором запускается специальный демон для автоматической пересборки файлов сразу после их сохранения. Также он есть и gulp.js, но с некоторыми особенностями, делающими работу с ним немного сложней. Работа gulp.js основана на обработке файлов как потоков данных (streams). И ошибки в потоках не всегда можно перехватить, а когда ошибка случается, то будет выброшено неперехваченное исключение и процесс завершится.

Чтобы этого не происходило, и watcher мог игнорировать отдельные ошибки и запускаться снова и снова при сохранении файлов, в gulp нужно сделать несколько дополнительных настроек, о которых и расскажется в этой статье.
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments14

Школа программистов HeadHunter — открываем набор 2015/16

Reading time5 min
Views22K
Школа программистов

Сентябрь — начало учебного года не только в школах и университетах. HeadHunter в очередной (уже шестой!) раз объявляет набор в Школу программистов. В этом году, как и в предыдущем, мы будем готовить full-stack разработчиков, готовых ко всем вызовам современной web-разработки.

Обучение будет проходить два раза в неделю в вечернее время в московском офисе HeadHunter рядом с метро Алексеевская. Для поступления в школу необходимо заполнить анкету на сайте и пройти небольшое тестирование. Прошедшим этот этап кандидатам мы вышлем дополнительные задания, по результатам которых пригласим вас на собеседование.
Что мне даст школа программистов HeadHunter?
Total votes 39: ↑22 and ↓17+5
Comments18

Быль о типографе

Reading time2 min
Views15K
Было время, когда каждый веб-разработчик писал свой типограф или думал о нём. Я не стал исключением и написал типограф на PHP. Но как сделать типограф без нормальной поддержки UTF-8, в то время я не представлял, в итоге забросил идею.

Прошло время, но идея создания типографа не оставляла, и я решил написать его уже на JavaScript.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments12

Анализ рендеринга через Skia Debugger: как можно найти самые дорогие для отрисовки элементы

Reading time4 min
Views23K
Доброго дня, недавно я решал проблему притормаживания скролла на страницах Почты Mail.Ru. Особенно эта проблема была заметна на retina-дисплеях. После простого анализа я пришел к выводу, что одна из основных проблем — это медленная отрисовка страницы.

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

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


Читать дальше →
Total votes 76: ↑72 and ↓4+68
Comments8
1
23 ...

Information

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