• Облачная СУБД для чайника?

    @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 комментария
  • Договорился на подработку, прислали договор на подписание, в нём увидел пункты которые не видел в других подобных договорах - это мошенники?

    svob
    @svob
    Фрилансер, текстовик широкого профиля
    Самодеятельность.
    Интересно, что подразумевается под ущербом.
    Вроде бы, по традиции наоборот, при досрочном расторжении положено оплачивать фактически выполненную часть работ пропорционально.
    Ответ написан
    Комментировать
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    @As56
    Если заранее оговорено не было то нет, не обязан
    Ответ написан
    Комментировать
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Нужно поставлять свои решения с развертыванием в докере. Компоуз файл ему отдаете и говорите. что дальше не ваша забота. Может он на QNX каком-нибудь или OS/2 решил бы все завести. Это его проблемы.
    Ну а то, что вы не согласовали заранее требования к платформе и окружению, не оговорили в каком виже будет поставка и какие вы готовы обеспечить работы по развертыванию - это теперь ваши обоюдные роблемы.
    Если вы уже отдали ему исходники, то он может попытаться свалить с ними под предлогом, что вы ничего не развернули на его железе.
    То. что не оговорено в договоре, будет геморроем. Ну а там уж только меряться кому геморрой длиннее покажется.
    Ответ написан
    Комментировать
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    @Drno
    Забирай деньги, оставляй исходники и вали

    Либо пусть дает нармальные доступы, с нужным соытом

    Ну либо докер/виртуалка/контейнер
    Ответ написан
    Комментировать
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    @vitaly_il1
    DevOps Consulting
    По-моему, ответ простой - что было записано в договоре, то и обязан.
    Т.е. если речь шла о коде - то только код. Если договаривались о "запустить на сервере" - то надо ставить на сервер. Но вот о том, что для вебсервера используют Мак, я еще не слышал :-)
    Ответ написан
    11 комментариев
  • Можно ли роутер заразить вирусом?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да просто сосед пользуется твоим паролем. Смени и все будет норм. А соседа видно по мак-адресам которые щас подключены.
    Ответ написан
    Комментировать
  • Можно ли роутер заразить вирусом?

    Adamos
    @Adamos
    Роутер имеет не только файловую систему, но и операционную. Обычно, если это роутер для домашнего сегмента - жестко кастрированный производителем и сто лет не обновлявшийся Линукс на древнем ядре, эксплойты для которого в даркнете есть у каждого пекинеса. Роутер может быть как заражен вирусом, который вмешивается в ваш трафик, так и быть включен в ботнет и атаковать сервера в интернете - а вы об этом даже не будете знать, если ваш провайдер не отловит эту активность и не заблокирует ваш канал.

    Лечатся такие проблемы (по крайней мере, временно) скачиванием с сайта производителя свежей прошивки для этого роутера и принудительной ее установкой. А еще лучше - подбором какой-нибудь OpenWRT и сменой хомячковой прошивки на открытую, более современную и лучше защищенную от заразы.
    Ответ написан
    4 комментария
  • Можно ли роутер заразить вирусом?

    Можно ли роутер заразить вирусом?

    Можно.

    Закинуть на него именно вирус какой-нибудь, троян?

    Например, для DDoS-атаки и др.

    Роутер имеет файловую систему?

    Имеет.

    https://www.kaspersky.ru/blog/router-malware/33319/
    Ответ написан
    Комментировать
  • Как выбрать объекты на изображении по цветам?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе нужна функция цветовой дистанции между двумя цветами. Типа
    double getDistance(int rgb1, int rgb2) {
        ....
    }

    Формула будет похожа на взвешенную сумму цвета как ты писал выше. Только в цветах
    нужны будут разности r1 - r2 e.t.c. И взять декартово расстояние.

    Она будет возрващать от 0 до некоторого максимального вещественного. Если 0 - то цвета идентичны.

    Задаешь порог чувствительности например 5% и если цвета rgb1 и rgb2 близки - то соотв. считаешь
    что совпадение было. Сравнивать по знаку == цвета нельзя в фотографиях. Там очень редко
    бывает численное совпадение. Практически - никогда не бывает.
    Ответ написан
    6 комментариев
  • Какой шаблонизатор использовать в Spring boot?

    @3des
    мне, новичку, очень понравился mustache - сейчас пытаюсь изучать thymeleaf, вижу, что он на порядок сложнее.
    Ответ написан
    Комментировать