Задать вопрос
  • Почему Докер не синхронизирует изменения в volume?

    akelsey
    @akelsey
    Что бы меньше иметь проблем (меньше компонентов и надстроек, меньше проблем), если хостовой машинкой необходимо иметь виндоус:
    1. я бы не использовал Docker Desktop, удалил бы его (всё равно он использует WSL)
    2. установил бы докер как сервис в WSL2, например как тут https://dev.to/bowmanjd/install-docker-on-windows-...
    3. Монтировал бы линукс пути без всяких W:\\src
    4. с windows подсистема линукс вроде бы доступна на smb share \\wsl
    5. рассмотрел бы переход на линукс или хотя бы отдельно виртуалка под разработку.
    Ответ написан
    5 комментариев
  • Какая из книг лучшая для изучения java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    подскажите одну книгу,которую буду читать и не жалеть о том что теряю время в пустую

    Просьба очень странная. Даже невозможно нормального ответить.
    Авторов обычно трое. Шилдт. Эккель. И Хорстман. Все пишут про Java. Примерно
    одно и тоже. Но поскольку ты очень занятой и тебе времени не хватает - то я тебе
    не советую читать ничего. Работай и задавай вопросы здесь. Когда появится желание
    читать - выбери жестко одну тему. Например рефлексия. И читай только про нее.
    Вот так.
    Ответ написан
    1 комментарий
  • Как адресуются пакеты адресату с серым ip?

    paran0id
    @paran0id
    Умный, но ленивый
    Технология называется NAT.
    Ответ написан
    Комментировать
  • Как писать код на android?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужна нормальная клавиатура. Купи себе недорогое устройство класса "нетбук".
    На телефоне писать не надо. Это просто неэффективно. Зря портить себе зрение и пальцы.
    Ответ написан
    Комментировать
  • Почему не работают библиотеки 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 комментариев