Февраль, 06 @ 04:47
Мастерю
5 комментариев

Сайт, которого все так ждали. А как же его не ждать? Лучший, потрясающий, ахуитительнейший долгострой тысячелетия.
Пока создавал шедевр стёр все (обе) в руки в кровь от постоянного онанизма. Это не патологическая тяга теребить пипиську, нет. Это восхваление шедевра.
Хуй в пальто на ваших экранах.
Восхвалите же мой гений, оцените же труд, прикоснитесь же к искусству, отдайте же почести терибением. Массовые теребения это прекрасно!
Август 2011, 19 @ 13:03
Про сайт
Алёшка
Мастерю
14 комментариев
Переписал код бложика и поменял внешний вид.
Вспомнил, что когда-то к CuteNews прикручивал MetaWeblog API и даже нравилось постить из w.bloggar, зато админку делать всегда казалось жутко унылым. Программ хороших, правда, как не было так и нет. Когда-то казавшийся приемлемыми w.bloggar или Semagic сейчас таковыми не кажутся. Жуткое говно, честно-то говоря. Остановился на Windows Live Writer, который так же не фонтан, но значительно лучше того допотопия.
Дольше всего возился не со своим любимым делом как то подгоны пикселей, а с комментариями. Изначально делать их в планы и не входило - никто, кроме моей мамы посты и не комментирует. Но начал делать и всякие штуки вставлять. Чем и увлёкся.
Комментировать можно только по OpenID, причём, если указать почту из неё всё равно берётся OpenID - из адреса или MX-записи. Радует, что большинство сайтов использует OpenID 2, которому не обязательно сообщать имя: просто подключаемся к сервису и он сам решит. Но не у Mail.ru. Эти по-прежнему никуда не пустят не укажи ты
Можно использовать вконтактик (работает через vKontakteID.ru) и твиттер(тик или очек?).
Июнь 2011, 13 @ 23:00
Мастерю
... но если надо потестировать, то это меньшая хуйня, чем везде проверять if Windows else. В первую очередь, для отдачи файлов через X-Accel-Redirect в internal-директорию (видна только Nginx'у).
Шаг 1: качаем Nginx. Я брал nginx/Windows-1.0.4.zip потому что на оригинальном сервере тоже 1.0.4.
Шаг 2: кидаем Nginx в папку Denwer\usr\local\nginx.
Шаг 3: создать файлы
Denwer\denwer\scripts\main\start\40_nginx
Denwer\denwer\scripts\main\stop\40_nginx
Denwer\denwer\scripts\main\restart\40_nginx
Все они содержат одно и то же: "init.d/nginx" (без кавычек).
Шаг 4: в файле Denwer\usr\local\apache\conf\httpd.conf ищем:
##
## НАЧАЛО ШАБЛОНА ВИРТУАЛЬНОГО ХОСТА.
##
## Если вы хотите по умолчанию запускать Apache на порту, отличном от 80,
## измените номер порта в следующей далее директиве.
##
#Listen $&{ip:-127.0.0.1}:$&{port:-80}
#NameVirtualHost $&{ip:-127.0.0.1}:$&{port:-80}
#<VirtualHost $&{ip:-127.0.0.1}:$&{port:-80}>
И меняем все $&{port:-80} на $&{port:-81} (или на другой порт, на котором будет Apache).
Шаг 5: создать файл Denwer\denwer\scripts\init.d\nginx.pl с содержанием:
package Starters::Nginx;
BEGIN { unshift @INC, "../lib"; }
use Tools;
use Installer;
use ParseHosts;
use VhostTemplate;
use StartManager;
my $basedir = '\\usr\\local\\nginx';
my $exe = "$basedir\\nginx.exe";
my $port = 80;
chdir($basedir);
StartManager::action $ARGV[0],
start => sub {
###
### START.
###
print "Запускаем Nginx...\n";
#if(chechSocketIfRunning($port)) {
#print " Nginx уже запущен.\n";
#} else {
if (!-f $exe){
die " Не удается найти $exe.\n";
} else {
system("start $exe");
print " Готово.\n";
}
#}
},
stop => sub {
###
### STOP.
###
print "Завершаем работу Nginx...\n";
my @ps = Tools::searchForProcesses($exe);
if(@ps) {
foreach my $ps (@ps){
my $r = kill 2, $ps->{pid};
}
sleep(1);
# If some processes haven't finished, do it again
# with more cruel signal.
@ps = Tools::searchForProcesses($exe);
foreach my $ps (@ps){
my $r = kill 9, $ps->{pid};
print " Process $ps->{exe} (PID=$ps->{pid}) killed with signal 9\n";
}
print " Готово.\n";
} else {
print " Nginx не запущен.\n";
}
};
return 1 if caller;
В перле не силён, не понимаю какие штуки (нейспейсы/модули) нужны, какие нет. Код скопировал с mysql.pl вырезать ничего не стал, чтоб не ёбнуло.
Важная хуйня: сохраняйте файл в кодировке cp866 (OEM 866).
Шаг 6: базовый конфиг для Nginx (файл Denwer\usr\local\nginx\conf\nginx.conf):
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default;
set $dir "$host/www"; # ставим $dir по умолчанию
if ($host ~* ^www\.(?<chost>.+)){ # перенаправляем все www.domain на domain
rewrite ^ http://$chost$uri redirect;
}
# Можно писать ^(?<sub>.+)\.(?<domain>.+)\.(local|xxx)$ если вы используете зоны
if ($host ~ ^(?<sub>.+)\.(?<domain>.+)$){ # получаем субдомен
set $dir "$domain/$sub"; # ставим путь к субдомену
}
root /home/$dir;
index index.php;
error_page 403 404 = @apache;
location / {
if ($request_filename ~* \.php(3|4|5)?$){
return 404;
}
expires 30d;
}
location @apache {
proxy_pass http://localhost:81;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffers 8 1m;
}
}
}
Не суйте root в location. Виндовый Nginx его там не видит почему-то. Можете проверить добавив в server:
add_header X-Test $document_root;
Это достаточно уютненькая конфигурация сервера: вся статика будет принята Nginx'ом, а динамические элементы уйдут на Apache (можно отличать по заголовку Expires в ответе, если он есть - значит отдан Nginx'ом).