• Redis: лёгкие яблоки

      NoSQL обычно воспринимается как альтернатива реляционным БД, однако, многие из них, особенно, те, что попроще, могут не только заменять, но и отлично дополнять их. На самом деле, чтобы использовать какое-то NoSQL-решение вместо привычной БД, нужен либо новый проект, либо возможность переписать старый практически полностью. Редкие случаи, в повседневной разработке. В то же время можно легко сорвать множество низко висящих плодов.
      Читать дальше →
    • Pinba — мониторим php в реальном времени

        Как сказано на официальном сайте
        Pinba is a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.
        

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

        Прочитать еще
      • 10 примеров меню для web страниц

        • Translation
        image Эти способы не являются ноу-хау или чем-то в этом духе. Тем не менее, они могут помочь начинающим дизайнерам и web технологам в реализации задуманных ими идей. Каждый из предложенных вариантов можно обыграть по-своему.

        Проверял лично и убедился в том, что исправно работает под следующими браузерами:

        IE7+, Opera 10.5+, FF 3.6+, Chrome 12+ (linux), Chrome 13+ (windows), Safari 5+(win) исходя из личного опыта, предполагаю о том, что работать исправно будет во всех свежих версиях Safari, FireFox, Opera и Chrome.

        С помощью CSS можно построить вот такие вот симпатичные варианты:


        Читать дальше →
      • Появилась «Leaflet» — новая open source JavaScript-библиотека для любых карт

          13 мая компания CloudMade (со-основатель компании — основатель OpenStreetMap Стив Кост) объявила о новой open source JavaScript-библиотеке для любых карт под названием Leaflet.

          Как написал Mourner (он же на Хабре — Mourner), автор этой библиотеки, живущий в Киеве (кстати, он будет рад услышать отзывы и ответить на ваши вопросы на форуме OpenStreetMap и здесь на Хабрахабре):

          «Leaflet задумана как библиотека, одинаково хорошо работающая и на десктопных браузерах, и на мобильных устройствах (iPhone/iPad, Android) — очень быстрая, легковесная, с простым API, красивым и понятным ООП-кодом. В отличии от OpenLayers (самого популярного выбора на сегодняшний день) мы не пытаемся впихнуть в нее все фичи, о которых только можно помыслить, раздувая код до немыслимых размеров — только самое основное, минимальный набор, который удовлетворяет нужды 99% применений карт в онлайне (тайлы, маркеры, векторы, попапы), но реализовывая их максимально лучшим образом.»

          Официальный сайт Leaflet: leaflet.cloudmade.com (описание, примеры, документация)
          Репозиторий на GitHub: github.com/CloudMade/Leaflet (разработчики будут счастливы видеть контрибьюторов)
          Примеры: leaflet.cloudmade.com/examples/quick-start.html

          UPD: Изменил заголовок и текст в связи с комментарием, что можно использовать с любыми картами.
        • Рефакторинг проекта в SVN с помощью ANT

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

          Предыстория

          Имеется проект в SVN из 15 000 файлов и 5 000 папок. Проекту почти 10 лет, на нем поработало несколько поколений разработчиков разной квалификации. В какой-то момент, пару-тройку лет назад, а может и раньше, архитектура проекта «потекла». Разные модули и слои стали писаться в разных стандартах организации кода, возникли циклические зависимости между модулями. В итоге в SVN за долгие года образовалась свалка. Проект собирается, но совершенно шаманским способом.

          Задача

          Привести код к единому формату хранения. При этом сохранить историю изменений по каждому файлу и не останавливать процесс разработки.

          Сложности

          Сохранить историю по одному файлу или папке в SVN довольно просто с помощью команды svn copy. При небольшом количестве файлов все можно сделать вручную.
          С разбором большого проекта сложно. Пока будешь вручную разбирать 15 000 файлов, разработчики накоммитят новых изменений и их тоже нужно будет копировать. Замкнутый круг.
          Нужна автоматизация. Скриптик, который раз! — и переводит проект в новую структуру.

          Результат

          Задача была выполнена, а побочным продуктом стал подход к написанию ANT-скриптов, который в большом программировании называется инкапсуляция. Хочу поделиться полученным подходом.

          Читать дальше →
          • +15
          • 1.7k
          • 4
        • Новости 2.0.1-beta


            Как здесь уже заметили, недавно вышел Sphinx 2.0.1. Релиз случался в легкой спешке, тк. «совершенно неожиданно» (примерно как сессия или Новый год) еще вдобавок вышла книжка для начинающих, описывающая как раз новую версию. Книга «про транк» это таки слишком эксцентрично, поэтому пришлось оперативно публиковать версию. Хорошо, что мы месяц-другой именно к релизу и готовились: чинили баги, не сильно ломали фичи. В заметке расскажу про всякие нововведения в свежей версии 2.0.1 и планы на следующую версию, см. подкат.
            Читать дальше →
          • Разработка мобильных приложений на PhoneGap и jQuery Mobile



              PhoneGap — это OpenSource платформа, позволяющая разрабатывать мобильные приложения на HTML, JavaScript и CSS под различные платформы (практически без изменения кода приложения) в их число входят: iOS, Android, Blackberry, WebOS, Symbian и Windows Mobile на подходе. Прелесть его в том, что он не требует навыков разработки под конкретную платформу. Вы пишете свое приложение на JavaScript, используете HTML и CSS для разметки. Вы пишете мобильное приложение как обычный сайт или веб-сервис.
              Движок PhoneGap расширяет API браузера и добавляет следующие возможности: доступ к акселометру, доступ к камере (пока только фото), доступ к компасу, доступ к списку контактов, запись и прослушивание аудио файлов, предоставляет доступ к файловой системе, позволяет работать с разными HTML5 хранилищами localStorage, Web SQL и т.п а также позволяет безболезненно обращаться к любому кросс-доменному адресу.
              Кроме платформы PhoneGap имеет, пока бесплатный, билдер приложений под все устройства в один клик.

              jQuery Mobile


              Думаю все знают, но напомню ещё раз. jQuery Mobile — это надстройка над jQuery, позволяющая безо всяких проблем разрабатывать мобильные веб сайты и мобильные веб приложения.

              Если вы знаете HTML, JavaScript, CSS, jQuery и испытываете проблемы с Java, Objective-C и другими, но желаете попробовать свои силы в мобильной разработке, то эта статья для вас.
              Читать дальше →
            • Принципы дизайна страниц оплаты для интернет-магазинов

              • Translation
              • Tutorial
              Представляю вашему вниманию перевод статьи под названием "Fundamental Guidelines Of E-Commerce Checkout Design" от Christian Holst. Перевели в компании UXDepot специально для пользователей Хабрахабра с одобрением издания Smashing Magazine.


              Грустная статистика систем электронной коммерции — согласно последним исследованиям, по крайней мере 59,8% потенциальных покупателей покидают сайт на этапе оформления заказа и его оплаты (у разных исследований разные показатели — от 59,8% у MarketingSherpa до 83% у SeeWhy).

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

                И сразу к делу. Рассмотрим идею совместной разработки лабораторных/курсовых работ с помощью github



                Ответственный студент Петя создает репозиторий, например по дисциплине «Параллельное программирование», где в первом коммите в ветке master доступен подготовленный проект с минимумом всего необходимого.
                Читать дальше →
              • Закончен предварительный перевод книги «Волшебство Git»

                  Я, как и многие программисты, после знаменитого выступления Линуса Торвальдса о Git на Google Talks заинтересовался распределенными системами управления версиями, а в особенно Git.

                  Я довольно таки свободно читаю на английском, но мне приятнее читать на русском языке, при условии нормального перевода.
                  Существует замечательная книга «Git Magic» Бена Лина (Ben Lynn).
                  Благодаря труду многих людей вышел первый черновой вариант этой книги. Всех желающих улучшить перевод — приглашаю под кат.
                  Читать дальше →
                • Почему Git

                    Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
                    Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

                    Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
                    Читать дальше →
                  • Issues 2.0: Новое поколение

                    • Translation
                    image

                    Система управления проектом: последний рубеж. Почти два года назад в этот день, GitHub запустил трекер задач (issue tracker). Некоторые люди его полюбили, некоторые люди возненавидели его, — но давайте не будем обращать внимание на прошлое (мы живем в будущем, так как наше настоящее в прошлом). Давайте поговорим о версии Issues, которые запускаются сегодня.
                    Читать дальше →
                  • Доступ к информации приложениями Facebook (в картинках)

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



                      К одной информации (публичной) приложение имеет доступ, а к другой, которая необходима для работы, приложение может попросить у вас различные разрешения.
                      Как обезопасить себя — читайте подкатом.
                      Читать дальше →
                    • Модульный подход в JavaScript

                      • Translation
                      Модульный подход довольно распространённая техника программирования в JavaScript. Обычно его понимают довольно хорошо, но продвинутые техники описаны недостаточно. В этой статье я рассмотрю основы и затрону некоторые сложные приёмы, включая один, по моему мнению, оригинальный.

                      Основы



                      Мы начнём с несложного обзора модульного подхода, хорошо известного с тех пор, как Эрик Миралья (Eric Miraglia) из YUI впервые об этом написал. Если вам уже знаком модульный подход, переходите сразу к «Продвинутым техникам».

                      Анонимные замыкания


                      Читать дальше →
                    • Модели управления Open Source проектами (Часть 1)

                      • Translation
                      От переводчика: данный перевод продолжает цикл публикаций по управлению Open Source проектами, начатый здесь.

                      Модель управления описывает роли, которые могут занимать участники проекта, а также процесс принятия решений внутри проекта. Кроме того, она описывает основы правил участия в проекте и процесс общения и обмена информацией между членами команды проекта и сообществом. Другими словами, именно модель управления предохраняет проект от скатывания в хаос. Этот документ объясняет, почему необходима модель управления, даёт некоторые рекомендации по решению проблем, возникающих при принятии проектом модели управления и описывает ключевые области, которые должны быть в модели. Также здесь вы найдёте описание процесса включения вашей модели управления в управляющую документацию.
                      Читать дальше →
                      • +44
                      • 3.6k
                      • 3
                    • Express — Sinatra для Node

                      • Translation
                      require.paths.unshift('path/to/express/lib');
                      require('express');
                      
                      get('/', function(){
                       this.redirect('/hello/world')
                      });
                      
                      get('/hello/world', function(){
                       return 'Hello World'
                      });
                      
                      get('/bye/world', function(){
                       this.render('title.html.haml', {
                        layout: false,
                        locals: {
                         title: 'Bye World'
                        }
                       });
                      });
                      
                      run();

                      В стремлении сделать серверный JavaScript похожим на Rails или Sinatra мы получили Express. Чистый и простой. Простой и чистый.
                    • Node.JS: Пример HTTP-сервера в режиме prefork с использованием Web Workers

                      • Translation
                      Как обещал ранее, я публикую исходный код, демонстрирующий, как построить HTTP-сервер в режиме prefork, используя Web Workers и новый API net.Server.listenFD(). Я надеюсь, что этот код будет хорошим примером того, как легко нагрузить несколько ядер сервера, комбинируя пересылку файловых дескрипторов и Web Workers.

                      Читать дальше →
                    • Обзор NoSQL систем

                        Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


                        Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
                        • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
                        • производительность каждого отдельного сервера
                        • не гибкий дизайн логической структуры.
                        Читать дальше →
                      • Перевод — BoxedIce делится опытом перехода с MySQL на MongoDB

                          Ссылка на эту статью уже мелькала на Хабре и я столкнулся с интересом к ней. Многие испытали проблемы с освоением оригинала на английском и я решил перевести ее.

                          Заметки об использовании MongoDB в продакшене


                          Год назад в июле я писал о том, что мы перешли с MySQL на MongoDB.
                          Мы запустили MongoDB в продакшене для сервиса мониторинга Server Density. С тех пор прошло 8 месяцев и мы столкнулись с некоторыми вещами.
                          Читать дальше →
                        • 2000 часов в одиночестве, или как был сделан RSS reader / Я робокоп

                            I. Am. Robocop.Всем привет,

                            Собираюсь поделиться с вами технической стороной того, как я за 16 недель сделал новый вебовый rss ридер, и чуть не сошел с ума.
                            Отходя от долгой предыстории, будем считать, что все началось в феврале этого года, когда мы с Дэвидом (dmiloshev, UI-дизайнер) решили сделать прототип нашего детища вдвоем.
                            «В одиночестве» — потому, что не было никаких скрамов, совещаний, «коллективного разума», а всю техническую часть, довелось делать самому.

                            Если бы меня попросили описать всю статью в одном предложении, то получилось бы:
                            No-SQL, mongodb, node.js, фак мой мозг, Evented I/O, очереди, выводы, git, nginx, memcached, Google Reader, Atom, TTL, PHP, ZF, jQuery, выводы.
                            Читать дальше →