Запуск Ejudge CGI под Nginx и uWSGI

Предыстория

В проекте algoprog.kz для проверки задач используется система eJudge. У нее есть отдельный web интерфейс, написанный на С, позволяющий в первую очередь управлять и следить за соревнованием. Исторически так сложилось, что эти CGI скрипты запускали из под apache, а я свои проекты запускаю по Nginx. В общем мне захотелось избавиться от apache и научиться запускать CGI скрипты из под Nginx. Далось мне это не так легко.

Дальше

Запуск терминала из под Sublime-Text-2

Ужасно давно ничего не писал. Сегодня вот хорошее настроение с утра и я решил поделиться своими находками в стиле lifehack.

Sublime Text

Наверное многие из вас слышали о таком замечательном текстовом редакторе как Sublime Text. Не буду долго и мучительно рассказывать о том, о чем уже много раз сказано.

  1. http://dimox.name/sublime-text-editor-for-code/
  2. http://www.trymbill.is/9-reasons-why-sublime-text-2-should-be-your-next-ide/
  3. http://1p1e1.tumblr.com/post/14262857223/9-reasons-you-must-install-sublime-text-2-code-like-a

Особенно мне понравился этот пост http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/

По теме

Сегодня с утречка пришла в голову мысль, что неплохо было бы запускать terminal прямо из Sublime text. Я сразу же погуглил, и нарвался на этот пост, который описывал плгин под названием Terminal. Terminal можно установить прямо из редактора с помощью Package Control плагина.

Вроде неплохо, даже как-то слишком просто. Теперь по шорткату Alt+Shift+T запускается terminal в папке текущего файла, а на Ctrl+Alt+Shift+T в корне проекта.

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

Далее

exim4 relay на ubuntu

Очередная заметка типа how-to. Что бы в следующий раз не лазить по интернету и искать как выполнить эту же задачу, запишу лог проделанной работы сейчас.

Требуется поднять свой MTA для рассылки писем клиентам. Вот как это делается на ubuntu:

Сначала остановим стандартный sendmail и удалим его, что бы не возникло конфликтов в будущем.

$ sudo service sendmail stop
 * Stopping Mail Transport Agent (MTA) sendmail
sudo apt-get remove sendmail

Устанавливаем exim4

sudo apt-get install exim4-config exim4

Далее

Патч ejudge для algoprog

На algoprog.kz используется немного пропатченая версия ejudge.

Тестировал на версиях 2.3.16 и 2.3.17. Патч добавляет такие функции в еjudge-contests-cmd:

  • dump-languages - получить языки контеста
  • get-contest-status - получить статус контеста
  • get-contest-sched - время старта
  • get-contest-duration - длительность
  • get-contest-description - три предыдущих вместе + название контеста
  • submit-run-v2 - сабмит задачи не по short_name а по id

Дальше...

Размер папки в *nix

Как узнать размер папки из коммандной строки?

~/work$ ls -l
total 36
drwxr-xr-x  4 german german 4096 2011-01-12 17:15 android
drwxr-xr-x  5 german german 4096 2011-06-02 17:26 ant
drwxr-xr-x 13 german german 4096 2011-06-14 12:41 django
drwxr-xr-x  7 german german 4096 2011-04-14 16:59 envs
drwxr-xr-x 14 german german 4096 2011-05-24 13:30 irbisenv
drwxr-xr-x  8 german german 4096 2011-05-19 12:05 jee
drwxr-xr-x  5 german german 4096 2011-05-07 14:51 olymp
drwxr-xr-x  2 german german 4096 2011-06-03 14:56 python
drwxr-xr-x 14 german german 4096 2011-05-08 17:28 sandbox

Если так, то размера папки мы не узнаем. Всегда пишется одно и то же: 4096.

Вот одно из решений:

~/work$ du -sh django/
1.3G    django/

Когда файлов много это дело занимает несколько секунд.

туда →