Search
Write a publication
Pull to refresh
2
0

Пользователь

Send message

Синтаксический разбор предложения русского языка

Reading time6 min
Views25K
В данной статье описывается процесс синтаксического анализа предложения русского языка с использованием контекстно-свободной грамматики и алгоритма LR-анализа.

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

В общем, процесс анализа предложения естественного языка выглядит следующим образом: (1) разбиение предложения на синтаксические единицы — слова и словосочетания; (2) определение грамматических параметров каждой единицы; (3) определение синтаксической связи между единицами. На выходе — абстрактное дерево разбора.
Читать дальше →

Библиотека асинхронных виджетов qt-async

Reading time10 min
Views7.5K
Всем доброго времени суток. Хочу немного рассказать о своём проекте qt-async, возможно кому-то он покажется интересным или даже полезным.

Асинхронность и многопоточность уже давно и серьезно входит в обиход разработчиков. Многие современные языки и библиотеки разрабатываются с прицелом на асинхронное использование. Язык С++ тоже потихоньку движется в этом направлении — появились std::thread, std::promise/future, должны вот-вот завезти корутины и networking. Библиотека Qt тоже не отстает, предлагая свои аналоги QThread, QRunnable, QThreadPool, QFuture и т.п. При этом виджетов для отображения асинхронных действий в Qt я не нашел (возможно плохо искал, поправьте, если я ошибаюсь).

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

Apple Music для разработчика

Reading time17 min
Views13K

Вводные слова


Как бы ни ругали Apple за закрытость платформы и самой экосистемы, некоторые их решения являются исключением. На рынке много стриминговых сервисов, но предоставляющих полноценный SDK для стриминга в сторонних продуктах крайне мало, для российского рынка список официально доступных SDK ограничивается Deezer и Apple Music. Конечно, когда на наш рынок придёт Spotify, на один доступный SDK станет больше, но пока есть два игрока и только один из них имеет широкую пользовательскую базу.


Так получилось, что я имел опыт работы с Deezer SDK под Android и прямо сейчас активно работаю с SDK Apple Music (MusicKit) под iOS. И главное отличие от опыта с Deezer состоит в том, что MusicKit — это верхушка айсберга, она же публично доступный API. В отличие от Deezer, где повторить большую часть функциональности официального приложения — это просто длительный процесс, повторить функциональность даже веб-страницы Apple Music, используя только публичный API, невозможно. Даже если Apple использует MusicKit в своих решениях, то кроме него она использует ещё массу недокументированных API запросов и приватных API, которые простым смертным использовать запрещено.


В статье я расскажу про работу с MusicKit с точки зрения разработчика в контексте реализации достаточно "простых задач": поискать в каталоге, показать картинки в результатах поиска, получить песни, рекомендации и даже проиграть какую-то музыку. Забегая вперёд скажу, что многое из рассказанного будет справедливо и для работы с Apple Music в Android и Javascript.


Если понадобится, готов дать детальные ответы с кодом на вопросы в комментариях.

Читать дальше →

Тренды на рынке наушников: что мы будем покупать в ближайшее время

Reading time4 min
Views17K
У нас в блоге довольно много разных постов о разных наушниках. А что поделать: категория огромная, и хочешь не хочешь, а натыкаешься.

Чаще всего это, конечно, костная проводимость и TWS-ки. И вот мы решили заглянуть в разные источники, а есть ли что-то в мире еще и какие в целом тренды в этой категории выделяют различные издания.



В общих чертах выглядит все это так:
Читать дальше →

Взгляд изнутри: RFID в современном мире. Часть 1: RFID в быту

Reading time7 min
Views21K

Больше RFID-меток богу RFID-меток!

С момента публикации статьи про RFID-метки прошло уже без малого 7 лет. За эти годы путешествий и пребывания в различных странах, в карманах поднакопилось огромное множество RFID меток и смарт-карт: защищённые карты (например, пермиты или банковские карты), ски-пассы, проездные на общественный транспорт, без которых в каких-нибудь Нидерландах ну совсем никак уже, то ещё что-то.

В общем, во всё этом зверинце, который представлен на КДПВ, настала пора разобраться. В новой серии статей про RFID и смарт-карты я продолжу затянувшееся повествование о рынке, технологиях и внутреннем устройстве действительно микро-чипов, без которых уже не мыслима наша повседневная жизнь, начиная от контроля за оборотом товаров (например, шуб) и заканчивая строительством небоскрёбов. К тому же, за это время подтянулись новые игроки (например, китайские) помимо набившего оскомину NXP, о которых стоит поговорить.

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

Придумываем технологию Powercheck

Reading time3 min
Views37K

