пятница, июля 03, 2009

Третья программа на wxWidgets

В прошлый раз мы остановились на простенькой программке в одну кнопку и один текстовый блок. Пора добавить одно текстовое поле.

1 #include
2
3 class MainApp: public wxApp{
4 public:
5 virtual bool OnInit();
6 };
7
8 enum{
9 BUTTON_Pimpa = 1,
10 Question_ID = 2
11 };
12
13 class MainFrame: public wxFrame{
14 public:
15 MainFrame( const wxString &title, const wxPoint &pos, const wxSize &size );
16 wxButton *Pimpa;
17 wxStaticText * Warning;
18 wxTextCtrl *Question;
19 void changeText(wxCommandEvent& event){Warning->SetLabel(_T("А вы нажали на кнопку."));}
20 private:
21 DECLARE_EVENT_TABLE()
22 };
23
24 BEGIN_EVENT_TABLE ( MainFrame, wxFrame )
25 EVT_BUTTON ( BUTTON_Pimpa, MainFrame::changeText)
26 END_EVENT_TABLE()
27
28 DECLARE_APP(MainApp)
29 IMPLEMENT_APP(MainApp)
30 bool MainApp::OnInit(){
31 MainFrame *MainWin = new MainFrame(_("Заголовок окна"), wxDefaultPosition, wxSize(580, 200));
32 MainWin->Show(true);
33 SetTopWindow(MainWin);
34 return true;
35 }
36
37 MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size):wxFrame((wxFrame *) NULL, -1, title, pos, size) {
38 Pimpa = new wxButton(this, BUTTON_Pimpa, _T("Произвести вычисления"),wxDefaultPosition, wxDefaultSize, 0);
39 Warning = new wxStaticText (this, BUTTON_Pimpa + 1, _T("Я написал что-то на wxWidgets!!"), wxPoint(10,100), wxDefaultSize,0,wxStaticTextNameStr);
40 Question = new wxTextCtrl(this, Question_ID, wxEmptyString, wxPoint(390,40), wxSize(25,20));
41 }

Пример не идеальный, поэтому мы ещё будем его исправлять. Но сначала я объясню, где что значит.
Из действительно новых элементов интересна только строка 40.
wxEmptyString - это строка, которая стоит в текстовом поле по умолчанию - при запуске программы и при вызове метода Question->Clear().
wxSize(25,20) - это размер текстового поля.

Теперь - к усовершенствованиям.Добавьте после 40й строки ещё две:

Question -> SetMaxLength(2);
Question -> SetValidator(wxTextValidator(wxFILTER_NUMERIC));

Что это даёт? Это иллюстрирует ограничения на ввод. Первое ограничение говорит о том,что ввести можно лишь 2 символа. Второе ограничение - то,что эти символы могут быть только цифрами. Здесь необходимо сделать замечание: при обработке методом Question->GetValue() библиотека возвращает wxString - значение поля. Но числа можно задать разными способами: это может быть обычная нотация,как 1, 2, 3 и так далее, это может быть 3.14, или 3,14, или 3e+13. Таким образом, на деле в нашем текстовом поле может оказаться не только цифра.

Чтобы считать число из поля и записать его в переменную, удобно писать такую конструкцию:
if (!(Question->GetValue()).ToLong(&variable,10)){...}
, где на месте ... обрабатывается случай, когда значение Question не удалось преобразовать в десятичное число.

Но я отвлёкся к частному случаю. Если с maxLength всё более или менее понятно, про валидаторы можно рассказать подробнее.
Валидаторы, как вы уже поняли, служат для разнообразных ограничений ввода.В базовом варианте они проверяют нажатия клавиш и блокируют недопустимые. Есть много стандартных валидаторов, которые используются в самых простых случаях; также можно описать свой, если, например, вам нужны только буквы А,В,С,Е,Н,Й,М и Ψ. Это уже отдельная тема, не буду отвлекаться настолько сильно.

Что же мы получили сейчас? Программу с одним текстовым блоком, одним текстовым полем и одной кнопкой. Помнится, я именно из такого набора составлял графическую версию "Магического Шара". Более того: до фига моих лабораторок за 3й курс сводились к приёму и обработке параметров, это реализуется так же просто. Ну, или этот набор годится для кроссплатформенного кейгена (ни разу не встречал ничего подобного, но это просто фантазии).

Поэтому пока что закончу серию. Простейшая программа готова и работоспособна.Что ещё осталось сказать?
"Ура!"

четверг, июля 02, 2009

Вторая программа на wxWidgets

Blogger с утра не пускал меня, поэтому пишу пост немного позже ожидаемого.
Продолжаем tutorial, теперь пора добавить немного активности.
Прежде всего - добавить кнопку. Назовём её Pimpa.
Пусть при нажатии на эту кнопку меняется значение нашего текстового поля. Но тогда это поле должно тоже приобрести имя - пусть будет Warning.

1 #include <wx/wx.h>
2
3 class MainApp: public wxApp{
4 public:
5 virtual bool OnInit();
6 };
7
8 enum{
9 BUTTON_Pimpa = 1
10 };
11
12 class MainFrame: public wxFrame{
13 public:
14 MainFrame( const wxString &title, const wxPoint &pos, const wxSize &size );
15 wxButton *Pimpa;
16 wxStaticText * Warning;
17 void changeText(wxCommandEvent& event){Warning->SetLabel(_T("А вы нажали на кнопку."));}
18 private:
19 DECLARE_EVENT_TABLE()
20 };
21
22 BEGIN_EVENT_TABLE ( MainFrame, wxFrame )
23 EVT_BUTTON ( BUTTON_Pimpa, MainFrame::changeText)
24 END_EVENT_TABLE()
25
26 DECLARE_APP(MainApp)
27 IMPLEMENT_APP(MainApp)
28 bool MainApp::OnInit(){
29 MainFrame *MainWin = new MainFrame(_("Заголовок окна"), wxDefaultPosition, wxSize(580, 200));
30 MainWin->Show(true);
31 SetTopWindow(MainWin);
32 return true;
33 }
34
35 MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size):wxFrame((wxFrame *) NULL, -1, title, pos, size) {
36 Pimpa = new wxButton(this, BUTTON_Pimpa, _T("Произвести вычисления"),wxDefaultPosition, wxDefaultSize, 0);
37 Warning = new wxStaticText (this, BUTTON_Pimpa + 1, _T("Я написал что-то на wxWidgets!!"), wxPoint(10,100), wxDefaultSize,0,wxStaticTextNameStr);
38 }

Скомпилируйте и зацените.А теперь по строкам.
Строки 8-10 задают идентификатор для кнопки. Зачем нужны эти ID, я упоминал уже ранее; теперь же можете посмотреть на строку 23.У этой строки такой смысл: при вызове контрола с ID Button_Pimpa надо звать метод changeText. Обработка событий происходит в закрытой части класса, что логично,а вот метод закрывать необязательно.
Строка 37 даёт ещё одно понятие арифметики идентификаторов. В самом деле, мы же можем взять следующий после кнопки. Есть ещё один трюк - это когда вы пишете wxID_HIGHEST + 1,, это даёт наибольший свободный ID. Ну да не суть важно.
Возможно,у вас ещё давным-давно возник вопрос, почему строковые константы заключены в интересные _T("") и _(""). Это макросы wxWidgets, которые конвертируют строки во внутренний тип wxString. Различие _T() и _ в том,что _T() позволяет включать интернационализацию строки - если вы вздумаете использовать gettext, то вам оно понадобится.
Кстати - здесь я также играю с позициями. Можно запросто поставить в тупик стандартный компоновщик, если прописать обоим контролам wxDefaultPosition. Но чем усложнять программу хаками, лучше сосредоточимся на действительно нужных вещах.

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

среда, июля 01, 2009

Первая программа на wxWidgets

От нечего делать решил написать маленький тьюториал. В своё время меня по-настоящему достало отсутствие нормальных обучалок по wxWidgets.
Прежде всего, обговорю два момента. Во-первых, я надеюсь,что мой читатель знает,что такое библиотека wxWidgets, что он умеет программировать на C++, что он уже установил себе всё необходимое и настроил компилятор (самый простой способ на Windows - это поставить IDE wxDev-Cpp, на Linux все способы одинаково простые) и что он горит желанием начать.
Второе - это то,что я хочу сейчас сделать. Я хочу создать минимальное рабочее GUI-приложение на wxWidgets, не обращая пристального внимания на оптимизации и трюки. Из чего состоит минимальное приложение? Дайте подумать...кусочек текста на сером фоне подойдёт.
Сперва даю код,после этого - объясняю,что он делает, договорились?

1 #include <wx/wx.h>
2
3 class MainApp: public wxApp{
4 public:
5 virtual bool OnInit();
6 };
7
8 class MainFrame: public wxFrame{
9 public:
10 MainFrame( const wxString &title, const wxPoint &pos, const wxSize &size );
12 };
13
14 DECLARE_APP(MainApp)
15 IMPLEMENT_APP(MainApp)
16 bool MainApp::OnInit(){
17 MainFrame *MainWin = new MainFrame(_("Заголовок окна"), wxDefaultPosition, wxSize(580, 200));
18 MainWin->Show(true);
19 SetTopWindow(MainWin);
20 return true;
21 }
22
23 MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size):wxFrame((wxFrame *) NULL, -1, title, pos, size) {
24 new wxStaticText (this, wxID_ANY, _T("Я написал что-то на wxWidgets!!"), wxPoint(10,100), wxDefaultSize,0,wxStaticTextNameStr);
25 }


За этими 25 строчками кроется глубинный смысл. Пока что скомпилируйте, а я расскажу,что да как. Напоминаю,что на Linux это делается командой:


g++ `wx-config --cxxflags` <ЗДЕСЬ_ИМЯ_ФАЙЛА> `wx-config --libs` -o <ИМЯ_БИНАРНИКА>


Начнём,пожалуй. Строка 1 подключает собственно wxWidgets. Для случая прекомпиляции предусмотрен иной подход, но что я говорил насчет оптимизаций?
Итак, на строке 3 мы создаём класс MainApp. Это будет основной класс нашей программы,о чём напоминают строчки 14 и 15.В строках 8-12 создаётся фрейм программы - собственно окошечко, в котором будет виден текст. Позднее туда ещё добавится пара контролов.

Если вы заметили,то программа не содержит функции main(). Вместо неё первой выполняется функция OnInit(),это строки 16-21. В них всё довольно топорно: пичкаем фрейм нужными параметрами (заголовок, позиция на экране и размер), выводим на экран, и даём команду сделать его основным окном программы.

В строках 23-25 описывается содержимое фрейма. Собственно, что и будет выведено после выполнения строки 18. У нас это безымянный текстовый блок. немного о параметрах конструктора:

new wxStaticText (this, wxID_ANY, _T("Я написал что-то на wxWidgets!!"), wxPoint(10,100), wxDefaultSize,0,wxStaticTextNameStr);

