Задать вопрос
  • Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я полностью поддерживаю использование УЛУЧШАТОРОВ типа SonarQube, PMD и прочие которые просто позволяют указать мне на явные ошибки типа potenrial null pointer de-referencing.

    Но вот в части - написать по другому - я-бы сказал что это открытый вопрос. Ставить ТЗ нельзя так чтобы "сделать на выходе хоть что-нибудь". При таких критериях мы получим просто рандомный шум который тем не менее компилируется. Типа "бей посуду - я плачу". Но автору такое не надо.

    Тогда давайте зададим вопрос. А что собсно надо автору? Приведу пример который я часто использую. Решения задач на codewars. Они разные. Но обычно в топе висят 2-3 штуки которые поражают своей краткостью и различностью парадигм. Например в топе висит одно решение с хвостовой рекурсией а другое с циклом. И я не могу решить которое мне больше нравится. Нравятся оба. Но скорее всего при разработке code beautifier я-бы не стал вообще копать 2 направления. Достаточно было-бы просто поставить задачу сделать код меньше. Я думаю что все согласятся что меньше строк - меньше надо будет скроллить вниз. Особенно эти дело любят Джависты. Как накидают своих бинов с геттерами-сеттерами ойойой. 80% кода - нечитаемый шлак. Ну да ладно. А насколько меньше? Есть обфускация. Это сознательне выпиливание смыслов из всех идентификаторов. Вобщем переменные можно называть $1,$2 e.t.c. и это тоже работает. Но ... согласитесь это путь в никуда.

    Поэтому. Чтобы улучшать мы должны САМИ задать вектор улучшения. Парадигмы например. Мы хотим код тяготеющий к функциям или к объектам с методами? Мы хотим код с детальным дебагом (каждый оператор в своей строчке) или нам пойдет исходник как у Джона Кармака. Весь С++ исходник в 1 длинную строку. Мы хотим код на конечных автоматах? Или на комбинаторах? Мы хотим больше перформанс но хуже читаемость (вспоминаем знаменитую Кривую Шипилёва) или наоборот?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Заведи себе пользователя-болвана. И от имени него запускай браузер. Ну а после работы можешь каждый раз убивать его профиль на локальном диске.

    Вообще если ты настолько беспокойный кабанчик что тебе надо именно сильная изоляция то посмотри на такие флешки-операционки как tails https://tails.boum.org/ они вот спецом созданы для мамкиных хакеров. Ничего не остаётся после них. Можешь прон смотреть. Или вещества в торе покупать. Или в хабре писать. Вобщем все можно.
    Ответ написан
    3 комментария
  • Как выучить математику с уровня 8 класса?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я вот не уверен что тебе для спорт-программирования нужна математика до конца ВУЗА. Тебе что нужны тройные интегралы? Или роторы с дивергенциями?

    Почитай вообще олимпиадные задания. Там сложнее чем дискретная математика вобщем-то нет ничего.

    А если ты забыл что такое логарифм - то почитай справочник Выгодского. Там очень все разжевано в идеальной преподавательской манере. Можно лекции даже не писать имея этот справочник.
    Ответ написан
  • Почему битовый сдвиг влево работает по разному в JS и Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для python3
    >>> type(34567 << 16)
    <class 'int'>

    вот этот класс int представляет собой хитрую штуку. Это как-бы аналог целого числа бесконечно большой радрядности.

    А JavaScript там по ситуации либо int (32 bit) либо double.
    Ответ написан
  • В каких книгах хорошо описываются внутренние процессы С++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какие указатели укладываются в регистры, в каком порядке и тд?

    Я думаю что этот вопрос выходит за рамки чистого С++. По крайней мере компиллятор clang
    может перекладывать эту задачу на backend компиллятор и уже тот в свою очередь решает
    в каком порядке.
    Ответ написан
  • Написание эмулятора сервера с нуля возможно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насколько реально для одного человека имея клиент Lineage 2 написать эмулятор сервера с нуля, не заглядывая в код pts и java версии сервера, а так же не анализируя входящий трафик с работающих серверов?

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

    Есть риски. Lineage2 оставляет за собой право в любой момент изменить сетевой протокол. Обфусцировать. Или поменять семантику команд. В этом случае вы оказываетесь в дураках и выкидываете в мусорное ведро плод многих месяцев работы. Lineage2 может иметь редкие сетевые команды которые вы просто не увидите в силу условий. Тогда ваше понимание протокола - неполное. И эта проблема неустранима.

    Кроме того, сколько лет вы готовы потратить на это мероприятие? Я думаю что вы будете достойны либо премии Дарвина. Либо книги рекордов посмертно.

    Мне кажется что в нашей жизни есть более интересные и более оплачиваемые виды досуга. Если вам нравится реверс - займитесь им там где за это точно заплатят. Государства и спецслужбы и большие корпорации в этом имеют свой интерес.
    Ответ написан
    Комментировать
  • Почему модели не синхронизируются с базой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Похоже на сетевую проблему.

    Проведи диагностику на низком уровне. Пингуй хост DB_HOST.
    Попробуй телнетом подключится к порту DB_PORT.

    Потом - консолью
    $ psql ....
    Ответ написан
  • Выбор оптимального метода распределения банкоматов по территории города?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю что такое тепловая карта но догадываюсь. Возьмите случайным образом бросьте на карту n банкоматов. Потом методом градиентного спуска спустите их по теплу в локальный максимум. Получится первый вариант расклада. Запомните его. И еще таких штук 10 рандомных раскладов. Потом - пускай человек выберет из этих раскладов тот который наиболее приятен глазу. Или введите там еще один критерий. Чтобы в радиусе километра не было соседних банкоматов.
    Ответ написан
  • Как научиться решать задачки на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По математики не силен ((

    Не переживай сильно. Для 80% современных задач разработки тебе понадобиться только школьная математика.
    Сложить умножить и процент посчитать. Всё остальное - технический дискурс что делать и как делать.

    Высокая наука ушла в области datascience, AI, quantum-computing, и всякие формальные логические (тьфу) системы где теоретики занимаются онаниз.... эээ короче фигнёй страдают.

    Что тебе понадобиться на самом деле. Структуры python. Библиотеки. Основы мульипоточки. Работа с файлами и сетью. Там не бох весть какая наука. Школьники разбираются. Вот... тут каждый день кодят дискорд и телеграм ботов.

    Еще обрати внимание на операции со строками. Строки - основа современного бизнес-кода. Сравнение строк. Подстроки. Замены. Поиск по регулярке. Это должно быть выучено как молитва. Очень часто программист хорошо умеющий работать со строками выкрутится из любой ситуации. Распарсит json и так далее вручную.
    Ответ написан
    2 комментария
  • Java и выгорание на первой работе, что делать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это нормальная ситуация. Я тоже выгорал на некоторых проектах. В основном из-за того что мои знания просто были не нужны. Мне ставили задачи которые не хотелось делать. А те proposals которые я писал по проекту отклонялись по разным причинам.

    Кроме того события последних лет с ковидом и прочее создали ужасные условия для обучения в первую очередь. Люди выгорают. В основном от отсуствия эмоционального контакта с преподавателем. Уж сколько я поднаторел на самообучении но и мне тоже хочется взять в плюнуть на этот Databricks с ажуром.
    Ответ написан
    Комментировать
  • Стоит ли брать в 2022 году MacBook pro 15 2014 для программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужен ноутбук для программирования на java, c++, c#.

    Мне кажется что макбук имеет смысл брать только для разработки нативных приложений по MacOS.

    В остальных случаях лучше взять Dell или HP и еще лишние деньги будут. Прикупить хороших гаджетов.
    Ответ написан
    Комментировать
  • Какой смысл команды dup в JVM байт коде? И что за индексы локальных переменных?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Какой смысл команды dup в JVM байт коде?

    Жаль что ты не программировал на калькуляторе МК 60. Это целая эпоха.

    Значит есть разные пути к вычислению арифметики. Например если тебе надо возвести в квадрат число 5 на регистровой машине - то ты должен загрузить регистр R1 числом. Потом регистр R2. И потом найти такую команду умножения которая свяжет регистры R1 и R2 и перемножит и сохранит еще где-то результат. В силу современного зоопарка процессоров практически нереально создать такой абстрактный байткод который бы эффективно отображался на опкоды разных железяк. Поэтому решили забить на регистровую машину. И использовать стек как хранилище операндов для операций. Разумеется в JVM есть и аналоги регистров но с ними не выполняются операции. ЕМНИП. Если хошь что-то сложить или вызвать функцию - то положи на стек и там-же получи результат. И если вернуться к возведению числа 5 в квадрат это может быть так

    положить 5 на стек.
    дублировать
    вызвать функцию умножения


    На каком-нибудь языке Forth это было-бы тремя командами
    5 DUP * .
    Результат - на вершине стека.

    Это кратко записывается. Но это несет абсолютно ту-же смысловую нагрузку для арифметики.

    Почему их только 256 может быть?

    А чорт его знает. Так решили. Решили что 256 регистров это капец какой максимум для процедуры или функции. Послушай ради интереса видосы про процессор Эльбрус. Там тоже интересно с регистрами сделано.

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

    Я думаю что твое предположение о том какой код соберет JIT не совсем верное.
    Вместо спора я предлагаю взять какой-то тестовый сценарий и подсмотреть какой
    будет собран код. Я знаю что скептики Java обычно после изучения вопроса глубже
    меняют свою точку зрения. Ну по крайней мере перестают считать Java
    "медленным покемоном". Java действительно была слоупоком во времена Jdk 1.1.
    Но щас это не так.

    Несколько лет назад я мерял производительность floating-point вычислений на приложении
    которое рендерит зеркальные шары. И разница между С++ и Java была не сильно большая.
    10 секунд на сях и 12 секунд на втором языке соотв. Хотя этот тест узкий и он просто
    показывает частный случай.
    Ответ написан
    4 комментария
  • Что за странные хэши в сообщениях с сайта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Человек тарабанил по клавишам. Развлекался. Никакого нарушения нет. И угрозы пока нет.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    При работе с языками в консоли обычно возникают следующие вопросы.
    1) Консоль. Какая кодировка по умолчанию для однобайтных символов. Смотри команду.
    chcp для windows или
    $ locale для linux.
    2) Какая кодировка указана для char для текущего компиллятора. Включен ли режим _UNICIDE.
    Посмотри что делают
    setLocale(...);
     setCodepage(...);

    3) Какой размер символа sizeof(char).
    4) В какой кодировке написан исходник. Это можно проверить если посмотреть hex редактором. Там где русская буква может быть например 0xC0 для однобайтной и двух байтной для Unicode.
    5) Установлены ли шрифты? Операционка может быть англо-язычной и в этом случае она не обязата что-то специфичное отображать.
    Ответ написан
    Комментировать
  • Как работает генерация больших изображений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно что в вопросе автора является исходными данными?

    Заголовок генерацию? Но по сути вопрос - про обработку.

    По обработке. Насколько я знаю сверточные НС на втором уровне уже работают не с пикселами а с группами пикселов обладающих каким-то свойством. Линия. Закорючка и так далее. Вот. А первый уровень не обязательно буквально должен отображать каждый пиксел в отдельные сущности. Я думаю что там просто есть перевод картинки в вещественную двумерную функцию и эта функция и будет активацией для второго слоя. Абстракции короче.
    Ответ написан
    Комментировать
  • Как правильно перевести GPS координаты из одной системы в другую?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Перевод из десятичной системы в дробную 60 ричную (минуты и секунды) это вобщем правильный путь.

    Кроме этого. Как трактовать такие цифры GPS="36643005440;30046005270". Вот в моём GPS навигаторе в настройках есть несколько стандартов на координаты и коррекцию формы земли. Вобщем если вы просто получили сферические координаты из неизвестной системы - то надо поднять максимум инфы в каком стандарте она работает.

    Чистой математики на шаре вам будет недостаточно.
    Ответ написан
    Комментировать
  • Как ограничить ресурсы бота (ОЗУ) в discord на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Наверное коробочное решение - это запускать все в конейнерах Docker/Kubernetes.

    +На стековерлоу было такое обсуждение https://stackoverflow.com/questions/41105733/limit...
    Ответ написан
  • Как найти область двумерного массива?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Серая область? Тут наверное 2 цикла надо.

    Либо обходить левый прямоугольник элементов и уже 2 линиями ограничить. Одна линия
    y = x и вторая - перевернутая y = -x и сдвинутая на вниз на SIZE. Тоесть y = -x + SIZE
    Ответ написан
    Комментировать
  • База данных на 32 гигабайта, как сделать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Между ОЗУ и БД есть еще промежуточный вариант. Это различные key-value библиотеки для работы с хранением и поиском больших объемов данных. Из таковых я помню



    На самом деле их гораздо больше. Но автору и этих хватит. LevelDb создавался гуглом и под него есть разные API (C++, Java, C#). Почти все эти key-value библиотеки поддерживают 2 базовые структуры данных на диске (это HashTable, B+Tree).

    Для твоей задачи прекрасно подходит дисковая хеш-таблица.

    А если разумно партицировать твой объем - то можно и просто в CSV файлы разложить с гарантийным временем доступа.
    Ответ написан
    Комментировать
  • Как возможно сделать этот код короче?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вместо 4 сторон света лучше брать единичный вектор на плоскости (x,y). Тогда формулы удара о борт получаются тривиальные. Просто где то меняется знак с плюса на минус.
    Ответ написан
    Комментировать