• Почему не работают библиотеки Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    1. Рекомендую использовать Intellij Idea
    2. В импортах у вас указаны пакеты из java EE, а у вас java SE.
    3. Если библиотеки не входят в ваш SDK, их надо подключать отдельно. Либо скачав и указав в classpath (IDE с этим может помочь), либо используя maven / gradle.
    Ответ написан
    Комментировать
  • Правильно ли решил задачу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно сделать коллекцию из этих строк
    "Two turtle-doves", "Three French hens"
    тогда алгоритм упрощается. Визуальная копи-паста уходит.
    Ответ написан
    4 комментария
  • Какие есть альтернативы базам данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Альтернатив - миллионы. Есть библиотеки которые предоставляют доступ к файлам наподобие баз данных. Это LevelDb например.

    Но обсуждать этот вопрос глубоко - нет смысла т.к. неясны требования к твоей системе хранения.

    Если тебе достаточно файлов (csv, json, xml) то ради бога! Храни в файлах. Это будет очень даже
    экономно с точки зрения TCO и никакой админ не нужен. А вот когда ты будешь гонять запросы
    по файлам и тебе понадобится индексирование, транзакции и изоляция - вот с этого момента
    можно обуждать всякие dbms или системы на файлах.
    Ответ написан
    4 комментария
  • Как правильно отправлять файлы в RESTfull приложении?

    @Dmtm
    Android
    сейчас, раз уже есть массив байт, то передавать вместе с классом, так проще
    а вообще - вынести работу с файлами в отдельный репозиторий (там и кеширование можно добавить для экономии) и в Book останется только имя файла
    Ответ написан
    2 комментария
  • Как поставить пароль на архив tar/gzip?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Tar и gzip это очень старые утилиты. Им по 30-40 лет. И создавались они в те времена когда симметричное шифрование еще не было так развито.

    Но архивчик можно после упаковки зашифровать другими утилитами например openssl.
    openssl enc -in file.txt -out encypted_file.txt -e -aes256

    Я так делал когда шифровал бекапы oracle dbms.

    Если переписать чуть лучше скрипт - то можно объединить операции tar->gzip->openssl в один пайплайн
    без воздания промежуточных файлов.
    Ответ написан
    3 комментария
  • Зачем нужна рекурсия в реальных случаях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Рекурсия нужна при обработке иерархических данных. Например - обойти файлы и каталоги
    в файловой системе и выполнить какое-то действие. Или действие с условием. Например если
    в текущем фолдере есть фолдер .git - то выполнить какой-то git script.

    Рекурсия может понадобиться при работе с документами XML/JSon (шаблон composer). И хотя
    в некоторых API рекурсия может быть частично скрыта за языками XPath/JSonPath тем не меннее
    ее рекурсивная природа остается налицо. Кроме того если вам достался узкий API типа DomDocument
    без поисковых диалектов - то обойти его можно на любом ЯП с рекурсивной функцией.

    Рекурсия нужна при парсинге сайтов. Это вобщем просто более расширенная трактовка работы с файловой
    системой. Если Url-s это как-бы файлы в web пространстве и они имеют ссылки друг на друга - то вы
    можете рекурсией это все обходить.

    Рекурсия почти всегда нужна при работе с графами. Берите любой алгорим на теорию графов и я готов
    спорить что 99% он будет содержать рекурсию.

    Все настольные игры (шахматы-шашки) в основе своего алгоритма альфа-бета поиска с отсечениями и
    BWF базируются на рекурсии.
    Ответ написан
  • Как хранить статическую информацию в spring-приложении?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Делать его бином тоже как-то не хочется

    Не совсем понятно почему не хочется. Экономишь память? Или время иниализации бина?

    У тебя проблема вовсе не в Spring. Здесь если убрать Spring за скобки - то ты также будешь ломать
    голову над тем как разложить твои данные по методам.

    Попробуй реши эту задачу вообще без Spring. Будет простое ООП-решение. Вот затащи его потом
    в Spring и вопрос сам собой решится.
    Ответ написан
    Комментировать
  • Подскажете по архитектуре "мультисервисного" приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Это значит, мне надо сделать 1000 репозиториев, в каждом Х методов (получение по ID, получение по значению поля, одного объекта, коллекции...). И ещё 1000*Х методов в контроллерах....

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

    1. У тебя есть диск с произвольной структурой.
    Ты берёшь ещё 1 такой же диск и копируешь всё 1-в-1 не заботясь о том, что именно там за данные.
    В результате получаешь точную копию носителя.

    2. У тебя есть диск с произвольной структурой. Ты при помощи софта создаёшь образ этого диска и сохраняешь как файл на другом диске.

    В результате получаешь образ носителя, который потом можно записать на новый носитель как в 1м варианте, или обработать потом, как в третьем.

    3. У тебя есть диск с файловой системой.
    Ты копируешь с него файлы и сохраняешь.
    В результате у тебя есть копии файлов, но не структуры диска.
    Ответ написан
    Комментировать
  • Как безболезненно перейти с Python на Rust?

    Как безболезненно перейти с Python на Rust?

    Учиться, учиться, учиться.
    1) Python медленный

    Питон на удивление быстрый, особенно если использовать PyPy, а сильные тормоза возникают только в особых случаях.
    2) В python нет адекватного управления памятью

    Автоматический GC - это один из самых адекватных способов управления памятью, который только придумывало человечество.
    3) В python мне приходится испльзовать кучу мегабайт библиотек (я чувствую себя тупым и бесполезным при импортировании библеотек)

    А вы импортируйте их с мыслью "я не хочу тратить кучу времени на реализацию этого всего с нуля"
    В расте вам точно также придётся импортировать кучу библиотек, как и в любом другом языке, где есть библиотеки.
    4) Python кажется игрушечным языком

    Зря так думаете. Python очень мощный.
    5) Python не подходит род микроконтроллеры (micropython - просто игрушка)

    Раст+МК для новичков тоже очень страшная вещь - посмотрите на вопросы от товарища eegmak, например, чтобы в этом убедиться.
    Micropython - вполне себе production ready инструмент для тех случаев, когда его хватает, и не нужно ужиматься в очень дешёвые чипы.
    6) Проблемы из-за GIL'а

    С какими именно проблемами вы столкнулись на практике?)
    Скорее всего, их можно решить и менее радикальными методами.

    ИМХО: вы услышали от кого-то что Rust-топ язык, а Python - игрушечный, а настоящие программисты используют ручное управление памятью и сами реализовывают всякие сложные алгоритмы и протоколы.
    Хотя обычно ещё пишут, что настоящие программисты пишут только на C, только в виме, и никогда не ищут ответы на русскоязычных форумах.

    Если я прав - задумайтесь ещё раз, какую именно вашу проблему может решить раст, которую не может решить Python.

    Если я вас не отговорил - берите rustbook (лучше способа не придумали ещё).

    Если хочется перейти на другой язык, не обязательно раст - посмотрите в сторону других языков со сборкой мусора - например C#, Go, или D. Их все можно использовать в том числе и на МК, с разной степенью извращений.
    Ответ написан
  • В чем разница между str и &str?

    vabka
    @vabka Куратор тега Rust
    В принципе тут уже есть хорошие ответы, но я перефразирую, чтобы было чуть понятнее другим.

    str - это встроенный тип, который представляет из себя последовательность из байтов utf8.
    Размер значения str не известен во время компиляции, а по тому нигде его нельзя применить в чистом виде (только как содержимое какого-нибудь типа-указателя)
    Можно провести аналогию с массивом (только в случае массивов размер таки известен, но его тоже достаточно редко используют в таком чистом виде)

    &str - это ссылка на эту последовательность байт.
    Это может быть ссылка на содержимое String или ссылка на строковый литерал (&'static str)

    Кстати, String под капотом - это Vec<u8>
    Ответ написан
    Комментировать
  • Можно ли избежать такой конструкции?

    vabka
    @vabka Куратор тега Rust
    Чтобы было чуть проще, тебе нужно реализовать оператор для:
    1. m + m
    2. &m + &m
    3. m + &m
    4. &m + m

    https://stackoverflow.com/questions/38811387/how-t...

    Но совсем избавиться от & не получится - компилятор в любом случае должен знать, когда ты хочешь копирование/move, а когда ты хочешь заимствовать.
    Ответ написан
    Комментировать
  • Хочу разобраться в коде java, не понимаю как работают несколько строк. Объясните как работают эти строки?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    1. Конструктор Stopwatch на вход принимает объект класса Runner. Он ему нужен для того чтобы знать его имя и скорость.
    2. Конструктор Runner принимет на вход имя и скорость. Экземпляр класса Stopwatch создается прямо в конструкторе и в него передается ссылка на этого же Runner-а. Немного tricky да.

    Представьте, что у вас есть два бегуна.
    Вы берете двое часов и подписываете их. Одни часы для Иванова, другие для Петрова.
    Часы вы кладете каждому бегуну в карман. У вас получается такой составной объект: бегун с часами в кармне, которые знают, как зовут этого бегуна.
    Когда вы командуете Start, каждый бегун нажимает на кнопку start на часах:
    public void start() {
                stopwatch.start();
            }

    Часы при этом такие крутые, что еще и знают с какой скоростью бежит бегун. Это им позволяет куда-то выводить сообщение о том, что каждый из них сделал очередной шаг.
    Вот примерно такую сложную ситуацию описывает этот код.
    Ответ написан
    5 комментариев
  • Объясните пожалуйста как работает Docker/Podman?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    1. Вообще докер не для этого. Для того, что вы описали, лучше использовать виртуальную машину.
    1.1 Один процесс - один контейнер. Отдельно пакуете apache, mysql, каждую версию php, и в docker compose всё оборачиваете. Git и systemd в контейнере не нужны. Докер сам как systemd.
    1.2 Упаковать можно что угодно, но см. выше
    2. Скорее наоборот, файлы, лежащие на хост-системе, пробрасываются в докер
    3. Не будет, если ресурсы не ограничивать
    Ответ написан
    3 комментария
  • Как собрать ZFS пул из iscsi устройств?

    @SunTechnik
    ZFS пул, по сути, тот же софтверный рэйд. Соответственно, любое нештатное выключение или перезагрузка серверов iscsi - будет вызывать необходимость восстановления рэйд.
    Скорость доступа определяется линком между серверами. У Вас там 10G или больше ?

    То-есть запустить конечно можно, но стабильность и скорость под большим вопросом. Основной вопрос - зачем ?

    Технологически:
    - Подключете по iscsi диски с серверов.
    - Из подключенных дисков стандартным способом собираете ZFS пул.
    Ответ написан
    2 комментария
  • Частичная маршрутизация трафика через 2й сервер. Какие команды?

    @dumasti
    На сервере 1 прописать маршруты для адресов, на которые надо выходить через сервер 2.
    Ответ написан
  • Частичная маршрутизация трафика через 2й сервер. Какие команды?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    нужны команды настройки маршрутизации и возможно настройки фаервола для назначения меток трафика.
    route
    iptables
    ip
    nft

    что то из этого....
    Ответ написан
    Комментировать
  • Где лучше хранить БД? В докере или нет?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Дополню немного ответ Dr. Bacon, поскольку мне кажется он не так понял ваш вопрос, а вы, возможно, не так поняли суть проблемы.
    Под БД, например постгрес, обычно понимают две разные вещи:
    1) сами данные в файловой системе,
    2) сервер базы данных, который реализует сетевой интерфейс для работы с БД и правильным образом кладёт и читает данные в файловой системе.

    Так вот, сервер можно развернуть ка кна хостовой машине (как вы сказали "локально"), так и в докер-контейнере.
    Файлы БД можно разместить как в файловой системе контейнера, так и в локальной файловой системе, примонтированной внутрь контейнера.
    И тут полно нюансов.
    Давайте начнём с того, как правильно.
    Правиьным будет взять стандартный докер-образ сервера БД, сконфигурировать его через компоуз-файл, а размещение файлов БД примонтировать в виде отдельного volume.

    Что имел в виду Dr. Bacon. Он имел в виду, что если не монтировать файлы БД в volume, то они будут лежать внутри контейнера, а значит при его перезапуске все данные будут стерты, поскольку состояние файловой системы контейнера не принято хранить. Это одно из преимузеств докера - сделал образ унаследовав его от других образов, а потом при запуске контейнера он какждый раз как новенький.
    Ответ написан
    Комментировать