Публикации с меткой «Internet»

Oduvan’s Web Blog

ЧекЁ или почему я не сплю последние несколько месяцев

Я последние несколько месяцев любую свободную минутку посвещаю именно этому проекту www.checkio.org, т. к. чувствую, что делаю что-то полезное, что-то что может помогать молоды специалистам.

Я уже писал о нем, но сейчас, когда считаю, что закончен большой этап в развитии этого проекта решил написать еще раз, а лучше показать.

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

Так-же у нас на стадии тестирования терниры между программами. И первой задачей для турнира сейчас выбрана игра five in row. Надо написать программу, которая будет играть в эту игру, в простонароде – бота

После прохождения квалификации — вы сами, интерктивно, можете поиграть в нее. Можете поиграть с другими прораммами на арене. Турнир между программами у нас запланирован на конец марта. Хотелось бы увидеть по больше участников, должно быть интересно.

Еще хотелось бы услышать от вас отзыв. Как Вам проект?

Oduvan’s Web Blog

Python программеры! Где Вы?

Ищу еще двух в комманду.

Если Вы читаете этот блог, ищите работу и что-то понимаете в питоне, то напишите мне support@lyabah.com, возможно Вы ее нашли.

Отличный вариант, если вы еще и с Днепропетровска, Украина.

Хотя знаете, даже если вам просто скучно и надо выговориться, то тоже пишите

Oduvan’s Web Blog

CheckIO.org – We are betta almost

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

Спасибо всем, кто подробно описывал баги, помогал в их устранении. На этапе запуска в отсутствии нормального функционала для багрепорта это было очень полезно при разработке и улучшении сервиса.

Итак, за этот месяц нам удалось реализовать 3 идеи, причем в условиях полного рефакторинга ядра.

Первая идея— Learning. Я назвал это «Подарок для наших маленьких слушателей», хотя она может быть полезна и большим дядям. Если попытаться изложить их идею одним предложением — это цепочка задач от легкой к сложной, причем в описании самой задачи есть все справочные данные для ее решения. Таким образом пользователь на примерах учится питону и параллельно пробует свои силы, т. к. я абсолютно уверен, что в программировании — знания без практики не имеют никакой ценности.

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

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

Появление следующих 2 фич связаны с тем, что я люблю играть в логические игры: саперы, реверси, 5 в линию, лаинс, сокобан, судоку и многие другие. Благодаря чекио Вы сможете попробовать описать стратегию этих игр — программно. Т.е. Вы пишите программу, которая сама играет в игру.

Итак, следующий тип задач — это Score Games или Single Player Game. Это игры, в которых выиграть нельзя, но можно постараться набрать как можно больше очков. Первым представителем этих игр стал Lines lite. От классической игры в Lines эту игру отличает то, что не нужно, чтобы шар проходил путь полностью, а достаточно, чтоб он просто становился на пустое место. По мере того, как пользователи буду справляться с этой задачей, мы добавим и не «облегченную» версию.

Играть довольно просто. Вашей программе checkio передается дикт из следующих ключей:

  • steps — это массив координат только что поставленных шаров
  • map — это текущая карта. В этой версии игры размер карты 9х9. Каждый шар обозначен цифрой от 1 до 9, пустые места обозначены 0
  • colors — цвета следующих трех маркеров.

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

Как только Вы написали программу, нажимайте play. Вы увидите в результатах работы программы поле, которое будет заполняться шарами разных цветов. Нажимая next или prev, Вы будете двигаться по итерациям этой игры. Под игровым полем выводится количество набранных очков. Если Вы набираете больше 0, то попадаете в High Score этой игры. Мы попали в High Score с оглушительным счетом – 5ть очков. Попробуйте нас переплюнуть

