Задать вопрос
  • Почему localhost запрашивает логин и пароль?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    У вас spring boot starter security не настроен! Он по умолчанию на все пароль требует ( по описанию)
    Ответ написан
    Комментировать
  • Как потоком загружать видео с камеры наблюдения на сервер?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну, в зависимости от того, как потом с этого сервера раздавать будете! Из вашего вопроса непонятно...
    Можете просто его туда напихивать, подмонтировав каталог с сервера.
    Можно сделать API, например на фласке или aiohttp, и тогда, после записи, его туда заливать.
    Можно поставить на сервер kurento и заливать в него...
    Можно самому, через gstreamer конвертировать в MPEG-TS/H-264
    Ответ написан
    Комментировать
  • Неправильный подход к изучению программирования. Возможно ли в обозримом будущем найти работу?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вам определенно стит написать резюме и отослать его в такие компании как rtsoft, и aurigа, parallels Будете заниматься под капотом своими болтами!
    Да, и посмотрите на язык Rust!
    Ответ написан
    1 комментарий
  • Где хранятся переменные окружения UBUNTU?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Переменные окружения хранятся в памяти процесса, в вашем случае это bash - командный интерпретатор, который в терминала или в консоли.
    Чтобы установить переменную среды используйте команду export.
    export DB_HOST=localhost
    Маленькое замечание, переменная устанавливается ТОЛЬКО в текущем интерпретаторе, и если запустить второй терминал, то ее там уже не будет!
    Чтобы установить переменную для всех интерпретаторов используйте файл .bash_profile в корневой папке пользователя.
    Но! Если запускать например из systemd как системный сервис, то нужно передавать переменные отдельно!
    В общем и целом, переменные среды хранятся в памяти, а аак они туда попадают - зависит от вызывающей программы или сервиса.
    В частном случае легче всего написать скриптовый файл для запуска и установки переменных среды типа start.sh (тоько сделайте его исполняемым
    #!/bin/bash
    
    export MYENV=myvalue
    python myscript.py

    chmod +x start.sh
    ./start.sh
    Ответ написан
    3 комментария
  • Как работает sorted?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Отвечу - первая ссылка в гугле по запросу python sorted - https://tproger.ru/translations/python-sorting/
    Не благодарите!
    Ответ написан
    3 комментария
  • Как отправить файл через бота в телеграмм?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Добавьтке параметр filename=“myfile.doc”
    Вот описание всех атртбутов
    Args:
                chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
                    of the target channel (in the format @channelusername).
                document (:obj:`str` | `filelike object` | :class:`telegram.Document`): File to send.
                    Pass a file_id as String to send a file that exists on the Telegram servers
                    (recommended), pass an HTTP URL as a String for Telegram to get a file from the
                    Internet, or upload a new one using multipart/form-data. Lastly you can pass
                    an existing :class:`telegram.Document` object to send.
                filename (:obj:`str`, optional): File name that shows in telegram message (it is useful
                    when you send file generated by temp module, for example). Undocumented.
                caption (:obj:`str`, optional): Document caption (may also be used when resending
                    documents by file_id), 0-1024 characters.
                parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
                    show bold, italic, fixed-width text or inline URLs in the media caption. See the
                    constants in :class:`telegram.ParseMode` for the available modes.
                disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
                    receive a notification with no sound.
                reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
                    original message.
                reply_markup (:class:`telegram.ReplyMarkup`, optional): Additional interface options. A
                    JSON-serialized object for an inline keyboard, custom reply keyboard, instructions
                    to remove reply keyboard or to force a reply from the user.
                thumb (`filelike object`, optional): Thumbnail of the
                    file sent. The thumbnail should be in JPEG format and less than 200 kB in size.
                    A thumbnail's width and height should not exceed 90. Ignored if the file is not
                    is passed as a string or file_id.
                timeout (:obj:`int` | :obj:`float`, optional): Send file timeout (default: 20 seconds).
                **kwargs (:obj:`dict`): Arbitrary keyword arguments.
            Returns:
                :class:`telegram.Message`: On success, the sent Message is returned
    Ответ написан
  • Как сделать REST API на python для отправки запросов к базе данных?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Возьмите flask.
    Ответ написан
    Комментировать
  • Конфигурация ПК для игр подходит для тяжелых вычислительных операций?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Обычно задачи прямо противоположные. Для игрового ПК нужна хорошая графическая карта, а остальное - так себе. Для вычислительного - нужно много ядер, много частоты, много кеша, много памяти... Правда, и много денег тоже.
    Весь вопрос в следующем...
    А что считать-то будем? И как? В параллель (90 процентов задач параллелятся), или последовательно (есть и такие, которые ну никак не параллелить!)?
    Ответ написан
    Комментировать
  • Как обосновать необходимость серверной?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    По порядку
    серверная - это закуточек 1х2м. Все практически впритык. Пыль гуляет.

    Вполне нормальная ситуация для небольшой фирмы.
    1) Уберитесь, облагородьте место, подвяжите провода и хвосты.
    2) Мониторьте температуру (и влажность). Если температура поднимается, выше 80-100С на процессоре - бейте тревогу и выключайте все нафиг ради сохранения данных. Данные по температурным режимам зависят от типа оборудования, смотрите спецификации. Температуру в помещении можно снимать с UPS.
    3) Автоматизируйте отключение серверов по превышению температуры
    Стоит 2 сервера, вскоре поставлю 3-й. маршрутизатор, пару коммутиров стоичных, видеорегистратор. Обслуживать невозможно.

    4) Поставьте открытую стойку. В закрытой стойке температура поползет вверх! Ну и пункт 1 и 2.
    Как бы летом не полыхнуло.

    5) Еще раз про пункты 1 и 2.
    В компании компов под 40. Идет производство. Долгий сбой недопустим.

    6) Надеюсь, про бекапы, резервные копии и политику восстановления слышали (это такой документ на 2-3 страницы, в котором говорится, что делать, если все "сгорело")? Да, бекапы нужно хранить в отдельном помещении и делать их автоматически и регулярно!
    Хочу написать служебку с обоснованием необходимости организации серверной. ....

    7) Чтобы обосновать, нужно из чего-то исходить, пока, без мониторинга, и констатации фактов это не сделать никак. Ну и честно говоря, пока не вижу смысла вообще в организации серверной. Вполне можно обойтись кондиционером и одной стойкой.

    Да, не забываем, что хорошо бы посчитать электрическую нагрузку! Если питание от обыкновенной "офисной" розетки, (которые могут быть и на 10А, а могут быть и на 16А и выше), то как минимум нужно правильно подвести питание - по нагрузкам смотрим спецификации оборудования и добавляем 50%. И полыхает обычно из-за перегрузок по питанию, на неисправном автомате, в розетке и проводке! Сами серверы горят очень тихо, они просто выключаются....
    Вот, решил дополнить. Оптимальная температура (а есть еще и влажность) от 10 до 28C, при влажности 40-60% без выпадения росы. Точку росы сами считайте, вот ссылка на температуру https://www.openxtra.co.uk/kb/recommended-server-r...
    Ответ написан
    Комментировать
  • В какую бд лучше всего записывать много логов сайта?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну, кроме clickhouse еще порекомендую kafka с записью в тот же сликхоус или hbase/hadoop. Причем из кафки данные можно вытащить в любой момент времени и за любой момент времени (ну это как ретеншион настроите). Так что пишите в кафку, а агрегируйте куда бог пошлет, хоть в hbase, хоть в clickhouse, хоть в postgres.
    Ответ написан
    Комментировать
  • Выбор дальнейшего пути развития для студента,что необходимо учить junior java backend developer?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    • Углубиться в Nosql - kafka, streaming conputation, hadoop/hbase/tarantul, elastic search.
    • Углубиться в современные микросервисы - jooby.io, javalin, micronaut (это к вопросу о REST/Websocket)
    • Углубиться в reactor.io/rxjava/akka
    • Углубиться в OSGI (кроме spring, и в дополнение к нему)
    • Обязательно углубиться в kotlin.

    А еще настоятельно взглянуть на clojure и clojurescript.
    Ответ написан
    Комментировать
  • Прокладка витой пары в новом здании. Как правильно?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Все правильно вам сказали.
    Стандарты есть, читаем ГОСТ Р 53246-2008 Информационные технологии (ИТ). ....
    Как раз ОБЯЗАТЕЛЬНО как минимум две розетки
    Все рабочие места должны быть построены на основе как минимум двух телекоммуникационных розеток, обслуживаемых двумя кабелями горизонтальной подсистемы:

    На счет разбиения кабельной подсистемы на несколько коммутационных/телематических шкафов, тоже все правильно. Если хватает длины кабеля (в пределе 100 метров), что на 160 штук легче сделать один коммутационный и один телематический шкаф, тем более, что с учетом расстояния у вас на одну розетку всего 43 метра с учетом спусков, и сократить кабеля тут ни фига не получится. Причем нужно будет от шкафов пускать оптику, и не одно волокно, а 4 минимум (а лучше два кабеля по 4), ее разваривать и занимать отдельные юниты под кроссы. С оптикой проект усложнится.
    Вот если бы было концов 300-1000, то можно бы было о чем-то говорить.
    Ответ написан
    2 комментария
  • Обязательно ли кодить на Java в IDE?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно же не обязательно! Я начинал программировать в mymacs ( сильно урезанный порт emacs года 1995-го). Кв нем нем, кроме скобок ничего не было, интернета тоже не было. Явы тоже не было. Потом появился линукс и «нормальный» emacs. Но небыло списка функций, потом появилась утилита ctags. Потом классная IDE code wariot с подсветкой синтаксиса, шаблонами и прочей херью, ускоряя процесс разработки на порядок. Потом появлась ява, и снова emacs. И вот компания ibm выложила в суровый модемный интернет eclipse, который я качал примерно неделю. Появился рефакторинг, Переход по классам, функциям, автоматическая документация, подстановка функций и методов и т.д.
    И конечно же я могу вернуться к монохромному зеленому монитору, старому редактору, командной строке с make. Но, черт возьми, нахрена тогда эти 30 лет эволюции?!
    Ответ написан
    2 комментария
  • Как организовать кеширование при помощи redis?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, у вас все неправильно! Во первых, у вас НЕТ транзакции и на постгрес и на редис одновременно, и это ключевой момент. Во вторых, всегда все обновления делайте в постгрес с удалением ключа из редиса. Чтение - сначала читаем из редиса, и если там нет, лезем в постгрес и записываем ключ в редис.
    И да, если данные не критичны, типа счетчиков,, корзинок и т.д., то их можно хранить в редис.
    Ответ написан
    3 комментария
  • Организация сети для Ceph кластера?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Для клиентской сети хватит и гигабита. А вот для сети хранилища очень желательно как минимум 10 гигабит. Иначе будут страшные лаги по сети. На счет vlan даже и не думайте! Два независимых адаптера, ну или один на 10гигабит, разделенный на два srio на vlan-ы! У нас кластер вообше на infiniband 56ги, и то иногда пропускной способности не хватает.
    И не жалейте денег на сеть, ее всегда мало! Скйчас за 100килорублей можнл и карточки и коммутатор купить для 10гиг. И оптика не нужна, если все в одной серверной. Да и оптика иногда дешевле выходит, чем медь! Совсем она не дорогая!
    Ответ написан
  • Как получить приемлемую скорость на микротике при тарифе провайдера в 1 гигабит?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Это проблема не роутера (хотя роутеры очень разные бывают), а WiFi. Читаем википедию (пока не прикрыли) и видим, что https://ru.wikipedia.org/wiki/IEEE_802.11n
    Теоретически 802.11n способен обеспечить скорость передачи данных до 600 Мбит/с брутто, применяя передачу данных сразу по четырём антеннам, однако обычно встречаются решения 802.11n с одной антенной и скоростью до 150 Мбит/с.

    А у вас всего две антенны кажется. Упс.. И брутто - это плюс 20% нетто.
    И
    Реальная скорость передачи данных всегда меньше канальной скорости. Для Wi-Fi реальная скорость передачи данных обычно отличается более чем в два раза в меньшую сторону[6].

    Кроме того, существует еще несколько факторов, ограничивающих реальную пропускную способность:

    Канал всегда делится между клиентами;
    Передавая служебный трафик, точка доступа всегда подстраивается под клиента, работающего на минимальной скорости;
    Наличие помех (работающие рядом точки доступа, микроволновые печи, «радио-няни», bluetooth-устройства, радиотелефоны);

    Стоит отметить, что при работе в стандарте 802.11b или при обеспечении совместимого с ним режима существует всего три непересекающихся канала, то есть которые не мешают друг другу (обычно это 1-й, 6-й и 11-й). То есть, если у соседа за стеной работает точка доступа на 1-м канале, а у вас дома на 3-м, то эти точки доступа будут мешать друг другу, тем самым уменьшая скорость передачи данных.

    Ах, да. Еще многое зависит от чистоты эфира, препятствий, затуханий и прочей хрени. Так что хотите качество и скорость - кабель!
    Ответ написан
    2 комментария
  • Как вичетать корень и записать красиво?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не совсеv понятно, чем не нравится результат?
    В питоне: math.sqrt(388) = 19.697715603592208
    В яве: Math.sqrt(388) = 19.697715603592208

    Можно взять остаток от деления (%) на 2 или 4 (и далее), и тогда взять корень от результата деления.
    int number = 388;
    		int tail = number;
    		int mul = 1;
    		if(number % 2 == 0) {
    			mul = 2; tail = number/mul;
    		}
    		if(number % 3 == 0) {
    			mul = 3; tail = number/mul;
    		}
    		if(number % 4 == 0) {
    			mul = 4; tail = number/mul;
    		}
    		if(number % 5 == 0) {
    			mul = 5; tail = number/mul;
    		}
    		if(number % 6 == 0) {
    			mul = 6; tail = number/mul;
    		}
    		if(number % 7 == 0) {
    			mul = 7; tail = number/mul;
    		}
    		if(number % 8 == 0) {
    			mul = 8; tail = number/mul;
    		}
    		if(number % 9 == 0) {
    			mul = 9; tail = number/mul;
    		}
    		
    		System.out.printf("%d = %d√%d = %d * %.20f\n", number, mul, tail, mul, Math.sqrt(tail));

    Результат
    388 = 4√97 = 4 * 9,84885780179610400000

    ХА! Немного оптимизировал!
    int number = 388;
    		int tail = number;
    		int mul = 1;
    		for(int i=2; i<number/2; i++) {
    			if(number % i == 0) {
    				mul = i; tail = number/mul;
    			}
    		}
    		
    		System.out.println(Math.sqrt(tail));
    		System.out.printf("%d = %d√%d = %d * %.20f\n", number, mul, tail, mul, Math.sqrt(tail));

    Результат!
    388 = 97√4 = 97 * 2,00000000000000000000
    Ответ написан
    Комментировать
  • Доступ в сеть посредством VPN?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Настоятельно рекомендую использовать openvpn. Под винду клиентов полно, даже с GUI. Под OSX - thunnelblick. Плюсов огромное количество, начиная от проброса маршрутов, и заканчивая авторизацией, не говоря уж о всевозможных режимах работы как сервера, так и клиента.
    Да, единственный минус - клиент не из коробки.
    Ответ написан
  • Python. Как переподключиться к известной сети wifi через определённый период?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А причем здесь python? И надеюсь, операционка у вас openbsd?!
    Проставьте уж теги нормальные!
    Ответ написан
  • Как использовать мои ArrayList в другом Java классе?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вам стоит почитать про поля класса и их геттеры/сеттеры, конструкторы класса, инициализацию полей класса, их видимость. ( Например здесь - developer.alexanderklimov.ru/android/java/class.php или https://metanit.com/java/tutorial/3.1.php )
    Например можно переделать ваш класс так (это очень на скорую руку, так чтобы было понятней).

    package com.antek.memgen.gui;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Objects {
    
    	public static class ItemsNames {
    
    		private Map<String, List<String>> laptops = new HashMap<>();
    		private Map<String, List<String>> phones = new HashMap<>();
    
    		public ItemsNames() {
    			List<String> dell = new ArrayList<>();
    			List<String> hp = new ArrayList<>();
    			List<String> apple_comps = new ArrayList<>();
    
    			List<String> nokia = new ArrayList<>();
    			List<String> xiaomi = new ArrayList<>();
    			List<String> apple_phones = new ArrayList<>();
    
    			// initialize computers
    			dell.add(0, "DELL Inspiron");
    			dell.add(1, "DELL Latitude");
    			hp.add(0, "HP Pavilion");
    			hp.add(1, "HP_Omen");
    			apple_comps.add(0, "McBook Air 11");
    			apple_comps.add(1, "McBook Air 13");
    
    			// initialize phones
    
    			nokia.add(0, "Nokia 3310");
    			nokia.add(0, "Nokia 5.1");
    			xiaomi.add(0, "Xiaomi redmi note 3 pro");
    			xiaomi.add(1, "Xiaomi Mi 9T Pro");
    			apple_phones.add(0, "Iphone 8S");
    			apple_phones.add(0, "Iphone 11 Pro");
    
    			laptops.put("dell", dell);
    			laptops.put("hp", hp);
    			laptops.put("apple", apple_comps);
    
    			phones.put("nokia", nokia);
    			phones.put("xiaomi", xiaomi);
    			phones.put("apple", apple_phones);
    		}
    
    		public List<String> laptopNames(String brand) {
    			return laptops.get(brand);
    		}
    
    		public List<String> smartPhonesNames(String brand) {
    			return phones.get(brand);
    		}
    
    	}
    
    	public static void main(String[] args) {
    
    		// Simple tests
    
    		ItemsNames items = new ItemsNames();
    
    		items.laptopNames("apple").forEach(System.out::println);
    
    		items.smartPhonesNames("apple").forEach(System.out::println);
    
    	}
    
    }
    Ответ написан
    2 комментария