Дело было вечером, делать было нечего… Дернуло меня поглядеть на QtScript, на котором пишутся плагины для Амарока, ну, думаю, просто смотреть неинтересно — надо чего-то написать. Ну, а так как я в это время слушал музыку именно из Контакта, так как не для кого не секрет, что там можно найти практически все, то было решено заменить совсем неудобный плеер контакта на Амарок, дабы была возможность нормально этим делом управлять посредством мультимедийныйх клавиш и да и просто для объединения в один плейлист композиций локальных и сетевых.
frexin @sindrom
Пользователь
Unlimited Detail — интересно, но есть у меня вполне конкретные сомнения…
9 min
8.8KНесколько дней назад проскочило видео по Hacker News (и спасибо ayambit за напоминание о них на Хабре) про компанию Unlimited Detail, которая обещает сделать самые современные карточки NVidia и ATI бесполезными и рендерить сцены в миллиарды точек на обычном процессоре (CPU), без 3D ускорения(!) вообще. Превышая возможности современных видеокарт в сотни раз (тысячи, по заявлениям авторов, которые я ниже оспорю).
Если кто еще не видел:
Сначала на всякий случай о том чего это такое, а потом о том, что у меня, как у программера, сомнения вызывает, что на нетбуках без 3D карт, скоро будут в Crysis 3 играть…
(дальше очень много слов и технических деталей)
Если кто еще не видел:
Сначала на всякий случай о том чего это такое, а потом о том, что у меня, как у программера, сомнения вызывает, что на нетбуках без 3D карт, скоро будут в Crysis 3 играть…
(дальше очень много слов и технических деталей)
+135
Немного про py2exe
4 min
128KЕсть такое приложение. Называется py2exe. Оно позволяет упаковать, сконвертировать программу на python в exe файл (ну, точнее, exe и еще кучку других). Зачем оно все надо? Ну, далеко не у всех пользователей windows установлен интерпретатор python с нужными библиотеками. А вот упакованная программа в идеале должна запуститься на любой windows-машине.
+42
«Твоё Радио» — ещё один бесплатный способ слушать last.fm-радио
2 min
1.1K
Как известно, сервис Last.fm предоставляет услугу персонализованного радио: выбираете исполнителя — слушаете похожих на него. Раньше эта услуга была бесплатной, теперь за это просят денег. Да, три доллара — это не так много, но
«Твоё Радио» — это
+44
Test Infected
5 min
4.7KВсе, все будут писать тесты
Уже 3 года прошло, с тех пор как я увидел свою первую красную полоску. Что меня дернуло начать писать тесты, уже не важно. Я начал собирать информацию, перечитал весь wiki.agiledev.ru и торжественно запустил свой первый тест на SimpleTest. Конечно, эти тесты были ужасны, да и архитектура тоже (в моем сегодняшнем понимании). Тогда я, наверное, словил большинство ошибок, но зато замечательно провел время :)
Потом перешел на PHPUnit — просто было интересно, чем он отличается от SimpleTest и что в нем такого «навороченного».
А lime — гадость. Чего ребята из Symfony в него так вцепились? Понимаю ветка 1.*, наследие и все такое. Но 2.0 можно было бы и на PHPUnit начинать.Да, мне это было интересно. Я активно писал тесты, даже честно пытался делать это перед тем, как писать код.
+44
Перегрузка функций в JS
4 min
57KКак известно, в JavaScript нельзя создать несколько функций, различающихся только списком параметров: последняя созданная перезапишет предыдущие. Про различие на уровне типов параметров говорить не приходится вообще. Обычно, если программист хочет создать функцию с множественным интерфейсом, он пишет что-то вроде такого:
Пока пример выглядит не очень страшно, однако интерфейсов может со временем стать заметно больше, тогда функция станет плохочитаема. Посмотрим, что можно с этим сделать.
- // getRectangleArea(x1, y1, x2, y2) или
- // getRectangleArea(width, height)
- function getRectangleArea(x1, y1, x2, y2) {
- if(arguments.length==2) return x1*y1;
- return (x2-x1)*(y2-y1);
- }
* This source code was highlighted with Source Code Highlighter.
Пока пример выглядит не очень страшно, однако интерфейсов может со временем стать заметно больше, тогда функция станет плохочитаема. Посмотрим, что можно с этим сделать.
+92
Opera Mini 5 beta 2 — теперь и для Windows Mobile
2 min
16K
В то время, как оперные разработчики готовили к выпуску новую версию Opera 10.50 для десктопов, отдел мобильной разработки тоже не сидел сложа руки и сегодня без особой помпы выкатил очередную версию Opera Mini 5 beta 2, на этот раз — для счастливых обладателей смартфонов под управлением Windows Mobile 5.х и 6.х версии. Казалось бы — зачем оно надо? Ведь для такой платформы как бы предназначена более функциональная версия Opera Mobile, да и популярность этой навсегда устаревшей платформы от редмондского гиганта оставляет желать лучшего. На самом деле есть несколько причин, зачем мы это сделали.
Во-первых, как это ни банально звучит, об этом нас просили сами пользователи. Ну не устраивает их штатный браузер, что тут поделаешь. Правда, при желании можно установить и версию Opera Mobile 10 бета 3, которая сможет выполнять всё то же самое, что и встроенный IE, только гораздо лучше (плюс ускоритель Турбо, естественно). Но по ряду причин многие предпочитают именно легковесную Opera Mini, пусть она даже и несколько ограничивает работу с нагруженными JavaScript страницами. Что ж, раз просят — почему бы не сделать. Тем более, что мы никогда не отказывались расширить число поддерживаемых устройств, и это уже во-вторых.
+20
Что нас ждет в WordPress 3.0 (обзор новых функций)
5 min
3.3KTranslation
Очередная версия самой популярной платформы для блогов WordPress 3.0 должна выйти 1 мая в один день с проведением конференции WordCamp в San Francisco. При этом окончательный вариант всех новых функций был утвержден и «заморожен» 1 марта. Таким образом, все новинки функционала стали известны, никаких дополнительных возможностей добавляться не будет, только работа на багами. Предлагаю почитать про набор самых основных и существенных изменений, которые грядут в WordPress 3.0. А там есть на что посмотреть!
+55
LinguaLeo.ru — освоение английского языка онлайн. Сделано в Таиланде!
2 min
5.1K
Сервис позволяет освоить английский язык через видео, аудио и тексты, созданные носителями языка. При этом используются удобные инструменты для освоения новых слов в контексте. Сервис создан для людей, которые хотят быстро развить восприятие на слух живой английской речи и увеличить словарный запас.
+134
Конкурс для читающих хабраюзеров
1 min
590
Я координатор проекта "Только для чтения" — коллективного блога о мире литературы и вокруг него. В ноябре у нас произошел неприятный инцидент с инвайтами и «черным пиаром» проекта, который мы не планировали.
+22
Паттерн проектирования «Декоратор» / «Decorator»
4 min
94KПочитать описание других паттернов.
Возложить дополнительные обязанности (прозрачные для клиентов) на отдельный объект, а не на класс в целом.
Для более детального понимания проблемы, рассмотрим конкретную ситуацию. Пусть имеется некоторый объект — «кнопка», принадлежащий классу объектов «Кнопка», на который понадобилось возложить дополнительные обязанности. Под обязанностями, в данном контексте, понимаются какие-либо особенности поведения объекта. В случае с кнопкой, можно рассмотреть поведение объекта при его отображении на экране. При этом, будем считать, дополнительными обязанностями — отображение рамки кнопки, надписи, иконки. Важно понимать, что все эти обязанности должны иметь возможность быть наложенными как одновременно, так и по отдельности. Очевидно, первое, что приходит на ум — порождение классов (механизм наследования). Для данной задачи возможно это и выход — расширить класс «Кнопка» семью (23-1 = 7) различными классами, сочетающими в себе всевозможные комбинации обязанностей. Это классы: «Кнопка_С_Надписью», «Кнопка_С_Рамкой», «Кнопка_С_Иконкой», «Кнопка_С_Надписью_И_Иконкой», «Кнопка_С Рамкой_И_Иконкой», «Кнопка_С_Надписью_И_Рамкой», «Кнопка_С_Надписью_И_Рамкой_И_Иконкой». А если таких обязанностей будет не три, а хотя бы десять, не говоря уже про неудобство работы с подобной структурой. Безусловно, порождение классов в таком случае — заведомо проигрышный вариант. Однако, из этой ситуации есть выход — паттерн «Декоратор».
Проблема
Возложить дополнительные обязанности (прозрачные для клиентов) на отдельный объект, а не на класс в целом.
Описание
Для более детального понимания проблемы, рассмотрим конкретную ситуацию. Пусть имеется некоторый объект — «кнопка», принадлежащий классу объектов «Кнопка», на который понадобилось возложить дополнительные обязанности. Под обязанностями, в данном контексте, понимаются какие-либо особенности поведения объекта. В случае с кнопкой, можно рассмотреть поведение объекта при его отображении на экране. При этом, будем считать, дополнительными обязанностями — отображение рамки кнопки, надписи, иконки. Важно понимать, что все эти обязанности должны иметь возможность быть наложенными как одновременно, так и по отдельности. Очевидно, первое, что приходит на ум — порождение классов (механизм наследования). Для данной задачи возможно это и выход — расширить класс «Кнопка» семью (23-1 = 7) различными классами, сочетающими в себе всевозможные комбинации обязанностей. Это классы: «Кнопка_С_Надписью», «Кнопка_С_Рамкой», «Кнопка_С_Иконкой», «Кнопка_С_Надписью_И_Иконкой», «Кнопка_С Рамкой_И_Иконкой», «Кнопка_С_Надписью_И_Рамкой», «Кнопка_С_Надписью_И_Рамкой_И_Иконкой». А если таких обязанностей будет не три, а хотя бы десять, не говоря уже про неудобство работы с подобной структурой. Безусловно, порождение классов в таком случае — заведомо проигрышный вариант. Однако, из этой ситуации есть выход — паттерн «Декоратор».
+35
Трехмерный движок для Флеша — Papervision3D. Как и с чем его едят
6 min
12KPapervision3D — это библиотека классов для ActionScript 3.0, которая позволяет создавать полноценные 3D флеш-ролики.
Таким образом пользователю не требуется качать какие-то альтернативные плагины (как это было с VRML, например), кроме собственно Flash Player'a.
Итак, что же повзоляет нам Papervision3D:
— Добавлять во флеш-ролик встроенные примитивы: Plane, Sphere, Cylinder, Cone, Cube, Paperplane, Arrow
— Импортировать модели созданные в 3D-редакторах, вместе с анимацией.
— Накладывать на объекты в качестве материалов однородные цвета, битмапы, мувиклипы и даже потоковое видео
— Использовать источники света
— Накладывать встроенные во флеш фильтры (Blur, Glow и т.п.) на 3D объекты
— Управлять отдельными вершинами и фейсами объектов. Пример
— Назначать на 3D объекты и материалы обработчики событий (клик, наведение мышки и т.п.)
Не стоит забывать, что Papervision3D требователен к ресурсам пользователя, так что не стоит загружать ролик большим количеством моделей и придерживаться максимального количества фейсов 3000
В данной обзорной статье я хочу рассказать немного о самом движке и показать его использование, на примере создания вращающейся сферы. Предполагается, что читатель знаком с основами программирования на ActionScript 3.0
+63
Свобода или страх. Делайте свой выбор
3 min
2.6KСегодня на хабре для меня получился занимательный микс из статей — волчьи будни и эффект бабочки. Вроде разные такие статьи, а обе зацепили, заставили думать. Причем поначалу я не могла собрать мысли воедино и понять, что же объединяет эти казалось бы разные статьи. И через некоторое время меня осенило – свобода самовыражения.
Это очень важный фактор в жизни каждого человека. Именно этого не хватает у нас – мы всегда чего-то боимся – того, что денег не хватит, что друзья не поддержат, что общество осудит. Мы живем по законам, которые задает большинство, и не можем стать самими собой, потому что боимся этой массы – этого большинства.
Это очень важный фактор в жизни каждого человека. Именно этого не хватает у нас – мы всегда чего-то боимся – того, что денег не хватит, что друзья не поддержат, что общество осудит. Мы живем по законам, которые задает большинство, и не можем стать самими собой, потому что боимся этой массы – этого большинства.
+124
Торренты, скайп и безопасность
3 min
9.6KДисклаймер: все нижесказанное — мои личные мысли, не ставящие целью дискредитировать упомянутые системы и их производителей.
Коротенько о себе: я занимаюсь сетевой безопасностью. 8 лет. Специализируюсь на cisco (CCIE Security).
Я сам настороженно отношусь к обоим системам (Торрент, Скайп). Но все никак не мог сформулировать, что же мне так не нравится. И вот сейчас я попробую по возможности объективно рассказать, что же меня тревожит.
Но для начала я напомню уважаемым хабрачитателям, что такое ботнет, с чем его едят и почему он так опасен.
Ботнет — объединение разрозенных компьютеров, находящихся под одним вредоносным управлением. Ботнеты делятся на активные и пассивные. Компьютеры в активном ботнете знают, что ими удаленно управляют. В пассивном — нет.
Как же компьютеры попадают в ботнет? Как правило, для этого используются трояны (устанавливаешь на компьютер одно, а параллельно тебе ставится незаказанное), рассылаемые с почтой, черви (самораспространяющийся по сети вредоносный код), программы на самозапускающихся флешках и т.д. Главная задача — установить на компьютер программу, которая будет «стучаться» (пытаться соединиться) изнутри межсетевого экрана наружу на хосты управления (call-home). Как только зараженный компьютер достукивается до сервера управления, по установленной сессии им можно поуправлять.
Коротенько о себе: я занимаюсь сетевой безопасностью. 8 лет. Специализируюсь на cisco (CCIE Security).
Я сам настороженно отношусь к обоим системам (Торрент, Скайп). Но все никак не мог сформулировать, что же мне так не нравится. И вот сейчас я попробую по возможности объективно рассказать, что же меня тревожит.
Но для начала я напомню уважаемым хабрачитателям, что такое ботнет, с чем его едят и почему он так опасен.
Ботнет — объединение разрозенных компьютеров, находящихся под одним вредоносным управлением. Ботнеты делятся на активные и пассивные. Компьютеры в активном ботнете знают, что ими удаленно управляют. В пассивном — нет.
Как же компьютеры попадают в ботнет? Как правило, для этого используются трояны (устанавливаешь на компьютер одно, а параллельно тебе ставится незаказанное), рассылаемые с почтой, черви (самораспространяющийся по сети вредоносный код), программы на самозапускающихся флешках и т.д. Главная задача — установить на компьютер программу, которая будет «стучаться» (пытаться соединиться) изнутри межсетевого экрана наружу на хосты управления (call-home). Как только зараженный компьютер достукивается до сервера управления, по установленной сессии им можно поуправлять.
+61
Несколько фишек для изучающих английский язык
1 min
48K1. Анонимные чаты: omegle.com, chatroulette.com
2. Сайты-помощники: kwiz.me, kimir.org, englishtips.org
3. Подкастинг: eslpod.com, effortlessenglish.com, npr.podcast.com, businessenglishpod.com,
4. Качаем фильмы/сериалы, затем субтитры к ним. Просматривать можно с замедлением в VLC плеере чтобы лучше переваривать. Еще рекомендую комик шоу, например Important Things with Demetri Martin — не пожалеете.
5. В скайпе ищем каких нибудь индусов со статусом SkypeMe и не стенсняясь знакомимся.
6. При прочтении какой-то книги или просмотра фильма неплохо бы подготовится таким образом: берем текст, устанавливаем длину слова и частоту употребления в тексте и запускаем, например, этот скрипт (PHP): pastebin.com/m7672c2a9
В итоге имеем дайджест слов большинство из которых вы уже знаете но остальные стоит подучить. И когда вы будете смотреть фильм или читать книгу вы автоматом поймете это слово.
7. Произношение слов — ставим в Google.translate режим Русский->English и в поле текста пишем английское слово — оно без перевода встанет справа вместе с флэшкой которое произносит слово. Также forvo.com, howjsay.com
8. Социальные сервисы ответов:
answers.yahoo.com, vark.com
9. Социальные сети для изучения языка:
livemocha.com, lingq.com, italki.com
10. Остальное:
nytimes.com, ecenglish.com, urbandictionary.com
allengl.narod.ru/top/phvTOP170.htm
Надеюсь каждый нашел для себя что-то полезное:)
2. Сайты-помощники: kwiz.me, kimir.org, englishtips.org
3. Подкастинг: eslpod.com, effortlessenglish.com, npr.podcast.com, businessenglishpod.com,
4. Качаем фильмы/сериалы, затем субтитры к ним. Просматривать можно с замедлением в VLC плеере чтобы лучше переваривать. Еще рекомендую комик шоу, например Important Things with Demetri Martin — не пожалеете.
5. В скайпе ищем каких нибудь индусов со статусом SkypeMe и не стенсняясь знакомимся.
6. При прочтении какой-то книги или просмотра фильма неплохо бы подготовится таким образом: берем текст, устанавливаем длину слова и частоту употребления в тексте и запускаем, например, этот скрипт (PHP): pastebin.com/m7672c2a9
В итоге имеем дайджест слов большинство из которых вы уже знаете но остальные стоит подучить. И когда вы будете смотреть фильм или читать книгу вы автоматом поймете это слово.
7. Произношение слов — ставим в Google.translate режим Русский->English и в поле текста пишем английское слово — оно без перевода встанет справа вместе с флэшкой которое произносит слово. Также forvo.com, howjsay.com
8. Социальные сервисы ответов:
answers.yahoo.com, vark.com
9. Социальные сети для изучения языка:
livemocha.com, lingq.com, italki.com
10. Остальное:
nytimes.com, ecenglish.com, urbandictionary.com
allengl.narod.ru/top/phvTOP170.htm
Надеюсь каждый нашел для себя что-то полезное:)
+152
Down Notifier — бесплатный сервис мониторинга работы сервера
1 min
1.1K«А этот сайт у тебя работает? А этот?»
Знакомы ли вам эти вопросы? Думаю да.
Мне не хватало простого как доска сервиса для определения, работает ли сайт или это проблемы моего соединения.
В общем-то ничего сложного в таком сервисе быть не может, поэтому я решил быстренько набросать его. И, чтобы не заморачиваться с хостингом (и его стабильностью :)), написал всë как приложение для гугль ежа.
Сварганил чтоб работало кое-как, показал друзьям и мне посоветовали добавить пару фич, которые мне показались приятными. Вот теперь решил показать сервис вам — ничего нового, зато он простой, бесплатный, ненапряжный и работает. ;)
Собственно сам сервис – Down Notifier.
В чем фишка:
1) бесплатный
2) быстрый (примерно нужно10 секунд на то чтоб подписаться на уведомление)
3) не требует регистрации
4) уведомление через email, twitter, xmpp, sms (про это чуть дальше)
5) проверка каждые 10 минут (возможно, потом будет меньше, сейчас все в режиме тестирования)
6) после проверки ресурса можно получить proof link на состояние.
7) отказоустойчивый (находится на серверах Google)
Про регистрацию хочу отдельно сказать: не знаю как вас, но меня от одной формы регистрации воротить начинает и хочется поскорей сбежать с такого сайта. Поэтому решил упростить ситуацию тем, что можно залогиниться, используя аккаунт гугля или твиттера (думаю людей у которых нет ни того ни того ОЧЕНЬ мало :) )
Насчет уведомления через SMS хочу сказать следующее: поскольку сервис бесплатный, то изощряться не стал и сделал возможность уведомлений через стандартные шлюзы.
Этот пункт в настройках пользователя представлен как «Additional email».
Вот тут есть список шлюзов (правда он устаревший, насколько он актуален я ответить не могу).
Знакомы ли вам эти вопросы? Думаю да.
Мне не хватало простого как доска сервиса для определения, работает ли сайт или это проблемы моего соединения.
В общем-то ничего сложного в таком сервисе быть не может, поэтому я решил быстренько набросать его. И, чтобы не заморачиваться с хостингом (и его стабильностью :)), написал всë как приложение для гугль ежа.
Сварганил чтоб работало кое-как, показал друзьям и мне посоветовали добавить пару фич, которые мне показались приятными. Вот теперь решил показать сервис вам — ничего нового, зато он простой, бесплатный, ненапряжный и работает. ;)
Собственно сам сервис – Down Notifier.
В чем фишка:
1) бесплатный
2) быстрый (примерно нужно10 секунд на то чтоб подписаться на уведомление)
3) не требует регистрации
4) уведомление через email, twitter, xmpp, sms (про это чуть дальше)
5) проверка каждые 10 минут (возможно, потом будет меньше, сейчас все в режиме тестирования)
6) после проверки ресурса можно получить proof link на состояние.
7) отказоустойчивый (находится на серверах Google)
Про регистрацию хочу отдельно сказать: не знаю как вас, но меня от одной формы регистрации воротить начинает и хочется поскорей сбежать с такого сайта. Поэтому решил упростить ситуацию тем, что можно залогиниться, используя аккаунт гугля или твиттера (думаю людей у которых нет ни того ни того ОЧЕНЬ мало :) )
Насчет уведомления через SMS хочу сказать следующее: поскольку сервис бесплатный, то изощряться не стал и сделал возможность уведомлений через стандартные шлюзы.
Этот пункт в настройках пользователя представлен как «Additional email».
Вот тут есть список шлюзов (правда он устаревший, насколько он актуален я ответить не могу).
+73
HABRAтопик в PDF
2 min
1.6KЭто еще не полноценный сервис, но…
Уже несколько раз проблема перевода html-страницы в pdf проскакивала в постах на хабре. К сожалению, все предложенные решения меня не устроили и пришла идея сделать свой сервис.
Так появилась "Сохраняшка".

