• Node.js + socket.io и mysql как организовать соединение?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Нужно открывать пул соединений через mysql.createPool используя библиотеку https://www.npmjs.org/package/mysql чтобы не случилось, что какое-то занято на долго запросом, а другое в ассинхронном режиме пришло и хочет быть обработано, пока предыдущее еще не вернулось. На событие разрыва соединения нужно навешивать его возобновление. Для случая с одним соединением так (для пула это нужно навесить на каждый конекшен:
    var mysql = require('mysql');
    connectMySql();
    
    function connectMySql() {
        var connection = mysql.createConnection(connectionString);
    
        connection.connect(function(err) {
            if (err) {
                setTimeout(function() {
                    connectMySql()
                }, 3000);
            }
        });
    
        connection.on('error', function(err) {
            if (err.code === 'PROTOCOL_CONNECTION_LOST') connectMySql();
        });
    }

    Если у вас небольшое приложение, то не стесняйтесь сделать конекшен или пул глобальным, чтобы он был сразу определен на обработчиках, а еще лучше сделайте для своего приложения неймспейс в глобальном контексте, например myApp = {} и в него запишите myApp.db = connection чтобы потом писать myApp.db.query(...); Посмотрите, какие красивые и лаконичные обработчики можно сделать, если не вестись на эти REST-суеверия и предубеждения против состояния на сервере и открытых долго конекшенов к БД и глобальных неймспейсов:
    // Обработчик для API по урлу http://127.0.0.1/example/app/examples/mysql/getCities.json
    module.exports = function(client, callback) {
      aliasNameMy.query('select * from City', function(err, rows, fields) {
        callback({ rows:rows, fields:fields });
      });
    }

    На гитхабе этот обработчик в контексте демо-приложения: https://github.com/tshemsedinov/impress/blob/maste...

    Ну и еще порекомендую свои утилиты для драйвера MySQL - https://www.npmjs.org/package/mysql-utilities
    и две статьи на Хабре, одну по этим утилитам - habrahabr.ru/post/198738 , а вторую по архитектуре в целом - habrahabr.ru/post/204958
    Ответ написан
    2 комментария
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

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

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Как продумать логику тестов на php в yii?

    fornit1917
    @fornit1917
    как сверять выбранный вариант

    Оператором ===
    Ответ написан
    Комментировать
  • Какие возможности WebGL?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Почитайте спецификацию, хотя бы бегло. В частности это:

    WebGL™ is an immediate mode 3D rendering API designed for the web. It is derived from OpenGL® ES 2.0, and provides similar rendering functionality, but in an HTML context.


    Я слабо представляю как можно расписать "возможности" WebGL, так как это просто API для работы с 3D графикой, так же как и OpenGL ES. По сути это единственный способ получить доступ к вычислениям на видеокарте из браузера, а уже на эту тему можно пару много чего искать/читать. Тут больше поможет изучение информации о OpenGL непосредственно, понимание того, как во всем этом замешана видиокарта и почему она настолько быстрее все это считает чем CPU ну и т.д.

    Three.js же, движек, по сути высокоуровневое API (WebGL все же низкоуровневое) для работы с 3D, в котором уже реализованы базовые вещи.
    Ответ написан
    Комментировать
  • Удалится ли обработчик события, если я удалю элемент, на котором стоит этот обработчик?

    aen
    @aen
    Keep calm and 'use strict';
    Если обработчики клика повешаны на сами div'ы, то они останутся в памяти. При удалении старых div'ов и добавлении новых они будут дальше работать.

    Если вам нужно удалить все обработчики на элементах внутри некоего <section id="section"></section>, то используйте метод .empty() на этом контейнере. С удалением содержимого контейнера он удалит и обработчики.

    Используйте делегирование: $('#section').on('click', 'div', function(e) {}).

    Если вам нужно со 100% гарантией удалять обработчики, то лучше это сделать в ручную, если есть такая возможность.
    Ответ написан
    Комментировать
  • Дебаг приложения на PHP. Как улучшить код и избавиться от предупреждений?

    Sild
    @Sild
    как начать гуглить и перестать спрашивать одно и то же?
    напиши в начале инициализирующего скрипта
    error_reporting(~E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED);

    это избавит тебя от всех ошибок.

    Warning: Invalid argument supplied for foreach() in - про это тебе уже писали (я лично писал)
    Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in - про это тоже говорили, что проблема в запросах которые ничего не возвращают

    ты весь проект так хочешь проспрашивать? Лучше напиши строчку, которую я указал в самом начале. Это будет достаточно грамотный подход, по сравнению с текущими успехами.
    Ответ написан
    5 комментариев
  • Как организовать обмен данными между PHP скриптами по ходу их выполнения?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Можно просто вызвать второй скрипт через сURL или http_get
    Ответ написан
    Комментировать
  • Куда дальше развиваться?

    @phasma
    > что бы сделать хрошую карьеру или просто стать хорошим специалистом в IT.

    ты уже не станешь

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

    Нда, и фотографом тоже не станешь.

    > Ко всему: планирую поступать на очку в следующем году в вуз, колледж закончил. До сих пор в поиске будущей профессии, а в особо трудные дни — в выборе между гуманитарным и математическим уклоном.

    Учись и иди в менеджеры по продажам. Т.к. выбрать сам не можешь, то там тебе будет уютненько.
    Ответ написан
    3 комментария
  • FTP-клиент

    seagull
    @seagull
    Очень нравится WinSCP.
    Удобно, есть Portable версия.
    Ответ написан
    3 комментария