среда, августа 31, 2011

Путь программиста :)

Нашел несколько статей для медитации:


Из той же оперы : Python koans - Python Koans is an interactive tutorial for learning Python by making tests pass. Скачиваются по ссылке из статьи, при первом запуске выводится текст:

Thinking AboutAsserts
  test_assert_truth has damaged your karma.
You have not yet reached enlightenment ...
  AssertionError: False is not True
Please meditate on the following code:
  File "C:\gregmalcolm-python_koans\python 2\koans\about_asserts.py", line 12, in test_assert_truth
    self.assertTrue(False) # This should be true


You are now 0/291 koans and 0/36 lessons away from reaching enlightenment
Beautiful is better than ugly.

По мере решения задачек счетчик просветления растет. В конце концов попадаешь в нирвану для программистов.

вторник, августа 23, 2011

Книжка про архитектуру open source приложений

Книжка про архитектуру 25 популярных open source приложений (на английском):
http://www.aosabook.org/en/index.html

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

Абзац из введения: "архитектура зданий и архитектура ПО имеют много общего, но есть одно важнейшее отличие. Архитекторы во время своей учебы и карьеры изучают тысячи зданий, большинство разработчиков имеют возможность хорошо изучить только несколько больших программ. Чаще всего это те программы, которые пишут они сами. У них нет возможности изучать величайшие программы в истории или читать критику архитектуры этих программ, написанную опытными практиками. Как результат, они повторяют ошибки друг друга, а не строят на основе успешного опыта других".

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

Содержание:
Introduction
1. Asterisk - программа для создания телефонной станции.
2. Audacity - запись/редактирование звука.
3. The Bourne-Again Shell - bash Unix shell
4. Berkeley DB - высокопроизводительная нереляционная БД
5. CMake - кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода.
6. Eclipse - популярный IDE (конкурент MS Visual Studio)
7. Graphite - система для построения графиков
8. The Hadoop Distributed File System - распределенная, масштабируемая и компактная файловая система, написанная на Java
9. Continuous Integration - система для построения и тестирования программ.
10. Jitsi - приложение, позволяющее делать видео/аудио звонки, расшаривать свой десктоп, обмениваться файлами и сообщениями
11. LLVM - цитата с википедии: "универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур либо для его интерпретации и JIT-компиляции (для некоторых платформ). LLVM позволяет компилировать программы написанные на языках Си, C++, ObjC, Fortran, Ada, Haskell, Java, Python, Ruby, JavaScript, GLSL или любом другом, для которого реализован front-end."
12. Mercurial - популярная система контроля версий
13. The NoSQL Ecosystem - ряд подходов к интерфейсам БД без использования SQL.
14. Python Packaging - система питоновских пакетов.
15. Riak and Erlang/OTP - распределенная отказоустойчивая БД для больших масштабируемых систем на Erlang/OTP
16. Selenium WebDriver - фреймворк для тестирования веб приложений
17. Sendmail - первый и все еще существующий Mail Transfer Agent
18. SnowFlock - монитор виртуальных машин для облачных вычислений
19. SocialCalc - электронные таблицы в интернете
20. Telepathy - фреймворк для создания программного обеспечения мгновенного обмена сообщениями, IP-телефонии или видеоконференций.
21. Thousand Parsec - фреймворк для создания космических стратегий.
22. Violet - простой UML редактор
23. VisTrails - система для визуализации научных данных
24. VTK - Visualization Toolkit - система для обработки и визуализации данных
25. Battle For Wesnoth - пошаговая стратегическая игра