this - это указатель на окно,в котором выводится текстовый блок. У нас, собственно,и нет выбора.
Значение wxID_ANY нужно объяснять долго. wxWidgets использует систему ID - то есть,каждый объект на фрейме имеет собственный целочисленный номер. Это понадобится чуть позже, когда придётся обрабатывать события. Пока что обработка событий в наши планы не входит, поэтому и ID мы задаём произвольным образом.
wxPoint(10,100) - это положение тестового блока на фрейме. Объект класса wxPoint задаёт его левый верхний угол - здесь только две координаты, которые считаются от левого верхнего угла.Вместо этого можно написать wxDefaultPosition - размещение по умолчанию, но ведь лёгкими путями не достигнуть просветления.
Здесь хотелось бы сделать замечание. При ручной расстановке я заметил,что в разных осях разные шрифты и размеры блоков. Так, в одной операционке мне не хватает ширины на фрейме,в другой - высоты. Разница в шрифтах, разница в размере границ полей..всё это даёт сильные перекосы, поэтому старайтесь придерживаться всё-таки стандартных компоновщиков,это сильно сэкономит нервы и время.
wxDefaultSize - размер блока. Рекомендую не вычислять вручную, библиотека это превосходно сделает за вас.
0 - отвечает за стиль текста. Если интересно - смотреть здесь. Но в большинстве случаев вам это смотреть не понадобится.
wxStaticTextNameStr - имя окна. Играть с этим не требуется,но если есть желание - почитайте маны и попробуйте.

Итак, вроде всё. У нас получилось одинокое окошко с текстовым блоком.Попробуем чуть-чуть усложнить задачу. За что я не люблю остальные руководства - они думают, что статусбар и меню - это обязательные элементы интерфейса. Чушь собачья! Интерфейс должен быть максимально простым и требовать не больше одного клика мышки.Что требует всего лишь одного нажатия? Кнопка.

Так, на сегодня пока всё. В следующий раз попробуем сделать ещё одну бессмысленную программу, в которой значение текстового поля будет меняться с щелчком кнопки. При желании, кнопку можно будет сделать красной :-)

воскресенье, июня 28, 2009

Небольшой скрипт

Вчера была очередная игра, но я не об этом.
Я написал скрипт для того,чтобы обновлять внешний IP'шник в своём DC++. Предполагается linuxdcpp последних версий. Сильно, думаю, упростит жизнь людям с динамическим IP. Перед использованием проверьте переменные $path и $url

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple; #получение IP
my $path = ".dc++/DCPlusPlus.xml";#местонахождение собственно конфига
my $url = "http://p2p.kuzbass.net/getip.php";#адрес, с которого берётся IP. Подойдёт любой стабильный и простой по выводу, как http://whatismyip.ru или http://whatismyip.org. Основной критерий, конечно же, стабильность.
my $ip = get($url) or die($!);
$ip =~ /(\d+.\d+.\d+.\d+)/; $ip = $1;
print "Your IP is: $1\n";
my $CONFIG, my $BACKUP;
open (CONFIG,$path) or die($!);
open (BACKUP,">",$path."~~") or die($!);
while (){
s{\d+.\d+.\d+.\d+}{$ip};
print BACKUP;
}
close(CONFIG);
close BACKUP;
exec ("mv $path~~ $path");

четверг, июня 25, 2009

Небольшие планы...


Игра по системе Fallout продолжается, и постоянный геймтестинг даёт плоды.
Собираюсь внести свой вклад в создание Fallout P&P 3.0. Моя система,которую я создавал до этого,всё равно во многом заимствована оттуда (чего стоят одни Traits), за исключением,конечно, магии.
Так что у меня есть все основания чувствовать себя так же, как и VaultBoy на этой картинке.
Правда, я не знаю насчет своего знания английского и понравятся ли там мои правки, но уверен,что у меня будет возможность опробовать их на живых игроках :-)

вторник, июня 16, 2009

Законы жанра: MMORPG

Почему-то натыкаюсь на призывания сделать новую MMORPG, где "всё будет по-другому".
Здесь я хочу написать законы этого жанра и объяснить,почему по-другому делать невыгодно.
Итак:
  1. Опыт начисляется за убийство монстров. Квесты дают меньше опыта, чем кач на монстрах.
  2. NPC стоят как столбы на одном месте и ничего не делают. Их характер слабо прописан, никакого отыгрыша.
  3. Маленькие возможности социального интерактива, упор на бой.
Попробую объяснить, откуда это так придумано.
Начну с простого. "Кач" на монстрах против "кача" на квестах.
Посмотрите на игру для одного игрока "Ведьмак". Гениальная игра, образец single-player RPG. Опыт даётся преимущественно за выполнение квестов, монстры дают сравнительно ничтожное число "экспы". Но! Но квесты в игре тщательно прописаны и невообразимо интересны. Более того: у игры очень низкий replayability. Если вы сыграли в неё один раз, два раза...десять раз, вы не захотите её проходить в одиннадцатый раз, поскольку вы уже знаете все или большинство поворотов сюжета. А мочить монстров невыгодно, потому что на них не раскачаешь персонажа. Поэтому даже если в MMORPG квесты хорошо прописаны, но опыта они всё равно дают существенно меньше, чем "мочилово" монстров. Это обеспечивает интерес к игре, чтобы в игре можно было сидеть неделями\месяцами\годами, даже когда основная сюжетная линия закончена.
Пойдём дальше. "Тупые" NPC.
Я напомню, как расшифровывается название жанра - Massive Multiplayer Online RolePlaying Game. Ролевая онлайн-игра для огромного числа игроков. Скажите мне, когда по миру бегут тысячи персонажей, отыгрываемых игроками, так ли уж важно заморачиваться над несколькими персонажами, отыгрываемых компьютером? Допустим,что важно. Пойдём дальше. Большинство из этих игроков бегут очертя голову, качаясь до последнего уровня и хватая квесты напропалую. Они не оценят работу над NPC, потому что просто пробегут мимо неё. Поэтому у NPC очень слабо прописывают характер: никто не остановится и не оценит этой работы.
Почему же компьютерные персонажи стоят на одном месте? Это самое простое. Представьте,что в город пришло Очень Много Героев одного уровня.Например, первого.И им всем нужен один и тот же NPC. А он ушёл. В это время он спит, потому что ночь. Он лежит у себя дома,в постели,вместо того,чтобы стоять на площади и ждать игроков.
Очень Много Героев одного уровня будут без дела слоняться по городу и искать нужного NPC, после чего не найдут его и уйдут из игры. Либо найдут и добьются нужного. Но дело не в этом - дело в том,что они потеряют уйму времени на то,чтобы поймать Абсолютно Незначительного Персонажа. Поэтому этот персонаж должен нести свой пост круглые сутки на одном месте.
Теперь - боёвка vs. социалка. Здесь уже большую роль играют лень и новизна жанра. Боёвка - это взаимодействие игрока с монстрами - т.е. игрока с компьютером. Здесь всё намного проще, ведь это уже давно продумано в обычных RPG. Придумал систему боя, нарисовал десяток летающих бурундуков - вот тебе уже геймплей.Социалка же - это обязательно взаимодействие с человеком, потому что только человек сможет нормально в ней участвовать. Причём должен быть полный отыгрыш, потому что не каждого человека можно заставить соблюдать правила, подобно компьютеру. Здесь уже идёт фантазия игротехов. Самое простое решение - выдать обоим игрокам по чату, пусть чатятся и там уже показывают,как они *охают*, *ахают*, *преклоняются на одно колено* или что ещё. Посложнее - дать систему охов, ахов и прочаго в самой игре, т.е. отрисовать это. В этом направлении подвижек очень мало, потому что трудно придумать что-то новое и вместе с тем не запороть весь соц. интерактив. Тем более,что он не исследован в оффлайн-играх с двадцатилетней историей. Вот и остаётся делать упор на бой.
Вроде бы всё. Думаю, в близком будущем посмотрю законы других жанров,если получится интересно. Если я что-то забыл - не стесняйтесь напомнить в комментариях.

пятница, июня 12, 2009

Пробы картографии

Только что попробовал себя в качестве картографа.
Перо, чернила, бумага, 2009г.
Карта неизвестного острова.
Сильно оптимизировал при загрузке в инет, так что она весит 30 Кб и даёт довольно сносное качество, чтобы рассмотреть мелкие детали (хотя бы деревья).
Обозначения взял с потолка, хотя старался быть правдоподобным (к сожалению,но только после второго росчерка пера - первый оказался слишком гладким, нетрудно догадаться каким именно он был).
Опыт считаю удачным. Потом попробую на более осмысленных местах и,возможно, с подписями.

четверг, июня 11, 2009

Пиратская партия

http://translated.by/you/the-pirate-party/
Очень интересные идеи затрагиваются в этом манифесте.На такой маленькой, казалось бы, основе - всего лишь авторское право - создать целую партию.
Цитирую:
Монополия владельцев авторских прав на коммерческую эксплуатацию художественных произведений должна ограничится пятью годами после публикации.
Хорошо, но маловато. Если бы так было, то "Гарри Поттер и философский камень" выпускался бы всеми кому не лень без отчислений Роулинг уже в 2006м. Мне кажется, что срок 50-60 лет после публикации более резонен, за это время произведение становится классикой. В любом случае, не меньше 40 лет - к этому времени приходит второе поколение, а их уже мало смысла удерживать.
Мы также хотим полностью запретить использование DRM-технологий

Смело. Смело,но пока неясно, готовы ли к этому издатели.Утверждение имеет под собой основания, между прочим - DRM вредит пользователям больше,чем даёт пользы издателям. Разработчики так вообще от него проигрывают: им приходится клепать этот самый DRM,а если они это сделают очень хорошо (как Steam или Spore), то покупатели могут обидеться и обратиться к пиратам. Единственное предложение, за которое я за - безоговорочно.
Европа только выиграет и ничего не проиграет от безоговорочного упразднения патентной системы.

Очень,очень смелое заявление.Европа - может быть,и выиграет, а вот как насчет изобретателей? Между прочим,научные открытия даются труднее,чем выпуск музыкального альбома или серии книг,а учёные не получают столько славы.Такое утверждение только сделает их жизнь ещё хуже.Я согласен с тем, что эпидемия есть эпидемия, и если какой-то институт намеренно скрывает спасительные рецепты, это очень гнусно и должно лежать на его совести, но в таком приказном порядке заставлять всех и каждого вскрывать карты,если народу оно надо... Очень, очень дурное предложение.
Соблюдение права на неприкосновенность частной жизни

На первый взгляд,имеет мало общего с названием партии, но это - ещё одна больная тема, особенно в Европе.Человеческая паранойя не знает границ. Если ставить защитные меры всё строже и строже, можно попасть в действительно непритягательный мир. Об этом сказано довольно расплывчато, и не совсем понятно. Мой дом - моя крепость, как только я вышел на улицу - я под колпаком.Это тоже соблюдение неприкосновенности частной жизни, в особом подходе.

Вообще, Пиратская Партия - это интересное движение,но у нас в стране оно пока не началось,да и вряд ли начнётся. Наши законы не настолько жёстки,как в Европе, чтобы им противостоять,а защитники авторского права не столь агрессивны. Файлообменники никто не закрывал, torrents.ru идёт навстречу правообладателям, когда они требуют. Так что остаётся только смотреть,к чему придёт Евросоюз. А потом будем поступать по-своему.

Бороды

Только что посмотрел Кабачок "13 стульев" на телеканале "Ретро". Съёмка 1968г.
Там был Спартак Мишулин,и он участвовал в диалоге про верблюда.
Ёлки-палки,я не думал,что сценки "Аншлага" НАСТОЛЬКО древние. Я думал,они датируются 1980-1990ми годами XX века.
Ну и там было много бородатейших анекдотов из свежайших газет,конечно.

среда, июня 10, 2009

Стены

Одна из моих любимых песен имеет интересную историю.
Эта песня называется Mury ("Стены") и была написана Яцеком Качмарским году в 1978м. Музыку он взял у гимна антифранкистов Испании L'Estaca, автором которого был бард Луис Льях.Это - самая известная песня Яцека, потому что она,в свою очередь, стала гимном польского антикоммунистического союза "Солидарность".

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

