| |
Архив за February 14, 2008
Так получается, что, интересных регулярно обновляемых сайтов, которые меня интересуют, всегда оказывается больше чем времени на их прочтение. Потому, уже год практикую следующее: в RSS-читалке имеется раздел «quarantine», куда добавляются все новые подписки. Через неделю-месяц становится понятно, стоит ли ресурс затрачиваемого на него времени и, соответственно, попадает либо в одну из «настоящих» категорий RSS-читалки, либо в мусорку. RSS-потоки, которые надоели или испохабились я тоже не удаляю просто так, отправляю их в карантин — всегда лучше иметь второй шанс.
Итак, каждый месяц буду проводить мини-обзор сайтов побывавших в карантине. Успешно прошли- Design For Masters (язык — русский). Отличный ресурс о веб-разработке, эргономике, поисковой оптимизации и прочему.
- Django is for the Aware (язык — английский). Среднего качества блог, зато в нем множество практического материала по фреймворку Django.
- Крайнов (язык — русский). Узнал о нем благодаря блогу Давыдова. Отличный авторский сайт о маркетинге, саморазвитии и всяких там «лайфхаках».
- LUK!Around (язык — русский). Просто добротный сайт о путешествиях, у него нету изюминки, но и чего-то отталкивающего тоже нету.
- Smashing Magazine (язык — английский). Очень качественный интернет-журнал для дизайнеров и тех, кому важны темы эргономики в вебе, инфо-дизайна, инноваций в гажетах.
- Startup Cube (язык — русский). Сайт Крайнова о бизнесе.
- Владимир Губарков (язык — русский). Отличный блог о языке Python.
- Блог в помощь (язык — русский). Блог о блогах. Не всегда качественно, но где еще русскоязычный блоггер может почерпнуть столько полезной информации?
- Оптимизация черная и белая (язык — русский). Из названия все ясно, в остальном же — качественный сайт сеонитса, человеческий язык.
Не прошли- ajaxed — Все самое модное (язык — русский). Не плохой ресурс, но все значимые новости из мира джаваскрипт-инноваций и так можно узнать с тематических сайтов вроде Хабрахабра.
- IBM Developer Works Россия: Linux (язык — русский). За месяц не появилось ни одной важной статьи по серверному линуксу.
- EffBot (язык — английский). Добротный по содержанию, но слабый по уровне подачи сайт о языке Python. Выдавать в RSS-ленте только названия статей без аннотацийполного текста — хамство.
- Etoday (язык — русский). Отличный фотожурнал. Фотографии из мира культуры, политики, музыки… Довольно плотный трафик, в среднем в день по 3-10 новостей. Однако, в последнее время, обилие светских хроник, фотографий с показов мод или, просто, оригинальной одежной рекламы убивает все хорошее.
- Django Weblog (язык — английский). Жаль, что новости на сайтах фреймворков очень редко оказываются полезными, Django — не исключение.
- Маркетинг, за который платят (язык — русский). Пусть кто-то платит, но на тему маркетинга предпочитаю читать Крайнова и Давыдова, которые и пишут лучше и дурацких картинок в посты не вставляют.
- Productivity 501 (язык — русский). Это как-то сильно непродуктивно читать сайт о лайфхаках и продуктивности, где большая часть заметок банальна до неприличия и адаптирована строго под американцев.
- Аквариум (язык — русский). Java-блог компании SUN о сервере приложейний Glassfish. С одной стороны, полезно иметь свежие новости, с другой — все-равно я их обычно «прокскроливаю», а о самом интересном читаю на The Server Side.
Остались в карантине- Urbansheep (язык — русский). Автор уже 2 месяца ничего не пишет.
- Amazing Development. Блог о html вёрстке, юзабилити и управлении проектами (язык — русский). Пока еще мало информации чтобы понять, нужен ли мне этот блог. Но качество контента однозначно высокое.
- ITC.ua (язык — русский). Сайт о компьютерах. С одной стороны новостей много и адекватных, с другой стороны — тут в одной ленте и новости софта и железа и интернета, что прилично раздражает, хочется читать только определенную тематику. Посмотрим еще пару-тройку недель.
- У Wada (язык — русский). Сайт о самосовершенствовании и бизнесе. Пока не могу понять, насколько он хорош, но интересные посты точно бывают.
В некоторых языках программирования (Python, Ruby, JavaScript и
некоторые другие) есть возможность переопределять атрибуты и методы
классов во время исполнения программы. На этой возможности была
построена целая техника программирования, она называется Monkey
Patching.
Откуда взялось такое название?Изначально термин назывался guerilla patch (партизанский патч): разработчик незаметно добирался до чужого кода, изменял на лету поведение этого кода, не заботясь о соблюдении каких-либо правил, установленных создателем, а потом так же незаметно исчезал, оставив создателю порцию говна, в виде кода не работающего, как надо, без видимых на то причин. Поскольку, слова Guerilla и Gorilla звучат очень похоже — вскоре эту технику стали называть «горилла патч», что в конце концов трансформировалось в monkey patch. Именно этот термин прижился, поскольку лишен негативной окраски предшественников. Практическое применениеДумаю, главное практическое применение техники обезьяних патчей — расширение функционала чужих продуктов (фреймворков, библиотек) без непосредственного вмешательства в их код, а также, т.н. security patches. Хотя, как инструмент террора, эта техника не менее хороша. Пример из жизниСуществует замечательный, но не лишенный недостатков, фреймворк для веб-приложений — Django. В нем уже существует модель пользователя (User), используемая для авторизации, разграничения прав доступ, хранения самих пользователей… Естественно, эту модель нужно использовать. На практике оказывается, что у пользователя могут быть дополнительные атрибуты (не предусмотренные фреймворком), например, пол или телефон. Первое, что хочет сделать здравомыслящий разработчик, — написать новый класс пользователя, унаследовав его от джанговского. Увы, один из главных минусов django — его ORM не поддерживает наследование моделей, то есть модель то создастся… но она всего лишь продублирует все поля родителя в новую таблицу базы данных, создав тем самым избыточность. В нашем случае можно сделать дополнительный класс UserProfile для дополнительных полей и связать его с классом User отношением один-к-одном,. но признайтесь, это, явно, не самое красивое решение, тем более, когда-нибудь в django доработают ORM. Патчить исходные коды django — вариант еще хуже, так как все нормальные разработчики пользуются его версией из репозитория (SVN), которая обновляется почти каждый день… выход один — monkey patching! В любом файле (желательно в моделях) пишем слудующее: from django.contrib.auth.models import User
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
User.add_to_class('gender', models.CharField(max_length=1, choices=GENDER_CHOICES))
#Вцелом, этого уже достаточно, но для самой админки django добавим следующее:
User._meta.admin.fields += (
('Additional', {'fields': ('gender',)}),
)
User._meta.admin.list_display = User._meta.admin.list_display + ('gender', )
Все, отныне, никаких бесполых пользователей!Точно так же можно расширять функционал встроенного в django модуля FlatPages, представляющего из себя простейшую CMS-систему и многое-многое другое. Меры предосторожностиНе стоит забывать, что monkey patching — это именно хак, а не нормальное поведение программы и применять его стоит только в тех случаях, когда иначе ситуацию решить нельзя. Будьте уверены, если такой патч, в будущем, вызовет ошибки в коде — наверняка, после многочасовых поисков причины, кто-нибудь захочет вас больно побить. Избежать этого довольно просто: всякий раз, когда применяете monkey patching, заботьтесь о том, чтобы этот код был покрыт автоматическими тестами.
Несколько недель назад по рекомендации Андрея Ясинецкого попробовал перейти с del.icio.us на
memori.ru… и хорошо так попробовал, желания вернуться назад не возникло. Если вркатце — del.icio.us уже давно меня раздражал своим убогим
дизайном и бездумным отношением к эргономике. В свое время, думал
перейти на BlueDot, но через пару дней сбежал
оттуда и решил, что такое сырое говно как блудот обязано умереть… и
знаете что? оно таки умерло! Чем же memori.ru оказался настолько лучше старого доброго делишеза? - Приятный дизайн
- Сохраняются favicon’ы ссылок
- Вместо длинного списка теги организованы в облако
- Есть разграничения доступа к закладкам, а не просто public/private как в делишезе
- Удобно реализована групповая работа с закладками
- Нагляднее реализованы «родственные теги»
- Возможна сортировка списка тегов по разным параметрам
- Грузится быстрее (у меня во всяком случае)
Конечно же, есть у сервиса и минусы, их я нашел всего два: - Присутствует баннерная реклама.
- Сервис менее распространен чем del.icio.us, соответственно, реже можно получить подсказки по тегам к определенному адресу
Memori умеет импортировать закладки из del.icio.us и тоже имеет свой плагин для firefox, хотя, и без плагина сервисом пользоваться вполне удобно. В итоге, memori — это именно то, чем стал бы del.icio.us, если бы уделял больше внимания дизайну и удобству использования.
Всем, кто следил за моими закладками через RSS, решительно советую удалить старый поток и начать следить за закладками через мой RSS-канал в memori.
Предыдущий день
Следующий день
|