Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Есть ли среди вас те, у кого есть постоянный стабильный доход не от разработки, а от своего продукта?

Лучший ответ:
Вложитесь в недвижимость и сдавайте ее в аренду.

Худший ответ:
У меня сейчас тысяч 10-15 в месяц пассивного дохода выходит с Google Adsense от рекламы на сайтах. Заметно увеличить пока не получается. Но есть куча людей, кто получает и 100 тыс и 200 тыс. Например, тут можно посмотреть их доходы. Они в оффлайне уже не работают. Но для такого дохода нужно немало поработать.
Некоторые зарабатывают на сайтах на продаже ЛИДов - там денег больше, но, я бы сказал, нужен талант (маркетинг и все такое).
Кто-то тупо копипастит чужие сайты, у особо талантливых даже получается на этом заработать.
В любом случае везде надо работать, халявы в сети нет.
Вопрос: Перенести сайт с wix на другой хостинг?

Лучший ответ:
Нужно сайт перенести на свой хостинг и свой домен. Возможно ли это? 
Возможно, но не просто.
По сути нужно перенести контент на новый сайт на движке.

Худший ответ:
нет, это касается любых подобных сервисов. 
https://support.wix.com/ru/article/%D0%BC%D0%BE%D0...
Вопрос: Angular.js нужно учить со второй версии или начать с первой?

Лучший ответ:
Angular 1.5 задумывался авторами как переходная точка, что бы проще мигрировать людей с первого на второй. Так что учите angular 1.x и соблюдайте стайл гайд. Ну и почитайте про MVC, про компонентный подход к разработке на Angularjs. (отказ от двустороннего датабиндинга, данные должны идти только в одном направлении, упор на классическую схему MVC).

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

Лучший ответ:
Опыт создания подобных штук есть. Это очень геморройно. Таких работ мало, так как тут нужен не простой дизайнер и не простой верстальщик, и даже не простой front-end'er, а все вместе: программист js-ер, умеющий толково верстать, при этом, прочитавший немало книг по дизайну.
Не думаю, что под данную достаточно специфичную задачу есть фреймворк.UPD. Продублирую ответ из комментариев:специфично здесь следующее: когда вы начнете делать такой сайт, вы столкнетесь с кучей проблем уровня js, верстки и дизайна. Сначала вы будете тупить над версткой и css, потом над тем, чтобы ваш js-код был читабельным, затем над тем, чтобы все это дело подгонять, потому что с первого и десятого раза у вас получится некрасивая херня. Придется менять js-код и верстку по 10 раз, и, если вы не имеете достаточного опыта в том и в другом, у вас получится страшный код, 100500 итераций переделки и огромное число человеко-часов.
Это просто так кажется, что вот тут полоска, тут полоска, го анимировать. Это же все надо продумать, скреативить, затем подгонять параметры анимации и прочего. 
Либо трех людей (js-программист, верстальщик, дизайнер) запереть в одной комнате и привязать цепью =)

Худший ответ:
Есть опыт, проблема достать картинки, представить как на внешний вид будет в итоге выглядеть и угодить заказчику (в основном это работа дизайрена). Работы для кодера здесь на 1 час если понимать что делаешь.
Как делать? css transition + transform + clip. При клике в меню с помощью js меняются классы у соответствующих элементов.
Вопрос: Как правильно написать mysql запрос?

Лучший ответ:
SELECT u.id, u.name, u.age, h.hobby
FROM users u
LEFT JOIN hobbies h
ON u.id = h.user_id;
Пояснение "человеческим языком":
- выбрать id, name, age из таблицы u (алиас users), а также hobby из таблицы h (алиас hobbies)
- из таблицы users (к которой будем обращаться по алиасу u)
- и объединить с результатами из таблицы hobbies (к которой будем обращаться по алиасу h)
- а само объединение делаем по правилу где id из таблицы u (users) равно user_id из таблицы h (hobbies)
LEFT JOIN берет за основу таблицу слева (отсюда LEFT), то есть ту, которая первая - стоит в самом SELECT FROM. Далее он дозаполняет новую временную таблицу колонками и значениями, получаемые из второй таблицы (указана в LEFT JOIN).
На выходе получается:

Худший ответ:
Ипользуйте Left Join
Вопрос: Не могу разобраться с GIT. Объясните, пожалуйста, что делать в таком случае?

Лучший ответ:
Подмержить туда (в update) актуальную версию develop c необходимыми фиксами.
Можно ребейзить develop или черрипикать определенные коммиты с фиксами, но это поломает историю. А так - наглядно видно, что куда, после чего и с какой мотивацией...

Худший ответ:
Подмержить туда (в update) актуальную версию develop c необходимыми фиксами.
Можно ребейзить develop или черрипикать определенные коммиты с фиксами, но это поломает историю. А так - наглядно видно, что куда, после чего и с какой мотивацией...
Вопрос: Онлайн проверка input на наличие текста?

Лучший ответ:
Потому что вы скопировали себе только часть решения. Много не хватает.
Решение: jsfiddle.net/IonDen/9g3jjzff

Худший ответ:
попробуйте так $(function(){
                    $(".your_input").on("change", function(){
                                      if($(this).val().length < 3){
                                              $('button.btn-right-minlabour').attr('disabled', false);
                                      }else{
                                              $('button.btn-right-minlabour').attr('disabled', true);
                                      }
                    });
});
Вопрос: КЛАДР API. Вывести список в формате JSON?

Лучший ответ:
Попробуйте API dadata.ru – ответ в JSON-формате вернет подробную информацию по адресу.

Худший ответ:
На примере получения списка регионов, можно было-бы так:
$regions = file_get_contents('http://kladr.magora.ru/regions/100/0');

Или курлом.
В переменной $regions лежал бы полученный json.
Но по ссылкам с примерами у них 404 почему-то.
Вопрос: Какие можете дать советы по постоянной работе в ночное время?

Лучший ответ:
После ночной работы ОБЯЗАТЕЛЬНО: хорошее питание и полноценный сон.
А в остальном - никаких проблем абсолютно!

Худший ответ:
Привет! 
Работа по ночам непроста. Но все зависит от вашего режима сна. Вот у меня есть подруга, которая, еще когда мы в школе учились, приходила после уроков, спала до 2-3 часов ночи, а потом вставала и делала домашнее задание. Ей было так удобно. 
А так питайтесь правильно, занимайтесь спортом, пейте много жидкости, но только ни кофе или энергетик. 
Если нужно немного взбодриться перед работой, то примите слегка теплый душ. Составьте себе определенный график всего вашего дня, и придерживайтесь ему. Организм постепенно привыкнет к действиям, которые будут выполняться изо дня в день.
Вопрос: Какие есть реализованные алгоритмы по физике твердых тел, в частности сопротивления материалов?

Лучший ответ:
Можете попробовать посмотреть на Farseer Physics Engine. Это физический движок на C#, исходные коды которого в свободном доступе. Для «посмотреть примеры кода» мне кажется в самый раз. Я использовал его вкупе с XNA.

Худший ответ:
Примеры моделей есть в Матлабе и Фемлабе. Диф уры в учебниках по сопромату. Или вам нужен код на каком-то языке?
Вопрос: Как сделать выравнивание тултипа по вертикали по центру?

Лучший ответ:
Любой из способов по запросу "CSS вертикальное выравнивание"
например,top: 50%;
transform: translateY(-50%);
Выложили бы свои стили, помощи могло бы быть больше.

Худший ответ:
используйте что то готовое, где яваскриптом выставляет в нужное положение.
например с bootstrap https://v4-alpha.getbootstrap.com/components/popovers/
Вопрос: [TELE2] Как узнать стоимость звонка на номер?

Лучший ответ:
Позвоните в call-center, задайте там этот вопрос и расскажите, что Вам ответят. Немножко в тему: habrahabr.ru/post/135626/

Худший ответ:
Итак, результаты.

Ответ от теле2:
Звонок на номер Теле2 Воронеж стоит 1,5 руб. минута как межгород с Теле2 на Теле2. 
Но возможны случаи мошенничества — когда у принимающей стороны стоит коммутирующее устройство и тогда звонящий не только осуществляет звонок, но и набирает команду мобильного перевода средств и при наличии их перевод осуществляется. Ограничить сотовый оператор может пользователя только по жалобе абонентов, т.к. вычислить подобное оборудование пока не предоставляется технически возможным ни у кого из сотовых операторов.

Исходное сообщение вконтакте, которое заставило искать ответ: vk.com/wall91129138_5137

А точнее это:
1) vk.com/feed?reposts=wall91129138_5137&section=comments
2) www.google.ru/search?q=8-952-542-6005

И последний известный мне факт: объявление вроде бы как для Томска, но номер, по словам саппорта, принадлежит воронежскому теле2.

Увы, способа проверить «честность» номера я не нашёл.
Вопрос: Как сжать через yii2 изображение для PageSpeed от гугла?

Лучший ответ:
Приветствую! Да, мы тоже прогоняем проекты через  гугловский сервис. Только не нужно вешать все задачи на yii2, а точнее даже на php. Для оптимизации изображений нужны специальные инструменты. Вы же не используете photoshop для редактирования php? А по делу, вот хороший сервис, сам лично неоднократно под гугловскую проверку прогонял изображения: https://tinyjpg.com/

Худший ответ:
Как вариант - через фотошоп, редактировать и сохранить, во время сохранения регулируете размер файла (смотрите оптимальное соотношение размер-качество), а также для некоторых форматов при сохранении выбираете в опциях - оптимизация либо progressive(насколько я понял постепенная загрузка файла).
Вопрос: Как хранить элементы для добавления с помощью JS?

Лучший ответ:
делаешь нужный кусок кода в html
делаешь его скрытым
если нужно создать копию его - клонируешь(например копируя innerHTML) его и вставляешь в нужном месте

Худший ответ:
Я храню куски переиспользуемого html в тегах  прямо в тексте страницы.
Вопрос: Как создать шаблон для типа публикаций?

Лучший ответ:
Смотрим иерархию шаблонов https://developer.wordpress.org/files/2014/10/temp...
loop-category.php - это, скорее всего, кусок шаблона, подключаемый через get_template_part() в одном из основных шаблонов WP, или другим более изощренным способом) Зависит от разработчика темы. А чтобы сделать шаблон для одиночной записи кастомного типа поста, нужно писать его в файле single-слаг_типа_поста.php

Худший ответ:
Смотрим иерархию шаблонов https://developer.wordpress.org/files/2014/10/temp...
loop-category.php - это, скорее всего, кусок шаблона, подключаемый через get_template_part() в одном из основных шаблонов WP, или другим более изощренным способом) Зависит от разработчика темы. А чтобы сделать шаблон для одиночной записи кастомного типа поста, нужно писать его в файле single-слаг_типа_поста.php
Вопрос: Обязательно ли уметь рисовать, для того чтобы стать веб-дизайнером?

Лучший ответ:
Я не веб-дизайнер, и не художник, но мне кажется, что рисовать портреты уметь не обязательно.
Но нужно разбираться в пропорциях/сечениях, шрифтах, уметь подбирать цветовую гамму для фонов и объектов/текстов, еще нужно иметь чувство стиля/вкуса - это самое сложное: ни кто не знает однозначно, что стильно, а что не стильно.
Ну и читать о дизайне: что сейчас считается современным, а что - архаичным.

Худший ответ:
ты сам ответил на свой вопрос - HTML, CSS, Photoshop. Смотри лет на 5 вперед, из веб-дизайнера все равно эволюционируешь рано или поздно, практикуй сразу всё (позже Corel и JavaScript). 
Начинай по порядку, как в этом тексте =)
Вопрос: Стоит ли использовать конструктор сайтов Wix?

Лучший ответ:
У всех конструкторов есть одна общая черта: как только захочется чего-то "нестандартного", каких-то компонентов, которые отсутствуют в рамках этого конструктора - начнутся непредвиденные сложности. Зачастую проще и выгоднее переделать сайт с нуля, чем дописывать модули к конструктору.
Так что если вам нужен сайт "запустил и забыл", и текущих возможностей конструктора хватает - делайте.

Худший ответ:
Нет, не стоит. Возьмите нормальную cms с функционалом интернет-магазина и сделайте по-человечески.
Вопрос: Здравствуйте, скажите пожалуйста как более эффективно понять школьный курс математики?

Лучший ответ:
А как ты на 3 курс поступил и доучился, если школьный курс не знаешь?

Худший ответ:
Будет больше толка если вы возьмете реальную и не тривиальную задачу из программной инженерии и попробуете её решить. И все пробелы школьного курса вылезут сами собой. Вот тут то и можно будет за него взяться. 
А на третьем курсе универа заставлять себя решать задачи пятого класса... Это как то... печально.
Вопрос: Как получить список столбцов из таблицы имеющими тип Date?

Лучший ответ:
Спасибо)
SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'tablename'
ORDER  BY ordinal_position;

Худший ответ:
Ну написать запрос к системной таблице, где хранится информация о всех столбцах всех таблиц БД. В ORACLE это, если мне не изменяет память, ALL_TAB_COLUMNS. Как она называется в POSTGRES вам поможет гугл.
Вопрос: Почему не срабатывает скрипт через планировщик cron?

Лучший ответ:
а что скрипт выводит на stdout при запуске из крона?
Самая распространненая ошибка в том, что при логине юзера выполняются всякие .bashrc и .profile, а при запуске из крона - нет, поэтому банально в PATH может не быть нужных путей к например mount.cifs

Худший ответ:
добавь рута в строке запуска задачи в кроне:
0 22 * * * root /etc/skript
да и лог крона в случае не отрабатывания нужно поглядеть, там сразу будет видно.
Вопрос: Почему при вставке второй планки комп не загружается?

Лучший ответ:
Решение очень простое - перед покупкой памяти и ее установкой читать внимательно спецификации на ваше железо.
Неизвестно какая у вас системная логика, какой тип памяти и какой объем памяти она поддерживает, и какую память вы поставили.

Худший ответ:
проверьте что тип памяти совпадает,
забейте в гугл "название мат платы memory support list"
 если слотов под память больше двух то списке который вы нагуглили будет написано в каком порядке вставлять.
местами поменяйте старую и новую.
поменяйте новую в магазине на "попроще"
Вопрос: Livejournal API

Лучший ответ:
На данный момент там только плоский протокол и xml-rpc, для авторизации требуется ввод пароля. По инсайдерской информации OAuth в пути, примерные сроки пока неизвестны.

Худший ответ:
только через пароль
Вопрос: Возможно ли стать junior android разработчиком удаленно без опыта?

Лучший ответ:
Возможно все. Берите и делайте. ДЕЛАЙТЕ, а не задавайте дурацкие вопросы.

Худший ответ:
Если заранее настолько неуверен в себе, то нельзя
Вопрос: Как hr находят разработчиков на «пикантные» проекты?

Лучший ответ:
естественно, при контакте этот момент оговаривается.
да и сама "пикантность" вполне может быть озвучена в вакансии.
а в чем проблема?
"определенная" категория сайтов технически ничем не отличается от других.
а если сотрудники валятся в обморок при виде "определенностей", то изображения элементарно меняются на заглушки.

Худший ответ:
Ну нет) Знакомства, фриланс.
Вопрос: Как сейчас с питоном на windows 10?

Лучший ответ:
С ним и на чистой Windows было хорошо, кроме случаев когда требовалось подключить библиотеки на С и скомпилировать их при установке. Я лично в таких случаях просто выкачивал уже скопилированные бинарные библиотеки.
А Ubuntu Linux Subsystem - это вполне себе полноценный bash и пр. unix-утилиты командной строки.
То есть не должно быть заморочек и с компиляцией таких библиотек.

Худший ответ:
Имхо, не стоит.
Добавили они только bash, многие функции там заблокированы.
Вопрос: Как отправить содержимое div из формы на почту?

Лучший ответ:
ну так получите содержимое блока и добавьте его к отправляемым данным.
вопрос то в чем?

Худший ответ:
У вас получается строка запроса, если вам нужно просто работать с данными из формы то лучшее использовать serializeArray() В результате, вы получите массив с данными [
  {
    name: "a",
    value: "1"
  },
  {
    name: "b",
    value: "2"
  }
]
Вопрос: WHMCS как проверить пользователя на авторизацию?

Лучший ответ:
просто проверьте наличие $_SESSION[ 'uid' ]

Худший ответ:
У меня это было реализовано так:define("CLIENTAREA",true);
require("./bill/init.php");
$ca = new WHMCS_ClientArea();

