Pull to refresh
0
0
hellmonkey @HellMonkey

Software Engineer

Send message

Обработка древовидных структур и унифицированное AST

Reading time11 min
Views18K

Предыдущая статья серии была посвящена теории парсинга исходников с использованием ANTLR и Roslyn. В ней было отмечено, что процесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат (Unified AST, UAST);
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена второму этапу, а именно: обработке AST с помощью стратегий Visitor и Listener, преобразованию AST в унифицированный формат, упрощению AST, а также алгоритму сопоставления древовидных структур.



Содержание


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

Теория и практика парсинга исходников с помощью ANTLR и Roslyn

Reading time23 min
Views40K

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

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



К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


Весь процесс анализа кода может быть разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments19

Что такое свёрточная нейронная сеть

Reading time13 min
Views264K


Введение


Свёрточные нейронные сети (СНС). Звучит как странное сочетание биологии и математики с примесью информатики, но как бы оно не звучало, эти сети — одни из самых влиятельных инноваций в области компьютерного зрения. Впервые нейронные сети привлекли всеобщее внимание в 2012 году, когда Алекс Крижевски благодаря им выиграл конкурс ImageNet (грубо говоря, это ежегодная олимпиада по машинному зрению), снизив рекорд ошибок классификации с 26% до 15%, что тогда стало прорывом. Сегодня глубинное обучения лежит в основе услуг многих компаний: Facebook использует нейронные сети для алгоритмов автоматического проставления тегов, Google — для поиска среди фотографий пользователя, Amazon — для генерации рекомендаций товаров, Pinterest — для персонализации домашней страницы пользователя, а Instagram — для поисковой инфраструктуры.


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


Задача


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


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

Синтез изображений с помощью глубоких нейросетей. Лекция в Яндексе

Reading time15 min
Views48K
Пусть в блоге Яндекса на Хабрахабре эта неделя пройдет под знаком нейронных сетей. Как мы видим, нейросети сейчас начинают использоваться в очень многих областях, включая поиск. Кажется, что «модно» искать для них новые сферы применения, а в тех сферах, где они работают уже какое-то время, процессы не такие интересные.

Однако события в мире синтеза визуальных образов доказывают обратное. Да, компании еще несколько лет назад начали использовать нейросети для операций с изображениями — но это был не конец пути, а его начало. Недавно руководитель группы компьютерного зрения «Сколтеха» и большой друг Яндекса и ШАДа Виктор Лемпицкий рассказал о нескольких новых способах применения сетей к изображениям. Поскольку сегодняшняя лекция — про картинки, то она очень наглядная.


Под катом — расшифровка и большинство слайдов.

Total votes 87: ↑84 and ↓3+81
Comments10

«Он видел их семью своими глазами»

Reading time6 min
Views65K

Можешь выбрать подходящую к заголовку поста картинку?





Тогда научи робота! Он тоже хочет.


Команда проекта Открытый корпус просит хабралюдей помочь разметить свободно доступный (CC-BY-SA) корпус текстов. Под катом мы расскажем о том, что такое корпус, зачем он нужен, как обстоят дела с корпусами в России и за рубежом, почему так плохо и какой у нас план.

Читать дальше →
Total votes 155: ↑150 and ↓5+145
Comments116

Живёт ли кракен в Море Кракена? Какие формы жизни мы могли бы найти на Титане?

Reading time10 min
Views31K
Это перевод статьи Пола Паттона, опубликованной на сайте www.universetoday.com.


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

Может ли на большом спутнике Сатурна, Титане, существовать жизнь?
Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments33

Видео Луны в 4K: ролик, который стоит посмотреть на большом ТВ

Reading time1 min
Views19K


Команда астрономов из обсерватории Маунт Джон, Новая Зеландия, направила объектив мощного телескопа с 61-см рефлектором на естественный спутник Земли. При этом все, что «видел» телескоп, снималось на видео в качестве 4К.

Видеоролик продолжительностью в 5 минут ученые выложили в Сеть. На этом видео очень хорошо видны все особенности поверхности Луны, включая кратеры и прочие объекты.
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments11

Что я узнал о будущем после прочтения 100 научно-фантастических книг

Reading time10 min
Views55K
Что я узнал о будущем после прочтения 100 научно-фантастических книг

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

