Pull to refresh
17
0
Andrewus @Andrewus

Head of platform & devops lead

Send message

Масштабирование веб-приложений с помощью HMVC

Reading time13 min
Views18K
Последние десять лет мы наблюдаем второй цикл веб-дизайна – сайты превращаются в приложения и уже практически не появляется новых проектов, не обладающих некой долей интерактивности. Увеличение сложности ПО, разрабатываемого для интернета, вызвало необходимость в структурированном и взвешенном проектировании приложений.

На сегодняшний день наиболее часто используемым паттерном проектирования сайтов является Модель-Вид-Контроллер (MVC). Повсеместное его использование отчасти вызвано успехом и популярностью фреймворка Ruby on Rails. Сейчас MVC является практически синонимом веб-разработки среди всех платформ.

При выполнении задач, активно нагружающих процессор, современные сайты все больше полагаются на выделенные ресурсы. Этому, в частности, поспособствовало открытие компаниями Amazon и Google облачных сервисов, которые позволяют разработчикам существенно уменьшить нагрузку на процессоры их собственных серверов. Каждый сервис обычно проектируется в виде отдельного элемента ПО, который запускается внутри своего домена и использует свои собственные ресурсы.

Когда имеешь дело со скромными бюджетами, обычно довольно сложно убедить клиентов в преимуществах финансирования более чем одного завершенного фрагмента программного обеспечения. Как показывает мой опыт, множество из них придерживаются мнения, что масштабируемость не является актуальной задачей. Они «с нетерпением ждут того дня, когда придется этим обеспокоиться».

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

Проектируем рейтинговое оценивание

Reading time5 min
Views1.3K
Часто требуется реализовать возможность рейтингового оценивания того или иного объекта (заметки, комментария, цитаты, фотограммы, видеоролика и т. д.) посетителями сайта. Как это запрографировать?

Прежде всего мы имеем объект оценивания и субъект оценивания. Последним могут быть, например, зарегистрированные пользователи, незарегистрированные пользователи (гости) и пр.

Для того, чтобы обеспечить слабую связанность конкретных сущностей предметной области, к которым мы привязываем возможность рейтингового голосования, с модулем, реализующим нашу задачу, мы выделяем отдельные классы для объекта (Rating_Object) и субъекта (Rating_Subject). Оба эти класса — конкретные и реализованы как active record. Чтобы иметь возможность привязывать всяческие статьи и фотограммы к экземплярам Rating_Object, мы предусматриваем интерфейс Rating_Ratable:

interface Rating_Ratable {
    /**
     * @return Rating_Object
     */
    public function asRatingObject();
}


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

Рейтрейсер на JavaScript

Reading time8 min
Views21K
TitleImage

Знаете ли вы что такое рейтрейсер? Это программа которая рисует трёхмерную сцену на экране так, как её бы увидели вы. Конечно, не совсем так, но некоторые рейтрейсеры умеют рисовать очень правдоподобные картинки, например как в "Аватаре".

Идея рейтрейсера очень простая и в этой статье я раcскажу как устроен этот алгоритм и даже напишу его на JavaScript. Картинки и пример прилагаются.

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

Двадцатка лучших веб-шрифтов

Reading time9 min
Views779K
Top 20 Fonts

Сейчас самое время повышать уровень дизайна своих работ с помощью веб-шрифтов


Без преувеличения, сейчас сетевая типографика переживает захватывающий период своей жизни. Недавние технологические скачки приблизили нас еще на шаг ближе к типографической нирване в интернете. Шаг, которого все так долго ждали.

Свобода использования веб-шрифтов вне безопасного списка на всех ведущих ОС стала возможной, по большому счету, благодаря трем основным, почти одновременным технологическим факторам: широко распространенной поддержке правила @font-face в браузерах; появлению таких «шрифтохранилищ» как Typekit и Fontdeck; создание нового формата шрифтов — архивированного файла шрифта WOFF.

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

Регулярная ловушка

Reading time2 min
Views3.4K
Допустим, мы хотим проверить регулярным выражением, что в строке есть хотя бы одна цифра. Пишем код:

<script>

var digits = /([0-9])+/g;

function has_digit(s) { return digits.test(s); }

</script>


Этот код неверен.
Вам очевидно — почему? Если нет — добро пожаловать под кат!

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

Как быстро проверить Linux сервер на предмет взлома

Reading time4 min
Views128K
Примерно два года назад я арендовал у одного немецкого хостера не очень мощный сервер на базе Centos 5.2. На нём живут несколько вебпроектов, приносящих некоторую прибыль, и поэтому, я стараюсь присматривать за ним по мере возможности.
На Centos есть стандартный анализатор логов Logwatch, который запускается ежедневно по крону, анализирует содержимое /var/log, делает сводный отчет и присылает его по электропочте. В один прекрасный день я обнаружил в этом отчете запись:

--------------------- yum Begin ------------------------ 
 
 Packages Installed:
    lzo2 - 2.02-3.el5.rf.i386
    dnstracer - 1.8-1.2.el5.rf.i386
    openvpn - 2.0.9-1.el5.rf.i386

---------------------- yum End -------------------------


В тот момент меня она очень смутила, так как в предыдущий день на сервер я не логинился и тем более ничего не устанавливал. Первое, что пришло в голову — сервер был скомпроментирован. Себя я считал уверенным пользователем Linux, однако я растерялся. Благо в тот момент в icq был мой бывший коллега, лучший системный администратор, которого я знаю, и просто очень хороший человек.
Он помог быстро проверить систему. В результате у меня сформировалось краткое HowTo о том, как быстро проверить свой сервер на предмет взлома. Уверен, что многим Храброчитателям оно будет полезно. Предполагается, что пользователь знаком с консолью Linux/Unix.

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

О том, как у меня украли домен, а я украл его обратно

Reading time11 min
Views54K
Уважаемые хабравчане! Истории, одна из которых произошла со мной, случаются сплошь и рядом, вот только концовка в моем случае довольно редкая.
По определенным соображениям в данной статье я не буду указывать домен и имя реселлера. Тех, кто сможет их опознать, убедительно прошу в комментариях не обнародовать.
Читать дальше →

jPlayer — плагин для проигрывания аудио и видео

Reading time2 min
Views57K
imageЯ уже писал про скрипт audio.js, позволяющий проигрывать аудио файлы использую возможности html5 и flash. Пост был встречен хорошо, поэтому сейчас я хочу рассказать про jPlayer — jQuery плагин для проигрывания аудио и видео.
Читать дальше →

Генерация изображения с waveform из mp3 файлов с помощью PHP

Reading time3 min
Views11K
Хотел бы поделиться одним из способов внедрения проигрывателя аудиофайлов для сайтов, использующих jQuery. А именно — плеером в стиле популярного сервиса Soundcloud, сделанном на HTML+CSS+JS. В догонку к недавней статье об интересном плеере jPlayer.

Сам плеер состоит из jPlayer'а, некоторого количества нехитрой верстки, и главного компонента — картинки с waveform проигрываемого файла (это наглядная картинка, на которой изображены амплитуды сигнала, отложенные по шкале времени).

image

С результатами этого допиливания можно ознакомиться, скачав архив со всем необходимым: http://test.dis.dj/wave/ (там же есть демка интерфейса плеера и архив с ним).
Читать дальше →

Новые уязвимости доступа к файлам в PHP

Reading time8 min
Views30K
Какой-нибудь год назад все просто с ума сходили от Error-based MySQL, а unserialize казался чем-то сложным и не встречающимся в реальной жизни. Теперь это уже классические техники. Что уж говорить о таких динозаврах как нуль-байт в инклудах, на смену которому пришел file name truncated. Исследователи постоянно что-то раскапывают, придумывают, а тем временем уже выходят новые версии интерпретаторов, движков, а с ними – новые баги разработчиков.
По сути, есть три метода найти уязвимость: смекалка (когда исследователь придумывает какой-нибудь трюк и проверяет, работает ли он на практике), анализ исходного кода и фаззинг. Об одном интересном китайском фаззинге и его развитии с моей стороны я и хочу рассказать.

Список функций и результаты проверки
Читать дальше →

Текущее состояние инструментов. Взгляд пользователя

