• Паттерны проектирования

      Здравствуй хаброчеловек!

      Так уж случилось, что с этого семестра в своем вузе я записался на спецкурс по паттернам проектирования. Курс проходит в виде семинаров, на которых ты (студент) должен рассказать чему научился за неделю (имеется ввиду, какие паттерны изучил и применил на практике).
      Читать дальше →
    • О размерах Вселенной

        Очень интересное видео, которое показывает какие мы крошечные в нашей Вселенной. По порядку показывает размеры некоторых планет и звезд.
        И в пример приводится диаметр красного гиганта он составляет 28 * 10^8 км. Трудно представить этот размер? Ну на примере, если вы летите на самолете со скоростью 900 км\ч то вам бы пришлось пролететь 1100 лет, чтобы облететь эту звезду по окружности.
      • Модели искусственной жизни. Часть 1

          Сразу к делу. К чему может привести изучение ИЖ? Как практически применить знания, полученные в данной области? Учёные, работающие по этому направлению, говорят, что их исследования направлены именно на практические приложения, такие как подвижные роботы, медицина, нанотехнология, искусственный интеллект, и даже исследования социальных и экономических систем. Но в истории искусственной жизни было довольно много споров и противоречий. Многие скептики критикуют некоторые работы по искусственной жизни, называя их «наукой без фактов». Однако последние публикации по искусственной жизни свидетельствуют о том, что технологии, используемые для моделирования искусственной жизни, признаются научным сообществом, по крайней мере, для изучения эволюции.

          Основной проблемой ИЖ является создание вычислительных систем и моделей, действующих на базе биологических и эволюционных принципов. Проще говоря, это «мир, созданный человеком». Но до определённого времени работа в данной области ограничивалась лишь теоретическими исследованиями свойств жизни. А моделирование — лишь построением отдельных частей биологических систем, таких, например, как адаптивное поведение или эволюция. Но в последнее время, во многом благодаря развитию нанотехнологий и молекулярной биологии, а также благодаря возросшему пониманию назначения отдельных генов и способов их взаимодействия и появлению средств манипуляции отдельными молекулами, развивается новое направление ИЖ, направленное на создание новых, искусственно синтезированных биологических форм, что требует философского обоснования ИЖ и, как минимум, определения понятия «жизнь» (что же вообще понимать под этим словом). Сегодня сторонники данного направления говорят, что они исследуют более общие формы жизни, чем те, которые существуют на Земле.
          Интересно, а что же дальше...
        • Используем Python для обработки HTML форм

            Когда я только начинал пользоваться django, самым приятным моментом после ORM, для меня, был пакет django.forms. Теперь django в прошлом — я использую стэк Werkzeug + SqlAlchemy + Jinja2, а иногда даже пытаюсь вместо SqlAlchemy экспериментировать с нереляционными хранилищами данных. Но вот замену django.forms я так и не нашёл. Поэтому решил набросать по-быстренькому что-нибудь своё.
            Читать дальше →
          • XHTML 2 против HTML 5

            • Translation

            Вернемся в прошлое на десять с небольшим лет, в 18 декабря 1997. Internet Explorer 4 был выпущен 3 месяца назад, The Mozilla Foundation еще не сформирована и до выхода Firefox еще далеко. Здесь нет XMLHttpRequest, нет даже XML. В этот день, больше десятилетия назад, HTML 4.0 был опубликован как рекомендация W3C.



            Он и стал базой, на основе которой были разработаны современные web-стандарты. Конечно, были и усовершенствования. В 2000 году как официальная рекомендация был принят XHTML 1.0, а CSS 2 был реализован большинством производителей браузеров. Но основа Web – костяк, на котором построен каждый сайт, от простых визиток до комплексных приложений – по существу осталась неизменной.



            По крайней мере, до сегодняшнего дня. После долгого затишья, кажется, уклад вещей в W3C меняется – в разработке находятся две конкурирующие спецификации, призванные заменить устаревшие стандарты HTML 4.x и XHTML 1.x. Обе инициативы работают под эгидой W3C (пусть так было и не всегда) и обе, по моему мнению, значительно превосходят текущую подборку языков web-разметки. Это HTML 5 и XHTML 2.0. И если вы читаете эту статью, скорее всего, в течение нескольких следующих лет вам придется работать с одной (или обеими) из них.


            Читать дальше →
          • Интеграция Django и Selenium



              Всем привет.

              Ни для кого не секрет что тестирование приложений является важным этапом разработки ПО, а если вы разрабатываете веб-приложения, то вам просто необходимо тестировать веб-интерфейс. К счастью, для этой цели существует такой инструмент как Selenium. Небезызвестные на хабре компании СКБ Контур и Яндекс уже выбрали его как инструмент функционального тестирования своих приложений и сервисов (Яндекс рассказывал об этом на недавно прошедшей YaC).

              Теперь к делу.
              В одном из проектов, над которым я работаю, мы использовали Selenium начиная еще с первой ветки. Но время не стоит на месте, вышел Selenium 2.0, основанный на технологии webdriver, более функциональный, удобный, и правильно имитирующий события в браузере (подробнее о преимуществах).

              Чтобы не заниматься обновлением старого кода поддержки Selenium внутри нашего приложения (а вдруг это придется делать еще и не один раз?), а также чтобы попробовать сделать что-то полезное для других разработчиков, мы решили сразу вынести интеграцию с Selenium в отдельную библиотеку.
              Что из этого вышло
            • Основы LibCanvas — теория



                Добрый день. Один из самых частых вопросов про LibCanvas сейчас — «С чего начать?». Согласен, порог вхождения в эту библиотеку чуть выше, чем в более простые canvas-библиотеки, потому в этом топике я раскрою основы LibCanvas — базовые понятия и принципы, отрисовка примитивных фигур, события мыши, клавиатуры, анимация, расширенный контекст, поведения. Постараюсь описать всё это с множеством примеров и максимально доступным языком.

                Надеюсь, статья даст ответы на вопросы: Что такое LibCanvas? Зачем он нужен и какие его преимущества? С чего начать?

                В этой статье будет только теория, а как применить эти знания на практике раскрыто в следующей статье
                Читать дальше →
              • Основы и заблуждения насчет JavaScript

                  Объекты, классы, конструкторы

                  ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.
                  В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).

                  Прототипное делегирующее наследование


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

                  Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
                  Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
                  Читать дальше →
                • Книги, видео и другие материалы по разработке под iOS

                    «Хочу программировать под iPhone — говори, что почитать...»
                    Любимая девушка


                    Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.

                    Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
                    Читать дальше →
                  • Материалы продвинутого уровня по Питону

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

                      После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

                      Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

                      Подробнее
                    • Экспорт событий из email в Google-календарь в один клик — подводные камни

                        image

                        Как одну из возможностей сервиса предварительной записи клиентов zabroniruy.com реализовывали идею, чтобы клиент получал всю информацию о предстоящих события в формате, который можно легко экспортировать (желательно в один клик) в существующие планировщики задач. В ходе работы столкнулись с тем, что не все планировщики одинаково “дружелюбны” к разработчикам.
                        Читать дальше →
                        • +23
                        • 9.3k
                        • 7
                      • Автоматизируем выкладку django-проектов на сервер

                          Настраивать VDS'ки для выкладки django-проектов довольно утомительно бывает, да и легко что-то забыть (т.к. делаешь это не каждый день). Гораздо лучше, когда этот процесс автоматизирован: с меньшими усилиями можно получить правильно настроенный проект и набор команд для работы с ним.

                          Существую разные подходы к этому процессу: специфичные для питона (fabric, buildout) или неспецифичные (puppet, Chef, наборы shell-скриптов и т.д.).

                          Подход fabric — локально выполняемый скрипт ходит по ssh на сервер и выполняет там команды. Этот подход довольно прямолинеен и прост в отладке, тем и хорош (обзор на хабре). Из разнообразных команд fabric постепенно вырисовался велосипед под названием django-fab-deploy. Это набор fabric-скриптов, который умеет настраивать серверы под Debian Lenny или Squeeze, а потом с минимальными усилиями разворачивать там django-проекты и управлять этими проектами в дальнейшем.

                          С выходом Debian Squeeze взялся за django-fab-deploy посерьезнее, поправил некоторые шероховатости и теперь, думаю, самое время об этом проекте рассказать. У проекта есть документация, тут будет краткий пересказ с лирическими отступлениями.

                          Читать дальше →
                        • Новый пуленепробиваемый синтаксис @font-face

                          • Translation
                          • Tutorial
                          С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?

                          Вкратце об истории вопроса


                          В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций @font-face. Синтаксис был компактным и в то время действовал во всех браузерах. Недавно стали поступать, со временем усиливаясь, жалобы на отказ шрифтов загружаться в Android — поэтому мы стали вместо того рекомендовать синтаксис «Mo' Bulletproofer», сочинённый Ричардом Финком (Richard Fink). К сожалению, синтаксису «Mo' Bulletproofer» требуется двойная запись деклараций, так что поддержка его сложнее.

                          Синтаксис Fontspring @Font-Face


                          А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
                          @font-face {
                          	font-family: 'MyFontFamily';
                          	src: url('myfont-webfont.eot?') format('eot'), 
                          	     url('myfont-webfont.woff') format('woff'), 
                          	     url('myfont-webfont.ttf')  format('truetype'),
                          	     url('myfont-webfont.svg#svgFontName') format('svg');
                          	}
                          

                          Что? Я не понял.


                          Хак Трюк, заставляющий этот код заработать — символ «?» вслед за именем файла EOT. Без шуток.

                          Как это срабатывает


                          Читать дальше →
                        • Работаем с jQuery Templates

                            Введение


                            Плагин jQuery Templates – это «движок шаблонов», работающий на стороне клиента как расширение jQuery.

                            Этот плагин помогает показать в браузере данные, которые находятся в объектах и массивах JavaScript, избавляя вас от рутинных операций по созданию HTML-кода, экранированию специальных символов и т.п. Кроме того, он обладает очень интересными возможностями – например, позволяет обновлять созданный с его помощью HTML-код при изменении исходных данных.

                            Разумеется, jQuery Templates – не единственный и не первый «движок шаблонов», но у него есть большое преимущество перед альтернативными вариантами – поддержка со стороны jQuery Team. Это позволяет нам не бояться того, что этот плагин окажется заброшенным, и различные проблемы, возникающие при выходе новых версий браузеров, придется решать своими силами.

                            В этой статье я расскажу об основных возможностях jQuery Templates и продемонстрирую его работу в различных сценариях, а в последующих статьях я расскажу о функциях, не вошедших в основной код плагина (jQuery Templates Plus) и о расширении языка шаблонов.

                            Читать дальше →
                          • Кладезь полезной информации

                              «Чем больше я знаю, тем больше понимаю, что ничего не знаю».

                              Даже если вы уже давно не чайник и не боитесь увеличить относительный уровень своего незнания — попробуйте проделать на своей машине:
                              sudo apt-get install fortunes-ubuntu-server
                              а потом просто вызывайте
                              /usr/bin/ubuntu-server-tip

                              Многократный мысленный оргазм гарантирован.
                              Вот просто некоторые примеры:
                              • Для создания копии файла без дублирования пути файла используйте команду '$
                                cp /long/path/to/file/name{,.orig}', которая создаст копию файла с суффиксом ".orig".
                              • Если вы выполнили команду и забыли про 'sudo', вы можете набрать 'sudo !!'
                                для вторичного запуска предыдущей команды с использованием 'sudo'.
                              • Последующие команды обычно принимают аналогичный аргумент. 'Alt-.' вставляет
                                последний аргумент предыдущей команды. Чтение документации рулит!

                              Приятного чтения!
                            • Быстрая сборка кубика Рубика

                                Возможно, многие из читателей задавались вопросом, как людям удаётся собирать кубик Рубика 3×3 за 7 секунд. Если даже предположить, что рекордсмену сильно повезло, то таблица мирового рейтинга по среднему из пяти результатов уже не оставляет сомнений: если больше 80 человек в среднем укладываются в 12 секунд, очевидно они что-то знают. В этом кратком обзоре я постараюсь приоткрыть секреты скоростной сборки. Сразу оговорюсь, что после прочтения этой статьи вы не станете чемпионами: здесь приведены только основные моменты и ссылки на более подробную информацию. Кроме того, даже после изучения метода полностью вам потребуются долгие тренировки для достижения хороших результатов. Зато вы получите неплохое представление о том, как это делается, и при желании будете знать, куда двигаться дальше. Я думаю, при достаточной усидчивости после нескольких месяцев тренировок многие смогут достичь среднего результата в районе 30 секунд.
                                Читать дальше →
                              • Сумбурные заметки про python и django

                                  Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

                                  Под катом:
                                  • как упростить код вьюх ровно в 2 раза
                                  • легкий способ рисования графиков
                                  • почему Ian Bicking воскликнул «Cool!»
                                  • приложения для ВКонтакте на django за 5 минут
                                  • хорош ли pymorphy?
                                  • пара фишек насчет выкладки пакетов на pypi
                                  • что общего между декораторами и with-контекст-менеджерами
                                  • принимаем оплату на django-сайтах
                                  • показываем Яндекс.Карту для заданного адреса

                                  Читать дальше →
                                • Erlang в Рисоваське, часть 1 — обзор языка

                                    В этой и последующих статьях (часть 2) я хочу рассказать про язык программирования Erlang/Эрланг, его использование в нашем проекте Рисоваська, а также какие приложения и готовые модули (большинство которых тоже написаны на Эрланге) мы использовали в серверной части.

                                    Поискав на Хабре по теме Erlang/Эрланг, понял, что тема освещена мало, есть всего пара действительно хороших статей на тему языка (например, отличная статья от создателя языка в переводе alex_blank What's all this fuss about Erlang? написанная понятным, доходчивым языком). Именно поэтому хочется остановиться сначала на самом языке и его отличиях от традиционных языков.
                                    Читать дальше →
                                  • Технический отчет запуска Eventr.com, цифры

                                      image По просьбам хабралюдей выкладываю короткий технический отчет.
                                      Напомню, Eventr – это web-сервис, в котором можно удобно читать RSS-ленты, в два клика обмениваться, делиться интересными записями с другими, вести свой блог.

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

                                      О чем будет сказано:
                                      1. Некоторые технические сложности
                                      2. RSS/Atom читалка, цифры
                                      3. Хабраэффект, цифры
                                      4. Грабли
                                      5. Mongodb, nodejs, redis
                                      Читать дальше →