Песню быстро подхватили, и действительно выучили наизусть - она стала гимном оппозиции.Её припев стал сигналом "Радио Солидарности", а вот как раз этот пессимистический финал часто оставляли. То,что припев в песне был заключён в кавычки, просто не поняли.Таким образом, песня заканчивалась на том, как толпы народа поют про то,как падают стены, и всё. Предположительно стены падают, народный дух поддержан. Очень много людей из всей песни слышали только припев.

Хуже того: как только песня получила народную славу, её начали коверкать. Это обычное дело - люди же не записывают слова, они просто их помнят. И они могут их помнить не совсем верно. Или им не нравятся слова - так, в Гданьске конец песни вместо "Стены растут,растут, растут..." был оптимистическим - "Стен нет,нет,нет...". В каждом городе был свой вариант "Стены" и люди вкладывали в него то,что хотели.

Качмарский сильно ругался по этому поводу и говорил,что его не понимают и что песню исковеркали наоборот; он даже написал продолжение под названием "Стены '87" и хотел,чтобы все перестали петь,а начали уже что-то делать. Всё без хорошего толку,гимн пел каждый и не понимал никто.

В конце концов, коммунизм в Польше всё-таки пал, лидер "Солидарности" стал президентом...в общем, снова народ счастлив.

Сам я не знаю польского, поэтому читал всё со словарём. Если интересно, об этом написано в польской и английской Википедиях, а также на офиц. сайте Качмарского.

Вот сама песня - исполнение Жана-Мишеля Жарра вместе с Академическим хором Гданьского университета и оркестром Польской Филармонии Балтики на концерте, посвященном 25-летию "Солидарности".
Слова песни (на польском,естественно)
Перевод Андрея Базилевского (очень качественный)

Линии в LaTeX

Иногда хорошо отчеркнуть часть текста длинной горизонтальной линией. Но команда \hline работает только в таблицах. Как нарисовать линию?
Ответ прост, хотя и часто забывается в руководствах на русском. Для этого служит команда \line:
\line(x,y){длина}

Она рисует линию указанной длины по указанному вектору.

Координаты вектора (x,y) есть целые числа по модулю не больше 6. Кроме того, они должны быть взаимно простыми (то есть, не иметь общих делителей кроме ±1). Чаще всего используются (1,0) - это горизонтальная линия, и (0,1) - вертикальная линия.

вторник, июня 09, 2009

User style

