Задать вопрос
  • Поздний старт в ИТ - есть ли шансы?

    valerium
    @valerium
    Изобретая велосипед
    У меня похожая ситуация, правда я просрал не 5, а в сумме все 6 лет. Сейчас мне 25, я работаю дежурным админом. Успел поработать в техподдержке, потом младшим админом, сейчас дежурным.

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

    Тут правильно bobrovskyserg написал, надо показать себя, сообразить "портфолио". У Вас есть свой проект? Отлично, на гитхаб его! Дружите с русским языком? Катайте статью в песочницу Хабра о своём проекте, ждите инвайт. Есть IT-шная эрудиция? Тостер всегда рад Вам.

    Ах да, если хотите расти профессионально, не советую идти работать офисным админом. Лучше в техподдержку небольшого интернет-провайдера или хостера. Они всегда рады растить кадры самим себе и всегда с радостью делятся опытом.

    Успехов!
    Ответ написан
    Комментировать
  • Как сделать такой слайдер на Vue.js?

    KraisLi
    @KraisLi
    Web Developer
    Сделать самому новичку будет не просто, а опытный зачастую и не будет делать(по тому что знает какой это гемморой),а найдет библиотеку и допилит под себя.
    Из слайдеров изображений на JS лучший на мой взгляд swiperjs: https://swiperjs.com/demos/
    Кастомизировать можно как угодно + поддержка мобильников "из коробки"
    Ответ написан
    Комментировать
  • Можете оценить фреймворк?

    Konata69lol
    @Konata69lol
    backend developer (php/go)
    С этим фреймворком вы наверняка провалите проект, т.к. будете вместо написания бизнес логики дописывать
    сам фреймворк, прикручивать к нему недостающие компоненты, фиксить баги и т. д.
    Ответ написан
    Комментировать
  • Как передать в лямбду контекст класса?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Drottarutarnum, p = { s }; - это Copy Initialization.
    В буквальном смысле, что тут происходит. Сперва ты создаешь temporary local через конструктор Protocol::Protocol(Serial &s). Следом, через operator =, который сводится к конструктору копирования/перемещения, ты делаешь Copy Construction объекта p. Делается это через конструктор копирования/перемещения по умолчанию, который просто копирует/перемещает поля используя их конструкторы копирования/перемещения.

    Лямбда создается внутри temporary local значения, т.к. именно для него вызывается соответствующий конструктор. Далее эта лямбда остается жить в объекте Serial, а сам temporary local уничтожается сразу же после конструирования p.

    После этого в замыкании лямбды остается dangling pointer на уже уничтоженный this.

    Одним из возможных решений данной проблемы может быть не p = { s };, а p{ s }; или, как ты уже описал, p = s;. Такой тип инициализации уже называется Value Initialization. Но по своей сути это только отсрочка проблемы. Тебе придется очень пристально следить за жизнью такого объекта, т.к. вероятность обрести все тот же висячий указатель в замыкании в следствии неявного копирования крайне высока.

    Другим из возможных решений такой проблемы может быть использование std::enable_shared_from_this[?], std::shared_ptr[?] для хранения протокола и std::weak_ptr[?] в замыкании твоей лямбды. Этот метод гарантированно решит твою проблему, но может привести к ряду других проблем с возможной утечкой ресурсов.

    В качестве еще одного способа - научить Serial отцеплять лямбду уничтожаемого Protocol и написать правильный конструктор копирования Protocol, соблюдая правило 3/5/0.

    В общем смысле, тебе стоит внимательнее смотреть за тем, какие операции ты выполняешь над объектами, сырой указатель на которые ты хочешь где-то сохранить.
    Ответ написан
    2 комментария
  • Отзывы о getJavaJob.ru?

    @vasil94
    Могу рассказать про эти курсы как недавно через них прошедший. Хотя я и прошел эти курсы и получил после них работу, но мой отзыв будет негативным, т.к. без сейчас оглядываясь назад я понимаю, что мой путь и трудоустройство могли быть гораздо короче.
    Эти курсы - только для опытных программистов, не надо идти на них, если опыта немного или вообще нет. Не надо ориентироваться на истории про "я закончил 3 уровня Javarush, а потом поступил на эти курсы и закончил их" - если копнуть чуть глубже, то либо эти люди уже знали какой-то ЯП и хотели просто перейти на Java, либо они не работали и могли посвящать обучению 24/7, либо это были математические гении с красным дипломом МатМеха.
    Большая часть остальных людей, почитав такие истории, как правило, отваливаются с этих курсов с заниженной самооценкой и стойкому отвращению к Java на ближайшие N лет.

    Как на них поступить и что вас ждет.
    Поступить просто - оставляете заявку, с вами связывается куратор курса Виталий, задает пару вопросов на самые основы и высылает ссылку на документ с описанием курса и номером своей карты для переводов.
    Стоимость курса
    10 000 рублей в месяц, но не менее 120 000 рублей. Суть в том, что если вы заканчиваете раньше, чем 12 месяцев, то с первой зарплаты надо будет оплатить разницу (спойлер: раньше не закончите, поэтому рассматривайте стоимость просто как 10к/месяц).
    Сроки прохождения
    Плановые сроки завершения (цитаты здесь и далее взяты из документа, который вам пришлют после оплаты):
    Первая часть занимает 3,5 месяца, вторая часть занимает 4,5 месяца при расчетной нагрузке от 2ч в день в рабочие дни и от 4ч в день в выходные дни.

    Т.е. 8 месяцев при обозначенной нагрузке. На практике, чтобы просто завершить курс надо тратить в разы больше времени. При мне меньше, чем за год с лишним, курс не прошел никто. Среднее время - 1,5, а то и 2 года. И стоимость курса в этом случае составляет уже 240 000 рублей.
    Про сам курс
    Обучение там построено следующим образом: есть 3 уровня, Basics, Algo, Web.
    Что из себя представляет уровень Basics - тебе дают ссылку на справочник Шилдта на английском языке и список из нескольких десятков задач из задачника по информатике Златопольского (по которому многие решали задачки на Basic в школе).
    Уровень Algo - примерно то же самое, но там еще есть вебинары 2016 года и дз.
    Твое решение проверят только после того, как ты все полностью сделал и не раньше (у меня перые 2 уровня
    заняли почти 8 месяцев). До этого все общение с тренером - это своевременный перевод на карту.
    Все. Вопросы тренеру не приветствуются - все подается под соусом, что есть общий чат в Телеге в однокурсниками и там надо задавать вопрос типа так все и учатся. Лично у меня с этим чатом не сложилось - большая часть моих вопросов, когда я был в тупике просто игнорировалась (не только у меня). От тренера помощи на этом этапе тоже можно не ждать.
    Я считаю, что на этом этапе и есть самый большой косяк этих курсов - нет ни материалов для подготовки, ни помощи от опытного ментора, ничего. Сейчас, уже имея опыт программирования и пройдя через много разных обучений (не только Java, на пути к трудоустройству вам надо будет изучить еще большой список сопутствующих вещей, начиная с алгоритмов и заканчивая администрированием Linux) я понимаю, что самый верный способ убить желание учиться - это безо всяких объяснение дать сухой технический справочник как единственный источник информации и длинное непонятное задание без четких сроков, планов и т.п. Все это приводит к тотальной прокрастинации, мыслям, что все это не для тебя и пр. Большая часть людей уходит с этих курсов именно на первых двух частях - на них вообще нет понимания, что ты делаешь, зачем и как это поможет в поиске работы.
    В итоге несколько месяцев тотальной прокрастинации и самобичевания и первые 2 части кое-как сданы.
    Реальная польза курса- только на 3 части, где уже изучаются вещи, необходимые для реальной работы.
    Но я пишу этот отзыв для тех, у кого мало опыта в программировании и вы до нее, скорее всего, не дойдете.
    В общем доступе есть таблицы с прогрессом других участников и там видно, как много людей зависают на первой части и вообще отваливаются.
    А ведь это была чья-то мечта - устроиться на работу Java-разработчиком. А после этого курса у человека напрочь отбито всякое желание продолжать. Я был очень близок к тому же, но каким-то чудом нашел в себе силы продолжить. Но я потратил на все это кучу времени, из которых процентов 40 - это прокрастинация, паузы и т.п. Сейчас я понимаю, если бы мне вначале внятно бы давали понять, что и зачем я буду делать, я бы сэкономил несколько месяцев и устроился бы гораздо раньше.
    Ответ написан
    1 комментарий
  • Почему onClick срабатывает два раза?

    suprunchuk
    @suprunchuk
    В React 18 при использовании режима Strict Mode компонент монтируется дважды в development среде - это ожидаемое поведение для выявления потенциальных проблем.

    Вот несколько решений:
    Самое простое - убрать StrictMode в index.js:

    ReactDOM.createRoot(document.getElementById('root')).render(
      <App />
    );


    Лучшее решение - оставить StrictMode и оптимизировать компонент с помощью useCallback:

    const Button = ({info, id}) => {
      const btn = useCallback((id) => {
        setTodo(prevTodo => prevTodo.map(item => {
          if(item[0] === id) {
            return [...item.slice(0,6), !item[6], ...item.slice(7)];
          }
          return item;
        }));
      }, []);
    
      return (
        <button 
          className={`icon ${info ? 'icon-play' : 'icon-pause'}`}
          onClick={() => btn(id)}
        />
      );
    }
    Ответ написан
    Комментировать