Привет парни.
Я оформил отчет и посмортем, см. вложенный текст. Получилось немного суховато
и длинновато. Предложения по улучшению теста и стиля принимаются. Что убрать.
чего добавить, где я приврал чего.
- --
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpSKizYr338mxwCURAkITAKCXH3Da9/ZZj8wBOjhiIR/KgXF+cgCgjHa9
oRNYs2cvh+H/7OzuEnFgFT4=
=ePkG
-----END PGP SIGNATURE-----
IMO нужно написать что бОльшую часть кода обработки графики написал Максим.
Как и templates.
> * шпионить за конкурентами стоит начинать пораньше ;-)
Жесть - не оценят )) и заплюют.
> 3) Ну и питон подходил не сильно, как раз двое основных граблей
> наложились - отсутствие нормальных строк (для таких случаев нужны были
> mutable строки + некопирующие срезы) и общая тормознутость
> интерпретатора
+(и отсутствие времени на переписывание частей кода на C/PyRex/Whatever)
Еще один минут - общедоступный svn, правда шпионить у нас нечего было,
но все же в след раз, если он будет, стоит обзавестись своим.
--
K.Danilov aka KoDer
ICQ:214286120
Skype:koder.ua
Tel:8-050-4030512
Jabber:kode...@jabber.ru
Отчет раз: http://wiki.freaks-unidos.net/icfp/2007.
Отчет два: http://community.livejournal.com/evan_tech/229595.html
Прикольный чувак: http://sambangu.blogspot.com/2007/07/python-to-rescue-icfp-contest-2007,
сначала писал на Scala (функциональный язык под JVM), потом на питоне,
и в конце концов на Си. Если я правильно понял, питон-версия
получилась у него менее тормозная чем у нас -- он вроде как прошел с
помощью нее весь цикл вплоть до рисования.
А это, видимо, картинка победителей: http://people.cs.uct.ac.za/~rbkmax001/output.png.
_Почти_ требуемое target.png.
Какой-то важный слайд с кодом: http://tapani.cs.chalmers.se/icfp/2007/cracking.png.
Это что-то из запредельно далеких от нас уровней соревнования. Там в
папке еще много картинок.
Darcs-репозиторий командый haskell'истов: http://r6.ca/icfp2007. Есть
и картинка, которую они получли. Не такая впечетляющая как у
предпологаемых победителей.
И напоследок некоторые наработки из самого разгара процесса поиска
префикса, чтобы понять как проходила "основная" часть соревнования:
http://docs.google.com/View?docid=dccx65q8_1f88ffp. Наработки какой-то
русской команды. Вошли в top15.
Такие дела.
Жесть неиллюзорная.
_nat_map = dict(zip(('I','F','C'), '011'))
def nat(dna):
i = dna.index("P")
n = i and int("".join(reversed(map(_nat_map.get, dna[:i]))), 2) or
0
return n
Красивая идея.
decorator пишет:
> Ах да, хочу отдельно отметить цитату из второго отчета:
> "Tobin had an awesome find of a textual message hidden in the letters
> of the DNA (that is, if you viewed it in a text editor at the right
> width), which led him to extracting another region, which was a binary-
> encoded PNG, which led to another region which was a binary-encoded
> MP3 that was of a person reading a patch."
>
> Жесть неиллюзорная.
Да, я кстати знаю такой прикол, я тоже пытался найти в субботу буквы,
нарисованные буквами. Видимо ширина моего редактора неправильная оказалась.
Короче на удачу.
- --
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpXrrzYr338mxwCURAuvbAJ4o1slIBD6nXFBBmap3HwF4+uRP2ACgj79/
LiNBmYoZhOlgt8lw8pD1LIo=
=AZUl
-----END PGP SIGNATURE-----
KoDer пишет:
> 2007/7/24, Alexander Belchenko <bia...@ukr.net>:
>> koder пытается дописать рисовалку.
>
> IMO нужно написать что бОльшую часть кода обработки графики написал Максим.
> Как и templates.
В какой день это вставить? Это он все за субботу успел? Молодца.
>
>> * шпионить за конкурентами стоит начинать пораньше ;-)
>
> Жесть - не оценят )) и заплюют.
Ладно -- убираем.
>
>> 3) Ну и питон подходил не сильно, как раз двое основных граблей
>> наложились - отсутствие нормальных строк (для таких случаев нужны были
>> mutable строки + некопирующие срезы) и общая тормознутость
>> интерпретатора
>
> +(и отсутствие времени на переписывание частей кода на C/PyRex/Whatever)
Добавляю.
> Еще один минут - общедоступный svn, правда шпионить у нас нечего было,
> но все же в след раз, если он будет, стоит обзавестись своим.
Согласен, хотя для меня svn нелюбимый инструмент. Я в конце концов переключился
на свой любимый Bazaar.
Перед конкурсом на dou кто-то предлагал свой Trac. Имхо свой Trac был нужен,
а в вики заносить идеи.
- --
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpX3SzYr338mxwCURAlzDAJoCr1vnff430vXArUEF/wCJgYc2XgCeP2qX
a798dQZuaQSzPFtFjYEz7nM=
=i4Hm
-----END PGP SIGNATURE-----
Добавляю как есть в конец своего текста как раздел "Успехи других команд".
Идет?
Макс, пожалуйста скорректируй что и когда ты успел сделать. Мне некогда заново
анализировать svn логи.
Max Ischenko пишет:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpYGvzYr338mxwCURAtwwAJ0V6ZRcnsPXwmjrDDFgn1PEURiWMQCeL4EB
aOBjjqPMemJel2AN3bdn7E8=
=2AUN
-----END PGP SIGNATURE-----
Отчет v.2 исправленная и улучшенная.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpYPgzYr338mxwCURAnmUAKCW1yldeKRiuqohncP+yYjku19QowCffCBO
pVeIvqY/dp3oiIhip/p2cVE=
=J94P
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Добавляю как есть в конец своего текста как раздел "Успехи других команд".
Идет?
Макс, пожалуйста скорректируй что и когда ты успел сделать. Мне некогда заново
анализировать svn логи.
Небольшими набегами присутствовал Макс Ищенко, но его наибольшая заслуга -- это
организация команды и трансляции важных сообщений от организаторов соревнования.
При всем при этом он успел написать очень большой кусок кода: почти всю рисовалку,
и часть конвертора, отвечающего за шаблоны.
Успехи других команд
--------------------
Переделал и то и другое. Версия отчета 2.1.
Max Ischenko пишет:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpYb+zYr338mxwCURAueyAKCO+qoKntR1pj6+3vcwzobm0kXnkgCdEJR9
en/xazh6W93EaVZYXFqWnl4=
=FMNz
-----END PGP SIGNATURE-----
Да, наверное в окончательной версии стоит поменять все ники из основного текста на имена.
Мне просто так легче писалось, подглядывал в логи джаббера.
Или не надо менять?
- --
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpYh1zYr338mxwCURAo3aAKCXYZRhgvV4dVQN6NhwK5FAa3VtiQCffau3
h/WQ2zYcQo2Duu91kX+tbN8=
=mgVN
-----END PGP SIGNATURE-----
)) +1. Тока я в стороны C#/IronPython/CarbonPython.
24.07.07, Max Ischenko<isch...@gmail.com> написал(а):
> /me задумчиво смотрит на стоящую на полке непрочитанную The Little Schemer.
У тебя есть эта книга? Класс, я ее как-нибудь у тебя попрошу
почитать ;) В электронном виде ее не найти.
Наконец-то справился с вордпресом и смог опубликовать отчет.
http://www.developers.org.ua/archives/bialix/2007/07/24/icfpc-2007-report/
/me думает что вордпресс -- это редкостное г
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpmPjzYr338mxwCURAngiAJ9Tl0fnI+7i1SFFqRwzowXjAVVL8ACeIBPv
rt4UViLe2YUVSg1blzufTp4=
=SjDH
-----END PGP SIGNATURE-----
2007/7/24, Alexander Belchenko <bia...@ukr.net>:
> /me думает что вордпресс -- это редкостное г
+1
Кстати все ссылки почему то просто текстом, а не hyperlinks .
Max Ischenko пишет:
я и так почти час занимался переформатированием. на сылки не осталось сил. Почему вордпрес сам не
сделал из ссылок ссылки? там сильно много надо делать руками.
- --
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGptPOzYr338mxwCURAqIXAJ4oG9wPSR5F/xFesxQkVLM05bVEOACeLvX2
s1wgXZDimrAcPNG1WkjDXow=
=JH5g
-----END PGP SIGNATURE-----
> +5, но чем его заменить я пока не вижу. Есть варианты?
>
> Кстати все ссылки почему то просто текстом, а не hyperlinks .
>
>
> И абзацы "битые" -- лишние <br/> внутри абзацев?
я и так почти час занимался переформатированием. на сылки не осталось сил. Почему вордпрес сам не
сделал из ссылок ссылки? там сильно много надо делать руками.
Да нет, IMHO это как раз тот случай когда
"Демократия ужасная форма правления, но ничего лучше еще не придумали"(с).
> /me задумчиво смотрит на стоящую на полке непрочитанную The Little Schemer.
У тебя есть эта книга? Класс, я ее как-нибудь у тебя попрошу
почитать ;) В электронном виде ее не найти.
Max Ischenko пишет:
>
>
> On 7/25/07, *Alexander Belchenko* <bia...@ukr.net
> <mailto:bia...@ukr.net>> wrote:
>
> > +5, но чем его заменить я пока не вижу. Есть варианты?
> >
> > Кстати все ссылки почему то просто текстом, а не hyperlinks .
> >
> >
> > И абзацы "битые" -- лишние <br/> внутри абзацев?
>
> я и так почти час занимался переформатированием. на сылки не
> осталось сил. Почему вордпрес сам не
> сделал из ссылок ссылки? там сильно много надо делать руками.
>
>
> Могу посоветовать сначала набирать у себя на машине в ReST, готовить
> HMTL и потом его вставлять в поле редактирования.
Сразу я так и сделал. Но результат оказался просто ужасен.
Элементы h1, h2 и т.д. на сайте dou не имеют прописанных CSS-стилей.
> Или пользоваться
> десктопными утилитами для публикации, типа ЖЖ-клиента или BlogJet. Они
> все должны ворпдресс поддерживать.
Буду поискать.
>
> Я пробовал сделать прямую поддержку Rest, но пока не закончил. Написал:
> def docutils_transform(rst):
> from docutils.core import publish_string
>
> html = publish_string(source=rst, writer_name='html',
> settings_overrides={
> 'input_encoding': 'unicode',
> 'output_encoding': 'unicode',
> })
>
> return html
>
> но он дает целый html, а нужно лишь фрагмент. Не в курсе как?
В курсе. Моя самописная система сборки статического сайта (http://onembedding.com)
использует такое:
import sys, os, getopt
try:
from docutils import core
except ImportError:
print 'Docutils engine is not installed!!!'
print 'Please visit http://docutils.sf.net and download docutils',
print 'package (ver.0.3.5 or higher)'
sys.exit(2)
def html_parts(input_string,
source_path=None,
input_encoding='unicode',
language_code='ru'):
'''
Copied from docutils/example.py
'''
overrides = {'input_encoding': input_encoding,
# 'doctitle_xform': doctitle,
# 'initial_header_level': initial_header_level,
'language_code': language_code
}
parts = core.publish_parts(source=input_string,
source_path=source_path,
writer_name='html',
settings_overrides=overrides)
return parts
А вот кусок main() функции, которая собственно генерит окончательную страничку при помощи простого
строкового шаблона:
pp = html_parts(input_string=read_file(_input),
source_path=_input,
input_encoding=_input_encoding,
language_code=_language_code)
#default content parts
content = {}
content['Breadcrumbs'] = ''
content['PageTitle'] = ''
content['Menu'] = ''
content['MainText'] = ''
# fill with real content
if pp['title'] != '':
content['PageTitle'] = '- ' + pp['title'].encode(_output_encoding)
content['MainText'] += ('<h%d>' +
pp['title'].encode(_output_encoding) + \
'</h%d>') % (_title_level, _title_level)
if pp['subtitle'] != '':
content['MainText'] += ('<h%d>' +
pp['subtitle'].encode(_output_encoding) + \
'</h%d>') % (_subtitle_level, _subtitle_level)
if pp['docinfo'] != '':
content['MainText'] += "\n" + pp['docinfo'].encode(_output_encoding)
if pp['fragment'] != '':
content['MainText'] += pp['fragment'].encode(_output_encoding)
# try to read Menu from file
content['Menu'] = read_file(_menu)
# create breadcrumbs
content['Breadcrumbs'] = create_breadcrumbs(fn=_bc)
# read template
shtm = read_file(_template)
# create output
f = file(_output, 'w')
f.write(shtm % content)
f.close()
Шаблон примерно такой:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>On Embedding %(PageTitle)s</title>
<link rel="stylesheet" type="text/css" href="/bialix8.css" media="screen">
<link rel="stylesheet" type="text/css" href="/bialix8p.css" media="print">
<link rel="icon" href="/favicon.ico" type="ico">
</head>
<body>
<table border="0" width="100%%" cellpadding="0" cellspacing="0">
<tr id="banner"><td height="110" id="banner">
<div id="sitename"><h1><nobr>On Embedding</nobr></h1>
<div id="subtitle"><nobr>Про встраиваемые системы</nobr></div></div>
</td></tr>
<tr><td valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%%"><tr valign="top">
%(Menu)s
<td id="main">
<div id="breadcrumbs">%(Breadcrumbs)s</div>
<div id="text">
%(MainText)s
</div>
</td>
</tr></table>
</td></tr>
<tr><td valign="top">
<div id="footer">
<table border="0"><tr>
<td id="pythonpowered"><a href="http://python.org" title="Python"><img
src="/i/PythonPoweredSmall.gif" border="0" width="55" height="22" alt="[Python Powered]"></a></td>
<td id="copyright"><nobr>Автор проекта, дизайн и верстка сайта:</nobr> <nobr>Александр Бельченко
© 2003–2006</nobr><br><nobr>e-mail: bialix собака ukr точка net</nobr></td></tr></table>
</div>
</td></tr>
</table>
</body>
</html>
Не фонтан конечно, но для меня получилось достаточно просто.
> Ну и там еще другие ньюансы ВП есть. ж))
Иван Салагаев когда-то хвастался, что он к вордпресу подключал Markdown.
ИМХО, если имеются такие готовые варинаты, то я бы не стал заморачиваться
с docutils -- слишком тормознуто получается. Если каждая статья будет
генериться на лету -- у тебя сайт ляжет.
http://daringfireball.net/projects/markdown/
http://www.google.ru/search?q=Markdown+site%3Ahttp%3A%2F%2Fsoftwaremaniacs.org
http://softwaremaniacs.org/blog/2006/01/02/markdown-extra/
http://softwaremaniacs.org/blog/2006/04/20/python-markdown-for-custom-syntax/
[µ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGpyIDzYr338mxwCURAlz2AKCDqj3d8xgsHcN/WqlF74NAVtd6twCfb5dG
Y80A6CfJsWE9/GGsX3UKhvk=
=cgdP
-----END PGP SIGNATURE-----
В курсе. Моя самописная система сборки статического сайта (http://onembedding.com)
использует такое:
> Ну и там еще другие ньюансы ВП есть. ж))
Иван Салагаев когда-то хвастался, что он к вордпресу подключал Markdown.
ИМХО, если имеются такие готовые варинаты, то я бы не стал заморачиваться
с docutils -- слишком тормознуто получается. Если каждая статья будет
генериться на лету -- у тебя сайт ляжет.