• 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, но для программирования в общем.
                  Читать дальше →
                • Билайн и лотерея

                    image Мне надоели приходящие постоянно сообщения о лотереи от Билайна и я решил как-то отписаться от всего этого, для чего открыл «Правила» на сайте 1010.beeline.ru.

                    Согласно правилам, для отписки от этого спама надо отправить СМС на номер 3003:
                    11. Если Участник не заинтересован в получении информации о дополнительных баллах и других предложениях, он/она должен отправить бесплатное текстовое СМС сообщение на короткий номер 3003. Отправка подобного СМС сообщения означает, что Организатор должен прекратить отправлять Участнику дополнительную информацию.

                    Вчера я отправил СМС для отписки, и тут началось веселье. Если раньше спам приходил в среднем раз в неделю, то через 5 минут после отправки СМС мне пришло следующее сообщение:
                    Мы выбрали именно тебя! Отправь как можно быстрее одно СМС на 1010! До начала розыгрыша осталось пару минут! (49р.) Инфо: 1010 (бесп)

                    Читать дальше →
                  • 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
                                        Читать дальше →