Search
Write a publication
Pull to refresh
0
0
Алексей Мелихов @HoochieMen

Web-developer

Send message

Правильное REST кэширование

Reading time6 min
Views6K
Пусть мы хотим написать свой хабрахабр с блекджеком и прочими прелестями. Страница статьи у нас стостоит из 3 объёмных блоков:
1. собственно текст статьи. меняется очень редко.
2. дерево комментариев. меняется относительно часто, но со временем всё реже и реже.
3. прямой эфир. небольшой, но меняется очень часто.

Допустим, что страница с этой статьёй доступна по адресу ?article:right.cache
Но внутрь неё мы не будем помещать никакого контента, а вынесем его в отдельные ресурсы, как это обычно делается со скриптами и стилями. Внутри ?article:right.cache будет лишь индекс подключаемых ресурсов с версиями.

?article:right.cache/content/version:123
?article:right.cache/comments/time:2010-12-01
?live/time:2010-12-01
?style:article/version:666
?script:article/version:333

Указание версии позволяет задать для ресурсов жёсткое кэширование. А для индексного файла, наоборот, зададим необходимость проверять при каждом запросе изменился ли он.

Такая организация гарантирует нам, что при появлении новых комментариев не придётся грузить статью заново. И наоборот, при изменении статьи не надо будет перегружать всё дерево комментариев. А уж про то, что из-за часто меняющегося прямого эфира нам не надо по новой грузить весь контент, и заикаться не стоит ;-)

Важно, чтобы поисковики видели ссылки на ресурсы и могли их проиндексировать. Однако, из поиска люди будут приходить на конкретный ресурс и даже на конкретную его версию. Соответственно, ресурс должен определять загружен ли он по прямой ссылке и если это так, то после загрузки клиентскими средствами редиректить на индекс. Если актуальная версия ресурса не изменилась, то он потом будет взят из кэша. Если же изменилась — будет загружена новая версия. Не такая уж страшная беда, на самом деле ;-)

Реализации с использованием фреймов и аякса довольно банальны, так что воспользуемся хтмл-инклудами.
Читать дальше →

Шаблонизатор на php

Reading time5 min
Views9.2K
Вообще писать особо не умею, обычно выходит только код, но постараюсь :)
Вот не прижилось во мне свойство использовать чужые готовые решения при разработке сайтов и по этому многое пишу сам, возможно по аналогии, но зато с полным пониманием и надеждой на то, что в будущем смогу разобраться в этом коде. Как-то получил вопрос мол зачем пишешь свой движок если есть куча готовых, бери и модернизируй для своей цели: подключай модули, настраивай и забивай бд. Ответить по сути не смог, но идею передал – нравится мне кодить да и вообще разбираться в новом.
Ну собственно о чём я. В очередной переделке своего движка решил уже написать что-то вроде шаблонизатора. Раньше был вариант, но настолько не удобный, что приходилось много править, за многим следить.

Почитал статьи на эту тему и как-то ничего нового не нашёл, кроме одной реализации.
Читать дальше →

Параллельный импорт данных

Reading time8 min
Views3.6K
Представим, что у нас есть некоторый набор задач, допускающих возможность параллельного выполнения. К примеру, нам нужно организовать RSS-агрегатор, обновляющий через заданный промежуток времени все свои ленты. Понятно, что основное и при этом вполне ощутимое время будет уходить на загрузку данных с удалённого источника. Учитывая это, организация такого импорта путём последовательной загрузки лент лишена смысла, так в случае сколь-либо большого количества лент, импорт не будет укладываться в отведённые ему сроки.
Читать дальше →

Метод прогрессивного джипега

Reading time1 min
Views18K
Мне очень понравился метод, который когда-то давно описал Лебедев (может и не он придумал, не важно). Метод описывает принципиально другой подход к разработке проектов.
image
Заключается он в том, что проект создаётся таким образом, что бы в любую единицу времени можно было его показать заказчику. Это значит, что в самом начале работы следует заложить самый базовый функционал и потом, позже, добавлять мелкие детали и работать над ними.
Это очень помогает во многих случаях. Например, если заказчик просит уже через неделю-две показать наработки по проекту или если сложно уложиться в заданные сроки. К тому же в этом случае можно будет сразу увидеть всю картинку целиком, и, возможно, окажется, что часть заложенного ранее функционала просто не нужна в этом проекте или в этом релизе.

Кстати, такой подход полностью соответствует подходу, описанному в книге Getting Real. Очень советую её почитать людям, которые хотят создать какой-нибудь стартап или просто занимаются созданием крупных проектов.

Что вы думаете по поводу метода прогрессивного джипега?

