anton_nazarov: (Default)
Вот как надо писать научно-популярные тексты!.
Сразу захотелось выучить очередной раз всю теорию категорий и монады в Хаскелле.

Правда меня смущает несколько особенностей Хаскелля.

Во-первых, почему haskell-platform "весит" более 400 мегабайт?

Во-вторых, при всей строгости языка, система типов все-таки не отражает математической структуры, например, числовые типы отражают особенности архитектуры компьютеров.
anton_nazarov: (Default)
Митя Рыжов рассказал сегодня про следующую интересную задачку.

Есть отображение круга единичной длины в себя, такое что f'(0)=0, . Его можно поднять до отображения вещественной прямой . Причем число вращения равняется золотому сечению.

Задача номер один - найти a численно с приличной точностью, например 15 знаков после запятой.

Далее если взять полученное значение a, вычислять f(0), f(f(0)), f(f(f(0))), ... и смотреть на номера элементов в этом списке, находящихся ближе к целому значению, чем все предыдущие, то эти номера равны числам Фибоначчи. Нужно проверить это для достаточно большого списка.

Я немного поигрался с Mathematica и Maple, но мне удалось найти a с точностью всего в несколько знаков после запятой, так что после номера 89 ряд перестает попадать в числа Фибоначчи.

Epic fail

Oct. 31st, 2010 11:58 pm
anton_nazarov: (Default)


Работая над Psy-Research.ru я допустил изрядную ошибку. Радостно используя Django-nonrel, я не учел, что хранилище данных в Google App Engine отличается от обычной базы данных. В частности, вытащить из хранилища несколько сотен объектов занимает гораздо больше времени, чем извлечечь несколько сот строк из базы данных. Кроме того, есть ограничение на время исполнения запроса. Естественно, что как и в обычной базе запись гораздо медленнее чтения.

В результате для больших исследований наш код просто не успевает отработать при сохранении ответов и при экспорте результатов.
Так что придется переписывать с использованием специфичного для App Engine поля модели ListField или переносить на обычный хостинг с обычной базой данных.

В связи с этим вопрос.
Кто может помочь советом насчет производительности App Engine?
Знаете ли вы дешевый и надежный хостинг для Django (Python+СУБД)?

Если же вы не можете помочь советом, то пройдите исследование. Это займет у вас около 20 минут.

Заранее спасибо!
anton_nazarov: (Default)
В выходные я участвовал в Хакдее. Тема Хакдея была "Новые медиа". (Я не знаю, что это значит, честно).

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

Поэтому я решил поиграться с Google App Engine и попробовать сделать что-нибудь с картами.

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

В итоге локальный appserver запустился, я слегка проголодался и решил делать карту столовых с интеграцией с twitter-ом, чтобы было удобно ходить с коллегами обедать. Вероятно, принять решение мне помог кулинарный проект Солянка 2.0, который делала хорошо подготовившаяся команда из ArkSoft. (У них даже были футболки с названием проекта!). Просто обычно мне лень готовить :)

Мой проект начал работать к вечеру субботы, как вы, наверное, успели заметить из Twitter-а.

Это меня сильно вдохновило, так как в воскресенье вечером я собирался ехать в гости. В 10 утра следующего дня я пришел к бывшему зданию ГОИ, в котором и проводился Хакдей, с надеждой побыстрее закончить. Однако в это время ещё никого не было. Пришлось идти в главное здание университета, куда я сумел просочиться с заднего входа. Внутри работал wifi и шла церковная служба с громким пением и орущими детьми. Так что я работал прямо в центре шабаша высокодуховного события. Естественно, меня вскоре выгнала какая-то религиозно выглядящая тётенька. И правильно: университет - не место для работы.

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

Говорят, что во время презентации Twitter глючил, но это не важно, так как на Хакдее были гораздо более достойные проекты, чем мой. Например, замечательный Citymurmur, Звери в городе, уже упоминавшаяся Солянка 2.0 или сайт аудио-экскурсий По маршруту.

Надо заметить, что почти все проекты, которые в итоге были запущены, использовали Twitter. Это как бы намекает нам: хочешь завершить проект - используй Twitter.

Follow anton_nazarov on Twitter

Съесть комплексный обед
anton_nazarov: (Default)
Из переписки, может кому-то ещё будет полезно:

Igor Shenderovich <> writes:

> Привет, Антон!

Привет, Игорь!

>
> Я тут в очередной раз озаботился проблемой библиотеки, потому Mendeley, хотя и работает с каждым днём всё лучше и лучше, всё
> равно делает это криво :) 

Да, я тоже из-за этого так и не начал его использовать.

> Где-то я нашёл скрипт, который скачивает одновременно bibtex-запись со spires и файл pdf из архива. Я его немного
> усовершенствовал, теперь он скачивает файл и даёт ему название типа author_title.pdf. Да, все bibtex записи он складывает в
> заданный файл. В общем, почти то, что нужно. 

Замечательно. Надо будет подумать над какой-нибудь общей базой данных,
все-таки в SPIRES даже не вся математика есть. Google Scholar умеет
выдавать BiBTeX-записи, но там нету поля eprint, поэтому в итоговой
библиографии нет ссылок на статьи в архиве, только на журналы. А я
считаю, что это не правильно и ссылаться надо и на архив для удобства
читателя.


