Search
Write a publication
Pull to refresh
0
0
Вадим Г @hrumcraft

User

Send message

Слушаем вызовы функций в Javascript

Reading time12 min
Views10K
Многие знают о механизме Event-Dispatcher-Listener'ов, реализованному во многих языках программирования. Я же создам подобный механизм не для Event'ов, а для любого метода объекта JavaScript — Object.
Я не претендую на оригинальность, нет. Основная цель статьи — рассмотреть интересные механизмы прототипирования в JavaScript, создание декораторов и, собственно, постараться хоть немного раскрыть мощь и гибкость это чудесного языка, который так часто обижают и недооценивают.

UPD1: краткое содержание:
1. Создание декоратора на JavaScript
2. Создание механизма Function call listener с помощью декораторов

UPD2: от 09.06.2009
В конце статьи я добавил раздел Update: Decorator Mark II. В нём — исправления и улучшения (я не перекраивал всю статью из-за этого)

Итак, первый (и, надеюсь, не последний) рецепт в моей поваренной книге JavaScript.
Перейти к рецепту

Вкусный CSS: Sass + Compass

Reading time2 min
Views70K

Что такое Haml/Sass?


Haml (xHTML Abstraction Markup Language) это язык разметки для упрощённой генерации xHTML. В свою очередь эквивалент Haml для css — это Sass (Syntactically Awesome StyleSheets).

В данной статье я расскажу чем примечателен Sass. И с помощью чего sass-файл можно скомпилировать в css.
Читать дальше →

Локализация с помощью сущностей

Reading time3 min
Views2.7K
Существует довольно много способов локализации XSLT-шаблонов, некоторые способы описаны студией Лебедева, но сегодня я расскажу о локализации с помощью сущностей.

ENTITY


C начала о том, что же такое «сущности», не углубляясь в DTD. Сущности — это своеобразные константы в XML-документе, описываемые с помощью DTD, и используемые в качестве сокращений. Примером такой замены могут служить буквенные обозначения символов, не присутствующих на стандартной раскладке клавиатуры (©, ®, ₤ и т.д.). Сущности описываются следующим образом:
Читать дальше →

Порядок разрешения методов в Python

Reading time15 min
Views191K
В этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
Читать дальше →

Раздражающее поведение менеджера обновлений в Ubuntu 9.04 и как это вылечить

Reading time2 min
Views4K
Не знаю из каких соображений, но способ уведомлений о доступных обновлениях системы в 9.04 был изменён. По-умолчанию, раз в неделю проверяются обновления, и если такие есть, то внезапно появляется окно со списком этих пакетов.

Читать дальше →

Стэнфордский видео-курс по языкам программирования

Reading time1 min
Views6.3K
Стэнфордский курс по основам языков программирования выложен на YouTube.



27 лекций минут по 20 каждая ведут стэнфордский преподаватель Джерри Кейн (экс-Стэнфорд, нынче Facebook), последняя лекция по Haskell преподается Сашей Рашем (Facebook). Рассматриваются концепции и основы C (куда ж без него), ассемблера, C++, Scheme, Python и Haskell.

Полнотекстовый поиск по сайту — бич современного интернета

Reading time4 min
Views28K
Реализация хорошего поиска по сайту — часто сильно недооцененная по сложности задача. Поиск является слабым местом сайтов настолько часто, что когда я вижу строку поиска, у меня сразу же возникает предвзятое ощущение предстоящего фиаско. И чтобы лишний раз не расстраиваться, я сразу переадресую свой вопрос гуглу или яндексу и быстро нахожу то, что требовалось. Что же делать, чтобы как-то улучшить эту ситуацию?
ответы

Примеры с JavaFX

Reading time1 min
Views3.8K
На мой взгляд, интересный скринкаст демонстрирующий основные графические компоненты и эффекты JavaFX. Сразу прошу прощения, но хабр не разрешил всунуть embeded video в этот пост.

Это третий скринкаст из серии 15 Minutes or less c Робертом Экcтайном, корреспондентом Sun Developers Network. Предыдущие выпуски: 1, 2, 3

Причесываем трафик — динамический шейпер на Linux

Reading time4 min
Views59K
причесываем трафик
Предположим у вас есть домашняя сеть (или не домашняя, а сеть небольшого офиса) с выходом в интернет через не очень скоростной канал. А пользователей — много, и каждый хочет что-то скачивать, да с максимальной скоростью. Вот тут перед нами встатет задача, как максимально эффективно распределить наш интернет-канал между пользователями так, чтобы они не мешали друг другу. В этой статье я опишу, как можно решить такую задачу с помощью Linux-сервера.

Сформулируем, что же мы хотим получить в результате:
1. Чтобы канал поровну делился между пользователями.
2. Чтобы канал зря не простаивал.
3. Чтобы онлайн-игры, ssh и telnet не «лагали» даже при полной загрузке канала, например торрентами.
Читать дальше →

Вы можете создать веб страницу? Теперь вы можете создать плагин к Firefox тоже

Reading time1 min
Views1.5K
Jetpack LogoБольшинство людей не могут создать расширение к Firefox — для этого нужны знания Javascript, XUL, и немного опыта в XML. Сейчас порядка 8000 разработчиков и 12000 плагинов к Firefox, но Mozilla всегда ищет пути как это расширить.

Итак Mozilla выпустила экспериментальную программу Jetpack, которая позволяет каждому, кто может создать веб страницу — создать дополнение к Firefox. Это означает, что для простого дополнения к популярному браузеру, вам нужны лишь знания HTML. Jetpack также поддерживает CSS и Javascript.

И для тех из вас, кто не является силен в программировании, Jetpack делает одно очень важное изменение: вам не придётся перезапускать браузер для того чтобы инсталлировать дополнение через Jetpack.

Jetpack очень ранний проект с открытым исходным кодом, это только 0.1 версия и там пока очень много багов. Но уже сейчас она позволяет каждому использовать API для создания статусбаров, работы с табами и многое другое. Он также поддерживает внешний API как Twitter, и вы сможете создавать простые дополнения для работы Twitter'а с Firefox.

Итак, если вы разработчик, посмотрите видеопредставление как создавать дополнения к Firefox.


Moblin 2.0 Beta: Новый пользовательский интерфейс

Reading time1 min
Views1.3K
Сегодня был анонсирован выход бета-версии проекта Moblin 2.0, который, напомню, курируется компанией Intel и нацелен на создание идеальной операционной среды для нетбуков. В рамках этого проекта оптимизируют ядро с целью снижения энергопотребления, уменьшают время загрузки ОС, и разрабатывают более удобный интерфейс для экранов с малым разрешением. Именно новый интерфейс и стал главным нововведением беты. Разработан он с использованием библиотеки Clutter, разрабатываемой также Intel, и позволяющей сконцентрировать внимание на анимации и эстетической стороне дела при разработке графического интерфейса. Кроме того, проект Moblin полностью опирается на наработки Gnome Mobile (GLib, PulseAudio, Bluez, Telepathy & e.t.c. )

Управление задачами в MLO

Reading time5 min
Views52K
Я долгое время выбирал для себя удобный персональный органайзер и систему для управления задачами…

В конце-концов остановился на такой софтинке как MLO, о которой и поведаю далее.
Читать дальше →

Персональный зоопарк или немного о Pygame — Часть 1

Reading time7 min
Views40K
image
Для тех, кто не в курсе: Pygame — это очень и очень неплохой фреймворк для разработки игр на языке Python. Причем поддерживается не только работа с 2D и 3D, но и при желании можно установить биндинги ко многим популярным графическим и физическим движкам. Кстати, Pygame вовсе необязательно использовать именно для игр, можно также создавать и программы с необычным интерфейсом, например, какой-нибудь трехмерный фронтенд к базе данных.
Вот мне, собственно, и захотелось рассказать об основных принципах работы с этим фреймворком, мало ли, может, пригодится кому :)
Ну что, погнали?

Vim Ruby Debugger

Reading time3 min
Views6.4K
До недавнего времени я писал Ruby код в Netbeans. Штука клевая и очень удобная, но я давно заглядывался на Vim, уж больно он мощный текстовый редактор, бобам и не снилось. Пытался несколько раз на него перейти, но как только встречался какой-то затык в коде, закрывал Vim, открывал Netbeans, ставил брейкпоинт и начинал разбираться что не так. В общем, привык я к отладчику.

Помучившись некоторое время, пришла идея написать Ruby дебаггер под Vim. Открыл код rails.vim, NERDTree.vim и начал учиться VimScript'у. Так что спасибо tpope и Marty Grenfell за уроки (хотя наверно они никогда этого не прочтут и не узнают об этом). Плагин можно сейчас лицезреть на гитхабе.
Как это установить и как этим пользоваться

FireDiff — расширение для FireBug, позволяющее отслеживать изменения в DOM и CSS

Reading time1 min
Views1.8K
Kevin Decker выпустил FireDiff — замечательное расширение для Firebug, которое отслеживает изменения в DOM и в таблицах стилей HTML-страницы.
Читать дальше →

Как сделать FF удобней — пишем свои кнопки

Reading time14 min
Views7.3K

Преамбула


Я перешел на FF с IE очень давно — мне нужен был браузер с удобными средствами разработки и отладки, позволяющий полностью настраиваться «под себя» так как это был мой основной рабочий инструмент — инструмент должен быть удобным.

И FF полностью справился со своими обязанностями — возможно, я кому-то покажусь странным — но я потратил около 2-х месяцев на чтение сайта с дополнениями и нахождения для меня лучшего их набора, настройки и т.д.
В результате я получил мощную хорошо настроенную и удобную программу для своих нужд.

image

Не смотря на то, что я знаю JS, мне ни разу не пришло в голову писать какие-либо расширения под ff по одной простой причине — чтобы я не захотел — это уже было в депозитории расширений. Так продолжалось до вчера :)
Читать дальше →

Текущий семестр и задание на Perl

Reading time1 min
Views863
Здравствуйте, хабралюди!
Проект Computer Science Student еще живет, сегодня небольшое обновление. Два эпизода:



И новые материалы на сайте:


Прототипирование как коммуникация

Reading time6 min
Views2.2K
Продолжение статьи о мышлении дизайнера.
«Процесс важнее результата. Когда результат довлеет над процессом, вы начинаете с того места откуда начинали. Когда процесс ведет нас, мы не знаем, куда мы зайдем, но если окажемся там, где нужно, то сразу поймем это»
Bruce Mau, «Неполный манифест творческого роста»



Я продолжу противопоставлять ТЗ и прототип, чтобы выявить неочевидные свойства прототипа и эффекты от его применения. Противопоставление ТЗ и прототипа стоит понимать как противопоставление того, что у вас есть в производственном процессе, с тем, что в нём может появиться.

Участники проектных команд обмениваются результатами своего труда, выстраиваясь в своеобразную пищевую цепочку. Как правило, для каждого личный результат довлеет над общим процессом. Пока каждый выполняет свою работу, её содержание, мотивы работника и критерии принимаемых им решений остаются скрытыми для остальных участников. Часто у аналитика/дизайнера/кодера/разработчика понимание проекта формируется только на основе того, что он получил от предыдущего звена в цепочке, и только в момент постановки задачи и estimation. При этом — он концентрируется на своём локальном участке работы, не проводя каких-либо дополнительных расследований и не оценивая упущенных возможностей, перспектив, последствий и взаимосвязей результатов своей работы с результатами других участников.
Читать дальше →

Основы репликации в MySQL

Reading time10 min
Views333K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity