• JS. Централизованная обработка ошибок

    alienator
    @alienator
    Никто за вас не решит, что лучше.

    Конечно, можно и нужно иметь try/catch на самом верхнем уровне. И дать ему какое-то полезное поведение — записать в лог, вывести красивое окошко и т.п., чтобы не пугать пользователя системными сообщениями.

    Это необходимый минимум.

    А дальше смотрите глубже. Что вам даст функция-обработчик внутри объекта исключения? Во многих случаях она уже бесполезна; она слишком далеко от точки возникновения ошибки, чтобы попробовать ее исправить (например, вызвать код повторно со значением по умолчанию, подождать освобождения ресурса и т.п., короче, какой-нибудь while/try).

    Перед каждым вызовом функции, которая может выбросить исключение, перед каждым входом в компонент у вас есть три пути:

    • обработать какие-то (или все) исключения здесь
    • обработать и передать выше (повторный throw)
    • ничего не делать (передать сразу наверх)


    Вам придется опускать обработку исключений глубже хотя бы там, где понадобится finally код. И там, где вы можете сделать что-то осмысленное, прежде чем полностью отваливаться с криками в лог.

    И вот там, поглубже, внутри компонента, уже действует ряд разумных рекомендаций:

    1. Не ловить всё подряд. Обрабатывать только те исключения, с которыми известно, что делать. Если не совсем известно, делать re-throw.

    2. re-throw делать аккуратно. Не надо, опять же, хватать больше от жадности, а потом пропускать исключения ненужных классов. Для ява-скрипта это выражается вот в чем:

    Нехорошо:
    try {
         // ...
    } catch (e) {
         if (! e instanceof MyError) {
              throw e;
         }
        // ...
    }
    


    Хорошо:
    try {
         // ...
    } catch (e if e instanceof MyError) {
        // ...
    }
    


    3. То, что вы делаете в finally, важнее, чем то, что делаете в catch. Есть что подчистить — надо подчистить.

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

    Ну, что хотел сказать, то сказал. Удачи.
    Ответ написан
    3 комментария
  • Как защитить мобильное приложении от сниффера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Передавать данные только в шифрованном виде.
    Ответ написан
    2 комментария
  • Как заставить себя идти спать во время?

    hack504
    @hack504
    Попробуй будильник ставить в другой комнате или в труднодоступном месте. Будильник призван не напомнить, что пора просыпаться, а отвлечь от сна, поэтому и тут - нужно не успеть закончить мысль, а отвлечься от неё вообще.
    spoiler
    29093127_2333019766724241_38022142622947
    Ответ написан
    2 комментария
  • Зачем программисту работать на кого-то?

    Beshere
    @Beshere
    Разработчик
    Из 10 гениальных стартапов 10 прогорит в первый год. А из 10 программистов зарплату получат 10.
    Ответ написан
    Комментировать
  • Для чего используется каррирование (карринг) в реальных задачах?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Предположим есть функция, которая берет много параметров, а первый параметр - имя класса формы (в джанго)
    def cool_staff(form_class, inits, defaults, user, other_param):
        # много строчек кода

    и вы вдруг обнаруживаете что в вашем коде куча вызовов, у которых первый параметр одинаков.
    ...
    res = cool_staff(form_class=MainForm, inits={a:1, b:3}, defaults=[1,2,3], ...)
    ...
    res = cool_staff(form_class=MainForm, inits={a:100500, b:42}, defaults=[3,2,1], ...)
    ...

    Тогда делаете так:
    main_cool_staff = lambda **kwargs: cool_staff(form_class=MainForm, **kwargs)

    и ваши вызовы упрощаются
    ...
    res = main_cool_staff(inits={a:1, b:3}, defaults=[1,2,3], ...)
    ...
    res = main_cool_staff(inits={a:100500, b:42}, defaults=[3,2,1], ...)
    ...

    было в реальном проекте.
    UPD. Такая форма карринга не сработает для неименованных параметров
    main_cool_staff = lambda *args, **kwargs: cool_staff(form_class=MainForm, *args, **kwargs)

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

    UPD2. Еще подсказали вариант
    import functools
    main_cool_staff = functools.partial(cool_staff, MainForm)

    работает и с неименованными параметрами. Спасибо Андрей Дугин
    Ответ написан
    6 комментариев
  • Какой язык выбрать инженеру за 40?

    sergeygsd
    @sergeygsd
    врач-терапевт участковый
    Я молодой пенсионер ( 67 лет ) уч. врач все 40 лет. Без цели заработка изучаю информатику давно.
    php не люблю. Питон, Java, С++ Естественно знаком с СУБД, ассемблером, shell Пользуюсь любой ОС (Windows или Linux) Я просто любитель. Труд программиста тяжелый. Лучше учиться с преподавателями, но можно и самому.
    Моя знакомая, ЛОР-врач 35 лет хочет просто сменить профессию на Java-программиста. Человек очень упорный, надеюсь, что получится. Учите Java (по Лафоре, у него и по C++)
    Можно в NetBeans но я в терминале (если Windows это MinGW) - как раз поддерживает python + Java + C++ У Вас уйдет не меньше года, ни у кого быстрее не получилось. ВЭБ очень вряд ли. Хотя я изучал Друпал 7 и 8. Но Друпал 8 с его twig(ом) озадачил. И бросил. Смотрите по вэбу в сторону django. Мой путь с весны 2018 здесь : https://unics-70.livejournal.com/4324.html
    Ответ написан
    Комментировать
  • Какой язык выбрать инженеру за 40?

    opium
    @opium
    Просто люблю качественно работать
    Тот же что и инженеру за 18
    Ответ написан
    Комментировать
  • Где учить тестирование с нуля?

    @lyaksay
    Верстка/frontend
    Могу посоветовать эту книжку https://svyatoslav.biz/software_testing_book/ ,
    также базовые вещи можно найти на youtube, есть всякие курсы на гикбрейнсах с дипломами, но кто еще в наше время верит в гикбрейнс
    обнял
    Ответ написан
    2 комментария
  • Как начальник может контролировать фрилансера по часам удалённо?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Решение называется "адекватный начальник". Оставайтесь на окладе, продолжайте работать по 8 часов день с перерывом. Важно не количество отсиженного за работой времени, а качество сделанного.

    Если вы будете работать по 16 часов, а на выходе будет фигня из-под коня - какой от этого прок? А оплату будете требовать в двойном размере. Не годится такое, не правильно это.
    Ответ написан
    5 комментариев
  • Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

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

    Из этого вывод, стратегия проста - увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.
    Ответ написан
    4 комментария
  • Клиент на Upwork угрожает международным судом, возможно ли это?

    kumaxim
    @kumaxim
    Web-программист
    Допустим, я и Вы - оба граждане Российской Федерации. Мы с Вами подписали договор, по которому я Вам плачу условные 5 т.р. за 10 часов Вашей работы в месяц. Все у нас было хорошо 6 месяцев, однако, потом с моей стороны возникли проблемы, скажем клиент/партнер меня кинул, на счете у меня осталось 25 рублей, откуда брать денег не понятно. В данном случае, не получая денег от меня Вы останавливайте работу и имеете право подать на меня в суд с требованием взыскать условныу 5 т.р., которые я Вам задолжал. С Вашей стороны, да и со стороны закона все чисто, гладко и ровно.

    Теперь давайте переместимся на мою сторону. Денег у меня на счете сейчас нет и не предвидится. Взять бысто деньг мне не от куда. С Вами по существу мне спорить не о чем. Я прекрасно понимаю, что если Вы получите решение суда и предъявите его приставу, то мой счет будет очень быстро заблокирован и как-то рассчитаться с Вами я не смогу. В таком случае, моей стратегий будет затягивание времени. Скажем, Вы подаете на меня в суд, я в суде заявил возражение, мол истец не выполнил в полной мере процедуру досудебного урегулирования конфликтов, предусмотренную договором. Разумеется, в нашем договоре есть пункт типа "Все споры и претензии решаются путем переговоров...", однако, не прописан их формат, условия согласования и т.п. На этот момент я давлю и прошу отложить рассмотрение дела по существу на 8 недель. Затем, через 2 месяца я предоставлю в суд справку о том, что мол ложусь в стационар на неделю, поэтому присутствовать не могу и т.п.

    Всеми этими действиями я добиваюсь одного - максимально отсрочить блокировку моего счета, как план минимум. Мне это нужно для того, чтобы найти способ залатать дыру, которая у меня появилась из-за недобросовестных действий моего клиента/партнера. Для того чтобы Вы не подали на меня в суд вовсе, я могу начать докапываться до всяких мелочей, в духе а вот тут две запятые не в том месте... либо я могу начать пугать Вас, мол по Вашей вине у меня вот сайт упал, я понес убытки, для тебя это такая-то статья ГК РФ... либо я могу развести Вас на какое-то правонарушение, и имея на руках на Вас компромат сказать: "Да, я Вам должен условные 5 т.р.,однако, если Вы подадите на меня в суд, тогда я достану вот эти вот факты и заставлю Вас заплатить условные 10 т.р." Эти дела никак не связаны, однако, в Вашей голове промелькнет: "Да ну его нафиг, не буду с этим му###м связываться", чего мне собственно и нужно.

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

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

    Категорически нельзя соглашаться на предложение Вашего клиента получить оплату за пределами Upwork. Категорически нельзя как-то оскорблять оппонента или его ближайшее окружение. Вы не должны дать ему ни единого повода, чтобы разыграть другую карту. Ни в коем случае не опускайтесь до уровня оппонента, если он начинает вести себя как быдло. На угрозу про суд отвечай: "Хорошо, поговорим в суде вместе с моим юристом".

    Мой главный совет - не будь мудаком, как в данной ситуации, так и вообще по жизни.
    Ответ написан
    4 комментария
  • Клиент на Upwork угрожает международным судом, возможно ли это?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Тут надо понимать, что любой суд -- это затраты.
    Если клиент сидит на Upwork, то это значит что он экономит, иначе бы он воспользовался бы аутсорс конторами на его родине.
    Ну а нет денег, нет и суда.
    Так что шлите его прямым текстом.
    Ответ написан
    4 комментария
  • Каков сценарий использования git для одного разработчика?

    gobananas
    @gobananas
    finishhim.ru
    Делаете ветку master, ветку dev и отдельные ветки под отдельные фичи.
    Делаете 2 сайта - один сам проект (основной) - на него выкатываете master, второй сайт тестовый - на него выкатываете ветку dev. Остальные ветки разрабатываете, сливаете с dev выкатываете на тест, если там всё нормально то dev сливаете с мастером. За ноут просто когда садитесь если мастер новый есть делаете git pull и стягиваете новую версию
    Ответ написан
    11 комментариев
  • Как заставить работодателя своевременно отчитываться о причинах отказа в приеме на работу?

    vicodin
    @vicodin
    Имею некоторый опыт
    поднимите свой скилл и вам не нужно будет искать работу, за вами будут бегать эйчары сами
    Ответ написан
    5 комментариев
  • Почему при сборки на webpack модуль не работает?

    @Sayto
    Просто Webpack не умеет подгружать es6 модули. Подключите babel-loader.
    module.exports = {
        entry: "./server.js",
        output: {
            path: __dirname,
            filename: "dist.js"
        },
        module : {
            loaders: [ { 
                    test   : /.js$/,
                    loader : 'babel-loader'
                }
            ]
        }
    };
    Ответ написан
    2 комментария
  • Чему учиться для работы из дома?

    @cluberr
    Сам ничему не научишься , нужен тренер , который имеет огромный опыт и набил вагон шишек и который готов тебя учить !!!
    Человек всегда склонен идти по наименьшему пути сопротивления.
    Почему к олимпиаде спортсмена готовит тренер ? Потому что он знает что делать, знает как делать и в каком темпе чтобы получить результат.
    Лучше всего попасть в сильную команду , найти лучшую фирму в своем городе прийти туда и сказать я буду у вас работать за бесплатно , пока не смогу делать задачи за которые платят деньги. И впитывать в себя знания.
    Даже просто слушать о чем говорят другие.
    Я 3 недели назад попал джуном в компанию после 2 лет фриланса , дали задачу , которую вообще понятия не имел как делать и за эти 3 недели узнал больше чем за 2 года , как я думал "учебы" дома.
    Можно 10 лет читать о том , как водить трактор , но пока на нем не поедешь - это все бессмысленно.
    Ответ написан
    5 комментариев
  • C чего начать изучение JavaScript опытному верстальщику?

    @reaget
    Вы смотрели уроки здесь: https://learn.javascript.ru/ ?
    И вот тоже ресурс по JS: eloquentjavascript.net

    К слову: как вы практиковали верстку, что изучали?
    Ответ написан
    2 комментария
  • Какая идеальная страна для айтишника?

    xtala
    @xtala
    Постигает Дзен
    Очевидно, что та в которой вы находитесь в данный момент.
    И не стоит забывать что:

    Человек нигде не находящий себе места ожидает всё от места и ничего от себя.

    - Сьерен Кьеркегор
    Ответ написан
    1 комментарий
  • Нужно ли выполнять какую либо практику читая книгу "Совершенный Код" или можно читать как художественную литературу?

    oh_shi
    @oh_shi
    Книга читается почти как художественная. Нет в ней упражнений которые нужно выполнять по мере прочтения. Но я бы рекомендовал её людям с опытом хотя бы в пару лет, потому что восприятие материала будет сильно отличаться.
    Ответ написан
    Комментировать
  • Как выйти из рабочего коматоза?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Что со сном?
    Ночной образ работы очень сильно плохо сказывается.... очень
    Ответ написан
    5 комментариев