Reading time4 min
Views2.3K
Предупреждение: Эта статья вас ничему не научит. Это очень высокоуровневый взгляд, мои мысли, моя рефлексия на вопрос, который для меня важен + небольшое этнографическое исследование по графическим клиентам git-а.

Поговорим о распределенных системах управления версиями.

CVS был грустным, медленным, неатомарным („ничего не трогайте, я коммичусь“), зато с нормальным клиентом в Эклипсе.

SVN был медленным и поначалу веселым, но с появлением первой ветки тоже грустным („ничего не коммитьте, я мержусь“), с двумя разными клиентами в Эклипсе, баги которых нежно дополняли друг друга.

Тогда я выучил git. Git — это такой нелогичный набор утилит командной строки, в котором ежедневные операции выполняются последовательностью из двух–четырех команд.
Читать дальше →

По следам статьи «Сборник советов и фактов по оптимизации PHP-скриптов»

Reading time2 min
Views2.7K
Вчера, прочитав пост "Сборник советов и фактов по оптимизации PHP-скриптов", побывал в недоумении от некоторых пунктов статьи. Очень часто по работе приходится сталкиваться с крупными проектами. Последние 5 лет я работал с высокими нагрузками и получил, как мне кажется, хороший опыт их разработки и поддержки. Не хочу начинать холивары и в деталях расписывать все тонкости оптимизации проектов. Я лишь хочу высказать свою точку зрения на некоторые озвученные в статье пункты и, если Хабрапользователь меня поддержит, с огромным удовольствием эта статья будет началом цикла статей по оптимизации.

Самое главное правило, которое надо помнить при оптимизации: преждевременная оптимизация — это корень всех бед.

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

Будущее веб-стандартов

Reading time11 min
Views6.7K
image

Джеффри Зельдман предсказывает захватывающую эру в веб-дизайне


Вопреки общему мнению фраза «Веб 2.0» не была придумана Тимом О'Рейлли, и уже с самого начала она не означала, что это веб-приложения, такие как Facebook.com или Twitter.com, которые дают возможность людям (не профессионалам в интернете) делиться информацией онлайн.

Больше чем десятилетие назад Дарси Ди Нуччи (англ. Darcy DiNucci) предсказывала: «Интернет, который мы знаем сегодня и загружаем в браузер как статический экран, только зародыш будущей Паутины. Мы видим только первые проблески Веб 2.0 и просто начинаем наблюдать за его развитием. Интернет будет подразумевать под собой не только тексты и графику, но и механизм транспортировки — некий эфир, по которому происходят согласованные действия. Веб появится на экранах компьютера, в телевизоре, на приборном щитке автомобиля, в мобильном телефоне, в играх, и, возможно, даже в микроволновой печи.» — Дарси Ди Нуччи (1999), «Будущее разбитое на куски».
Читать дальше →

Сборник советов и фактов по оптимизации PHP-скриптов

Reading time9 min
Views45K
image Эту статью давно стоило переписать (слишком много «экономии на спичках»), но руки не доходят. Пускай весит и напоминает о том, как мы глупы в молодости.
Одним из основных критериев успешности любого интернет-ресурса является скорость его работы и с каждым годом пользователи становятся всё более и более требовательными по этому критерию. Оптимизация работы php-скиптов — это один из методов обеспечения скорости работы системы.
В этой статье я бы хотел представить на суд общественности свой сборник советов и фактов по оптимизации скриптов. Сборник собирался мною достаточно долго, основан на нескольких источниках и личных экспериментах.
Читать дальше →

Динамический favicon или отображаем карму, не обновляя страницу

Reading time5 min
Views12K
image
У каждого из нас, полагаю, в любимом браузере постоянно открыты несколько вкладок одновременно. Не раз бывают случаи, что и заголовка вкладки не видно — лишь favicon'ки. Но часто они информации, кроме как отображения логотипа сайта, не дают. И, наверное, зря. Но мы постараемся и здесь использовать это место (целых 16px*16px!) так, как хотим. По крайней мере, будем знать, как это можно сделать.
Читать дальше →

Краткий мануал по участию в программе «Старт» (1 млн.р. для вашего проекта)

