• Почему Интернету нужен 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
      • 16,3k
      • 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
        • 14,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 достаточно для того, чтобы устроить и то, и другое.
          Читать дальше →
        • Блокировка ранобэ на сайте «Бака-Цуки»

            [логотип]По адресу https://antizapret.info/?search=baka нетрудно убедиться в том, что сайт «Бака-Цуки» (логотип которого я привожу справа; это одно из крупнейших в мире хранилищ неофициальных переводов японских ранобэ) с 1 августа 2014 года в России был заблокирован по указанию Роскомнадзора. Официально блокировка касается четырёх URLов, на сáмом же деле многие крупные провайдеры («Ростелеком», например) блокируют сайт целиком.

            Что такое ранобэ? Этим словом (как вы можете прочесть в Википедии) называются японские развлекательные истории для подростков и молодёжи — это небольшие книжки, текст в которых перемежается иллюстрациями, стиль которых напоминает мангу или аниме.

            Вот и блокировка сайта «Бака-Цуки» связана не с тем, например, что сочинение перевода ранобэ без согласия авторов может восприниматься óрганами как «пиратство» — а только с тем, что рисование в стиле манги в некоторых случаях может восприниматься óрганами как «педофилия». (Оба слóва эти приходится поставить в кавычки: под хабракатом я попробую перечислить признаки того, что к сексу с детьми эти рисунки имеют настолько же отдалённое отношение, насколько перевод иллюстрированной ими книги далеко отстоит от нападения на морские суда.)

            На наших глазах продолжает раскручиваться маховик репрессий, направленных для затруднение доступа к информации потребителям японской визуальной культуры в Интернете. (Для простоты я стану здесь говорить об «анимешниках», хотя речь идёт о поклонниках не одного только аниме, но также и манги, ранобэ, визуальных романов, данмаку, мини-скульптур, дакимакур, и так далее.) Предлогом для блокировок сайтов (а также, возможно, и конечною целью их) является шельмование анимешников в качестве «педофилов».

            Два предыдущих оборота этого маховика мы обсудили на Хабрахабре в прошлом году: это были блокировки какого-то аниме (14 июня 2013 г., «Роскомнадзор признаёт хентай детским порно, призывает к подаче жалоб, обещает пополнение реестра запрещённых ресурсов в Интернете») и затем какой-то манги (24 сентября 2013 г., «Роскомнадзор запрещает двадцать девять японских комиксов "манга", приравнивает к сексу с детьми»). Что это было за аниме, что за манга? Да кто ж их знает! — и в том, и в другом случае, к сожалению, читатели «Хабрахабра» (среди которых ≈37% анимешников) не располагали списком названий конкретных заблокированных произведений и поэтому никак не могли самостоятельно оценить справедливость принятых Роскомнадзором решений; нам оставалось только вздрагивать от явно чрезмерных оценок, публикуемых на всю страну со слов того или иного эксперта («потребители такого рода контента — психопаты», «их можно назвать эстетами от извращенцев», «"манга" мы рассматриваем как вид творческой деятельности, давший начало развитию "хентая"», вот это всё в одних только «Известиях»).

            С блокировкою «Бака-Цуки» положение дел куда лучше: сделалися известными точные адреса заблокированных материалов — следовательно, есть у нас и возможность делать самостоятельные выводы о них. Приступим же к этому занятию.

            Читать дальше →