Место под солнцем для нового стартапа

Reading time6 min
Views39K
Недавно мы опубликовали историю появления на свет LinguaLeo.ru. Сервис запустился в бета-версии 1 марта. Меньше чем через месяц команда разработчиков возвращается в Москву. Но нам жаль просто так уезжать с острова Ко Чанг — уж очень много было вложено в создание комфортных условий для работы. Поэтому мы хотим поделиться своими впечатлениями, каково это — вести разработку на острове в Таиланде, и в подробностях рассказать, с чем придется столкнуться тем, кто отважится на авантюру и отправится в тропики, чтобы целиком посвятить себя реализации задуманной идеи. И объявляем акцию: мы передадим наше солнечное место хорошим ребятам с новым интересным стартапом!

091 -- DSC_9057
Читать дальше →

Синхронизация контактов телефонов с Ubuntu One

Reading time1 min
Views2.5K
imageМартин из команды разработчиков Ubuntu One рассказал о планах команды.

Он сообщил, что в ближайшее время они собираются сделать доступной синхронизацию контактов мобильных телефонов с облачным сервисом Ubuntu One. Для этого был найден партнёр: компания Funambol, которая имеет значительный опыт в разработке сервисов синхронизации мобильных устройств, а кроме того, «разделяет взгляды Canonical на свободное ПО».

Мартин отмечает, что Funambol обладает хорошим потенциалом, и их ПО позволяет с помощью модулей (плагинов) синхронизировать практически все основные платформы, хранящие контакты: Thunderbird, Outlook, Mac OS X Mail и т. д.
Но это, к сожалению, не бесплатно

Как открыть студию без стартового капитала

Reading time5 min
Views76K
Здравствуйте коллеги!
Представляю вам некую «шпаргалку» для будущих руководителей студий.

У многих появляется желание открыть свою студию, но есть мысли, которые вас останавливают. Это «нет инвесторов», «нет клиентов», «не знаю как буду рекламироваться» и многие другие. Некоторые из них мы разберем в этой статье.

Открыть свою студию можно при любых условиях и исходных данных, в том числе и не имея стартового капитала. Главное – наличие твердого желания и готовности тратить все свое время и силы на развитию. Правда, проблем в этом случае может быть чуть больше, но зато и ценного опыта набежит с избытком.
Если денег нет, а счастья хочется… (с)
Читать дальше →

Singleton и Late static binding

Reading time3 min
Views8.2K
Количество Singleton'ов в проекте зачастую прямо пропорционально его сложности и размеру. Естественно, что описывать закрытый конструктор, статическое свойство-объект и метод его получения для сколь-либо ощутимого количества классов немного утомительно, да и пожалуй неверно. Отсюда встаёт вопрос: как «вынести за скобки» реализацию Singleton'а?
Читать дальше →

Поднимаем софтверный бизнес

Reading time8 min
Views1.9K
WEBO SoftwareЭто вторая статья о становлении софтверного (интернет-) бизнеса в России (первая тут). В ней я собираюсь раскрыть некоторые ключевые моменты адаптации продукта под рынок (под требования пользователей), о преодолении тенологической пропасти, и чуть-чуть о реалиях российского бизнеса.

Данный топик хочу приурочить к тому, что год назад (может, чуть раньше или чуть позже) появился продукт WEBO Site SpeedUp (ранее Web Optimizer). Мысли немного сумбурны, но, видимо, для каждого направления все сильно специфично, поэтому ценными будут только общие идеи, направления и подходы к решению проблем (в чем я искренне надеюсь :). Здесь и далее речь идет о создании коробочного решения (а не софтверном аутсорсе).
Читать дальше →

Будущее Интернета. Кто творит историю, и можем ли мы быть среди них?

Reading time3 min
Views914

I. Начало


2009-2010 годы стали началом больших перемен. Интернет уверенно переходит в режим Реального времени. И это ярко показывают все крупнейшие «игроки рынка» — процессы в FriendFeed, Delicios, Wordpress, Digg, ситуация с Twitter, глобальные перемены в Facebook, запуск Google-ом мгновенной индексации и многое другое. Но это только начало Новой информационной эпохи Интернета. Так что же будет дальше?
Дальше будет следующий, логичный и закономерный шаг эволюции.
Сегодня, пока многие думают, что делать с гигантским объемом информации, которую создают и читают более 1,7 млрд. человек, пока миллионы людей работают и развлекаются в Интернете, «большие игроки» расписали и утвердили свои стратегии на пять-десять лет вперед. И все будет по плану, все будет так, как они решили. Почему?
Читать дальше →

СУБД на PHP — реально! Представляем MooSQL!

