• Emoji.prototype.length — рассказ об эмоциональных символах в Юникоде
    +2
    Хабр довольно враждебно настроен к Эмодзи (здесь они просто не отображаются)
    Проблема № 61.
  • «Hello, (real) world!» на php в 2017 году
    +1
    Если Node.js и npm установлены, то тогда PHP вообще не очень нужен, ведь можно поверх ставить web-сервер (например, Express.js) и шаблонизатор (например, Handlebars.js) и далее на них сайт подымать. (Я пишу это отчасти иронически — но не более, чем наполовину.)
  • Async/await это шаг назад для JavaScript'a?
    +3
    Я сейчас скажу довольно мрачную и пессимистическую вещь, отрицающую плоды прогресса даже сильнее, чем вышепереведённая мысль отрицает их.

    Мне кажется, что спохватываться надо было гораздо раньше: по сравнению с возможностями библиотеки Async даже промисы выглядят шагом назад.

    Дело в том, что у промисов есть метод «Promise.all», тогда как у библиотеки Async есть не только ананалогичный ему метод «async.parallel» (а также другой метод «async.waterfall», аналогичный цепному вызову промисов через их «.then»), но и ещё почти шестьдесят других удобных методов. Оговорюсь, что из них лично я использую никак не больше десятка, но, во-первых, даже этот десяток не горю желанием сочинять самостоятельно ради перехода на промисы, а во-вторых, меня радует сознание того, что за пределы этого десятка я всегда смогу (при малейшей необходимости) выйти почти мгновенно, потому что там ждут меня ещё полсотни готовых методов, которые опять же не придётся сочинять самостоятельно.

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

    То, что новый фреймворк сделали частью языка, в практическом отношении ничего особенного не меняет. (Кроме того только, что процессу переизобретения велосипедов будет сопутствовать не менее увлекательный процесс подпирания костылями-полифиллами всех тех прежних версий, которые останутся в прежних браузерах.)

    Поэтому лучшее, что можно сделать с промисом — это сунуть его в «async.asyncify» и дальше коллбекнуть по старинке.

    Your callback hell is my home.
  • Как сделать кроссплатформенное десктопное приложение на базе веб-технологий
    +8
    Так как перед нами расшифровка одного из выступлений на конференции FrontendConf, и так как конференция эта проводится летом в начале июня (по крайней мере, так пишут на сайте про нынешний год), то изложенные в выступлении свéдения нуждаются в некотором осовременивании (может быть, на полгода, а может быть, и на полтора года; что-то я нигде не увидел даты этого выступления, честно говоря) для того, чтобы соответствовать положению дел января 2017 года.

    Движок NW.js больше не использует движок io.js в качестве средства для поддержки Node API; после того, как io.js влился обратно в Node.js, последующие версии NW.js также возвратились на Node.js. Так, например, стабильная версия NW.js v0.19.5 использует Node.js v7.4.0, и вышедшая сегодня (19 января) предрелизная версия NW.js v0.20.0-rc1 также использует Node.js v7.4.0.

    Движок NW.js больше не использует простой нодовский вызов «require()», который в браузероподобном контексте создавал пусть и преодолимые, но всё же досадные проблемы совместимости с RequireJS. Теперь используется вызов «nw.require()», вынесенный в отдельное пространство имён «nw».

    В то же пространство имён вынесены те элементы API NW.js, которые ранее были доступны через вызов «require('nw.gui')»; таким образом, например, вместо «require('nw.gui').Window» теперь пишется попросту «nw.Window», а вместо «require('nw.gui').Shell» теперь пишется попросту «nw.Shell», и так далее.

    (В качестве примера изменений, к которым это приводит, можно посмотреть вон те правки, внесённые 26 октября 2015 года в один из моих проектов на Гитхабе.)

    Внутрь package.json теперь нет необходимости вписывать «"toolbar": false» для отключения навигационной панели, потому что теперь её нет. Соответственно, нет и шестерёнки на ней, а отладка вызывается по F12, как в Chrome. (Вызывается в SDK-содержащей версии движка NW.js. Сборка приложений для конечных пользователей, как правило, делается без средств отладки.)

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

    В остальном вышеизложенное выступление вполне справедливо. Веботехнологическая и притом кросс-платформенная разработка — это залог довольно быстрого создания сайтоподобных GUI-приложений. Как показывал AndyGrom, такие приложения могут иметь и вебсерверную часть на основе Express.js.
  • Что общего между написанием Властелина колец и программированием?
    +13
    Слово «Git» в этом историческом экскурсе зазря используется вместо более общего понятия «VCS», да и то в лучшем случае метафора.
  • 19 неожиданных находок в документации Node.js
    +3
    Если сделать просто «require('lodash')», но не присвоить присвоить результат «require('lodash')» в явном виде той переменной, имя которой состоит из знака подчёркивания (такое имя переменной чаще всего и используется пользователями lodash), то тогда этот результат присвоится этой переменной автоматически, но не менее автоматически пропадёт (то есть переменная эта переприсвоится) на следующем же шаге REPL — оттого, что в REPL переменная с таким именем имеет особый смысл, что также сказано в документации Node.js.
  • Я отказался от PGP
    +7
    Может быть, это просто аллюзии друг на друга у них, но может быть, что до специалистов по безопасности (до одного за другим) постепенно добирается Моссад (ну не непременно Моссад — может быть, ЦРУ или какая-нибудь другая гэбэшечка), после чего они испускают вот такой завуалированный крик о помощи — а затем, делать нечего, превращаются в агентов влияния, ретранслирующих внутрь сообщества (и подкрепляющих своим авторитетом) мнение о том, что крипто тягостно и не нужно, люди мы маленькие и незначительные, а преступность и гэбэшечка до нас всё равно, если что, доберётся, крипто не нужно, острой сатиры не нужно, альтернативных СМИ не нужно, Тор не нужен, аниме не нужно, прямые выборы губернаторов не нужны, Викиликс не нужен, короткоствол не нужен, Сноуден не нужен, велосипед не нужен, Крым не нужен, широкий тротуар не нужен, Фидонет не нужен, и так далее.
  • Вы не супергерои: пожалуйста, прекратите ставить себе задачи, с которыми вы пока что не справляетесь
  • 20 полезных Node.js фреймворков
    0
    Там с такою непринуждённостью совершается разделение MVC-фрэймворков на «Sinatra-подобные» и «Rails-подобные», как если бы термины эти могли что-то значить не для одних только программистов на языке Ruby, решившихся потихоньку переходить на JavaScript.
  • Практическое руководство по VR-дизайну
    +1
  • 20 полезных Node.js фреймворков
    –1
    У меня вопрос насчёт первого из упомянутых выше фрэймворков — насчёт Express.js:
    В этом вопросе я имею в виду, разумеется, возможность употребления такого анализатора логов посещений, который был бы сочинён на JavaScript для Node, а по возможностям был бы сколько-нибудь сопоставимым или же превосходил всех таких динозавров донодовской эпохи, каковы AWStats, Webalizer и проч.

    Есть ли такие?
  • Список бесплатных DNS-сервисов
    0
    Но ведь, судя по заглавной странице, там только DynDNS и только на их домене hldns.ru? (Я ещё не регистрировался.)
  • Первый частный город в России, быть или не быть? Часть 1
    +2
    Хочу дать два совета автору.

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



    Найдите на нем Геленджик.

    Лично у меня фотографии российских курортов не вызывает желание туда поехать, а у вас?
    Мне кажется, что формулировка этой задачи предполагала у читателей готовность прийти к выводу о том, что Геленджик — вот этот город:

    [вот этот город?]

    И читатели поневоле пришли к нему; этот вывод там (в комментариях) вроде как никто и не оспаривал. А я оспорю. Дело в том, что сразу на нескольких сайтах ([1], [2], [3]) именно эта фотография (или не в точности именно эта, но необыкновенно схожая) приводится в качестве фотографии не Геленджика, а Новороссийска — города, расположенного в нескольких десятках километров северо-западнее и не относящегося к числу курортов.

    (Откуда взялась эта фотография на самом деле? В каком году она сделана, какой район Геленджика она должна изображать и есть ли он в Геленджике на самом деле?)

    Второй совет вот каков: рекомендую к прочтению подборку текстов «Traditional City / Heroic Materialism Series Archive», и прежде всего — любопытную дихотомию «Place and Non-Place» и ещё, может быть, «Life Without Cars 2014».
  • Первый частный город в России, быть или не быть? Часть 1
    0
    Изобилие пыли в сухую погоду и слякоти во влажную погоду — это проблема не климата, а градоустройства.

    Чтобы не было пыли и слякоти, просто не надо газоны делать выше уровня тротуаров и дорог, а не то частицы почвы будут при каждом дожде стекать вниз и опылять город.

    Ну и, конечно, часть решения проблемы — беспощадная борьба с автомобилистами. Если и не со всеми вообще, то хотя бы с теми, которые паркуются на газонах и пустырях, раздалбывая почвенный слой и разнося его по всему городу в виде грязи на своих колёсах.

    Ну и вторичные меры — например, омыв колёс строительных автомашин при выезде со стройки.

    Причём устранение чрезмерного автомобилизма должна начинаться с создания альтернатив.

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

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

    Вы также осуждаете положение дел при тёплой зиме, но позвольте в ответ заметить, что положение это сильно зависит от климата — например, если осадков мало, то либо вовсе не будет слякоти при небольшой плюсовой температуре, либо будет мало и недолго. Обратите внимание на ту свободу от чрезмерной влаги, которую можно наблюдать на улице вчерашнего Геленджика — улицу эту можно назвать почти совершенно сухою:
    Оборотной стороной малых осадков является явный недостаток собственной воды, свойственный тому же Геленджику (а также, например, Сингапуру, где он усиливается изобилием населения).
  • Легкий способ потерять клиентов или почему не следует использовать Google CDN
    +1
    Думаю, со временем эта проблема уйдёт в прошлое по мере того, как станет возрастать употребление P2P-распределённой файловой системы IPFS, которая одновременно сыграет роль CDN (причём такой CDN, в которой узлы доставки — сами пользователи) и роль хостинга статических (неизменных) файлов (например, библиотечных джаваскриптов определённой версии). Достаточно браузеру одного китайца преодолеть Стену для того, чтобы скрипт разошёлся по всей Поднебесной.
  • Новый пуленепробиваемый синтаксис @font-face
    0
    Как гласит официальная документация от Корпорации Microsoft, IE8 не поддерживает data длиннее 32 768 символов. Если учесть ещё и избыточность base64-кодировки, то получится, что это вопиюще неподходящий способ подключения шрифтов в IE8 (разве что шрифт попадётся двадцатикилобайтовый или ещё того меньше).
  • Работа в IPFS с человеческим лицом
    0
    Вкратцѣ: нѣтъ, тамъ SHA-2.
  • Node.js и JavaScript вместо ветхого веба
    +2
    Вновь подтверждён Закон Этвуда: «Всё, что может быть написано на JavaScript, будет написано на JavaScript».
  • Node.js и JavaScript вместо ветхого веба
    +3
    Сразу изменить и протокол, и формат передачи, и серверную часть, и базу данных, и клиент-браузер.

    Затея интересная, но трудоёмкая.

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

    Вообще смотрю на этот широкий замах с умилением. Что-то подобное, причём весьма подобное, я и сам ощущал да испытывал, задумывая гипертекстовый Фидонет. Совершенно так же смотришь на технологии многодесятилетней давности и желаешь всё в них переменить: и разметку фидотекста (устроить гипертекст), и редактор-просмотрщик (поставить фидобраузер), и формат баз фидопочты (обеспечить поддержку хотя бы SQL-подобных запросов, если не Mongo-подобных map+reduce), и эхопроцессор (чтобы он работал с этой новой базой), и фрекопроцессор (чтобы можно было запрашивать не только файлы, но и сообщения фидопочты), и мейлер (чтобы вместо прежних двоичных пакетов в жёстком формате обмениваться каким-нибудь JSON), и так далее. В итоге оказалось, что и одного только фидобраузера хватит надолго повозёхаться.

    (Правда, я не располагал отделом R&D размером в десяток человек. Располагая таким отделом, много чего можно достигнуть. Желаю удачи, разумеется.)
  • Зачем нам jQuery?
    0
    Не нужно, но полезно, так как у jQuery API более краткий и мощный.

    Пример — метод «on».
  • It’s the future
    0
    Ну, на это есть готовый ответ — подраздел «Обобщение метода» во блогозаписи «Двенадцать простых начальных шагов разработки модуля для Node.js».
  • Кэш, хэш и няш-меш
    0
    И так как NickKolok желал знать моё мнение, то вот оно: я также считаю, что для распределённого хранения данных с адресацией по контенту более всего подходит IPFS.

    Рекомендую к прочтению блогозапись «Почему Интернету нужен IPFS, пока ещё не поздно» и её обсуждение на Хабрахабре.
  • Эволюция мобильных платежей
    0
    Надеюсь, понятно, что в России участники и пользователи любых подобных разработок будут подвергаться разнообразным преследованиям и ущемлениям под тем предлогом, что они участвуют в деятельности террористических и экстремистских организаций, в том числе финансируя и даже основывая их, совершают самоубийства и подталкивают к ним, покупают и продают наркотики и налаживают их производство и распространение, растлевают детей и животных и покемонов обоего пола (после чего публикуют и просматривают в своём Интернете эти сцены на своих компьютерах), получают финансирование из-за рубежа и выполняют зарубежные задания, распространяют нелицензионные объекты авторского и патентного права (включая аниме, мангу, визуальные романы, ранобэ, данмаку — и даже, страшно сказать, дакимакуры!), не платят налоги и сборы (в том числе акцизные) и способствуют укрывательству средств, создают денежные и иные суррогаты (в том числе водочные), участвуют в захвате рабов и в последующей работорговле, подкупают должностных лиц и законодателей, и так далее, и так далее.

    Скоро и владение смартфоном будет вызывать вопросы.
  • Похоже, Github опять недоступен в России… и другие сайты
    0
    Яровая, Мизулина, Роскомнадзор, Роспотребнадзор и даже лично Путин — местная проблема в РФ. И почему мы ещё не добились, чтоб  —  —  —

    Вот потому и не добились.
  • Похоже, Github опять недоступен в России… и другие сайты
    +2
    Аналогично. Ростелеком-Юг. В опросе ответил «да».
  • «Молчание – золото»: 13 вещей, которые не стоит говорить разработчикам и тестировщикам
    0
    Мрачно подозреваю, что это антиклерикалисты.
  • Дополненная реальность и социализация людей на новом уровне
    +2
    А вон та девушка вдалеке… Судя по её статусу, она не против познакомиться.
    …но только до тех пор, пока она не взглянет в дополненной реальности в зеркало и не увидит над головою пришедшее из TOR анонимное сообщение «6 биткоинов тому, кто убьёт её; 7½ биткоинов каждому, кто заметно искалечит её способом, исключающим немедленную смерть».

    (Не слишком сочувствуйте ей, потому что рано или поздно и Вы также через свою систему поглядите в зеркало и увидите, например, сообщение «10 000 дирхемов ИГИЛ¹ за голову создателя системы дополненной реальности, существенно упростившей деятельность армейских операторов дронов-убийц в США». Или, наоборот, «100 000 долларов США за сведения, способствующие аресту включённого в список FBI Most Wanted создателя заведомо противозаконной системы дополненной реальности, существенно упростившей и вербовку, и деятельность террористических ячеек ИГИЛ¹ на территории США; после ареста подлежит лишению гражданства и помещению в Гуантанамо». Или, скорее всего, «950 000 рублей за задержание создателя системы дополненной реальности, использующейся экстремисткими суицидниками наркотерроризма с целью биткоинистической педофилии в Интернете; после задержания передать в ближайший отряд Росгвардии для химической кастрации согласно Федеральному закону от 29.02.2012 г. № 14-ФЗ и его поправкам 20XX года, а равно и для последующей многолетней следственной изоляции».)

    Вообще пора бы рассматривать для начала то, каким образом каждое изобретение может быть использовано во зло.

    Придумали колючую проволоку для защиты овец от волков — сами окажетеся овцами за колючею проволокою в концлагерях и шарашках.

    Придумали взрывчатку для горных работ — получите расцвет бомбизма-терроризма на столетие вперёд и куда более опустошительные войны.

    Расщепили ядро атома — тысячелетиями живите под дамокловым мечом уничтожения всей биологической жизни.

    Изобрели хорошо сжимающий аудиокодек (видеокодек) — получите долгосрочные архивы всех (видео)телефонных переговоров в руках у государства и на чёрном рынке.

    Изобрели нейросети распознавания — поздравляю, теперь рыться в архивах будут не ваши противники, а их автоматика.

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

    ____

    ¹  Террористическая организация, запрещённая в Российской Федерации.
  • Принят закон о налоге на Гугл
    0
  • Официальная Российская криптовалюта. Что это будет за зверь?
    0
    Мрачно подозреваю, что в данном случае название «крипо-валюта» происходит не от английского слóва «creepy», а скорее от немецкого «Kripo» в значении «Kriminalpolizei».
  • Назад в будущее: «Мегамозг» возвращается на «Хабрахабр»
    +1
    Ограничивать возможности отклика и кармогенерации, а не регистрации.

    В качестве аналога поглядите, как работают на Хабрахабре и на GeekTimes учётные записи типа «Read & Comment».
  • Уменьшаем размер публикуемых npm модулей
    0
    Мне психологически проще работать в таких обстоятельствах, когда приходится заносить ненужные файлы в black list, а не в таких обстоятельствах, когда приходится заносить нужные файлы в white list.

    Почему проще?

    Потому, что так меньше цена возможной ошибки.

    Ведь если я позабуду занести ненужный файл в black list, то пакет всего лишь напрасно распухнет в объёме; но если я позабуду занести нужный файл в white list, то пакет вообще не будет корректно работать.
  • Назад в будущее: «Мегамозг» возвращается на «Хабрахабр»
    +6
    Хорошо бы ещё «Тостер» вернулся в виде топиков-вопросов с ответами-кармогенераторами.
  • Уменьшаем размер публикуемых npm модулей
    +5
    Читателей этой блогозаписи хочется лишний раз предупредить, что файл .npmignore используется утилитою npm не как дополнение к .gitignore, а как замена. Так что создавать .npmignore лучше всего копированием .gitignore с последующим доредактированием, а не то можно обнаружить в пакете много лишнего.
  • CDN — новый стандарт трансляции видео
    +1
    Во времена расцвета DVD-рынка, который несомненно был платным (причем люди платили и за пиратские, и за легальные диски живые деньги), его доход составлял 3 миллиарда долларов. В 2014 году весь рынок легальной интернет-дистрибуции контента принёс примерно 125 миллиардов рублей, то есть порядка 2 миллиардов долларов по нынешнему курсу. Так что разговоры о том, что наши пользователи не готовы ни за что платить — это миф, который старательно распространяется пиратами и тиражируется СМИ.
    После этой реплики должен явиться оккультно-финансовый мистик и возражать с духовностных позиций, что во времена DVD-рынка люди платили и за пиратские, и за легальные диски живые деньги, а теперь люди платят и за пиратские, и за легальные файлы мёртвые деньги. И скорбно покачать головою.
  • Эмодзи?! Нет, не слышал
    +2
    Следует упомянуть, что по адресу https://github.com/twitter/twemoji/ на Гитхабе расположено твиттеровское решение этой проблемы (с открытым исходным кодом, как это чаще всего и случается на Гитхабе), и упоминаю.
  • Ubuntu интегрировали в Windows 10
    0
    Вместо apt-get можно Chocolatey запускать, например. (Даже имена некоторых пакетов совпадают, между прочим. Пример: «choco install jdk8».)
  • Интерактивное видео и с чем его едят
    0
    Превосходная идея!
     
    Вы, однако же, каким-то нетрадиционным путём пришли к этой идее, как мне кажется.
     
    Отправною точкою такого пути хотелось бы увидеть не Heavy Rain и не Mass Effect, а визуальные романы; или, иначе говоря, интерактивному кино следовало бы стать для визуальных романов именно той формою естественного (вызванного техническим прогрессом) развития и продолжения, которою обыкновенное кино сделалось для театральных пьес. Если изложить то же мнение (о прогрессе) с другой точки зрения, то выйдет вот что: интерактивному кино неплохо бы было стать по отношению к обыкновенному кино в том отношении, в котором визуальные романы находятся по отношению к театральной пьесе. (А в каком отношении? — а вот в каком: они разыгрываются на экране компьютера и они могут дать читателю выбор той или иной ветви сюжета.)
     
    Вы тогда (если бы исходили прежде всего от визуальных романов) получили бы понимание, что для зрителя центральным достоинством такого рода произведений является разветвлённость сюжета, удовольствие от выбора. Привязывать к ней необходимость быстрой реакции — это лишнее, и это даже может помешать зрителю в его намерении посмаковать выбор и свои раздумья над ним.
     
    Вернёмся к тому первоначальному обсуждению, с которого началось всё дело:
     
    — Я бы убил Джона Коннора.
     
    — А я бы не выбросил бузинную палочку и стал плохим волшебником.
     
    — А я бы на месте Поттера воспользовался маховиком времени, чтобы спасти его родителей, а не клювокрыла.
     
    Эти реплики — о возможности выбора. А какие ответы даются на эти идеи?
     
    — Ты можешь, но на принятие этого решения у тебя будет доля секунды. При этом тебе надо ещё дойти до этой точки, вовремя нажимая WASDEF или теряя самооценку.
     
    К сожалению, наиболее вероятен такой отклик зрителя:
     
    — Я не хочу спешить наперегонки с компьютером и терять самооценку; я хотел бы просто посмотреть кино с разветвлённым сюжетом, выбирая развилки сюжета с лёгкостью, но мне этот выбор превратили в непростую дополнительную мини-игру на реакцию.
     
    Обратитесь к читателям визуальных романов, которые (не первый год и даже не первое десятилетие) при чтении каждого из приятных им произведений беспрестанно испытывают ежедневную радость от возможности раз за разом делать сюжетообразующий выбор:
     
    • «Я извинюсь перед Ханако за то, что побеспокоил её в библиотеке¹»,
       
    • «Если я о чём-то и вспоминаю про жизнь в отцовском зáмке, то это сестра Акиха²»,
       
    • «Я не стану вступаться за Аэку Щираки³»,
       
    • «Ускорившись, я изо всех сил побегу наперегонки с Эми¹»,
       
    • «Снаружи неистово лают собаки, и пора бы мне поглядеть, что там²»,
       
    • «Я не стану подходить к Мичиру — уйду и сделаю вид, что ничего не случилось⁴»,
       
    • «Я укажу Щидзунэ на чрезмерность её упрёков по адресу меня и Лилли¹»,
       
    • «Надо бы заглянуть в комнату покойного Макихисы²»,

    и так далее, и тому подобное. Скажите им, что теперь вместо пьесы с нарисованными персонажами перед ними будет разыгрываться видеозапись с действиями реальных актёров — и они придут в восторг, можно быть уверенным в их восторге. Но тотчас прибавьте, что вместо простого перелистывания сюжета перед ними развернётся игра клавишами WASDEF на скорость реакции, да и сюжетообразующий выбор им надо будет ещё поймать — и восторг сменится проклятиями.
     
    Разумеется, такой опыт не всем непосредственно доступен, ведь чтение визуальных романов распространено в большей мере на их родине (в Японии) и на Западе, тогда как мы находимся в постсоветском пространстве, и это должно накладывать определённый отпечаток и на киберпространство. Ну хорошо. В таком случае давайте откроем советскую книгу «Язык и компьютер» 1989 года для учащихся старших классов средней школы:
     
    [Язык и компьютер]
     
    Что мы увидим на её сто пятьдесят четвёртой странице?
     
    [Язык и компьютер, стр. 154]
     
    В контексте нашего обсуждения наиболее значимы вот эти два абзаца вышеприведённого текста:
    Ужé появился новый вид зрелищного искусства (трудно сказать даже, как его назвать — личностное кино? управляемый фильм? видеоигра?). Это фильм, который смотрят на видеокомпьютере с лазерным диском. Но всё дело в том, что в наиболее напряжённые моменты вы можете через компьютер вмешиваться в ход событий, подсказывать герою свои решения, влиять на ситуацию, оказывать помощь или менять персонажи. В зависимости от ваших действий меняется сюжет и всё течение фильма становится иным. Так что это, собственно говоря, не один фильм, а разветвлённая система фильмов, дающая возможность «проиграть» разные ситуации по принципу «а что будет, если…». Зритель теперь уже не пассивный потребитель, а активный участник событий и даже как бы исследователь, рассматривающий различные варианты решения социальных, бытовых и личностных проблем.
     
    Конечно, компьютер и здесь не понимает, не осознаёт ваших реплик. Программа управления выбором различных вариантов продолжения фильма в общем-то проста. Скажем, герой фильма попадает в сложную ситуацию, он размышляет вслух: «Что делать? Бежать или защищаться?». Вы останавливаете фильм и печатаете на компьютере: «Бежать». Затем вновь пускаете фильм, и компьютер выбирает соответствующий вариант продолжения. Ну а если вы напечатали: «Защищаться», то компьютером будет выбрано другое развитие действия. Как перевод стрелок на железнодорожных путях.
    Вполне естественно видеть, что за прошедшие 28 лет кое-что изменилось. Сейчас никакой зритель не «печатает» свой выбор, достаточно нажатия одной кнопки. Но вот действие «вы останавливаете фильм» я всё же считаю существенным для того, чтобы зритель мог сколь угодно долго поразмыслить над дальнейшими действиями «своего» персонажа.
     
    Не только «бороться с фризами», но и нарочно поставить на паузу развитие сюжета в месте выбора — вот естественный для зрителя вид представления сюжетной развилки.
     
    ___

    ¹ «Katawa Shoujo».
     
    ² «Tsukihime».
     
    ³ «Yume Miru Kusuri».
     
    ⁴ «Grisaia no Kajitsu».
  • NPM и left-pad: мы разучились программировать?
    +1
    Пользоваться Node.js, но не пользоваться npm — это скорее несчастье, нежели счастье.
  • NPM и left-pad: мы разучились программировать?
    0
    Всё же лучше злоупотреблять микромодулями на JavaScript из-за небольшой стандартной библиотеки, нежели злоупотреблять массивами на PHP из-за невозможности написать простой код (наподобие «{a: "b", c: 0xd}») для создания объекта на лету. (Да и удобство стандартной библиотеки PHP настолько не на высоте, что уж лучше она была мала и поощряла создание микромодулей.)
  • NPM и left-pad: мы разучились программировать?
    +3
    результат стратегии NPM по решению проблемы dependency hell — каждому модулю своя копия всех зависимостей, нужной версии. (ничего ж не путаю? оно так устроено?)
    Нет, ужé не «копия всех зависимостей»: npm, начиная с третьей версии, складывает все зависимости в кучу в подкаталог node_modules первого уровня до тех пор, пока два модуля не потребуют одну и ту же зависимость разных версий (и тогда она, и только она, достанется каждому такому модулю в виде своей копии нужной версии). Экономия.