Pull to refresh
12
0
Вячеслав Конашков (SunDrop) @SunDrop

User

Send message

Эволюция архитектуры: от «самописных» сервисов к HandlerSocket

Reading time6 min
Views19K


Сегодня мы расскажем о том, как в Badoo изменился подход к проектированию нагруженных “key-value” сервисов. Вы узнаете, по какой схеме такие сервисы создавались нами несколько лет назад (использование БД в качестве репозиториев и специализированного демона как интерфейса к данным), с какими трудностями мы при этом столкнулись и к какой архитектуре в результате пришли, разрешив появившиеся проблемы.
Читать дальше →
Total votes 82: ↑76 and ↓6+70
Comments34

Секретные коды, или как я писал свое приложение для android

Reading time5 min
Views98K
Думаю все, у кого есть устройство на базе ОС Android, хотя-бы краем уха слышали о «секретных кодах».
Однако поиск по Хабру показал что здесь нет ни одной статьи на данную тему. А ведь некоторые коды довольно могущественные: например один из кодов на моем Samsung Galaxy Tab позволяет настроить GPS что ускоряет поиск спутников, другой — жестко установить режим связи с сетью(GPRS, EDGE, 3G...) что в местах с нестабильной связью позволяет хорошо сэкономить батарею на скачках между режимами.
Но повествование я поведу не сколько про возможности кодов а про исследование механизма запуска приложений по кодам в ОС Android, как найти все коды(и приложение в которое это всё вылилось). И еще немного про то, как сделать приложение которое будет отзываться на свой код.
Под катом 6 картинок, немного кода и много текста… Самых нетерпеливых прошу сразу в конец статьи помацать результаты а уж потом — читать технологию.
Читать дальше →
Total votes 118: ↑109 and ↓9+100
Comments73

Перевод официальной документации по Backbone.JS

Reading time1 min
Views9.9K
Доброго времени суток!



В полку Open Source прибыло! Мы (@kulakowka, k12th, dhomich и я) рады представить вашему вниманию перевод официальной документации по Backbone.JS — каркасу для создания RIA приложений на JavaScript, автором которого является Jeremy Askenas — создатель CoffeeScript.
Читать дальше →
Total votes 125: ↑122 and ↓3+119
Comments48

Использование классов в JavaScript

Reading time11 min
Views39K
Методы создания классов на JavaScript уже не раз обсуждались по всему рунету и на хабре в том числе, я решил найти немного иной подход к созданию классов, приближенный к реальным классам. Одно важное отличие от других реализаций описанных во многих статьях, это возможность создавать аксессоры (setter's/getter's). Которые будут работать не только в современных браузерах, но и в долгоживущем IE ниже 9-ой версии. Об этом читайте ниже.

Для начала я опишу как создавать классы нужных нам типов, классы могут иметь обычные публичные свойства, приватные свойства и статические свойства.
Читать дальше →
Total votes 49: ↑30 and ↓19+11
Comments103

Проверка соблюдения стандартов кодирования РHP через git

Reading time3 min
Views5.3K
В разработке проекта зачастую принимают участие разработчики разного уровня. Это приводит к тому, что нет строгого формата написания кода. За качеством кода на проекте приходится постоянно следить старшим разработчикам и это отнимает у них кучу времени.

Для того чтобы наказать говнокодеров облегчить страдания тех, кто делает ревью кода, можно использовать автоматические средства проверки кода, которые всем давно известны. Это PEAR и PHP Code Sniffer.
Читать дальше →
Total votes 42: ↑37 and ↓5+32
Comments55

PHP. Собеседование в вопросах и ответах

Reading time1 min
Views84K
imageНекто Андрей Шевченко составил, структурировал и выпустил в виде бесплатной PDF книги список вопросов, которые всенепрменнно могут встретится(и чаще всего встречаются) любому PHP программисту на самом стандартном собеседовании. Более того — каждый вопрос снабжен достаточно подробным ответом.

Читать дальше →
Total votes 118: ↑75 and ↓43+32
Comments432

Цветовое кодирование серверов

Reading time2 min
Views17K
Когда серверов мало — они очень личные. Это ТОТ сервер. А это совсем другой сервер. Подобное отношение может быть только к уникальным серверам со специфичной конфигурацией и ролю (ролями). В условиях массового использования серверов никакой личной составляющей выделить не получается, потому что если у серверов одинаковая конфигурация, то различать их очень сложно. Особо это заметно в условиях кластеров, СХД, access-level коммутаторов и хостов виртуализации.