Reading time3 min
Views9K
MooSQL Я думаю, многие в своей жизни сталкивались с ситуацией, когда у вас под рукой нет MySQL (по разным причинам, например хостер не позволяет), а все-таки иметь что-то подобное, или даже сам MySQL хочется. Теперь у вас есть надежда :)! Я и nblxa хотим представить проект под названием MooSQL, цель которого — предоставить MySQL-совместимую СУБД на чистом PHP на случай, если в доме закончился обычный MySQL.
Читать дальше →

Ubuntu One Music Store

Reading time3 min
Views3.9K
image
Не так давно компания Canonical разрабатывающая дистрибутив Ubuntu Linux объявила об официальном запуске музыкального магазина Ubuntu One Music Store, который будет интегрирован в музыкальный плеер Rhythmbox в предстоящем релизе Ubuntu 10.04. Магазин позволяет пользователям покупать доступные для загрузки песни и альбомы.

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

10 выводов об эффективности кампании по привлечению трафика на сайт

Reading time2 min
Views18K
Сегодня — ровно 5 месяцев со дня старта рекламной кампании нашего интернет-молла. Кампания проходила в несколько этапов, разных и по целевым сообщениям, и по объемам рекламных вложений. Ранее мы не проводили масштабных онлайн-кампаний, и многое было вновинку, какие-то результаты нас очень удивили.

Решили поделиться своими наблюдениями в надежде, что они окажутся хабра-полезными.

1. Самые дешевые клики — на Яндексе и Google (здравствуй, капитан Очевидность). Кроме цены, контекстная реклама дает определенный порог качества – средняя длительность посещения 1-3 минуты, 3-5 просмотренных за посещение страниц. Средняя цена клика на Яндексе – 8 рублей, на Google – 5 рублей.

2. Рамблер гораздо менее эффективен по сравнению с Яндексом и Google (еще раз привет, капитан). Убедились в этом на собственном опыте. Получили примерно в 5 раз меньше посещений, чем прогнозировали. Тем не менее, средняя цена клика также не слишком высока – 9 рублей.

3. Много посещений приносит медийная реклама (баннеры и поп-андеры) на Одноклассниках и ВКонтакте, но цена этим посещениям – грош, ведь средняя длительность пребывания на сайте не превышает 30 секунд, и процент отказов около 90%. Больше не будем покупать такую рекламу. Рекомендовали работать с приложениями на ВКонтакте, но честно говоря, даже не хочется пробовать после такого первого опыта.
Еще 7 выводов

This is the Zodiac speaking

Reading time4 min
Views25K
image
Зодиак – серийный убийца, совершавший свои преступления в США с 1968 по 1969 год.
Сам Зодиак приписывал себе 37 убийств, однако никакими фактами это не подтверждалось и на данный момент доказано, что он совершил только 5 убийств и ещё двое выжили после его нападения.
Зодиака нередко называют Джеком Потрошителем XX века из-за того, что он, так же как и его британский «коллега» не был пойман.
Считается, что Зодиак имел психическое расстройство – он желал к себе интереса. И для удовлетворения этого желания использовал письма, которые отправлял в различные издания. Только некоторые из них были не совсем обычными – это были шифрограммы.
Читать дальше →

Электронная картотека арбитражных дел

Reading time3 min
Views5.7K
Время бесконечной беготни по кабинетам, бумажной волокиты и долгих ожиданий ответов на запросы прошло!

Теперь в вашем распоряжении – современная электронная справочная система, которая позволяет:
  • Получить исчерпывающую информацию о любом деле, которое рассматривалось, рассматривается или будет в ближайшее время рассматриваться в Арбитражном суде в любом (!) уголке нашей необъятной страны.
  • Отследить в режиме реального времени, в какой стадии находится рассмотрение дела, кто в нем участвует, и какие решения по нему принимаются.
  • Подписаться на рассылку и получать информацию по интересующим вас арбитражным делам на свою электронную почту!


image

Раньше для получения такой информации вам понадобились бы недели или даже месяцы. Теперь на это уйдет несколько минут.
Читать дальше →

Архитектура предметной области в CMF/CMS системах

Reading time6 min
Views4K
Практически любая информационная система характеризуется наличием системы хранения и оперирования данными. Возьмем, к примеру, обычные веб-сайты. Для их создания обычно используются какие-либо готовые системы (фреймворки или уже готовые CMS), в которых изначально уже заложена какая-то концепция по работе с данными, установившаяся предметная область. Обычно, если разработчик хочется добавить на сайте раздел новостей, он добавляет в интерфейсе CMS компонент, информационный блок, шаблон и т.п. Суть всех этих конструкций одна — создать сущность в БД для хранения (либо каком-то ином хранилище). В итоге имеется реляционная база данных и, зачастую, какой-то объектно-ориентированный обвес, реализующий связку объект-атрибуты-свойства-методы — реализуется предметная область.