Я начал читать научную фантастику, просто чтобы скоротать время. У меня остались хорошие воспоминания о прочтении «Парк Юрского периода» в детстве. Я продолжил читать, потому что я заметил, что эта книга дала мне кое-что: сильное воображение, нелюбовь к обыденности.

Я поймал себя на том, что мои идеи отличаются от тех, которые множество черпают из тех же статей TechCrunch, Hacker News, Хабрахабра и других «ежедневных» сайтов жителей Силиконовой (Кремниевой) долины. Мой бизнес — это продажа идей, а эти книги одновременно настоящее сокровище и мой инструментарий.

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

Я думаю, что чтение этих книг помогло мне и в создании идеи и в движении к ней.

Каждая хорошая научная фантастика, по сути, это мысленный эксперимент, и я хотел бы запустить свой собственный прямо сейчас:
Ещё две тысячи слов
Total votes 46: ↑43 and ↓3+40
Comments125

Анализ существующих подходов к распознаванию лиц

Reading time14 min
Views149K
С завидной регулярностью на Хабре появляются статьи, рассказывающие о тех или иных методах распознавания лиц. Мы решили не просто поддержать эту замечательную тему, но выложить наш внутренний документ, который освещает пусть и не все, но многие подходы к распознаванию лиц, их сильные и слабые места. Он был составлен Андреем Гусаком, нашим инженером, для молодых сотрудников отдела машинного зрения, в образовательных, так сказать, целях. Сегодня предлагаем его все желающим. В конце статьи – впечатляющих размеров список литературы для самых любознательных.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments10

В Швейцарии нашли способ хранить информацию в ДНК миллион лет

Reading time1 min
Views10K
image

Группа учёных из швейцарской высшей технической школы Цюриха предложила способ хранения цифровых данных в ДНК, который, предположительно, позволить извлечь закодированную информацию даже через миллион лет. Для этого исследователи поместили молекулярные цепочки в шарики кварца.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments17

Чтобы распознавать картинки, не нужно распознавать картинки

Reading time18 min
Views236K
Посмотрите на это фото.



Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?

Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
Осторожно, тяжелые гифки
Total votes 263: ↑258 and ↓5+253
Comments104

Визуализация архитектурного освещения

Reading time3 min
Views26K
Простой метод, рассказанный в школе светодизайна LiDS, позволяющий из дневной фотографии здания сделать его вечерний вид и создать архитектурное освещение. Этот метод визуализации применяют студенты-архитекторы для своих работ, но его можно использовать любому человеку, который захочет придумать освещение, например, для своей дачи.



Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments23

Искусственный интеллект не уничтожит мир, но может забрать вашу работу

Reading time2 min
Views22K


Дискуссии об искусственном интеллекте и его возможной роли или модели поведения в этом мире не утихают. Чем ближе человек подходит к возможности создания ИИ, тем больше специалистов втягиваются в обсуждение. К примеру, Стивен Хокинг и Илон Маск считают, что ИИ может стать концом нашей цивилизации. Примерно так же думает и Билл Гейтс.

Но один из лучших специалистов мира по ИИ Эндрю Ын, работающий сейчас в Baidu, считает, что искусственный интеллект не угрожает жизни и здоровью человека, а также всей нашей цивилизации. По мнению Эндрю, переживать стоит не из-за возможного появления Терминатора, больше внимания стоит уделять таким устройствам, как роботизированные грузовики. Справедливости ради нужно отметить, что проблема, которая обсуждается ниже, касается не «чистого ИИ», то есть действительно машинного разума, а, скорее, умных устройств с элементами искусственного интеллекта.
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments71

Ход «Voronoi»

Reading time9 min
Views27K

Вместо предисловия


Урок русского языка в грузинской нерусской школе.
Учительница:
— Дэти, это нэльзя понять, это надо запомнить: ОТ ВАС пишется раздельно, а
КВАС — вместе.

Анекдот взят тут.

Введение


На написание статьи вдохновила игра «Wesnoth» — пошаговая стратегия с элементами RPG. В этой игре персонажи перемещаются по карте, состоящей из шестиугольных полигонов. Таким образом, окруженный со всех сторон персонаж может быть атакован шестью вражескими. По этой причине тактическая составляющая в игре очень важна. Возник вопрос: как повлияет на игровой процесс переход от карты с фиксированной геометрией полигонов на карту с произвольной геометрией?
Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments21

