четверг, 11 апреля 2013 г.

Tips for using docker: remove running containers, make new image, run image, reading logs

Docker - in two words this is a manager of LXC containers.

But I guess you know more about docker if you are here.

Note: I don't know anything about your environment and running processes, so use next commands on your own risk.

Improved screencast with Byzanz

Byzanz - small and useful utility for screencast which generate GIF on the output.

You can find more information about byzanz here and here.

Typical you are using Byzanz like that:

$ byzanz-record --duration=45 --delay=10 --x=0 --y=87 --width=860 --height=520 output.gif

Next, you are trying to hide anything in 10 seconds and doesn't know exactly when 45 seconds are, hell, will over.

I done small improvement to solve this issue:

суббота, 9 апреля 2011 г.

Интерпретация и компиляция Java-кода в Java-программе

Давайте представим, что вам понадобилось в своей Java-программе выполнять некоторый код, порождаемый пользователем, в некотором выстроенном контексте. Причем, хотелось бы, чтобы из пользовательского кода были доступны некоторые классы и объекты, определенные в исходном приложении.
В 6-ой версии платформы Java появилась технология Java Scripting, которая реализована в пакете javax.script. Используя её и какой-либо из реализованных движков (а может быть вы напишите свой движок), можно получить то что мы хотим - Java-программу, исполняющую некоторый код пользователя, который становится известен лишь в runtime. Типично, используют Java Scripting и движок JavaScript (ссылка), более того JavaScript движок Rhino от Mozilla входит в JDK 6. Нас же будет интересовать Java-движок.

понедельник, 7 марта 2011 г.

Повторяемые задания

Встретился с интересной задачкой.
Есть список некоторых заданий. Что это за задания нам не интересно, главное что они как-то распределены во времени.
Существуют два типа заданий:
  • разовые;
  • повторяемые.
Каждое из них, думаю, допустимо описать парой: (дата окончания, паттерн повторяемости), где:
  • дата окончания - дата, до которой данное задание должно быть выполнено, включительно;
  • паттерн повторяемости - шаблон по которому создаются новые задания. Задание разовое - пуст, повторяемое - имеет свою структуру:
    • тип повторяемости - один из вариантов: 'ежедневно', 'еженедельно', 'ежемесячно', 'ежегодно';
    • повторять через - число дней/недель/месяцев/годов;
    • длительность задания - d-дней, m-месяцев, y-лет.
Думаю с разовыми заданиями все очевидно, задание необходимо выполнить до указанной даты окончания,  больше оно нас не будет тревожить. Что же касается повторяемых заданий, то тут есть проблемы.
На самом деле, повторяемое задание - это одно разовое задание, которое нужно выполнить до указанной даты окончания и шаблон по которому будут созданы новые разовые задания. Вопросы, связанные с повторяемыми заданиями, которые нас будут интересовать:
  1. Как определить, необходимо ли сегодня (DD.MM.YY) создавать новое разовое задание для некоторого повторяемого ? Будем считать, что задание может быть создано за 1 день до официального начала.
  2. Как назначить дату окончания нового разового задания ?

пятница, 20 августа 2010 г.

Sikuli играет в игру LPairs

Sikuli - инструмент для автоматизации работы с элементами GUI, играет в LPairs (простую игру для укрепления памяти).

Скрипт

четверг, 5 августа 2010 г.

Параллельное выполнение команд: GNU Parallel

Проект GNU Parallel развивается с 2007 года и представляет собой утилиту для выполнения задач в shell параллельно в текущей и/или удаленных системах. Задачи формируются из скриптов и команд операционной системы, и параметров (или частей команд) из стандартного ввода. В этом GNU Parallel похож на xargs, в задачи которого входит формирование команд из данных со стандартного ввода, по заявлению разработчика, GNU Parallel даже имеет схожие с xargs опции.
Схожесть с xargs позволяет использовать GNU Parallel в ранее созданных скриптах, в сложных конвейерах, используя все предоставленные ресурсы имеющихся систем (ядра/процессоры текущей или удаленных многоядерных/многопроцессорных систем).

среда, 7 июля 2010 г.

Утилиты для аудита исходных кодов: Graudit, RATS

Бесспорно полезно проводить аудит исходных кодов с целью выявления потенциально проблемных и опасных участков кода. В случае, если эта операция автоматизирована при помощи какой-то утилиты, то также это не отнимет много времени.
Пробовал я утилиты для автоматизированного аудита исходных кодов на задачах 1-го курса университета (ЯП c), расположенных в ~/1-course.