Очередная заметка типа 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
Далее
На 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
Дальше...
Как узнать размер папки из коммандной строки?
~/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/
Когда файлов много это дело занимает несколько секунд.
Как-то не хочется говорить о преимуществах Django, для новичка в веб-программировании эти
слова будут как пустой ветер, а те кто уже имеет опыт легко разберутся что к чему зайдя на
главную страницу проекта.
Я лишь приведу понравившеюся мне цитату из блога Романа Ворушина:
Если есть языки программирования, фреймворки, технологические подходы, позволяющие вместо 10000 строк писать, отлаживать и поддерживать всего 1000 строк, то это может быть огромным преимуществом, даже если более компактный язык менее распространен или менее производителен. Проектов, умерших от того, что они не справились с наплывом пользователей, намного меньше, чем тех, что угасли, так и не дойдя до бета-версии.
Читать дальше
Перед тем как начать изучать различные web платформы было бы неплохо понять как делаются сайты без них.
Скажем на голом python. В этой записи опишу маленький эксперимент с CGI на различных языках программирования.
Переходим в рабочую папку(у меня /home/german/work/python) и создаем текстовый test_python.cgi файл и пишем туда следующее:
#!/usr/bin/env python
print "Content-Type: text/html"
print
print """
<html><head></head><body><h1>Hello world!</h1></body></html>
"""
Если у вас Windows, то в начале файла должно быть путь к python.exe, например так #!C:\Python27\python.exe -u вместо #!/usr/bin/env python.
На Windows я этого делать не пробовал, но думаю должно делаться аналогично.
Не уверен что это требуется, но делаем файл executable. В Windows так сделать нельзя.
chmod a+x ./test_python.cgi
Мы сделали запускаемый скрипт. Можно его запустить в командной строке. На выводе получим следующее.
Content-Type: text/html
<html><head></head><body><h1>Hello world!</h1></body></html>
Теперь нам как-то надо прикрутить этот скрипт к сайту, а точнее сделать этот скрипт доступным по какому-то url.
При каждом обращении по какому-то url будет выполняться данный скрипт, а вывод будет отправляться клиенту.
Далее...
В мою практику не так давно вошел такой tool как virtualenv, мне нравится для каждого проекта создовать обсалютно изолированную среду.
Всегда бывает нужен байндинг mysql-python. Если устанавливать с использованием pip надо чтобы в убунту были установлены пакеты libmysqlclient-dev и
python-cxx-dev
sudo apt-get install python-cxx-dev
sudo apt-get install libmysqlclient-dev