Проверка слова:  

Архив форума: Языковые игры:: В хорошие руки

[2.12.2009 13:31] – Paulus
В хорошие руки

После нескольких лет ведения двух специализированных «бюллетеней» («Статистика» и СНЕСЛО) игрового подфорума я засобирался на покой. Соотвественно, хотел бы отдать оба «бюллетеня» - впрочем, буду дальше называть их просто топиками, хотя это и не совсем верно – в хорошие руки.

Фактически, с моей стороны передача топиков новым ведущим сведется к передаче скриптов на языке Perl, написанных для автоматизации поддержки этих топиков. Из этого общего утверждения вроде бы понятно, что я ищу авторитеных и ответственных людей, которые при этом были бы в состоянии исполнять упомянутые скрипты на своем компьютере. Последнее требование не сказать чтобы сильно ограничительное, но и не вполне тривиальное; думаю, что в конечном итоге соискателям понадобится выполнить небольшое тестовое задание, о чем будет написано в отдельном постинге. Частности же для двух топиков различаются достаточно сильно. В принципе, ведение обоих топиков одним человеком ничему не противоречит и не должно вызвать никакого конфликта интересов; тем не менее вполне реальна ситуация, когда они будут отданы разным людям.

«Статистика» - пожалуй, более простая задача. Скрипт сам по себе несложен, практически не требует настроек и не особо подвержен эффектам от изменений в «Балде». Исполнять его требуется строго раз в месяц (небольшие отклонения роли не играют, но желательно избегать и их), контроль за результатами нужен минимальный. Технически вполне осуществимо полностью автоматизировать скрипт и публиковать месячную статистику вообще без участия человека. У меня были как субъективные, так и объективные причины этого не делать, но основная мысль должна быть понятна – здесь требуется некто на роль оператора или, если угодно, смотрителя.

СНЕСЛО, хотя и обновляется обычно реже раза в месяц, будет заметно похитрее. Во-первых, скрипт относительно сложен в применении, ему нужно скармливать аккуратно составленные списки слов. Во-вторых, перед каждым обновлением нужно собрать слова из текущего топика, что включает в том числе и входной контроль. В-третьих, постоянно меняется как корпус словарей «Грамоты» (что может потребовать модификаций скрипта), так и словарный состав по крайней мере некоторых словарей (а это, в свою очередь, может требовать периодического исполнения скрипта в специальном режиме «чистки»). Наконец, помимо управления списком слов нужно управлять также и собственно топиком – так сказать, осуществлять модерацию в отсутствие формальных модераторских прав. Соответственно, ведущий для СНЕСЛО нужен компетентный, мало-мальски подкованный технически и авторитетный, но не авторитарный.

Это – предварительное уведомление, официальный прием заявок на соискание вакансий еще не открыт, соответственно и подавать их пока не надо. Я объявлю о начале приема в ближайшие несколько дней, а сейчас просто прошу потенциальных кандидатов подумать, насколько им было бы интересно всем этим заниматься. При отборе, в числе прочего, во внимание будут приниматься ваши результаты в игре и история ваших выступлений на форуме. Что касается игры, опыт для меня намного важнее рейтинга, и даже более того – экстремально высокий рейтинг будет фактором скорее отрицательным, нежели положительным. История же форума есть история форума. Там тоже не все просто, не всякая пусть даже конструктивная активность является безусловным плюсом, зато участие в скандалах и неуважение к собеседникам – минусы безусловные. По счастью, «скандалистов» здесь не так и много. Я все это к тому, что, если вы задумались о возможном участии в конкурсе, мысли наподобие «у меня не слишком высокий средний результат» или «я мало участвовал(а) в работе форума» не должны вас останавливать, я постараюсь сделать выводы на основе имеющихся данных. Другое дело, если вы совсем не играли и/или не писали на форум, тогда шансов действительно маловато, но тогда, по-честному, и заинтересованность у вас должна отсутствовать.

Что, если, вопреки моим ожиданиям, достойных на мой взгляд кандидатов на ведение одного или обоих топиков не найдется? Ответ простой – скрипты переданы не будут. Разумеется, это не мешает любому желающему или группе желающих вести эти топики или их внебрачных наследников так, как они считают нужным. СНЕСЛО, по большому счету, вполне реально обрабатывать вообще без скриптов. В любом случае как минимум один – декабрьский – выпуск Статистики я еще отведу.

