В дополнение статей oddy про архитектуру RIA-приложений на основе ExtJS хочу предложить свой, альтернативный подход к данной проблеме. Он состоит в использовании ZendFramework-подобного каркаса xFrame, написанного на JavaScript. Под катом — описание ключевых элементов системы, ссылки на демо приложение и исходный код.
auth @auth
User
20 причин проводить обзоры кода
6 min
5.3KTranslation
(прим. перев. Перевод немного вольный, но я попытался максимально точно сохранить смысл текста, в то же время отыгравшись на некоторых некритичных моментах, просьба не судить строго :)
Должен также отметить, что я не по всем пунктам согласен с автором (в конце он уже начинает зарываться) и, разумеется, обзоры кода — это не серебряная пуля, но, тем не менее, очень и очень полезная практика.)
Я затвитил эту статью о 5 причинах проводить обзоры кода на CIO.com на прошлой неделе и понял, что на самом деле причин гораздо больше, чем те пять, о которых там написано. Так что к концу дня у меня их было уже больше 20. Это коллекция тех твитов с некоторыми подробностями, описанными здесь.
Причина №1. Достаточно быстрая ответная реакция, чтобы подстегнуть разработчика.
Так как обзор кода производится после кодирования и перед интеграционными и системными тестами, разработчикам не надо ждать столько же, сколько и ответа от отдела по качеству кода (QA). Обеспечив конкретный, своевременный ответ, разработчики могут подстраивать свои навыки кодирования для избежания общих ошибок.
Должен также отметить, что я не по всем пунктам согласен с автором (в конце он уже начинает зарываться) и, разумеется, обзоры кода — это не серебряная пуля, но, тем не менее, очень и очень полезная практика.)
Я затвитил эту статью о 5 причинах проводить обзоры кода на CIO.com на прошлой неделе и понял, что на самом деле причин гораздо больше, чем те пять, о которых там написано. Так что к концу дня у меня их было уже больше 20. Это коллекция тех твитов с некоторыми подробностями, описанными здесь.
Причина №1. Достаточно быстрая ответная реакция, чтобы подстегнуть разработчика.
Так как обзор кода производится после кодирования и перед интеграционными и системными тестами, разработчикам не надо ждать столько же, сколько и ответа от отдела по качеству кода (QA). Обеспечив конкретный, своевременный ответ, разработчики могут подстраивать свои навыки кодирования для избежания общих ошибок.
+40
DEVCONF::PHP( 'приглашаем докладчиков' )
1 min
1.3K
DEVCONF — это новая конференция, которая собрала вместе лидеров сообществ web-разработчиков.
Мы объединили усилия, чтобы сделать эту глобальную конференцию доступной для любого участника, живым и увлекательным местом сбора профессионалов web-разработки.
Москва — 17мая 2010
В данный момент есть идет сбор заявок на доклады
www.devconf.ru/phpconf/offers
+33
JQuery FormNavigate — плагин для удобной работы с onbeforeunload
2 min
4.6KВсе, кто пользуется веб-интерфейсом gmail, наверняка замечали, как гугл заботится о нас и не даёт закрыть страницу, если мы начали составлять письмо и не сохранили его в черновики. И понадобилось мне для своего проекта сделать нечто похожее.
Сперва сделал это используя window.onbeforeunload, но злая опера не поддерживает это событие.
Призадумался, попутно нашёл плагин для jquery под названием FormNavigate.
Сперва сделал это используя window.onbeforeunload, но злая опера не поддерживает это событие.
Призадумался, попутно нашёл плагин для jquery под названием FormNavigate.
+31
ProgressBar — Javascript Canvas2d
4 min
6.4K
Здравствуйте. Последнее время я достаточно часто имею дело с JavaScript-canvas, особенно написание всяких игрушек, которые требовательны к трафику в силу необходимости загрузки множества картинок.
Обычно сначала загружается около 50-100кб сжатого JavaScript, после чего — энное количество картинок(например, 500кб, 2мб, 10мб и т.п.) и только после этого запускается сама игра. Можно, конечно, загружать по ходу, но отсутствие текстур врядли порадует игрока.
Потому я решил, что необходимо сделать какой-то приличный, симпатичный, легко-настраиваемый(чтобы быстро менять от проекта к проекту) прогресс-бар, но, обязательно без использования картинок. Под катом исходники под лицензией LGPL, небольшая инструкция, как это сделать и внизу статьи — ссылка на результат.
+80
5 способов, которыми игры пытаются вызвать зависимость
10 min
190KTranslation
Итак, в новостях снова пишут, что кто-то еще умер из-за игромании. Да, опять Корея.
Какого ...? послушайте, я не пытаюсь доказать что видео игры — это героин. Я полностью понимаю, что в данном случае у жертвы было много проблем в жизни. Но, половина из вас знает что World of Warcraft затягивает и что доктора считают игровую зависимость серьёзной проблемой. А вопрос вот в чем: может быть какие-то игры намеренно разрабатывались, чтобы заставлять вас играть в них, даже если вы не получаете от этого удовольствия?
Какого ...? послушайте, я не пытаюсь доказать что видео игры — это героин. Я полностью понимаю, что в данном случае у жертвы было много проблем в жизни. Но, половина из вас знает что World of Warcraft затягивает и что доктора считают игровую зависимость серьёзной проблемой. А вопрос вот в чем: может быть какие-то игры намеренно разрабатывались, чтобы заставлять вас играть в них, даже если вы не получаете от этого удовольствия?
+270
Unlimited IE one-time CSS expressions
3 min
1.5KВ поддержку дней CSS expressions на хабре
Думаю все, кто сталкивался с решением каких-нибудь проблем в IE<8 знает про CSS expressions и про «одноразовые» CSS expressions, которые применяются к элементу только один раз, тем самым не создавая постоянной нагрузки на процессор. Обычно это решается так:
Думаю все, кто сталкивался с решением каких-нибудь проблем в IE<8 знает про CSS expressions и про «одноразовые» CSS expressions, которые применяются к элементу только один раз, тем самым не создавая постоянной нагрузки на процессор. Обычно это решается так:
.my-class { behavior: expression(someMagick(), runtimeStyle.behavior = 'none'); }
+29
План интеграции на новом месте работы
2 min
5.9KРано или поздно каждому из нас приходится оставлять одну работу и отправляться на поиски другой более перспективной и высокооплачиваемой...
Большинство работодателей ценит в сотрудниках не только конкретные навыки, но и обучаемость — способность «осваивать целину». Поэтому чрезвычайно важно проявить себя грамотным специалистом с самых первых дней на новом рабочем месте. Одним из основополагающих качеств менеджера проектов является способность планировать и не только проектную работу, но и свои активности. Вот план интеграции, который я составил как раз перед переходом на новое место, во время двухнедельной отработки. Как говорится, готовь сани летом :)
Большинство работодателей ценит в сотрудниках не только конкретные навыки, но и обучаемость — способность «осваивать целину». Поэтому чрезвычайно важно проявить себя грамотным специалистом с самых первых дней на новом рабочем месте. Одним из основополагающих качеств менеджера проектов является способность планировать и не только проектную работу, но и свои активности. Вот план интеграции, который я составил как раз перед переходом на новое место, во время двухнедельной отработки. Как говорится, готовь сани летом :)
+29
+16
Профилактика SQL-инъекций
4 min
36KTranslation

SQL-инъекции (также известные как «Нарушение в целостности структуры SQL-запроса») являются одними из самых распространённых и наиболее опасных уязвимостей в вопросе безопасности. SQL-инъекции очень опасны, потому что они открывают двери хакерам в вашу систему через веб-интерфейс, и позволяют получить неограниченный доступ: например удалять таблицы, изменять базу данных, и даже получить доступ к внутренней корпоративной сети. SQL-инъекции это чисто программная ошибка, и не имеет ничего общего с хост-провайдером. Итак, вы занимались поисками безопасного JSP хостинга, PHP хостинга, или любого другого, вы должны знать, что за профилактику SQL-инъекций несут ответственность только разработчики, а не хост провайдер.
Почему же происходят SQL-инъекции
SQL-инъекции это очень распространённая проблема, но по иронии судьбы, их также легко предотвратить. SQL-инъекции так распространены, поскольку очень много мест, где может присутствовать уязвимость, и в случае успешной инъекции, хакер может получить хорошую награду (например полный доступ к данным в базе).
+44
Расшифровываем Javascript на примере файлового хостинга mediafire.com
8 min
6.1KВ настоящее время набирает популярность способ шифрования javascript на сайтах с помощью вложенных команд eval. Недавно я столкнулся с таким шифрованием на файловом хостинге mediafire.com. Шифрование было необычное, меня это заинтересовало и я решил понять, насколько хорошо данный метод работает.
Сайт mediafire.com позволяет скачивать файлы без каптчи и при этом, с недавнего времени, стал достаточно успешно защищаться от всевозможных автоматических роботов. Делает он это с помощью встроенного генератора кода javascript. Причем, код каждый раз создается новый, что затрудняет его эмуляцию автоматическими средствами.
В этой статье я расскажу о том, как можно очень легко обойти такую защиту без глубокого анализа шифрованного кода и создать автоматический скрипт загрузки файлов с mediafire.com.
Сайт mediafire.com позволяет скачивать файлы без каптчи и при этом, с недавнего времени, стал достаточно успешно защищаться от всевозможных автоматических роботов. Делает он это с помощью встроенного генератора кода javascript. Причем, код каждый раз создается новый, что затрудняет его эмуляцию автоматическими средствами.
В этой статье я расскажу о том, как можно очень легко обойти такую защиту без глубокого анализа шифрованного кода и создать автоматический скрипт загрузки файлов с mediafire.com.
+31
Управление финансами для предприимчивых людей
3 min
9.8KДобрый день.
Уважаемые читатели Хабра! Мы хотим представить вашему вниманию интернет-сервис по учету финансов для предприимчивых людей — Finobox.ru.

