• JSCS, CST и новое начало

      Мы наконец-то выпустили JSCS версии 3.0, и надо сказать, что помимо энтузиазма, мы испытываем еще и некоторую грусть. Над новой мажорной версией мы работали много и долго, это было довольно интересно и местами захватывающе. Грустно от того, что это будет последней версией JSCS.

      С помощью вас, JavaScript разработчиков, которые помогали JSCS, проект смог достичь успеха. Около 5 тысяч звезд на гитхабе и более 27 тысяч скачиваний npm пакета в день. Тем не менее, мы приняли решение не выпускать новых мажорных версий и впоследствии прекратить работу над проектом.
      Что дальше?
    • Как ESLint реагирует на ситуацию с удалением пакетов из NPM

        После того, как произошла ситуация с удалением пакетов из NPM, которая затронула огромное количество пользователей пакетов babel, jscs и многих других (об этом можно почитать здесь: «A discussion about the breaking of the Internet»), многие разработчики Open Source начали рассуждать о будущем NPM и экосистемы JS в целом.

        Мнения разделились:


        Ну а команды крупных Open Source пакетов, на которые свалилось огромное количество тикетов в github, всерьез задумались о том, как не допустить такой ситуации в будущем. Особенно пострадали те проекты, которые часто используются в CI, так как именно пользователи CI в первую очередь заметили проблемы с отсутствующими зависимостями. Одним из таких проектов является ESLint, имеющий порядка 70 тысяч установок в день, большинство из которых приходится на CI-сборки.
        Читать дальше →
      • JSCS: JavaScript Code Style

          Когда девять месяцев назад я написал для себя маленькую консольную утилиту, я и не подозревал, что вскоре она превратится в серьёзный и единственный в своём роде инструмент, которым будут пользоваться даже такие известные всем команды, как jQuery, Bootstrap, Angular. Сейчас, когда я пишу эту статью, у моего проекта на гитхабе 1010 звёздочек, и мне очень радостно думать о том, что так много людей смогли с помощью моей придумки сделать свою работу удобнее.

          История этого проекта началась с моей личной боли.

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

          Читать дальше →
        • Vow: самые быстрые промисы

            Хочу предоставить вашему вниманию библиотеку Vow, которую написал мой коллега Дмитрий Филатов dfilatov.

            Библиотека реализует Promises/A+, работает очень быстро и требует малого объема памяти. По тестам производительности сильно опережает Q, но при этом сохраняет асинхронную манеру работы.

            Работа с Vow выглядит так же просто, как работа с Q. Из недостатков (по сравнению с Q) можно лишь выделить отсутствие progress.

            Пример кода с использованием Vow:
            function readFile(filename, encoding) {
                var promise = Vow.promise();
                fs.readFile(filename, encoding, function(err, data) {
                    if (err) return promise.reject(err);
                    promise.fulfill(data);
                });
                return promise;
            }
            Vow.all([readFile('test1.txt', 'utf8'), readFile('test2.txt', 'utf8')]).then(function(results) {
                console.log(results.join('\n'));
            });
            

            Читать дальше →
          • Две истории о TimeMachine


              Time Machine — инновационная система резервного копирования, встроенная непосредственно в Mac OS X 10.5 «Leopard». Для работы cовместно с Time Machine в среде Mac OS X компанией Apple Inc. выпущена точка доступа Time Capsule.

              Хочу рассказать две истории о том, как Time Machine спас меня.

              Прошу под кат
            • Победа копирастов на примере PlayStation Portable

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

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

                    Идея написания сервера кеша приходила ко мне давно, но небыло подходящего повода и инструмента, чтобы начать над ним работу. Сделать свой сервер кеша мне хотелось по двум причинам: опыт, возможность легко добавлять нужные мне функции (кто видел код memcached, тот меня поймет). Основной проблемой для меня был C++. Несмотря на то, что я нередко с ним сталкиваюсь, он мне не нравится совсем. Я не буду начинать холивар и писать о его недостатках. Он мне не нравится так же как кефир с детства: мы с ним несовместимы. Поэтому для меня было большой новостью существование FreePascal. Когда-то давно у меня был опыт работы на Delphi, поэтому с Pascal я был «на ты». Особенно меня удивило то, что FreePascal оказался кроссплатформенным (чем Delphi совсем не блистал).
                    Читать дальше →
                  • Лечим треск при проигровании звуков в Pidgin

                      Публикую статью от guglez.

                      Часто сталкиваюсь с неприятной проблемой — при проигровании Pidgin-ом звуков идет неприятный треск. Проблему эту наблюдал не только у себя. Сегодня решил наконец-то разобраться в чем дело.
                      Читать дальше →
                    • Потоки данных

                        BASH Статья посвящена работой с потоками данных в bash. Я постарался написать ее наиболее доступным и простым языком, чтобы было понятно даже новичкам в Linux.


                        В одной из моих статей мы рассматривали запись звука в файл с помощью команды:

                        cat /dev/audio > /tmp/my.sound

                        Эта команда читает файл (устройство) /dev/audio с помощью команды cat и перенаправляет информацию из него в файл /tmp/my.sound (с помощью оператора >).

                        Читать дальше →
                      • Кнопки навигации по постам

                          Однажды я разбирал код Хабрахабра и обнаружил одну интересную вещь: по постам можно перемещаться используя клавиатуру.

                          Доступные кнопки


                          j — следующий пост.

                          k — предыдущий пост.

                          h — переход к началу страницы.

                          Работают эти кнопки на страницах с лентами постов.

                          Благодарности


                          Благодарим имперского веб-технолога Виктора Вяльчина и Лялю.
                        • Расширяем Хабр

                            Однажды, устав играть в Counter-Strike 1.6, решил, что можно убить оставшееся время более продуктивно (особенно в условиях мирового финансового кризиса). На память мне пришла притча, приписываемая Лао-Цзы, мораль которой сводилась к тому, что из сложного можно получить простое, даже не прибегая к рисовой водке. Проще говоря, сделал два маленьких улучшения для правой панельки на странице топиков:



                            Чтобы установить расширения, надо иметь Firefox с установленным GreaseMonkey.
                            Читать дальше →
                          • IDE своими руками: проектирование

                              Давно хотелось рассказать о том как делать сложные проекты с проектирования до выпуска. Считается, что IDE — это довольно сложные системы. Это очень хорошо. Есть простор для проектирования, применения паттернов, построения иерархии классов.

                              Примеры успешных IDE:
                              • Visual Studio
                              • Eclipse
                              • IDEA
                              Мне уже не терпится начать…
                              Читать дальше →
                            • Горячие клавиши

                                Чтобы порадовать хабрапользователей, мы ввели горячие клавиши на Хабре:

                                Ctrl + ← (Alt + ←)
                                    Переход на предыдущую страницу (для страниц с постраничной навигацией)

                                Ctrl + → (Alt + →)
                                    Переход на следующую страницу (для страниц с постраничной навигацией)

                                Alt + R
                                    Подгрузка новых комментариев (на странице просмотра хабратопика)

                                Alt + C
                                    Переход к следующему новому комментарию (на странице просмотра хабратопика)

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

                                  Так получилось, что я люблю программирование и компьютеры. Поэтому у каждого члена моей семьи было по одному PC. У меня стационарный (Ubuntu), у мамы тоже (Windows XP), а у жены — ноутбук (Windows Vista). Была задача — организовать интернет для всей этой техники. Провайдер мне его отдает по PPTP. Недолго думая (и будучи лентяем) я докупил обычные Ethernet-сетевые карты, вставил на стационарные компы и соединил все компьютеры проводами (если честно, я еще купил WiFi модуль для своего компа, но тупо не смог настроить для ubuntu).

                                  Шло время, потребности росли (особенно потребности в мобильности рабочего места) и я стал обладателем ноутбука MacBook Pro. Что делать со старым компьютером? Выбрасывать? Было жалко… Ведь почти руками его собирал в течение двух лет. И тогда я решил — будет сервером! Я почистил компьютер и заново поставил туда Ubuntu Linux.
                                  Читать дальше →
                                • Работаем с массивами в JavaScript без велосипедов

                                    Эту статью я хочу посвятить тонкостям работы с массивами в JavaScript.

                                    Наверное, у каждого JavaScript-разработчика есть фунции (самописные или библиотечные) $ (выбор элемента по id) и $$ (выбор элементов по CSS-классу). Если мы выбираем несколько элементов по CSS-классу, то мы хотим произвести с ними определенные действия. Напрашивается цикл. А если нужна выборка среди них? Преобразования? Действия над нужными элементами? Непростой получается код.

                                    JavaScript не стоит на месте, Mozilla неустанно улучшает JavaSript в своем движке Gecko и грех не пользоваться этими нововведениями. В JavaScript 1.6 добавлены новые полезные методы для упрощения кода, необходимого в вышеописанных ситуациях.
                                    Читать дальше →
                                  • Композиции к месту

                                      Довольно часто я смотрю различные фильмы/анимационные фильмы и встречаю моменты, когда песня очень-очень в тему (иногда до слёз раздирает).

                                      Mulholland Drive & Prison Break


                                      В этих двух замечательных фильмах в очень удачный момент звучала песня:
                                      Rebekah Del Río — Llorando
                                      Читать дальше →