Мне надоело оформление юзеров diary.ru. Я понимаю,что отсутствие вкуса - это дело терпимое, но когда их движок даёт полную волю подобным выкрутасам...
Представляю вашему вниманию Уничтожитель Оформления для всего diary.ru и прочих. Пользователям Mozilla Firefox - вставить в плагин Stylish. Пользователям Оперы - можно инсталлировать как user script,хотя вам он и не пригодится-то в общем. Прочим не беспокоиться.
Как только вспомню свой пароль на userstyles.org, выложу туда.
Скрипт не очищенный,но действенный. Шрифт Free Times можете поменять на любой любимый.

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("diary.ru") {
body {
font-family:Free Times !important;
font-style: normal !important;
font-weight: normal !important;
background-color:#FFFFFF !important;
background-image:none !important;
color:#000000 !important;
}

#topNav, #bottomNav {background-color:#FFFFFF !important;}
#topNav a, #bottomNav a {color:#000000 !important;}

.block_design .bordered{background-color:#FFFFFF !important; border-color:#9fadbb !important;}
.header,h1{color:#000000 !important; font-weight: bold !important; background-color:#FFFFFF !important;}
.singlePost .header, .linkssection .header{background-color:#FFFFFF !important;}
.menuSection,#epigraph,.formcontainer,.pageBar, .postContent, .postLinksBackg, .postTitle, .authorName, .communityName, .order_button, .section, .list_box{background-color:#FFFFFF !important;}
#side h1 a, .header a{color:olive !important;}
a, .linkssection .postLinks a{color:darkblue !important;}
.countSecond .postContent, .countSecond .postLinksBackg, .countSecond .postTitle, .countSecond .authorName, .countSecond .communityName, .singlePost.countSecond .header, .linkssection.countSecond .header{background-color:#FFFFFF !important;}
.postDate, .countSecond .postDate{color:#000000 !important; font-size:114%; font-weight: bold; background-color:#FFFFFF !important;}
.top .bordered{background-color:#FFFFFF !important;}

.block_design .countSecond .postContent, .block_design .countSecond .header, .block_design .countSecond .postLinksBackg, .block_design .countSecond .authorName, .block_design .countSecond .communityName{background-color:#FFFFFF;}
.calnd th { background-color:#FFFFFF; color:#000000; font-style: normal;font-weight: bold; text-align:center; }
#my_tags{border-color:purple; background-color:#FFFFFF;}

.htmlbox textarea, input.text, #trspisok textarea, #close_text{
background-color: #FFFFFF !important;
font-family: Free Times !important;
font-style: normal !important;
font-weight: normal !important;
color:#000000 !important;
}

#vkl li a{color: #000000 !important;}
#vkl .z_top{background-color: #FFFFFF !important;}
#vkl .current a, #vkl .current .z_n{background-color:#FFFFFF !important;}
#vkl li a, #vkl .z_n{background-color:#FFFFFF !important;}
#vkl .z_v{background-color: #FFFFFF !important;}

#shsmile{background-color:#FFFFFF !important;}
.SmilePanelElement small { background: #FFFFFF !important; color:#000000 !important;}

}

понедельник, июня 08, 2009

Trust is a weakness

Для получения зачётов соц. инжиниринг - это вещь!
Для экзаменов ещё понадобится немного фантазии и удачи.
Но вот курсовик лучше сдавать честно...

Openoffice.org 3. Траблы с оглавлением

После замены шрифта во всех стилях абзацев с Times New Roman на Free Times (это было решением другой проблемы, когда буквы Й и й не пропечатывались) моё оглавление стало выглядеть так:

Поиск по интернету ничего не дал, поэтому пришлось изобретать решение самому. Я нажал правой кнопкой мыши на оглавлении и выбрал "Править оглавление\указатель". После некоторых манипуляций с флажками я понял,что если отключить использование дополнительных стилей, то заголовки первого уровня вообще исчезают...это лучше, чем когда они присутствуют в шестикратном количестве.
Рядом со флажком "Дополнительные стили" есть кнопка "...".
Вот как должно выглядеть это окно:


У меня же было 6 заголовков 1 уровня.
Что делать здесь, думаю,уже понятно. Нажмите на лишний заголовок и уберите его влево. И так со всеми ненужными.

воскресенье, июня 07, 2009

The Terminator 4

Только что вернулся с киносеанса.
Чёртов крутой фильм! Это просто супер. Это самое суперское из суперсуперского, какое только может быть.
В фильме до фига хороших взрывов, перестрелок и лихой сюжет. Первый атомный взрыв идёт практически на пятой минуте. Два главных героя - теперь я верю, что Бэйл способен не только на каменную рожу во весь кадр. Чёрт побери, там даже была фраза "I'll be back" (хотя ТЕПЕРЬ её говорит повзрослевший ГГ) и по-настоящему железный Арни! (молодой до чёрта). Да,и я не заметил что-то психоаналитика...жаль старичка.
Был единственный минус - пафоса выше крыши. Проникновенные речи о духе народа и различиях человека с машиной вот так взяли и сподвигли всё человечество на хорошие поступки.
Достойное продолжение серии, которое не снилось самому Кэмерону. Один из редких случаев, когда не стремятся стянуть воедино все нити, а нормально дописывают детали, о которых раньше не знал. Но крови было меньше чем взрывов.

суббота, июня 06, 2009

Chromium

Опробовал сборку Chromium под Linux.Всё ещё сыро. Чего недостаёт?
  1. Как указано при старте, ещё нет многих поддержек и плагинов. Например, Flash и Java.
  2. Google Gears также не входит в набор.
  3. Ну неужели никому не пришло в голову дать главному окну set_decorated(False)? У него две границы - своя и от менеджера окон. Посмотрю исходники, может и исправлю. Мелочь, а неприятно.
  4. Медленный, по сравнению с Firefox. Впрочем, это также свойственно и офиц. сборке Chrome, особенно на vkontakte.ru (часто сайт висел в браузере). С Оперой вообще не стоит сравнивать, потому что оперу он может обогнать только по быстродействию JS.
В общем и целом - это Chrome, великий и ужасный. Действительно каждая вкладка отдельным процессом и всё круто работает, но до офиц. релиза явно дело дойдёт не скоро. Хотя ночная сборка на удивление стабильна и не вылетает вообще. Ей ещё далеко даже до своего Windows-аналога (которому, в свою очередь, далеко до Opera\Firefox).

UPD: По правой кнопке мыши на панели вкладок можно отключить лишнюю границу окна, так что всё нормально.

четверг, июня 04, 2009

Машина времени

Только что обнаружил следы своей деятельности на http://slon.in.ru/empty.html.
Это приблизительно 1999й год, практически памятник культуры 90-х. Сайт не обновлялся с 2005го, к сожалению - но зато и ныне здравствует.
Господи, подумать только! Я когда-то имел ящик на mail.ru! Они удаляют их через 30 дней после неиспользования...я попробовал зайти, не пустили. Всего 9 лет же прошло!
Вот как полезно искать себя по Гуглу одинокими вечерами...

вторник, июня 02, 2009

Только что закончил читать Inkheart Корнелии Фюнке..эта книга выжала у меня из жизни целый день,я не ожидал ни капельки,что она окажется настолько большой...
Поначалу она мне показалась похожей на повести Лемони Сникета. Ни на что не претендующие рассказики о том,как главные герои кочуют по своим дальним родственникам, и что с этими родственниками случается.
Больше всего меня вывело из себя обилие спойлеров. Перед тем, как вы начинаете читать главу, вы читаете её название и эпиграф - причём оба подобраны так,что можно сразу сказать,о чём глава рассказывает. Я никогда не любил авторов с таким стилем, но здесь он доведён до совершенства. Да, сюжетные повороты часто предугадываются - но ведь я не хочу оправдать свои догадки за 5 страниц, как прочитаю их! Даже если и так, то эти 5 страниц становятся ужасно скучными.
Примерно к середине книги, наконец-то начинается действие. Завязка ужасно скучная. А потом...я не знаю,как к этому относиться.Чёртова смесь всего и под неизвестным градусом. Я ещё не решил, это мне понравилось или нет.
Почему я вообще начал это читать? Не так давно один мой друг цитировал эту книгу...не совсем цитировал,но описывал сюжет, поэтому я и заинтересовался. По повести сняли недавно фильм, хотя я слабо себе его представляю - из такого материала может получиться как хорошая лента, так и никакая, потому что грань слишком тонка. Но сюжет вроде бы хороший.
Вроде бы...Но во всяком случае,теперь я могу спокойно закрыть повесть и ехать домой.

P.S. Тысяча чертей! Фильм - дерьмо. Наверняка его снимали в Новой Зеландии. Я так не плевался со времён "Властелина Колец".

понедельник, июня 01, 2009

Изменение дизайна

Немного изменил дизайн блога - теперь ссылки подчёркиваются :-)

воскресенье, мая 31, 2009

Вчера побывал на концерте кельтской арфы Элизбара. Очень хорошая музыка, очень. Элизбар играл сначала на арфе, потом на броненосце (гитара такая маленькая с корпусом из панциря броненосца), на каком-то инструменте, названия которого я не запомнил (это смесь бубна и той металлической штуки, которая в шарманке...если кто-нибудь из вас хотя бы раз видел шарманку внутри), на гитаре,бубне (хотя нет, он был всё время к ноге прикреплён), флейте и дудочке...вроде ничего не забыл.
Элизбар приехал с Будапешта, он очень хорошо знает русский. Рассказывал он мало,больше играл.Под конец даже пел, но это вышло намного хуже...для какого-нибудь бардовского фестиваля,средненько в общем.Лучше всех удалась арфа,это несомненно.
А после концерта залез в долги и купил сборник фолк-музыки, там один альбом его,второй какого-то Ann'Sannat, всё равно интересно.
И,чёрт побери,я узнал об этом концерте всего лишь за несколько часов до начала!

вторник, мая 26, 2009

Stop!

Стоп!
Хочу я домой,

Снять униформу и уйти со сцены на покой.
Я должен знать, я жду решенья за решеткою стальной, (стальной)
Виновен ль я за всё,что было со мной?

понедельник, мая 25, 2009

Nobody Home

В моём кармане - блокнот со стихами.
В моей сумке - расчёска и щетка зубная.
Когда я - хороший пёс, иногда мне бросают кость.
Висят ботинки на резинках сами,
Раздутых рук висит тоска голубая,
Тринадцать каналов дерьма - всё для вас, вкривь да вкось.

Горит искусственный свет.
Ясновиденья рассвет -
И вот обрёл зритель силу большую.
Вот почему знаю я,
Пробиваясь в мольбе
Телефона к тебе:
Твой дом опять пустует.

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

Я буду дико и тупо смотреть,
Я сильно хочу улететь,
Но раз взлетев, на землю больше не приду я.
Малыш,я у трубки опять,
И буду молча я ждать,
Но твой дом всё так же пустует.

У меня есть пара ботинок "Гоухилл".
Исчезнут корни мои...

Одна из немногих песен на альбоме без сильно прыгающего ритма.У неё можно сделать действительно самодостаточные стихи.
Да,и в современном мире к цифре 13 можно добавить нолик.

Как включить композицию экрана в Metacity

Пишу этот пост,чтобы не забыть самому и больше не рыскать по инету.
Оконный менеджер metacity по умолчанию не имеет композиции; compiz имеет, но он тормозит по сравнению с первым, так как подгружает кучу эффектов. Как же остаться с быстрым композитным менеджером?
Зачем это нужно? Без композиции экрана не работает ни один из доков для Linux. Точнее, НОРМАЛЬНО не работает. Чем мне нравится использовать Dock, это сильно расширяет рабочую область экрана.
Оказывается, в metacity можно всё-таки включить композицию. Даже не единственным методом. Перечисляю в порядке сложности:
  1. Команда терминала
    gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true
  2. Alt-F2, набираете gconf-editor.
    Вас интересует флажок compositing_manager в разделе apps->metacity->general.
  3. Устанавливаете Screenlets, врубаете апплет Toggle Composite. Нажимаете ON.

четверг, мая 21, 2009

Конференция HPC

Сегодня побывал (точнее, нас согнали в добровольно-принудительном порядке) на конференции Microsoft по HPS - High Perfomance Computing.
Что это было? Реклама Windows Server 2008 HPC. Что означает - новой Windows Server с поддержкой параллельных вычислений и создания кластеров.
Как обычно, интерес компании в том, чтобы привлечь как можно больше программистов к её продуктам. Я уже понял,что на всех типичных конференциях интерес один:
Программисты ставят себе систему Windows и программируют под Windows. Для этих целей компания может даже им подарить бесплатную Visual Studio Express. В случае HPC она предлагает Microsoft HPC 2008 Pack - свою замену OpenMP и MPI.
В чём интерес программиста? Интерес программиста может быть в том, чтобы его программой пользовалось как можно больше человек. Если вы выбираете продукты для девлоперов от Microsoft, вы можете быть уверены: нигде больше, кроме как с продуктами Microsoft, они работать не будут.
К чести надо признать, что новая ось интересна и использование HPC Pack не является обязательным (если бы оно так и было, я бы не выдержал).Хотя про ось практически не рассказывали, в основном рекламировали сам принцип параллельных вычислений.Даже не так: про операционку было показано только то,что её сравнивали по производительности с SuSe Enterprise Linux 12 и она в принципе выиграла (хотя технически там проверять и проверять, но - быть может,я не отрицаю). Всё остальное время было посвящено HPC и где используются продукты Microsoft. В чём вообще Server 2008 круче, я так и не разобрался...видимо,только в этом, и всё.
Да,ещё дарили футболки. У них было только две футболки, одну подарили Лёше за три "интересных" вопроса, вторую - другом Лёше. Просто футболки очень велики по размеру (XXX....L), и только наши богатыри Алексеи их могут нормально носить. :-)
В ноябре Canonical обещает выпустить Ubuntu с поддержкой cloud computing..посмотрим, что получится. В любом случае, сейчас лично я ставить дома кластер из четырёх компьютеров не собираюсь (хотя возможность есть).

вторник, мая 19, 2009

Блокирование блога

Почему-то количество нажатий кнопки "ПОМЕТИТЬ БЛОГ" превысило какой-то лимит, и теперь мой блог заблокирован.
Я не знаю, почему это так (хотя моя догадка - в этой кнопке).
Я знаю,что: у меня нет спама, рекламы и постов,противоречащих законодательству. Я даже не использую AdSense, чтобы не нагромождать рекламу. Это - свалка, это реально свалка на все возможные темы (как раз сейчас мне приходят мысли,как её разгрести,но я не могу придумать до конца элегантного решения) и я часто прыгаю от литдыбра (дневников) до серьёзных статей, плюс ещё примешиваются переводы и сочинения.
По отчётам Google Analytics, блог привлекает самые разнообразные запросы Гугла: общие темы - это Latex, Omegle, дипломы, Pink Floyd, Google Docs, Ubuntu, Макарена, Perl, D&D. Я немного объединяю,и не упоминаю кое-что вроде openoffice - это просто единичные случайные запросы практически не по теме.
Это - просто безобидная свалка мыслей. Но спама здесь нет. И ничего дурного тоже.

Горячая линия: Ролевые системы

[Оригинал поста - в http://www.diary.ru/~f-a-n-tom/. Версия 1.2.]
В мире существует великое множество ролевых систем и системок. Я приведу в этом перечне лишь несколько - те, которые переведены на русский.

D&D
Старейшая система. Текущая редакция - 4.Тем не менее, до сих пор выжили те, кто играет по второй (она же AD&D). Автор системы - Гэри Гигакс (в соавторстве с Дейвом Арнесоном), обоим светлая память.
Из этой системы выросло множество других, отличительная черта которых - использование 20-гранного кубика, или d20. Это системы "Мир Великого Дракона", Fallout d20 (редкий случай более-менее продуманной системы d20) и другие, не стоящие упоминания.
Система ориентирована на фентези-сеттинг. Правила первой редакции использовали классический мир Толкиена, хотя к четвёртой мир был уже основательно переработан. Самые известные сеттинги: Forgotten Realms, Faerun, Ravenloft (заброшен с третьей редакции), Dragonlance (заброшен со второй редакции).

Книга Игрока - с незначительными сокращениями, zip, 2.1 Мb. Автор перевода - Андрей Богданов. Формат - pdf.
Книга Игрока - zip, 2.6 Мb. Перевод студии "PHantom". Формат - doc.
Мануал Монстров - zip, 1.3 Мb. Перевод студии "PHantom". Формат - doc. Рекомендую обзавестись оригинальным английским сканом, там есть иллюстрации - без картинок эта книга,поверьте, уже не та.
Мекка D&D-шника - сайт http://dungeons.ru/. Там есть всё.

GURPS
Вторая по распространённости система,из которой уже выросло много других. Она представляет такую ветку систем, как World of Darkness,Chaosium, Fuzion, Fudge, S.P.E.C.I.A.L. (больше известна как Fallout)... Отличительная черта этой ветки - наличие системы достоинств и недостатков (это пошло ещё с Hero System, на основе которой сделали G.U.R.P.S....кому интересна история RPG и кто у кого что занял, обратитесь к Википедии). Что это такое,объяснять здесь не буду: встретите - поймёте. Система (и все её производные) отличается универсальностью. Это была первая система, абсолютно не привязанная к сеттингу - платой стала модульность, об этом ниже.
Автор системы - Стив Джексон, он же может быть знаком вам по игре "Манчкин".
Текущая редакция - 4. Третья редакция переведена намного лучше, для четвертой переводов нет вообще. Поэтому ссылки ведут на разные редакции.
Попытка перевести GURPS Lite - не закончено; кстати,можете помочь.
Конверсия AD&D => GURPS
Конверсия AD&D => GURPS вариант II
LJ-community по GURPS
Сайт с переводами - судя по всему, третья редакция. Он давно не обновлялся.
Правила GURPS на русском - не закончено
Система модульная, поэтому готовьтесь читать. Одна книга - создание персонажа, одна книга - магия, ещё книга - псионика, ещё книга - мир (фентези\фантастика\киберпанк...) и так далее. Плюс очевиден: вы действительно вольны сделать из этих модулей всё,что захотите - и вам не надо будет менять систему, переходя из киберпанка в классическое фентези или приключения каменного века. Именно это обозначает буква U в названии системы - Универсальная.
Очень рекомендую покопаться по книгам, они действительно занятны, но - вам понадобится знание английского. Даже для третьей редакции переводов мало.

Chaosium
Очень интересная система, применялась во многих играх жанра ужасов (влиянием жанра, например, является шкала SANITY в листе персонажа).
Описывает более - менее современный мир. Основным кубиком является d100.
Единый костяк для ещё целого семейства систем. Перевода самого костяка не нашёл, потому только вот:

Call of Chtulhu Quick Start Rules - перевод облегченной версии правил для "Зова Ктулху", ужастика в сеттинге 20-х годов XX века

Fuzion
Система сильно похожа на GURPS,в том числе своей модульностью и универсальностью. К ней написано великое множество дополнений (плагинов), которые до сих пор не устарели (в отличие от других систем с более частыми обновлениями). По удобству не буду судить,хотя для меня в ней слишком много основных характеристик.

Total Fuzion 5 - самый полный и новый перевод.
Basic Fuzion - если вам лень читать полный свод правил, здесь они хорошо урезаны.
Сеттинг по Второй Мировой
Библиотека - много переводов.
Библиотека - много книг, в том числе переводов.
Т.н. "Русская редакция" - пересмотр правил на свой лад и вкус от Дайслордов.
Конвертирование D&D => Fuzion
русское ЖЖ-коммьюнити

CyberPunk
К сожалению, ресурсов мало. Переводов вообще нет. Если интересно - учите английский. К слову, система того стоит. Она выросла из той же Hero System, что GURPS и Fuzion,но, как видно из названия, универсальности миров не предлагает.
Генератор персонажей - внимание, есть на русском!!!
Лист персонажа

Мир Великого Дракона
Жалкая поделка русских ролевиков на тему d20. Лично я не заметил ничего отличающего.Все,кто играл в D&D, разберутся без труда,но, скорее всего, не найдут ничего нового.
Основные правила - оно же Книга Игрока
Руководство Ведущего - вылитый DM's Manual
Бестиарий - да-да, это именно Monster's Manual

Офиц. сайт

Fudge
Интересная система, эдакое упрощение GURPS. Особенностью является то,что многое в системе называется человеческими названиями, а не цифрами - так, градации идут от "Ужасно" до "Превосходно",а не от, скажем, 0 до 20. Опять же, модульность системы доведена до идеала. Это не правила, это - рекомендации! Вы вольны их изменять как заблагорассудится.
Правила на английском, там же перевод и добавки

World of Darkness
Плохо знаю эту систему (мне не понравился сам мир,поэтому невнимательно читал),но костяк в ней тоже от GURPS.
Много переводов

Fallout d20 / Fallout dS
Конверсия S.P.E.C.I.A.L. в "противоположный лагерь" систем. Представляет интерес как хорошая продуманная система с нормальной механикой и интересным миром.
Нашёл версию dS... не вполне понял,что это - собственная руссиш подделкиш или перевод вышедших в США правил игры. Но - проработано на славу.
Правила
Русский сайт

Системы d20 и Fuzion выложены по Open Game License. Это свободная лицензия для игр. Она даёт две хороших "плюшки": во-первых, вы можете свободно скачать правила с офиц. сайта,а не бегать по магазинам за книжками (что,в принципе,для России не актуально), а во-вторых (и это уже весомее), вы можете сделать СВОЮ систему на основе этих и опять же это будет совершенно свободно.

Перечень закончен.

Прошу к обсуждению.

понедельник, мая 11, 2009

Дневник Макарены - день 4

Вчера вечером у костра было очень много человек. Я ушёл рано, потому что их песен я не знаю,а водку пить - занятие скучное и тупое.
Сегодня холодно. Но - надо собираться. Чем раньше соберусь,тем больше дел успею. Я не тороплюсь,но - пока есть возможность,рюкзак собрать надо. Надо,чёрт побери.

воскресенье, мая 10, 2009

Продолжаем дневник. Одному парню вечером сильно прилетело. Первый удар по башке отрубил забрало, второй расквасил лицо. И ещё ключицу перебили.
ну ничего,ходит перевязанный, на битвы смотрит.
Руан опять штурмуют,в Орлеане убили инквизитора. Сидим,едим.
Пришли люди,потребовали выпивки. Послали до восьми вечера,варим солянку. Сидим.
На горизонте весь день горят поля, горизонт полностью в огне. Сидим,ждём.
О! Пушки стреляют. Штурм начался. Сидим.
Гостей куча. Захватили в плен двух дам из Руана, которые задумали нас захватить. Руанский стрелок им подсказал убиться - одна зарезалась,другую мы сожгли.
Все ушли...только что кабачницы вернулись.
Сидим. Девчонки уехали, штурм Руана отменён. Точнее,заменён на осаду - а сейчас уже и вовсе мировую подписали. Там было много криков, шуму и читерства - но драка так и не вышла. Фиговая здесь войнушка.
У нас определённо лучший кабак. Сейчас обедает мастер по религии. Еды - море! Всё супер.
Я опять снял рясу, на сегодня война закончена. Мы увидели утром армию,которая прошла мимо на Орлеан.Без завтрака, тут же собрались и побежали следом.
Не,ну как "тут же"...Я успел перекусить,сбегать на разведку до Руана и погулять, пока они проснулись, вылезли и оделись.
По пути мы освободили три опустевших города и тихонько влились в армию Франции.
Жанна нас гоняла, потом мы час стояли, потом - бегом до Руана и - стояние на Угре...или что там течёт. Тупо стоим и паляем стрелами.
мастер сказал,что ворота таран больше не возьмёт (когда их уже в реале разбили),а пушки забыли взять. Круто. Осталось только стрелять.У них закончились стрелы, они начали воровать у нас. Мы взбунтовались,накостыляли парочке парней.
Сейчас уже час отдыха. Пришли какие-то,требуют купить этот город.А им объясняют,что город пуст и мы все - призраки.,в игровой одежде никого нету и мастер не считается. Облом.

Дневник Макарены - день 3

Валяюсь в спальнике с четырёх по местному. Вставать рано не только бессмысленно,но и вредно. Раньше восьми никто не встанет.
За вчерашний день у нас много кого побывало...Оказывается, мы имеем единственный кабак по берегу.
Лёг я спать довольно рано, потому что девчонки ушли в Руан,а с парнями мы уже за день наговорились.
Кофту для ног я завязал вокруг ступней тугим узлом. Получилось тепло,хотя пальцы всё равно озябли...но это и в шерстяных носках так.
Девчонки оказались из Томска,они хотят уехать уже сегодня. Будут добираться автостопом...удачи им. А вот мне придётся ждать общего автобуса.
Я не сказал бы,что страстно хочу домой. Лес,природа - хорошо! Но - скукотища.
Из всех развлечений здесь есть только битвы и "кабаки". На первых тебя отметелят,на вторых - напоят. В меру исторично,но скучно до смерти.
Кстати - знать все флаги не нужно. Их знает руководство и могут знать воины. Небоевым узнавать, от какого герцога этот воин - не обязательно.
Одну из девчонок сделали лекарем...в пылу битв за вчера ей прилетело по незащищённой голове. Шишак теперь в пол-лица.
Кстати - вчера был разговор о происхождении. Один из игроков (он играет священника при дворе) сказал,что его предка сослали после польского восстания 1863го. Он подтвердил статус графа в евросоюзе, приехал в замок...а он заброшен и разрушен. на восстановление уйдут миллионы.

суббота, мая 09, 2009

Сидим. К нам завалились двое гостей,потом - две армии. Заняли город,воду пить начали.
Я снял костюм уже давно - как святоше мне делать нечего. Все уже либо померли, либо разбежались.
Одел костюм,прошёлся - снова снял. Роль реально дубовая. Девчонки ушли в поля, парни - драться. А у меня - ужин.
Нас разбили подчистую. Вынесли весь город. Духовенство и выживших сожгли на костре как бунтовщиков и их укрывателей.
Посидели час в "мертвятнике", выяснили что победителей там нет - они все живы. Короче, битва была нечестной.
Теперь настал час respawn,только это будет завтра.
Пришли с парада - игра началась. На параде было просто представление команд и ответы на вопросы...4 часа на это убили.
Два раза накрапывал дождик.Сейчас поднялся ветер. Нас основательно пожарило,но не мочило.Я пошаманил на солнышко.
Через полчаса нас будут штурмовать,скорее всего. Но - лекаря мы получили.А вот с инквизицией не очень,трибунал не выдали.
Ветер ужасный.
Ладно,пойду играть.
Только переобуюсь.В сапогах жарко.

Дневник Макарены - день 2

<Записи очень неразборчивы и сбивчивы.Почерк дрожащий.>
Бррр.Я не взял такую вещь,как фонарик - поэтому веду записи утром.
Хуже <слово неразборчиво> я забыл о шерстяных носках.
В середине ночи я проснулся то ли от холода,то ли в туалет. Сходил в поле, возвращаюсь - полчаса провозился с молниейна входе. Чёртов тент, надо менять молнии - разъезжаются вконец.
На ноги присобачил ненужную не закрывающуюся кофту - я всё равно в свитере лежу.
В одиночку в палатке <слово неразборчиво>. Но удобно.

пятница, мая 08, 2009


Настоящее кровавое полнолуние.
Огромная ужасная луна, пионерский костёр...Красивые девушки тоже скрашивают моё существование.
Ещё достраиваются стены и ворота. В палатку идти не хочу, в компании веселее.
Поели лапшу с тушёнкой.
К нам зачастили гости...разные,я ими не интересовался. Пора переодеться в спальное уже...холодает.
В ближайшем озере полно лягушек. Вообще нешуганые, у берега сидят под водой.
Один тут купаться полез...говорит,тёплая вода. Вообще-то,холодная,но - моржам всё тепло.
Так,буду переодеваться.О,и одна из девчонок дошила мне костюм. Прелестная девушка.
Комаров здесь мало, мух ещё меньше, клещей нет.
Всё ещё жду, когда остальные переругаются и упакуют вещи по палаткам.
Ходить за дровами или делать костёр в одиночку бессмысленно. Надо сходить за водой и рубить эти дрова. Время потеряю.
Поставил палатку,развёл костёр, принёс дрова.
Для костра зачем-то вырыли яму. Я развёл - потушили и сказали,что яма мелкая. К чёрту, я уже палаткой занимался.

Дневник Макарены - день 1


Только что встали на место.
Ехали мы пять часов, до этого час собирались. Поехали на двух машинах. Два часа искали путь на полигон,но местные вывели.
Дошли до стоянки, рубим дрова на костёр и на стены. Тут хороший березняк,сухой.

среда, мая 06, 2009

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

вторник, мая 05, 2009

О длине паролей

Не так давно (буквально несколько недель тому) зарегался я на diary.ru. Ну был закрытый для гостей дневник, который очень хотелось посмотреть. Сайт мне показался вторичным, и пароль к логину (а логину нетрудно догадаться, какому) я подбирал так,чтобы вводить его единожды. В пароле я высказал всё,что думал о дневниках вообще и об этом сайте в частности. Вкратце. Поэтому мой пароль там состоит из 40 символов.
40 символов! Теперь я немного заинтересовался тамошней жизнью, и ежедневно мне приходится вспоминать этот пароль. Потому что я то меняю браузеры (и компьютеры), то они запаздывают с автозапоминанием. Хорошо ещё,что пароль кое-как привязан к тематике сайта (иначе бы я не запомнил его никогда), но ведь там есть 2 варианта его написания,которые я всё время путаю!
Плюс (это тайна..секрет-секрет!) я всё время забываю три восклицательных знака в конце.
Срочно нужна чистая телефонная книга с латинским алфавитом. На русский не соглашусь. Вы не представляете, как трудно найти подобную в городе - нет нигде. Ещё два таких "вторичненьких" сайтика - и моя голова не выдержит. А терпение - лопнет. Второе вероятнее.

понедельник, мая 04, 2009

Магический Шар, версия 3!

Только что закончил версию три скрипта "Волшебный шар".
На этот раз она работает всё также на Perl, но в консольном режиме и (трепещите!) поддерживает интернационализацию!
Теперь любая строка программы может быть переведена на любую локаль. Недостатком является то,что я пока что не перевёл программу на какой-либо другой язык мира,кроме русского.
Архив bz2 лежит здесь (5,98 Кб).
Программа абсолютно точно запускается на никсах,на винде пока не проверял. Функционал остался неизменным. Локаль по умолчанию - русская, кодировка - UTF-8.
Жду комментариев от тестеров!

UPD: Вернулся с пар, выпустил версию 3.1. Ничего особенного,просто теперь программа не завершается после выдачи вопроса. Думаю выложить программу где-нибудь на Sourceforge или клонах... Лицензия будет GPL, это не такая важная прога чтобы её ограничивать.

воскресенье, мая 03, 2009

Купил сегодня два коврика для мышки. С подкладкой под запястье.
Потому что меня достал "признак дизайнера" - сильно огрубевшая кожа на запястье ведущей руки.

вторник, апреля 28, 2009

Ubuntu 9.04

Смешанные чувства от апгрейда системы...Вот результаты.
Компьютер 1. Всё идеально. Драйвер принтера теперь полностью работает и даже печатает картинки (раньше не было). Восторг и веселье.
Компьютер 2. Драйвер видеокарты признан глючным и выкинут из дистриба. Как следствие, Compiz Fuzion не работает, awn тоже.В остальном - всё идеально.
Компьютер 3. Live CD не хотел загружаться, выставлял разрешение экрана больше 1024х768 (это размер моего LCD монитора). Скачал alternate CD, поставил. Баг инсталлятора. Ещё раз - опять баг, инсталлятор вылетает в менюшку. Ладно, пропускаю один из шагов - сдуру поставил LILO вместо GRUB. Ну да ладно,с этим ещё можно жить. Загружаю систему... Консольный режим. Иксов нету и в помине.Вспоминается слакварь...хорошо ещё, что консоль русифицирована.
Даю команду apt-get...репов нету. Единственный реп - это CD. Ладно,устанавливаю с диска гном и w3m.Гном загружается...Опять экран больше 1024х768! Чертяка. Выхожу через w3m в сеть, достаю адрса репов,прописываю в sources.list...Ну не хочет ставить иксы нормально.
Короче, с компьютером 3 до сих пор не разобрался.
Вот такие впечатления от новой убунты. Багфиксов пока что нету,потому что свежак. На офиц. форуме на вопросы не отвечают, там просто кипит темка "Как хорошо прошёл апгрейд".Я балдею.
В ubuntu свои, непостижимые баги. Нужен бубен. Желательно большой и мощный.

пятница, апреля 24, 2009

Не каждый может оставить исключение,но за всеми придёт обработчик.

понедельник, апреля 20, 2009

Задачка на эзотерическое программирование

Что вернет следующее выражение:
1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9

Большая часть читателей, немного поразмыслив, ответит: 2.
И будет права.
Но весь трюк задачи в том,что правы они будут только наполовину.
Смотрите сами. Вот вывод на perl:
perl -e 'print 1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9;'
2

Вот вывод на php:
php -r 'echo 1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9;'
8


Объясняю, почему так. В большинстве языков (Perl, C, C++, Java, JavaScript, Ruby), эта конструкция читается по такому алгоритму: если верно 1, то выдать 2 - иначе вычислить остальное. В php выражение равносильно
(1 ? 2 : 3 ? 4 : 5 ? 6 : 7) ? 8 : 9

В чем и раскрывается его адская сущность.
Непонятно, почему создатели языка пошли этим странным путём, когда конструкция заимствована из Cи, но сам факт оставляет пищу для размышлений.
Огромное спасибо Shock! за идею.

суббота, апреля 18, 2009

The Godfather II

Только что закончил эту игру. EA Games не умеет делать реальные вещи. Главгерой даже не может прыгнуть.
Русская озвучка - дрянь. Ну не вяжется у меня этот голос с моим героем:


Это ж Терминатор! В разговоре с NPC в него может попасть неограниченное количество пуль, и покрытый дырами, истекающий кровью - он будет жив и здоров! Что меня больше всего забавляет.
Жалко,что бронежилеты и пояса рисуются реально, а не как в GTA - под кожей или в трусах. Сильно портит внешний вид героев - так бы были костюмчики, а тут - бронежилеты и вообще. Обидно. Я только ради этого чувака игру прошёл.

четверг, апреля 16, 2009

Another Brick In The Wall (part III)

Не нужны мне ваши руки
Не бегу я в дурь от скуки
Я увидел надпись на стене
Что ещё от жизни надо мне?
Что ещё от жизни надо мне!
Из таких камней -
Ещё одна кладка в Стене.
Вы из тех камней,
Что залиты в Стене.

Вторую строчку не знаю,как лучше перевести.
"Writing on the wall" решил переводить в лоб, так проще укладывается и более подходит по смыслу (где он ещё увидел знамение?).

Goodbye Cruel World

Прощай, жестокий мир
Я выхожу сегодня
Прощай,прощай,прощай.
"Прощай" скажу всем людям.
Решил я. Мне угодно.
Не надо возвращать.
Прощай...

среда, апреля 15, 2009

Another Brick In The Wall (part II)

Во вторник на лекции по Прологу по памяти перевёл,да лень было публиковать.
В среду исправил сучки и задоринки.
Кстати, я собираюсь выложить это на "Самиздат"...правда, пока что лень и не всё исправлено.
Нам не нужно не учиться
Нам не нужен след да глаз,
Чёрный юмор в школьных классах.
Эй,учитель,прочь от нас!
Эй! Учитель! Ну-ка прочь от нас!
Из таких камней - ещё одна кладка в Стене.
Ты из тех камней, один кирпичик в Стене.
We don't need no education
We don't need no thought control
No dark sarcasm in the classroom
Teachers leave them(us) kids alone
Hey teacher leave them(us) kids alone
All in all it's just another brick in the wall
All in all you're just another brick in the wall

Чёрт знает, почему перевёл "след да глаз",но так даже точнее получилось.
Самое трудное было перевести "hey! Teacher! leave us kids alone!", потому что это должны кричать,а у меня выходило что угодно,но не выкрик. Но к счастью, лекция дала моим мыслям необходимое направление :-)
P.S. Впредь правки буду делать в самих постах, а не в комментариях. Не все смотрят комменты.

Примечание: Перевод был исправлен, см. комментарии

вторник, апреля 14, 2009

Продолжаю измываться над ролевой системой. Наконец-то придумал бой и магию. Сущестсвует даже два вида боя: быстрый и нормальный. Плюс я разобрался в способах level-up - триггеров к этому, кстати, не будет.

Хакинг в кресле

Люди, охраняйте свои пароли.
Мой брат вчера случайно зашёл на zalil.ru и нашёл там в открытых файлах штук 1000 паролей к e-mail'ам, аськам, аккам в контакте...Есть и полезные вещи,вроде списка проверенных проксей, но хлама и такой вот горяченькой инфы - полным-полно.
К чему это я: храните пароли в надёжном месте.И свои,и чужие.И вообще всё,что надо охранять - надо охранять. Налоговые документы, заметки и конфиденциальную информацию. А то и правда, через Google можно нарыть паролей на всю оставшуюся жизнь - только потому,что в мире полно тех,кто пишет пароли открытым текстом. А потом исчезают деньги с Webmoney, потому что кошельки и ключи были выложены вместе с паролем... Ей-богу,как дети малые.

понедельник, апреля 13, 2009

Горячая Линия: Как написать текстовый квест - выбор движка

Мой квест "Левая Задняя Нога" набирает популярность, и у меня недавно поинтересовались, как создать что-нибудь подобное.
Я не буду давать обзоры движков, я скорее дам некоторые инструкции.
Первое. HTML - плохая идея.
На HTML я делал и "Левую Заднюю Ногу", и "Сожги Дом-2". Из обоих я выжал всё,что мог. При всей кажущейся простоте работы (казалось бы, набрал текст - вот и игра), это - самый трудный путь. Шутка ли - простое введение одного предмета инвентаря (булки хлеба) заставило меня сделать дубликат половины игры и тщательно проследить их (булок) движение. К тому же,вам надо будет отслеживать совместимость с браузерами и различными разрешениями экрана (если вы нарисуете какую-нибудь графику). В качестве плюса - априорная кроссплатформенность и возможность игры онлайн. Но плата слишком высока.
Второе. Великий и могучий rulez!
При выборе движка ОБЯЗАТЕЛЬНО обращайте внимание на поддержку русского языка. Систем текстовых адвенчур с поддержкой русского мало. Систем,для которых русский - родной, очень мало. Но писать игру на английском я никогда не соглашусь.
Третье. Художественность vs. лаконичность
Хорошее описание - это подробное описание. Текстовая игра - это интерактивная повесть, а в повести должна быть прежде всего художественность. Нельзя написать "Вы видите дерево", потому что дерево - это абстрактно. Это можно расширить в "Вы видите старинный кедр; он возвышается на несколько этажей над домом. Его ветви настолько густы, что лучи солнца с трудом проникают сквозь них." и "Вы видите понурую берёзку. Она одиноко стоит у обочины, и проезжающие машины обдают её облаками пыли. Её листья пожухли, а ветви обвисли.". Я немного отвлекаюсь от темы, но общая мысль ясна: квесту нужны слова. Движок,который не позволяет задать описание локации более чем 256 символами, - это ущербный движок. Здесь многое зависит от личных качеств сценариста, но я не рекомендую брать движок с каким-либо ограничением на размер описаний и реакций.
Четвёртое. Кроссплатформенность.
Это уже моя прихоть. Текстовая игра не имеет смысла ограничивать себя одной платформой, ведь она может запускаться (в теории) даже на мобильниках.Естественно,что вы не найдёте такой движок для мобильных устройств, но хотя бы поддержка и Linux,и Windows - уже хорошо. Впрочем,этот пункт просто способствует расширению игровой аудитории.
Пятое. Удобство.
Удобство управления, удобство игры, удобство написания. Комментировать не стоит, этот критерий есть у каждого разработчика. Но всё-таки напомню: удобство игрока важнее удобства сценариста. А удобство управления напрямую влияет только на скорость игры.

Хорошие ссылки на русском языке:
http://ru.wikipedia.org/wiki/Список игровых движков - помимо прочего,здесь есть и квестовые (приключенческие)
http://www.ifarchive.org/if-archive/programming/ - свалка движков. Поддержка русского не гарантируется, равно как и всё остальное. Там есть и настоящая рухлядь древность.
http://ifwiki.ru/ - всё о русских адвенчурах. Судить ресурс не берусь.Нужная страница находится здесь.

Удачи сценаристам!

Закрытие архива

Блог oreolek.livejournal.com удаляется за ненадобностью.
Blogger меня устраивает намного больше. На мой сайт заходят именно те люди,которые ищут здесь что-то полезное. Я могу смотреть статистику и писать то,что для них интереснее. Здесь никто не крутит рекламу и не просит денег за улучшенный аккаунт.
Впрочем, это я уже описывал. Когда-то.
Блог будет полностью удалён, по правилам LJ, в течение 30 дней.

воскресенье, апреля 12, 2009

Не удивляйся

Не дано мне забыть как цветёт опалённый куст вишни...
Прими ванну скорей - но не надо лить слёзы по листьям.
Я тебя удивил? Но ведь удивление лишне
Ты живёшь как во сне, и выводят мир твои кисти.

Ты рисуешь моря, океаны, горы, озёра,
Ты рисуешь дожди, но ты не нарисуешь пустыню.
Краски строят дома, вырезают на окнах узоры...
Время изобразить, что за краску надобно вынуть?

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

Не удивляйся тому,что закончу тринадцатой строчкой...

Боевая система

Только что возникла такая идея системы боя:
Шахматная доска. Каждый игрок контролирует не 16 фигур,а лишь одну. Персонажи 1го уровня - пешки, 2го - короли, 3го - слоны, 4го - кони, 5го - ладьи, 6го - ферзи. Бой заканчивается, когда противник уничтожен полностью.
Но пока что такая система мне не очень нравится, потому что:
  • бой легко превращается в погоню пешки за конём и обратно
  • пешки доходят до конца доски...и что?
  • где магия и псионика,чёрт возьми
  • никакой связи с реальным миром
Последнее хуже всего.
Я хочу простую боевую систему, без излишеств и скучноватостей.

суббота, апреля 11, 2009

Знак доллара

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

пятница, апреля 10, 2009

Хакерить

Только что нашёл на Сибнете в своём ящике такое сообщение (орфография и пунктуация автора сохранены):
Здорово! дай мне пожалуйста свою аську!? я смотрю что ты шариш в хакерстве? не мог бы ты мне помочь?пожалуйста! пару вопросов!дай аську! просто хочу научиться немного хакерить)))

Сначала меня подмывало ответить едким "Ваш email, логин и IP переданы в ФСБ для дальнейшего изучения. Оставайтесь на связи. С уважением, капитан...", но я ограничился сухой ссылкой:
http://ukrf.narod.ru/glavy/g28.htm
Дети, если вы хотите "хакерить" - играйте в Uplink. Всё остальное подпадает под ссылку выше. Слава Богу, что ссылкой не карается.

P.S. Оказалось, он хочет взломать "всего лишь" контакт... Даже не знаю,как реагировать.Это первый подобный кадр на моём опыте.

Фотокросс

На фотокроссе нам дали приз за лучшее фото на тему "Долгая дорога".

Остальные фото и несколько пробников лежат на http://picasaweb.google.com/oreolek/2009?feat=directlink - их слишком много,чтобы мне сюда постить.
Также наш факультет занял 1е место.

среда, апреля 08, 2009

Empty Spaces

Чем нам заполнить
Те пробелы и дыры,
Где мы вели разговор?
Как мне заполнить
Пустоты эфира?
Как же мне закончить забор?
What shall we use
To fill the empty spaces
Where we used to talk?
How shall I fill
The final places?
How should I complete the wall

Bring The Boys Back Home

Вчера на лекции по памяти взялся за Bring The Boys Back Home и Another Brick In The Wall (Part II).
Первое опубликую сейчас,второе - потом. Да,и я переписал In The Flesh? зачем-то.

Верни мальчишек домой!
Верни мальчишек домой!
Сюда пусть держат они путь свой!
Боже,верни мальчишек домой!

Текст не особо завязан на ритм,это плюс; но всё-таки музыка вольностей не разрешает.

суббота, апреля 04, 2009

Фотокросс

Начался фотокросс в рамках "Студвесны". От МФ вышло две команды, я возглавляю одну из них. Десять тем для фотографий и срок до понедельника.Всё идёт просто превосходно (во всяком случае,особых проблем нету. После проверки работ они будут досутпны на выставке конкурса; также выложу некоторые в инет.
P.S. Из-за этих дел времени свободного уже не осталось :-) До четверга идёт фотокросс, в среду - выборы, ещё надо как-то домашки успевать делать...Полный кошмар,но оно мне как раз и нравится.

пятница, апреля 03, 2009

Гопники

Чего-то активизировались гопники. Наверное, это как-то связано с началом клещевого сезона.
Обычно я их просто игнорирую. Прохожу мимо таких кадров - если их несколько,даже расступаются. На предложения пожертвовать пацанам на пиво\билет\жизнь молодую даю мелчь в кармане и шлю куда подальше.
Но тут подсел ко мне один в троллейбусе. Игнорировать - невозможно. Этот наглец сел рядом и прямо на ухо стал нашёптывать предложения поделиться N-ной суммой денег. Пришлось его дипломатически убедть в том,что 4 рубля, которые я ему кинул, заменят ему 20, которые он просит, да ещё ему на пиво останется.
Но факт есть факт: молодёжь смелеет. Не надо хранить деньги в верхней одежде. И одеваться придётся,наверное, посвободнее,если захочу махача. А то в очках и с огромным портфелем особенно не попрыгаешь. А жаль. Собеседники из таких кадров никакие - у них одно на уме.Её-богу,сколько встречал - репертуар не меняется. Угрозы ("вот я пожалуюсь...вот ты знаешь кто у меня знакомый...вот он придёт - тебе будит плохо.."), просьбы ("ну поделись, что") и доверительное выражение глаз.Фантазии - ноль, хоть бы один что новое придумал.Песенку спел бы,что ли.
Скучно...

среда, апреля 01, 2009

Знакомый намедни дал ссылку на http://omegle.com/.
Это анонимный чат: тебя соединяют со случайным анонимусом, и вы чатитесь.
Полный бред, но - интересно.Я начинаю разговор с какой-нибудь странной фразы на непонятном языке.
Например, на эту фразу чаще всего отвечают по-японски:
You: sokol sapsan

вторник, марта 31, 2009

Регэкспы в Perl: секреты

Засел сегодня за perl, причём с твёрдым намерением разобраться в регэкспах.
Пока что сама программа продвигается медленно (хотя уже не выдаёт ошибок деления на 0), но я уже раскопал интересные секреты регэкспов Перла. Коими и спешу поделиться.
Информация редкая, такое не в каждом учебнике найдёшь.
КонструкцияЗначение
/xИнструкция в конце regexp'а разрешает использование разнообразных пробелов,а также комментов. ОЧЕНЬ РЕКОМЕНДУЮ к использованию: читабельность регэкспа повышается в разы, когда вы разбираете его по кусочкам.Естественно,что пробелы и "диезы" с использованием этого указания надо отделять слешем, если вы хотите их использовать по прямому назначению.
/mРассматривать переменную как многострочную. ^ и $ отвечают не за начало и конец строки,а за начало и конец любой строки параграфа.
/sРассматривать переменную как однострочную - . будет отвечать даже символу \n,который обычно она игнорирует.
(?#...)Помечает подстроку как коммент, в отличие от обычного #,который помечает весь остаток строки.Работает только при наличии инструкции /x.
?{CODE}Выполнить код внутри регэкспа (!!!). Код не интерполируется.
(*FAIL)Конструкция автоматически заставляет отвергнуть любые совпадения регэкспа.
(*ACCEPT)Обратно: автоматически утверждает совпадение регэкспа, дальше выражение не проверяется.
(*MARK:name)Ставит метку name в строке на текущей позиции
(*SKIP:name)отменяет все совпадения вплоть до метки name
\KНе учитывать текст,совпавший до этого,в результате регэкспа.


Многие из этого были введены именно в 5.10, поэтому не указаны даже в perlre.
Удачи в использовании!

воскресенье, марта 29, 2009

Новая ролевая система

Пока что я не оглашал в блоге, но я решил сделать свою ролевую настольную систему.

Сложность D&D и её привязанность к стандартной фентези меня немного начала доставать (первое особенно). Новая редакция даёт каждому классу по огромному количеству ударов и возможностей - воин может не просто ударить мечом,а сделать один из специальных ударов,которые подразделяются по своей системе etc. Таким образом, лист КАЖДОГО из персонажей (а не только мага) разрастается до неимоверных размеров.На dungeons.ru лежит мой перевод листа персонажа - скажу сразу, я пытался уместить туда всё,что надо, и двух страниц не хватило. Список сил и ИХ ОПИСАНИЯ не войдут даже на три страницы.

В чём моя цель при составлении новой системы? Простота и универсальность. Простота означает то,что я хочу не тратить по три часа на создание пяти персонажей. Насколько простой будет система, я пока что не решил. Но об этом далее.

Универсальность означает,что я хочу поставить в этой системе любые декорации: фентези, киберпанк, доисторические времена. Начав работу над этой целью,я столкнулся с дилеммой: либо универсальность надо обеспечивать обобщениями, либо описывать каждый из случаев в отдельности. Так как я - не сторонник пространных советов, система полностью универсальной не будет. Механика - да, но миры будут описаны отдельно. О том,какие миры я собираюсь описывать, пока что промолчу. Да, и ещё: универсальность GURPS мне нравится, но GURPS слишком общая и слишком сложна.

Система будет ориентирована на Россию. Это значит,что я использую 6гранный кубик, монету (как "двухгранный кубик") и... колоду из 36 карт. Карты оцениваются по достоинству, при надобности оцениваются также по мастям, в порядке: червы-бубны-крести-пики. Можете играть чёрными червами и красными пиками, тогда порядок будет пики-бубны-крести-червы. :-) Это позволяет мне делать нормальные шансы выигрыша 1\9,1\4 и 1\36 и не заставлять игроков выпиливать d20. Колода на 52 карты мною использоваться,скорее всего,не будет, хотя включить её будет парой пустяков - принцип сравнения мною описан.

Система НЕ будет использовать расы и классы персонажей; вместо этого вы сами сможете конструировать их добавлением черт персонажа из расовых и классовых категорий. Если вы знакомы с вышеупомянутой GURPS, вы могли подумать о схеме положительных и отрицательных черт. Я соединил их воедино: всё, что вы возьмёте, имеет как плюсы,так и свои минусы. Вы не сможете ни изуродовать персонажа, не получив ничего взамен, ни улучшить его без груза ограничений.

Систематизировать идеи - работа сложная, потому что нужна хоть какая-то связная структура руководства. На данный момент же у меня нет даже названия для системы (ну вот, не могу придумать). Принимаю предложения по организации систем магии и псионики..ну и вообще идеи, конечно же.Только связные,если можно. На сейчас я пытаюсь сложить общую картину, но пока что ломаю голову над...например, продвижением по уровням.

Весна - ужасное время. Муза тянет писать,сочинять и творить. Со страшной силой.

Таблица компетентности программиста

На http://omega-it.blogspot.com/ нашёл перевод (в двух частях) таблицы http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm.
Озаглавлен он ни много ни мало,как "Таблица компетентности программиста" и является серьёзной работой.
Вот ссылки:
Часть I
Часть II
Перевод свёрстан на довольно большое разрешение экрана, но оригинал от них не зависит.
P.S. Учёба в универе даёт степень компетенции ровно в n, при усердной работе. Теоретически разгильяди получают компетентность n2, но на деле для этого надо иметь талант :-)
Это - лишь общая заметка: например, в универе не проходят CVS'ы.
Опять же,при желании получить квалификацию в n2 проще простого (достаточно потратить время на прочтение книги и небольшую тренировку),n - чуть сложнее (потребуется дополнительная литература и не одна тренировка), а log(n) приходит только с опытом.

UPD: http://grompe.org.ru/static/prog_comp_matrix_ru.html
Русская версия, отформатированная и исправленная by Grom PE - огромное спасибо!

суббота, марта 28, 2009

Сейчас вернулся из "Феникса".
Там встретил старого знакомого, одноклассника, Вову Кокоулина. Он оказался однокурсником моей подруги из клуба. Мир ОЧЕНЬ тесен,если ещё учесть,что мой друг с матфака учился с этой же подругой в параллельных классах...
У меня самого до фига знакомых по городу (причём большей части я даже не помню), но как я представлю,что ВСЕ они как-то связаны, как-то знакомы или близки...
Кажется, я знаю, какие фабулы придумывать для кабинеток.

пятница, марта 20, 2009

Вчера ночью продолжил перевод The Wall...накатило на меня.
Зачем делать это по порядку?Итак, The Trial:

Мой переводОригинал (Roger Waters, Bob Ezrin)
Червь, приветствую, Честь Ваша!
Корона нам покажет
Преступника, что перед вами -
Он был пойман за страданья.
За страдания почти человеческой природы,
Что невернó.
Позовите Директора Школы!
Good morning, Worm your honor.
The crown will plainly show
The prisoner who now stands before you
Was caught red-handed showing feelings
Showing feelings of an almost human nature;
This will not do.
Call the schoolmaster!
Я говорил всегда, он плохо кончит
В конце концов, Честь Ваша!
Если дали мне бы волю,
Я бы вбил в него свой толк!
Но я был привязан,
Художник и страдалец!
Пусть же он уйдёт с убийством!
Я его отмолочу!
I always said he'd come to no good
In the end your honor.
If they'd let me have my way I could
Have flayed him into shape.
But my hands were tied,
The bleeding hearts and artists
Let him get away with murder.
Let me hammer him today?
Безумец...
Игрушки на ёлке,я безумен...
Точно поехал.
Наверно, они украли все шарики мои!
Безумец...Игрушки на ёлке,он безумен...
Crazy,
Toys in the attic I am crazy,
Truly gone fishing.
They must have taken my marbles away.
Crazy, toys in the attic he is crazy
Ты в дрянь увяз - ты и сам дрянь,
Надеюсь, выбросили ключ.
Тебе бы надо было говорить со мной, но нет!
Ведь ты пошёл как знал,
Ты взламывал дома недавно?
Лишь минуту, Червь, Честь Ваша -
Он и я, одни.
Мааа...
You little shit you're in it now,
I hope they throw away the key.
You should have talked to me more often
Than you did, but no! You had to go
Your own way, have you broken any
Homes up lately?
Just five minutes, Worm your honor,
Him and Me, alone.

Baaaaaaaaaabe!
Иди скорее к Маме,
Дай обнять тебя, малышка.
О Боже, я держала его от бед и несчастий,
Почему же он вообще ушёл?
Червь, позвольте взять его к себе домой...
Come to mother baby, let me hold you
In my arms.
M'lord I never wanted him to
Get in any trouble.
Why'd he ever have to leave me?
Worm, your honor, let me take him home.
Безумен...
Радуга в небе,я безумен..
Решетки на окнах.
Была же здесь дверь прямо из стены,
Когда я вошёл...!
Безумен...
Радуга в небе,он безумен...
Crazy,
Over the rainbow, I am crazy,
Bars in the window.
There must have been a door there in the wall
When I came in.
Crazy, over the rainbow, he is crazy.
Улики пред судом неоспоримы,
И судейство удаляться не должно.
За все мои года я не видел никогда
Такого,чтобы заслужил всей строгости суда.
Способ его драть,
Сама тонкость жена и мать
Наполняет меня жаждой испражнять!
("Вали его, Судья!")
Итак,мой друг,ты открыл свой тайный страх.
Мой приговор - раскрыть тебя пред равными в речах.
Снесите Стену!
The evidence before the court is
Incontrovertible, there's no need for
The jury to retire.
In all my years of judging
I have never heard before
Of someone more deserving
Of the full penalty of law.
The way you made them suffer,
Your exquisite wife and mother,
Fills me with the urge to defecate!

"Hey Judge! Shit on him!"

Since, my friend, you have revealed your
Deepest fear,
I sentence you to be exposed before
Your peers.
Tear down the wall!

У меня даже вышло больше рифм,чем в оригинале; оригинальный текст вообще скуден на рифмы. Но сильно надо править,потому что музыки до сих пор я не слушал и переводил по памяти,как помню ритм. Послушаю - посмотрю,что могу исправить. Пока что часть строф откровенно провальны, часть вышли удачно. Потом оценим.

Примечание: Перевод был исправлен, см. комментарии

понедельник, марта 16, 2009

Творческий всплеск

На лекции по мат.статистике сегодня почувствовал необыкновенный творческий прилив.
Буквально как в фильме "Адреналин" (Crank) : просто очень,ОЧЕНЬ тянет что-то делать (помимо записывания лекции),но что?На перемене не мог усидеть и метался по матфаку.
Никаких идей. Ещё раз сделал круг - ничего. Вернулся.
В отчаянии начал вертеться на стуле, упал со стула, больно стукнулся головой о кромку парты и тут ко мне пришла идея!
Молниеносно записал мелодию на листочек, дома - на комп. Ничего так, кстати, получилось.
А сейчас вернулся домой со пятой пары - чувствую,что силы меня покинули. Причём все. Настолько устал,что даже сидеть сложно.Звуки хард-метала и хард-рока не добавляют адреналина ну никак, что об стенку горох.И ещё голова немного кружится и болит после того удара.
Мне срочно нужна энергия.
Желательно в чистом виде.Пол-литра будет как раз.:-) Торт со взбитыми сливками тоже подойдёт.

суббота, марта 14, 2009

Качество музыки

http://technology.timesonline.co.uk/tol/news/tech_and_web/personal_tech/article5847674.ece?print=yes&randnum=1236994003326

Вкратце расскажу содержание вышеприведённой статьи, чтобы вы не утруждали себя переводом.
В последнее время формат MP3 настолько распространился, что молодые люди не просто все время слушают только такую музыку - более того, оно им действительно нравится. Как когда-то нравились шуршащие шумы грампластинок и перематывание аудиокассет.

Что касается грампластинок - да, этот шорох иглы действительно приятно слушать в паузах, а на хороших рипах с винила он даже заглушается музыкой и добавляет эффекта (на самом грампроигрывателе вы всё равно не сможете его заглушить, какую бы музыку ни слушали, конечно).
Но грампластинки,в отличие от кассет и MP3-плееров, имеют прекрасное качество звука,и этого у них не отнимешь.

Что же в наш век компьютеров? Люди втыкают в уши фарш из музыки и утверждают,что этого достаточно.
Странно,не правда ли? Я встречал на форумах ещё более странное высказывание на эту тему:
"Я не вижу разницы между MP3 128kbps и компакт-диском. На моих [наушниках\колонках\телефоне\плеере] всё без разницы."

Ну прежде всего - чтобы сравнивать что-то,надо послушать оба варианта. Я не встречал пока что телефона, который мог бы проигрывать звук в качестве аудиодиска,он попросту создан не для этого. (Сам по себе печальный факт)
Второе - разница в качестве слышна любому уху на любых колонках ОСОБЕННО на 128 кб\с, если вы слушаете инструментальные композиции. (Для человеческого голоса MP3 - это более чем нормально,потому что формат заточен под передачу голоса; более того, голос можно спокойно распознать даже на 56 кб\с,это обычный битрейт для радио).
Достаточно притязательный слушатель не только безошибочно распознает источник, но и сможет различить определенные артефакты компрессии (жёсткое обрезание частот, металлическое звучание...). Путаницы вообще быть не может, поскольку MP3 жёстко обрезает частоты.Не заметить это можно только на аудиосистеме с таким же точно обрезанием. А на такое кощунство способны только китайские MP3шники марки "Уйпот" и дешёвые телефоны с зачаточным плеером внутри (их динамик настроен на воспроизведение голоса,и музыку слушать на нём попросту невозможно).Любой наушник,даже стоимостью 10 рублей, даёт хорошую возможность различить звук,я проверял (Другое дело,что наушник за 10 рублей даст любой музыке ещё 15 видов артефактов).

Оборотная сторона - размер. Качество требует жертв, и размер файла идёт в жертву первым. Чем сильнее вы готовы пожертвовать качеством, тем больше можно сжать аудиодиск. Обычный размер аудио CD - 700 мегабайт, и без сжатия (формат WAV) он занимает именно столько.При сжатии без потерь (слышимых), - 500 мегабайт. MP3 даёт сжатие в 10-15 раз,что позволяет забивать плеер часами музыки.

На сегодняшний день моя фонотека занимает 222,8 гигабайта.Не скажу в процентах статистику по форматам, мой плеер теперь выдаёт только средний битрейт (474 кб\с).Чтобы сделать резервную копию этой коллекции,мне понадобится запасной винчестер,не меньше.Или (как я пытался) можно перекодировать всё в OGG (при нормальных настройках он даёт сбалансированное звучание с размером файла).

Но при всём желании,я не буду хранить музыку в MP3. Я слишком избалован настоящим звуком.

А.Я.

пятница, марта 13, 2009

Пятница, 13е

Вот и наступила вторая пятница, 13е за этот год...
Мне принесли правила на "Макарену" этого года. Ещё есть время отканировать,я пока что просто пролистал...тут же наконец-то нашёл, в каком году происходят события игры. Просто кошмар, я полгода у девччонок эти 4 цифры выпытывал.

четверг, марта 12, 2009

Самый Интересный Сайт Мира

Лучшую Страницу Рунета я уже находил, теперь пора представить публике...

Действительно, "Самый интересный сайт Мира". Вы можете заходить на него 24 часа в день и каждый раз будете неуклонно соблюдать его цель. На нём можно быть по-настоящему бесконечно, и,если бы не его дизайн,я бы так и делал. Итак,
http://www.watching-grass-grow.com/
Да,вы не ошиблись - это именно Он. Наблюдение за ростом травы в режиме он-лайн без перерывов. Изображение с веб-камеры подгружается каждые 2 секунды. Кстати, недавно объект за стеклом покосили. Трава растёт довольно медленно (ну климат там такой), поэтому я смогу наслаждаться видом этой зелени ещё не скоро. И какой гад повернул камеру ближе к дороге?

Просто пришёл сегодня домой, и что-то потянуло меня к этой траве. Хочу лето.
Воистину, эта веб-камера умиротворяет.

вторник, марта 10, 2009

Только что досмотрел The Wall.
Около полугода пытался посмотреть этот фильм!
Промотал самые ужасные кадры,но всё-таки - да. Досмотрел.Класс.Отдыхаю.
Да,и сосед завтра подаст на нас в прокуратуру за то,что мы громко хлопаем дверью.
Вот и все события.

понедельник, марта 09, 2009

Никак не могу заставить себя написать транслятор квеста.
Хотя бы какую-нибудь документацию.
Сценарий отшлифован уже донельзя,а с технической частью - полная тьма.С какого боку подойти?
Что я знаю,это то,что мне надо написать транслятор сценария в некий условный код, а потом - интерпретатор этого кода на комбинации Javascript и С++ с упором на первый, подобно Parchment. С++ может даже вообще не понадобиться,просто буду подгружать части сценария по мере прохождения.
А как создавать этот чёртов транслятор и как интерпретатор будет работать - не понимаю.И почему-то мне кажется,что сорцы Z-машины ничего не прояснят.Тем более,что русский язык намного сложнее английского (к примеру, объект под действием (прямой объект) и дополнительный (непрямой объект) можно менять в команде местами вполне литературным образом).
С чего начинать?
Обычно я следую пошаговой модели, используя SVN (если помните, проект всё ещё хостится на Google Code - даже несмотря на то,что я собираюсь переписать его с нуля, старые ревизии могут понадобиться). Что подразумевает либо наличие чёткого плана с чёткими временными рамками (иначе разработка затягивается на неопределенно долгий срок), либо интуитивное понимание этого плана. Плюс ко всему, проект должен компилиться на каждой стадии - что значит, движение идёт от сложного к простому, от ядра к мелким фичам.
Где здесь ядро?
Грубо говоря: транслятор скидывает в кучу (что-то вроде namespace) все входные файлы сценария (просто прохаживается по сценарию на предмет конструкций ПОДКЛЮЧИТЬ "имя файла").И тут что-то начинается.
Буквально полчаса тому закончил статью про Default City в Абсурдопедии.
Статья средненькая получилась, хотя к концу я уже писал всерьёз.
Пока думаю обновить "Страницу для удаления" или что-то в этом роде..

воскресенье, марта 08, 2009

Demonoid

С утра взяло мною желание зарегаться на Демоноиде.
Обыскал весь инет - оказалось,регистрация была вчера открыта. И я уже опоздал. Обидно.
Только что захожу - открыли заново! Быстро зарегался.
Кому надо инвайт?

пятница, марта 06, 2009

Дожили!

http://bash.org.ru/quote/402754
xxx: а я вот думаю, почему никто из исполнителей музыки не сочинит песню длительностью 6 минут 66 секунд. боятся что-ли?

Кто аппрувит такую муру?
Во-первых, 66 секунд не существует в принципе. Есть 7 минут 06 секунд.
Во-вторых, песен на 7:06 существует до кучи. В частности, рекомендую Within Temptation - The Truth Beneath The Rose с альбома The Heart of Everything.Только в моей фонотеке 14 песен есть такого хронометража плюс 20 смежного. Это не настолько длинное время для композиции, знаменитая Shine On Your Crazy Diamond почти в четыре раза длиннее.
Реально, айбаш круче в сотни раз.

четверг, марта 05, 2009

Перешёл на новый транспорт,потому что со старым начались траблы...
Большая часть контактов не выжила - часть удалилась,часть ников исчезла.
Провожу общую чистку контактов. Говорю сразу: выживут не все!
А транспорт пофиг, я просто составлю адресную книгу и впредь смогу менять транспорты как заблагорассудится.Даже логи отключу, пожалуй. Всё равно я так часто меняю компьютеры, транспорты и мессенджеры, что восстановить историю очень трудно.

вторник, марта 03, 2009

Ответ: Руддщ цщкдв.
Вопрос: Какую программу пишет ленивый программист первой?

Постоянные читатели

Архив