• Что такое потоки в node.js?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Это такая штука, которая выдает (или принимает, или и то и другое) данные кусочками (chunk). Чтобы объяснить, зачем они нужны, нужно немного отвлечься и вспомнить, как работает nodejs.

    Преимущество nodejs состоит в том, что пока БД или ФС реагирует на команду, мы можем запустить другой коллбэк. За счет этого мы можем обработать много запросов какбэ параллельно, но с точки зрения программиста параллельности нет, потоков нету, race condition не возникает и башка у него об этом не болит. И у нас все быстро работает, пока ни одна функция не занимает процессор слишком надолго, пока она не работает слишком долго. А если она займет, то, в силу однопоточности, у нас все остальные запросы зависнут.

    Но иногда нам все-таки сделать большую работу — прочитать или записать большой файл, например. С помощью потоков мы дробим эту работу на кусочки, которые не занимают проц надолго. Это не всегда возможно, но в большом количестве случаев вполне себе работает.

    P.S. В данном ответе речь идет о stream (не путать с thread).
    Ответ написан
    5 комментариев
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

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

    А так по моему важнее не инструмент, а умение им пользоваться. Начинать следует с алгоритмов, а язык использовать как инструмент.
    Хотя откладывать изучение языка тоже нельзя - практика важнее теории. Так что в комплексе - постигай алгоритмы на практике, по мере необходимости, и запоминай их.

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

    Конкретный язык нужен кодерам - это те, кто воплощает чужие идеи в коде, т.е. конечные винтики в процессе разработки софта, исполнители. От кодеров требуется только перенести уже готовый алгоритм на требуемый язык, максимально быстро, и по возможности без ошибок.
    Изучив конкретный язык ты можешь стать кодером, но это черновая работа, и по хорошему - временная, просто ступенька на пути становления программиста. Нужно двигаться к архитектору, инженеру, непосредственно программисту в широком смысле.

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

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

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

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

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

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

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

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

    С третьим - придешь, когда поймешь, что тебе это нужно. Из-под палки не учатся.

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

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

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

    Чтобы вернуть веру в себя, нужно стать победителем. Победители всегда побеждают - в этом и суть. Необходимо начать побеждать, любой ценой: нужно брать такие задачи, которые точно сможешь решить, какими бы простыми они не были. Можешь вернуться к азам, началу, детскому уровню сложности, если потребуется - главное чтобы задачи начали решаться, не важно какие и как. Пока не уверен, что готов двигаться дальше - удерживаешь уровень, каким бы низким и зазорным он не был. Важно обмануть мозг, а не показать класс всему миру, иначе обратно утонешь.

    Сложность задачи не особо влияет на мотивацию, а вот факт решения/нерешения - влияет сильно. Не решил - значит не осилил, не осилил - значит не достоин, не достоин - значит иди ко дну и не рыпайся. Это как импотенция: импотент - значит не мужик, не мужик - значит никто, ничего не достоин и об тебя можно ноги вытирать. Подсознание портит всю малину, так что не следует давать ему шанса - лучше решить задачу попроще, чем не решить по сложнее.
    Ответ написан
    7 комментариев
  • Качественный перевод книг по программированию, где взять?

    kumaxim
    @kumaxim
    Web-программист
    Есть всего два способа выучить иностранный язык:
    1. читать на нем
    2. писать на нем


    Переводы, особенно технической литературы, лично я, советую Вам не читать. Не, перевели может быть ребята нормально, но в теме переводчик, скорей всего, вообще не разбирается, поэтому часть контекста, который хотел донести до читателя автор оригинала, теряется.
    Пройдите любой интенсив по английскому и читайте книжки в оригинале с google translate. Намного больше поймете, чем из перевода.
    Ответ написан
    2 комментария
  • Чем может быть полезен C++ веб разработчику?

    onqu
    @onqu
    weasy
    Чтобы сделать свой браузер и наблюдать с попкорном, как смертные будут пытаться оптимизировать свои творения под него.
    Ответ написан
    1 комментарий
  • Как работать на Upwork?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Работаю с tahometr, думаю суть та же. Для себя определил:
    1. переписка и скайп с заказчиком - работа
    2. планирование, проектирование - работа (в тахометре можно добавлять офлайн время с коментами)
    3. поесть, поспать, поср..ть, покурить - не работа
    4. Чтение доков - 50 на 50, если читаю, что-то по теме того, что должен знать (php справочник например), - не работа, но если для сайта нужно api чего-то (например платежная система) и нужно разобраться в нем - работа
    5. Сидеть тупить в экран - не работа

    Как итог - есть постоянные клиенты, которые позволяют все меньше времени шариться по фриланс биржам. Работайте честно и оно Вам аукнится.
    Ответ написан
    3 комментария
  • Как с помощью JS на странице обновлять текст?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    <span class="fileData"></span>

    var xhr;
    setInterval(function(){ 
      xhr&&xhr.abort();
      xhr =  new XMLHttpRequest();
      //xhr.timeout = 3000; - изначально подумал я. 
      //Но ведь интервал может повториться раньше, когда браузеру в голову взбредет...
      //Так что будем юзать abort
      xhr.onreadystatechange = function(){
         if(xhr.readyState == 4){
            document.querySelector(".fileData").textContent = xhr.responseText;
         }
      }
      xhr.open('GET', '/key', true);
      xhr.send();
    
    }, 3000);
    Ответ написан
  • Как работает данная конструкция на JavaScript?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Так более понятно будет?
    function f(obj){
      //code
    }
    var module = f(f() || {});
    Ответ написан
    4 комментария
  • Какие scss-фреймворки лучше всего использовать? Какие лучшие и чем?

    @evilelf Автор вопроса
    Тупой, руки из жопы, кодю за зп и т.п. и т.д.
    Я на время выбрал bourbon. Достаточно много миксинов.
    Ответ написан
    Комментировать
  • Какие знания нужны фрилансеру за 5$/час?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    фронт-енде

    от языков программирования(C++, JAVA, C#)

    Мне одному кажется, шито это back-end?

    Какие знания нужны фрилансеру за 5$/час?

    Все возможные. чтобы не попасть в просак и не стать фрилансером за 1$/час...
    А еще нужно умение растягивать работу на несколько часов.
    Ответ написан
    6 комментариев
  • Почему хром на столько голодный?

    @webdiez
    Меня все знают как WebDiez.
    Может у вас какой то плагин установлен, который забивает так ОЗУ?
    Ответ написан
    3 комментария
  • Выбор языка для web разработки(real time). Какой вы посоветуете?

    @webdeveloper48
    Python + django + javascript.
    Имхо больше и нечего предложить.
    Думаю вам понравится)
    С знанием Python можно будет и под линукс делать что то,пилить дополнения под свой дистрибутив итд,многое написано на питоне,и он очень прогрессирует!
    Ответ написан
    Комментировать
  • Сколько нужно мониторов для верстки?

    @Lici
    1 монитор на макбуке 13". но при этом 6 виртуальных рабочих пространств, между которыми переключаюсь жестом.
    Ответ написан
  • Какие разделы английского стоит выучить для фриланса?

    @heartdevil
    плыву как воздушный шарик
    Учите сугубо ИТ английский.

    Открою секрет.

    Сидите часто на stackoverflow и читайте самые популярные вопросы и ответы от крутых разработчиков (владеющих отличным английским). Там легко понять уровень английского по ответам и вопросам. Это поможет не только "вариться" в своей среде, но и "вариться" по-английски. Запоминайте структуру сложных вопросов. И как они вообще подготавливаются. Далее смотрите, как на них отвечают. Зачастую, всегда просят описать задачу. Что, собственно, на самом деле и происходит на фрилансе. Далее, просят уточнить некоторые моменты. Затем постят свои решения с описаниями. Тут тоже нужно уделить внимание на подготовку ответа. Часто, конечно, это просто код)), но вам никто не запрещает, к примеру, спросить уточнения (не для понимания кода или алгоритма, а для понимания того, как разработчик будет разжевывать вам ответ на английском ;-)), если самолюбие позволяет)). Можете даже выписывать отдельные словосочетания, которые они применяют. К примеру, создал массив, присвоил значения переменной, пробежался циклом по массиву, создал класс, имплементировал интерфейс, перегрузил чего-то там и так далее.

    В таком ритме быстро научитесь понимать вопросы на английском и умело отвечать, но все это письменно. Разговорный вам может понадобиться, если клиент будет часто по скайпу вам названивать. Его освоить в разы сложнее. Поэтому можете честно заявлять клиенту, что уровень пока у вас не позволяет вести разговор. А там все от клиента будет зависеть.
    Ответ написан
    3 комментария
  • Приведите пример задачи на JavaScript, в которой не обойтись без использования паттерна?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Паттерны это не про решение задачи. Это про решение задачи типовым и понятным другим программистом методом. Паттерны решают проблемы не типа «сделать кнопочки», а типа «сделать так, чтоб через год не хотелось убить себя об стену и не надо было переделывать все с нуля».
    Ответ написан
    Комментировать
  • Что стоит почитать для понимания ивентов в node?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Ответ написан
    Комментировать
  • Освоение JS. Быстрый старт?

    @Sashjkeee
    f-e
    Да вы издеваетесь? Никак. Какой вам JS, если вы даже поиском пользоваться не умеете?
    За 8 часов уже третий такой вопрос.

    Как изучить JavaScript?
    С чего начать изучение JavaScript?
    Ответ написан
    3 комментария
  • Как написать свою библиотеку на JS?

    @IceJOKER
    Web/Android developer
    Что простите?
    Под библиотекой вы понимаете что-то вроде jQuery?
    Ну так придумайте задачу для которой пригодится эта библиотека и напишите О_О там отдельных знаний не нужно, нет отдельного пункта КАК НАПИСАТЬ БИБЛИОТЕКУ, т.к. в данном случае - библиотека - это просто набор обычного JS кода, который выполняет определенную задачу.
    По-моему вы даже не понимаете чего хотите
    Ответ написан
    3 комментария
  • Как работает выражение apply(this, arguments) в Javascript?

    hahenty
    @hahenty
    ('•')
    анонимную функцию, возвращаемую из not(), можно отдельно забиндить или вызвать на другом контексте, что позволит выполнять f с этим контекстом.
    function func(a,b,c) { return this[a] === b + c; }
    var ifunc = not( func );
    /****/
    var obj = { 'prop' : 10, 'attr' : true };
    /****/
      ifunc.call( obj, 'prop', 4, 6 )

    метод call также переопределяет контекст при вызове функции, как и apply, разница в подстановке аргументов.

    В другом случае можно генерировать методы для каких-нибудь объектов, причем с привязкой к прототипу.
    function equal( a ) { return this.prop === a; }
    /*...*/.prototype.eq = equal;
    /*...*/.prototype.neq = not( equal );


    А глобальный контекст вызывается обычно без явного указания для this.
    Ответ написан
    Комментировать
  • А какие вы знаете сайты где бесплатно помогут написать код?

    @Beltoev
    Живу в своё удовольствие
    Здесь тоже помогают, если человек показывает свой нерабочий код и просит помочь найти ошибку/исправить, а не НАПИСАТЬ ВСЁ за него.

    Собственно, на любом сайте (будь то QA или форум), где обитают программисты, ситуация одинакова:
    • Нужна помощь и ты сделал порядка 50%-70% работы? Не вопрос, поможем!
    • Нужна помощь, но ты ленивая задница, которая хочет всё за просто так? Дуй на fl.ru/freelansim.ru/... (нужное подчеркнуть)


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

    Судя по вопросу, ищете легких путей?
    Ответ написан
    Комментировать