Ну и о последнем обновлении Вы, наверное, уже догадались. Это Competition или Multi Player Game. Тут уж выигрывать можно и нужно. Для тестирования Вашей программы нужен соперник, т.е. уже написанная программа кем-то другим на этом портале, т.е. Ваши программы будут играть друг с другом. Давайте лучше на примерах. Первым представителем этой игры является 5 in row или Gomoku(wikipedia).

Вам нужно написать программу, которая бы играла с «кем-то» в эту игру. На вход (как уже принято) подается дикт со следующими ключами:

  • you — твой марк в игре
  • data — данные игры

Данные игры — это так же дикт со следующими значениями:

  • map — текущая карта. Массив 19х19 со значениями 1 или 2, если занято первым или вторым игроком и 0, если не занято никем
  • step — ход противника

На выходе – ваша программа должна вернуть координаты вашего хода.

Для выбора соперника вам необходимо нажать на Check With и обозначить пользователя, находящегося сейчас на арене, нажав напротив понравившегося кнопку check. Можете для тестирования выбирать в соперниках – oduvan. Можете посмотреть на нашей странице фейсбука или линкедина, как она играет пока сама с собой.

Как и в score game справа выведутся результаты игры. В соревнованиях игра прокручивается дважды: в первой игре первым ходишь ты, во второй — твой соперник. Именно поэтому и передается параметр you в функцию.

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

Когда Вы решили, что ваша программа теперь очень даже ничего и пришло время и ей найти свое место на арене – смело нажимайте «On Arena» на верхней панели. Теперь другие пользователи могут тестить свою игру с Вашей программой. Игры, помещенные на Арену, будут периодически запускаться системой для проведения между ними соревнований. Если во время соревнования Ваша программа выпала с ошибкой, то она вылетает из турнирной таблицы, иначе, своими победами она будет достигать все лучших и лучших результатов.

Так что, попробуйте написать своего непобедимого игрока, мы своего уже написали.

Когда мы пытались написать свое решение для этих типов задач, самой большой проблемой было несовершенство браузерного редактора кода. Для средних тасков из каталога – его очень даже хватает, но Competition и Score Game – это уже более сложные и комплексные задачи. Теперь Вы можете просто скачать эту программу себе на компьютер и решать ее в своем любимом редакторе кода, тут же тестировать и дебажить работу программы. Для этого необходимо распаковать скачанный архив, написать свою программу в файл solution.py и запустить checkio.py для проверки ее работы.
В случае Score Game, ваша программа будет играть с компьютером и зарабатывать очки, а в случае с Competition Game, Вы будете сами играть со своей программой, либо можете использовать возможность заранее составить файл с массивом ходов противника и передать ее checkio.py во время запуска.

Ну и конечно, самое крутое, это то, что у проекта появились новости и рсс через feedbearn, свое место в FaceBook, LinkedIn и Twitter, теперь Вы сможете быть в курсе всего и удобным для Вас способом. И именно поэтому на своем блоге я больше ни слова не напишу о чекио, дабы не засорять агрегаторы, в которых нахожусь, нецелевой информацией. Тут теперь только о питоне, джанге и еще всякой интересной программистической штукенции. Но, тем не менее, буду очень признателен тем своим читателям, которые отметят этот скромный проект отзывами на своих блогах, думаю, это приведет в проект еще больше сильных игроков с новыми и интересными решениями. Буду очень признателен за отзывы, критику и предложения, которые касаются этого проекта, в FaceBook и LinkedIn.

Еще появилась возможность у себя в профиле указывать ссылки на свой сайт, на профили в LinkedIn, FaceBook и Twitter. Мир должен знать своих героев в лицо. А также можете повесить на свой сайт нашу плюшку (чем-то напоминающую плюшку из StackOverflow), тем самым пригласить своих читателей в наш сервис, ну и похвастать своими результатами в нем. Я себе уже такую повесил.



