• Почему Интернету нужен IPFS, пока ещё не поздно

    • Перевод
    [узлы к узлам]

    IPFS не совсем ещё сделалась хорошо известной технологией, даже в Кремниевой долине многим она ещё не известна, однако вести о ней быстро расходятся из уст в уста в сообществе открытого исходного кода. И многие рады потенциальным возможностям IPFS в области улучшения передачи файлов и ускорения потокового вещания их по Интернету.

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

    Как и почему это? Для ответа на этот вопрос придётся вдаваться в подробности.
    Читать дальше →
  • Присоединяйте файлы к комментариям

    • Перевод
    • Tutorial
    Довольно давно вы можете присоединять картинки к описаниям проблем и запросов на слияние. Теперь мы расширили эту возможность, и она получает поддержку файлов:

    • Microsoft Word (.docx)
       
    • Microsoft Powerpoint (.pptx)
       
    • Microsoft Excel (.xlsx)
       
    • Текстовых (.txt)
       
    • Документов PDF (.pdf)

    [скриншот присоединения файла]
    Просто перетащите и бросьте файлы в рамку комментария — и они появятся у вас в комментарии.
  • 21 сентября 2015 года — двадцать пять лет российскому Фидонету

      Первые узлы сети Фидонет на территории России появились в Новосибирске, их системными операторами были Владимир Лебедев и Евгений Чуприянов (известный под псевдонимом — Eric Fletcher). 21 сентября 1990 года эти узлы впервые объявились в чехословацком сегменте мирового ноудлиста:

      2:42/100, Morning_Star_BBS, Novosibirsk_USSR, Eric_Fletcher
      2:42/101, SVP_BBS, Novosibirsk_USSR, Vladimir_Lebedev
      

      И в ежедневнике у Юрия Потапюка (в дальнейшем — одного из четырёх первых фидошников российского региона R50) в тот день появилась историческая запись:

      [факсимиле страницы из ежедневника Потапюка]

      Сегодня мы отмечаем двадцать пять лет (четверть века!) со дня этого события.

      Читать дальше →
    • Двенадцать простых начальных шагов разработки модуля для Node.js

      • Tutorial
      [Аристотель]«Начало — более чем половина всего».

      Это очень древний GTD-принцип: возраст его, вероятно, исчисляется тысячелетиями. (Например, Викицитатник в настоящее время приписывает его Аристотелю, хотя и без подтверждающего указания на первоисточник.) Суть его в том, что с чистого листа начинать какой-либо проект бывает очень трудно (и даже приходится заставлять себя); а вот если есть несколько простых начальных шагов, выполнение которых приводит к появлению частично готового проекта, то продолжить работу над ним «по инерции» становится куда проще — так просто, как если бы проект этот ужé был не только начат, но и готов даже более, чем наполовину. А кроме того, когда заранее хорошо знаешь, какими должны быть начальные шаги, то тогда трудно бывает допустить ошибку, совершая их.

      Мне довелось сочинить более десятка модулей для Node.js с открытым исходным кодом и опубликовать их в качестве пакетов npm. Чем больше модулей я делал, тем сильнее понимал (в том числе путём проб и ошибок), что начальные шаги для их создания могут быть одинаковыми и даже могут совершаться в одном и том же порядке. Сегодня я публикую этот порядок в надежде на то, что он станет подспорьем в работе программистов, сочиняющих свой код на языке JavaScript для движка Node.

      Обратите внимание на то, что каждый из этих шагов довольно прост и логичен.
      Читать дальше →
      • +16
      • 14,8k
      • 3
    • Устранение загадочной ошибки «undefined is not a function» в V8

        Джаваскриптовая ошибка «undefined is not a function» довольно загадочна. Как раз поэтому определённым спросом пользуются разъяснительные статьи, из которых читатель, начинающий изучать программирование на JavaScript, способен узнать о том, что такая ошибка (попытка использовать неопределённое значение как функцию) чаще всего возникает при вызове несуществующего метода объекта (а такой вызов, в свою очередь, чаще всего происходит в случае опечатки в названии метода). Такой разъяснительной статьёю может послужить «Ошибки в JavaScript и как их исправить», например.

        Однако и после разъяснений остаётся мысль о том, что обнаружение и устранение опечаток (да и других оплошностей при вызове методов) было бы много проще, если бы название «виновного» метода содержалось непосредственно в тексте появляющейся ошибки.

        Так и вышло:

        Читать дальше →
      • Как запустить простой статический сайт за пять ≈пятиминутных шагов при помощи Node.js и Express

        • Tutorial
        В качестве отклика на инструкцию «Как сделать простой веб-сайт за один час» я решил опубликовать собственную, состоящую из пяти простых и обозримых ≈пятиминутных шагов.

        Шаг 1. Установить движок Node.js в соответствии с инструкциями, имеющимися в вики для каждой из поддерживаемых операционных систем. (Для Windows достаточно скачать и запустить MSI-файл, для CentOS — воспользоваться системным менеджером пакетов, и так далее.)

        Шаг 2. Создать пустой каталог и поместить в нём файл «site.js» следующего содержания:

        site.js
        // Перечисление зависимостей:
        var path = require('path');
        var express = require('express');
        
        // Описание настроек:
        var staticSiteOptions = {
           portnum: 80, // слушать порт 80
           maxAge: 1000 * 60 * 15 // хранить страницы в кэше пятнадцать минут
        };
        
        // Запуск сайта:
        express().use(express.static(
           path.join(__dirname, 'static'),
           staticSiteOptions
        )).listen(staticSiteOptions.portnum);
        

        Настройки staticSiteOptions можно переменить по собственному вкусу.

        Шаг 3. В том же каталоге подать команду «npm install express», которая автоматически создаст подкаталог «node_modules» и установит туда Express, скачав из Интернета.

        Шаг 4. В том же каталоге создать подкаталог «static» и поместить в нём файлы статического сайта. Этот подкаталог станет корнем сайта. Файлы с именами «index.html» будут использоваться как файлы-индексы. Иными словами, при ответе сервера на запрос с адресом, содержащим только имя некоторого каталога (будь то корень сайта или один из его подкаталогов), будет показан файл с именем «index.html» из указанного каталога (если есть).

        Шаг 5. В том же каталоге подать команду «node site», которая запустит сервер. Убедившись в её работоспособности, обеспечить автозапуск этой команды в этом каталоге после каждой перезагрузки операционной системы. (Например, на CentOS 6.2 можно использовать upstart для этой цели.)

        Всё.

        Читать дальше →
      • Использование npm для глобальной установки приложений, наделённых GUI и основанных на nw.js

        • Tutorial
        Команда «npm install» в менеджере пакетов npm чаще всего употребляется для локальной установки зависимостей некоторого модуля, совершаемой в его подкаталоге «/node_modules».

        Однако возможен и запуск этой команды с ключом «-g» (от слóва «global»). Он обеспечивает установку указанного ей пакета в некоторое глобальное (то есть общее для всей системы) место. Кроме того, в PATH (для последующего запуска из любого желаемого каталога) оказывается прописанною та команда, которая была указана в свойстве «"bin"» в файле package.json у установленного пакета.

        Таким общим местом, согласно документации, под Windows служит подкаталог «/node_modules» в каталоге установки Node. В остальных же системах таким общим местом чаще всего оказывается каталог «/usr/local/lib/node_modules» (тогда как Node там устанавливается в каталог «/usr/local/bin»).

        Обыкновенно этот подход употребляется для глобальной установки различных утилит, предназначенных для запуска из командной строки. Вот некоторые примеры:

        • Команда «npm install jshint -g» обеспечивает появление в PATH команды «jshint», служащей для запуска JSHint.
           
        • Команда «npm install browserify -g» обеспечивает появление в PATH команды «browserify», служащей для запуска Browserify.
           
        • Команда «npm install less -g» обеспечивает появление в PATH команды «lessc», служащей для запуска Less.js.

        Однако на CLI (на командной строке) свет клином не сошёлся — и читателям Хабрахабра должно уж вполне быть известно, что приложение на языке JavaScript, употребляющее API Node.js, можно снабдить и GUI (графическим интерфейсом пользователя), сочинённым на языках HTML и CSS. Для этого придётся и запускать такое приложение вместо Node на том движке, который до прошлого года назывался node-webkit, а в нынешнем (2015) году оказался 14 января переименованным в nw.js.

        Ваши GUI-приложения также могут глобально быть установлены в системе из npm-пакета при помощи npm. Давайте поговорим об этом.

        Читать дальше →
        • +22
        • 13,6k
        • 4
      • Операционные системы, потерянные и обретённые внебраузерным джаваскриптом

          В прошлом году понятие «внебраузерный JavaScript» чаще всего означало движок Node.js (а не, допустим, Rhino или SpiderMonkey, сильно уступающие ему в популярности в этой области) или какой-нибудь итог его встраивания (например, node-webkit).

          В нынешнем году в игру вступают форки Node (например, io.js), и их также начинают встраивать — например, проект node-webkit переименовался в nw.js, потому что теперь он использует не Node, а io.js (да и не WebKit, а Blink — с тех давних пор, как Chromium перешёл на этот движок).

          Для программистов это означает, в частности, что может отвалиться (или, наоборот, появиться) поддержка той или иной операционной системы. Давайте поговорим об этом.

          Какие операционные системы перестают поддерживаться?

          Во-первых, первые версии io.js нельзя было установить на Windows XP, нельзя было установить и на Windows 2003. Ещё в середине января казалось, что с этим ничего нельзя поделать: объяснение «io.js компилируется в Visual Studio 2013 Windows Desktop Edition, потому что движок V8 стал полагаться на возможности C++11» воспринималось как приговор — однако затем разработчики поправили дело, так что в файле CHANGELOG.md ветви v1.x можно прочесть, что поддержка этих версий системы Windows возвратилась в io.js, начиная от версии io.js 1.0.3 (20 января).

          Подобно кругам по воде, эти изменения прошли по всей экосистеме движков; например, в nw.js версии 0.12.0-alpha3 на поддержку ещё можно надеяться (хотя лично я ещё не успел погонять эту версию на Windows XP), а в предыдущих альфа-версиях её точно нет (потому что они основаны на более ранних версиях io.js).

          Во-вторых, KaneUA 19 февраля упомянул, что io.js не поддерживает тридцатидвухбитные версии OS X, в отличие от Node.

          Поддержка каких операционных систем может появиться?

          Читать дальше →
        • Автозапуск приложения Node.js на CentOS 6.2

          • Перевод
          • Tutorial
          Для автозапуска приложений Node.js есть много способов, но после некоторых поисков мне удалось отыскать такое решение, которое и работает, и не представляет большой трудности.

          Сперва я испробовал forever работает превосходно, но только до тех пор, пока вам не понадобится запустить приложение при начальной загрузке системы. Я пробовал добавить строчку в /etc/rc.d/rc.local — иногда она срабатывала, а иногда нет, и до сих пор я не разобрался, почему так.

          Затем я поглядел на Upstart и на Monit. Upstart сделал сочинение скрипта для автозагрузчика таким же простым, как autoexec.bat во времена DOS, а Monit умеет проверять приложение, чтобы убедиться, что оно всё время работает.

          Тут я понял, что моя потребность проста: во-первых, запускать приложение при начальной загрузке системы, а во-вторых, перезапускать, если оно упадёт (с приложениями Node.js такое случается) — и одного upstart достаточно для того, чтобы устроить и то, и другое.
          Читать дальше →
        • Встречайте разъединённые разности версий

          • Перевод
          [пример разъёдинённых диффов]

          Теперь есть два варианта разностей версий: объединённые и разъединённые. При помощи переключателя в верхней правой части страницы вы можете переключаться между ними в запросах на слияние, на страницах сравнений и в коммитах. Последний из использованных вами режимов станет предпочитаемым по умолчанию.

          [:metal:]