Уже несколько раз проблема перевода html-страницы в pdf проскакивала в постах на хабре. К сожалению, все предложенные решения меня не устроили и пришла идея сделать свой сервис.
Так появилась "Сохраняшка".

+126
Flattr: Новая система онлайн-платежей от создателя The Pirate Bay
1 min
2.5KПетер Сунде, один из основателей всем известного торрент-трекера The Pirate Bay, занялся созданием новой системы, призванной переосмыслить оплату цифрового контента.
Flattr (игра слов flatter — угождать, льстить — и flat rate — равная стоимость) представляет собой систему так называемых социальных микроплатежей: пользователь оценивает понравившийся ему контент одним нажатием. Схема работы очень похожа на Digg — создатели и распространители контента смогут поместить на свой сайт кнопку со счетчиком нажатий, каждое из которых — небольшая часть регулярно пополняемого баланса пользовательского Flattr-аккаунта.
Flattr (игра слов flatter — угождать, льстить — и flat rate — равная стоимость) представляет собой систему так называемых социальных микроплатежей: пользователь оценивает понравившийся ему контент одним нажатием. Схема работы очень похожа на Digg — создатели и распространители контента смогут поместить на свой сайт кнопку со счетчиком нажатий, каждое из которых — небольшая часть регулярно пополняемого баланса пользовательского Flattr-аккаунта.
+81
Делаем простое веб приложение на Spring Framework MVC
13 min
253K
В данной статье я хочу рассказать начинающим Java разработчикам, как написать простое веб приложение, используя популярный фреймворк Spring Framework.
При разрабокте приложения мы будем использовать утилиту Ant для автоматизации действий и изучим, как писать простой тест с помощью библиотеки JUnit. Весь код будем писать в Eclipse IDE.
Статья написана на основе первой части руководства «Introduction to Spring MVC». Вам достаточно иметь лишь общее представление о Spring, чтобы прочитать статью с пользой.
Так что милости просим :)
+30
QUnit. Тестирование javascript кода
5 min
64K
Самым нетерпеливым сразу ссылки:
Официальная документация на сайте jquery: docs.jquery.com/QUnit
Реальные примеры тестов (для модулей jquery): view.jquery.com/trunk/jquery/test/unit
Руководство для начинающих (англ): www.swift-lizard.com/2009/11/24/test-driven-development-with-jquery-qunit
Система распределенного тестирования (гениально и просто): testswarm.com
Под катом информация о преимуществах юнит-тестирования применительно к js и разбор возможностей библиотеки на примерах.
+65
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity