четверг, 28 мая 2009 г.

Я заперт в клетке, которую построил Сам...

Я заперт в клетке, которую построил
Сам,
Схвачен стражниками, которых создаю
Каждый день,
Осуждён судьями, сидящими
Во мне,
Приволочен в камеру
Собственными руками,
Я - и тюрьма, и тюремщик,
И узник,
Сам себя запер
Внутри себя,
В кругу себя, который называю
Собой,
В кругах кругов
Только моих
Мы встретили Создателя, и Он - это Мы.

Люк Рейнхард, Трансформация

От экзистенциализма к прагматизму и ...

Хочу разобраться (ну или попытаться) вот в каком вопросе. Человек ответственен? За свои поступки и за мнения, которые складывают о нём другие люди (семья, друзья, враги и т.д.)?

среда, 27 мая 2009 г.

Про программирование и Enterprise в частности.

Редко случается наткнуться в сети на что-то, во-первых, здравое, а во-вторых, красивое. Так, например, случилось сегодня. The Enterprise is Broken - шедевр, подымающий один из вечных вопросов - столкновение личных ценностей с необходимостью подстраиваться под требования цивилизации. Разработчик ПО, охваченный страстью создать  новое, прекрасное, важное, словно художник, готов работать над своим детищем и днём, и ночью.  Для него это порыв, устремление вперёд, часть жизни и не второстепенная. Но зачастую эта часть существует отдельно от повседневных реалий. Автор утверждает, что Enterprise обезличен, находится в упадке. И всё потому, что люди не связывают свои устремления с ним. Для программиста работа в этой сфере связана со скукой, рутиной, страданиями. Нет вызова - нет ответа на него. Прозябание в повседневности. Какой же выход? Научится совмещать собственные устремления, цели, установки с корпоративными. И поэтому, наверняка, мы видим сейчас внедрение так называемых гибких (agile) методологий разработки ПО (по части менеджмента - Scrum; по части инжениринга - XP). Но самая суть - понять, что любое начинание достигает успеха только в том случае, когда отдаёшься ему полностью, без остатка. И это осознание приводит к выводу: невозможно отдаться одинаково полностью любому проекту, в любой организации, в любом коллективе. Такое возможно лишь при соблюдении определённых условий, которые уникальны для конкретной ситуации, индивидуальны для группы или даже человека. Все разные, поэтому ошибкой будет навязывание статичной модели разработки (да и организации в целом) каждому проекту, под копирку.

понедельник, 25 мая 2009 г.

Программирование на основе прототипов (prototype): понятие, смысл.

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

воскресенье, 24 мая 2009 г.

Clojure: туториал по внедрению в массы ФП-программистов.

Императивщине привет! Приверженцы ООП, у вас есть шанс перебежать на сторону ФП. Например, воспользовавшись туториалом , вводящим в дебри Clojure - сравнительно молодого языка для виртуальной машины Java. С одной стороны вы можете использовать все существующие библиотеки, а с другой  - комбинировать подходы программирования там, где это необходимо. В тексте приводятся модели использования переменных, списков, классов, сборок. В целом - отправная точка для прогрессивного Java-программиста.

Функциональное программирование: обучить легко!

Очень интересный пост воссоздал Джек Коф по следам научения своего восьмилетнего сына программированию. Начал он - что наиболее отрадно - с функционального подхода.  Испытывалось обучение на ребёнке, но сама концепция, поданная в очень доступной форме, может сыграть на руку и взрослому человеку, который хочет проникнуться функциональной идеей.

Я попытаюсь кратко пробежать по всем ярким эпизодам "учебного процесса".

среда, 20 мая 2009 г.

Средненький от хорошего: есть отличия?

Речь о разработчиках ПО. Животрепещущая тема: разглядеть посредственность или мастера своего дела.

понедельник, 18 мая 2009 г.

Изменение размеров поля textarea - вторая редакция.

Ранее я писал о принципе увеличения высоты поля textarea в зависимости от набранного текста. Зачем это нужно? Всегда приятнее видеть весь набранный (или скопированный) текст целиком, не задействуя прокрутку полей (фактически вторую, так как скроллинг самой страницы никто не отменял). Наблюдая картину целиком (или близко к тому), оценив объем и формат, можно с лёгкой душой приступать к опубликованию.

воскресенье, 17 мая 2009 г.

Скрипт блога на scheme (код. название VBSX): первый шаг сделан

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

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

Кстати можно заметить, что существует некоторая параллель с добавлением записей на форуме (я про быстрое добавление): когда цепочка разговоров на ладони, делать замечания и предложения естественно.

Итак, во главе угла подход, его развивать я и буду в дальнейшем. А потому ничего грандиозного не намечается. Скрипт блога будет наипростейшим: один пользователь, сообщения+категории+теги+комментарии. Писать буду (продолжать) на scheme.

Что сделано?
А сделано ровно вот что:

1) Предметная область включает собственно сообщения (дата, название, тело), комментарии (дата, ссылка-на-сообщение, автор, домашняя страница, почтовый ящик, тело).
2) Для каждой сущности там где это необходимо реализованы операции: создание (сообщение, комментарий), чтение (сообщение, комментарий), изменение (сообщение), удаление (сообщение, комментарий).
3) На типичной странице для каждого блока информации (например, блок сообщения) имеются ссылки на операции из п.2
4) Почти все операции реализуются с помощью использовании технологии Ajax (фреймворк - prototype). Подгрузка данных и форм редактирования происходит порционно и в фоне.
5) Поля textarea растягиваются при вводе, что позволяет видеть весь набранный текст целиком.

Ниже изображены скриншоты работающего блога:

Создание нового сообщения
При создании сообщения подгрузилась форма с полями Заголовок и Тело
При создании сообщения подгрузилась форма с полями Заголовок и Тело




Редактирование сообщения

Подгруженная форма заполнена существующими данными
Подгруженная форма заполнена существующими данными




Представление сообщения (генерируется сообщение и относящиеся к нему комментарии)

Само сообщение и список относящихся к нему комментариев
Само сообщение и список относящихся к нему комментариев




Создание комментария

Форма для комментария включает автора, его домашнюю страницу, почту и сам текст комментария
Форма для комментария включает автора, его домашнюю страницу, почту и сам текст комментария



Какие планы?
Второй технический релиз внесёт новшества в виде: (а) категорий и (б) построения страниц (и блоков) на основе шаблонов. Кроме того в голову пришла мысль о динамической подгрузке более ранних сообщений (которые изначально не видны) внизу страницы: задействуя либо скроллинг, либо какой-нибудь элемент управления. То есть было бы неплохо сделать так: скролишься вниз, а там появляются ранее написанные сообщения (совсем как в Google Reader).

Кому интересно, вот тарбол.

пятница, 15 мая 2009 г.

ООП: король умер, да здравствует...

Предпосылки. Всё ли вас устраивает в объектно-ориентированном программировании (ООП)? Все ли трудности разрешаются? Эти трудности случайно не являются следствием того, что подход ООП неверен, другими словами: какова переносимость человеко-ориентированного понимания проблемы на семантику ООП? Что у него лишнее, неправильное?

Девиз дня

Человеческий разум по своей склонности легко предполагает в вещах больше порядка и едино­образия, чем их находит. И в то время как мно­гое в природе единично и совершенно не имеет себе подобия, он придумывает параллели, соответствия, отношения, которых нет…

Ф. Бэкон