Рубрика «ненормальное программирование» - 77

Magic Lantern (ML) — неофициальная прошивка для фотоаппаратов Canon, которая обеспечивает повышенную функциональность (например, dual-iso, стекинг по фокусу, raw-видео, тонкая настройка параметров съемки и многое другое). Прошивка устанавливается непосредственно на flash-карту, что позволяет безболезненно удалить ее или обновить простой заменой файлов.

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

Все описанные действия производились с использованием камеры Canon 650D со стоковой (1.01) прошивкой.

28 марта. Началось все тогда, когда жажда исследования чего-то нового накопилась до критической массы и в сети была случайно обнаружена информация о возможности автоматической съемки фокус-стека на моем фотоаппарате. Но данные возможности требовали установки неофициальной прошивки Magic Lantern.

Быстрый поиск показал, что:

  • текущая прошивка фотоаппарата не поддерживает текущие сборки ML;
  • для модели 650D нет стабильной сборки, есть только ночные билды;
  • некоторые функции ML в 650D не работают/работают криво;
  • авторы предупреждают, что можно закирпичить фотоаппарат неверными действиями по прошивке.

После чего фотоаппарат был успешно перепрошит на последнюю официальную версию для Canon 650D 1.04. И строго по инструкции, со сбросом всех настроек и полным форматированием карты, был установлен последний ночной билд Magic Lantern (от 28 марта).
Читать полностью »

Думаю многие знают, как работает CGI взаимодействие между клиентом и сервером: клиент получает от сервера и отдает серверу данные через стандартные stdin и stdout. Многие наверное даже сами писали CGI клиентов, ведь по сути — любой скрипт для веб-сервера это и есть CGI-клиент.
А многие ли задавались вопросом, как именно происходит эта «магия»? Каким образом стандартные функции для ввода/вывода вместо экрана взаимодействуют с сервером?

Результаты поиска ответа в сети меня не удовлетворили и я решил сам написать простейший CGI сервер, который сможет:

  • Запускать дочерний процес — CGI скрипт
  • Передавать скрипту переменные окружения и переменные командной строки
  • Принимать от скрипта ответ
  • Завершаться, когда завершится процесс клиента

Кроме этого, мне хотелось, чтобы клиент и сервер компилировались как в Windows, так и в Linux.
Читать полностью »

Компания Google на 1 апреля (Fool's Day) поздравила с одной стороны ожидаемым от гугла, в принципе — дудлом (doodlers), а с другой весьма любопытным в истории коммерческого интернета — фактом.

А именно, запустив стартовую страничку поиска в корневом домене .google

Google поздравил с 1 апреля запуском в корневой зоне .google - 1

Под катом скрины в натуральную величину, а также еще один дудл от Google в этот день.

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

О бане, троллях и бесплатных продуктах «Лаборатории» - 1В «Космической одиссее 2001 года» Фрэнк Боумэн отключает, один за другим, модули памяти компьютера HAL 9000, а HAL 9000 поет песню про Дейзи. Чуть раньше HAL пытался убить самого Боумэна, а заодно и всех остальных людей на борту «Дискавери-1», и у него почти получилось. Зачем он это сделал? Трактовать можно по-разному. Например, что получив две вводные: «Я знаю больше, чем экипаж, и должен хранить этот секрет» и «Они планируют меня отключить», HAL абсолютно логично посчитал, что он важнее, чем экипаж. Фрэнку тем не менее очень хотелось жить, и, зная, что имеет дело с компьютером, он не стал просить компьютер одуматься, а просто разнес чертову железку на микросхемы.

С компьютерами на самом деле очень просто: они всегда (всегда!) делают то, на что запрограммированы. С людьми сложнее: понять мотивацию и причины для высказываний и поступков подчас вовсе невозможно. Люди (пока что только они) программируют компьютеры, и собственно все компьютерные проблемы – от глюков системы до вирусов – от людей. В сегодняшнем первоапрельском посте – пять историй про людей, а также немножко про программы. И совсем чуть-чуть про троллей и баню. И самую малость – про то, как люди мешают программистам работать.
Читать полностью »

Всем доброго утра

Факториал на числах Чёрча — теперь и в смайликах - 1

Это полностью валидный код на JavaScript.
Читать полностью »

image

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

Ruby

Определение значения по умолчанию или мимика губами:

foo ||= []
foo ||= {}
foo ||= ''
foo ||= 0

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

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

Вы неправильно пишете животных - 1
Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен. Читать полностью »

Дисклеймер: всему сказанному ниже «верить нельзя не верить»… Запятую поставьте сами.

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

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

Стрелочные часы на CMake - 1

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

Эта система имеет свой встроенный язык для написания сборочных скриптов. Этот самый язык меня и заинтересовал. Вскоре я выяснил, что в нем есть возможность вычисления математических выражений, запись и чтение из файлов, запуск внешних процессов и другие интересные возможности, что навело меня на мысль воспользоваться этим языком в качестве основного ЯП и написать на нем что-нибудь осязаемое. Речь пойдет о том, как я писал стрелочные часы на языке cmake 2.8.
Читать полностью »

Играем в сапера в фотошопе - 1

По роду своей деятельности мне периодически приходится автоматизировать свою работу в фотошопе. Точнее я мог бы этого не делать, но природная лень не оставляет шансов в борьбе с рутиной, как говориться «лучше час потерять, зато потом за 5 минут долететь». Все бы наверное так и оставалось на уровне отдельных разрозненных скриптов если бы не пост от enotus. Благодаря ему я узнал, что к фотошопу (как впрочем и другим продуктам от Adobe) можно писать расширения на HTML+JS. И пошло, поехало.

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


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