• Используем 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
    Разработчик был скорее всего не заинтересован чтоб любой игрок изменял сохранения игры.
    Поэтому вопрос можно либо адресовать разработчику это игры либо просто забить на него.
    Ответ написан
    Комментировать
  • Как использовать chatgpt в роли суппорта?

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

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

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

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

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

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

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

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

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

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

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

    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 комментария
  • Какую книгу взять новичку в разработке микросервисов на Spring Framework?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    В науке и технике такие форматы как double / long double / extended применяются уже давно и их
    возможности полностью закрывают все мыслимые вопросы.

    Например мы можем посчитать соотношение самой большой длины (диаметр вселенной) на
    самую мелкую длину (переменная Планка) и это будет вполне себе число которое ляжет в эти
    форматы.

    Преподаватель вас заставил считать факториал 250? Это наверное троллинг. Зачем.
    Для приближенного подсчета факториала есть например формула Стирлинга. Ее достаточно
    чтоб получить порядок числа и первые значимые разряды.

    А bigint и арифметикой можно и никогда не закончить вычисления. Это - как в криптографии.
    Длину ключа увеличили всего в 2 раза. А всех дата-центров планеты Земля уже не хватает
    чтобы в цикле прокрутить просто все значения этого длинного целого.
    Ответ написан
    Комментировать
  • Как в респонсе на ходу создавать объект?

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

    Ее коробочное решение было реализовано в GraphQL. Но GraphQL - это не Rest. Это более
    сложный и более умный протокол и он позволяет выбирать из entity ровно те поля
    которые нужны для responce.

    А в твоем случае надо просто в контроллере создать еще один метод. Типа getUserByIdShort
    Ответ написан
    Комментировать
  • Как решить проблему слепой печати?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какая у тебя клавиатура? Я не советую ничего учить на ноутбуке. Ноут - всегда был походным вариантом десктопа со всеми вытекающими. Ход клавиши плохой. Нет характерного щелчка при нажатии. И вообще набирать неудобно из-за того что сухожилия пальцев напряжены постоянно. Вы боитесь нажать чуть сильнее чтоб не дай бох не сломать чего в своем любимом Apple M1.

    Вобщем купите геймерскую клавиатуру. Или какой-нибудь эксклюзив со щелчком для печати документов. Такие есть. На нем и учится слепой печати удобно. И безопасно для здоровья.

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

    Хорошая клавиатура для человека - это например клавиатура фортепиано. Вот там и ход клавиш добротный.
    И вы не боитесь раздолбать ничего. Рука - расслаблена. Можно печатать быстро и без оглядки.
    Ответ написан
    1 комментарий
  • В чём безопасность DNS over HTTPS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существует атака когда человек посередине канала (man in the middle) подсовывает свой dns и вы,
    заходя в свой банковский кабинет попадаете на сайт-обманку. Дальше могут быть разные сценарии
    но в целом доверие к доменному имени базируется просто на предположении что вы точно-точно
    знаете что зашли в СВОЙ банк а не в фейковый.

    Возможно DNS over https решает эту проблему ведь человек посередине уже не может вклиниться в
    https соединение. Хотя и здесь тоже можно рассуждать на тему браузера и того какие сертификаты
    изначально там установлены. Кто вам устанавливал браузер и сами сертификаты. Короче вопрос
    нулевого доверия на каком-то этапе остается. Криптография кажется его никак не решает.
    Ответ написан
    Комментировать