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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    265WATT - это мало для современных ПК. Воспользуйся онлайн-калькуляторами
    для расчета мощности. Там легко. Укажешь свою конфигурацию и все компоненты
    и приложение покажет сколько тебе надо.

    И возьми с запасом хотя-б 15% для других устройств.
    Ответ написан
    1 комментарий
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Чем отличается ForkJoinPool.execute() от ForkJoinPool.submit()?

    submit возвращает Future, по которой можно отследить статус задачи, а execute - нет.

    Это вроде бы должно быть очевидно из их описания
    Ответ написан
    Комментировать
  • Куда положить dump.sql для автоподнятия БД с нужного дампа Docker?

    @Senture Автор вопроса
    Разобрался.

    Вот мой код:
    version: "2.15.1"
    
    services:
      postgres:
        image: postgres:13.3
        environment:
          POSTGRES_DB: "username"
          POSTGRES_USER: "username"
          POSTGRES_PASSWORD: "username"
          PGDATA: "/var/lib/postgresql/data/pgdata"
        volumes:
          - ./Initer:/docker-entrypoint-initdb.d
          - usr-data:/var/lib/postgresql/data
        ports:
          - "5437:5432"
    
    volumes:
      usr-data:


    В этом случае, нужно создать директорию Initer в корне (где лежит docker-compose.yml) и в нее положить необходимый dump.sql и все работает.

    Важно!: Если папку не создать, она появится автоматически после docker-compose up. Но будет естественно пустой, и даже если сделать down, в папку положить дамп, и поднять приложение (docker-compose up) бэкап уже не накатится, т.к. БД уже была проинициализирована ранее и никакие изменения к ней применяться не будут.

    Прошу прощения за такие глупые вопросы :D
    Ответ написан
    6 комментариев
  • Как исправить нарушение принципа DRY?

    @IRuuy Автор вопроса
    Прикрепил решение
    public Token match(ITokenType expectedToken, int tokenNum) {
        return match(t -> expectedToken == t.get_type(), tokenNum);
    }
    
    public Token match(Class<?> clazz, int tokenNum) {
        return match(t -> clazz.isInstance(t.get_type()), tokenNum);
    }
    
    private Token match(Predicate<Token> predicate, int tokenNum) {
        if(hasToken(_currentTokenNum))
            if (predicate.test(getToken(tokenNum)))
                return getToken(tokenNum);
    
        return null;
    }
    Ответ написан
    Комментировать
  • Почему при сборке compose не видит переменные окружения?

    @khevse
    Опция --env-file должна помочь:
    Ответ написан
    Комментировать
  • Нужен ли маршрутизатор, если у границы стоит сетевой экран?

    @gonzaman1
    Коллеги, чтото вы человека грузанули.
    Расклад для людей задающих такие вопросы.
    1. Пожалуй главное что нужно оценить - кол-во трафика, если у вас полтора землекопа, 2 коммутатора и 3 офиса в туннелях. При этом из внешнего прихода только впн для удаленных сотрудников - железный фаер избыточен.
    Если у вас многоуровневая коммутация с парой сотней вланов и сетевой структурой 10-20 разных офисах\производствах\странах с кучей данных для внешнего доступа железный фаер !!!удешевит!!!(я не ошибся) и обезопасит вашу инфраструктуру. Фаер нужен для разгрузки процессоров коммутаторов в сети.

    Отступление: бум железных фаеров был связан с ограниченными процессорными мощностями и колоссальным ростом трафика в прошлом. Было не выгодно создавать 2-6 процессорную железку и на аппаратном уровне ее обучать понимать обработку трафика. Это сейчас лохушная железка за 150$ может через себя пропустить 10гигабит\с и зароутить его в 20 вланов при этом иметь поднятый фаервол, работать с 10 впн клиентами и резать 25 клиентам на лане скорость соединения по разным конфигам и при этом иметь загруженность процессора 40-50%. А раньше для такого понадобился бы штат в 2 сервера, 4 л3 коммутатора и железный фаер. Я утрирую конечно, но не далек от истины.

    2. Сейчас железный фаер скорее стандартизированное решение для крупных компаний, я недавно настраивал офис крупной международной логистической компании. Так там все просто было: мы закупили и смонтировали схему железный фаер-л3-пое-server . Потом ребята из главного офиса закинули за 15 минут туда готовые конфиги и за пару часов залили на сервер данные. Через 3 условных часа была смонтирована голова офиса на 140 рабочих мест.

    Вывод: Даже для больших компаний с небольшим потоком входящего трафика железка не нужна. Ставишь глухую заглушку на вход, остальной трафик гоняешь по тунелям, клиентов и хосты вырезаешь вланами и строгими правилами маршрутизации. Это кажется очень накладно с точки зрения времени, но это не так. Если подготовить стандартизированные конфиги для определенной марки оборудования, то сможете масштабировать почти до любых размеров свою сеть не прибегая к железным фаерам )))

    Все сказанное не является истиной в последней инстанции ))
    Ответ написан
    3 комментария
  • Почему сайты открываются не с первого раза?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я так понимаю что с какого-то года понятия Интернет больше нету. Есть государства. И каждое из них
    на своей территории ведет свою политику и свое видение Интернета. Вот в таких реалиях
    надо жить и задавать вопрос уже в контексте. И смена DNS может и не быть решением проблемы.
    Ну зарезолвишь ты имя. А по IP адресу еще остануться блокировки а то и по блокам адресов и по целым
    странам.
    Ответ написан
    5 комментариев
  • Как вытащить данные со страницы Binance?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зачем лазить в binance с черного хода когда там есть официальный API https://www.binance.com/en/binance-api
    И куча коннекторов под все языки написаны.
    Ответ написан
    1 комментарий
  • Используем kafka + spring boot, периодически listener перестает получать сообщения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    На производительность кафки влияет 4 сущности. Конфиг брокера, продюсера, консюмера и message configuration.
    Очень сложно разбираться в том что у тебя происходит на основании такого странного теста. Скажи
    сколько времени ты ждал этого загадочного listener. Как ты ждал. В какой лог смотрел. Почему
    ты вообще решил что это проблема. Может продюсер ничего не производит. Короче дай картину
    происходящего более подробную.
    Ответ написан
    2 комментария
  • При завершении работы экран ноутбука выключается, а система работает и начинает нагружаться. В чём причина?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри в системных логах операционки. За момент до shutdown он что-то пытается завершить и не может скорее всего.
    Ответ написан
    4 комментария
  • Может ли быть такое, чтобы фреймворк был быстрее ванили?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ответ - и да и нет.

    Обычно классический ЯП - предполагает прямое (директивное) управление процессом.
    И качество оптимизации будет сильно зависеть от того как программист проработал весь прямой ход алгоритма.
    В том числе работу с I/O и сетью.

    Фреймворк - это ограничитель, который очень строго лимитирует присуствие программиста в результирующем
    коде. В идеале программист делате только хендлеры. Или лямбды. Как в Inversion of Control.
    Это позволяет хорошему фреймворку сильно соптимизировать поток выполнения базируясь
    на том что I/O и сеть будут обеспечиваться фреймворком а программист будет вставлять только лямбды.
    Кроме сети и ввода-вывода фреймворк может обеспечивать пул объектов (соединения с БД)
    и типичные шаблоны обработки ошибок (retry-pattern) перформанс (cirquit-breaker) и
    рейт-лимитеры и троттлинг.

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

    Но мы исходим из предположения что 80% программистов - середнячки и звезд с неба не хватают.
    Поэтому для них фреймворк - является предпочтительной методикой. И код с фреймворком
    скорее всего будет быстрее чем при прямом кодировании на той-же выборке кодеров-середнячков.
    Ответ написан
    Комментировать
  • Зачем использовать FileWriter?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ну если открыть описание API то там достаточно четко описано.

    Object
     +- Writer (Abstract class for writing to character streams.)
         +- OutputStreamWriter (An OutputStreamWriter is a bridge 
              |                 from character streams to byte streams)
              +- FileWriter (Writes text to character files using a default buffer size.)


    Последний - буферизированный.
    Ответ написан
    6 комментариев
  • Где сохраняться все данные в айфоне, линукс, виндовс?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для Windows/Linux.

    Почти для всех браузеров когда что-то скачал и потом нажимаешь Ctrl+J то открывается фолдер
    (обычно %UserProfile%/Downloads) и там лежит то что надо. Для Linux почти тоже самое /home/user/Downloads

    Есть еще программный кеш для картинок, css/js/html e.t.c. Он в каждом браузере лежит по своему
    маршруту но обычно где-то в %UserProfile%/.hiddenFolder и имена файлов там не информативные. Хешируются
    по какой-то формуле чтоб хакеры и вирусы сами себя не нашли и не смогли передать управление.
    Этот кеш пользователем напрямую не управляется но просто надо знать что он существует.
    Если ты - активный сёрфер то можешь достаточно много накачать туда так чтобы создать проблемы
    для свободного места. Обычно где-то в настройках есть батон для чистки этих файлов.

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

    По поводу айфона - не знаю.
    Ответ написан
    2 комментария
  • Вопрос по составлению резюме, может, с ним что-то не так?

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

    Для скиллов необходимо указать уровень (junior/middle e.t.c).
    И не стоит писать много скилов. Иначе складывается впечатление что
    кандидат - многостаночник и эникейщик.

    Про освоение инструментов писать не надо. Мы все этим занимаемся каждый день.
    Это и есть собственно наша главная работа - быстро освоить что-то новое.

    Английский надо поднимать хотя-бы до буквы B.

    Далее. Не для резюме. Для вопросов-ответов. Вот если ты написал что есть базовые знания back-end.
    То ты должен быть готов рассказать архитектуру вашего backend. И перечислить стек технологий.
    И нарисовать диаграммы. Тоесть любое дополнение или случайное слово в резюме будет
    поводом для "поговорить". Поэтому если ты точно-точно имел базовые знания - то расскажешь.
    Если нет - то лучше убери это слово.
    Ответ написан
    8 комментариев
  • Быть программистом, но не учиться?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю такое возможно. Это похоже на обучения языку ребенка. Ребенок слушает. Потом обобщает.

    Вообще способность мозга к обобщению просто поразительна. Я думаю что программирование
    таким образом освоить можно. К примеру ты сначала смотришь как пишут код другие. Потом
    пишешь сам.

    Вопросы.

    Будет ли такой режим обучения эффеткивным? Тут я не знаю. Для ребенка - безальтернативно.
    А для взрослого изучающего программирование ... ну такое.

    Сможет ли такой наивно-обученный специалист (НОС) потом пояснить ПОЧЕМУ? Почему он пишет Set[Int] вместо
    Array[Int]. Это - очень важный вопрос. Ему ведь в процессе обучения предьявляли только семплы
    кода но не объяснили причит почему массив в одном случае заменили на сет а в другом случае
    почему-то проигнорировали это правило.

    Будет ли такой наивно обученный специалист знать стек вплоть до основ железа и системотехники?
    Предполагаю что нет. Ну вобщем все завист от уровня технического любопытства. Для кейса который
    привел автор - все очень печально ИМХО. НОС не будет заинтересовать копать стек клубже
    чем технологии браузера и HTML. Ему ведь безразлично что стоит в основе.

    Я вобщем -то в программирование пошел потому что с детства был любопытен к технике. И
    именно такое топливо дает бесконечный энтузиазм в освоении смежных техник.

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

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

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

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

    webm 3840x2160

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

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

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

    Вот как-то так.
    Ответ написан
    6 комментариев
  • Как использовать структуры данных на практике?

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

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

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