lexa@cutenews.ru
RSS
В начало страницы

Мастерю (22 заметки)

Релиз года

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

pehto

Сайт, которого все так ждали. А как же его не ждать? Лучший, потрясающий, ахуитительнейший долгострой тысячелетия.

Пока создавал шедевр стёр все (обе) в руки в кровь от постоянного онанизма. Это не патологическая тяга теребить пипиську, нет. Это восхваление шедевра.

Хуй в пальто на ваших экранах.

Восхвалите же мой гений, оцените же труд, прикоснитесь же к искусству, отдайте же почести терибением. Массовые теребения это прекрасно!

Проверка микрофона... Раз, два, три

Август 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) и твиттер(тик или очек?).

Nginx + Denwer = какая-то хуйня, но...

Июнь 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'ом).

Использование GCC не по назначению

Май 2011, 21 @ 02:35 В интернете Мастерю

Копался на форуме AkelPad в поисках какой-нибудь полезной фигни и набрёл на интересное использование GNU Compiler Collection.

Делаем test.txt:
#define date __DATE__

Привет
из
__FILE__:__LINE__
date


Потом gcc -E -x c -P -C test.txt и на выходе получаем:
Привет
из
"test.txt":5
"May 21 2011"


Ключи описаны тут. Если коротко и не очень точно:
-E - включает режим препроцессинга, без компиляции.
-x c - интерпретатор языка Си.
-P - вырезает мусор.
-C - игнорирует (не вырезает) комментарии.

FreeBSD

Май 2011, 04 @ 08:11 Мастерю 1 комментарий

Когда в прошлый раз красноглазел. Э, красноглазил. Маялся хуйнёй с Debian мне посоветовали посмотреть и фряху.

Априори FreeBSD вызывала у меня любовь. Ну, знаете, дома Windows, на сервере Debian, на ноутбуке всяка разное. И фряха казалась мне самой правильной. В плане трушной, ибо трушность это трушно.

BSDшная лицензия действительно опенсорсная. Сеет свет и добро в этот хуёвый мир. Если смотреть глазами разработчика, то лишь подобные лицензии дают полноценную свободу. Напиши я свою мизерную программу, которая будет тупо пробикивать "Каприз №24" я могу её хоть продавать. А чего? Набрал чужого кода, оформил красивенько так и вперёд - к новым планкам продаж. Или отдать в пользование под любой лицензией. Свобода. С GPL такой номер не пройдёт. Я вроде как использую свободное, бесплатное, открытое, но в итоге имею кол в жопе.

Короче. FreeBSD понравилась. Даже очень. Если не считать совершенно упоротого инсталятора, в котором я просидел часа три потому что после очень короткой инсталяции тебя возвращает не в главное меню, где можно тыкнуть exit. Нихуя. Тебя возвращает в пункт настроек, из которого и пошла инсталяция. Блядь, я добрую сотню раз думал, что где-то накосячил. Не, оказывается всё нормально. Мне просто надо вернуться на четыре окна назад. Криворукие долбоёбы, привет.

Но зато ставиться всё моментально и занимает совсем чуть-чуть места. Очень понравилось: хочешь голую систему? Получай. Ubuntu даже через minimal в самом голеньком виде жрёт больше места. Чего же такого ставит? Не понятно.

Порты и возможность поставить бинарную версию это класс. Порты качают все зависимости. Всё супер отлично. Но в скачивание затаилась подлая хуита. Качается не из централизованного хранилища, как в каких-нибудь apt-get или zypper из линуксятенки, а с отдельных сайтов.

Сколько нужно разработчиков FreeBSD, чтобы вкрутить лампочку? Один, но попросить его нужно сотню раз.

Хочу я дёрнуть чего-то. Пожалуйста. Начнём качать. Открываем соединение. Проверяем сайт зависимости. Упираемся в тупик. Закрываем. Открываем соединение. Проверяем. Качаем. И так каждую итерацию до конца зависимостей.

На выкачачку жалких двухсот метров уход до жопы времени.

Линуксятенка выкачает, например, Xfce и зависимости за десять минут. Фря убьёт почти час.

Но, хоть и раздражающие, это мелочи. FreeBSD очень понравилась.

Git

Январь 2011, 31 @ 01:41 Мастерю 5 комментариев

github.com это прям Facebook для программистов: "эй, зафренди меня", "на этом ASCII-арте мы бухаем с Васей", "лайкни мой код". Отчасти поэтому некоторое время назад перебрался с гуглокода (SVN) на Git. На Mercurial - на том же гуглокоде - поленился переводить и зря.

Mercurial куда более удачное решение - он и проще, и удобнее. Но "лайкать" негде, да. bitbucket.org гитхабу проигрывает.

В итоге остался на Git, но пользуюсь для него и SVN'а плагинами к Mercurial. От такая хуита.

Если кто не в курсе, SVN, Git и Mercurial это системы управления версиями кода. Созданы для упрощения ведения правок, собственно, кода.

P.S. Git для Windows это чьё-то ололо.

AkelPad

Январь 2011, 12 @ 07:25 Мастерю 5 комментариев

Месяцы нерешительности, пара дней мучений выбора и знакомств, несколько часов на подгонку. Перехожу с PHP Expert Editor на AkelPad.

Почти всё писал на PHP Expert Editor. Он простой, удобный и относительно лёгкий. Но подгонять его под себя сущие муки. Мне жутко не нравится в редакторе громоздкие меню, жиреющий файл с настройками, криворукую реализацию подсветки (для каждого языка надо переопределять стили), отсутствие возможностей кастрации (помимо ручной правки конфига, да и то порезать-поправить можно лишь основной тулбар) и прочая фигня.