Ниже пойдет речь об одном из вариантов архитектуры предметной области. Статья базируется на опыте работы в компании ADV, которая применяет подобные методы в разработке веб-проектов. Сложность изложенного материала позволяет понять его не только разработчикам ПО, но и веб-мастерам, которым надо периодически дорабатывать существующие веб-проекты, добавляя в них новые данные.

Самые простые системы позволяют лишь организовать хранилище, к которому разработчик в дальнейшем обращается и делает всю необходимую работу по обработке данных сам. В таком хранилище есть лишь объект, поля и данные. В более продвинутых системах между объектами появляются связи. Следующий уровень развития — взаимодействие объектов (триггеры, методы и т.п.), а так же наличие программной подсистемы, снимающую с разработчика часть забот по обработке данных.
Читать дальше →

Какое время — деньги?

Reading time4 min
Views1.6K
Забавная статья была буквально недавно опубликована на Хабре: «100 долларов в час».
Статья, по-моему, является незнанием или непониманием автора базовых экономических принципов, забывая про которые, он выстраивает свою теорию.

Несостоятельность теории


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

Это было бы забавно и даже весело, если бы статья не претендовала на изложение серьезной жизненной позиции, с попыткой ее вполне реального экономического обоснования.

Статья сопровождается множеством остроумных комментариев от читателей. Но давайте попробуем разобрать данную теорию, прагматично и всерьез, ведь проблема «оценки времени» очень часто поднимается как здесь, так и в быту
Читать дальше →

100 долларов в час

Reading time5 min
Views8.7K

Ранее я упомянул свою ставку 100 долларов в час. Я получил десятки комментариев с общим смыслом “получать так много нескромно”. И никто не сказал “работать так мало нескромно”. Почему-то считается, что работать надо хотя бы 40 часов в неделю. Общество настроило нас:

  • работать надо много
  • жизнь должна быть трудной
  • времени должно не хватать.

“Welcome to real life. It sucks, but you’ll get used to it”, – говорят в сериале Friends.


Сколько стоит мое время?

Посчитать свою часовую ставку легко: зарплату делим на число рабочих часов. Если вы получаете хотя бы 10 долларов в час, вы найдете кучу мест, где можно сэкономить.

Я для себя принял ставку в 100 долларов в час, в первую очередь засчет того, что работаю неполный день, только по утрам.


Оно того не стоит

Стоит выяснить цену своего времени, как можно забить на убыточные дела. На прошлой неделе я ходил в театр Станиславского на “Севильского цирюльника” и забыл бутылку вина в камере хранения. Вино стоило 287 рублей, до театра идти 15 минут туда и 15 минут обратно. Получается, что при часовой ставке до 574 рубля дело выгодное, иначе выгоднее не забирать.

Пример расточительства
Удивительно, но даже крупные банки, обладающие штатом квалифицированных экономистов, не всегда прибегают к такому анализу. Мой друг получил звонок из Citibank с просьбой погасить задолженность в размере… 90 копеек. По самым скромным оценкам, только минута работы оператора на телефоне стоит полтора рубля. Прибавьте расходы на офис коллцентра, оборудование, страховку, налоги. Прибавьте работу офиса, куда друг приехал гасить задолженность, операционистов, в конце концов стоимость бумаги!

Вот примеры того, где можно сэкономить:


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

10 бесценных жизненных советов, которые дает нам Альберт Эйнштейн

Reading time4 min
Views56K
Интересная на мой взгляд статья, которая показывает, что одни и те же принципы никогда не устаревают. Конечно, все они уже часто проскакивали в той или иной форме на множестве ресурсов, но мне бы хотелось предложить вам их видение Ученым с большой буквы, Альбертом Эйнштейном.
Читать дальше →

Nivo Slider — jQuery Image Slider

Reading time1 min
Views766
Nivo Slider — весьма интересный слайдер картинок.

image

Возможности:
  • 9 эффектов смены картинки
  • простота использования
  • настраиваемые параметры
  • встроенная навигация
  • упакованная версия 5 кб
  • бесплатен, лицензия GPL

По заверениям разработчиков работает в браузерах —
Internet Explorer v7+
Firefox v3+
Google Chrome v4
Safari v4

Проверил — на Opera — также работает.
Пошел прикручивать красавца ;-).

Information

Rating
Does not participate
Location
Alicante/Alacant, Испания
Date of birth
Registered
Activity

Specialization

Backend Developer, Web Developer
Senior