if ($ca->isLoggedIn())
{ ... }
Вопрос: Не сохраняются cookie?

Лучший ответ:
потому что только setcookie устанавливает/меняет куки.

Худший ответ:
Отличный парень, знакомся ПРИВЕД :D
Вопрос: Yii — как заменить корневые классы?

Лучший ответ:
пора апгрейдиться )

Худший ответ:
www.yiiframework.com/doc/guide/1.1/ru/basics.names..., см. «Использование таблицы классов».
www.yiiframework.com/forum/index.php/topic/28979-h...
Вопрос: Можно ли сжимать подключаемые файлы на лету?

Лучший ответ:
Добро пожаловать на сайт Grunt или Gulp.
С помощью этих инструментов можно автоматизировать сборку ваших файлов, а именно использовать плагин Uglify для минификации. То есть вы редактируете полный JS-файл, сборщик его минифицирует и отдает вам .min.js-файл.

Худший ответ:
Можно, используйте сборщики, например, Gulp
Вопрос: Как найти причины, из-за которых MODX грузит сервер?

Лучший ответ:
Есть вот такой инструмент https://modstore.pro/packages/utilities/debugparser

Худший ответ:
Вывести время рендеринга, затем поочередно отключать сниппеты.
Вопрос: Современные инструменты front-end?

Лучший ответ:
Sass/Less
Gulp/Webpack
Git
Bower
Github
ну и конечно же интернет, уметь им пользоваться
А вообще читай здесь, это Букварь так сказать: вот

Худший ответ:
Пользоваться тем, что приносит прибыль. Т.е. инструментами, которые для тебя удобны и решают поставленную задачу в максимально короткий срок.
Вопрос: Как заставить Node.Js дождаться выполнения MySQL?

Лучший ответ:
А если так:var mysql      = require('mysql');
  var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : '1047750'
  });
  connection.query(
    'SELECT * FROM test',
    function(err, result, fields){
      console.log(err);
      console.log(result);
    }
  );
  
  connection.end();
У вас тут итак колбек, функция, которая будет вызвана после совершения запроса и примет в себя данные (результат либо ошибка).

Худший ответ:
Заюзай библу sync
https://github.com/ybogdanov/node-sync
Вопрос: У меня скопировали программу для ЭВМ — что делать?

Лучший ответ:
Поднажать на функционал своей программы и оторваться от конкурентов.
Юридически думаю ничего не сделать.

Худший ответ:
Фактически суд будет представлять состязание двух приглашенных экспертов - с Вашей стороны и со стороны конкурентов. Мое субъективное впечатление - выиграть дело не удастся, если только Вами ранее не были зарегистрированы через Роспатент описанные схожие элементы.
Вопрос: Как выглядит реализация предпросмотра ссылок на сайте?

Лучший ответ:
Загружаем ссылку, отправляем запрос на этот адрес, анализируем opengraf разметку, выводим результат. Как-то так ))

Худший ответ:
Гем link_thumbnailer  для работы с opengraf
Вопрос: Как выделить выбранный пункт?

Лучший ответ:
строка 356<li{if ($group.default == $id_attribute)} class="active"{/if}>
    <input onchange="$(this).parent().parent().find('li').removeClass('active').find('input:checked').parent().addClass('active')" type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
    <span>{$group_attribute|escape:'html':'UTF-8'}</span>
</li>
в стилях дописатьбыло #attributes .attribute_list ul li:hover

стало #attributes .attribute_list ul li:hover, #attributes .attribute_list ul li.active

Худший ответ:
input:checked + span {}
И я бы span заменила на label
Вопрос: Отображение разной верстки на разных разрешениях. Как правильно?

Лучший ответ:
1. Класс hidden-xs это display: none. В свою очередь, display: none - Временно удаляет элемент из документа. Занимаемое им место не резервируется и веб-страница формируется так, словно элемента и не было. Изменить значение и сделать вновь видимым элемент можно с помощью скриптов, обращаясь к свойствам через объектную модель. В этом случае происходит переформатирование данных на странице с учетом вновь добавленного элемента. Следовательно пользователю изображения не прогрузятся.
2-3. Тут как душе угодно. НО!!! Ни есть хорошо, когда существует две вёрстки с одинаковым контентом. Я бы со стилями повозился. Да, это займёт больше времени, но зато и профит получишь, и код чище станет, и к карме +100 будет))

Худший ответ:
boostrap решает все эти вопросы, но загромождает код, и тут вопрос сколько таких скрытых блоков, если это 1 - 2 блока - то в чем проблема?
Можно еще сделать динамическую подргузку части блоков, после загрузки страницы в js получать размеры дисплея и слеать ajax, который вернет блок именно для этого размера, пока идет ajax можно какой-то лоадер вставить вместо блока
Ну и если шаблоны совершенно разные, то можно на сервере определять устройство и под разные устройства генерить разные шаблоны. Нет гарантии, что устройство верно определиться, но иногда это единственный вариант.
Еще вариант - делать прелоадер и пока он там красуется, делать ajax и получать нужный контент. Различия версий можно разрулить через поддомены.
В любом случае, надо смотреть на весь проект. Ибо решений много, но только одно из них оптимально для Вашего случая.
Вопрос: Ломается структура кода, как исправить?

Лучший ответ:
что же за говно у вас в место кода... 
А вообще если код нормальный то и ставит по нормальному.

Худший ответ:
Webshtorm не вариант?
Вопрос: Есть ли плагин к саблайму, который из html разметки создаёт структуру для css/scss?

Лучший ответ:
онлайн утилиты:
lab.xms.pl/css-generator
primercss.com
www.bearcss.com
beecss.theextremewebdesigns.com

Худший ответ:
Tag для Sublime 3
Вопрос: Есть ли смысл использовать PHP 5.5/5.4/5.3/5.2/4.4 и.т.д. на небольшом хостинге?

Лучший ответ:
Раньше 5.6 смысла нет

Худший ответ:
5.2.  - нужно, для старых сайтов.
5.3 -тоже класика жанра.
5.4-5.6 любое на выбор и то для разнообразия. 
7.0 -  7.2 не так давно вышел так что отнють не все его поддерживает.
7.1 - улучшит скорость тем кто  не дотягивает до 7.2
7.2 нужны поскольку  не все проекты могут сразу поднять на 7.2 ( по умолчанию) ибо  не нужно будет апать версию достаточно долго, а кому надо тот понизит.
более низкие версии не нужны.
Вопрос: Можно ли в верстке использовать только position:absolute вместо float?

Лучший ответ:
Можно вообще использовать только position никакого float?
Если что, можно и без float и без position.

Худший ответ:
Смотря для чего.
Вопрос: Как правильно написать кастомный асинхронный модуль на NodeJS?

Лучший ответ:
Так можно же посмотреть, как написан тот же модуль fs: https://github.com/joyent/node/blob/master/lib/fs.js
Как писать асинхронные функции Вы нашли, код нормальный, а вот асинхронный модуль - это нонсенс, вот модуль fs синхронный или асинхронный? Ведь в нем есть fs.readFile и fs.readFileSync. Модуль может содержать и синхронный и асинхронный код, вообще в ноде асинхронно решается обычно только ввод-вывод: работа с файлами, сетью, базой данных. Весь остальной код остается синхронным. Чувствуется, что Вы еще не полностью освоили ноду, а уже хотите делать свои модули. Рекомендую Вам перед этим почитать исходники хороших модулей, например, вот этих небольших и хорошо написанных:
https://www.npmjs.com/package/mkdirp
https://www.npmjs.com/package/ncp
https://www.npmjs.com/package/colors
Советую пройти nodeschool.io/ru и потренироваться в использовании модулей, а потом уже делать свои. Еще обязательно освойте библиотеку async: https://github.com/caolan/async и посмотрите что такое EventEmitter https://nodejs.org/api/events.html Ну и конечно читайте исходники ноды и других модулей. Статей же нагуглить  или на Хабре нарыть - не должно быть проблемой.

Худший ответ:
gMyModule.prototype.DoSomething = function(variable, callback)
{
	process.nextTick(function(){
		/*
			основной алгоритм, использующий variable
		*/
		callback(result, error);// результат работы алгоритма (либо всё ОК, либо ошибка)
	});
}

module.exports.MyModule = gMyModule;
вроде как-то так.