Pull to refresh
26
0
Акжан @akzhan

CTO, Release manager, Teamlead

Send message

Шейдеры и немного магии

Reading time1 min
Views1.1K
Привет!

В последнее время я «проникся» идеей создания custom-эффектов в Silverlight 3 beta/WPF. В качестве упражнения решил сделать эффект Джинна на Silverlight. Эффект Джинна — это эффект сворачивающегося окошка в Mac OS:



Для правильной работы демки вам понадобится… Silverlight 3 beta — справа ссылка на установку необходимого рантайма. Итак, вот что из этого получилось: демо (потягайте зеленый квадратик-лампу, нажмите Help).

Для тех, кому интересно узнать, как создавать свои собственные эффекты, и что именно стоит за Genie, я написал этот пост.

Авось, кому-нибудь когда-нибудь да пригодится :).

Отличного программирования, друзья!
Total votes 65: ↑40 and ↓25+15
Comments27

phpThread: нити в PHP? Запросто

Reading time2 min
Views2.1K
Если вы хотите научиться писать многопоточные приложения на PHP или здорово упростить себе жизнь — статья для вас.

Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
Читать дальше →
Total votes 75: ↑61 and ↓14+47
Comments78

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

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

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

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

Итак, первый (и, надеюсь, не последний) рецепт в моей поваренной книге JavaScript.
Перейти к рецепту
Total votes 112: ↑107 and ↓5+102
Comments37

Yslow 2.0

Reading time1 min
Views1.2K
Обновился замечательный аддон Yslow для Firefox.

Для тех кто в танке, этот плагин помогает выявлять узкие места на сайте влияющие на скорость загрузки.


Насколько я заметил список изменений таков:
1) Появились сеты для разных типов проверок.
2) Добавили инструменты — Jslint для проверки яваскрипта, Интеграция с сервисом Smush.it, который сжимает картинки на сайте без потери качества.
3) Улучшился дизайн.

Всем кто делает сайты, рекомендую установить если вы еще этого не сделали.

Источник
Обновиться
Total votes 31: ↑23 and ↓8+15
Comments15

Popup с затухающим фоном с помощью jQuery

Reading time8 min
Views43K
imageМногие из нас сталкивались с всплывающими окнами, когда при этом постепенно потухает фон. Взгляд пользователя невольно фокусируется только на той части экрана, где что-то требуется от этого самого пользователя. Достаточно полезно, не правда ли?

Конечно же, не претендую на какую-то новизну, и данная заметка будет больше полезна начинающим с jQuery (коим и сам являюсь), чем людям, имеющим существенный опыт с данным javascript фреймворком.

под катом пример и описание
Total votes 83: ↑63 and ↓20+43
Comments71

Исследование на тему замены стандартных кнопок

Reading time8 min
Views2.7K
В процессе работы над интерфейсом одного продукта, появилась надобность в изготовлении собственного дизайна кнопок. За это время код, который заменяет стандартную кнопку на требуемую несколько раз переписывался и в данный момент тоже далёк от идеала. Учитывая все текущие проблемы кросс-браузерности, за это время выяснились и получилось нижеописанное.

Допустим, что она должна выглядеть примерно так:


Читать дальше →
Total votes 81: ↑60 and ↓21+39
Comments113

Атомарная группировка, или Ни шагу назад!

Reading time8 min
Views16K

0. Присказка


В некотором царстве, в некотором государстве жил-был программист. Звали его, как полагается, Иван. Был он настоящим спецом, обладал всеми Тремя Великими Добродетелями Программиста, то есть был ленив, спесив и нетерпелив. Случилась в том царстве печаль великая: кризис. И выгнали Ваню с работы без выходного пособия. Горевал Ваня долго, а потом собрался с духом и разослал резюме по всему белу свету. Долго ли, коротко ли, вызвали Ваню на собеседование. Требований к соискателю было много, но главное — требовалось хорошо владеть регулярными выражениями. До собеседования — почти месяц, готовься — не хочу. Будучи человеком серьёзным, готовиться Иван решил обстоятельно. 3 недели и 3 дня он лежал на печи, почитывал Хабр и думал, как же неслыханно обстоятельно он будет готовиться. До собеседования остался 1 день. Ванюша мысленно обругал работодателей, которые назначают собеседование так скоро, что совсем подготовиться не успеваешь, слез с печи, сдал пивные бутылки и на вырученные деньги купил книжку по регексам. Читал он её до полного изнеможения, пока не отключился. Утром мы найдём сонную физиономию Ванюши лежащей, как на подушке, на этой самой книжке под Хабракатом.
Читать дальше →
Total votes 87: ↑86 and ↓1+85
Comments42

Asterisk – система компьютерной телефонии уровня предприятия

Reading time9 min
Views261K
Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium. Asterisk – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.

Дaлее
Total votes 111: ↑108 and ↓3+105
Comments67

