Задать вопрос
  • Наполнение объекта javascript в цикле, как сделать элегантно?

    @Roman_Kh
    Чтобы избавиться от "жутких if'ов" и сделать элегатное обновление вам нужно
    1. изменить структуры данных: users и jobs должны стать map'ами по именам пользователей.
    users = {
         'Вася' : {
               'job': 'Слесарь', 
               'phone' : 123345
         },
         'Петя' : {
               'job': 'Слесарь', 
               'phone' : 789901
         }
    }
    
    jobs = {
         'Вася' : { 'job': 'Плотник' },
         'Петя' : { 'job': 'Столяр' }
    }

    2. применить Object.assign (или object-assign)
    И тогда весь ваш цикл превратится в одну строчку
    Object.assign(obj.users, users)
    И обновление работ также уместится на одной строке:
    Object.assign(obj.users, jobs)
    Или можно объединить обе операции:
    Object.assign(obj.users, users, jobs)

    Обратите внимание, что в случае с object-assign будет чуть-чуть иначе:
    obj.users = object_assign(obj.users, users, jobs)
    Ответ написан
    4 комментария
  • Как организовать вебинар?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы не отмечающим решения…
    Сейчас появился ресурс Livecoding.tv, позволяющий демонстрировать процесс разработки каждому. Видел, что у них есть опции "Платная трансляция". Видео они также пишут.

    Программа, используемая для трансляции -- с открытыми исходниками. Работает путем захвата рабочего стола, но позволяет накладывать видео с веб-камеры в окне. Видел также трансляцию, организованную какой-то компанией, у них вид из комнаты, а не рабочий стол.
    Ответ написан
    1 комментарий
  • Как выбрать конкретный элемент?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Это реализуется с помощью CSS
    h1:hover ~ img {
    	transform: scale(1.1, 1.1);
    }

    И я умоляю — используйте классы. Полагаться на имя тэга — плохо, плохо, плохо.

    Update:
    Выясняется, что и структура другая, и наводиться нужно на иной элемент.
    Вот этот jQuery.
    Ответ написан
  • Как сделать разрядность числа html?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Вариант с replace и регуляркой

    $(function () {
    	$('.cena').each(function () {
    		$(this).text($(this).text().replace(/^\s*(\d+)(\d{3})\s*([а-я\.]+)?\s*$/, '$1 $2 $3'));
    	});
    });
    Ответ написан
    3 комментария
  • Как работает замыкание вообще и в JavaScript, в частности?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Пример, который вы привели, относится больше к каррированию (каррингу).
    Вы передали некое значение, которое получила в свой контекст внутренняя функция, которая и вернулась.

    Замыкание ли это? Безусловно. Почитайте про лексический контекст у Ильи Кантора. Лексический контекст зависит от способа создания (FD, FE или вызов конструктора Function).

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

    Closure — не паттерн, а реализация. К паттерну Singlton не имеет отношения.
    Тык, пык.
    Ответ написан
    3 комментария
  • Node.js код в MVC с запросами к сторонним API. Знаете пример?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Я делаю запросы к API через cron, а само приложение просто берет готовое из БД.
    Плюсы: нет коллбек-хелла; нет тормозов и отказов, если внешнее API упало.
    Минусы: данные в БД неминуемо несвежие (насколько несвежие — зависит от того, насколько часто по крону запускается граббер), но это не всегда страшно (например, прогноз погоды в API обновляется каждые два часа).
    Ответ написан
    3 комментария
  • Node.js код в MVC с запросами к сторонним API. Знаете пример?

    rumkin
    @rumkin
    Ищите раздельно:
    • Примеры приложений на Sails.js – классический MVC-фреймворк.
    • Грабберы, но их вы вряд ли найдете. В Sails вы можете создать сервис с очередью заданий, которые будут выполняться хоть бесконечно долго (пока не умрет процесс например).
    Ответ написан
    1 комментарий
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

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

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Я конечно не знаю как в сфере UX дела на фрилансе, но вот в сфере веб-разработки я лично не знаю ни одного крутого профессионала, который бы бросил свою работу в пользу фриланса.
    Да и сам я сколько не присматривался к заказам как у нас, так и забугром, ничего интересного не видел.
    Ответ написан
    3 комментария
  • Как дождаться завершения setTimeout в Node.JS?

    savostin
    @savostin
    Еще один программист
    Самый правильный вариант - поместить "все то, что ниже таймаута" внутрь функции callback.
    И побольше почитать про асинхронность Node.js - отличия в архитектуре приложения от того же php просто гигантские.
    Ответ написан
    1 комментарий
  • Как послать 10000 запросов через setTimeout в Node.JS с адекватным расходом памяти?

    Lynn
    @Lynn
    nginx, js, css
    Я бы сделал примерно так:
    var l = Data.length;
    var n = 0;
    
    function send() {
      API.sendData(Data[n]);
      n++;
      if (n < l) {
        setTimeout(send, 100);
      }
    }
    
    send();


    Смысл прост, не ставим в очередь сразу все 10000 запросов, а добавляем в очередь по одному после выполнения предыдущего. Тогда у вас в ожидании всегда будет только один запрос.
    Ответ написан
    5 комментариев
  • Как послать 10000 запросов через setTimeout в Node.JS с адекватным расходом памяти?

    smanioso
    @smanioso
    Отмечайте ответы на свои вопросы!
    var i = 0;
    var data = [];
    function foo() {
      if (i == data.length) 
          return;
      // send one item to airtable
      i++;
      setTimeout(foo, 1000);
    }


    + можно открыть issue для их собственной библиотеки https://github.com/airtable/airtable.js
    Ответ написан
    8 комментариев
  • Как в NodeJS сделать EventEmitter для нескольких одновременных запросов?

    Во-первых, в случае async вам больше подходит parallel, а не series. async.parallel не ждет вызова колбека из первой функции и сразу запустит вторую после возврата первой.
    Во-вторых, API, которые вы запрашиваете, должны быть (и наверняка являются) асинхронными, а потому сразу возвращают вам ничего. Вы должны передавать этим API колбек, внутри которого вызывать колбек асинка.

    Как-то так:
    async.parallel({
      one: function(callback) {
          crunchbase.request(arg1, function(error, answerAPIone){
            callback(null, answerAPIone);
          });
      },
      two: function(callback) {
          airtable.request(arg1, function(error, answerAPItwo){
            callback(null, answerAPItwo);
          });
      }
    },
    function(err, results) {
      console.log( 'ИТОГО: <', results.one, '><', results.two, '>' );
    });
    Ответ написан
    Комментировать
  • Как в NodeJS сделать EventEmitter для нескольких одновременных запросов?

    @dtestyk
    однажды для подобной проблемы коллега предложил считать события.

    также, можно использовать Promise.all(db_promise, src_promise), при некотором старании и Promise.race даже получится обработать таймаут.
    Ответ написан
    Комментировать
  • Как в NodeJS сделать EventEmitter для нескольких одновременных запросов?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    https://github.com/caolan/async
    async.series({
      one: function(callback) {
        setTimeout(function() {
          callback(null, 1);
        }, 200);
      },
      two: function(callback) {
        setTimeout(function() {
          callback(null, 2);
        }, 100);
      }
    },
    function(err, results) {
      // results is now equal to: { one: 1, two: 2 }
    });
    Ответ написан
  • Как сделать embed iframe для videojs плеера?

    Так просто создайте iframe с плеером и всё.
    К примеру давайте пользователям ссылку domen.net/video_id и по этой ссылке у вас будет загружаться только видео плеер с нужным видео.
    Пользователям даём готовый код для вставки:
    <iframe width="560" height="315" src="domen.net/video_id" frameborder="0" allowfullscreen></iframe>
    Ответ написан
    2 комментария
  • Как динамически растягивать родительский див?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    1. Контейнер
    display:table (inline-table) + max-width:100% + table-layout:fixed (если нужно уравнять ширину колонок)

    2. Контейнер
    display:inline-block + max-width:100% + font-size:0 + white-space:nowrap (чтобы колонки не прыгнули друг под друга без ширины)
    Колонки
    display:inline-block + vertical-align:top + font-size:1rem + width:50% (если нужно уравнять ширину колонок) + white-space:normal (если было установлено nowrap)
    Можно и float при желании с clearence у потока или overflow у контейнера

    3. Контейнер
    float + max-width:100%
    Колонки
    float + width:50% (или другие цифры, не превышающие в сумме 100%)
    Точно так же можно и display:inline-block с обнулением и возвратом размера шрифта
    Ответ написан
    2 комментария
  • Какой софт использовать для верстки / программирования (Front-end)?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Проектирование — Balsamiq Mockups (ну и MS Word, куда же без него:)
    Нарезка — Fireworks (Photoshop для коррекции полученных макетов)
    Иконки — ArtIcons (не идеал, просто купил когда-то) или любой редактор для PNG + любой конвертер
    SVG — Illustrator и Inskape
    Пипетка (просто пипетка, а не комбайн) — EYE3 (вариантов масса)
    Код — Sublime (посматриваю в сторону WebStorm), иногда Notepad++, иногда Excel для подготовки массивов данных
    Локальный сервер — использовал из-за простоты установки Denwer, перехожу на Node.js
    FTP клиент — Filezilla
    Быстрая проверка на iPad, iPhone (iPod) — Electric Mobile Studio
    Ответ написан
    3 комментария
  • Какой язык программирования подходит для заработока?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Моя первая девушка была из моего же класса. Увы, с ней я так и не смог толком понять, что такое — быть мужчиной. Ну там на 8 марта да на ДР цветочки подарить — это понятно, но на большее фантазии так и не хватало.

    Я решил бросить её как только школу закончу, а то скучно и беспесперктивняк какой-то... Да и шашни я с ней завёл, только чтобы мужчиной стать, а с этим беда — кроме @#$лей от её бывшего (из параллельного класса) я толком никакой школы и не получил.

    Вот в институте — там другое дело, девок симпотных побольше, и ломаются меньше (мне рассказывали, точняк — верить можно, парни проверенные), но... Какого-то лешего со мной никто не хочет мутить. Я начал в стриптиз-клуб ходить, там есть одна ничего так — я на неё постоянно пялюсь. Говорят, она на меня тоже посматривала (оказалось — наврали...).

    Потом мне посоветовали один клуб — типа оттуда никто одиноким не уходил, начал там зависать:) Круто! Мне 3 раза дали. Ну точнее 2, один раз девушка отрубилась и уснула у меня дома, но я решил, что она согласна. По-любому согласна, раз приехала. А с одной из них даже наметился романчег:)

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

    Посоветуйте — есть ли какой-нибудь клуб, где девчонки как из второго, а цены как из первого? Очень нужно.
    Ответ написан
    19 комментариев
  • Нужен ли перевод статьи о замыканиях в javascript (ecmascript 3ed)?

    Последний раздел про утечки памяти в IE4-6 устарел. Если это место не переводить или обновить информацию до актуальной, то конечно такая статья нужна. На русском языке про замыкания отдельных стоящих статей не так уж и много: упомянутая Вами статья Дмитрия Сошникова и небольшая статья на хабре. Так же есть статья на MDN, но она переведена только частично.
    Ответ написан
    Комментировать