Reading time10 min
Views7.8K


Наверное многие из участников хабра-сообщества слышали о конкурсе «СТАРТ», проводимым Фондом содействия развитию малых форм предприятий в научно-технической сфере (по народному, Фондом Бортника).

Суть конкурса — безвозмездное субсидирование стартапов в различных отраслях (ИТ, медицина, машиностроение и тд.) размером 1млн. рублей в первый, с возможность продолжения и получения 2млн.р. во второй и 3 млн.р. в третий год. В первый год деньги даются приблизительно 20% проектам, которые подали заявку (если точнее, 107 из 515 проектов в 2010г).

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

Участие в тендере на разработку сайта (часть 2)

Reading time10 min
Views19K
Вторая часть материала о том, как правильно участвовать в тендере на разработку сайта. Я публикую их одновременно, поскольку я написал единый большой материал, который в один пост не влез.

Первая часть материала.

Во второй части мы поговорим о презентации предложения, подведении итогов и всяких полезных советах.
Читать дальше →

Участие в тендере на разработку сайта (часть 1)

Reading time18 min
Views55K
Привет, хабр! Довольно давно я опубликовал первый материал «Организация активных продаж в веб-студии» из запланированного цикла про маркетинг и продажи в веб-студиях. До написания второго материала руки доходили очень долго, но я таки собрался и завершил его. Надеюсь, следующие материалы цикла будут выходить более оперативно.

В основу данного обзора легли различные исследования рынка веб-разработок, общение с руководством крупных игроков рынка, мой личный опыт работы «в поле» в высоком ценовом сегменте рынка, а также опыт консультирования ряда студий.

Итак, сегодня я хотел бы поговорить непосредственно о самом процессе продажи в веб-студии, а именно – об участии в тендере на разработку сайта. Даже когда заказчик не объявляет о проведении тендера в открытую, в подавляющим большинстве случаев вы все равно будете соревноваться с другими компаниями, в которые был отправлен запрос – вариант «скрытого тендера».

Тендеры бывают очень разные, но здесь я попытался обобщить наиболее важные моменты, применимые к любому проекту и любому клиенту. Ну и как обычно, постарался включить полезные нюансы, чтобы читать было интересно и крутым профессионалам в области продаж.

Давайте разобьем процесс организации продажи на основные этапы, а потом подробно обсудим каждый их них:
  1. Брифинг, уточнение задания;
  2. Подготовка и состав предложения;
  3. Конкурентная разведка;
  4. Презентация предложения;
  5. Подведение итогов и «after party».
Читать дальше →

Launchlist для вашего сайта

Reading time2 min
Views12K
imageЗдравствуйте, уважаемые Хабравчане.
Хотим опубликовать результат нашего небольшого исследования.

Суть эксперимента

Существует довольно много сайтов, в том числе региональных, где народ обсуждает работы студий web-дизайна, а так же разработанные ими сайты.
Иногда такие обсуждения приводят к закидыванию оппонентов какашками по поводу деталей реализации.
Согласитесь, обидно, когда большая (не на один месяц!) работа, в пух и прах разносится школьниками критиками, из-за мелочей в юзабилити, лени, или просто из-за небольшой забывчивости разработчика.

Мы промониторили несколько десятков подобных обсуждений за последние несколько месяцев и выявили следующее…
Читать дальше →

UVoiceMe — сервис интеграции шлюзов IP-телефонии

Reading time4 min
Views1.5K


IP-телефонией уже никого не удивишь, многие пользуются услугами Skype, SipNet, TelMe и многих, многих других. Объединив усилия с единомышленниками, решили не повторять существующие решения, а создать сервис для интеграции уже существующих провайдеров Интернет-телефонии.
Зачем? Основная задача нашего сервиса – собрать воедино всех провайдеров, и дать возможность использовать одновременно разные шлюзы по самым выгодным тарифам на данное время и по данному направлению.

В топике я расскажу о том, было за «кулисами»: о выбранной архитектуре, приятных решениях и инструментариях разработки. А самых любознательных хабраюзеров ждет небольшой подарок.
Читать дальше →

Information

Rating
2,848-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity