• Как защитить от перезаписи данных? Например форму для редактирования открывают два пользователя, и одновременно меняют его?

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

    @MechanicZelenyy
    То что вы привели это не фабричный метод. А шаблон проектирования фабрика.

    Фабричный метод - это статический (в питоне classmethod) который возвращает экземпляр класса.

    Пример:

    class Door:
        def __init__(self, weight):
            self.weight = weight
    
        def __str__(self):
            return str(self.weight)
    
    # фабричный метод
        def door_from_window(cls, window):
            # какой-то код
    
    door = Door.door_from_windwow(window)
    Ответ написан
  • Конфликтует ли фабричный метод с OCP?

    @EvgeniiR
    https://github.com/EvgeniiR
    Фабричный метод возвращает объекты одного типа, это даже показано в приведенной вами статье.
    То есть, по хорошему, всё что должен знать клиентский код при вызове фабричного метода - объект с каким интерфейсом/экзмепляр какого абстрактного класса должен вернуться.

    Кстати, совет, новички этим частенько грешат - не пытайтесь впихнуть паттерны в код, просто за то что они есть, и не пытайтесь изучить их чтобы улучшить качество своего кода. Это скорее названия наиболее часто повторяющихся мест в разных программах.
    Если интересны паттерны, и вы хотите извлечь из этого пользу - старайтесь найти побольше примеров использования изучаемых на текущий момент, и разобраться почему были выбраны именно они. Вот там будет простор на подумать
    Ответ написан
  • Что такое events в IoC?

    dkrylov
    @dkrylov
    суть в том, что Вы можете не писать код сплошняком в одном и том же классе, если система модульная и код нужно использовать из разных модулей.

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

    И вот чтобы не использовать классы из модуля №1 в модуле №2 и наоборот, можно выбрасывать событие - например entityCreated - это событие(идентификатор, и возможно параметры) выбрасывает модуль 1, а модуль 2 должен быть подписан на это событие (это уж у кого как реализовано). Я делал так - в БД таблица handlers, там связки ИД события => обработчик.

    Как запускать обработчики событий - тоже по разному можно сделать)
    Ответ написан
  • Как заработать на разработке игр?

    @s0xzwasd
    1. Нет.
    2. Без хорошей и дорогой рекламы в текущих реалиях — нереально, только если ваша идея не прорывная и вам просто повезло.
    3. Заработаете ещё меньше.

    Учитесь, сдавайте экзамены и пытайтесь поступить на бюджет.

    100.000₽ за 8 месяцев можно и в макдональдсе заработать. Подумайте.
    Ответ написан
  • Как заработать на разработке игр?

    dollar
    @dollar
    Если речь конкретно про мобильные игры, то нужен маркетинг, закупка трафика. То есть нужны деньги. И даже если они будут, нужна уверенность в том, что они окупятся. То есть на небольшом регионе проверить, что средний заработок с одного игрока больше, чем стоимость привлечения одного игрока. Если это не так, то игра дорабатывается или закрывается.

    Шанс заработать в Google Play без маркетинга у тебя 0%.
    Шанс заработать с деньгами и хорошим другом-маркетологом, но с указанным в вопросе опытом у тебя 1%.

    Попробуй лучше фриланс. За 8 месяцев можно осилить 100к.
    Ответ написан
  • Rust, как вернуть struct?

    @forspamonly2
    struct вернуть не проблема - он отдаётся вместе с владением наружу, и всё.

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

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

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

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

    dollar
    @dollar
    Mobile dev попроще будет. Потому что Game dev требует много разнородных знаний, он про то, как вызвать определенные ощущения у игрока. При этом игроки имеют разные вкусы и предпочтения. А простое приложение должно отвечать лишь критериям удобства и полезности, то есть легко сформулировать цель приложения как для себя, так и для пользователей, и не отступать от нее. (И я имею в виду цель не заработать денег, а более предметную).

    Unity больше подойдет для всего, что имеет богатую 3d-графику и анимации. В целом, порог вхождения чисто по программированию туда и туда примерно одинаковый.

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

    Перспективнее? По какому основанию? Я бы смотрел по уровню удовлетворенности. А это значит, что перспективнее там, где вам самим больше нравится и в чем вы больше разбираетесь, к чему лежит душа.

    VR и AR - мы все следим за это сферой, но пока что там ловить особо нечего. Резкого взлёта, как у айфонов в свое время, не наблюдается. Может быть, вы будете первым, кто придумает что-то реально крутое, и весь рынок VR/AR пойдёт за вами.
    Ответ написан
  • Как работает цикл while?

    Zarom
    @Zarom
    Мастер на все руки из жопы
    У вас в while указано !isExit, т.е. not isExit.
    Так что когда isExit истина, то !isExit ложно и прерывает while
    Ответ написан
  • Как работает цикл while?

    devpav
    @devpav
    Full-Stack разработчик.
    Привет. Прикольно. Люблю когда пишут сразу boolean isExit = false; и следующим действием while(!isExit).
    Должен работать без проблем, но можно изменить чуть чуть.

    while (!isExit) //пока isExit правда, то

    пока isExit ложь Вы хотели сказать, а !isExit правда.
    Ответ написан
  • Идти на стажировку за бесплатно или учиться дома?

    Zoominger
    @Zoominger Куратор тега Карьера
    Сись админ
    Идти на стажировку за бесплатно

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

    неплохо в html, css (сверстано порядка 20 одностраничных макетов PSD)

    Фигня.

    сейчас учу основы JS (есть пара работ: todo, calculator, математическая игра с генерацией рандомных примеров)

    Ничто.

    Как бы вы поступили на моем месте?

    Побежал бы на стажировку бегом.

    P. S. А ещё я забыл пункт "целовать ноги тому, кто позвал на стажировку".
    Ответ написан
  • Тендеры на сайты. Сложности?

    @Za0r
    pop()
    Всё что имеет приставку "гос" не стоит того,чтобы связываться,особенно в рамках IT
    Ответ написан
  • Тендеры на сайты. Сложности?

    @Camaro67
    Помог? - "Отметить решением"
    Эти тендеры скорее формальность. Там уже заранее все решено: кто его выиграет и кто сколько получит от той суммы, которая там указана. ИМХО.
    Ответ написан
  • На какой зарубежной фриланс площадке можно быстро найти заказы?

    php666
    @php666
    PHP-макака
    Ахах, вот ОНА - айти реальность. Full Stack разработчик C# с опытом работы около четырех лет не имеет 18 штук деревянных. Даже машины нет, что бы потаксовать. И кредит не дают. Лол))

    не раз на хабре мелькали статьи на тему того что некоторые фрилансы по 3000-4000$ в месяц зарабатывали, собственно в районе 800-1000$ в неделю.
    он еще и глупенький, верит в сказки.

    PS1 написал без насмешкой над автором, просто вот это - реальность))
    PS2 выстави что-нибудь на avito по цене ниже рынка раза в 2. Хорошо уходит строительный инструмент, например. Или иное барахло. Ценности в ломбард отнеси.
    Ответ написан
  • Сортировка. Откуда в списке берутся два нуля?

    @Wexter
    for (int i=0; i<50; ++i) {

    for(int i=0; i<v.size(); ++i) {


    а чего третий раз не переобъявили?
    Ответ написан
  • Как сделать так, чтобы по нажатию на итем в ListView открывался диалог с нужной мне информацией?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Короче начни с того, что выкинь ListView. Забудь о нём, как будто его не существует. Он учит плохому, все эти ArrayAdapter'ы - зло, за ними не видно, как надо делать правильно.
    Возьми RecyclerView. Он покажется тебе сложнее, но он заставит тебя делать правильнее.
    Уйди от списка строк. Список строк это ничто, нет у строки "эспрессо" никакого состава. У тебя должна быть моделька, POJO, в котором хранятся твои данные для одного элемента списка. В твоём случае это одна строчка? Прекрасно, это будет класс с одним полем. Дальше ты в этот же класс добавишь ещё одно поле - айди(id) этого элемента. По айди ты должен уметь однозначно получать и имя, и список ингридиентов.
    Дальше, когда ты напишешь кастомный адаптер к RecyclerView, тебе нужно будет проставить onClickListener на вьюхи. нажатия этого листенера ты должен прокинуть в свой интерфейс
    interface CoffeeSelectionListener {
        void onCoffeeSelected(int coffeeId);
    }

    Этот интерфейс-листенер должен приходить в твой адаптер снаружи, таким образом ты абстрагируешься от конкретного действия. И это хорошо.
    Снаружи проставь листенер, и по айдишнику находи список ингридиентов. Дальше показывай его.
    Упаси бог тебя показывать в AlertDialog'e. Возьми DialogFragment, потрать время, но сделай нормально. Никто уже не пользуется диалогами.

    Когда ты это сделаешь у тебя получится чуть-чуть лучшего качества код. Дальше надо будет абстрагироваться ещё.
    Ответ написан