• Почему не видно значения переменной?

    HoHsi
    @HoHsi
    Это называется IIFE. Так как запрос к базе - асинхонный, а for - синхонный, он отрабатывает быстрее, сохраняя внутренее значение i на финальной итерации. Это значит, что вам нужно замкнуть для каждого вызова i, что-бы он стал локальным. Это проблема var переменны, так как имеют область видимости всей функции, а не блока. Это можно решить:
    1 вариант - по старинке:
    for (var i=0, len = vendors.length; i < len ; i++) {
        (function (i) {
            console.log(i);
            connection.query('SELECT * FROM `brends` WHERE `brend_parrent`="'+vendors[і].id_folders+'";', function(err, rows, fields) {
                if (err) throw err;
                console.log(i);
            });
        })(i);
    }


    2 - с использованием ES6 let:
    for (let i=0, len = vendors.length; i < len ; i++) {
        console.log(i);
        connection.query('SELECT * FROM `brends` WHERE `brend_parrent`="'+vendors[і].id_folders+'";', function(err, rows, fields) {
            if (err) throw err;
            console.log(i);
       });
    }
    Ответ написан
    Комментировать
  • Как преобразовать массив полученный от mysql в другой вид?

    HoHsi
    @HoHsi
    connection.query('SELECT user FROM users', function(err, rows, fields) {
      if (err) { throw err; };
      
      const users = rows.map((row) => ""+row.user);
      callback(`Текст: ${JSON.stringify(users)}`);
    });
    Ответ написан
    Комментировать
  • Нужно ли оборачивать синхронную функцию в setTimeout, если нужно вернуть promise?

    HoHsi
    @HoHsi
    Если вы выполняете функцию без сайд-эффекта (это не запрос к базе / API / тому, что может не ответить), то вообще можете вернуть
    return Promise.resolve(data);
    Ответ написан
    Комментировать
  • Как прикрутить LiqPay к node.js?

    HoHsi
    @HoHsi
    Вот товарищ, что-то реализовывал https://github.com/smituk/liqpay. Может это уже конечный продукт, а может придется форкнуть и допилить
    Ответ написан
    Комментировать
  • Моно ли объединить 3 темы Wordpress=woffice+QAEngine+dokan?

    HoHsi
    @HoHsi
    wp-kama.ru + php.net + 2-3 недели времени = возможность объединять любые темы.
    А если серьезно, нет такого миксера, куда можно засунуть код, и получить на выходи смесь их этого. Научитесь азам PHP и WP, и перекиньте нужный функционал из одной тему в другую.
    Ответ написан
    Комментировать
  • Лучший способ реализации мультиязычности на Node.js?

    HoHsi
    @HoHsi
    Ответ написан
    Комментировать
  • Конвертор HTML -> PDF с поддержкой CSS3?

    HoHsi
    @HoHsi
    casperjs - можете даже не статику конвертировать. По своей сути это браузер из консоли, который умеет делать скриншоты в Png, PDF, Jpg и т.д.
    Ответ написан
    Комментировать
  • Получить сессию из другого приложения?

    HoHsi
    @HoHsi
    Нужно использовать хранилище отличное от RAM. Это может быть MongoDB, Radis или любая другая NoSQL БД.
    Если вы используете "родной" модуль для сессий эспресса, то посмотрите тут: connect-mongo
    Ответ написан
    Комментировать
  • Как скрыть javascript на сервере?

    HoHsi
    @HoHsi
    Это невозможно. Если скрипт встраивается в сайт, т.е. фронт энд, а не является бэк-энд NodeJS скриптом, его нельзя скрыть.

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

    Единственный способом мало-мальски скрыть исходные тексты, это обфускация и минификация.
    Все.

    P.S. Дайте ссылку на пример где так сделано, аж любопытно.
    Ответ написан
    3 комментария
  • Как создать сайт вроде спрашивай.ру?

    HoHsi
    @HoHsi
    Не стоит сразу же замахиваться на большой сервис, начните постепенно. Каждый начинающий программист первым своим проектом грезит сделать убийцу ВК / FB. Скажу сразу, это с первого раза не выйдет. Как не выйдет и с 10. Но! Это не повод, что-бы не развиваться и не учиться. Итак если вы все же решили потрать пару месяцев на обучение, или вы уверены, что пойдет меньше, начните так:

    Шаг первый
    Html. Это язык разметки, на котором написано 100% веба, то есть это необходимая вещь де-факто. Он позволит вам разместить текст на странице, оформить ее.
    В базовой аналогии, это ворд для интернета (кышь Ъ праграммысты, это довольно хорошая аналогия для новичка, продолжим...).

    Это займет +- 1 неделю

    Вам помогут:
    * htmlbook

    Шаг второй
    CSS. Это язык стилизации. Перекрасить текст, увеличить отступы, сделать тень у блоков это к нему. Все крависости в интернете делаются на нем. 99% веба использует для стилизации именно его, так что опять же это стандарт.

    Это займет +- 2 недели

    Вам помогут:
    * Sorax

    Шаг третий
    PHP. Это уже язык программирования (плохой, больной, уродливый, но язык. Да начнется холивар). Он поможет вам понять как это работает, как устроена кухня. Поковыряйте его, обучитесь начальной логике и алгоритмам. Он поможет вам выводить HTML более осмыслено, т.е. вы сможете уже составлять динамические страницы, которые могут подстраиваться под пользователя, добавлять посты, вопросы, картинки и т.д.

    Это займет +- 2 месяца

    Вам помогут:
    * php.net

    Шаг четвертый
    Wordpress. Это почти готовый сайт. В нем уже есть все, что вам нужно. Вы можете писать посты, делать обсуждения и т.д. На его основе вы сможете вылепить что угодно, даже тот самый вопросник. Он написан на PHP, так что он будет дополнять ваши знания. Как только научитись ставить WP, попробуйте написать для него шаблон, потом плагин, и еще и еще. Это закрепит и разовьет ваши предыдущие знания.

    Это займет +- 2 месяца

    Вам помогут:
    * wp-kama

    Шаг пятый
    MySQL. И в частности язык запросов SQL. Это база данных. Они нужны, что-бы хранить информацию вашего сайта в удобном виде. Т.е. по своей сути это таблица экселя, в ней есть поля и их значения. Это так же необходимые знания, так как ваши вопросы из вопросника будух храниться именно там.

    Это займет +- 1 месяц

    Переломный момент
    Наступает переломный, это значит что по истечению полу-года вы должны сесть и подумать, нравится ли вам, что вы делали. Это важно. Так как дальше не будет проще, не будет легче. Начнутся такие вещи как Асинхронность, Брокеры сообщений, ООП, MVC, и другие страшные слова, которые ровно как и предыдущие шаги по-началу будут вас пугать, но потом станут лучшими друзьями.

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

    Не спешите так же переходить к шагам ниже, если не уверены в своих силах. Нет ничего плохого, что-бы "посидеть" еще на предыдущих шагах.

    Шаг пятый
    JavaScript. Ура, вы решили, что вы хотите быть программистом, похвально. Этот язык позволит вам сделать ваши страницы более динамичными. Добавить на них анимацию, логику. Этот язык использует 90% веба, так что сомневаться в его значимости нет смысла. Он позволит вам добавить жизнь на ваш сайт.

    Это займет +- 2 месяц

    Вам помогут:
    * Sorax
    * learn.javascript.ru

    Шаг шестой
    Jquery. Это продолжение JS. Это фреймворк (набор готовых функций). Он облегчит вашу работу с JS и позволит делать ее более качественно и быстро.

    Это займет +- 1 месяц

    Шаг седьмой
    Распутье. Вы уже как год программист, отличная работа. Вы уже выросли из яслей и впереди бескрайний океан. И теперь вы должны понять, что вы хотите. Устраивают ли вас сейчас ваши текущие инструменты. Удобные ли они. Не стесняют ли они вас.

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

    Итак развилка:
    Мне нравится PHP, мама я женюсь!
    Ок, тогда вам стоит взглянуть на фреймворки Laravel, Yii 2, вполне хороши. Они довольно мощные и позволят много чего на себе сделать.

    PHP какой-то странный, но мне понравился JavaScript
    Шикарно, значит есть смысл попробовать NodeJS. Это версия языка (Да, я знаю, что нода это среда а не язык, дайте уже объяснить человеку) расчитаная на составление страниц, как PHP. Это очень мощный инструмент, поняв который, вы вряд ли захотите уйти с него. Он поможет вам писать не только сайты, но и приложения для телефонов / планшетов, программы для ПК, возможно игры (но не стоит. По крайней мере с текущим развитием инструментов), демоны, сервисы, консольные приложения и т.д.

    Они оба мне не нравятся
    Что ж, тогда вам могут приглянуться Python, Ruby - эти два языка более близки к PHP, чем JS.
    Или вы за год стали адептом скорости, и не видите большей радости в жизни чем оптимизация и быстрото рендеренга. Ну тогда вам точно понравятся GO и Rust.
    А может быть Dart к тому временем станет мейн стримом, это уже покажет время.

    Что-бы вы не выбрали, это будет хорошим решением.

    Шаг восьмой
    Как говорится, я просто оставлю это здесь. Сейчас нет смысла объяснять, что это, зачем оно и с чем его едет, вы просто взглянете через год на этот список и все поймете.

    CSS:
    * Sass / Less / Stylus

    JS:
    * CoffeeScript / LiveScript / TypeScript
    * Angular
    * Promise

    NodeJS:
    * NPM
    * Express

    Ускорение работы:
    * Gulp
    * Jade
    * Yo

    Остальное:
    * MongoDB
    * MariaDB
    * RabbitMQ

    Шаг 7 и 8 займут у вас всю жизнь
    Это не в коем случае не значит, что язык будет тем же, просто Язык / Технолигия будут заменяться на другую, а смысл будет тем же. Будут новые технологии, будут новые подходы, новые языки. Будет интересно и весело.
    Ответ написан
    15 комментариев
  • Можно ли писать server-side на нескольких языках одновременно?

    HoHsi
    @HoHsi
    Да, используйте AMQP прослойку, и можете использовать хоть все доступные языки. rabbitmq
    Ответ написан
    Комментировать
  • Что за аномалии с массивами в JS?

    HoHsi
    @HoHsi
    1) Не добавляйте элемент в массив через index, используйте #push
    2) Проверяйте на существование переменной, вы каждый раз затираете movies[id];
    3) Если вы используете конструкцию for (var i = 0; i < arr.length; i++) { }, то не вызывайте каждый раз length. Делайте так:
    for (var i = 0, len = arr.length; i < len; i++) { }
    , а еще лучше for (var item in arr) { }

    var arr = [],
        movies = {};
        
    arr.push({
      "id": 22,
      "category": 34,
      "name": "Jel",
      "movie": "Avatar"
    });
    arr.push({
      "id": 34,
      "category": 12,
      "name": "Sali",
      "movie": "Ted 2"
    });
    arr.push({
      "id": 33,
      "category": 34,
      "name": "Chesko",
      "movie": "Avatar"
    });
    arr.push({
      "id": 22,
      "category": 34,
      "name": "Donny",
      "movie": "Avatar"
    });
    
    movies = arr.reduce(function(res, item){
      var id = item.id + "_" + item.movie;
      
      res[ id ] = res[ id ] || {
        "id":     item.id,
        "movie":  item.movie,
      };
    
      res[id].actors = res[id].actors || [];
    
      res[id].actors.push({
        "category": item.category,
        "name":     item.name,
      });
      
      return res;
    }, movies);
    
    console.log(movies);
    Ответ написан
    7 комментариев
  • Как импортировать модуль в ES2015 синтаксисе?

    HoHsi
    @HoHsi
    /**                 V импорт          |   V вызов импорченой функции */
    let config = require("./build/config")(dev, root);
    
    // ES6
    import config from './build/config'
    config = config(dev, root);
    Ответ написан
    Комментировать
  • Как создать JSON поиск?

    HoHsi
    @HoHsi
    function seachArticle( search ){
      var obj = JSON.parse(/* Json */);
      var find;
    
      for (key in obj) {
        if(key === search) {
          find = obj[ key ];
          break;
        }
      }
    
      return find;
    }
    Ответ написан
    Комментировать
  • Какой фреймворк выбрать для долгих вычислений на стороне сервера?

    HoHsi
    @HoHsi
    1 Вариант - Красивый
    Поскольку знаете Python, то возьмите его + Celery / RabbitMQ. Это отличные брокеры. А уведомить пользователя можно или из самого воркера (плохой вариант) или через RPC.

    А в качестве Веб фреймворка django.

    2 Вариант - быстрый
    Выбрать булюбой рантайм язык Node.js, Python, Go, over9000. И все сделать в рамках одного приложения. Т.е. как только поступает запрос от пользователя, сразу-же запускать долгоживущий процесс, который в конце напишет в базу, и может быть дернет функцию, которая уведомит пользователя через WebSocket / Email / Ajax.

    3 Вариант - на**ярить
    Берем, что угодно, даже не долгоживущий, пишем не нем ручку, которая делает запрос и пишет в базу задачу.
    Делаем скрипт на чем угодно, который по крону проверяет эту самую очередь, и если там что-то есть выполняет эту задачу, и уведомляет пользователя, с.м. пункт 2.
    Ответ написан
    Комментировать