Могут ли нейронные сети помочь скопировать мозг?

Reading time2 min
Views26K
Жаль только — жить в эту пору прекрасную уж не придется — ни мне, ни тебе. Н.Некрасов.

Говорят, что мозг-де можно смоделировать на компьютере, нейронные сети есть модель мозга, можно скопировать сознание человека.

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

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

В целом добавим, что нейронов в мозге до 100 миллиардов, и получается такая комбинация вариантов, что смоделировать эту систему нельзя на данном этапе развития человека.
Читать дальше →
Total votes 18: ↑9 and ↓90
Comments14

Что скрывают нейронные сети?

Reading time5 min
Views115K
Статья является вольным переводом The Flaw Lurking In Every Deep Neural Net.

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

В статье "Интригующие свойства нейронных сетей" за авторством Christian Szegedy, Wojciech Zaremba, Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian Goodfellow and Rob Fergus, команды, включающей авторов из проекта Google по глубокому обучению, кратко описываются два открытия в поведении нейронных сетей, противоречащие тому, что мы думали прежде. И одно из них, честно говоря, поражает.
Читать дальше →
Total votes 109: ↑101 and ↓8+93
Comments96

Выжимки из «Психбольницы в руках пациентов»

Reading time4 min
Views86K
Недавно я прочитал книгу Алана Купера «Психбольница в руках пациентов». Из нее мне удалось почерпнуть ряд идей на тему «как улучшить разработку». Ниже ряд рекомендаций из книги, которые я беру на вооружение.
Вдохновил меня Milfgard вот этим постом. Попробую прочитать все интересные для меня книги из этого списка.


Читать дальше →
Total votes 33: ↑27 and ↓6+21
Comments10

Имплантат способен восстановить функции повреждённого спинного мозга

Reading time2 min
Views18K


Учёные и инженеры из Федеральной политехнической школы Лозанны и швейцарского исследовательского центра NCCR Robotics создали не имеющий аналогов имплантат, который может привести к революции в протезировании. Имплантат, названный e-dura, позволяет «чинить» повреждения спинного мозга и уже успешно проявил себя в многомесячных опытах на животных. Сейчас исследователи готовятся к опытам на людях и готовят прототип к выходу на рынок. Об этом сообщает ресурс Robohub.
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments20

Откуда есть пошло комплексное число

Reading time3 min
Views150K
В современной математике комплексное число является одним из фундаментальнейших понятий, находящее применение и в «чистой науке», и в прикладных областях. Понятно, что так было далеко не всегда. В далекие времена, когда даже обычные отрицательные числа казались странным и сомнительным нововведением, необходимость расширения на них операции извлечения квадратного корня была вовсе неочевидной. Тем не менее, в середине XVI века математик Рафаэль Бомбелли вводит комплексные (в данном случае точнее сказать, мнимые) числа в оборот. Собственно, предлагаю посмотреть, в чем была суть затруднений, доведших в итоге солидного итальянца до подобных крайностей.
Читать дальше →
Total votes 144: ↑139 and ↓5+134
Comments59

Шум Перлина (Perlin Noise)

Reading time10 min
Views71K
Доброго времени суток. Предлагаю Вашему вниманию перевод статьи про шум Перлина (вот этой). Ссылки на эту статью уже мелькали на хабре (тут), но перевод статьи мне не попался. Так что надеюсь кому-либо он может оказаться полезен.

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

Если посмотреть на многие вещи в природе, вы заметите, что они являются фрактальными. Они имеют различные уровни детализации. Типичным примером является очертание горного хребта. Оно содержит значительные различия в высоте (горы), средние изменения (холмы), небольшие вариации (валуны), крошечные изменения (камни) и так далее. Посмотрите на что угодно: распространение пятен травы на поле, волн в море, движение муравьев, движение ветвей дерева, узоры из мрамора, ветра. Все эти явления поддаются той же схеме, в больших и малых вариациях. Функция шума Перлина воссоздает это, просто складывая функции шума в различных масштабах.

Для создания функции шума Перлина, вам нужны две вещи, функции шума и функция интерполяции.
Читать дальше →
Total votes 67: ↑52 and ↓15+37
Comments22
1
23 ...

Information

Rating
Does not participate
Location
Киевская обл., Украина
Date of birth
Registered
Activity