• Видео с HighLoad++: Петр Зайцев — Диагностика и исправление проблем производительности MySQL

      Добрый день,

      Вот и последний обещанный видеодоклад с HighLoad:

      Петр Зайцев — Диагностика и исправление проблем производительности MySQL

      Часть 1 (30:56): video.mail.ru/corp/miftahetdinova/5/6.html

      Часть 2 (28:35): video.mail.ru/corp/miftahetdinova/5/7.html

      Часть 3 (28:33): video.mail.ru/corp/miftahetdinova/5/8.html

      Часть 4 (28:29): video.mail.ru/corp/miftahetdinova/5/9.html

      Часть 5 (28:13): video.mail.ru/corp/miftahetdinova/5/10.html

      Часть 6 (28:10): video.mail.ru/corp/miftahetdinova/5/11.html

      Часть 7 (28:13): video.mail.ru/corp/miftahetdinova/5/12.html

      Часть 8 (22:50): video.mail.ru/corp/miftahetdinova/5/13.html

      Часть 9 (16:01): video.mail.ru/corp/miftahetdinova/5/14.html

      Часть 10 (15:02): video.mail.ru/corp/miftahetdinova/5/15.html

      Также мы постараемся до конца года выложить доклады с HighLoad++ в Power Point.

      Хорошего вам дня!

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

      Завтра, 29 декабря, как мы уже обещали, на «Хабре» также будут выложены презентации всех докладов в PPT. В хорошем качестве ;)

      Спасибо за терпение и фидбек!
    • Модуль ustats: статистика запросов к бэкендам

        Приветствую!

        В этой статье речь пойдет о новом модуле для nginx'а, цель которого — сбор и предоставление пользователю статистики обращений сервера к бэкендам. Под катом — подробности, примеры использования, скриншоты, ссылки, а также история создания.

        Читать дальше →
      • Google Maps Javascript API V3 и управление маркерами

          Дело было глубокой осенью. Мне поручили разработку раздела, основной задачей которого является указание местоположения объектов фильтрации и поиска на карте. Что стало заметно сразу же — даже при отображении 10 объектов на карте, можно уменьшить зум до такого, при котором они просто сливаются. Если их будет 100 — появятся жутковатые наложения и тени. Не комильфо!

          Поиск решения


          Решение очевидное, маркеры нужно группировать. В процессе поиска наткнулся на хабростатью, в которой рассмотрены различные способы группировки большого количества маркеров на карте. Нас вполне устраивали «костыли 1-2», то есть группировка маркеров на клиентской стороне, однако… если бы они подошли, не писал бы я сейчас статью ;)

          Читать дальше →
        • Google Maps API

          • Tutorial

          Картографический сервис – зачем это? Ну например, я 10 лет жил в нашей маленькой провинции, а потом взял и понаехал в Москву, и всё для меня так ново. А где магазины, боулинг, кафешки, парки отдыха – надо знать же, где тратить московскую зарплату. Но вот беда, как узнать? Раньше был справочник «Желтые страницы» и там была карта и всё по адресам. Чтобы найти что-то уходило масса времени. Сейчас стало всё в разы проще. Вот прекрасный пример: http://www.pushkino.org/. Но это далеко не всё.
          Я могу отслеживать погоду, пожары, пробки (кстати!) в реальном времени.
          Мой заказчик может не вводить свой адрес, а попросту отметить его на карте и я буду знать куда доставить ему товар – какое классное решение, не надо всего этого – «Проспект маршала Блюхера, 43, г. Санкт-Петербург, Россия».

          Далее...
        • AnyChart Stock — гибкие, быстрые и интерактивные datetime-based графики

            Всем привет.
            Мы наконец-то завершили разработку нашего нового проекта — AnyChart Stock.

            Это компонент для построения интерактивных графиков, отображающих любые данные, упорядоченные по времени. Самый частый пример — финансовые графики.

            Runtime компонента написан на Flash. Конфигурация задается через XML или JSON (кому что больше нравится ;-), данные — в формате csv.

            Разработка заняла чуть больше полутора лет, но оно того стоило.



            Под катом примеры, некоторые фичи, ну и, конечно, хабраскидка!
            Читать дальше →
          • Построение систем доставки видео на основе HTTP Dynamic Streaming от Adobe и OpenSource

              В рамках проекта для одного из наших заказчиков в очередной раз встала задача построить систему конвертации/ хранения/ доставки видео в интернет. Типичная такая задача создания своего маленького (или не очень маленького) “Тьюба” только с профессиональным, а не UGC-контентом.

              С момента создания первых “Тьюбов” технологии видео в интернете прошли некоторый путь развития, позволяют сейчас делать намного больше, да и требования к современному видео-сайту стали несколько иными.

              Наиболее интересными трендами последнего времени, на наш взгляд, являются:
              • возможность смотреть один видео-сайт с разных устройств,
              • технология адаптивного HTTP стриминга

              Читать дальше →
            • История одного Репозитория

                Эта история началась много-много ревизий назад – тогда SVN Репозиторий был девственно чист, и ни один баг еще не осквернил его своим присутствием. Первые коммиты, первые откаты, просмотры лога – все это было так захватывающе, так ново. И разве мог Репозиторий тогда предполагать, что эти первые, такие приятные шаги впоследствии приведут его на хирургический стол?

                Репозиторий рос, креп, матерел. Со временем привык к коммитам, появились первые тэги, и даже мечты о ветках перестали казаться несбыточными. Репозиторий познакомился с другими SVN репозиториями, а с некоторыми даже стал обмениваться файлами. Порой он подолгу выкачивал изменения у своих новых друзей, по ходу процесса наслаждаясь анализом диффов.
                Читать дальше →
              • Hg Init: Часть 1. Переобучение для пользователей Subversion

                • Translation
                Hg Init: Учебное пособие по Mercurial.


                Mercurial — это современная распределенная система контроля версий с открытым кодом. Эта система — заманчивая замена для более ранних систем вроде Subversion. В этом простом учебном пособии в шести частях Джоэль Спольски (Joel Spolsky) рассказывает о ключевых принципах Mercurial.

                Если вы использовали Subversion, то Mercurial будет непонятным. Эта часть рассказывает о главных отличиях при работе с Mercurial. Если вы никогда не использовали Subversion, то можете просто пропустить эту часть.

                Часть 1. Переобучение для пользователей Subversion


                В каком же я был смятении, когда программисты в моей компании решили сменить Subversion на Mercurial!

                Для начала, я начал приводить всевозможные тупые причины, по которым нам не надо ничего менять. «Мы должны хранить репозиторий на центральном сервере, так безопаснее», — сказал я. Знаете что? Я был неправ. При работе с Mercurial у каждого разработчика на жестком диске хранится полная копия репозитория. Это, на самом деле, безопаснее. В любом случае, почти в каждой команде, использующей Mercurial, центральный репозиторий тоже существует. И вы можете делать резервное копирование этого репозитория со всей необходимой одержимостью. А еще можете устроить трехступенчатую защиту с Сайлонами, Штурмовиками и прелестными лабрадудлами или что там требует ваш IT-отдел.

                Читать дальше →
              • Тормозит веб-сервер. Настройка на примере www.ochevidets.ru

                  Я оказываю услуги по настройке web- и БД-серверов. На днях ко мне обратился Иван Усачёв — владелец портала ochevidets.ru с просьбой избавить сайт от торможения.

                  Страницы в пиковое время стали долго загружаться, вплоть до 5 минут на страницу.

                  UPDATE: Статья была написана в 2010 году. Кое-что изменилось: вышли новые версии программ, у nginx изменились некоторые директивы и появились новые. Учитывайте это.

                  Ниже я опишу, что я предпринял для решения проблемы.
                • Важные аспекты RESTful API для вашего проекта

                    Данная статья давно назревала в моей голове, но совсем в ином формате.
                    Прочитав последние несколько неуклюжих статей на тему WEB-сервисов (например: http://habrahabr.ru/blogs/development/108973/) и применения в них REST технологии, решил что настало время все-таки откинуть лень, выделить время и написать «переформатированную» в своей голове статью.
                    Итак, кратко, что Вы найдете в статье и кому она будет полезна:

                    новичкам, которые интересуются или планируют написать WEB-сервис для проекта
                    профи вряд ли найдут что-то новое для себя
                    — общая идеология REST
                    — применение CRUD в WEB-сервисах
                    — принципы KISS при построении раутеров
                    — лучшие практики
                    — немного пиара ;)
                    — ссылки, литература
                    Читать дальше →
                  • Новая уязвимость позволяет повысить привилегии в Win7/Vista в обход UAC

                      Интересная уязвимость для повышения локальных привилегий до уровня системы, появилась 24 ноября в виде статьи на ресурсе The Code Project (http://www.codeproject.com/KB/vista-security/uac.aspx). Буквально через несколько часов она была удалена с этого ресурса, но информация уже распространилась по сети и на мой взгляд удалять ее было бессмысленно. Повысить привилегии можно на системах начиная от XP и до Vista/Win7, причем серверные версии тоже находятся под ударом. А что еще более интересно уязвимость актуальна, как на х86 системах, так и на х64. Правда представленный PoC код удалось успешно запустить только на х86 системах.



                      в чем суть
                    • Финансирование стартапа от государства

                        Допустим, фирму вы уже создали, отдавать инвесторам 75% долю не хотите, а денег где-то взять надо. Помощь приходит совершенно из неожиданного места – Государства. Речь идет о 350 000 рублей, которые вам (внимание!) подарят! Но заплатить придется некоторой бюрократической возней и потерей времени. Речь будет идти о малых предприятиях, зарегестрированных в городе Москве, так как пишу по собственному опыту.



                        По программе содействия развитию малого бизнеса г.Москвы (в других регионах есть аналоги) любой субъект малого предпринимательства имеет возможность получить до 350 000 рублей на следующих условиях:
                        • Необходимо вложить не менее 50% собственных средств;
                        • Нужно иметь помещение и договор аренды;
                        • Необходимо потратить более 50% предоставляемой субсидии на покупку основных средств;
                        • Возмещение арендной платы из бюджета — не более 3 600 руб. за кв.м. в год;
                        • На расходные материалы можно потратить не более 20% субсидии.

                        Условия устраивают? Тогда действуем! 

                        Получить денег от государства...
                      • Геттеры и сеттеры в Javascript

                          Javascript — очень изящный язык с кучей интересных возможностей. Большинство из этих возможностей скрыты одним неприятным фактором — Internet Explorer'ом и другим дерьмом, с которым нам приходится работать. Тем не менее, с приходом мобильных телефонов с актуальными браузерами и серверного JavaScript с нормальными движками эти возможности уже можно и нужно использовать прям сейчас. Но по привычке, даже при программировании для node.js мы стараемся писать так, чтобы оно работало в IE6+.

                          В этой статье я расскажу про интересный и не секретный способ указывать изящные геттеры и сеттеры и немножко покопаемся в исходниках Mootools. Частично это информация взята из статьи John Resig, частично лично мой опыт и эксперименты.
                          function Foo(bar){
                              this._bar = bar;
                          }
                          
                          Foo.prototype = {
                              get bar () {
                                  return this._bar;
                              },
                              set bar (bar) {
                                  this._bar = bar;
                              }
                          };
                          


                          Читать дальше →
                        • Вы наверное шутите, мистер Дал, или почему Node.js — это венец эволюции веб-серверов

                          WTF is Node.js?

                          Node.js — вещь, вокруг которой сейчас много шума, восторженных отзывов и гневливых выкриков. При этом, по моим наблюдениям, в умах людей закрепилось следующее представление о том что же такое Node.js: «это штука, позволяющая писать на JavaScript на серверной стороне и использующая JavaScript-движок от Google Chrome». Поклонники языка восторженно вздохнули: «Ах! Сбылось!», противники же процедили сквозь зубы: «Ну вот только еще этой ерунды с прототипами и динамической типизацией нам на серверах не хватало!». И дружно побежали ломать копья в блоги и форумы.

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

                          Так что же такое Node.js?
                        • Тестирование PayPal Direct Recurring Payments. Проходилка квеста

                            Если Вы собираетесь прикручивать на сайте поддержку оплаты через PayPal, а точнее Website Payments Pro (WPP), а точнее Direct Recurring Payments, то скорее всего вы уже ознакомились с документацией от самого сервиса: Integrating Recurring Payments.

                            Но если Вы раньше не прикручивали именно этот тип платежей, то Вы, наверняка, ещё не подозреваете о некоторых особенностях его тестирования.
                            Читать дальше →
                          • Организация видео трансляции

                              Предлагаю сообществу поделиться своим опытом в области видео трансляций.
                              Может получится создать что-то на подобии мини пособия.
                              Схема простая: кто-то задает вопрос, а знающий ответ – делиться информацией. И всё это попадает в топик.
                              Попробую начать из того, что узнал по советам и ответам на форумах.
                              Читать дальше →
                            • Сервер подсчета кликов

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

                                История разработки уходит в один проект торгово-рекламной площадки, где необходимо было учитывать кол-во переходов. Было решение на РНР. Но это давало видимую задержку в 0.5-1 сек, что очень раздражало разработчиков (в частности меня) и я думаю пользователей тоже.

                                По этому, когда пришлось разрабатывать аналогичный проект, мне пришлось искать альтернативы.
                                Читать дальше →
                              • ООП Практикум PHP5: эмуляция примесей (mixin) в языке

                                  Как-то вечером для реализации моделей поведения в ORM в моем велосипеде фреймворке мне понадобилось что-то, ведущее себя как примесь (mixin) в Ruby или как метод расширения (extension method) в C# (или как трейт / графт в будущих версиях PHP) Я решил для интереса посмотреть, как у меня получится реализовать примеси на PHP. Если вы не знаете, что такое примесь, не беда, сейчас все расскажу.

                                  Приглашаю последовать за мной в рассуждениях о реализации примесей на PHP и программировании небольшой библиотеки, позволяющей их реализовать. Статья ориентирована на PHP разработчиков начинающего и среднего уровня (главное, чтобы вы хорошо ориентировались в ООП). В процессе я также сделаю небольшую ошибку, касающуюся тонкостей работы PHP 5.3 с классами, через какое-то время на нее укажу и предложу исправить. А также предоставлю свое решение для вашей критики. Приятного чтения.

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