У меня такой есть. Офигенный телефон. Простой и работает долго.
Автору — простой прикладной совет: что бы избежать бликов от вспышки при фотографировании глянцевых вещей можно воспользоваться салфеткой, зявь 1-2 ее слоя и держать ее на расстояний 4-5 см от вспышки. Что бы избежать попадания салфетки в кадр — фотографируйте из далека но с зумом (это тоже немного убавить блики).
В этом нет ничего сложного. Ставим php5-cgi из портов. Создаём php-fastcgi ини-файл /etc/init.d/php-fastcgi:
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO
# Author: Kurt Zankl
# Do NOT «set -e»
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC=«php-cgi in external FASTCGI mode»
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
scriptNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] &&. /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != «yes» -a "$1" != «stop» ]; then
log_warning_msg «To enable $NAME, edit /etc/default/$NAME and set START=yes»
exit 0
fi
# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON — $DAEMON_ARGS || return 2
}
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg «Starting $DESC» "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg «Stopping $DESC» "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg «Restarting $DESC» "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo «Usage: $scriptNAME {start|stop|restart|force-reload}» >&2
exit 3
;;
esac
Делаем исполняемым — 755. Создаем еще один файл /etc/default/php-fastcgi:
#
# Settings for php-cgi in external FASTCGI Mode
#
# Should php-fastcgi run automatically on startup? (default: no)
START=yes
# Which user runs PHP? (default: www-data)
EXEC_AS_USER=www-data
# Host and TCP port for FASTCGI-Listener (default: localhost:9000)
FCGI_HOST=localhost
FCGI_PORT=9000
# Environment variables, which are processed by PHP
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000
Запускаем: /etc/init.d/php-fastcgi start
Добавляем в автозагрузку: update-rc.d php-fastcgi defaults
Если нужно создать быстро акк на каком-нибудь не самом благонадежном сайте можно использовать сервисы типа mailforspam.com, odnorazovoe.ru и т.д. У самого два основных ящика — гугл + яндекс
FlashDevelop + Flash CS4. Движок box2d для физики. gTween для программной анимации. Графику я во fla добавлял сам, рисовал в иллюстраторе. В общем, с .fla файлом работал в основном я, а с кодом в .as программист. Все в svn, конечно. Уровни делали прямо в Ide, что, возможно, не так удобно, как если бы написали редактор уровней. Наверное, у нас все не самым оптимальным образом устроено, но проект небольшой, и особых неудобств мы не испытывали=)
Звуки находил в основном здесь, обрабатывал в Audacity — сжатие, ускорение, смена частоты.
Рэй Брэдбери «И грянул гром»(«A Sound of Thunder»)
Рассказ про машину времени и эффект бабочки.
Будет ласковый дождь(«There Will Come Soft Rains»)
В одночасье прошла катастрофа — весь город был сметён ядерным смерчем, никого не оставившим в живых. Но в одном единственном чудом уцелевшем доме продолжается размеренный и устоявшийся распорядок дня — автоматические системы дома готовят завтрак, убирают дом, заправляют постели…
«451 градус по Фаренгейту»(«Fahrenheit 451»)
Роман «451 градус по Фаренгейту» рассказывает о тоталитарном обществе, в котором литература находится под запретом, а пожарные должны сжигать все книги, которые обнаружат. Автор изобразил людей, потерявших связь с природой, с интеллектуальным наследием человечества, друг с другом.
Книга, повествующая о жизни одного молодого юноши, который рос в простой обстановке, в одной мелкой деревушке в Англии. Но в один прекрасный день у него появляется возможность стать настоящим аристократом, человеком богатым и образованным. Но все не так просто…
Книга добрая, очень душевная. Советую тем, кто еще не разучился чувствовать душевные порывы своего сердца.
«Хроники Амбера» (первый том), Роджер Желязны
Классика. Одна из тех книг, которые хочется забыть, чтобы снова прочитать в первый раз. Одна из лучших фантастических саг со своим миром.
интересно. сам сделал нечто подобное, но на другой технологической основе, хотя сервером стоит также nginx. Кстати, посмотрите в сторону специализированного сервера для такого рода проектов — APE Push Engine
Первую проблему решить я пока не придумал как — если вызвать на клиенте в ответ на каждое сообщение какой-то каллбек, который берет идентификатор сообщения и говорит серверу, что все ОК, сообщение получил, то мы получим те же недостатки поллинга — множество запросов к серверу. Хотя можно просто накапливать в буфер это и раз в Х времени посылать массив, что все ОК или если есть недоставка тогда принудительно сбрасывать.
Также у меня принудительно каждые 3 секунды шлется специальный пинг пакет, сообщающий, что сервер работает и клиент может ставить таймер — если в течении N*3 (для верности) не было ни сообщений ни пинга, принудительно перезапустить соединение.
Отличный проект и наполнение, от себя хочу поделиться полезными ссылками для изучающих и владеющих английским языком: uz-translations.su — языковой портал: учебники, словари и много всего прочего greylib.su — художественная литература на языке оригинала ska4ka.com — аудиокниги на английском и прочих языках мира lovenglish.ru/ — Плезная информация для начинающих изучать английский.
Мой мини рецепт «Яичница Студенческая». Нам понадобится:
Темный хлеб, средней свежести.
Колбаса любая.
2 — 3 яйца.
Режем хлеб кубиками. Нагреваем сковороду, наливаем немного масла, так чтобы хлеб его впитал. Жарим хлеб немножко, затем докидываем колбасу, порезанную также кубиками. Немного все обжариваем, и выливаем яйца, и все начинаем перемешивать. Делается все буквально за 5 минут и очень вкусно.
Обычно отрезаю половину французского батона, разрезаю на 2 части, нижнюю часть мажу майонезом, кладу лист салата, режу помидор тонкими «блинами», кладу копченую колбасу, мажу кетчупом, 2 разрезанных вдоль маринованных огурца, можно еще лук, закрываю все это дело оставшейся «крышкой» из батона, причем лучше «мякоть» хлеба из «крышки» лучше убрать, чтобы не выпадало, пока ешь. Потом в микроволновку на 1 минуту, сделать чаю(кофе). Отлично наедаешься, время приготовления 5 минут. :)
1. js-сабмит (95% ботов не проходят)
2. скрытые поля (не hidden, а нормальные поля взятые в блок с display: none) (98% ботов их заполняют, потом проверяется если поле было заполненно значит бот)
3. временной hidden (например c name=«phone» и value=«текущее время») — если разница между временем в хиддене и текущем времене меньше 2 секунд или больше 24 часов — ты однозначно бот (спам бот может работать в таких условиях один день — потом 100% ботов идут лесом)
4. поле hidden создаещееся js-ом при событии onfocus любого из полей формы (value этого поля лучше менять каждый день, т.е. функция от даты)
5. Возвратный AJAX: отправка формы AJAX'ом в случае успешной отправки, возвращается сгенерированное число, которое отправляется ещё раз AJAX'ом назад — что является подтверждением сабмита (этот вариант супер-надежный, отсеивает 100% ботов, но кроме ботов идут лесом все пользователи с отключенным js и реализовать его не очень-то просто)
А вообще про это на хабре уже статей 5 писалось, самая кайфовая это перевод буржуйской статьи в которой рассматривается около 20 таких методов.
Автору — простой прикладной совет: что бы избежать бликов от вспышки при фотографировании глянцевых вещей можно воспользоваться салфеткой, зявь 1-2 ее слоя и держать ее на расстояний 4-5 см от вспышки. Что бы избежать попадания салфетки в кадр — фотографируйте из далека но с зумом (это тоже немного убавить блики).
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO
# Author: Kurt Zankl
# Do NOT «set -e»
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC=«php-cgi in external FASTCGI mode»
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
scriptNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] &&. /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != «yes» -a "$1" != «stop» ]; then
log_warning_msg «To enable $NAME, edit /etc/default/$NAME and set START=yes»
exit 0
fi
# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON — $DAEMON_ARGS || return 2
}
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg «Starting $DESC» "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg «Stopping $DESC» "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg «Restarting $DESC» "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo «Usage: $scriptNAME {start|stop|restart|force-reload}» >&2
exit 3
;;
esac
Делаем исполняемым — 755. Создаем еще один файл /etc/default/php-fastcgi:
#
# Settings for php-cgi in external FASTCGI Mode
#
# Should php-fastcgi run automatically on startup? (default: no)
START=yes
# Which user runs PHP? (default: www-data)
EXEC_AS_USER=www-data
# Host and TCP port for FASTCGI-Listener (default: localhost:9000)
FCGI_HOST=localhost
FCGI_PORT=9000
# Environment variables, which are processed by PHP
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000
Запускаем: /etc/init.d/php-fastcgi start
Добавляем в автозагрузку: update-rc.d php-fastcgi defaults
AVO — (Author Voice Over) — Авторский
SVO — (Single Voice Over) — Одноголосый
DVO — (Double Voice Over) — Двухголосый (или «мальчик — девочка»)
MVO — (Multi Voice Over) — Многоголосый (три и более)
DUB — (Dublicated) — Дубляж
SUB — (Subtitle) — Субтитры
Звуки находил в основном здесь, обрабатывал в Audacity — сжатие, ускорение, смена частоты.
«И грянул гром»(«A Sound of Thunder»)
Рассказ про машину времени и эффект бабочки.
Будет ласковый дождь(«There Will Come Soft Rains»)
В одночасье прошла катастрофа — весь город был сметён ядерным смерчем, никого не оставившим в живых. Но в одном единственном чудом уцелевшем доме продолжается размеренный и устоявшийся распорядок дня — автоматические системы дома готовят завтрак, убирают дом, заправляют постели…
«451 градус по Фаренгейту»(«Fahrenheit 451»)
Роман «451 градус по Фаренгейту» рассказывает о тоталитарном обществе, в котором литература находится под запретом, а пожарные должны сжигать все книги, которые обнаружат. Автор изобразил людей, потерявших связь с природой, с интеллектуальным наследием человечества, друг с другом.
Книга, повествующая о жизни одного молодого юноши, который рос в простой обстановке, в одной мелкой деревушке в Англии. Но в один прекрасный день у него появляется возможность стать настоящим аристократом, человеком богатым и образованным. Но все не так просто…
Книга добрая, очень душевная. Советую тем, кто еще не разучился чувствовать душевные порывы своего сердца.
Классика. Одна из тех книг, которые хочется забыть, чтобы снова прочитать в первый раз. Одна из лучших фантастических саг со своим миром.
Первую проблему решить я пока не придумал как — если вызвать на клиенте в ответ на каждое сообщение какой-то каллбек, который берет идентификатор сообщения и говорит серверу, что все ОК, сообщение получил, то мы получим те же недостатки поллинга — множество запросов к серверу. Хотя можно просто накапливать в буфер это и раз в Х времени посылать массив, что все ОК или если есть недоставка тогда принудительно сбрасывать.
Также у меня принудительно каждые 3 секунды шлется специальный пинг пакет, сообщающий, что сервер работает и клиент может ставить таймер — если в течении N*3 (для верности) не было ни сообщений ни пинга, принудительно перезапустить соединение.
uz-translations.su — языковой портал: учебники, словари и много всего прочего
greylib.su — художественная литература на языке оригинала
ska4ka.com — аудиокниги на английском и прочих языках мира
lovenglish.ru/ — Плезная информация для начинающих изучать английский.
Темный хлеб, средней свежести.
Колбаса любая.
2 — 3 яйца.
Режем хлеб кубиками. Нагреваем сковороду, наливаем немного масла, так чтобы хлеб его впитал. Жарим хлеб немножко, затем докидываем колбасу, порезанную также кубиками. Немного все обжариваем, и выливаем яйца, и все начинаем перемешивать. Делается все буквально за 5 минут и очень вкусно.
2. скрытые поля (не hidden, а нормальные поля взятые в блок с display: none) (98% ботов их заполняют, потом проверяется если поле было заполненно значит бот)
3. временной hidden (например c name=«phone» и value=«текущее время») — если разница между временем в хиддене и текущем времене меньше 2 секунд или больше 24 часов — ты однозначно бот (спам бот может работать в таких условиях один день — потом 100% ботов идут лесом)
4. поле hidden создаещееся js-ом при событии onfocus любого из полей формы (value этого поля лучше менять каждый день, т.е. функция от даты)
5. Возвратный AJAX: отправка формы AJAX'ом в случае успешной отправки, возвращается сгенерированное число, которое отправляется ещё раз AJAX'ом назад — что является подтверждением сабмита (этот вариант супер-надежный, отсеивает 100% ботов, но кроме ботов идут лесом все пользователи с отключенным js и реализовать его не очень-то просто)
А вообще про это на хабре уже статей 5 писалось, самая кайфовая это перевод буржуйской статьи в которой рассматривается около 20 таких методов.