• Почему Интернету нужен 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
      • 17,5k
      • 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
        • 15,2k
        • 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 достаточно для того, чтобы устроить и то, и другое.
          Читать дальше →
        • Twitter открывает исходный код движка, заменяющего эмоджи на картинки

            Речь здесь пойдёт о символах-картинках и о том, как отображать их.

            По-японски они называются «絵文字» (где «絵» означает «картинка», а «文字» — «символ») или «えもじ», и произношение этого названия можно передавать разными способами: по Хэпбёрну «emoji», по Поливанову «эмодзи», в киричзи у Тассадара — «эмочзи», по Сергею Грису «эмоджи» через мягкий «жи». Этот последний вариант мне больше всего нравится, его-то я и стану использовать и в заголовке, и в тексте.

            Что такое эмоджи? Это миниатюрные пиктограммы и идеограммы, которые можно вставлять в текст почти так же, как и буквы.

            Эмоджи многочисленны. Первый набор эмоджи (который придумал Курита для технологии i-mode в 1998 или 1999 году) содержал 172 символов, состоявших всего-навсего из 12×12 пикселов. Через десять лет в Unicode 6.0 (2010 г.) было ужé 722 эмоджи, а стандарт нынешнего года (Unicode 7.0) дополнил их число ещё примерно четвертью тысячи эмоджи.

            Эмоджи разнообразны. Среди них есть знаки эмоций (смайлики круглоголовые или со звериными ушками, а также различные жесты и позы), знаки Зодиака, шахматные фигуры, грани игральной кости, масти карт, любовные сердечки, священные символы, некоторые значки компьютерного интерфейса (GUI), стрелочки, галочки, крестики (прямые и косые), звёздочки, снежинки, обозначения разных родов транспорта, миниатюрные изображения современных элементов бытовой техники бытовых и технических приборов, орудий и инструментов, обозначения различных вариантов прогноза погоды, различных растений, цветов, зверушек, блюд (в основном японской национальной кухни), фаз луны, часов дня, празднеств, времён года, музыкальных инструментов, спортивных состязаний, аттракционов, различных зданий (гостиничных, вероисповедных, больничных, фабричных…), и так далее, и так далее.

            А выражение «почти так же» я чуть выше употребил потому, что эмоджи всё же нельзя в полной мере считать обычными символами. На то есть две причины.

            Читать дальше →
          • Встречайте стиль CSS, предназначенный для чтения GeekTimes во всю ширину экрана

              У меня есть краткое информационное сообщение для пользователей браузера Mozilla Firefox, развёртывающих браузер на весь экран FullHD или бóльшего размера.

              Я только что доработал свой стиль для расширения Stylish: теперь он не только Хабрахабр, но и GeekTimes растягивает во всю ширину окна браузера.

              Кому надо — воспользуйтеся.

              Код открыт (CC BY).
            • Блокировка ранобэ на сайте «Бака-Цуки»

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

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

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

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

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

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

                Читать дальше →
              • Встречайте разъединённые разности версий

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

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

                [:metal:]
              • Гипертекстовый векторный Фидонет

                  22 ноября 2005 года Михаил Тулупов (2:5020/2015.39), обращаясь ко мне в эхоконференции Ru.Fidonet.Today по поводу моих замыслов гипертекстового Фидонета, так присоветовал:
                  Очень желательно стандартно поддержать какой-нить несложный векторный стандарт (SVG/EMF/EPS как вариант). Сильно сэкономит траффик.
                  И действительно, принятый в Фидонете в ту пору обычай использовать псевдографику требовал заметно больше траффика под свои нужды, чем SVG. Вот почему с тех пор я считаю, что в идеале Фидонету необходимо быть не только гипертекстовым, но также и векторным о чём я с тех пор сообщал сперва во блогозаписи «Два идеала прозреваемых, но покамест не достигнутых», а затем и в других местах.

                  Что такое гипертекстовый векторный Фидонет? — в узком смысле это возможность перейти в Фидонете к векторному файлу по URLу (то есть по стандартному адресу) этого файла, для чего URL придётся либо встретить в виде гиперссылки (и жмякнуть её мышóю), либо вбить в строку адреса в фидобраузере вручную. Откроется векторная картинка, размер которой можно будет произвольно менять вместе с размерами того окошка браузера, в котором рисунок содержится — то есть совершенно так же, как и в Интернете:

                  [гипертекстовый векторный Фидонет]

                  Перед вами — анимированный ряд скриншотов сегодняшней сборки моего фидобраузера, которому я дал название «PhiDo» (а точнее — «φ道»); как видите, сегодня (совершив 245 коммитов со дня прошлогоднего начала разработки исходного кода PhiDo) мне удалось вплотную приблизиться к вышеозначенному идеалу.

                  Читать дальше →
                • Нужен ли на Хабрахабре отдельный хаб об айтишной терминологии?

                    Блоггер Antorix опубликовал в хабе «Яндекс» блогозапись «Яндекс.Деньги? Яндекс-Деньги? Яндекс-деньги? Яндексденьги?» (25 июля 2011 года), которую читатели встретили с одобрением (рейтинг +33).

                    Тот же блоггер опубликовал в хабе «Google» блогозапись «Чего стесняемся, Google?» (12 августа 2011 года), которую читатели встретили с ещё бóльшим одобрением (рейтинг +232).

                    Вчера вечером тот же блоггер прорекламировал свой блог («Заметки брюзжащего переводчика»), и можно отметить, что это немало печалит тутошнюю публику: почему, дескать, не на Хабрахабре пишет этот переводчик свои заметки о переводах IT-терминологии?

                    Но в каком хабе было бы возможно на Хабрахабре публиковать и обсуждать такие рассуждения? Вот, знаете ли, главнейшая проблема. Ведь понятно, что терминологию Гугла и Яндекса Antorix смог прежде справедливо критиковать на Хабрахабре потому только, что кстати подвернулись хабы, одноимённые этим компаниям. А могло бы не случиться и этого. Мне представляется поэтому, что на Хабрахабре не помешал бы отдельный хаб, посвящённый айтишной терминологии — и именно терминологии вообще (а не одним только переводам), потому что иной раз хочется поднять вопрос не только о том, как перевести тот или иной термин (с английского или иного языка на русский), но и вопрос о том, как следует назвать ту или иную айтишную новинку вполне отечественного происхождения (причём как раз рассуждение про «Яндекс.Деньги» может служить примером этого второго варианта).

                    Читать дальше →
                  • Няш-меш

                      Судя по сообщению в «Российской газете», вчера на официальном портале правовой информации появился подписанный Путиным так называемый «закон о блоггерах», который повелевает популярным «блоггерам» пройти официальную регистрацию в России и соблюдать закон о СМИ под страхом блокировки.

                      Я ставлю «блоггер» в кавычки, потому что это слово — фиговый листок. Всякий может скачать PDF закона и убедиться в том, что статья 10² начинается так: «Владелец сайта и (или) страницы сайта в сети «Интернет», на которых размещается общедоступная информация и доступ к которым в течение суток составляет более трёх тысяч пользователей сети «Интернет» (далее — блогер), при размещении и использовании указанной информации, в том числе при размещении указанной информации на данных сайте или странице сайта иными пользователями сети «Интернет», обязан обеспечивать соблюдение законодательства Российской Федерации…».

                      Стало быть, это не только блогосферы касается. Такими страницами являются, например, не только все мои блогозаписи на Хабрахабре в этом году (кроме одного малопосещаемого перевода, не дотянувшего до 3000), но также, например, и описание API jQuery, и даже файл README.md в репозитории модуля node-sqlite3, который (в составе npm-пакета) подвергается десяткам тысяч скачиваний ежемесячно:

                      [информация о модуле]

                      Кроме того, таковы и вообще все-все сколько-нибудь популярные зарубежные сайты (репозитории, магазины, библиотеки, галереи, пособия, СМИ, блоги, игры…) и отдельные страницы, владельцы которых уж конечно не побегут, задрав штаны, регистрироваться в России — и, более того, бережно хранить итоги полугода пристального слежения за всеми своими посетителями для предоставления в органы.

                      Закон начинает действовать 1 августа. Осталось 86 дней до превращения ситуации с Интернетом в России в ситуацию совершенно северокорейскую. То есть, хотя во второй половине прошлого года я сравнивал положение дел с Кувейтом ([1], [2], [3]) — простите, был не прав: даже Кувейт для нас ещё очень долго (может быть, даже вечно, вечно!…) будет недосягаемым оазисом относительной свободы Интернета.

                      Читать дальше →
                    • Изготовление сферической панорамы гуглокамерою

                        Три дня назад (16 апреля 2014 года) в Google Play было опубликовано приложение «Google Камера», ранее доступное только для владельцев Nexus. Позавчера (17 апреля) я о нём прочёл на AndroidInsider.ru, скачал, попробовал изготовить сферическую панораму. Удалось.

                        Делюсь впечатлениями.

                        Прежде всего скажу, что приложение (которое я для простоты стану называть гуглокамерою) устанавливается только на KitKat (Android 4.4). Вчера я пробовал установить его на одну из прошлогодних моделей Galaxy Tab, всё ещё работающих на Jelly Bean (Android 4.2) — эта попытка окончилася неудачею. Однако на мобильник HTC One (даже на первую модель, а не нынешнего года) гуглокамера устанавливается невозбранно.

                        При запуске гуглокамера открывается на полный экран:

                        [скриншот]

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

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

                        Изготовление отдельных фотографий происходит полуавтоматически по принципу, который поясняется подсказкою «для начала поместите точку в круг» («to start, keep dot inside circle»). В центре поля зрения находится кружок, которым необходимо «поймать» точки, расположенные на параллелях сферы на равном расстоянии друг от друга (причём на экваторе сферы, который соответствует горизонту фотографа, таких точек побольше, а на остальных параллелях точек тем меньше, чем ближе параллель к зениту над головою у фотографа или к надиру под ногами); в такие-то моменты фотоаппарат, в точности нацеленный на очередную точку, делает фотоснимок.

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

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

                        Читать дальше →
                      • Информационно-технологические средства практического выживания социальных сообществ в условиях отключения Интернета в 2014 году

                          В декабре прошлого (2013) года было обнародовано сделанное на специальной пресс-конференции заявление Александра Гостева (эксперта «Лаборатории Касперского»), согласно которому нынешний (2014) год станет последним годом для Интернета в России. Власти России, как сообщил Гостев, нацелены создать национальную сеть с ограниченным доступом к иностранным ресурсам.

                          Месяцем позже (в январе нынешнего года) появление законопроекта, предусматривающего уведомительный порядок создания серверов в Интернете, показало наинагляднейше, что Гостев скорее преуменьшил масштабы намерений отечественных законодателей. Сперва (26 февраля) стало известно, что этот законопроект одобрен комитетом Госдумы по информационной политике, что он готовится ко прохождению первого чтения в Госдуме; затем, буквально через два дня (28 февраля) стало известно также, что законопроект был принят Госдумою в первом чтении. Каким же окажется дальнейшее развитие событий? Можно подозревать, и небезосновательно, что в итоге всё сложится примерно так же, как получилось с митингами и иными массовыми сборищами граждан: прописанный в законе уведомительный порядок закономерно со временем превратится de facto в разрешительный, а количество таких серверов, разрешённых к массовому посещению через Интернет в России, окажется более близким к той прозорливой и мрачной оценке ≈1943 года, которую иногда приписывают Томасу Дж. Уотсону, тогдашнему президенту IBM (см. фото) — не более пяти штук в год.

                          Сразу скажу: стремясь с максимальною пользою употребить пару-тройку сотен последних дней существования Хабрахабра, я, уж конечно, не стану обсуждать политические меры противодействия вышеозначенной законодательной инициативе, ведь правилами Хабрахабра это запрещается. Также я ни словом не коснусь её влияния на бизнес, чтобы не попасть за это в хаб-оффтопик. Как раз наоборот — предметом моей заботы станет практическое выживание вполне некоммерческих социальных сообществ, притом достигаемое не политическими, а сугубо айтишными средствами. Вот почему изложенные ниже мысли хочется донести не только до Хабрахабра (что частично получилось бы и с оффтопиком), но также и до внешних (по отношению к Хабрахабру) сообществ его незарегистрированных читателей. За такое нынче, правда, также с недавних пор попадают — да не в хаб-оффтопик, а прямо в чёрный список Федеральной службы охраны (коллекционирующей имена, адреса и другие данные о негативно настроенных интернетчиках) — но это, по-видимому, неизбежное зло. Не всем дано, единожды постигнув пользу Интернета, позитивно относиться к намерениям тех лиц, которые сейчас его деятельно ненавидят и стремятся уничтожить. Скорее дано противоположное. Подозреваю поэтому, что недалёк уж и тот час, когда недовольство сделается поголовным — и ФСО неизбежно придётся закупить базу абонентов Ростелекома (и других провайдеров) да воспользоваться именно ею вместо собственных чёрных списков.

                          Суть такова: к грядущему постепенному уничтожению Интернета неплохо бы оказаться готовым. Готовы ли вы? Возможна ли альтернатива Интернету, свободная от фатальных недостатков, предопределивших его уничтожение?

                          Предлагаю простое мысленное упражнение ума. Вообразите себя участником обширного социального сообщества, сформировавшегося в Интернете и объединяющего жителей различных отдалённых городов — объединяющего граждан, вполне далёких от личного знакомства и общения в так называемом реальном мире. Один или два сервера, важных для этого сообщества, ужé показывают «ошибку 451°» вместо своей заглавной страницы; а совсем скоро (возможно, ужé къ столѣтію Міровой войны?…) всѣ, всѣ его серверы въ Интернетѣ раздѣлятъ ту же судьбу въ Россіи: сѣть «Интернетъ» станетъ для нихъ «Интернѣтомъ» (отъ слова «нѣтъ»).

                          Кроме того, вы айтишник.

                          Читать дальше →
                        • Графики вклада с учётом часовых зон

                          • Перевод
                          7 марта мы добавили ко графикам вашего вклада учёт часовых зон. GitHub используется повсеместно — и мы хотим, чтобы это отразилось в его возможностях. Если вам довелось работать из Японии, Австралии или Улан-Батора, мы хотим учитывать ваш вклад с вашей точки зрения.

                          При подсчёте коммитов мы станем учитывать информацию о часовой зоне, присутствующую в метке времени из этих коммитов. Создаваемые во Всемирной Паутине проблемы и запросы на слияние станут использовать часовую зону вашего браузера. Если вы пользуетесь API, то также сможете указать свою часовую зону.

                          Испортить вашу нынешнюю полосу продуктивной работы мы не хотим, так что учёт часовых зон начнётся только для вклада, совершённого после понедельника 10 марта 2014 года (Temps Universel Coordonné).

                          Желаем весело провести время (вашей зоны)!
                        • Keypress 2.0.0

                            Семнадцать дней назад (19 января 2014 года) вышла новая версия (2.0.0) джаваскриптовой библиотеки Keypress, предназначенной для удобного программирования реакций браузера на события, поступающие от нажатий (и от отпусканий) клавиш на клавиатуре.

                            Опубликованный на Гитхабе список изменений позволяет уверенно огласить вот что: важнейшим из достоинств новой версии стала возможность ловить события не только во всём окне в целом, но и для одного или нескольких отдельных элементов DOM. Теперь и при программировании различающихся реакций у различных элементов на веб-страницах мы можем с удобством прибегнуть к библиотеке Keypress вместо тех её более ранних и более популярных аналогов (например, jQuery.Hotkeys), которые уступают Keypress по богатству возможностей.

                            [Keypress]

                            Возможности же эти вот каковы:

                            • Реакция на нажатие и отпускание одной или нескольких клавиш. Поддерживаются синонимы кросс-платформенные (например, "meta" означает "cmd" или "ctrl" в зависимости от системы) и шифтовые (например, "@" означает сочетание Shift и двойки).
                               
                            • Программируемые сочетания клавиш могут включать в себя не только классические модификаторы ("meta", "alt", "option", "ctrl", "shift", "cmd"), но и какие угодно другие клавиши. Например, программируя WASD-управление пошаговою бродилкою, нетрудно достигнуть того, чтобы нажатие и отпускание клавиши «W» означало шаг вперёд, но «W» и «D» совместно — шаг по диагонали вперёд+направо.
                               
                            • Возможно указание сочетаний клавиш, состоящих не из одновременных, а из последовательных нажатий клавиш. Это такие сочетания, как код Конами, например.
                               
                            • Специальные «считающие» комбинации позволяют программировать такие ситуации, в которых нажатие основной клавиши обнуляет некоторый счётчик, а каждое нажатие дополнительной клавиши (при удержании основной) увеличивает этот счётчик на единицу. David Mauro (автор Keypress) приводит в пример такое сочетание Tab+Space, при котором нажатие Tab тотчас же открывает первую вкладку в некотором наборе вкладок, а каждое нажатие на пробел (при удержании Tab) перебрасывает на следующую вкладку — на вторую, на третью, на четвёртую…

                            Для каждой одиночной клавиши (или для комбинации) возможны дополнительные настройки. Эти настройки позволяют при необходимости сделать вот что:

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