• Что выбрать для перехода?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Перемешается только в том случае, если в голове будет каша (ну, в таких случаях вообще исключительно редко попадают в высокоинтеллектуальные сферы работы). А так - никаких проблем. Достаточно просто выработать привычку переключения глобального контекста в голове.
    Ответ написан
    Комментировать
  • Как работать с node.js на реальном проекте?

    drugoi
    @drugoi
    Front-end Developer
    На nginx/apache проксируете настраиваете домен и проксируете на нужный вам порт.
    Без nginx/apache можно сразу настроить listen сервера на 80 порт и он будет доступен по домену, который ссылается на этот сервер.
    Ответ написан
    3 комментария
  • По какому принципу выбирать технологию для бэкэнда?

    @GeraldIstar
    Frontend
    Кмк никакого алгоритма в большинстве случаев нет. Берешь либо то, что лучше всего знаешь, либо то, с чем хочешь поработать и более-менее уверен в этом.
    Ответ написан
    4 комментария
  • Как избежать конфликта путей к пакетам содержащих camelCase?

    @CulHatsker
    Маслину поймал
    Переименовать или переписать всё - единственный правильный вариант, просто это нужно сделать автоматически.
    Ответ написан
    Комментировать
  • Как правильно вернуть true из функции?

    BuriK666
    @BuriK666
    Компьютерный псих
    Тут вам нужны promise
    Ответ написан
    Комментировать
  • Как оптимизировать onscroll?

    pm_wanderer
    @pm_wanderer
    junior-HTML
    Не слушай фанатиков Реакта)
    Они его даже в текстовый документ пытаются засунуть)
    Идеальную прокрутку на 60fps скорее всего не получится сделать, но можно приблизиться к идеалу, задействовав requestAnimationFrame. И еще будет иметь значение, какое именно свойство ты пытаешься анимировать при скролле. Максимальная производительность у opacity, translate, rotate и scale
    Ответ написан
  • Почему mysql обрывает соединение?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Да, использование пула соединений поможет вам избежать подобной проблемы.

    Рекомендуется также изменить размер количества одновременных соединений (max-connections) в настройках MySQL.
    Ответ написан
    2 комментария
  • Стоит ли учить чистый JS?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Услышал что 95% сайтов делаются на чистом JQ и что JS сейчас учить - трата времени.

    Забудьте эту фразу и учите JS.

    И еще лучше забудьте всё, что вы знали про jQuery.

    Просто учите JS.

    original.jpg
    Ответ написан
    3 комментария
  • Стоит ли учить чистый JS?

    @Nwton
    Если хочешь стать программистом, а не быдлокодером, то стоит. А если планируешь делать сайты на wordpress и обвешивать их плагинами с падающим снегом, то кончено можно и без нативного обойтись.
    Ответ написан
    Комментировать
  • Как работают WebSockets?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    Вкратце:
    ws_vs_http.pngWebSockets2.pngОтветы
    1. Не совсем, но, думаю, скоро будет понятно
    2. Соединение всегда открыто, если одна из сторон его не закроет или не прервется связь
    3. Клиент отправляет - сервер тут же получает. Сервер отправляет - клиент тут же получает.

    На примере чата
    1. Устанавливается соединение между сервером и клиентом 1 (handshake)
    2. Сервер -> клиент1: Вы присоединились к чату
    3. Сервер -> клиент1: Сейчас у нас 1 пользователь: клиент1
    4. Устанавливается соединение между сервером и клиентом 2 (handshake)
    5. Сервер -> клиент2: Вы присоединились к чату
    6. Сервер -> клиент2: Сейчас у нас 2 пользователя: клиент1 и клиент2
    7. Сервер -> клиент1: Присоединился клиент2
    8. Клиент1 -> сервер: Скажи клиент2 "Привет!"
    9. Сервер -> клиент2: Клиент1 сказал "Привет!"
    10. Клиент2 -> сервер: Скажи клиент1 "Здасте!"
    11. Сервер -> клиент1: Клиент2 сказал "Здасте!"

    То есть клиенты могут когда угодно посылать сообщение серверу, он сразу же его прочитает, но не другим клиентам (минус сокетов). Сервер может послать сообщение любому клиенту, они сразу же его прочитают.
    Ответ написан
    4 комментария
  • Что выбрать для создания одностраничного приложения в браузере?

    Vue.js, есть русская документация
    Ответ написан
    Комментировать
  • Стоит ли использовать uuid или есть что-то еще?

    @miksir
    IT
    >Как без особого вреда для базы можно генерировать id для объекта за ранее ?

    SELECT nextval('name_of_sequence');
    Ответ написан
    Комментировать
  • Возможно ли передать файл клиенту через WS?

    @lega
    Можно, передаете данные, ложите в Blob, вызываете команду скачивания, у клиента выскакивает диалог сохранения.
    Можете заюзать https://github.com/eligrey/FileSaver.js
    Ответ написан
    Комментировать
  • Работать с node.js на Linux (mint)?

    @LiguidCool
    Может стоит саму ноду посвежее поставить?
    Ответ написан
    2 комментария
  • Рекурсия в Javascript?

    BuriK666
    @BuriK666
    Компьютерный псих
    Получаете Nan т.к. 2 + undefined это NaN
    else можно убрать, но оставить return 1;

    function sumTo(n) {
          if(n > 1) {
            return (n + sumTo(n-1));
          }
          return 1;
        }
    Ответ написан
    Комментировать
  • Как получить короткую уникальную строку для номера телефона?

    longclaps
    @longclaps
    Переведи в целое число и запакуй в base64. На питоне это можно сделать так:
    import base64, re
    
    def enc(telstr):
        s = re.sub(r'\D', '', telstr)
        if len(s) < 10 or len(s) == 11 and s[0] not in '78' or len(s) > 11:
            raise ValueError('"%s" не похоже на телефонный номер' % telstr)
        x, l = int(s[-10:]), bytearray(b'\0\0\0\0\0')
        for i in range(4, -1, -1):
            x, rest = divmod(x, 256)
            l[i] = rest
        return base64.encodebytes(l)[:7].decode('utf-8')
    
    def dec(b64):
        x = 0
        for b in base64.decodebytes(b64.encode('utf-8') + b'=\n'):
            x = x * 256 + b
        return x
    
    s = enc('8(926)123-4567') 
    print(s)          # AigDOYc
    print(dec(s))     # 9261234567
    Ответ написан
    Комментировать
  • Почему previousSibling надо писать 2 раза?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что в previousSibling попадают и текстовые ноды (пробелы между тегами, иначе говоря). В этом легко убедиться, выведя в консоль результат выражения
    document.querySelector('.push-to-add').previousSibling

    А чтобы увидеть все узлы на этом уровне, выполните
    console.dir(document.querySelector('.push-to-add').parentElement.childNodes)


    Вам в данном случае нужно использовать previousElementSibling или убрать пробел между тегами, чтобы исчез текстовый узел, возникающий между этими элементами:
    </section><button class="push-to-add">
    Ответ написан
    Комментировать
  • Почему не работает break в цикле?

    @Aves
    Можно и без промисов, на обычных колбеках:
    function asyncLoop(fn, i, end) {
      if (i < end) fn(i, () => asyncLoop(fn, i + 1, end));
    }
    
    function worker(i, next) {
      client.hgetall('space' + i, (err, obj) => {
        if (err) return; // break
        next();
      });
    }
    
    asyncLoop(worker, 0, 9);

    На промисах примерно так:
    let p = Promise.resolve();
    for (let i = 0; i < 9; i++) {
      p = p.then(() => new Promise((resolve, reject) => {
        client.hgetall('space' + i, (err, obj) => {
          if (err) reject(err); // break
          else resolve();
        });
      }));
    }
    p.catch(err => console.error(err));
    Ответ написан
    2 комментария
  • Какой посоветуете js-framework для SPA?

    @aslanovich
    Web/Art Designer. Front+Back-end Geek
    Vue.js
    Ответ написан
    Комментировать
  • Как загружать фотографии пользователей?

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

    Если по существу, то тебе надо сначала почитать, как передать файл с клиента на сервер. Чтоб что-то сохранить на сервере в какой-то папке, у тебя должны быть права доступа к этой папке. Если ты используешь Tomcat, то он по-умолчанию имеет доступ к папкам, находящимся в каталоге, указанном в переменной окружения $CATALINA_HOME.

    Там можно все настраивать как надо, но у меня другое предложение:
    Я бы на твоем месте хранил тело файла прям в БД, в отдельной таблице, тогда заморачиваться с правами не нужно, ты сразу можешь слиноковать запись о пользователе с записью о файле. Если связь один к одному или один ко многим, то можно прям в юзера положить внешний ключ на таблицу с файлами. Если связь многие ко многим, то лучше сделать отдельную линковочную таблицу. Ну что-то я увлекся то же...

    Удачи тебе, юный падаван! Да прибудет с тобой сила!
    Ответ написан
    2 комментария