• Как правильно реализовать систему блокировки пользователя?

    @ComodoHacker
    Можно обойтись одной таблицей с неудачными попытками. Структура:

    • ID пользователя
    • IP адрес
    • Дата/время

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

    Обновлять дополнительно ничего не нужно. Периодически можно чистить таблицу.
    Ответ написан
    Комментировать
  • Есть ли способ следить за тем, что код пишет именно тот, за кого он себя выдаёт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Без проблем, оплачивайте ровно 40 часов в неделю и ни минутой больше, кроме отдельных случаев, согласующихся индивидуально и заранее.
    Ответ написан
    6 комментариев
  • Очень хорошо знаю PHP - куда двигаться дальше?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Хайлоад

    Сразу поймёшь, что ничего не знаешь вообще
    Ответ написан
    2 комментария
  • Целесообразно ли уходить после 9 класса и учиться на ITшника?

    Psixodelik
    @Psixodelik
    Преподаватель на Hexlet
    Есть ли смысл вообще учиться, если можно выучить всё самостоятельно, по онлайн курсам?


    Тут надо понимать, что образование в сфере IT даёт не только навык программирование, но и знания в смежных областях: компьютерные сети, операционные системы, математика, логика, алгоритмы и так далее. Всё это является хорошим фундаментом программиста. Курсы дадут более практический материал.
    Ответ написан
    4 комментария
  • Что нужно знать о языке C#, чтобы на собеседовании говорить, что знаешь на 10 из 10?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    На собеседованиях обычно спрашивают уровень владения языком в баллах.

    Вероятно это спрашивают неопытные итервьюеры. Ответ на этот вопрос с вашей стороны полностью субъективен, а со стороны интервьюера бесполезен.

    Что нужно подтянуть, чтобы претендовтаь на 10 баллов из 10?

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    На изучение почти чего угодно в сфере ИТ обычно нужны эти 3 вещи:
    1. время
    2. терпение
    3. английский

    Если чего-то не хватает, то шансы на успех (и его качество) резко снижаются. Всё целиком можно назвать одним словом мотивация. Другими словами, стать программистом может практически каждый. Другое дело, что не каждый хочет им стать. Или, например, хочет стать, но не хочет тратить время - это равносильно тому, что не хочет совсем. Подробнее о том, как устроена твоя мотивация и твои планы на годы вперёд, знаешь только ты.

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

    Удовольствие в программировании, как в его изучении, так и в решении практических задач, построено на дофаминовом подкреплении. Оно, к сожалению, рассчитано только на короткие цели. Поэтому (и не только поэтому) большие задачи необходимо разбивать на более мелкие. Это называется декомпозиция. Но это также и навык, которым нужно овладеть, прежде чем иметь возможность применять. Змейку не захотелось делать потому, что она слишком сложная и долгая. Однако если в своей голове сумеешь разбить змейку на более простые задачи: управление, показ еды, показ самой змейки, - то будет намного интереснее.
    Ответ написан
    8 комментариев
  • Как оптимизировать алгоритм нахождения палиндрома?

    bingo347
    @bingo347
    Crazy on performance...
    Достаточно проходить до половины строки, сравнивая начальные символы с конечными и завершая проверку при первой неудаче:
    public void checkPalindrome(string input)
    {
        string result = isPolindrome(input) ? "Yes, it's a Palindrome" : "No, it's not a Palindrome";
        Console.WriteLine(result);
    }
    
    private bool isPolindrome(string input)
    {
        int halfLength = input.Length / 2;
        for (int i = 0; i < halfLength; i++)
        {
            if (input[i] != input[input.Length - i - 1])
                return false;
        }
        return true;
    }
    так получим наилучшую возможную сложность O(n / 2) и Ω(1)
    Ответ написан
    Комментировать
  • Стоит ли готовиться к олимпиадам?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Вы наверное слышали про телеграмм и понты Павла про олимпиадниеов, и как их разнесли нормальные программисты. Основная проблема олимпиадниеов на мой взгляд решение задачки за 42 секунды. Пусть она будет кривой но уложись в тайм лимит, и дело в общем то не в этом. Эти ооимпиадники прилетают и снят своё гуано вокруг,
    Ответ написан
    4 комментария
  • Можно ли после "информатиционной безопасности" стать разработчиком?

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Хороший вопрос!
    Я интересовался и получил ряд ответов от самих Заказчиков. Так, сказать, их мировозрение в этом плане.

    Со стороны Заказчиков:
    1. Раз ты работаешь на фрилансе - ты лох, потому, что не смог никуда устроиться.
    2. Если ты фрилансер - ты раб, который зарабатывает, чтобы не умереть с голоду. Поэтому, много тебе и платить не за чем.
    3. Нет гарантий для нас, что ты сделаешь всё на совесть. Мы не понимаем как сделать самим и, при этом, хотим хорошо сэкономить.
    4. (Про время) Мы оцениваем не сложность проекта и твоё умение и опыт, а время, которое никак не может быть дороже медианы фриланса по этому направлению.
    5. Нам нужно быстрее, т.к. это получается дешевле для нас, т.к. мы оцениваем время, а не сложность нашего проекта.
    6. Все фрилансеры низкоквалифицированные рабы.
    7. Каждый, кто мнит себя опытным и будет просить больше, будет сидеть без работы, т.к. высокая конкуренция и есть большой выбор исполнителей на рынке за копейки.
    8. Фриланс - это рабы IT сферы для нашего бизнеса.
    9. Мы всегда ищем тех, кого сможем обмануть в плане оплаты за работу и их почти 100%.
    10. Нам ничего не стоит сбросить сумму оплаты в любой момент сославшись на угрозу отрицательного отзыва.
    11. Мы не дорожим репутацией, в отличие от фрилансеров.
    12. Вы сами ничего не делаете: всё берёте с гитхаба уже готовое. За что вам платить?!

    (и ещё можно продолжать и продолжать...)

    И сразу возникает вопрос:
    Ждать ли роста дохода фрилансеров IT-сферы и когда?
    Ответ прост: когда все IT-шники поймут, что нужно ценить труд друг друга, что они не конкуренты друг другу, а единый целый "организм", который может сам за себя постоять и накормить вне зависимости от места работы и размера дохода.
    Итог: Не нужно работать и "ломать" глаза на тех, кто этого не понимает, а значит, и НЕ ЦЕНИТ!

    А пока разделяйте качество своих трудозатрат на "хлеб" и на "работу" и сразу озвучивайте 2 суммы заказчикам.
    Ответ написан
    10 комментариев
  • Список литературы для самостоятельного изучения программированию?

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

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Может для начала стоит почитать что-нибудь или пройти видеокурсы?
    Понимаете, какая пропасть между "мультиплеерный шутер" и "хочу чтоб появлялась панелька"?
    Ответ написан
    Комментировать
  • Что конкретно мне нужно знать в с#, чтобы создать игру на unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Как говориться "нужны уверенные знания языка". В моем понимании - это когда при реализации задачи язык вам не мешает, а помогает. Т.е. вы не задумываетесь над тем КАК выразить алгоритм на языке c#. А думаете именно над самим алгоритмом.

    Судя по тому, что вы написали - вам в юнити еще очень рано. Начинайте с чистого шарпа. С чего начинать чистый шарп - таких вопросов на тостере полно.
    Ответ написан
    3 комментария
  • Как переделать код (см. внутри)?

    FoggyFinder
    @FoggyFinder
    Давайте попробуем вместе разобраться как решать подобные вопросы.

    В таких случаях первое что нужно сделать это правильно докопаться до корня проблемы.

    Ваша задача убрать использование пространства имен System.Drawing.

    Что для этого нужно сделать?
    1. Убрать вверху заголовочный using
    using System.Drawing;
    2. Удалить ссылку на сборку

    Теперь пробуем скомпилировать проект, получаем ошибки:

    error CS0246: Не удалось найти тип или имя пространства имен "Point" (возможно, отсутствует директива using или ссылка на сборку)


    Значит вопрос можно переформулировать примерно следующим образом:

    Чем можно заменить класс Point из System.Drawing?


    Согласитесь, что чем более конкретен вопрос тем легче на него ответить.

    Итак, всего одна ошибка значит большого труда исправление не составит. Не хватает одного класса Point. Можно пойти посмотреть исходники и скопировать класс оттуда, но мы пойдем другим путем.

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

    class Point
    {
    
    }


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

    if (field[i, j] == "0") current = new Point(i, j);

    1>error CS1061: "Point" не содержит определения "X", и не удалось найти доступный метод расширения "X", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).


    if ((i == current.X) && (j == current.Y))


    1>error CS1061: "Point" не содержит определения "Y", и не удалось найти доступный метод расширения "Y", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
    1>error CS1061: "Point" не содержит определения "Y", и не удалось найти доступный метод расширения "Y", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).


    Кажется, все понятно. Мы пытаемся использовать несуществующий конструктор и несуществующие свойства.

    Добавляем все необходимое. Компилятор ругается на два свойства и ожидает увидеть конструктор с двумя параметрами? Ага, зависимость видна - каждому параметру соответствует свое свойство с названиями X и Y соответственно.

    Как определить их тип? Смотрим что мы пытаемся туда передать? i , j - целые числа - int. Значит его и ставим.

    class Point
    {
        public int X { get; set; }
        public int Y { get; set; }
    
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }
    }


    Пробуем скомпилировать? Ошибок нет, можно переходить к этапу проверки работоспособности.
    Ответ написан
    2 комментария
  • Какое направление выбрать после университета?

    @hatman
    1) А какого х**, получив бакалавриат IT вуза в Москве, у тебя "никаких относительно сложных проектов в разработке не было". Толковые ребята во время учебы ходят на различные стажировки в крупные айти-компании, набивают руку на боевых проектах и прочее. Как итог, по выпуску из универа получают оффер на руки (а то и несколько).

    А у тебя ситуация уровня какого-то вайтишника, который вчера таксовах, а сегодня рассуждает php или python ибо начинался маркетингового булшита в нете.

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

    p.s. такой вопрос можно ожидать увидеть от школьника или какого-то непрофильного чувака, но явно не выпускника айти-вуза. Уровень обучения и личная мотивация у кандидата просто днище.
    Ответ написан
    1 комментарий
  • Как тимлиду вернуться в программисты?

    Zoominger
    @Zoominger
    System Integrator
    Сам имею больше 5 лет опыта программирования до тимлидства.

    Ну и какой вы тимлид?
    Просто идите на программиста, возьмут каким-нибудь мидлом ну или "синьйёром", если повезёт.
    Ответ написан
    1 комментарий
  • На кого меня собеседуют?

    WellMOR
    @WellMOR
    Чтобы отыскать баг, ты должен мыслить, как баг
    Это задание для определения позиции.

    В зависимости от того, как вы его реализуете, будет оцениваться ваш уровень. От джуна (сделал кое-как, работает по ТЗ, но тяжело масштабируется) до сеньора (комментарии не нужны в принципе - код рассказывает сам себя, паттерны использованы уместно, SOLID, GRASP и много других умных слов).

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

    p.s. тут просто MVC же по сути, ну.
    Ответ написан
    3 комментария
  • Начальный путь в it. Как быть?

    Zoominger
    @Zoominger
    System Integrator
    Очень заинтересовался Data science и различный анализ данных.

    У вас есть высшее образование по прикладной математике или другой аналогичной сфере? Что-что? Нет? Мы вам перезвоним.
    Ответ написан
    Комментировать
  • На какие особенности языка JavaScript следует обратить внимание при его изучении после C#?

    Stalker_RED
    @Stalker_RED
    Особенности с замыканиями и this, прототипы вместо классов, и приведение типов местами способно удивить, ага.
    Ответ написан
    Комментировать