Пожалуйста, следите за дальнейшей информацией в этом топике. Еще одно небольшое объявление – я собираюсь также отметить свой уход с форума попыткой возродить турниры по «Балде». Даже если их возрождения как такового – в виде регулярных событий – не произойдет, надеюсь, один-то раз развлечь игроков получится. Рождественские каникулы – вряд ли хорошее время для турнира, поэтому всем заинтересованным рекомендую ориентироваться на конец января – февраль. Опять же, следите за дальнейшей информацией – вероятно, в отдельном топике.

Ссылка на это сообщение
[2.12.2009 14:27] – EvaNova
Турниры по "Балде"

Уважаемый Paulus!)
За доброе желание развлечь нас, игроков, - огромное спасибо!))))
Я буду очень-очень ждать дальнейшей информации)))

Ссылка на это сообщение
[2.12.2009 23:12] – kos-kulik

Я готов взять на себя все скрипты!
Хоть на Perl, хоть на BrainFuck!

Ссылка на это сообщение
[4.12.2009 15:24] – kadom

Вот бы саму программу в добрые руки передать...

Ссылка на это сообщение
[6.12.2009 05:05] – Paulus

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

Итак, заявка должна содержать следующие сведения:

1. Ник(и) кандидата в «Балде»
2. Ник(и) кандидата на форуме
3. Вакансия
4. Результат(ы) выполнения тестового задания
5. Мотивировать отказ?
6. Дополнительная (необязательная) информация

Ниже я дам подробности, пока же – о порядке подачи заявки. Желающие могут разместить ее в форуме, но я бы рекомендовал отправлять заявку на e-mail quttextbooks собака yahoo.co.uk , это обеспечит конфиденциальность предоставляемых вами сведений. Естественно, при условии, что вы мне доверяете. Я постараюсь отправить уведомление о вручении в течение суток с момента получения заявки. Заявки можно подавать начиная с момента публикации тестового задания в течение 10 (десяти) дней. Кроме того, в течение 4 (четырех) дней сверх данного срока возможно дополнение уже поданной заявки – например, в связи с особенностями заполнения п. 4. Заявки, поданные с отклонениями по времени или форме, могут быть не приняты без предупреждений или уточнений.

Теперь – расшифровка пунктов заявки.

1. Вы можете задекларировать более одного ника, однако трудно сказать, пойдет это вам в плюс или в минус – дело в том, что я не слишком-то одобряю использование множественных ников, хотя и признаю, что иногда это может быть оправданно. Если у вас их все-таки несколько, лучше всего, наверное, не забыть указать наиболее активный как вообще, так и в последнее время. Минимум один ник обязателен для рассмотрения заявки. Если ник «хитрый» (комбинации кириллицы и латиницы, множественные пробелы и т.п.), в ваших интересах привлечь к этому мое внимание заранее во избежание ошибок и подозрений.

2. По большому счету, все то же самое, что и по первому пункту. Одна поправка – декларировать два ника на форуме почти наверняка не в ваших интересах, хотя тоже возможны отдельные исключения. В заявке, сделанной через форум, п.2, казалось бы, необязателен – что ж, желающие могут рискнуть отклониться от формы заявки.

(По пп. 1-2 – пожалуйста, будьте готовы, что я попрошу подтвердить принадлежность вам указанных ников путем игры с вами (п. 1) или записи в форуме (п. 2). Поймите меня правильно – мало ли у кого может возникнуть соблазн выдать себя за сильного игрока или активного форумчанина.)

3. Здесь все просто – Статистика, СНЕСЛО или «обе». Лучше не подавать на неинтересную вам вакансию.

4. Задание – в отдельном постинге, уже очень скоро.

5. Этот пункт я ввел для того, чтобы у вас при необходимости была возможность гарантированной обратной связи. Вообще говоря, мое решение обжалованию не подлежит и в переписку, публичную или приватную, с неизбранными кандидатами я вступать не обещаю. Тем не менее, если я вас не выбрал, вы имеете право получить от меня мотивировку отказа при выполнении следующих двух условий: (1) вы заранее формально выразили желание получить от меня такую мотивировку и (2) вы формально подтвердили это желание, узнав о результатах отбора. Внимание – я не гарантирую, что мотивировка вас утешит, и даже того, что она будет лицеприятной.

