Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

SankaSanka

  • 0
    вклад
  • 34
    вопроса
  • 7
    ответов
  • 0%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Как проверить Seed bip-39 на валидность?

    vabka
    Василий Банников @vabka
    Токсичный шарпист
    В спецификации подробно описано, какие слова допустимы, и как вычисления контрольная сумма для выбора последнего слова:
    https://github.com/bitcoin/bips/blob/master/bip-00...
    Там же есть и ссылки на разные библиотеки, которые, в том числе, могут и корректность фразы проверить.
    Ответ написан 25 сент. 2022
    Комментировать
    Комментировать
  • Как выбрать идущие подряд согласные?

    SagePtr
    SagePtr @SagePtr
    Еда - это святое
    Если "более 2х раз подряд" - это 3 или больше, то
    [wrtpsdfghjklzxcvbnm]{3,}
    Ответ написан 23 сент. 2022
    Комментировать
    Комментировать
  • Мультипроцессор джава существует?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Либо у вас сервер так настроен, либо код написан так, что потоки конкурентно не работают.
    Ответ написан 13 авг. 2022
    2 комментария
    2 комментария
  • Как передать картинку телеграмм-боту?

    vabka
    Василий Банников @vabka
    Токсичный шарпист

    что я делаю не так подскажите пожалуйста?

    Ты пытаешься вызывать методы по цепочке там, где это не доступно.
    Методы set* тут возвращают void, по тому и нельзя написать так, как ты написал.

    Нужно так:

    SendPhoto msg = new SendPhoto();
    msg.setChatId(chatId);
    msg.setPhoto(id);
    msg.setCaption(caption);
    Ответ написан 12 июл. 2022
    1 комментарий
    1 комментарий
  • Как оптимально перебрать все возможные комбинации 4х массивов?

    rPman @rPman
    ip4 адрес это число 32бит, все ip адреса тут это все значения unsigned int32 от 0 до 0xFFFFFFFF
    т.е. пишешь один единственный цикл от 0 до 0xFFFFFFFF а затем из числа получаешь ip в нужном тебе виде, либо последовательным получением остатка отделения на 256, либо вручную побитовыми операциями (маска и сдвиг) либо сконвертировав число в массив байт
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как оптимально перебрать все возможные комбинации 4х массивов?

    azerphoenix
    Орхан Гасанлы @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Не знаю, будет ли это полезно вам, но библиотека действительно есть (Apache Commons Math):
    CombinatoricsUtils.combinationsIterator()
    https://commons.apache.org/proper/commons-math/jav...
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как оптимально перебрать все возможные комбинации 4х массивов?

    BorLaze
    BorLaze @BorLaze
    Java developer
    Хм...а чем не устраивает простой цикл с 4 уровнями, если нужны "абсолютно все возможные варианты IP адресов"? Заодно и адреса по порядку идти будут...
    for(int i0=0; i<=255; i++) {
        for(int i1=0; i<=255; i++) {
            for(int i2=0; i<=255; i++) {
                for(int i3=0; i<=255; i++) {
                    writeToFile(printf("%d.%d.%d.%d\n", i0, i1, i2, i3));
                }
            }
        }
    }
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как проверить биткоин адрес на реальность?

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

    Можно это делать самому (bitcoin core так делать не умеет, можно сделать индекс на транзакции или контролировать указанный список, при добавлении адресов потребуется пересканировать блокчейн, иногда мне кажется это такое тонкое издевательство разработчиков) либо взять готовый клиент, например btcd там есть опция создания индекса --addrindex и будет соответствующий rpc запрос

    p.s. если бы было требование положительного баланса, для bitcoin core есть утилита дампа списка UTXO (не потраченные выходы) но это разовая операция, занимает некоторое время и готовит (на текущий момент) 5-гб csv файл.
    Ответ написан более года назад
    5 комментариев
    5 комментариев
  • Как распараллелить работу с мапой?

    xez
    Dmitry Roo @xez Куратор тега Java
    Senior Junior Roo
    В java 8+ многопоточность достигается гораздо более понятным и простым способом:
    // Java 11
    public class ParallelMapDemo {
    
        public static void main(String[] args) {
            var inputSet = Set.of(1, 2, 3, 4, 5);
    
            var result = inputSet.parallelStream()
                    .collect(Collectors.toMap(Function.identity(), ParallelMapDemo::doSomething));
        }
    
        static String doSomething(Integer i) {
            //  Do Something
            return i.toString();
        }
    
    }
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как получить хеш из строки средствами Java?

    rPman @rPman
    https://bitcoinj.org/
    куча методов по работе с биткоин, в т.ч. с приватными ключами, генерация валидация, подписывание строк текста на основе приватного ключа вашего адреса и т.п.

    например чтобы подписать или проверить подпись сообщения нужно использовать метод org.bitcoinj.core.ECKey.signMessage(String message) создав предварительно ключ ECKey
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как получить хеш из строки средствами Java?

    2ord
    Капитан Пронин @2ord
    K21ZG4GJpDjS26p1Ksn3U9JTJJr1Dt3ffwdEZLzjonMoN3AUHtxh
    - это хэш по основанию 62 (A-Z, a-z, 0-9). Как он был получен - не имею понятия. Был ли private key bitcoin получен путем простого вычисления хэша от строки - не знаю.
    При вычислении хэша от строки обычно берется алгоритм md5, sha-1, sha256 или другие, в зависимости от целей. На выходе получится массив битов фиксированной длины. Так вот, нужно преобразовать его в массив символов по основанию 62, где 0-61-е знаки будут представлены алфавитом A-Z, a-z, 0-9.
    Ответ написан более двух лет назад
    4 комментария
    4 комментария
  • Как настроить WebSecurityConfig правильно?

    azerphoenix
    Орхан Гасанлы @azerphoenix Куратор тега Java
    Java Software Engineer
    Приветствую!
    1)
    Хочу сделать чтоб вход на страницы админа /adminPageProduct /adminPageUser

    наверное, лучше сделать общий префикс для админ панели, что-то типа /admin/** и на этом уровне ограничивать доступ, чем перечислять каждую ссылку в настройках конфигурации. А урл делать следующей структуры:/admin/products /admin/users. Вам же в любом случае нужно закрыть доступ ко всей админке

    Мне кажется, что проблема у вас может быть тут:
    .antMatchers("/admin*")
    Других явных проблем не вижу, если все остальное настроено корректно
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как написать JUnit тест к методу который лазит в БД?

    Zarom
    Дмитрий Шицков @Zarom
    Приходят в голову такие варианты:
    • Если нужен только юнит-тест, то используя PowerMock, замокать методы ConnectionPool. Пример: https://stackoverflow.com/a/18910765
    • Можно написать интеграционный тест, реализовав тестовый ConnectionPool и запустив реальную базу данных в докере, используя Java Testcontainers https://www.testcontainers.org/
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • Как протестировать сервлет?

    ads83 @ads83
    Проблема в том, что твой сервлет создает каждый раз новый dbManager. Ему пофигу, что ты там мокаешь - он создает. каждый вызов. new DBManagerService()
    Это ужас-ужас и за такое бьют линейкой по пальцам в реальном коде недопустимо

    Стандартное решение - создать поле в классе и использовать code injection, т.е. прописать аннотацию @Autowired:
    public class ConformPay extends HttpServlet {
      private static final Logger LOGGER = Logger.getLogger(ConformPay.class);
      private static final long serialVersionUID = 1L;
    
    @Autowired
    DBManager dbManager


    Потом тебе надо указать Спрингу (или аналогу), где взять компонент DBManager.
    В тесте ты указываешь, что вместо настоящего DBManager нужно использовать mock.
    ----
    Другой вариант, менее трудоемкий, но и менее распространенный - это использовать мок на геттере. Так же создаешь в сервлете поле, создаешь/инжектируешь его в конструкторе и создаешь методDBManager getDBManager() {return dBManager);}. Потом в методе `doPost` обращаешься не к полю dBManager, а дергаешь геттер: getDBManager().delPayment(dtime);
    В тесте же на своем сервлете ставишь заглушку на этот метод:
    when(conformPay.getDBManager()).thenReturn(dbManagerMock)

    Проблема в этом подходе в том, что тебе нужно не создавать заглушку для conformPay, а использовать настоящий класс с заглушкой. Почитай про метод spy(), а также почему его рекомендуют применять только в исключительных случаях.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как переделать табличку HTML?

    Andrey K. @JustFreelance
    front-end developer
    Я так понял, нужно без CSS?
    Тогда вариант с 4-мя таблицами внутри одной общей таблицы:
    https://codepen.io/just_freelance/pen/poJGxOr

    С CSS всё выглядит гораздо проще:
    https://codepen.io/just_freelance/pen/PoqVyov
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как правильно замокать коннекшен через Mockito или протестировать методы работающие с базой данных по другому?

    mayton2019 @mayton2019
    Bigdata Engineer
    Никто не мокает коннекшен. Это не твоя библиотека а драйверно-базовая. И в ней нет бизнес-логики и нечего тестировать. Ты же не сотрудник Oracle? Верно?

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

    xez
    Dmitry Roo @xez Куратор тега Java
    Senior Junior Roo
    System.out.println( match.replaceAll(new Function<MatchResult, String>() {
                                                     @Override
                                                     public String apply(MatchResult u) {
                                                         return u.group(1) == null ? u.group().toUpperCase() : u.group().toLowerCase();
                                                     }
                    }));


    Стало понятнее? )
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему выбивается ошибка в sql запросе?

    d-stream @d-stream
    Готовые решения - не подаю, но...
    Грубо: executeQuery подразумевает что что-то вернется [в виде данных], а delete (так же как insert, update) - ничего не возвращают
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему выбивается ошибка в sql запросе?

    Дмитрий Свиридов @dimuska139
    Backend developer
    Тебе надо вызывать executeUpdate, а не executeQuery. И, кстати, в чем смысл выполнять запросы к базе в цикле?
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно ли при помощи регулярных выражений определить что у слова совпадают первая и последняя буква?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Java
    Седой и строгий
    "abcda".matches("^(.).*\\1$")
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 17 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 9 ответов
    • 0 вопросов
  • vovka3003
    Владимир Шаблий
    • 9 ответов
    • 0 вопросов
  • Алексей Гончаров
    • 6 ответов
    • 1 вопрос
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • nedosekinstanislav
    Stanislav
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

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