• 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. Не надо терять информацию об ошибке (генерить или ре-генерить исключение более широкого класса). Правда, при разработке либы лучше наоборот, свои мелочи держать в себе и заменять низкоуровневые ошибки на более общие.

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

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

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

    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)

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

    @VasiliyMakogon
    PHP-разработчик
    помогите пожалуйста сделать правильный выбор
    действительно правильнгый выбор - не лезть вообще в программирование в этом возрасте.

    Я 40-летний инженер-проектировщик, работа есть, денежная вроде бы, но очень стрессовая
    Стрессовая работа у него. Мужик, мне 35, могу с тобой на "ты". Ты не поверишь, но реальная работа программиста (а не когда ты для "дочке школьнице несколько программ написал") -- это звиздец какая стрессовая,изматывающая работа, выжимающая тебя полностью. Ты даже представить этого не можешь, что значит работать с проектом, который, например, лет 10 писала команда. Твоя работа инженера раем покажется.

    Мозги уже конечно не те
    Конечно мозги не те. Любой студент тебя "сделает" по срокам и быстроте освоения новых вещей. А теперь подумай - кому ты 40-летний джун нужен будешь, если на твое место полно пламяоких юнцов с переизбытком энергии? Кого работадатель выберет? Не тебя явно, уж поверь. Или ты пойдешь в лучшем случае работать за доширак.

    но и звезд с неба я не собираюсь хватать
    А что ты будешь "хватать"? Придешь в компанию, там дети по 23-25 лет сидят, ты как, как ты будешь себя чувствовать среди них? А когда тебя будут на собеседованиях мальчики 30 лет кошмарить, ты как себя в свои 40 лет будешь чувствовать? Надо оно тебе это все?

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

    Программист сегодня - это пролетарий офиса. Это, человек, работающий на износ, который закрывая один таск сразу получает другой. Не зря на Украине айтишные конторы называют "галерами", а разработчиков - "гребцами".
    Ты пытаешься из одной формы несвободы переключиться с потерей в деньгах на другую форму несвободы. Лучше подумай о том месте работы, где ты реально будешь счастлив. Но в 40 лет идти в веб-макаки или что-то типа того - это просто позорище. И именно так тебя будут воспринимать в любом молодом айтишном коллективе. Менять шило на мыло - нет никакого смысла.
    Ответ написан
  • Какой язык выбрать инженеру за 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
    @lyaksay
    Верстка/frontend
    Могу посоветовать эту книжку https://svyatoslav.biz/software_testing_book/ ,
    также базовые вещи можно найти на youtube, есть всякие курсы на гикбрейнсах с дипломами, но кто еще в наше время верит в гикбрейнс
    обнял
    Ответ написан
  • Как начальник может контролировать фрилансера по часам удалённо?

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

    Если вы будете работать по 16 часов, а на выходе будет фигня из-под коня - какой от этого прок? А оплату будете требовать в двойном размере. Не годится такое, не правильно это.
    Ответ написан
  • Оплата труда sale менджера и full stack developer?

    saboteur_kiev
    @saboteur_kiev
    build engineer
    Ты стоишь не столько, сколько твоя профессия теоретически стоит на рынке, а стоишь столько, за сколько смог себя продать.

    Если ты считаешь, что sales получает больше за красивые глаза - устройся как sales, в чем проблема?
    Не умеешь?
    Ну пойди продай себя на фрилансе. Не получилось?
    Ну так сиди в офисе и радуйся, что получаешь 3$, а не 3р.

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

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

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

    P.S. А на фрилансе ничего реального посмотреть нельзя. Вы видете только оценку, которую народ себе поставил. Но на какие суммы реально были подписаны сделки, сколько часов реально ушло на проект, и сколько проектов в месяц или год смог себе обеспечить фрилансер - вы не видите.
    Ответ написан
  • Какие стратегии повышения зарплаты существуют?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    - Сьерен Кьеркегор
    Ответ написан