Задать вопрос
  • Как избежать коллизии по данным?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При высокой нагрузке близкой к 100% пользователь может совершить транзакцию на создание объекта в базе. Сама транзакция может подвиснуть. Пользователь не дожидаясь ответа обновляет страницу и снова создает объект. Получается уже две транзакции в очереди. По итогу когда очередь доходит до выполнения имеем в базе два одинаковых объекта (созданных вплоть до ms) что ломает логику программы.


    Очень плохо что вы довели систему до нагрузки 100%. Обычно concurrency работает хорошо когда мы не доводим до такого состояния. Есть даже такой термин thread starvation (голодание потоков) когда потоки никак не могут получить квант времени.

    Без кода и лог-файлов тут нечего обсуждать. Я просто могу дать несколько направлений на подумать.

    1) CQRS (Command-Query-Separation) - это шаблон разработки при котором команды на изменение данных и запросы на их чтение идут независимо и существуют как-бы в разных временных эпохах. Это дает возможность масштабировать системы довольно сильно. И такие системы обычно лишены блокирок.

    2) Idempotency- это два свойства бизнес операций. Идемпотентность например предполагает что если платежная система дважды продублировала ваш платеж (MQ/сетевые replays) за покупку чашки Кофе например то это не означает что с вас банк снимет дважды деньги. На самом деле каждая ваша карточная операция имеет уникальный ID и с точки зрения биллинга будет применение платежа только 1 раз с одним уникальным ID. Второй платеж-дубль будет проигнорирован. Это свойство часто используется в Apache Kafka как один из способов поднять скорость и надежность.

    3) Когда ваша база или сервер приложений находтся в состоянии как-бы "агонии" то не стоит пытатся добивать ее повторами операций. А стоит на некоторое время прикрыть канал операций. Или разорвать цепь предохранителя. Как делают в электрике при повышенной нагрузке. Есть такой шаблон Cirquit Breaker. Аварийный размыкатель. Netflix его активно использует.

    Вот подумайте.
    Ответ написан
    2 комментария
  • Как измерить площадь фигуры?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть алгоритм Монте-Карло. Ты просто кидаешь рандомные точки на экран и считаешь попадает ли точка в фигуру или нет. Соотношение попаданий к общему число бросков даст тебе соотношение площади фигуры и площади области бросков (экрана).

    Данный метод универсален. Быстр и позволяет аппроксимипровать площать (выдавать приближенное значение) еще до того как будут посчитаны все точки).

    Решение о попадании можно принимать по цвету пиксела.

    Если на экране находится несколько фигур одного цвета - то соотв будет посчитана их общая площать.
    Ответ написан
  • Анонимный выход в сеть?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Чтоб жить анонимно в современном цифровизированном государстве надо просто отказаться от всех услуг государства. Выкинуть телефоны и банковские карточки. Порвать паспорт и уйти жить бомжом или к цыганам.
    Вот как-то так. Бомжа и человека без документов невозможно судить или к чему-то привлечь. И обычно полиции или военкому такие люди просто не интересны.

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

    А самый простой популярный протокол TCP/IP в принципе вообще исключает анонимность на уровне своей идеи. Сокетное соединение всегда знает source/dest IP и замылить или каким-то образом скрыть эту информацию просто невозможно. Прокси и наты и соксы и ВПН-ы не в счет так как они тоже ничего вам не обещают и не гарантируют.

    По поводу VPN на базе хостингов AWS/Azure. Почти все облачные провайдеры содержат на своем сайте документ
    который вы должны были читать. И он говорить о том что сервисы облачного провадера не могут быть использованы для незаконной деятельности (терроризм, наркотики, работорговля e.t.c.). Список видов деятельности может быть еще шире и поэтому надо читать. Поищите этот документ. Он должен быть. В разных формулировках но суть одинакова.
    Ответ написан
    2 комментария
  • Как сделать постоянный поиск по html элементу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Появилась потребность в постоянном поиске по содержимому html элементов и тегов.

    Коробочное решение этого вопроса - это разработка парсера. Это кстати еще и решает другую задачу - перебор 150 страниц которая у вас все равно не автоматизируется.

    Ищите программиста и платите ему деньги.
    Ответ написан
    2 комментария
  • Чем не угодили 2G и 3G?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего это связано с политикой распределения частот в каждой стране. Некоторые диапазоны частот мобил могут создать помехи для армии и спецслужб. И за пределы вряд-ли выйдет потому что у кого-то нет технической возможности входить или выходить. Смена стандарта может потребовать пере-оснащения всех мачт ретрансляторов.

    Известно также что эволюция мобильных устройств в части экологии идет вперед. И новые устройства обычно более слабые. И требуют более частого покрытия радио-мачтами города. Ну вобщем - зеленая повестка. Насчет 3/4/5G я не уверен но старые устройства класса спутниковый телефон (кирпич с антеной) были не безопасны для здоровья.

    Мне вот еще интересно почему не развивают широковещательное цифровое бесплатное телевидение.
    Ответ написан
  • Как сделать мини консольную игру?

    mayton2019
    @mayton2019
    Bigdata Engineer
    с каждым выбором номера идёт другой совсем ход событий то есть с каждым ответом меняется вопрос и тому подобное

    Во времена DOS/RPG игрушек был создан такой себе DSL на котором можно было описывать диалоги
    персонажей к квестах. Вот интересно было-бы поднять хотя-б название этого языка или имя его авторов. Информацию я эту слышал в каком-то youtube канале где такие двое болтунов любят болтать про старое легаси.
    Ответ написан
    Комментировать
  • Как хранить данные о просмотре?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Недостаточно информации. Обычно БД и модель таблиц затачиваются под типичный запрос.
    Например. У нас есть публикации и и пользователи (те кто просматривают). Концептуально - это
    матрица где по горзионтали - пользователи а по вертикали публикации. Если рассматривать во времени
    то появляется третье измерение (куб) - ось времени. Где можно делать срез за последний день
    или неделю или год. Каждую ось можно агрерировать (брать все данные) как бы для аналитики.

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

    Работа - более экспериментальная. Делаешь симулятор запросов. И смотришь как оно работает.
    Насколько быстро.
    Ответ написан
  • Фреймворки, действительно ли важно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я вот предложу пойти от происхождения слова. Что такое фреймворк если мы не знаем определения слова?
    Фрейм - это рамка. Work - работа. Тоесть работа в рамках. Рамочная работа.

    Безотносительно пользы или вреда от фреймворков уже можно предположить что это некое ужесточение
    порядка процесса разработки. Разработчик ЯП - свободен. Разработчик фреймворка - менее свободен.
    Фреймворк предполагает некоторую дисциплину в разработке user-stories. К примеру вы работаете
    с акторным фреймворком (Akka) и вы не можеет просто так запускать вычислительные Threads
    потому что это идеологически неверно. Вы должны декомпозировать задачу на набор функций-акторов
    которые делают простое действие и передают результат другим акторам. Если вы вдруг резко вильнули
    в сторону и затащили во фреймворк какую-то непонятную логику которая не ложиться на идеологию -
    то синьоры-лиды сурово сдвинут брови и попросят вас немедленно откатить из feature branch все
    что не соответсвтует. Такую ситуацию можно рассмотреть под разными углами. С одной стороны
    хорошо что вы не виляете туда-сюда. Код получается гомогенный и понятный. Акторы. Сервлеты.
    Bean-компоненты, SpringBeans, ApacheCamel компоненты e.t.c. С другой стороны если автор имеет
    амбиции к использованию только своего кода - тут надо обсудить приемлемость такого подхода
    в команде. Это - полюбому конфликт. А конфликты в корпоративной среде устраняются очень быстро.
    С автором будет проведен разговор. И далее у него будут варианты - работать
    в парадигме фреймворка или .. искать другие проекты. Здесь параллельно со фреймворком идут
    техники управления людьми на проекте.

    Еще одно лирическое отступление.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поднята интересная проблема я считаю. Даже после успешного программного выключения надо проверить что какой-то зомби не был поднят своим хозяином в маске Гая Фокса волшебной командой Wake On Lan.

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

    P.S. Централизованное выключение с рубильника - вобщем-то правильное решение только надо проверить что нигде не пищат UPS-ники и нет ноутбуков на разрядке.
    Ответ написан
    1 комментарий
  • Как найти изображения в бинарном ELF-файле?

    mayton2019
    @mayton2019
    Bigdata Engineer
    BMP начинается с сигнатуры 'BM' и далее идет 4 байта размер файла.
    Любой программист-первокурсник сможет извлечь ресурсы владея этой информацией
    при условии что ресурсы не шифрованны.
    Ответ написан
  • Какую книгу по Java выбрать новичку с небольшим опытом на другом языке?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Алгоритмы брать не надо. Седжвик вообще писал не про Java а только про алгоритмы.
    У него - целое семейство книг такого вида. Сначала Алгоритмы на С. Потом на C++ И потом Java. Он по сути портировал исходники. Какой толк вам в таком портировании?

    А Хорстман, Эккель - вполне себе норм.
    Ответ написан
    Комментировать
  • Как за 3-4 месяца прокачаться мидлу работающему в продуктовой компании?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для повышения внутри аутсорсинговой (не продуктовой) комании на самом деле тебе ни ООП ни PHP не надо.
    Надо просто спросить у твоего line-manager или ресурсного-менеджера какой план
    твоего роста. И какие вопросы будут звучать на assesment. В обычном ассесменте нет ничего
    сложного. Собирается комиссия из 3х и более человек. И с тобой просто беседуют. Узнают
    твой опыт. Прошлые проекты. Задают вопросы по уровню квалификации. В составе комисси
    обычно есть твой тех-лид. Обычно к ассесменту тебя хорошо знают. И у тебя есть характеристика.

    По поводу твоей продуктовой компании. Здесь сложно что либо сказать но ты не должен распыляться
    на всякое там ООП и прочее. Это никому не надо. Нужно готовиться только к релевантным вещам
    которые есть в компании. Например - компания использует Laravel? Пройди сертификацию.
    Это будет более полезный бонус чем безсмысленная философия про эти инкапсуляции и прочее.

    Вообще ООП - это страшный моветон и им принято мучать джунов при поступлении.
    Ответ написан
    2 комментария
  • Как в языке СИ проверить существует ли файл без создания нового?

    mayton2019
    @mayton2019
    Bigdata Engineer
    FILE *handle = fopen("filename", "r")
    возвращает файловый указатель. Если открываешь на чтение - то он обычно null если файла
    не было или была какая-то другая ошибка. Детали по ошибке выдает другой системный вызов errno, streeror или
    что там еще есть другое не помню точно.
    Ответ написан
    Комментировать
  • Как использовать chatgpt в роли суппорта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тема интересная и реально полезная. Но получается что тут недостаточно обучить модель на экспертных ответах. Нужно точняк еще как-то предоставить доступ к актуальной базе заявок.
    Ответ написан
    1 комментарий
  • Как реализовать DOM создание элемента на котлине в андроид приложении?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот огромное количество инструментов на Java специально для работы с XML https://www.baeldung.com/java-xml

    Я-ж надеюсь ваш Котлин способен затащить в себя java-библиотеки?
    Ответ написан
  • Почему postgres не считает null уникальным значением?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если смотреть на проблему с точки зрения теории множеств - то использовать null - это так себе идея.
    Ведь в данном контексте пустое поле входит в состав ключевых. Атрибуты - да. Могут быть пустыми и не
    заполненными пользователем. Но ключи с пустотами вызывают еще больше вопросов если у вас
    будет задача ссылочной целосности например.
    Ответ написан
    2 комментария
  • Почему в Samsung data migration происходит остановка на 38-39%?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я читернул немного и спросил всезнающий чят. Но не про утилиты самсунг а про slow down скорости для SSD. Вот ответ:

    One possible reason why an SSD might slow down during copying is that it becomes busy with other operations, such as garbage collection or wear leveling. These processes are designed to help maintain the performance and lifespan of the SSD by redistributing data across the drive and freeing up space. However, they can also take up valuable resources that would otherwise be used for data transfer.

    Another factor that can affect the speed of an SSD during copying is the way that the data is being written to the drive. SSDs use a technology called NAND flash memory, which allows data to be written in blocks. If the data being copied is not aligned with these blocks, it can cause the SSD to slow down or even pause during the transfer.
    Ответ написан
    Комментировать
  • Чем редактировать файл.bytes и .db?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Разработчик был скорее всего не заинтересован чтоб любой игрок изменял сохранения игры.
    Поэтому вопрос можно либо адресовать разработчику это игры либо просто забить на него.
    Ответ написан
    Комментировать
  • Как использовать структуры данных на практике?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программисты, будучи студентами на 1-2 курсе изучают алгоритмы и структуры данных (АСД) чтобы
    писать более эффективные программы. При этом задача использования DBMS им еще не ставиться.
    На этом этапе они учатся оптимизировать и понимать разницу между o(1), o(n^2), o(lon(n)) и т.п.
    алгоритмической сложностью. Сложность определяет, как будет работать выбранный алгоритм
    при очень резком (шквальном) росте исходных данных. И если ты это не учил, то ты сто процентов
    напишешь фигню и твой алгоритм никогда не завершиться, какой-бы мощностьи процессор у тебя
    ни стоял. И вот чтобы дать анализ такой ситуации, как раз и нужны знания АСД. А работа на пределе
    мощностей сегодня везде. Игры. Рендеринг 3д. Майнинг. Обучение языковых моделей.

    Работая с MySQL ты этого не видишь т.к. часть алгоритмов скрыта от тебя под фасадом SQL API.
    Но тебе и недоступны вышеперечисленные задачи. Их стек - шире чем тот что ты используешь.
    И если ты собираешся всю жизнь работать на PHP/MySQL то скорее всего АСД тебе действительно не
    нужны.
    Ответ написан
    9 комментариев
  • 45-50 градусов ЦП при просмотре ютуба на ноутбуке, это норма?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я какое-то время качал учебные видосы с youtube. И кое что добавлю. Видео публикуется в широком диапазоне размеров и кодеков.

    Самый слабый размер - от

    3gp 176x144
    и самый толстый что я видел

    webm 3840x2160

    Последнее - это классифицируется как 4К видео. Так вот. Я думаю что нагрузка на ЦП определяется
    размером видео. Который в свою очередь определяется толщиной вашего канала интернета
    и физическим размером монитора. Плагин плеера должен иметь какую-то разумную логику
    активации высоких режимов. Очевидно что на обычном FullHD монике нет смысла качать
    графику выше чем пикселов покажет ваш моник.

    Что еще может влиять на температуру? Наверное тип кодека. Из таковых я вижу VP9 и AVC1.

    Кодек выбирается по непонятному мне алгоритму. Тоесть существуют видосы с одинаковым разрешением
    но с разными кодеками. Зачем youtube это делает - непонятно. Но возможно для совместимости.

    Вот как-то так.
    Ответ написан
    6 комментариев