Pull to refresh
3
0
Иван Шафран @IvanShafran

Android разработчик

Send message

Имитация рисования от руки на примере RoughJS

Reading time8 min
Views11K
RoughJS это маленькая (<9 КБ) графическая библиотека JavaScript, позволяющая рисовать в эскизном, рукописном стиле. Она позволяет рисовать на <canvas> и с помощью SVG. В этом посте я хочу ответить на самый популярный вопрос о RoughJS: как это работает?


Немного истории


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

Вкратце изучив вопрос, я нашёл статью Джо Вуда и его коллег под названием Sketchy rendering for information visualization. Описанные в ней техники стали основой библиотеки, особенно в рисовании линий и эллипсов.

В 2017 году я написал первую версию библиотеки, которая работала только на Canvas. Решив задачу, я потерял к ней интерес. Год спустя я много работал с SVG, и решил адаптировать RoughJS для работы с SVG. Также я изменил структуру API, сделав её более простой, и сосредоточился на простых векторных графических примитивах. Я рассказал о версии 2.0 на Hacker News и внезапно она обрела огромную популярность. В 2018 году это был второй по популярности пост ShowHN.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments4

Хабр Конвертер: чтобы версталось легко

Reading time3 min
Views14K
Наверняка многие из вас хотя бы однажды пользовались хабраконвертером, который официально рекомендован администрацией Хабра — https://shirixae.github.io/habraconverter-v2/. Несколько лет назад его создал хабравчанин meta4, а потом доработал Shirixae. Принцип простой: открываете гуглодок с постом, Ctrl-A, Ctrl-C и вставляете в окно конвертера. Нажимаете кнопку «Конвертировать» и получаете готовый код вёрстки, который можно вставлять в редактор Хабра и публиковать. Только перед этим нужно пройтись и поправить кое-какие мелочи.

И всё бы хорошо, если верстать приходится не слишком часто. Или посты небольшие, несложные. Но если вы верстаете помногу, и в постах есть и картинки, и таблицы, и куски кода, то из раза в раз приходится делать рутину: вставлять нужные пустые строки и убирать лишние, заменять теги <sоurce> на <cоde>, и т.д. и т.п. Мы решили потратить день, чтобы потом долетать за час, и допилили конвертер.

Новая версия лежит тут, а под катом — перечисление доработок.
Читать дальше →
Total votes 68: ↑67 and ↓1+111
Comments31

Медицинская страховка в путешествии: подробная инструкция

Reading time9 min
Views22K


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

Я хочу попробовать обобщить всё то, что должен знать турист о медицинской страховке перед тем, как выезжать за рубеж, и составить что-то вроде подробной памятки:

  • Насколько страховка обязательна и как можно сэкономить.
  • Какие разновидности страховок вообще бывают.
  • Что делать, если ты от души выпил и решил прыгнуть с парашютом в Камбодже.
  • Как не купить репатриацию останков вместо нормальной страховки.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments41

Какие ошибки мы совершили на Product Hunt и как их избежать

Reading time7 min
Views7.8K
26 августа 2015 года мы (Rubrain.com — каталог лучших русских фрилансеров. Новый проект бывших топ-менеджеров Fl.ru) опубликовались на Product Hunt. И хотя мы набрали достаточное количество голосов для вхождения в ТОП-10, мы заняли 15-е место. В этой статье я хочу рассказать о том, на какие грабли мы наступили, как получить максимальный эффект от площадки и чего вообще ожидать от Product Hunt.



Product Hunt — сообщество людей, интересующихся новыми продуктами и технологиями. По легенде вхождение в ТОП-10 (еще лучше в ТОП-3 дня или ТОП-10 недели) по итогам дня голосования позволяет попасть в e-mail рассылку следующего дня и получить внимание прессы, предложения об инвестициях и мировую известность. Голосование происходит после 0:00 и до 23:59 по Тихоокеанскому времени (Западное побережье США: Сан-Франциско, Сиэтл, Лос-Анжелес и т.д.; -11 часов разницы с Москвой). Для участия и голосования необходим Twitter-аккаунт.

Прежде чем начать работу по подготовке вашего проекта к публикации на Product Hunt, проанализируйте какие сервисы получают максимальное количество голосов и внимания. Вы можете обнаружить, что успехом пользуются всякого рода агрегаторы и каталоги, а также действительно крутые продукты вроде Tesla, Nebia Shower, HyperLapse и т.д. Первое место в списке "50 Most Upvoted Products" занимает проект Startup Stash. Именно его историю продвижение на Product Hunt вы встретите при поиске историй успеха. Введите * в поле поиска на сайте Product Hunt и вы увидите список продуктов с наибольшим количеством голосов.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments2

Продвижение игр на Google Play

Reading time6 min
Views67K


У моих игр довольно много загрузок на Google Play (больше 20 млн.), наверное поэтому, меня часто спрашивают про продвижение. Если кто-то из разработчиков пишет мне в личку или почту, готов поспорить, все сведется к вопросу: «Как ты продвигаешь свои игры, чувак?». Все думают, что у меня есть какой-то секрет (нет). Ладно, давайте я попробую сформулировать то, что знаю и будем надеяться, что это будет кому-то полезно. По крайней мере, я смогу давать ссылку на этот пост.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments6

FAQ: что надо знать путешественнику-гику про прививки перед поездкой

Reading time11 min
Views34K
Мадагаскар закрывает границы!Вакцина — это способ показать иммунной системе сигнатуру угрозы, к которой за несколько циклов обучения будет выработан иммунный ответ.

Любая борьба организма с инфекционным заболеванием — это попытки распознать сигнатуру угрозы и выработать контрмеры. В общем случае этот процесс ведётся до полного результата, то есть до выздоровления. Однако могут быть инфекции, которые:

  • Убивают носителя быстрее, чем будет выработан иммунный ответ.
  • Меняются быстрее, чем иммунная система сможет «распознать» патогены.
  • Маскируются и прячутся в местах, где очень сложно получить доступ к патогену.

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

Давайте сначала разберёмся с ликбезом, потом перейдём к путешествиям и списку действий.

Почему путешествия опасны?


Предположим, вы летите в Африку. Там есть повышенный риск жёлтой лихорадки. Простая вакцина обойдётся вам примерно в 1 500 рублей вместе с приёмом терапевта и услугами процедурного кабинета, вакцина более высокого уровня — в 3 000 рублей. Вылечиться от жёлтой лихорадки специализированными медикаментами нельзя (то есть можно только поддерживать ресурсы организма, пока он сам не справится), заболеть легко, летальность — около 10%, основной вектор — комары. Побочных эффектов у вакцины почти нет. Стоит вакцинация того? Наверное, да. Но решать вам.
Читать дальше →
Total votes 113: ↑107 and ↓6+101
Comments97

Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

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

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

Total votes 57: ↑56 and ↓1+55
Comments9

Подборка: 5 полезных сервисов для написания статей на английском

Reading time5 min
Views24K


Всем привет! Меня зовут Марго, я профессиональный маркетолог и редактор, в последние пару лет фокусируюсь на продвижении за рубежом и много пишу на английском. Я решила поделиться ссылками на приложения и сайты, которые помогают мне в ежедневной работе при создании контента. Надеюсь, список поможет изучающим английский и тем, кто публикует англоязычные материалы на Хабре.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments29

Курс MIT «Безопасность компьютерных систем». Лекция 16: «Атаки через побочный канал», часть 1

Reading time15 min
Views9.2K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3
Лекция 16: «Атаки через побочный канал» Часть 1 / Часть 2 / Часть 3
Total votes 26: ↑24 and ↓2+22
Comments0

Нейронные сети в Android, Google ML Kit и не только

Reading time4 min
Views18K
Итак, вы разработали и натренировали свою нейронную сеть, для выполнения какой-то задачи (например то же распознавание объектов через камеру) и хотите внедрить ее в свое приложение на андроид? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments0

Настраиваем автоматический запуск UI тестов Android приложения через TeamCity

Reading time5 min
Views5.9K
Рано или поздно любой тестер, развивающий практики автотестирования, сталкивается с проблемой автономного выполнения своих тестов. Причем, если специалист опытный, то он старается столкнуться с этим как можно раньше. Так и я, после первого успешного прогона автотеста локально, решил сразу настроить запуск в TeamCity.

Отмечу, что у нас в компании экспертизы по удаленному запуску инструментальных тестов Android практически нет, поэтому приходилось усердно гуглить, но и там развернутых гайдов не нашел. Посему и решил запилить данную инструкцию.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments0

Как создать свой датасет с Киркоровым и Фейсом на Яндекс.Толоке

Reading time6 min
Views33K


Нейронными сетями уже никого не удивишь. Практически каждый человек знает, что такое машинное обучение, линейная регрессия, random forest. Каждый год тысячи людей проходят курсы по машинному обучению на ODS и Coursera. Любой школьник за пару недель теперь может освоить keras и клепать нейроночки. Но в нейронных сетях, как и во всем машинном обучении, помимо создания хорошего алгоритма, необходимы данные, на которых алгоритм будет обучаться.

Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments27
2

Information

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