6. Этот пункт совершенно необязателен для заполнения, однако существует определенная вероятность, что вы можете сообщить о себе нечто, что могло бы повлиять на мое решение. Не знаю, правда, что именно, хотя пара возможных сценариев просматривается.

Ссылка на это сообщение
[9.12.2009 15:44] – Paulus

Приношу извинения за задержку с публикацией задания – решил все-таки на всякий случай лишний раз перепроверить работу скрипта на разных системах.

Итак, тестовое задание. Текст скрипта на языке Perl будет опубликован отдельным постингом ниже. Это если позволит механизм форума; если выяснится, что он непоправимым образом калечит скрипт, что более чем возможно, я изыщу другой механизм публикации. Соответственно, задание будет считаться официально опубликованным, когда я открытым текстом дам подтверждение, что выполнять его можно. Если у вас есть какие-либо сомнения в том, что в задании не содержится, в силу моей глупости либо недобросовестности, чего-либо вредоносного, я рекомендую не выполнять его сразу (по условиям у вас довольно много времени), а подождать, не укажет ли какая-нибудь добрая душа на эту вредоносность. На самом деле скрипт коротенький, предоставлен в виде исходного кода и скрыть в нем какую-либо пакость практически невозможно, но вы не обязаны верить мне на слово. Кроме того, я довольно сильно сконденсировал скрипт и читается он не так уж и легко, хотя специалист разберется. Так или иначе, дисклеймер – вся ответственность за последствия выполнения скрипта лежит на вас.

Само задание заключается в том, чтобы исполнить скрипт на вашем компьютере, предварительно заменив последовательность символов YOUR_NICK в теле скрипта на ваш никнэйм в «Балде». Важно: у меня есть подозрение, что для входа в «Балду» не [всегда] обязательно соблюдать правильную капитализацию ника, однако для правильной работы скрипта принципиально, что ник вводится в точности так, как при регистрации (и, соответственно, так, как он виден в таблице результатов). Результат работы скрипта будет выведен в файл task.txt в директории, откуда исполняется скрипт. Этот результат нужно скопировать в заявку; если заявка делается посредством e-mail, можно также отправить файл в виде аттачмента. Нормальным результатом работы скрипта будет строка, состоящая из вашего ника и, через пробел, длинного числа. Если в вашем нике присутствуют кириллические символы, задание можно считать законченным; если нет – вам нужно будет выполнить задание еще один раз, выбрав любой кириллический ник из списка результатов «Балды». Корректная работа скрипта с кириллицей – абсолютно необходимое условие для того, чтобы задание было засчитано.

Для выполнения задания на вашем компьютере должен быть установлен интерпретатор языка Perl. Он входит в стандартный комплект поставки Unix-систем, но для Windows его придется ставить отдельно. С официального сайта http://www.perl.org/ по ссылке DOWNLOAD PERL вы получите доступ к двум Windows-дистрибутивам, Strawberry Perl и ActivePerl. Любого из них достаточно; скрипт протестирован под обоими. Если говорить о тестах, то скрипт был проверен, в том числе на работу с кириллицей, на англоязычных Windows XP и Windows Vista с включенной русской раскладкой клавиатуры и русским языком по умолчанию для non-Unicode приложений. Есть все основания полагать, что никаких проблем не будет и с локализованной русской Windows. Под англоязычной Windows XP без включенной поддержки русского корректной работы для кириллицы добиться не удалось (что неудивительно). Ничего не могу сказать по поводу другий локализаций или версий Windows, а также юниксоподобных и прочих систем.

Очень важно, чтобы вы понимали – задание включает в себя, условно говоря, объективную (техническую) и субъективную (человеческую) составляющую. Вас может ожидать неудача по сугубо техническим причинам – скажем, я не ожидаю, что скрипт будет работать, если вы выходите в Интернет через авторизующий прокси. Вам может быть непонятен и неинтересен запуск каких-то там скриптов. Ни первое, ни второе не говорят о вас ничего плохого. Слегка натянутая аналогия – вы не можете заниматься частными грузоперевозками, если у вас нет грузовика и вы не знаете правил движения. Это не мешает вам быть сколь угодно хорошим человеком и специалистом, просто прямо сейчас заниматься перевозками не получится.