Ситуация ещё больше осложняется после того, как появляются тестовые конфигурации, похожие на рабочие. Операции, которые заурядны для тестов могут иметь фатальные последствия для продакта (установка пакетов, перезагрузка, пересоздание объектов адресации и т.д.).

Понятно, что «нужно головой думать». Но лучше всегда лишний раз предостеречься. И самым простым решением является использование цветового кодирования.

All Hail Britania!
Читать дальше →
Total votes 67: ↑60 and ↓7+53
Comments41

Zend_Form_Element: создание своего элемента

Reading time4 min
Views1.8K

0. Intro.

В процессе разработки достаточно часто нужно использовать различные кастомные селекты, инпуты, загрузщики файлов и прочее. В этом случае приходится писать дополнительные обработчики на стороне клиента, так как ZF из коробки не знает ничего, кроме стандартных элементов форм (капча есть исключение). В этой статье будет рассмотрено создание элемента на базе facebook-like TextboxList плагина для jQuery, который выглядит вот так:

habr 1
Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments20

Версионная миграция структуры базы данных: основные подходы

Reading time15 min
Views136K
Проблемы контроля версий баз данных и миграций между версиями уже не раз поднимались как на Хабре (1, 2, 3 и др.), так и в Интернете (преимущественно, англоязычном).

В первом разделе этой статьи я рассматриваю основные проблемы, которые возникают в командах программистов при внесении любых изменений в структуру базы данных. Во втором разделе я попытался выделить основные общие подходы к тому, в каком виде изменения структуры базы данных можно хранить и поддерживать в процессе разработки.
Читать дальше →
Total votes 89: ↑87 and ↓2+85
Comments83

Оптимизируем запросы к Facebook Graph API с помощью Real-Time Updates

Reading time9 min
Views17K
Приложения для Facebook могут иметь разнообразный функционал: например, часто приложению будет достаточно информации, полученной через API, во время работы пользователя с приложением. Но что делать, если ваше приложение должно работать с самыми “свежими” данными пользователе, даже если они не открывали его уже больше месяца?

Есть два способа для того, чтобы получать данные не только во время работы пользователя с приложением:
  1. Получить от пользователя offline_access permission (сохранить “вечный” пользовательский access_token) и получать необходимые данные “по расписанию” (дергать скрипт cron-ом).
  2. Написать скрипт, который будет получать все изменения данных от Facebook, настроить и подписаться на обновления через Real-Time Updates.

Под катом вы узнаете виртуальный пример, как использование real-time updates помогает сократить за день количество запросов к API более чем в 100 раз в некоторых ситуациях. Мы напишем скрипт подписки на обновления и проверим его работу, получив данные о изменении объектов от самого Facebook.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments55

Юнит-тестирование в PHP

Reading time13 min
Views187K
Язык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.

В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
Начнем?..
Total votes 97: ↑90 and ↓7+83
Comments90

Получаем полноценный Linux и сопутствующие плюшки на Zyxel Keenetic без перепрошивки

Reading time3 min
Views87K
image

С недавного я времени стал обладателем Zyxel Keenetic. И моя симпатия к Linux не могла не дотянуться и до этого интернет-девайса. В этом топике я расскажу как можно получить полноценный root и расширить возможности Keenetic'а.

Читать дальше →
Total votes 59: ↑58 and ↓1+57
Comments26

ABBYYOnline — взгляд архитектора

Reading time10 min
Views6.7K
Сегодня мы поговорим о распределенных, гетерогенных и местами довольно серьезно и разнообразно нагруженных интернет приложениях на примере портала http://www.abbyyonline.com. Я постараюсь не углубляться в технические подробности, имеющие отношение к конкретной платформе, и, хотя основная часть описанного приложения реализована на ASP.Net MVC, возможно, данный материал заинтересует всех, имеющих отношение к веб-разработке, вне зависимости от используемого инструментария.
Читать дальше →
Total votes 36: ↑24 and ↓12+12
Comments21

Пассивная защита от дурака

Reading time4 min
Views3.7K
В связи с тем, что моя довольно простая, но удобная идея с защитой от удаления ненароком собрала множество положительных отзывов, я решил серьезно обдумать проблему «защиты от дурака». В принципе, тема довольно интересная, и не избита множеством блоггеров, поэтому должна быть полезной большинству моих читателей.

Защита от дурака

Что я понимаю под защитой от дурака? Это некоторые детали интерфейса, которые препятствуют случайному удалению информации, которое, естественно, приведет к потере данных, и нервных клеток пользователя.

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

Читать дальше →
Total votes 41: ↑36 and ↓5+31
Comments92

Живая карта

Reading time1 min
Views783

«МирТесен» изобрёл новый способ визуализации блогов! Ребята продолжают раскрытие темы социальной сети на карте: теперь они взялись за город в прямом эфире. При помощи их новой фишки — «Живой карты» — очень хорошо видно, что происходит в каждой точке города в данный момент: какие разговоры там ведутся, какие люди живут. Можно сразу прикинуть, далеко ли вам до участников понравившегося блога — на случай, если вам захочется перевести разговор из виртуальной в реальную плоскость и продолжить обсуждение уже за рюмкой чая. Чем больше появляется народу, тем информативнее становится карта. Пока же можно отчётливо отслеживать «агломерации пользователей» в центре Москвы.

Особенно приятно обнаружить себя в числе высказывающихся. Вообще создаётся весьма необычное ощущение полёта над городом. Выбрать себе блог по душе можно, просто кликнув на понравившуюся реплику, а может быть, даже фотку ;) Ведь никто не исключает, что вы захотите поближе познакомиться с симпатичной девушкой, узнав, что она, к тому же, ещё и ваша соседка.
Total votes 38: ↑34 and ↓4+30
Comments46

Пример использования микроформатов на «живом» проекте

Reading time3 min
Views2.9K
Многие ресурсы сегодня стараются применять передовые технологии для своего развития, а иногда даже сами являются «двигателями» этих технологий. Сейчас это происходит с микроформатами. Термин еще не прижившийся, но уже вызывающий большое количество споров, которые в частности касаются как самих микроформатов, так и реализуемой ими концепции.

Микроформат. Что же это такое? В принципе, на этот вопрос было дано уже много ответов, причем звучали как абсолютно противоположные, так и дополняющие друг друга. Например, как правильно ответить на вопрос: для кого больше предназначены микроформаты, для людей или для машин? И ответ на этот вопрос будет ключом к пониманию сущности микроформатов.

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

Детали смотрите далее...
Total votes 30: ↑27 and ↓3+24
Comments27

Кропотливая оптимизация PHP-приложений (рассматриваю PHP5, но большинство справедливо и для 4-й ветки)

Reading time9 min
Views8.8K

Когда во сне снится «ой а если сервера не хватит...»


Для начала, Доброй Ночи. Пишу что-то полезное вроде впервые (если не считать разного рода полу-тестов в моём блоге). Человек я допытливый до жути, неожиданно в голову пришло, что могу помочь сэкономить кому-то много времени ;).


танцуем с бубном
Total votes 99: ↑95 and ↓4+91
Comments147

Распространенные проблемы при управлении проектами (Web)

Reading time6 min
Views10K
Введение.
Вот уже 5 лет я занимаюсь веб — разработками. За это время приходилось и на коленке делать сайты за несколько сотен долларов и участвовать в довольно крупных проектах. За последний год меня не оставляет ощущение deja vu. Где-то я уже видел: нервных заказчиков, взбешенных менеджеров, заваленных работой разработчиков и сорванные сроки. При этом для меня ничего не изменилось. Были все те же нечеткие, постоянно изменяющиеся требования, прессинг, и ни одного проекта, сданного в срок…
И это, не смотря на то, что “грабли” были всегда одни и те же.
Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments117

Размышления на тему личной эффективности и организации дел.

Reading time5 min
Views17K
Зачем?
Никогда не успевал в школе. Любая задача у меня растягивалась на максимально возможное время, подтверждая закон Паркинсона. “И это только начало…” – думал я, и впадал в депрессию. Соответственно, ни на что кроме уроков у меня времени особо и не было. Потом ВУЗ и работа. Гонка за деньгами. Господи! Неужто так будет всегда…
С удивлением обнаружил, что чем больше и качественнее делаешь работу – тем больше наваливается. Причем, что интересно, даже если заряжаешь ценник до небес.

Читать дальше →
Total votes 45: ↑41 and ↓4+37
Comments65

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity