Pull to refresh
0
@avakillread⁠-⁠only

User

Send message

Рисуй, чтобы победить

Reading time3 min
Views4.7K

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

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

Читать далее
Total votes 30: ↑29 and ↓1+28
Comments7

FactRuEval — соревнование по выделению именованных сущностей и извлечению фактов

Reading time6 min
Views12K
Соревнования по различным аспектам анализа текста проводятся на международной конференции по компьютерной лингвистике «Диалог» каждый год. Обычно сами соревнования проходят в течение нескольких месяцев до мероприятия, а на самой конференции объявляют результаты. В этом году планируются три соревнования:

  • по выделению именованных сущностей и фактов – FactRuEval;
  • по анализу тональности – SentiRuEval;
  • по исправлению опечаток – SpellRuEval.

Статья, которую вы начали читать, преследует три цели. Первая – мы хотели бы пригласить разработчиков систем автоматического анализа текстов принять участие в соревнованиях. Вторая – мы ищем помощников, которые могли бы разметить текстовые коллекции, на которых будут проверяться системы наших участников (это, во-первых, интересно, а во-вторых – вы сможете принести реальную пользу науке). Ну а третья – соревнования по выделению именованных сущностей и фактов проводятся на “Диалоге” впервые, и мы хотим рассказать всем заинтересованным читателям, как они будут происходить.

Узнать подробности про FactRuEval ...
Total votes 21: ↑21 and ↓0+21
Comments0

NLP. Основы. Техники. Саморазвитие. Часть 2: NER

Reading time19 min
Views50K
Первую часть статьи об основах NLP можно прочитать здесь. А сегодня мы поговорим об одной из самых популярных задач NLP – извлечении именованных сущностей (Named-entity recognition, NER) – и разберем подробно архитектуры решений этой задачи.

image
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments3

Сравниваем работу open source Python — библиотек для распознавания именованных сущностей

Reading time13 min
Views22K

Введение


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

Для решения это задачи я опробовал десятки решений в области обработки естественного языка, в том числе решения с открытым кодом и хотел бы поделиться опытом работы с open source Python — библиотеками для распознавания именованных сущностей.

Распознавание именованных сущностей


Несколько слов о самой проблеме. Named Entity Recognition (NER) — это направление технологии обработки человеческого языка, программная реализация которой позволяет находить в речи и тексте опредмеченные категории слов и словосочетаний. Сначала это были географические наименования, имена людей, организаций, адреса, однако в настоящее время это понятие сильной расширилось и с помощью NER мы ищем в тексте относительные и абсолютные даты, числа, номера и т.д.
Выявление именованных сущностей — это «ворота» в человеческий язык, оно позволяет выявлять и обрабатывать намерения человека, устанавливать связи слов в его речи и реальным миром.

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

Зачем нужны простые привычки: пример с прогулкой

Reading time9 min
Views31K

Чуть сложнее, чем кажется

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

Читать далее
Total votes 34: ↑31 and ↓3+28
Comments83

Квест как дипломный проект

Reading time3 min
Views63K
Думаю, большинству программистов хотелось написать свою игрушку. Кому-то хотелось реализовать свой RPG мир, кто-то грезил своей стрелялкой, а вот я всегда хотел сделать свой квест.

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

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

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

Читать дальше →
Total votes 69: ↑63 and ↓6+57
Comments33

Человечная декомпозиция работы

Reading time26 min
Views25K

img


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

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

Как справиться с декомпозицией задач и не перестараться

Reading time10 min
Views43K
Всем привет!

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


Где же та грань между адекватной постановкой задач и тотального хаоса? Поделюсь примером того, как к нам в «Спортмастере» периодически поступают задачи в разработку от бизнеса.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

LSTM – сети долгой краткосрочной памяти

Reading time8 min
Views209K

Рекуррентные нейронные сети


Люди не начинают думать с чистого листа каждую секунду. Читая этот пост, вы понимаете каждое слово, основываясь на понимании предыдущего слова. Мы не выбрасываем из головы все и не начинаем думать с нуля. Наши мысли обладают постоянством.

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

Решить эту проблемы помогают рекуррентые нейронные сети (Recurrent Neural Networks, RNN). Это сети, содержащие обратные связи и позволяющие сохранять информацию.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments4

Классификатор изображений

Reading time7 min
Views33K
Дана битовая матрица, содержащая закрашенное изображение круга, квадрата или треугольника.
Изображение может быть немного искажено и может содержать помехи.
Необходимо написать алгоритм для определения типа нарисованной фигуры по матрице.

Эта простая с первого взгляда задача встретилась мне на вступительном экзамене в DM Labs.
На первом занятии мы обсудили решение, а преподаватель (Александр Шлемов; он руководил и дальнейшей реализацией) показал, почему для решения лучше использовать машинное обучение.

В процессе дискуссии мы обнаружили, что наше решение производится в два этапа. Первый этап — фильтрация помех, второй этап — вычисление метрики, по которой будет проходить классификация. Здесь возникает проблема определения границ: необходимо знать, какие значения может принимать метрика для каждой фигуры. Можно проложить эти границы вручную “на глазок”, но лучше поручить это дело математически обоснованному алгоритму.
Эта учебная задачка стала для меня введением в Machine Learning, и я хотел бы поделиться с вами этим опытом.
Читать дальше →
Total votes 67: ↑63 and ↓4+59
Comments28

Поля расстояний Raymarching-а: объяснение и реализация в Unity

Reading time24 min
Views27K
image

Raymarching — это достаточно новая техника, используемая для рендеринга сцен реального времени. Она особенно интересна тем, что полностью вычисляется в шейдере экранного пространства. Другими словами, рендерер не получает доступа к данным мешей и сцена отрисовывается на одном четырёхугольнике, покрывающем всю область видимости камеры. Объекты в сцене задаются аналитическим уравнением, описывающим кратчайшее расстояние между точкой и поверхностью всех объектов сцены (поэтому полностью техника называется полями расстояний Raymarching-а). Оказывается, что даже при наличии только этой информации мы можем создавать поразительно сложные и красивые сцены. Более того, благодаря тому, что мы не используем полигональные меши (и вместо них применяются математические уравнения), здесь, в отличие от традиционного рендерера, можно задавать идеально плавные поверхности.


Snail Иниго Килеза была полностью создана при помощи raymarching. Другие примеры подвергнутых raymarching-у сцен можно найти на Shadertoy.

В этой статье мы сначала расскажем о фундаментальных понятиях и теории raymarching, а затем покажем, как реализовать простейший raymarcher в игровом движке Unity. Далее мы продемонстрируем, как на практике встроить raymarching в настоящую игру на Unity, позволив объектам с raymarching-ом перекрываться обычными GameObjects.

Полный код можно найти в этом репозитории Github.
Total votes 21: ↑21 and ↓0+21
Comments5

Make it True — Разработка логической игры на Unity

Reading time49 min
Views17K


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

Статья не являются руководством или уроком, хотя надеюсь что читатели смогут вынести что то полезное из нее. Рассчитано на разработчиков знакомых с Unity имеющих некоторый опыт в программировании.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments7

Как разрабатываются моды для Unity-игр: внедряемся в код игры

Reading time15 min
Views19K

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


В этой статье мы рассмотрим, какие методы используется для того, чтобы игра, написанная на Unity, могла запускать сторонние моды: модификации библиотек игры и самого движка, подмена адресов в таблице импорта dll, вмешательство в загрузку Mono Runtime и другие.


Total votes 16: ↑16 and ↓0+16
Comments3

Клара у Карла пароли украла и за битки продала: расшифровка эфира с Ашотом Оганесяном

Reading time12 min
Views7.8K

Неделю назад в нашем инстаграм-аккаунте выступил Ашот Оганесян — технический директор и основатель DeviceLock. Ашот ведет телеграм-канал Утечки информации и уже 20 лет занимается проблемами DLP.

Во время эфира Ашот отвечал на вопросы, которые задавали в комментариях в инстаграм и здесь, на Хабре. Делимся записью и расшифровкой интервью.
Total votes 33: ↑28 and ↓5+23
Comments1

Отображение данных в формате json на структуру C++

Reading time12 min
Views23K

В идеале хотелось бы определить структуру С++


struct Person {
 std::string name;
 int age;
 bool student;
} person;

передать экземпляр person в метод отображения вместе с данными json_data


map_json_to_struct(person, json_data)

после чего просто пользоваться заполненной структурой


std::cout << person.name << " : " << person.age;

StructMapping пытается решить эту задачу.

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments25

Трёхмерная графика с нуля. Часть 1: трассировка лучей

Reading time42 min
Views130K
image


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

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

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


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

Когда принцип «к чёрту всё, бери и делай!» не работает: заметки прокрастинатора

Reading time8 min
Views29K
Осторожно, этот текст написан настоящим прокрастинатором. Желание написать статью на тему борьбы с прокрастинацией появилось у меня летом 2019 года, приступила к работе в ноябре и думала, что выпущу статью к концу декабря — как раз когда все подводят итоги и планируют начать новую жизнь. Сегодня 17 февраля 2020, и у меня еще не готов последний абзац. Тем не менее в этой статье я расскажу, что все-таки помогло мне выкарабкаться из пучины «я сделаю это завтра/в выходные/в понедельник…» и закончить работу.


Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments46

Как не пропустить невалидный код в репозиторий

Reading time6 min
Views6K

Зачем это необходимо


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


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

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

Дайджест интересных материалов для мобильного разработчика #333 (10 — 16 февраля)

Reading time4 min
Views3.4K
В новом дайджесте навыки iOS-разработчиков, тестирование пушей в эмуляторе, распознавание объектов и текстов, четыре года разработки и идеи больших хитов, разочарование во Flutter и исследования монетизации.

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

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

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

Мы полагаем, что разработчикам следует изучать исходники программ, оказавших большое влияние, подобно тому, как архитекторы изучают здания, оказавшие влияние на архитектуру (и критикуют их). Чем повторять те же ошибки снова и снова, мы должны изучить большую работу, проделанную до нас, и вынести из неё уроки.
Читать дальше →
Total votes 74: ↑69 and ↓5+64
Comments68
1

Information

Rating
Does not participate
Registered
Activity