• Платежный агрегатор для самозанятых?

    @rPman
    гуглить "облачная онлайн касса" (потому что просто "онлайн касса" это физическое устройство ATM для приема платежей по карточкам налички)

    Принимать ты можешь как угодно но онлайн касса быть должна.
    Самозанятые могут не покупать онлайн кассу но должны формировать чек в приложении "Мой налог" для каждой продажи, там есть api, только вот получить его нормалтьтное описание можно лично с ними по общавщись или реверсить код, вот статья трехлетней давности
    Ответ написан
    Комментировать
  • В каком порядке изучать Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В том же, в каком и в 2022-м.
    Ответ написан
    1 комментарий
  • Почему при запуске grpc сервера с телефона через компьютер не получается подключится?

    @rPman
    С высокой вероятностью это ограничение телефона, запрет на доступ к ресурсам телефона, когда он раздает интернет

    решается либо перепрошивкой (возможно в твоем телефоне будет опции и так, но я не верю в такое) либо аппаратными средствами, например подключить к телефону usb ethernet (можно и wifi но настраивать придется из консоли adb shell и так же не уверен что без рута это будет возможно), подключив его к своей сети и настроив ip адреса, отличные от тех что раздает телефон (т.е. физически должно быть две сети) в общем сложно и муторно

    эти ограничения искусственные, созданы для того чтобы пользователи не использовали смартфон как универсальное устройство а шли покупать новые устройства и новые тарифные планы
    Ответ написан
    Комментировать
  • Как создать свой домен?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Идете на сайт ICANN
    Подаете заявку на новый TLD
    Платите бабки, много бабок, очень много бабок. Зеленых, ессно.
    Ведете переписку, очень много деловой переписки. На языке оригинала, ессно
    Создаете необходимую инфраструктуру - Вы должны где-то хранить данные о зоне

    ПРОФИТ! (Ну, может быть...)
    Ответ написан
    Комментировать
  • Как создать свой домен?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ICANN периодически проводит рассмотрение заявок на регистрацию доменов верхнего уровня. Стоимость такого домена порядка $200000 плюс отчисления от продаж поддоменов. Кроме этого вы должны создать и поддерживать инфраструктуру для обслуживания домена.
    Ответ написан
    3 комментария
  • Почему Java выводит список данных в таком формате?

    al_gon
    @al_gon
    Предположительно у Вас метод toString в Organization не переопределённ.
    Если Вы сделаете System.out.println(new Organization("ФАР", "4444-55555-1", "FAR@GMAIL.COM", 18)) , то тоже будет не очень.
    Ответ написан
    2 комментария
  • Как создать функцию которая может принимать любые типы переменных?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Примерно так:
    <T> void genericMethod(T argument) {
            // argument extends object
            System.out.println(argument);
        }

    т.к. не понтяно какой тип будет у аргумента, он будет обладать только свойствами Object

    <T extends SomeType> void someMethod(T argument) {
            System.out.println(argument);
        }
    
        abstract class SomeType implements SomeInterface {
        }
    
        interface SomeInterface {
            //TODO :: some methods
        }

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В статически типизированных языках такие функции создавать не надо. Если вам понадобилось, то вы делаете что-то не так.
    Ответ написан
    Комментировать
  • Как создать функцию которая может принимать любые типы переменных?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В полной мере union-типы реализованы в Scala. Поэтому тебе надо сменить язык чтобы работать
    на таком уровне выразительности своей идеи.

    Например вот функция которая конвертит дату-время для строки или для лонг-типа.
    def convertTime(time : String | Long) : String = 
      ....


    В Java есть вариант - передать базовый типп Object и в теле функции проверять instanceOf и делать
    соотв. conditions или паттерн матчинг по типу.
    String convert(Object object) {
       ......
    }

    Вобщем все варианты требуют явного перечисления логики которую ты хочешь сделать.

    Или ты хотел как-то "схитрить" и не писать логику?
    Ответ написан
    Комментировать
  • Облачная СУБД для чайника?

    @rPman
    Если сумеешь внятно и с разумными доводами ответить - зачем тебе именно облачное решение, как бы ты это не понимал, то тогда пользуйся, иначе лучше:
    * арендуй vps-ку с ценами от 3.5$ в год (лучше что то от 3$ в месяц, памяти будет по больше)
    * установи туда любую открытую/бесплатную базу данных mysql/postgres/...
    * установи локально открытый/бесплатный GUI для баз данных, например devart dba studio express (по уму тебе хватит любой GUI с поддержкой построителя запросов)
    * установи локально условно бесплатный ms visual studio community (лучше не последнюю версию) и создавай приложения на win forms для своей базы данных на столько просто, что мне кажется для мелких проектов не превзойденно.
    Благодаря майкрософтовской экосистеме работа с ее продуктами будет почти бесшовна (тут тебе и эксель, и доступ к старой ms access, и огромное комунити).
    При должном старании кстати .net приложения будут кроссплатформенными, кросс-языковыми (вон даже на python.net можно писать) и достаточно шутрыми (экосистема уровня java, может даже круче).
    p.s. веб бакэнд на visual studio писать грустно, точнее результат будет требовать windows server, это обходится но уже не просто а значит при выборе на чем писать здесь и сейчас быстро просто не подходит.
    Ответ написан
    Комментировать
  • В чем можно хранить около триллиона значений key=>value?

    @rPman
    ключ 49 бит - log(66^8) - пусть для простоты 8байт, значение 32 байта (у тебя там hex строка)
    только на значения тебе нужно 30 терабайта на каждый триллион - 32*10^12 и даже в идеальном случае еще 16тб на индекс ключа (чем больше оптимизируешь хранение тем больше операций на чтение и запись каждой)

    Недавно была статья на хабре про тесты производительности работы mssql с похожими ключами миллионы записей

    Я бы предложил схему с самописным индексом (мне кажется тут колхозить идеальнее всего).
    * делишь ключ на 2 части (если бы ключ был не такой равномерный, то нужно было бы брать хеш от него), например по 4 байта
    * младшие 4 байта (они наиболее равномерно будут распределены) - это номер блока в общем хранилище (на 1 триллион примерно 9кб, рекомендую. 16кб или 32кб, ssd на таких кластерах идеально работают), с массивом элементов: каждый из которых это вторые 4 байта ключа (старшие байты) + 32 байта искомое значение
    для 16кб блока итоговое хранилище будет 70 тб - 2^32*16кб, можно прямо в дисковое устройство писать без файловой системы, по дискам пусть какой-нибудь рейд 0 раскидывает
    * последняя запись в 16кб блоке - ссылка на дополнительное хранилище переполнений неравномерного распределения, его можно организовать как хочешь, на отдельном носителе

    Итого на каждый запрос ты делаешь ровно одно чтение 16кб блока с диска, в полученном массиве ищешь нужный ключ и получаешь значение (если нет значит переполнения из-за неравномерного заполнения индекса, топать в дополнительное хранилище), кстати можно читать по секторно в процессе поиска, тогда если диск сумеет это оптимизировать будет 2х профит. Запись то точно так же - 1 чтение 16кб и запись 1 сектора диска, дозапись в массив. Кстати, если контролировать порядоковый номер ключевого значения (а что то мне говорит там будет простой перебор всех паролей) то будет последовательная запись блоков на диск, для hdd это идеальная ситуация. Иначе всю оперативную память используешь как самодельный lazy write буфер, при переполнении записываешь его на диск, отсортировав согласно дисковым устройствам и отсортировав порядок номеров секторов (тогда либо понимать как работает рейд либо самому раскидывать по дискам), операционные системы и контроллер диска это умеют но у них кеш маленький.

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

    Добавь еще один уровень, будет 2 чтения по 8-16кб (когда ты не на 2 части делишь ключевое значение а на 3, первая часть ссылается на список ссылок на вторую часть, которые уже ссылаются на блоки с третьей частью), можно уменьшить этот оверхед но мне кажется скорость в твоей задаче важнее, ведь она упадет в два раза.
    Универсальные базы данных делают многоуровневые древовидные индексы (это настраивается) и ради удобства и универсальности ты теряешь в скорости.
    Ответ написан
    3 комментария
  • Где и как подтянуть теорию по некоторым темам Java Core?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    По Multithreading
    "Что выведет следующий фрагмент кода"

    Это - самый плохой класс задач на мультипоточку. Я видел много таких. Большинство из них основаны на Race Conditions и бывало и такое что негативный эффект не воспроизводится хотя и ожидается в задаче. А не воспроизводится по тесяче причин. По другой операционке или по другой версии JDK/JRE. Вобщем что
    выведет код
    нужно выкинуть и заменить его на какой-то модульный тест да и еще и под нагрузкой. И беря
    во внимание комплексность самого вопроса я-бы не стал такое выводить например в собеседования. Так
    можно и мидла макнуть головой в сортир. Попробуйте распознать в коде например задачу обедающих
    философов. Я готов спорить на коньяк что если вы никогда не слыхали - то не распознаете подвох.

    Где и как подтянуть теорию Multithreading(М). Ответ - нигде. Самый лучший вариант - начать писать много кода
    с мультипоточкой и наблюдать. Очень многие эффекты книги не объясняют. И 99% новичек нигде не прочитает
    про разницу между использованием synchronized и atomic.

    Вобщем берите код с нагрузкой и наблюдайте.
    Ответ написан
    2 комментария
  • Почему возникает ошибка javafx.scene.text.Text.setText(String)?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    because "this.patientLastName" is null


    Есть готовый api для диалогов
    Alert alert = new Alert(AlertType.INFORMATION);
    alert.setTitle("Имя окна");
    alert.setHeaderText("хедер в окне:");
    alert.setContentText("сообщение под хедером");
    alert.showAndWait();
    Ответ написан
    Комментировать
  • Какое оптимальное время въехать в проект?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какое оптимальное время въехать в проект?

    Не бывает оптимального времени. Обычно заказчик и исполнитель вместе решают какое время.
    Но для оценки я рекомендую следующее. Посмотреть backlog проекта. Посмотреть какие критичные
    таски висят. Или блокеры. Посмотреть что у них общее.

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

    Для анализа кода поставте план - график. Например 1 неделя на развертывание проекта.
    Если там специфичное облако - то на изучение облака еще 1-2 недели.

    План график должен включать обязательные пункты который надо пройти. Например если это
    Laravel/react - то вы должны поднять в облаке привет-мир на этом стеке и продемонстрировать
    что он работает. И только после этого переходить к развертыванию проекта.

    Если на проекте есть архитектурная документация, confluence, wiki - то берите пару недель на чтение.
    Выписывайте ВСЕ новые слова на бумажку. По ним задаете вопросы.

    У вас должен быть ментор или консультант который раз в несколько дней должен отвечать
    на ваши вопросы по списку. Ваш план-график должен учитывать риски и внезапные investigations
    результатом которых могут быть НОВЫЕ таски которые вы сами создадите. Например - сдохли
    сертификаты по сроку. Создать новые. Это время. Это тоже таски и они должны быть эстимированы.
    Ответ написан
    3 комментария
  • Spring boot 2.7+Tomcat9+.war: как вынести зависимости WEB-INF/lib в отдельный пакет?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    В джаве все необходимые библиотеки должны быть доступны в classpath. Classpath указывается при запуске java. В томкате, в конфиг файлах, тоже есть переменные, которые добавляются в classpath.
    Вам нужно собрать самостоятельно все нужные библиотеки и скопировать их в любую из папок, которые указаны в classpath.
    Насколько я помню, одна из них ~tomcat/lib; так же можно указать свою через конфиги.
    Зависимости мавен умеет копировать сам: https://maven.apache.org/plugins/maven-dependency-...
    Ответ написан
    Комментировать
  • Как получать трансляцию экрана и передавать его на другое устройство?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как-то так https://www.baeldung.com/java-taking-screenshots
    А передавать, вариантов масса, например поднять web-сервер и туда постить изображения.
    Ответ написан
  • Какое оптимальное время въехать в проект?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ведите тайминг, на основе результатов, обосновывайте начальству необходимость в дополнительных часах.

    UPD еще побуду капитаном очевидностью. В одной компании я въезжал в их проект примерно месяц .NET3 и React. Причем понимания достиг только в узкой части, что бы просто начать выдавать код.
    Ответ написан
    Комментировать
  • Какое оптимальное время въехать в проект?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    От проекта зависит. На моëм проекте например новичкам даже сеньорского уровня до первой простой таски требуется недели две, а выход на 100℅ эффективность занимает 3-6 месяцев.
    Ответ написан
    9 комментариев
  • Договорился на подработку, прислали договор на подписание, в нём увидел пункты которые не видел в других подобных договорах - это мошенники?

    @12rbah
    Договорился на подработку, прислали договор на подписание, в нём увидел пункты которые не видел в других подобных договорах - это мошенники, кто ни будь с таким сталкивался?
    Мошенники вряд ли, но многие заказчики не знают НПА и пишут всё подряд в догор, которые суд часто может признать незаконными.
    и потребовать возмеще-ния
    убытков в виде обоснованного, документально подтвержденного, ущерба.
    Ну пусть требует). За такие вещи не так легко взыскать. Если что потраченные деньги на разработку системы будет тяжело класифицировать как ущерб.
    Вообще заказчик может отказаться от исполнения договора с этим условием, но если захотят кинуть и сумма не очень большая, то непонятно, что лучше судиться или забить. В целом не совсем уверен в законности этих пунктов, выглядят примерно как пункты типа "заказчик имеет право оштрафовать по договору на 10кк рублей, если будет нарушено НДА", но в реальности он сможет взыскать деньги через суд и то если он правильно всё сделал, если кратко то по нда очень тяжело привлечь. В данном случае работайте либо по предоплате, либо по пунктам, т.е. что-то сделали просите оплату, не дают то прекращаете работу.
    P.S. А что вы делаете, всё что писал выше в основном к разработке относится.
    Ответ написан
    2 комментария