• Парковки и IT: без глянца и прикрас

      Московcкие платные парковки — огромный проект, призванный улучшить жизнь самого крупного города нашей страны. В нём сплетается всё: социальные, экономические и экологические факторы. Его хорошая реализация могла бы показать, как грамотно реализованные IT-проекты изменяют к лучшему даже жизнь тех людей, которые не пользуются интернетом постоянно.

      Каково айтишнику работать в госструктуре, редактору Roem.ru рассказывают Илья Запорожец и Анатолий Дубцов, до января 2014-го года работавшие в московской «Администрации московского парковочного пространства» (АМПП), которая отвечает за московские парковки. До АМПП Илья и Анатолий работали в «Яндекс.Деньгах», «Билайне» (Запорожец) и в компаниях Максима Ноготкова (Дубцов).

      В АМПП Илья Запорожец (lisoy) занимал должность заместителя генерального директора, а Анатолий Дубцов (fytocioniz) был начальником управления поддержки и развития информационных систем.


      Анатолий Дубцов
      Как оказалось, работа в госструктуре чревата неожиданностями...
    • Подводные камни при использовании кэширования в nginx

        В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

        В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

        Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

        Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

        Кэширование всей страницы целиком


        Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
        Читать дальше →
      • Поём вместе с Sinatra. Часть первая. Первое знакомство

          Доброго времени суток!

          Что такое Sinatra


          Sinatra — маленький, но довольно интересный DSL (Domain-specific language) фреймворк, написанный на Ruby. В отличие от Ruby on Rails он не следует типичному паттерну MVC (Model — View — Controlller). Sinatra создавался для того, чтобы «программист смог быстро создать веб приложение, написанное на Ruby с минимальными усилиями.

          Для того, чтобы воспользоваться Sinatra нам неорбходимо его установить. Сделать это можно следующей командой в RubyGems:

          gem install sinatra

          Также нам понадобится гем под названием Shotgun. Нужен он нам для того, чтобы лишний раз не перезагружать сервер вручную. Shotgun сделает это за нас. Давайте установим его:

          gem install shotgun

          Ну вот и всё! Всё необходимое для работы у нас есть. Настал момент для творчества. Приступим…
          Читать дальше →
        • Создание гемов — Руководство

            Хотя на Хабре уже проскакивали статьи о создании гемов, они либо содержат устаревшую, либо неполную информацию.

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

            Современный подход заключается в использовании Bundler совместно с другими инструментами, такими, как Git, YARD и RSpec-2.
            Читать дальше →
          • Только Ruby, только хардкор!

              Ранним утром (или поздней ночью) 9-го января я приехал в аэропорт Шереметьево для того, чтобы встретить Джоша Калдеримиса из Travis-CI. Напечатанная табличка с именем осталась дома, но по счастливой случайности, мы встретились с Джошем почти сразу и первой его фразой было: "Toster? I am hungry, you got toasts?". Не скажу, что этот вопрос, заданный с улыбкой на лице, поставил меня в тупик, но я не ожидал, что все оставшиеся дни пребывания в заснеженной Москве, ребята будут придумывать всё новые и новые шутки насчет тостера и тостов.



              Кстати, мы приносим официальные извинения за их отсутствие на прошедшей конференции, все просто — они были съедены докладчиками до начала выступления.
              Заглянуть на огонёк
            • Верстка HTML писем: думай как баг

              • Tutorial
              Всем привет!

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

              Cellspacing


              Как я уже писал более года назад, стОит обнулять все отступы для таблиц, и там где нужны отступы — добавлять новые ячейки с прозрачной .gif распоркой. Я решил упростить себе задачу и поиграться с базовыми отступами для таблицы.

              Задача: расположить четыре картинки в таблице — по две на каждой строке. Между картинками должен быть зазор в 10px.
              Читать дальше →
            • Расширения для Google Chrome. Часть первая. Getting started

                Добрый день, Хабр.

                Я хочу написать цикл статей о создании расширений для Google Chrome. К этому меня побуждает, во-первых, практическая польза самого процесса разработки и последующего использования: вы сами определяете, какие ещё задачи хотите решить не выходя из браузера и, во-вторых, отсутствие каких-либо внятных гайдов, туториалов и справочников на русском языке, за исключением, пожалуй, этой и вот этой статей на Хабре. Основная цель цикла — систематизировать разрозненную информацию и облегчить поиск потенциальным разработчикам, благо индексируется Хабр хорошо :)

                В первой (этой, то бишь) статье, на примере простейшего расширения, будут рассмотрены все основные моменты, связанные с разработкой, отладкой и использованием расширения, конфигурационный файл manifest.json и начала chrome.* API. Первая же статья, думаю, будет не очень полезна опытным разработчикам (это дисклеймер).
                Читать дальше →
              • Анимация меню при помощи CSS3

                • Перевод


                В данной статье я хотел бы показать вам некоторые приёмы создания эффектов при помощи CSS3 на примере меню. Идея заключается в простой композиции элементов: иконки, основного названия и вторичного названия, которое будет анимировано при наведении курсора, используя только CSS-переходы и CSS-анимацию. Мы рассмотрим несколько различных эффектов для элементов.
                Читать дальше →
              • График «мастер-детали» средствами Highcharts и jQuery UI

                При наличии большого количества статистических данных, например таких, как котировки валют (и прочие данные, связанные с финансовой тематикой), потребление чего-либо (воды и т.д.), вообще говоря, любых данных, которые так или иначе можно представить в виде пары «дата — значение», бывает удобно представить их в графическом виде. Так как данные могут быть собраны за достаточно большой период времени, имеет смысле представлять их в виде пары графиков: «мастер»-график, на котором будут отображены все точки, и график «детали», где будут отображены точки за требуемый период. В данной статье я постараюсь рассказать, как построить график подобного типа при помощи стандартных средств библиотек HighCharts и jQuery UI.

                Приведенное ниже решение, в принципе, является велосипедом, т.к. с появлением нового продукта от разработчиков HighCharts, который получил название HighStock, необходимость в реализации подобным способом отпадает. Впрочем, HighStock пока еще в состоянии beta.
                Читать дальше →
              • Платеж любимый, теперь и в мобильном

                • Из RSS

                История платежей на мобильной версии Яндекс.ДенегСегодня на мобильном сайте Яндекс.Денег (m.ya.ru/money) появились сервисы, о которых вы нас просили — история операций, повтор платежей и возможность сохранять любимые платежи в избранном.

                Немного истории. В конце прошлого года мы обновили мобильную версию Яндекс.Денег, и наши пользователи получили возможность платить за мобильный телефон, доступ в интернет, Skype и даже онлайн-игры — и все на бегу, вдали от компьютера.

                За телефон, конечно, платят чаще — в среднем 4 раза в месяц, а средняя сумма составляет 300 рублей. Платежи за интернет чуть выше — примерно 450 рублей. Телевидение — чуть более дорогое развлечение: в среднем 600 рублей.

                Платить с телефона особенно любят в выходные. И это не только перечисленные выше платежи: на бегу можно купить и билет Sky Express, и оплатить коммунальные услуги. Сейчас на мобильной версии больше двухсот различных магазинов, и мы постоянно добавляем новые.

                Мы знаем, что порой вам нужно оплатить Яндекс.Деньгами всего одну услугу, но очень быстро. Например, бросить денег на телефон. Специально для таких случаев существует список избранного, куда можно добавить платежи для быстрого повтора.

                Нам очень интересно, как вы пользуетесь мобильными деньгами и чего вам еще от них хочется. Расскажите!