В юности (2009 г.) сервис назывался Looniesdesk, затем команда несколько поменялась, сервис был переделан, улучшен и запущен в эксплуатацию.
+17
IE9 preview
1 min
1.5KВот нам и показали IE9. От финала он, конечно, далёк, но посмотреть есть на что.
— Более быстрый, чем в IE8, JavaScript-движок.
— Поддержка некоторых фич CSS3: border-radius, RGBA, opacity, селекторы. К релизу обещают доделать ещё.
— Поддержка HTML5: новые элементы, перехлёст тэгов, изменено поведение script и style (теперь можно получить их текст через DOM), API для выделения текста.
— DOM L2 и немного DOM L3 (Events).
— Поддержка SVG.
— DirectX для рендеринга страниц.
— Улучшена производительность отладчика, добавлен профайлер HTTP.
Для того, чтобы зарабоали приятные дополнения, надо перевести IE в новый document mode — IE9, например, при помощи:
или
Полный список изменений
Пробуем
На работу установленного в системе IE никоим образом не влияет. Устанавливать можно не опасаясь повреждения системы.
— Более быстрый, чем в IE8, JavaScript-движок.
— Поддержка некоторых фич CSS3: border-radius, RGBA, opacity, селекторы. К релизу обещают доделать ещё.
— Поддержка HTML5: новые элементы, перехлёст тэгов, изменено поведение script и style (теперь можно получить их текст через DOM), API для выделения текста.
— DOM L2 и немного DOM L3 (Events).
— Поддержка SVG.
— DirectX для рендеринга страниц.
— Улучшена производительность отладчика, добавлен профайлер HTTP.
Для того, чтобы зарабоали приятные дополнения, надо перевести IE в новый document mode — IE9, например, при помощи:
<meta http-equiv="X-UA-Compatible" content="IE=IE9" />
или
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Полный список изменений
Пробуем
На работу установленного в системе IE никоим образом не влияет. Устанавливать можно не опасаясь повреждения системы.
+80
CSSDoc — формат комментариев для CSS
3 min
12KУже неоднократно видел утверждение, что CSS необходимо комментировать, чтобы потом было проще сориентироваться себе или тому, кто также поддерживает или будет в дальнейшем поддерживать ваш код. Но почему-то никто не предлагает использовать какой-то универсальный формат комментариев, который был бы понятен всем, хотя в программировании такое используется повсеместно: JavaDoc, JSDoc, PHPDoc и т.п.
Несложно догадаться, что рано или поздно кто-нибудь бы захотел использовать подобный формат комментариев в CSS и такой формат появился: CSSDoc. Спецификация пока что имеет статус черновика, но ничто не мешает начать пользоваться основными правилами уже сейчас.
Несложно догадаться, что рано или поздно кто-нибудь бы захотел использовать подобный формат комментариев в CSS и такой формат появился: CSSDoc. Спецификация пока что имеет статус черновика, но ничто не мешает начать пользоваться основными правилами уже сейчас.
+43
+41
Авторы расширений, хакеры браузера, встречайте js-ctypes
7 min
2.2KTutorial
Translation
Что такое (можете спросить вы) js-ctypes? Скажем, пишете вы расширение на джаваскрипте, и ему нужно обратиться к местному коду (native code). Например, weave-crypto приходится обращаться к библиотеке NSS. А ваше расширение может пожелать, например, вызвать напрямую NSPR, libc, или функции Win32. Прямо сейчас есть два выхода: либо использовать скриптуемые XPCOM-интерфейсы (обеспечиваемые libxul), либо написать и реализовать собственные XPCOM-интерфейсы, то есть поставлять двоичный код в своём расширении. Если первый вариант не годится, остаётся только второй, но тогда поставлять расширение становится заметно сложнее: приходится отдельно компилировать двоичный код для каждой из поддерживаемых платформ, чтобы упаковать его внутрь вашего кросс-платформенного xpi.
Ответом на эту трудность поэтому станет библиотека js-ctypes: она позволяет джаваскрипту вызывать местный код (написанный на Си) и манипулировать сишными типами данных, без использования XPCOM, и нет необходимости компилировать ни одну строку кода. Это означает, что вам не придётся определять XPCOM-интерфейсы, и что можно будет использовать разделяемые библиотеки (shared libraries), подобные libc, напрямую. Есть и побочный положительный эффект: мы большей частью устраняем потери на преобразование типов данных, свойственные XPConnect, так что выполнение кода может становиться быстрее. (Сравнение скорости я приведу в одной из последующих блогозаписей.) Библиотека js-ctypes будет поставляться с Gecko 1.9.3, а эта платформа (если номера версий не переменятся) станет фундаментом для Firefox 3.7.
Вы можете спросить: «Но как...?». И вот примеры (они проверялись на 32-битных Линуксах x86 и содержатне кросс-платформенные части):
Ответом на эту трудность поэтому станет библиотека js-ctypes: она позволяет джаваскрипту вызывать местный код (написанный на Си) и манипулировать сишными типами данных, без использования XPCOM, и нет необходимости компилировать ни одну строку кода. Это означает, что вам не придётся определять XPCOM-интерфейсы, и что можно будет использовать разделяемые библиотеки (shared libraries), подобные libc, напрямую. Есть и побочный положительный эффект: мы большей частью устраняем потери на преобразование типов данных, свойственные XPConnect, так что выполнение кода может становиться быстрее. (Сравнение скорости я приведу в одной из последующих блогозаписей.) Библиотека js-ctypes будет поставляться с Gecko 1.9.3, а эта платформа (если номера версий не переменятся) станет фундаментом для Firefox 3.7.
Вы можете спросить: «Но как...?». И вот примеры (они проверялись на 32-битных Линуксах x86 и содержат
+28
Как начать программировать с использованием WPF или Silverlight: Путь обучения для новичков
4 min
47KTranslation
Итак, вы новичок в WPF или Silverlight и желаете знать с чего вам начать? Здесь описан мой путь изучения “Как начать с WPF и Silverlight”. Я предполагаю, что вы знаете что из себя представляют эти технологии (на высоком уровне), но не знаете как использовать их.
+36
Конвертер RSS-лент в формат FictionBook
1 min
1.1KМне приходится тратить значительное время на дорогу до работы и обратно, что делать во время дороги? — Правильно, читать!
А что интересно читать? — Правильно, любимые RSS-каналы!
Так и родился сервис позволяющий конвертировать RSS-каналы в книгу, в формате FictionBook.
А что интересно читать? — Правильно, любимые RSS-каналы!
Так и родился сервис позволяющий конвертировать RSS-каналы в книгу, в формате FictionBook.
+29
Хостинг Javascript-библиотек
1 min
11KTranslation
Сегодня мы запустили новый сервис для веб-разработчиков — хостинг популярных JavaScript-библиотек на серверах Яндекса.
Используя загрузку библиотек из CDN Яндекса, вы получаете следующие преимущества:
- Снижается нагрузка на ваш сервер.
- Браузеры, следуя рекомендациям спецификации HTTP 1.1, обычно устанавливают не более 2 одновременных соединений с одним хостом (в современных браузерах — 6). Библиотеки загружаются с домена Яндекса, поэтому не блокируют загрузку данных с вашего домена.
- Правильное кэширование и использование gzip.
- Если пользователь уже посещал какой-либо сайт, который использует библиотеки Яндекса, ему не надо будет заново загружать файлы на вашем сайте — они сохраняются в кэше.
- При использовании нашего загрузчика вы получаете неблокирующую загрузку JS и Яндекс.Метрику в подарок.
- Каждая библиотека доступна как в сжатом виде, так и в стандартном (версия для разработки). Например, последнюю версию jQuery можно загрузить по такому адресу: http://yandex.st/jquery/1.4.2/jquery.min.js
Мы будем размещать свежие стабильные версии библиотек сразу после их выхода, старые версии будут сохраняться на неограниченный срок.
Новости проекта будут публиковаться в нашем клубе, там же вы можете задать вопросы и оставить отзывы.
Алексей Андросов и Леонид Хачатуров, ускоряем интернет

+79
Код, который приятно читать
2 min
3.7KХороший код
К хорошему коду много требований: он должен быть оптимальным, у него должны быть юнит-тесты, его должно быть легко переиспользовать, он должен соответствовать код-стандарту компании и духу языка. А ещё его должно быть приятно читать.
Я бы хотел рассказать о правилах, которые помогают мне делать код читаемым.
Основное правило
Я считаю, что читаемым является код, в который можно не вчитываться.
То есть, пары-тройки строк дожно быть достаточно, чтобы сказать, что делает класс или метод. Ещё пары-тройки — чтобы примерно сказать, как он это делает.
Прочие замечания
Я заметил, что есть ещё несколько довольно общих правил, которые делают код симпатичнее.
+53
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity