• Underscore.js — библиотека, которая так хороша, что должна быть вне закона

      Каждый, кому приходилось писать объемные куски осмысленного кода на javascript, рано или поздно понимал, что ему многого не хватает в этом языке или просто неудобны некоторые врожденные конструкции. Для сглаживания шероховатостей применяются jQuery, Prototype, MooTools etc. Кто-то уже мало представляет себе, как можно кодить без них. Сегодня я расскажу о еще одной маааленькой библиотечке, которая делает мир javascript-программиста еще прекраснее. Речь пойдет о Underscore.js
      Go ahead, make my day
    • Yet another cool story about bash prompt

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



        Zsh красив, приятен, чертовски функционален, но, признаюсь честно, я не смог совладать со всеми его многочисленными настройками. Я хочу работать, а не бороться со своим рабочим окружением. Простой пример: пару раз из-за автодополнения zsh я удалял все директории и файлы в текущей директории — zsh просто ставил пробел между автодополненной директорией и введённой мною звёзочкой (я хотел удалить всё в выбранной папке). Помните тот эпичный баг с пробелом и удалении директории /usr? У меня было то же самое. Спасибо гиту, выручил в который раз.

        Впрочем, дело не в zsh — будь я чуточку умнее, я бы с ним обязательно справился бы, и всё было бы хорошо, но мы, суровые программисты, будем использовать bash и vim, а гламурные zsh и textmate оставим хипстерам и прочим модникам ;)

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

          Привет, хочу сказать, что мне очень нравится делать подборки для хабры. Много положительных отзывов, много комментариев, а значит моя работа полезная и я ее делаю не зря. Поэтому сегодня я хочу представить вам собрание различных ресурсов, на которых любой дизайнер сможет найти много полезного и интересного. Кому интересно, прошу под кат.
          Читать дальше →
        • Как реанимировать ваш PHP-проект с помощью Symfony2 компонентов

          • Translation
          Данный пост является переводом не статьи, как принято, а доклада+презентации, поэтому текст поста достаточно вольный.

          Думаю, всем хорошо известно и очевидно, что PHP — один из самых популярных языков программирования, на котором написано множество веб-проектов, начиная с персональных homepage-страниц и заканчивая мастодонтами типа Facebook, Vimeo, WordPress и даже YouPorn.

          PHP появился в 1995 году, при этом полноценная поддержка ООП была реализована только в PHP5, который вышел в 2005 году. За это время было написано большое количество кода, как хорошего, так и плохого, а точнее сказать сильно устаревшего и тяжело сопровождаемого.

          Многие проекты, как и экосистема PHP в целом, к настоящему моменту стали представлять подобие оживленного городского квартала.

          Читать дальше →
        • Composer — менеджер зависимостей для PHP

            Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).

            Кратко, как это работает:
            1. У вас есть проект, который зависит от нескольких библиотек.
            2. Некоторые из этих библиотек зависят от других библиотек.
            3. Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
            4. Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.

            При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.

            Изначально он был спроектирован и разработан двумя людьми Nils Adermann и Jordi Boggiano, сейчас в проекте участвует более двадцати контрибьюторов, Проект написан на PHP 5.3, распространяется под лицензией MIT и доступен на github.

            Первые коммиты были сделаны апреле 2011 года и на сегодняшний день Composer находится в стадии «alpha3». Однако, он уже достаточно стабилен и используется многими популярными PHP проектами (например, Symfony 2). Список проектов использующих Composer можно посмотреть на сайте packagist.org — это официальный репозиторий Composer пакетов. Кстати, на недавней конференции Devconf 2012 разработчик фреймворка Yii в своём докладе упомянул, что Yii2 скорее всего тоже будет использовать Composer.

            В этой статье я кратко опишу основные возможности Composer и мы попробуем создать демонстрационный проект использующий Composer для загрузки необходимых библиотек. Все примеры будут доступны на github.com и bitbucket.org.

            Читать дальше →
          • Установка Oracle JDK 7 в Ubuntu 12.04

              Приветствую всех обновившихся и тех кто планирует.

              Как многие из вас знают, проприетарная ява была выпилина из официальных репозитариев.
              Взамен, юзерам предложили пользоваться OpenJDK.
              Однако со стабильностью работы последней имеются серьезные проблемы.
              Но обо всем по порядку…
              Читать дальше →
            • Учебный курс по разработке для Android от Google

                image
                Желая привлечь еще больше разработчиков, в Google приняли решение организовать самостоятельно специальную программу для обучения программированию под свою мобильную платформу.

                Обучающая программа носит название Android Training и уже доступна желающим. Надо сказать, что диапазон тем программы весьма разный: начиная от азов, таких как работа с Layout — затем рассматриваются такие темы как работа с аудио, фото, оптимизация работы батареи — заканчивая вопросами монетизации приложения. Статьи, конечно, сопровождаются инфографикой и примерами кода, а сам ресурс, как обещает команда Android Team, будет развиваться и дополняться.

                Думается, что перевод программы Android Training на русский язык может стать одним из лучших руководств по разработке для Android.

                Пост-анонс можно посмотреть здесь.

                [Android Training]
              • Простая настройка .htaccess для production

                  Иногда, когда сайты хостятся на shared-хостинге или работа идет только с Apache, нужно сделать максимальную оптимизацию работы сервера и сайта соответсвенно. В статье приводятся несколько настроек, которые позволят вашему сайту работать лучше.

                  Читать дальше →
                • Modernizr: практическое применение

                  Modernizr — это JavaScript-библиотека, которая узнаёт, что из HTML5 и CSS3 умеет браузер пользователя. Определяя возможности браузера, разработчик может сделать откат некоторых функций для старых версий браузеров. Создатели Modernizr называют такую проверку feature detection, и это гораздо эффективнее, чем просто определить браузер, его версию и ОС.

                  Я был премного удивлён факту отсутствия развёрнутой статьи об этой JS-библиотеке (анонс не в счёт). Статья составлена из перевода официальной документации проекта, переводов нескольких статей и собственных дополнений.

                  Первый шаг


                  Для начала нужно получить свежую версию библиотеки с её официального сайта: Modernizr Download Builder.
                  Укажи галочками те технологии, тесты которых собираешься проводить, затем создай свою персональную версию библиотеки кнопкой «Generate». Если проставить все галочки, получившегося кода хватит на пару экранов небольшого ноутбука – всего 15 КБ.
                  Затем просто подключи его к своей странице и проверь, как оно. Если всё работает, у элемента HTML должны появиться многочисленные классы:
                  Читать дальше →
                • SASS против LESS

                  • Translation
                  «Какой препроцессорный язык стоит использовать для CSS?» является очень актуальным вопросом в последнее время. Несколько раз меня спрашивали об этом лично, и казалось бы, каждые пару дней этот вопрос поднимался в сети. Очень приятно что беседа перешла из темы о плюсах и минусах препроцессинга к обсуждению какой же язык является лучшим. За дело!

                  Если быть кратким: SASS.

                  Немного развернутый ответ: SASS лучше по всем пунктам, но если вы уже счастливы с LESS — это круто, по крайней мере вы уже упростили себе жизнь используя препроцессинг.

                  Развернутый ответ: ниже
                  Читать дальше →
                • Настрой свой Google

                    После написания этого поста, меня заинтересовали параметры поиска которые можно использовать, для удобной работы.
                    Задавшись этим вопросом, в рунете я более менее полной информации не нашел.
                    Но! Оказывается Google уже давно и для всех, все показал.

                    Читать дальше →
                  • Внутренности jQuery. Поиск кода, выполняемого по событию

                      Чем дальше в лес, тем толще партизаны. Нет, не так. Чем старше веб, тем больше джаваскрипта

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

                        Я хочу рассказать о простой задаче — вывод даты на главной странице Mail.Ru. Маленькая задача, нетривиальное решение.

                        image

                        Решение в лоб:

                        function print_date(date){
                        	return date.getDate() + ' ' + getMonth(date.getMonth()) …
                        }
                        
                        print_date( new Date() );
                        

                        Читать дальше →
                      • ТОП-10 подводных камней, на которые вы можете наткнуться при переходе на Vim

                          Согласитесь, каждый раз, когда вы видите человека, который использует Vim, вам кажется, что он знает то, чего не знаете вы. Иначе, как вы можете объяснить тот факт, что он использует редактор, который, по вашему мнению, является open-source мусором? Думайте, что хотите, но есть целый ряд причин, по которым програмисты поклоняются Vim.
                          Пока вы не потратите по крайней мере месяц на ознакомление с ним, вы, несомненно, будете его ненавидеть. Именно по этой причине большинство новичков работают с Vim около дня, после чего больше никогда к нему не притрагиваются. Они даже представить себе не могут, какой невероятной скоростью и гибкостью он обладает. Нужно всего-лишь найти в себе силы и преодолеть те трудности, которые встретятся вам на протяжении всего того времени, что вы знакомитесь с Vim.
                          Читать дальше →
                        • Как правильно сортировать контент на основе оценок пользователей

                          • Translation


                          В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

                          Постановка проблемы


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

                          Неправильное решение №1

                          Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
                          

                          Читать дальше →
                        • Новая Главная портала Mail.Ru

                            Думаю, многие из вас хоть раз видели старую главную страницу Mail.Ru, которая довольно долго не менялась. Поэтому для общего понимания, небольшая преамбула: технический апдейт, о котором пойдет речь в этом посте, стал возможен после внутренних изменений в компании.



                            Разработкой новой главной занималась довольно большая команда: в нее входили дизайнеры, специалисты по юзабилити и, конечно, разработчики, среди которых я и note.
                            Читать дальше →
                          • Kohana 3: модуль “kohana-static-files”


                              При знакомстве с фреймворком, я первым делом смотрю не на его возможности, а на готовые решение, которые он предоставляет. В частности возможность удобно собирать JS/CSS файлы по частям и «отдавать» согласно рекомендациям по клиентской оптимизации (YSlow/Google PageSpeed). Ни в одном из просмотренных мной, нужной мне реализации я не увидел, даже в Django (которым, собственно, и был вдохновлен), поэтому решил сделать свое решение в виде готового к применению модуля для Kohana v.3.

                              Итак, опишем основные потребности/хотелки, которые ставились перед разработкой модуля:
                              1) Сборка inline CSS/JS по кусочкам
                              2) Возможность отдавать п.1 путем вставки в код страницы либо сгенерировав и записав на диск файл, с уникальным именем.
                              3) Возможность сборки внешних файлов CSS/JS в один билд
                              4) Возможность указывать условие, при котором подключается тот или иной билд из пункта 3, а также любой другой внешний файл (
                              <!--[if IE 7]>
                              ).
                              5) Возможность вынести статику на другой домен, главное чтобы он был на этом же физическом сервере.
                              6) Использование CDN
                              7) Минимизация CSS/JS.
                              8) Самое важное: СПОСОБ, позволяющий включать статику (а эо обычно не только CSS/JS, но и, например. картинки) в распространяемые модули. Так как текущий способ, когда в modules/ переносится и подключается сам функционал модуля, а статика либо копируется в произвольное место DOCUMENT_ROOT, либо обязательное условие – чтобы modules находилась в DOCUMENT_ROOT.
                              9) Возможность легко менять URL со статикой, чтобы он никак не конфликтовал с роутингом, например будет не хорошо, если вы захотите иметь раздел про CSS по урл ”/css/” когда до этого вы сделали это реально существующей директорией с файлами стилей.

                              Т.е. нужно придумать и соблюдать в дальнейшем какие то соглашения.
                              Многое из задуманного было воплощено в реально работающий модуль,.
                              подробности см. под катом
                            • Честная генерация DOCX файлов на PHP. Часть 2

                                image Здравствуйте, уважаемое хабрасообщество!
                                Продолжаем историю про генерацию DOCX средствами PHP.

                                Что нас ждет сегодня:
                                • Мы узнаем, как вставлять изображения в документ;
                                • Просветимся на счет English Metric Units;
                                • Сделаем задел на будущую генерацию Exel.

                                Тем, кто не в курсе, рекомендуется прочитать первую часть. Ну а кто в теме – прошу под кат
                                Читать дальше →
                              • Список команд чата Skype

                                  ...Skype — это дьявольски хитрая программа, написанная бесспорно талантливыми людьми...Крис Касперски

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

                                  Skype сейчас я встречаю чаще на компьютерах чем другие IM клиенты, мне он практически заменил icq, вся рабочая переписка ведется в skype, но речь пойдет не о том, что лучше или популярней. Часто бывает так, что участвуешь сразу в нескольких чатах где количество участников превышает 10, что собственно и приводит к тому, что на рабочем столе и в трее постоянно обновляется количество новых сообщений, а также уведомления в виде всплывающих сообщений, а теперь представьте что у вас 3 окна чата с друзьями, 1 с вашим боссом, другой с девушкой — все это в сумме начинает запутывать, отвлекать и порой раздражать. Хотелось бы расставить приоритеты…

                                  Раньше я чаще всего настраивал «политику» уведомлений только через глобальные настройки программы
                                  Случилось так, что я узнал, что в каждом окне чата skype возможно использование команд, например /alertsoff отключит уведомления для конкретного окна чата, соответственно /alertson включит их обратно.
                                  Поискав немного я наткнулся на некое how-to, оказывается у skype чата довольно много текстовых команд, подобие IRC команд. Далее я постарался попробовать все возможные из них на двух имеющихся у меня платформах, как оказалось не все и не везде работает… Прошу под кат.

                                  Читать дальше →
                                • Настройка хостинга heroku.com + custom domain name *для новичков

                                    Итак, подобного материала я нигде не видел, так что считаю необходимым опубликовать данную информацию. image
                                    • Регистрируемся на Heroku.com письмо с линком приходит быстро, мне пришло уже через 30 секунд.
                                    • Далее необходимо установить git, я работал в ОС windows (как устанавливать в linux я думаю знают те, кто его используют), вот версия для win, если использовать портативную версию, то необходимо в интерфейсе командной строки, перейти в директорию (куда распаковали) git, и запустить либо оболочку git-bash.bat (лично мне удобнее с ней работать), либо использовать команды только лишь cmd, git-cmd.bat.
                                    • Далее, необходимо установить gem heroku командой (sudo) gem install heroku у него есть зависимости с другими гемами, вообще они сами установятся автоматически, ну а если нет, то вот ссылки для них: rest-client, launchy, json.
                                    Читать дальше →