Рубрика «Программирование» - 207

Реверс инжиниринг протокола активации Яндекс.Станции - 1

«Яндекс.Станция» — умная колонка с голосовым помощником Алиса. Чтобы её активировать, нужно поднести телефон и проиграть звук из приложения «Яндекс». Под катом я расскажу, как устроен этот сигнал, про пароль от WiFi в открытом виде и попробую развить идею передачи данных через звук.
Читать полностью »

Сложность простоты - 1

Как я писал в предисловии предыдущей статьи, я нахожусь в поисках языка, в котором я мог бы писать поменьше, а безопасности иметь побольше. Моим основным языком программирования всегда был C#, поэтому я решил попробовать два языка, симметрично отличающиеся от него по шкале сложности, про которые до этого момента приходилось только слышать, а вот писать не довелось: Haskell и Go. Один язык стал известен высказыванием "Avoid success at all costs"*, другой же, по моему скромному мнению, является полной его противоположенностью. В итоге, хотелось понять, что же окажется лучше: умышленная простота или умышленная строгость?

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

Читать полностью »

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

Время первых. История, как мы внедряли Scratch как язык программирования роботов - 1

2009-2010 года. Россия начала массово знакомиться с Arduino и Scratch. Доступная электроника и программирование начинают завоевывать умы как энтузиастов, так и преподавателей и идея все это соединить уже вовсю витала (а частично была реализована) в мировом инфопространстве.
Читать полностью »

Профилирование под Linux с помощью Performance Analyzer

Коллеги, считаю полезным рассказать об удобном и бесплатном профилировщике кода для Linux/Solaris. Он входит в пакет Sun/Oracle Developer Studio [1]. По моему мнению, другие части этой среды разработки несколько бесполезны, но профилировщик, который называется Performance Analyzer, очень удачный. Он прост в использовании, наглядно и удобно устроен анализ результатов. На мой взгляд, профилировщик все еще превосходит многие аналоги под Linux. При наличии этого инструмента использование gprof видится странной прихотью и потерей времени.

Если вы не планируете использовать Performance Analyzer немедленно, то дальше можно не читать. Просто запомните, что такой продукт существует. Если же интересно взглянуть, то добро пожаловать.

Читать полностью »

Не любите Java? Да вы не умеете ее готовить! Mani Sarkar предлагает нам познакомиться с инструментом Valohai, позволяющим проводить исследования модели на Java.

Deep Learning теперь на Java - 1
Читать полностью »

Привет! Представляю вашему вниманию перевод статьи «FORMALLY SPECIFYING UIS» автора Hillel Wayne.

Применение формальных методов валидации моделей для UI - 1

От автора

Относительно недавно я наткнулся на статью про Инженерные методы в разработке ПО, где vasil-sd рассказал про формальную валидацию спецификаций к создаваемым программным продуктам. В качестве инструментария был использован Alloy. Одним из основных лейтмотивов в комментариях был — разобрать статью в контексте какого-нибудь современного веб проекта, потому что дорогодолгосложно использовать формальные методы там, где все делают быстродешево. Так как автор ссылался на блог Hillel Wayne, где такие примеры были, я решил перевести что-то из его статей в качестве дополнения к основному тексту vasil-sd

Предупреждение:

  • Все, что автор называет finite-state machine, я буду называть конечным автоматом или моделью конечного автомата.
  • Часть терминологии я почерпнул из статьи, ранее мною упомянутой, об инженерном подходе к разработке. Тем не менее, тема для меня относительно новая, потому обоих авторов(как зарубежного, так и не очень) мог понять не так — не ругайтесь.

Читать полностью »

image
Здравствуйте! Начну статью с небольшого отступления. Не посетило ли вас разочарование когда вы впервые столкнулись с программированием? Я предполагал что создание программ происходит путём взаимодействия с каким-то сложным, но очень интересным инструментом, в котором я смогу заниматься своим любимым делом (собирать конструкторы) на новом уровне. Однако, вместо этого мне пришлось изучать как писать текстовые файлы состоящие из различных операторов, скобок, строк и прочих текстовых конструкций. Прошли десятилетия, я научился программировать, и уж было позабыл про это разочарование, однако увидев в сети новость про Google Blockly и Scratch я почувствовал ностальгию…
Читать полностью »

Продолжение данной истории. Сейчас речь пойдет не о концепции, а том, как мы из вот этого

Битва Големов из карт. Как мы превращали игру в Карточную лигу Пароботов - 1

т.е. классической версии в которой само игровое поле, элементы на нем, жетоны повреждений были представлены «вырубкой» из картона и было «дорого и богато» делали карточный «движок» и наполнение и уменьшали число «не карточных» компонентов до минимума. В терминологии компьютерных игр это «левел-дизайн» и «дизайн персонажей». Но у нас же и ИТ-игра про программирование роботов.

Итак по порядку. Если ранее я уже рассказывал про карты команд на языке Scratch, то сейчас речь пойдет о замене других компонентов.
Читать полностью »

Привет.

Про изменение климата сейчас не говорит только ленивый. И случайно найдя неплохой сайт с историческими данными, стало интересно проверить — как же реально менялась температура с годами. Для теста мы возьмем данные с нескольких городов и проанализируем их с помощью Pandas и Matplotlib. Заодно выясним, действительно ли челябинские морозы настолько суровы, и где теплее, в Москве или Петербурге.

Изменение климата: анализируем температуру в разных городах за последние 100 лет - 1

Также обнаружилось еще несколько любопытных закономерностей. Кому интересно узнать подробности, прошу под кат.
Читать полностью »

Привет! Представляю вашему вниманию перевод статьи "Learning Parser Combinators With Rust".

Эта статья учит основам комбинаторных парсеров людей, которые уже знакомы с Rust. Предполагается, что никаких других знаний не требуется, а всё, что не имеет прямого отношения к Rust, а также некоторые неожиданные аспекты его использования, будут объяснены. Эта статья не поможет вам выучить Rust, если вы его ещё не знаете, и в этом случае, вы, вероятнее всего, не поймёте комбинаторные парсеры хорошо. Если вы хотите изучить Rust, я рекомендую книгу "Язык программирования Rust".

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js