> Я придумал, что к нему можно допилить, чтобы сделать совсем идеальным :) В bibtex записи можно создавать произвольные поля,
> было бы круто делать поле со ссылкой на локальный pdf файл. Тогда можно и с org-mode это интегрировать (я помню, у тебя была
> такая идея). Но, так как я совсем не знаю Питона, я не знаю, как это сделать, а тратить два дня на изучение этого языка мне
> не хочется. Так что у меня предложение --- если тебе будет не лень и будет время, попробуй допилить этот скрипт как считаешь
> нужным. Если нет --- ну и бог с ним, и так вполне неплохо. 

Держи исправленную версию. При указанных опциях --library и --download
она пишет в bibtex-файл следующее:

@Article{Banerjee:2009hu,
     author    = "Banerjee, Swagato",
 collaboration = "BaBar",
     title     = "{Search for a Light Higgs Boson at BaBar}",
     year      = "2009",
     eprint    = "0908.0105",
     archivePrefix = "arXiv",
     primaryClass  =  "hep-ex",
     SLACcitation  = "%%CITATION = 0908.0105;%%"
,
     LocalLink = "[[./Banerjee__Swagato_Search_for_a_Light_Higgs_Boson_at_BaBar.pdf]]"
}


То есть добавляется поле LocalLink. Если навести на текст в двойных
скобках курсор в Emacs и вызвать M-x org-agenda-open-link , то файл
откроется в PDF-просмотрщике (в самом Emacs или во внешнем, в
зависимости от настроек).
org-agenda-open-link можно забиндить на что-нибудь, например, как и в
org-mode на C-c C-o. Таким образом нет необходимости использовать
org-mode в таких bibtex-файлах со ссылками. Ну а можно их и в org-mode
открывать.

Скрипт в аттачменте. 

Скрипт под катом )
anton_nazarov: (Default)
Недавно дочитал хорошую книжку Peter-а Seibel-а "Coders at work".

Автор известен своей первой книгой "Practical Common Lisp", которая бесплатно доступна на его сайте. Именно по ней я осваивал Common Lisp. При этом на сайте автора помимо самой книги выложена специальная сборка Emacs+SLIME+sbcl, которая хотя и слегка устарела, представляет собой полную среду разработки на Lisp для начинающих.

Новая книга "Coders at work" состоит из интервью со следующими известными программистами:

  • Jamie Zawinski ([livejournal.com profile] jwz) - основатель XEmacs, автор bbdb, один из создателей Netscape
  • Brad Fitzpatrick - создатель LiveJournal, memcached
  • Douglas Crockford - изобретатель JSON
  • Brendan Eich - автор JavaScript
  • Joshua Bloch - один из авторов Java Collections Framework, автор кучи книжек про Jav-у, главный архитектор Google по Java
  • Joe Armstrong - создатель Erlang
  • Simon Peyton Jones - ведущий разработчик GHC
  • Peter Norvig - автор известных книг про искусственный интеллект, директор исследовательского подразделения Google
  • Guy Steele - серийный создатель и стандартизатор языков программирования. Придумал Scheme и Fortress, участвовал в стандартизации Scheme, Common Lisp, Fortran, C, ECMAScript и Java.
  • Dan Ingalls - один из создателей Smalltalk и первого GUI.
  • L Peter Deutsch - работал над Interlisp и Smalltalk, один из авторов Just-in-time компиляции, автор Ghostscript.
  • Ken Thompson - создатель UNIX.
  • Fran Allen - пионер оптимизирующих компиляторов, первая женщина, получившая Turing Award.
  • Bernie Cosell - автор первой реализации Arpanet.
  • Donald Knuth - в представлении не нуждается :)

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

Например, взгляды на язык C у Дональда Кнута и Fran Allen прямо противоположны - Кнут считает, что язык C очень хорош, так как позволил программистам самим создавать гибкие структуры данных, такие, как двусвязный список. А для Fran Allen его появление стало катастрофой, так как после этого пропал интерес к оптимизирующим компиляторам. По её мнению это отбросило всю отрасль на десятилетия назад.

В отношении C++ взгляды почти у всех сходятся - этот язык не нравится никому =) Peter Seibel просуммировал это в своём посте. Однако Java тоже вызвала некоторые споры.

Небезынтересно также обсуждение TDD и Literate Programming. Оказывается, почти никто из почтенных героев книги не использует TDD, хотя все соглашаются с важностью тестов. Питер Норвиг вообще считает, что тесты - это не главное. Он приводит в подтверждение историю написания программы для решения судоку. Сам Питер Норвиг написал эту программку, а другой блоггер, пропагандирующий TDD увяз в написании тестов в самом начале, так как просто не знал, как решать задачу. Рассказ [livejournal.com profile] jwz о разработке в Netscape и роли в ней тестов, и реакция на него Joel-a Spolsky также вызвали драму. (Ссылка 1, ссылка 2, ссылка 3).

Почти все говорят о важности чтения кода, но полноценным Literate Programming-ом занимается только Кнут =). Впрочем, проблема заключается лишь в том, что программисты не очень привыкли писать. Поэтому надежда на рост блоггерства. Я вот тоже решил попробовать пойти по стопам Кнута, так что следующий пост будет про Literate Programming.

Надеюсь, я вас убедил прочитать книгу "Coders at work". Бумажную книжку можно купить в Amazone :) А электронная есть на gigapedia.org (нужна регистрация).

Profile

anton_nazarov: (Default)
anton_nazarov

September 2014

S M T W T F S
 123456
78910111213
14 151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 05:03 am
Powered by Dreamwidth Studios