Со временем накопилось много раздражающих мелких косяков и я решил сменить обстановку. Процесс смены не так-то и прост, кстати. В мире, наверное, меньше китайцев, чем всяких текстовых редакторов. Не беря в расчёт программы вроде Vasyas Super Editor, которых как говна. Фигли, у нас, похапэшников, CMS, а у десктопщиков плееры да редакторы.

И на знакомство с каждым надо потратить время. Вдруг чё упущу. Но в итоге по большому счёту всё едино: не текстовые редакторы, а комбайны состоящие из всего подряд, но не из того, что действительно может быть полезно.

С AkelPad, конечно, тоже не всё гладко. По умолчанию он совсем голый. То есть даже самые стандартные вещи как то тулбар и контекстное меню отсутствуют в базовой сборке и идут плагинами. Это очень хуёво потому что сказывается на результате. Например, плагины не могут "обзванивать" другие плагины, поэтому контекстное меню тупо включает в себя всё, чем потенциально может быть расширен редактор. Точнее, вызовом оных. И выходит, что если плагин не стоит AkelPad становится очень грустным AkelPad.

Есть ещё кучка претензий по интерфейсу и некоторым косякам в работе удалялки букв. Но это OpenSource (код под BSD) и всё можно будет допилить под себя. Пока поправил то, что можно поправить без лазанья в код и приделал поддержку Lua. Затем потихоньку буду улучшать статутбар (строку состояния) наполняя её полезными функциями, зафигачу красявый набор иконок, вырежу каку из основного меню и т.д.

Чай руки-то не из жопы. Да и вон, я почти доосилил книгу по Сям. И теперь я лучше, чем вы.

Режь! Жги! Компилируй!

Январь 2011, 10 @ 06:10 Ваще без темы хуярю Мастерю

За те два дня, что я ходил по форумам мучая всякие никсы, понял, что самая большая проблема у красноглазиков это выбор дистрибутива. Тысячи тем "Какую сборку выбрать?" и миллионы "Эта против Той". Да любую бери, они все одинаковые.

Единственная хоть чего-то стоящая дилемма - пакетные системы. Чтобы не пришлось возиться с компиляцией. deb или RPM? Ну, и отсюда выбор дистрибутива. Например, "дружелюбные" Ubuntu (deb) и openSUSE (RPM; zypper, кстати, мне понравился больше aptitude).

А так - всё едино. Даже нет разницы в оформление. Не считая каких-то незначительных мелочей. Хули, окна-то для всех одинаковые: что KDE, что GNOME, что XFCE, что прочие. Они тоже отличаются, но опять как бы. Потому что внешне всё схоже, а что там в коде или идеологии всем насрать.

Приятное разнообразие принесли Canonical (разработчики "Убунты") с Unity. Хоть что-то не похожее на "как в винде, только хуже" (хуже - потому что на пользователя насрать, не, Microsoft тоже насрать, но у них есть куча разработчиков и триста миллионов до неба... хм, куч денег, да, поэтому хоть какие-то средства на интерфейс выделяют). Фигли, а выходят споры "GTK+ vs. Qt" и не между разработчиками, а между пользователями. Фу, бля, стыдоба.

Злобный пост про make

Январь 2011, 06 @ 12:18 Мастерю 1 комментарий

Когда говорят про Си, подразумевают сложность в руление памятью: что забить, что освободить. Но ядреный, истинный пиздец это все ваши make, configure и т.д. Компиляция гораздо сложнее процесса программирования. Одних только параметров у gcc - компилятора Си - на лета хватит - на институт и магистратуру.

И все считают make ядрёным пиздецом и нагородили ему замен. А замены не прижились и make продолжает пугать бедных граждан. Надстройки вроде cmake (типа кроссплатформенного генератора хуиты для make и сородичей с других платформ, о, как) как бы не сильно популярны, хотя вперёд шагают.

Мир интерпретаторов-то лучше будет, да. "Лучшее" многократно.

Мэри крисмас, долбоёбы

Декабрь 2010, 26 @ 02:52 McHost Мастерю 1 комментарий

Перевожу сайты с "Мастерхоста" на "Макхост". Ну, точнее, почти всё, кроме сайтов висящих на cutenews.ru перевёл. А раз уж двадцать пятое или двадцать шестое, но кто считает, и время писать про "Макхост", то и как бы, да. Как бы вот. И как бы э.

Потерял суть.

Как-то хвалил ImageMagick: мол, шикарная штука. По сравнению с GD просто красота. Но и в нём не всё так гладко. В первую очередь, косяки с наложением изображения. Есть картинка А, она копируется в Б, сдвигается и накладывается под А. Так же с картинкой В, с той лишь разницей, что сдвиг идёт в противоположную сторону. На выходе получается что-то вроде эффекта outter glow:


И всё,вроде хорошо, и всё вроде чинно, да вот одна и та же версия ImageMagick под Windows и под Debian сдвигает изображения по-разному. Нормальный сдвиг под виндой на никсах слишком мелок. Почему так - загадка.

Кстати, если знаете, как улучшить эффект outter glow, шлите SMS на короткий номер 2244. Каждый сотый получит авввтомобиль.

P.S. О, ещё я взялся за Си, а то хожу, как дурак. Даже стыдно. Но это уже другая история.

Хотите больше? Шлите SMS на короткий номер 2244.
[1] [2] [3]