Задать вопрос
  • Как сократить строку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По количеству информации на квадратный метр - эта строка вполне себе плотная и насыщенная действиями.

    Чтоб делать какой-то интересный рефакторинг - надо делать не одно-строчники а функции.

    Тоесть
    def composePath(....) -> string:
      return ....

    Вот. Функции можно покрывать тестами и таким образом гарантировать стабильность от изменений.
    Ответ написан
    Комментировать
  • Как с Android устройства отправить HTTP запрос на компьютер по USB (без сети)?

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

    Вобщем предлагаю следующее
    1) Эмулировать Ethernet сеть через USB.
    2) Поднять на десктопе http-сервер.
    3) Поднять на адродите http-клиент
    4) Отправить http-запрос.

    Есть возражения?
    Ответ написан
    Комментировать
  • Как сделать обработку столкновений между шарами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да ты прикалываешся. Почему у тебя в параметрах цикла типы разные. Чтоб жилось труднее?

    float count = 1, dimensions = 2;
    count = atof(argv[3]);
    ...
    for (int i = 0; i < count; i++) {
    Ответ написан
    Комментировать
  • Как расширить ext4 раздел из Windows 10?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно взять любой загрузочный диск-флешку с Linux и например использовать этот сценарий

    https://unix.stackexchange.com/questions/67095/how...

    Но беря во внимание что есть Windows - ябы сначала создал следующую карту ресурсов. Какие есть
    диски (явно автор что-то утаивает от нас ведь где-то у него существует Windows/NTFS раздел) и надо
    дейстовать аккуратно иначе damage может быть непоправимым. Какие загрузчики. Тома. Программные
    рейды и зеркала. Нумерация партишенов. И прочее.
    Ответ написан
    Комментировать
  • Зачем для кеширования использовать Redis, если можно сделать файловое кеширование?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Разработка софта - это наука не теоретическая а практическая. Кеш или мемоизация вычислений - это просто один из множества паттернов оптимизации. Вполне возможно что найдется задача где Redis не нужен. Или при интенсивной записи может оказаться что затраты на актуализацию кешей перекрывают
    их полезный эффект при чтении. Кеши могут быть отравлены (poisoned) кривыми данными с бесконечным TTL
    и это может быть проблема. Кеши могут требовать реализации чуть более сложных веб-сценариев с
    If-None-Match или If-Modified-Since. Тоесть их использование не бесплатно для разработки. Ну это не
    чек-боксик включить. Это - архитектурный вопрос и над ним надо думать.

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

    Вообще для Redis и Nginx не существует оценочной формулы полезного эффекта. Вы просто берете
    за образец некую работающую систему. Смотрите как на best practices и применяете к своей задаче.

    И потом через A/B тестирование смотрите какие были полезные изменения. Что стало лучше работать.
    Что стало хуже (плата за биллинг использования новых серверов или нодов или больше памяти).
    Ответ написан
    Комментировать
  • Как с помощью TimescaleDB реализовать выгрузку последних данных с разбивкой по устройствам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А попробуй убери из индекса дату.

    CREATE INDEX ix_imei_time ON locations (imei);

    Я не работал с TimescaleDB но вообще работать со вторичными индексами в time-series - это плохая тема.
    Лучше выбрать лидирующий партишен как дата. И вторичный партишен как хеш от какого-то интересующего
    атрибута или группы атрибутов. И тогда оптимизатор пойдет просто в тот фасет который соотвествует нужному
    пересечению партишенов.
    Ответ написан
  • Можно ли TCP ускорить при помощи TCP via UDP tunnel?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) Оба протокола работают поверх IP. Тоесть если уровень IP работает медленно - то и нет никакого смысла что-то виртуализировать поверх медленного.

    2) Время пинга является одной но далеко не последней характеристикой сетевого канала. Для игр оно может быть важно а для цифрового телевидения - вобщем-то не очень. Можно создать искусственно ситуацию когда пропускная способность равна гигабиту а пинг плохой и наоборот когда сеть медленная по скорости но отклик - быстрый. Первый вариант будет хорош для телевидения 4К а второй для АСУТП с коротким временем реакции.
    Ответ написан
    Комментировать
  • Стоит ли мне знать как работает cmd для Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Командная строка нужна когда у тебя есть задачи интеграции твоего кода с чем-то другим.
    Также полезно знать ее для задач админства и девопс-освства.

    Обычно знания работы с шеллом - (не только cmd но и bash) это большой плюс к другим
    скилам и к более широкому пониманию того как работает операционная система. Файлы.
    Named Pipes. Коды ошибок и состояний. Логгирование. Анализ крашей.
    Ответ написан
    1 комментарий
  • Какие виды и специализации Java программистов бывают?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Самая правильная специализация выставляется работодателем. Вот туда и надо смотреть.
    Откройте местную газету вакансий для Java. И через 2-3 часа чтения у вас будет самая
    правильная классификация или номенклатура или бох еще какая категоризация
    джавистов.

    А что вы здесь еще хотели узнать? Про формы черепов? Или про партийную принадлежность джавистов?
    Ответ написан
  • Как создать sql песочницу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Первое. Песочницы можно создавать с помощью Docker.

    Второе. Настройками нужно ограничить настолько чтоб пользователь мог только лишь решить задачу leetcode
    и получить корректный ответ. Должны быть квоты на память, процессор и диск. Должны быть квоты
    на время исполнения query
    . Любая попытка превысить квоту - должна моментально прерывать сессию
    пользователя и перегружать контейнер.

    Проблема всех песочниц в том что они предлагают в чистом виде SQL-инжекцию. И это принципиально нерешаемо. Вобщем не забываем про fork-bomb и прочие трюки которые могут даже в условно безопасной
    песочнице создавать проблемы.
    Ответ написан
    Комментировать
  • Как решить проблему 'utf-8' codec can't decode byte 0xf6 in position 3539: invalid start byte?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Возможно ты не так интерпретируешь смысл ошибки
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 3539: invalid start byte

    Что это за позиция 3539? Внутри строки? Файла? Или блока utf-декодера?

    Поищи просто 0xf6 внутри файла и посмотри какие байты были до него и после.
    Префикс в четыре единичных бита предполагает следующий паттерн
    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    и надо это проверить.
    Ответ написан
    2 комментария
  • Какую книгу взять новичку в разработке микросервисов на Spring Framework?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я не понимаю зачем такое ограничение в названии топика?
    Микросервисы и Spring - это как езда на лошади только галопом.
    Или рыбалка только для пресноводных рыб.
    Ответ написан
    Комментировать
  • Какой бекэнд выбрать для компилятора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    игрушечный скриптовый язык программирования.

    Какой бекэнд выбрать для компилятора?

    В самом вопросе обычно лежит половина ответа.
    Если вы дадите определение back-end - то правильно облегчите себе решение задачи.
    Вот выше вы писал про скриптовый язык. Тогда почему вдруг стали дальше писать про
    back-end и native-компилляторы?

    Есть целый пласт языков или виртуальных машин которые живут и работают не доходя
    всегда до LLVM. И нужен ли вам LLVM - большой вопрос. Что вы хотите от LLVM? HiLoad?
    Это не задача скриптинга.

    Вобщем поставте какое-то внятное целеполагание. Вы создаете скриптовый язык чтобы ЧТО?
    Ответ написан
    Комментировать
  • Как избежать коллизии по данным?

    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
    Недостаточно информации. Обычно БД и модель таблиц затачиваются под типичный запрос.
    Например. У нас есть публикации и и пользователи (те кто просматривают). Концептуально - это
    матрица где по горзионтали - пользователи а по вертикали публикации. Если рассматривать во времени
    то появляется третье измерение (куб) - ось времени. Где можно делать срез за последний день
    или неделю или год. Каждую ось можно агрерировать (брать все данные) как бы для аналитики.

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

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