Как можно снизить потребление оперативной памяти на VPS в 2 раза, ничего не меняя в настройках программ

Reading time3 min
Views33K
Взял VPS, построенный на OpenVZ. Поставил туда Debian Lenny и всякие программы (обычный LAMP, по сути). С точки зрения потребления ресурсов ничего почти не настраивал, вышло где-то 200М занятой оперативной памяти (сразу после старта).
Написал ulimit -s 1024 в /etc/init.d/rc ближе к верху. Перезагрузился. Потребление памяти на VPS упало более чем вдвое, стало около 100М.

Если у Вас VPS на Xen или аналогичных, то у Вас нет граблей, с которыми я тут боролся. Если на OpenVZ (Virtuozzo) со товарищи — у Вас, скорее всего, на VPS эти же грабли.

В статье — почему и как это работает.

Читать дальше →
Total votes 66: ↑62 and ↓4+58
Comments45

Прогрессивные технологии, как способ выжать из сервера максимум

Reading time5 min
Views12K

Вступление


Просто красивый rrdtool =)
Забавно, но когда программист разрабатывает какой-либо продукт, он редко задумывается над вопросом могут ли на одну кнопку в один момент времени нажать одновременно 2000 человек. А зря. Оказывается могут. Как ни странно но большинство движков, написанных такими программистами, очень плохо ведут себя под большими нагрузками. Кто бы подумал, а всего один лишний INSERT, не проставленный index, или кривая рекурсивная функция могут поднять load averages чуть ли не на порядок.

В этой статье я опишу как мы, разработчики проекта, сумели выжать из одного сервера с Pentium 4 HT / 512Mb RAM, максимум, держа одновременно 700+ пользователей на форуме и 120,000 на трекере. Да, проект этот — торрент трекер. Предлагаю сразу оставить в стороне разговоры о копирайтах и правах, мне это не интересно, что действительно интересно — это HighLoad.
читать дальше
Total votes 318: ↑314 and ↓4+310
Comments184

DNS Amplification (DNS усиление)

Reading time6 min
Views92K
Не так давно столкнулся с проблемой (и ее решением) учитывая актуальность этой темы в последнее время, а также то, сколько людей сейчас страдают от этой беды, решил объединить информацию в одну статью. Может быть кому-то еще она будет полезной.
image

Начало



Пару недель назад я заметил странную активность, направленную на мой DNS-сервер. Сразу скажу, что использую шлюз на Linux, соответственно там установлен DNS-сервер bind. Активность заключалась в том, что на порт 53 (DNS) моего сервера сыпалось по несколько UDP пакетов в секунду с различных IP-адресов:

10:41:42.163334 IP 89.149.221.182.52264 > MY_IP.53: 22912+ NS?. (17)
10:41:42.163807 IP MY_IP.53 > 89.149.221.182.52264: 22912 Refused- 0/0/0 (17)
Читать дальше →
Total votes 179: ↑179 and ↓0+179
Comments61

MySQL Performance real life Tips and Tricks

Reading time9 min
Views37K
Пообещал вчера написать статью о реальных случаях оптимизации БД MySQL.
Пришлось сегодня вставать утром пораньше чтобы воплотить обещанное в жизнь.
Централизованное управление мыслями поддерживать еще сложно, поэтому не судите строго за казусы и ляпсусы в моей статье.

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

В данной статье опишу несколько приемов, которые были использованы для приложения с 4млн+ пользователей и которое имея порядка 100млн+ хитов в сутки, а в конце опишу задачу, которая решалась недавно и может быть многоуважаемое сообщество предложит мне решения этой задачи более эффективное нежели то, к которому пришел я.

Читать дальше →
Total votes 147: ↑141 and ↓6+135
Comments93

Наследование шаблонов в Smarty

Reading time4 min
Views12K
Когда-то, давным-давно, мне пришлось использовать небезызвестный шаблонизатор Smarty. Сначала я, понятное дело, возмущался и кричал, какая же гадость эта заливная рыба Smarty, а потом «распробовал» и втянулся. Те удобства, которые он давал, с лихвой компенсировали мысли о том, что есть и более быстрые шаблонные движки.

Шаблоны я обычно строил с помощью инклюдов: в начале подключался header.tpl, в конце — footer.tpl, в середине ещё что-нибудь нужное. В целом разметка получалась довольно аккуратной, но не проходило ощущение, что не хватает чего-то важного. Окончательно понимание этого чего-то появилось, когда мне случилось написать простенькое приложение на Django. И это «что-то», как все поняли, оказалось наследованием шаблонов. Простая, как и всё гениальное, идея позволяла существенно упростить шаблоны и избавиться от дублирующих блоков.

А почему бы не реализовать подобный механизм в Smarty?
Total votes 65: ↑52.5 and ↓12.5+40
Comments54
12 ...
31

Information

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