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

Здравствуйте.

Продолжаем тему написания простых и забавных программ, используя ПТК «Квинт 7» российской разработки. В предыдущих постах показывалось как можно просто и быстро написать игрушку вроде змейки или сапера. Но не смотря на то, что это две совершенно разные игрушки, с точки зрения программирования на CFC (в результате спора с одним товарищем пришли к мнению, что данный язык все-таки ближе к CFC чем к FBD) это была фактически одна и та же программа с небольшими косметическими изменениями. В этой статье мы с вами рассмотрим новый пример программирования, написав с нуля простенькую игрушку «БлэкДжек». Если Вас заинтересовала эта тема, добро пожаловать под кат.
Простая игра средствами ПТК «Квинт 7» - 1
Читать полностью »

Реактивное программирование в табличном процессоре - 1

Табличный процессор (речь идет о MS Excel или LibreOffice Calc) — это довольно занятный и универсальный инструмент. Мне часто приходилось (и приходится) пользоваться его широкими возможностями: автоматизированные отчеты, проверка гипотез, прототипирование алгоритмов. Например, я использовал его для решения задач проекта Эйлер, быстрой проверки алгоритмов, реализовал парсер одного прикладного протокола (по работе надо было). Мне нравится наглядность, которую можно добиться в табличном процессоре, а еще мне нравится нестандартное применение всего, чего только возможно :) На Хабре уже появлялись интересные статьи на тему нестандартного применения Excel:
habrahabr.ru/post/246975/
habrahabr.ru/post/237641/
habrahabr.ru/post/174373/
В этой длинной статье я хочу поделиться своими экспериментами в реактивном программировании с помощью формул табличного процессора. В результате этих экспериментов у меня получился «компьютер» с процессором, памятью, стеком и дисплеем, реализованный внутри LibreOffice Calc при помощи одних только формул (за исключением тактового генератора), который можно программировать на неком подобии ассемблера. Затем, в качестве примера и proof-of-concept, я написал игру «Змейка» и бегущуюползущую строку для этого компьютера.
Читать полностью »

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 апреля, а многие из вас все еще пользуются скучными и устаревшими антивирусами.
А ведь если побродить по разным софт-каталогам и поискать чего-нибудь на слово антивирус, можно найти ну очень интересные вещи!

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


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