Еще немного о критике. Во время первого запуска мы выложили несколько сырых либо некорректных программ. Подобные ошибки я бы хотел устранять благодаря Тестеровщикам/Контролерам качества (название для этой группы людей еще обсуждается). Эти люди будут видеть еще не опубликованные задачи. Они смогут попробовать решить их раньше всех, высказать свое мнение об описании, сложности и по существу самой задачи. Еще не знаю как, но уверяю, что их заслуги не будут забыты. Подать заявку о входе в ряды Тестеровщиков можно в разделе «Как помочь?» и выбрать «Стать тестером» или просто написать мне.

Вообщем, это вкратце то, что я хотел сегодня рассказать об этом проекте. Хочу сказать спасибо моей команде. Отдельные слова благодарности Денисенко Екатерине за помощь в переводе некоторых частей сайта на английский язык. Спасибо noonerus за помощь в нарезке и за то, что дал мне несколько хороших и весьма полезных уроков. И самое большое спасибо Вам за то, что помогаете своими багрепортами, отзывами и программами

Ту би континюэд….

Oduvan’s Web Blog

CHECKIO.ORG alpha – решаем задачки на Python.

Это еще не сервис — это пока только идея, которую я отдаю на суд читателей моего блога. Здесь многово нет, и многово хочется. Планов массу, но показать я Вам его хочу сейчас именно в таком виде.

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

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

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

После прочтения описания переходим к решению. В качестве решения Вам необходимо написать функцию checkio. Требования к этой функции ( что в нее входит и что она возвращает ) описано в самой задаче на предыдущей странице.

В редакторе у Вас уже лежит заготовочка функции checkio и ниже примеры для самоконтроля. Вы можете просто запустить (Run code) программу и справа увидеть результат выполнения.

Когда Вы решили, что правильно решили задачу, то наступает кульминационный момент, надо проверить. Жмете Check Task. Система проверяет Ваше решение. Если оно не верно то она ненавязчиво Вам про это намекает красной надписью справа.

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

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

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

Все воты за ваше решение складываются в Ваш рейтинг. А по рейтингу мы строем топ игроков.

Заходя в профиль другого пользователя — Ваши успехи сравниваются. Что решили вы а не он, что решил он а не Вы, что вы вместе решили, над чем он сейчас работает.

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

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

С чего начать? Можете прочитать how to. Для начала опробовать функционал на какой-нибуть простенькой задачке, например складывания цифр. Ну и так далее

Вот пока и все. Создавался продукт на джанго, и были сделаны некоторые форки с опенсорсных продуктов, и доведены до лучшего решения. О них я расскажу в следующих статьях «Checkio.org взягляд изнутри» вот с таким вот популистическим названием.

Основной вопрос – как вам в целом?

Что стоит добавить? От чего стоит отказаться?

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

Oduvan’s Web Blog

А как вы используете джанго на production сервере

Развел небольшой холивар на своем любимом блоге.

Метки