Тем не менее допустим, что вы хотите и можете «учить правила», но наткнулись на практическую проблему. Вам не удается запустить скрипт или же результатом его работы является нечто, отличное от ника и длинного числа через пробел, и улучшить ситуацию, несмотря на все старания, не удается. Вопрос: что делать? Ответ: в установленный срок (а еще лучше – заранее) подать формальную заявку, указав в п.4 результат исполнения скрипта, если он есть. Если нет – постараться там же поточнее сформулировать проблему и задать мне 1 (один) вопрос. Ответ на один вопрос я гарантирую, вы получаете право переподать заявку в течение расширенного периода, никаких санкций в отношении вашей заявки, если вам удалось-таки выполнить скрипт, предпринято не будет. Способность решать сложные задачи с ограниченной помощью – это скорее достоинство, чем недостаток. Исключение: я не гарантирую ответа на вопросы, связанные с русификацией операционных систем, особенно если это не XP/Vista. Ну и не задавайте слишком общих вопросов, получите в ответ ссылку на какой-нибудь сетевой ресурс, который вполне можно найти и без моей помощи (я бы и так дал, но я пользуюсь английскими, тем же perl.org, а кота в мешке предлагать не хочется). Если скрипт все-таки работает, но не так, как надо, то с большой вероятностью вы столкнулись именно с техническими ограничениями, в этом случае я тоже постараюсь разобраться, но без гарантии успеха.

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

Ссылка на это сообщение
[9.12.2009 15:47] – Paulus

#!/usr/bin/perl
$n = "YOUR_NICK";use IO::Socket;$t=time();$p=$l=0;$u="igra.gramota.ru";open STDERR,">task.txt";for($i=0;$i<1000;$i++){$j=$i*15;
$s=IO::Socket::INET->new(PeerAddr=>$u,PeerPort=>80,Proto=>"tcp",Type=>SOCK_STREAM) or die "$name $@n";
print $s "GET /rating.html?_sf=$j&_cr=15&_co=1&gtype=m HTTP/1.0nHost: $u:80nn";$f=$h=1;while(<$s>){chomp;chomp;
if($f){s/s+/ /;@s=split / /;unless($s[1]==200){$o="$n $s[1]";$l=1}$f=0}if($h){$h=0 unless $_}elsif(/^s*<tr><td>/){while
(/<tr><td><a href=archive.html?uid=d+&gtype=m>(.*?)</a></td><td align=right>(d+)</td><td align=right>(d+)</td></tr>/g)
{$p++;$o="$1 $t$p$2$3";$l=1 if $3<2000;last if $l;if($n eq $1){$l = 1;last}}}}close($s);last if $l}print STDERR $o;close STDERR;

Ссылка на это сообщение
[9.12.2009 15:53] – Paulus

Пока что-то нехорошо, разбираюсь...

Ссылка на это сообщение
[9.12.2009 16:03] – Paulus

Так, понятно, что нехорошо - форум сожрал все бэкслэши. Это как минимум. Сейчас я попробую что-нибудь по этому поводу сделать.

Тест1:
Тест2: \
Тест3: &#92;

Ссылка на это сообщение
[9.12.2009 16:06] – Paulus

#!/usr/bin/perl
$n="YOUR_NICK";use IO::Socket;$t=time();$p=$l=0;$u="igra.gramota.ru";open STDERR,">task.txt";for($i=0;$i<1000;$i++){$j=$i*15;
$s=IO::Socket::INET->new(PeerAddr=>$u,PeerPort=>80,Proto=>"tcp",Type=>SOCK_STREAM) or die "$name $@\n";
print $s "GET /rating.html?_sf=$j&_cr=15&_co=1&gtype=m HTTP/1.0\nHost: $u:80\n\n";$f=$h=1;while(<$s>){chomp;chomp;
if($f){s/\s+/ /;@s=split / /;unless($s[1]==200){$o="$n $s[1]";$l=1}$f=0}if($h){$h=0 unless $_}elsif(/^\s*<tr><td>/){while
(/<tr><td><a href=archive.html\?uid=\d+&gtype=m>(.*?)<\/a><\/td><td align=right>(\d+)<\/td><td align=right>(\d+)<\/td><\/tr>/g)
{$p++;$o="$1 $t$p$2$3";$l=1 if $3<2000;last if $l;if($n eq $1){$l = 1;last}}}}close($s);last if $l}print STDERR $o;close STDERR;