Меня всегда интересовало как устроен и работает индикатор заряда на батарейках Duracell:



А также почему под ним указано, что тестировать нужно при 21°С. Но перед тем как посмотреть на решение, которое используется в батарейках, давайте попробуем прийти к нему самостоятельно.


Читать дальше →

Кто кушает память нашего iPhone? Чистим яблоки

Reading time4 min
Views13K
Все современные устройства дивным образам подчиняются второму началу термодинамики — энтропия (в простонародье — хаос) возрастает, если к системе не прикладывать внешние усилия. За примерно 3 года использования своего iPhone я особо не прикладывал усилий к очистке памяти телефона от всякого мусора и недавно с некоторым удивлением обнаружил, что у меня занято больше 57 гигабайт из 64. Тут-то и пришла пора разобраться, кто и чем поедает память моей прелести и почистить яблочко.

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

Читать дальше →

Оборачиваем последовательности в Swift

Reading time10 min
Views6.4K

Всем привет. Сегодня хотим поделиться переводом подготовленным в преддверии запуска курса «iOS Разработчик. Продвинутый курс». Поехали!



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

Читать дальше →

Security Week 35: статистика утекших паролей и атаки через Google Drive

Reading time5 min
Views5.6K
Прошедшая неделя отметилась как минимум двумя громкими событиями в сфере инфобезопасности. Впервые за долгое время для актуальных моделей Apple iPhone со свежей прошивкой iOS 12.4 доступен джейлбрейк (новость, пост на хабре). Джейлбрейк эксплуатирует уязвимость, которую закрыли в iOS 12.3, но, видимо, по ошибке снова «открыли» в свежей версии 12.4.

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

Но поговорим мы сегодня не об этом, а про пароли. Google подвел первые итоги использования расширения Password Checkup для браузера Chrome и поделился (новость, оригинальный блогпост) интересной статистикой: только четверть паролей меняется на новые, даже если пользователь извещен об утечке. А заодно рассмотрим новые попытки спамеров прорваться к пользователю, на этот раз через Google Drive.
Читать дальше →

Напиши свою песню за 10 минут (модуль textgenrnn Python3)

Reading time3 min
Views13K


Сегодня попробуем обучить свою собственную нейронную сеть, чтобы писала текст для песен. Обучающей выборкой будут тексты группы "Руки Вверх". Ничто не мешает чтобы поменять данные на тексты своих любимых групп. Для извлечения данных с веб-сайтов используем Python3 (модуль BeautifulSoup).


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


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

Читать дальше →

Назад в будущее мобильных телефонов

Reading time4 min
Views54K


«Семнадцатилетний Марти МакФлай пришел вчера домой пораньше. На 30 лет раньше.»

У меня есть несколько увлечений — фильм «Назад в будущее», старые телефоны и рисование. Предлагаю отправиться в путешествие и вспомнить культовые мобильники.
Читать дальше →

Как работают поисковые системы

Reading time28 min
Views84K
Мы разбирали старые письма и наткнулись на статью, которую писал Илья Сегалович iseg для журнала «Мир Internet» в далёком 2002 году. В ней он сравнивает интернет и поисковые системы с чудесами света, размышляет о поисковых технологиях и вспоминает их историю. Несмотря на загруженность по работе, Илья написал статью в рекордные сроки и даже снабдил достаточно подробным словарём терминов, который особенно интересно читать в наши дни. Нам не удалось найти электронную версию журнала со статьей, поэтому сегодня мы публикуем её в нашем блоге, первым автором которого, к слову, был Илья.



Читать дальше →

Kali Linux NetHunter на Android: зачем и как установить

Reading time8 min
Views202K

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


Читать дальше →

Новые стандарты видеонаблюдения: цвет ночью, антишум, ePoE

Reading time5 min
Views16K
image

Выпустив 23 года назад первую IP-камеру, компания Axis совершила революцию на медленно эволюционирующем рынке видеонаблюдения. Axis Neteye 200 не смогла заменить традиционные аналоговые системы, записывая один кадр в секунду в формате CIF или каждые 17 секунд в формате 4CIF с разрешением 0.1 Мп, но заложила основу для нового класса систем – сетевых камер видеонаблюдения.

Следующая волна интереса к видеонаблюдению пришла с развитием облачных технологий. Запуск в начале нулевых Elastic Compute Cloud от Amazon Web Services и Google App Engine стал фундаментальной вехой развития облачных вычислений. Началась разработка программного обеспечения для управления, записи и анализа видеопотока в удалённых дата-центрах.

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

Такие камеры создаются и при нашем участии.

Quintet data model и сотни гигабайт данных

Reading time4 min
Views1.9K

Недавно мы протестировали подход, именуемый нами QDM, при работе с большими объемами данных — сотни гигабайт. В рамках задачи мы обрабатывали по 12-24 млн записей и сравнивали производительность квинтетного решения с аналогичным функционалом в обычных таблицах.


Мы не сделали каких-то новых открытий, но подтвердили те гипотезы, что озвучивали ранее: насколько всё таки универсальный конструктор в руках условного «чайника» проигрывает профессионально настроенной базе данных.


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



Дай пять!

Веселая Квартусель, или как процессор докатился до такой жизни

Reading time18 min
Views5.6K


При отладке обычных программ, точки останова можно ставить почти везде и в достаточно больших количествах. Увы. Когда программа исполняется на контроллере, это правило не действует. Если идёт участок, в котором формируется временная диаграмма, то остановка всё испортит. А проход на низкой и на высокой частоте — это не одно и то же. Граничные условия — бич разработчиков. Или, скажем, шина USB. В NIOS II я с нею не работал, но на STM32 — это ужас. И хочется что-то посмотреть, и при остановке словишь таймаут. В общем, очень часто, несмотря на наличие передовой JTAG отладки, поведение программы в критичных по времени участках покрыто мраком. Как было бы здорово хотя бы после исполнения поглядеть, по какой цепочке прошла программа, какие ветвления сработали, а какие нет!

Ещё важнее знать историю развития исключений. На NIOS II мне этого делать не доводилось, а вот на Cyclone V SoC в ядре ARM — вполне. При отладке всё работает, а стартуешь программу из ПЗУ — получаешь исключение. Как в него вошли — видно, а какое развитие ситуации привело к этому — нет. Трассировка же срывает все покровы.
Читать дальше →

Ограничения 16-битных игр и их воссоздание в Unity

Reading time10 min
Views15K
image

В нашем первом туториале по ретро-играм мы показали, как настраивать инструмент 2D Pixel Perfect и как создавалась графика в эпоху 8-битных игр. В этом посте мы перенесёмся в 16-битную эру. С помощью Mega Cat Studios мы узнаем, как создавать аутентичную графику для игр в стиле Sega Genesis (Mega Drive) и Super NES при помощи параметров, графических структур и цветовых палитр Unity.

Создание аутентичной графики в стиле Genesis


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

Палитры и субпалитры


Переход от 8-битных к 16-битным консолям благодаря усложнению оборудования предоставил разработчикам больше возможностей. Тем не менее, принципы создания качественной NES-графики всё ещё остаются в силе. Вся графика по-прежнему хранится в тайлах, например, размером 8×8, и собирается из них в большие изображения — спрайты и элементы фона. Художники по-прежнему ограничены субпалитрами с общим прозрачным цветом, но 16 бита обеспечивают бОльшую гибкость работы с палитрами. Вас скорее всего порадует то, что у 16-битных консолей не было жёстко заданной цветовой палитры, то есть по сравнению с NES количество доступных цветов сильно расширилось.
Читать дальше →

«Скользкие» места C++17

Reading time9 min
Views36K
image

В последние годы C++ шагает вперед семимильными шагами, и угнаться за всеми тонкостями и хитросплетениями языка бывает весьма и весьма непросто. Уже не за горами новый стандарт, однако внедрение свежих веяний — процесс не самый быстрый и простой, поэтому, пока есть немного времени перед C++20, предлагаю освежить в памяти или открыть для себя некоторые особо «скользкие» места актуального на данный момент стандарта языка. 

Сегодня я расскажу: почему if constexpr не является заменой макросов, каковы «внутренности» работы структурного связывания (structured binding) и его «подводные» камни и правда ли, что теперь всегда работает copy elision и можно не задумываясь писать любой return. 

Если не боишься немного «испачкать» руки, копаясь во «внутренностях» языка, добро пожаловать под кат.
Читать дальше →

Производительность — это не только CPU: создание собственных профилировщиков для Python

Reading time6 min
Views7.6K
Предположим, ваша Python-программа оказалась медленной, и вы выяснили, что это лишь отчасти обусловлено нехваткой процессорных ресурсов. Как выяснить то, какие части кода вынуждены ожидать чего-то такого, что не относится к CPU?



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

  • Чего может ожидать программа?
  • Профилировка использования ресурсов, не являющихся ресурсами CPU.
  • Профилировка непреднамеренных переключений контекста.
Читать дальше →

Хакеры воруют и отмывают деньги через сервисы доставки еды и бронирования отелей

Reading time4 min
Views54K
картинка с xakep.ru

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

Information

Rating
Does not participate
Registered
Activity