Аркадные видео-игры: первые годы

Computer Space: первый игровой аркадный автомат

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

Подробнее →

Загрузка...

Linux: скрипты и настройки

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

dev-scritps (Linux) — это набор полезных настроек для профиля пользователя, терминала, vim, git. Репо также содержит набор общих скриптов, команд и хоткеев.

Это не абсолютно исчёрпывающий туториал по конфигурации Всего, но настройки, которые я применяю при каждой новой установке Linux. Горячие клавиши (и в vim тоже), которые я нажимаю каждый день; скрипты, которые я писал для разных проектов так много раз, что в конце-концов они превратились в общие, и осели в этом репозитории.

Подробнее →

Загрузка...

WordPress: тестирование плагинов с PHPUnit и WP_UnitTestCase

Uehara Konen, Hatō zu 3

Статья описывает отладку плагинов в тестовом окружении WordPress Testing Framework. Это значит, что в тестах можно будет пользоваться API WordPress, переключать роли пользователей сайта, автоматически создавать категории, посты, тэги, комментарии, вложения и тому подобное.

Последний раз проверено с PHP ^7.2, PHPUnit ^6.5, WordPress 4.9.8

Подробнее →

Загрузка...

Установка PHPUnit и Selenium

Настройка тестов

Статья описывает настройку окружения для функциональных тестов на PHP.
Например, такой типичный тест может:

  • Открыть URL http://example.org/mypage в браузере
  • Проверить, что на странице 20 картинок
  • Нажать на вторую ссылку в навигации
  • Проверить, что на новой странице также 20 картинок
  • Закрыть браузер

А также произвести сложные выборки из DOM, вставить в поля формы текст и перейти по истории назад и вперёд.

Подробнее →

Загрузка...

Symfony: фильтр связанных полей в формах

Symfony: опция query_builder для форм

Задача: вывести в форме только те связанные объекты OneToOne/OneToMany, которые ещё не были связаны с сущностями данного типа.
Например: при создании нового счёта вывести только те заказы, которые ещё не прикреплены ни к каким счетам (связь один-к-одному: счёт может относиться только к одному заказу). А при редактировании счета выводить все незанятые заказы, плюс тот, к которому счёт уже прикреплён.

Я взял код из рабочего проекта, немного упростил его и переименовал сущности. Подробнее (и понятнее) ниже.

Подробнее →

Загрузка...

PHPUnit + Symfony: ошибка Resetting the container is not allowed when a scope is active

Возникает в функциональных тестах PHPUnit с использованием клиента, открывающего указанные URL-адреса.

1) MyBundle\Tests\Controller\ControllerTest::testRoute
Symfony\Component\DependencyInjection\Exception\LogicException: Resetting the container is not allowed when a scope is active.

Подробнее →

Загрузка...

Терминал и его команды

Подборка сниппетов для bash, которые используются слишком редко, потому не сохраняются в истории и вылетают из головы, но при этом бывают полезными.

Процессы

Убить все процессы с заданным именем

Когда не доверяешь pkill.

Узнать родителей процесса

Узнать родителей всех порождённых процессов

Во всех командах параметр -f для cut может требовать подбора верного числа.

Вывести процессы, сортированные по потребляемой памяти

Подробнее →

Загрузка...

Бэкап на Google Диск из командной строки

Для работы со своим гуглдиском из командной строки потребуется установить пакет gdrive. Установка проста и описана на странице проекта, там же примеры работы с утилитой.

Далее полезные команды и скрипт для бэкапа.

Подробнее →

Загрузка...

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

Для того, чтобы перехватывать почтовую рассылку с локального веб-сервера, понадобится установить пакет mailcatcher.
MailCatcher — это простой SMTP-сервер, который отображает отправленные на него письма в веб-интерфейсе.

Я настраиваю веб-сервер для PHP, на официальном сайте описана настройка и под другие платформы.

Подробнее →

Загрузка...

Python: вставить строку в буфер обмена (Linux)

Данный код копирует строку «Cthulhu fhtagn!» в буфер обмена — это значит, что после запуска скрипта данная строка будет доступна для вставки в любом текстовом поле.

Код будет работать только в рабочих окружениях, которые используют GTK+ (GNOME, Xfce etc.).

Подробнее →

Загрузка...