Ссылка на это сообщение
[9.12.2009 16:17] – Paulus

Кажется, получилось. Прошу считать постинг от 9.12.2009 16:06 официальным тестовым заданием, а прием заявок - открытым. Основной срок приема заявок - до 19.12.2009 23:59, а дополнительный - до 23.12.2009 23:59 по времени форума (московскому, надо полагать). Сомнения по поводу времени отправки e-mail трактуются в пользу соискателей, но злоупотреблять не надо.

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

Удачи!

Ссылка на это сообщение
[9.12.2009 16:23] – Paulus

Нет, не все идеально. Осталась маленькая шероховатость, которая в подавляющем большинстве случаев не повлияет ни на что, а в меньшинстве - повлияет некритически. Тем не менее прошу считать официальным заданием код, опубликованный непосредственно после этого поста (впрочем, использование кода от 9.12.2009 16:06 никак караться не будет). Извините.

Ссылка на это сообщение
[9.12.2009 16:24] – Paulus

#!/usr/bin/perl
$n="YOUR_NICK";use IO::Socket;$t=time();$p=$l=0;$u="igra.gramota.ru";open STDERR,">task.txt";for($i=0;$i<1000;$i++){$j=$i*15;
$s=IO::Socket::INET->new(PeerAddr=>$u,PeerPort=>80,Proto=>"tcp",Type=>SOCK_STREAM) or die "$n $@\n";
print $s "GET /rating.html?_sf=$j&_cr=15&_co=1&gtype=m HTTP/1.0\nHost: $u:80\n\n";$f=$h=1;while(<$s>){chomp;chomp;
if($f){s/\s+/ /;@s=split / /;unless($s[1]==200){$o="$n $s[1]";$l=1}$f=0}if($h){$h=0 unless $_}elsif(/^\s*<tr><td>/){while
(/<tr><td><a href=archive.html\?uid=\d+&gtype=m>(.*?)<\/a><\/td><td align=right>(\d+)<\/td><td align=right>(\d+)<\/td><\/tr>/g)
{$p++;$o="$1 $t$p$2$3";$l=1 if $3<2000;last if $l;if($n eq $1){$l = 1;last}}}}close($s);last if $l}print STDERR $o;close STDERR;

Ссылка на это сообщение
[10.12.2009 00:55] – aht
...

Отписался...

Ссылка на это сообщение
[14.12.2009 12:24] – aht
...

Если честно, ждал более живой реакции на эту тему (особенно с учётом простоты скрипта (я, впервые увидевший Perl, разобрался с ним за 10-15 минут)).

P.S. Или это вызвано малым количеством технарей на данном ресурсе? ,)

Ссылка на это сообщение
[18.12.2009 16:30] – Paulus

Всем заинтересованным напоминание - основной срок подачи заявок истекает завтра.

Ссылка на это сообщение
[21.12.2009 04:24] – Paulus

Прием первичных заявок завершен, всем спасибо. Если вы подали заявку, но не получили уведомления о приеме, пожалуйста, СРОЧНО повторите отправку. Если в течение суток уведомление так и не будет получено, пишите в форум (не обязательно копию заявки, хотя бы просто сообщение о возникших неполадках).

Ссылка на это сообщение
[24.12.2009 03:55] – Paulus

Прием заявок завершен, всем спасибо. Если вы отправляли заявку, но так и не получили уведомления о вручении, ваш последний шанс что-то сделать - немедленно написать в форум, указав в числе прочего свой e-mail.

Результаты конкурса будут объявлены в ближайшее время.

Ссылка на это сообщение
[26.12.2009 03:55] – Paulus

"Официальное" сообщение - скрипт "Статистики" передается участнику форума aht, который, в зависимости от обстоятельств, начнет поддержку соответствующих топиков либо с декабрьского, либо с январского выпуска. Для aht - мои поздравления и пожелания успехов!

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

Ссылка на это сообщение