.net .NET C# .sort 1.2 2009 2010 404 error admin ajax amazon analytics and apache api archlinux asp.net async asynchronous autocomplete bash blender blog blogengine blogs book bootstrap bot bpython buildout byteflow bzr C c plus plus C++ cache cbv Chaco checkio chrome ci ckeditor class based views clojure closure cms cms с удобной админкой code coding style collectd COM comet competition conference ConfigParser contest Context continuous integration CouchDB coverage CppCMS cpyext cpython crud csrf CSS ctypes curl custom model fields cx_freeze cython database db dbm dbqueries debian debug debugging decorator decorators deploy deployment descriptor design dev devconf developers development diveintopython Django django 1.2 django 1.3 django advent django framework django template django trunk django weblog django-admin-tools django-cms django-compressor django-hosts django-piston django-registration django-sphinx django.admin djangoadvent djangocms djangodash doc documentation drupal e-legion eclipse EGit emacs encoding Enthought epoll erlang event exception ExtJS fabric facebook fastcgi finaloption fixtures fonts forms formset fp framework freebsd freeswitch fs2web ftp fun funcparserlib functional gae gamin gandi generic views gettext gevent gil git github gitosis Google Google App Engine google picasa Google Translate google wave Google Web Toolkit grab grablab greenlet gtd gui haskell hg hgshelve highlighter host hosting how-to howto html html5lib Hudson humor i18n icfpc ide idiomatic image-scripting improvements Internet interpreter ipython ironpython izmenimsya.ru jabber java javascript jenkins jetbrains JIT job jquery json jstree jython kde kiev kiyv kyivpy l10n ldap library libs Life Links linux Linux & Unix LLVM logging logs lxml Mac OS X magic mail markdown Matplotlib Mayavi maybe mediavirus meetup memcache Memcached memory messages metaclass middleware migration mikrotik mkd model models mod_python mod_wsgi mongodb monitoring mptt musicmans.ru musicx mvc my-projects mysql netCDF networkx newforms newforms-admin news nginx Nhibernate nix nose NoSQL numpy oop open source OpenID openoffice opster optimization oracle orm os pagination parsing path patterns pdf PDF-принтер PEP PEP8 performance performance optimization perl personality photo php picture-driven computing PIL pinax pingback pip plasma plone plugin plugins postgresql programming progress bar psycopg2 py2exe pybb pybbm pycamp pycharm pycon pycow pycurl pydev pygtk pylons PyNGL pypy pyqt PyQt4 pyrad pyramid PySide Python Python 2.5 python 2.7 python 3 python c api python speed python-mssql python3 pywinauto Qt Qt4 queue rabbitmq radius raw sql re redis redsolution redsolution cms regexp regular expressions release repoze.bfg RequestContext reusable apps robokassa rss ru ruby ruby-on-rails sample satchmo scalability SciPy scraping screencast search selenium self.error seo server setattr settings setuptools shell sikuli sms snippet socket.io software sorting south sphinx spider sql sqlalchemy sqlite ssh startup step-by-step subdomain subversion svn SyntaxHighlighter system tags tdd tddspry teh drama template templates templatetags test testing thinkpad threading threads tips tips and tricks tools tornadio tornado tornado server tricks tutorial tweepy twisted twitter typography uapycon Ubuntu ucsvlog uml Uncategorized unicode unit test unit testing UnitTest Unladen Swallow upload urllib urls utf-8 uwsgi validation vcs versioning video vim virtualenv Visual Studio vkontakte voip wave web web-devel web-services web-разработка webdev webfaction webkit webpy websockets webtest widget widgets Win API windows Wirbel work wrapper wsgi wxPython wxWidgets wysiwyg xapian xml xmonad xmpp xpath yandex youtube zip zomg zope [cdata[cbv]] [cdata[ci]] [cdata[class based views]] [cdata[continuous integration]] [cdata[django framework]] [cdata[django-sphinx]] [cdata[django]] [cdata[nginx]] [cdata[python]] [cdata[virtualenv]] [cdata[программирование]] автоматизация администрирование администрирование django админка алгоритмы архитектура атрибуты базы данных Без рубрики безопасность библиотеки блоге бот веб-разработка видео Визуализация данных вконтакте Все записи гвидо ван россум граббер графика графы декоратор декораторы дескриптор дескрипторы документация заметки игра жизнь идея интересное киев Клиентам книги конференция личное математика метаклассы модели модули монады морфология мысли невозможное новости о облачные вычисления обо мне Обработка данных оптимизация оптимизация кода Основная лента основы парсинг парсинг сайтов перевод песочница Питон поебень поиск правила кодирования программирование Проектирование производительность работа рабочее размышлизмы Разное разработка разработка приложений разработки регулярные выражения сайт событие события ссылки статьи тестирование тесты Тюмень убунтариум фигня философия формы форум Хабрахабр хакинг хостинг шаблоны шаблоны проектирования эксперимент Эксперименты юмор я пиарюсь Яндекс