• Возможно ли асинхронно делать действия с элементами массива?

    @yeti357
    Воспользуйтесь промисами или либой типа async. Внезапно js поддерживает фичи функционального программирования. Из массива объектов можно создать массив промисов(или функций), а после запустить параллельное асинхронное выполнение, и получить результат, после того как все промисы/функции в массиве выполнились, Параллельный запуск осуществляется с помощью Promise.all() иди async.parallel()
    // псевдо код
    var yourArrayFromDB = [здесь массив исходных данных, например то, что вы до этого из бд запросили];
    var promiseArray = yourArrayFromDB.map( 
        (elem) => new Rromise( function (resolve, reject) {
                    // функция которая обрабатывает что вам нужно асинхронно
                    request.get('your.url.com', fuction( err, res) {
                         if (err) reject(err);
                         resolve(res);
                    })
                }
            )
    );
    
    Promise.all(promiseArray)
        .then((resArray) => { здесь делаете что хотите с массивом результатов асинхронных функций })
        .catch(console.log);
    Ответ написан
    1 комментарий
  • Не убьёт ли WebAssembly node.js?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Нет. Вы путаете клиентскую сторону и серверную.
    node.js предназначена для работы на сервере. WebAssembly - запуск ресурсоемких приложений на клиенте.
    Ответ написан
    Комментировать
  • Не убьёт ли WebAssembly node.js?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нет. Он лишь ускоряет клиентский Javascript.
    Вот мой пример:
    c320f459db12436aa2acaca211b886ba.jpg
    Ответ написан
    5 комментариев
  • Не убьёт ли WebAssembly node.js?

    @xfg
    WebAssembly это низкоуровневый язык программирования. Никто на нем в здравом уме не будет писать. Это почти тоже самое, как пытаться писать веб с помощью ассемблера. В него просто будут компилировать код с других языков, сейчас пока только C и C++, позже будут и другие. Он нужен, чтобы ускорить клиент-сайд, поскольку javascript медленный для всяких там 3D игр и всего такого. В общем походу скоро php захватит и клиент :)

    Кроме того, эта идея уже была ранее реализована в asm.js от компании Mozilla. Разработчики сделали на C++ демку 3d игры скомилировали её в asm.js, общественность немного поигралась и всё заглохло. Революции не произошло.
    Ответ написан
    5 комментариев
  • Не убьёт ли WebAssembly node.js?

    AMar4enko
    @AMar4enko
    Как уже написали, WebAssembly это возможность использовать оптимизированный байткод для критичных к производительности участков. И, неожиданно, это может привести к еще большему распространению ноды, потому что в рамках реализации стандарта эту фичу запилят непосредственно в v8, откуда она мигрирует в ноду, что позволит использовать WebAssembly на сервере, местами заменив им node-gyp, который не всегда корректен в плане кроссплатформенности.
    Ответ написан
    1 комментарий
  • Как убрать (или хотя бы локализовать) ошибку Error: ENOENT: no such file or directory `some_file_name.ts___jb_tmp___`?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    jb_tmp, это, очевидно, JetBrains temp-файл:) А проблема в том, что у вас вотчер пытается смотреть за всеми файлами:
    watch('src/ts/**/**', function(event, cb) {
    Исправьте путь на 'src/ts/**/*.ts', должно помочь.
    Ответ написан
    2 комментария
  • Стоить ли изучать Elm?

    easimonenko
    @easimonenko
    Любитель
    Мне понравилось писать SPA на Elm. Синтаксис лаконичный. Проще Haskell, при этом местами даже лучше него. Архитектура понятная и прозрачная, никакой магии. Для быстрого обновления DOM используется Virtual DOM. В скомпилированный код добавляется небольшой runtime. Только client side.

    Правда столкнулся с runtime-багом по undefined, чего в Elm не должно возникать. Скорее всего это говорит о том, что Elm ещё действительно "не готов к продакшн".

    Написал недавно статейку об инструментарии разработчика на Elm.

    Русскоязычное сообщество
    Ответ написан
    1 комментарий
  • Стоить ли изучать Elm?

    @potan
    Функциональный программист
    Однозначно.
    Реактивное программирование очень перспективно, и не только во фронтенде. А здесь оно в наиболее чистом виде.
    Язык и его экосистема уже достаточно развиты и хорошо подходят для быстрой разработки интерфейсов - код компактный и читабельный, есть мощные средства отладки и тестирования (за счет функциональной чистоты).
    Познакомиться с альтернативными парадигмами и синтасисами полезно, хотя бы что бы по новому взглянуть на традиционные.
    Ответ написан
    Комментировать
  • Особая магия с channels в golang?

    @Xazzzi Автор вопроса
    ಠ_ಠ
    Нашел решение в виде sync.Once:
    play.golang.org/p/zH8umNJU9D
    Ответ написан
    2 комментария
  • Особая магия с channels в golang?

    Tyranron
    @Tyranron
    Сначала отвечу на второй вопрос.
    close() никакого отношения к scope не имеет вообще, он просто делает канал "закрытым", то есть таким, что при чтении значений из канала и записи из него возникает panic. Это всё. Соответственно...
    что случится, если закрыть буферизированый канал до того, как считать из него все значения, успевшие туда попасть?
    Канал закроется, при следующей попытке считать с него значение получите panic. Значения, что остались внутри, считайте потерянными, Вы их больше никак не получите.
    UPD: Это не так! (см. конец поста и комментарии)
    Соберется ли такой chan сборщиком мусора при уходе его в out of scope? Что будет с обьектами внутри канала?
    Соберется он сборщиком мусора только тогда, когда на него никто больше не будет ссылаться (если он объявлен локально, то да, out of scope). Объекты внутри тоже соберутся, если на них больше никто не ссылается. Те, на которые еще ссылается кто-то, останутся.

    Теперь замечания по Вашему примеру:
    select {
    case b <- number:
        fmt.Printf("Sent into b: %d\n", number)
    default:
        fmt.Printf("b chan closed\n")
    }
    Этот кусок здорово дезинформирует. Во-первых select на запись c default секцией никоим образом не спасает от panic при записи в закрытый канал. Он всего лишь делает запись в канал всегда неблокируемой. Как только Вы таким select'ом попытаетесь записать в закрытый канал что-то, словите сразу панику. Потому правильно для восприятия это место выглядит следующим образом:
    select {
    case b <- number:
        fmt.Printf("Sent into b: %d\n", number)
    default:
        fmt.Printf("Number %d just has been thrown away\n", number)
    }
    Если Вы сделаете канал a буферизированным, то тут Вам Ваши panic'и и полетят, потому что Вы пишете в закрытый канал.
    Закономерный вопрос: почему тогда panic'и не летят при небуферизированном канале а?
    Ответ: Вам просто везет =)
    Во-первых, на playground'е runtime.GOMAXPROC=1 и runtime.NumCPU=1. То есть в реальности все дело крутится в одном потоке и параллельность тут псевдо.
    Во-вторых, у меня локально (OS X) этот скрипт выкидывает panic'у после получения числа 25 даже при runtime.GOMAXPROC=1. Вам банально повезло, что внутренний планировщик горутин на playground'е ведет себя именно таки образом. При буферизированном канале он ведет себя немного иначе и Вы получаете закономерную panic'у сразу.

    Если совсем на пальцах по первому вопросу, то:
    При небуферизированном канале close(b) по каким-то соображения планировщика выполняется только после того как отработали обе горутины, если глянуть на вывод, то надпись "B:1" будет в самом конце. Потому то все и отрабатывает нормально, хотя это поведение совершенно не гарантированно логикой программы, наоборот, программа рассчитана на то, что close(b) выполнится сразу после того, как мы оттуда что-то считаем. Это и происходит, если канал a сделать буферизированым (надпись "B: 1" вылетает сразу), так как в этом случае планировщик меняет свои соображения, и мы получаем закономерную panic'у.

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

    UPD:
    Я допустил ошибку, как верно указали в комментариях Виталий Яковенко и SilentFl, закрытый канал не выдает panic при чтении с него. Он разрешает считать все значения, которые в нем остались, после чего отдает "пустые" значения для свое типа, больше никогда не блокируя выполнение.
    Закрытый канал panic'ует только при попытке отправить в него значение.
    Ответ написан
  • Что конкретно может дать программисту знание языка Lisp?

    @menix
    Перечитав эту статью могу сказать, что для яваскриптера функциональщина реальный профит — в функциональном стиле писать меньше (а если ф-ю compose например брать из Underscore — то и намного меньше) и все както изящнее.
    Ответ написан
    Комментировать
  • Что конкретно может дать программисту знание языка Lisp?

    ks_ks
    @ks_ks
    Я выбрал семейство Lisp'ов для изучения: потому-то, потому-то
    и ещё вот по этому (зная один из лиспов, будет проще настраивать IDE Emacs).
    Ответ написан
    2 комментария
  • Что конкретно может дать программисту знание языка Lisp?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    Написал тут много букв про то, что инструменты выбираются либо под задачу, либо те, которыми человек уже владеет, но решил сократить до того, что изучать всё таки стоит — это помогает открыть новые горизонты — хоть обработка текстов в awk/sed/perl, хоть вёрстка в TeX, хоть «Привет, Мир!» на brainfuck'e или же автоматизация действий на shell или управление огромным доменом AD через PowerShell.
    Ответ написан
    4 комментария
  • Что конкретно может дать программисту знание языка Lisp?

    @mithraen
    У каждого языка есть набор подходов к разработке, которыми в нем наиболее удобно пользоваться. Опыт использования языков с разными парадигмами разработки меняет мышление — вы можете сформулировать задачу разными способами.

    Это, в итоге, оказывается полезным и при разработке на других языках.

    С практической же точки зрения сейчас Lisp мало интересен. Насколько я вижу, сейчас на практике используют скорее Scala.

    Вообще функциональные языки очень интересны. Их освоение для более-менее опытного программиста оказывается сложным (новичку их осваивать даже проще), из-за того, что многие привычные подходы в них оказываются неудобны. Но после освоения — оказываются даже проще в разработке чем объектно-ориентированные и процедурные.

    Итоги:
    1. Освоение функциональных языков полезно потому, что повысит скорость и качество разработки и на других языках (правда будет неприятный побочный эффект — от них станет подташнивать, когда окажется что вещь реализуемая в несколько строк на haskell требует несколько страниц бреда на C++).

    2. Их очень удобно использовать в качестве скриптовых языков внутри более сложных продуктов (как тот же AutoLISP).

    3. В крупных «enterprise» проектах их использовать нереально из-за того что мало разработчиков которые с ними знакомы, а для бизнеса заменимость сотрудников критически важна.

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

    5. Некоторые функциональные языки, например Haskell и OCaml обладают очень интересной и мощной системой типов, которая одновременно не так сильно путается под ногами как в Java, но при этом очень жесткая, и срезает множество потенциальных ошибок.

    6. Ну и еще — например в JavaScript и Perl есть ряд инструментов, привычных для функционального программирования. Владение хотя бы одним функциональным языком программирования позволит писать более красивый код на этих языках.
    Ответ написан
    3 комментария
  • Sass при сборке ругается иероглифами?

    zooks
    @zooks
    Frontend
    Судя по знаку доллара - это bash.
    Нужно русифицировать консоль. Ну и заодно проверить кодировку файлов SASS, чтобы были в utf-8.
    Ответ написан
    3 комментария
  • Настройка подключения через proxy в Ubuntu Server 10.10

    @demshyn
    На Raspbian
    sudo nano /etc/apt/apt.conf.d/70debconf

    Добавил строки:
    Acquire::http::Proxy «http://username:pass@proxy:port/»;
    Acquire::ftp::Proxy «ftp://username:pass@proxy:port/»;
    Acquire::::Proxy «true»;

    Заработало обновление apt-get через прокси
    Ответ написан
    Комментировать
  • Настройка подключения через proxy в Ubuntu Server 10.10

    alexbaum
    @alexbaum
    JS-разработчик, наставник.
    У меня вот так заработало:

    В файле /etc/apt/apt.conf (у вас /etc/apt/apt.conf.d/proxy)

    Редактируем строчку:

    $sudo nano /etc/apt/apt.conf

    $Acquire::http::Proxy «http_proxy=http://login:password@address:port»;

    via https://help.ubuntu.com/community/AptGet/Howto
    Ответ написан
    1 комментарий
  • Как узнать код станции по ее названию? Яндекс.Расписание API?

    Можете попробовать заюзать одну из систем отсюда https://tech.yandex.ru/rasp/doc/concepts/coding-sy... , например, эту osm.sbin.ru/esr
    Ответ написан
    Комментировать
  • Как объединить два объекта javascript с заменой значений по ключу, если он существует?

    @paulvoloschuk
    Object.assign
    Линк

    var a = {a:1, b:2, c:3};
    var b = {a:2, b:2};
    
    console.log(Object.assign(a,b));   // result Object {a: 2, b: 2, c: 3}
    Ответ написан
    Комментировать
  • Как совместить node и vue?

    kleinmaximus
    @kleinmaximus
    Senior Full-stack Javascript Developer
    Ответ написан
    Комментировать