Задать вопрос
  • Как читать man в более приятном виде (не считая доки на официальных сайтах, если они есть вообще)?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    А чо никто не назвал man2html?
    С ним кажется нще идет cgi-скрипт, и получите готовый man-сервер.
    Ответ написан
    Комментировать
  • Как подружить C# и Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вариантов простых несколько, но все они завязаны на сеть.
    - поднять на шарпе простой http сервер, а в консольных программах к нему коннектиться и гонять туда-сюда json
    - использовать чистые сокеты, что чревато изобретение собственного протокола, либо гонять по нит что-то типа protobuf
    - использовать библиотеку zeromq, и через нее гонять сообщения
    Мне наиболее симпатичны первый и третий варианты.
    Ответ написан
    Комментировать
  • Как эффективно сгруппировать строки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как ни странно, итерировать группы совсем не обязательно!
    1) группа у вас состоит из одного элемента. В вашем примере F и X - две группы, в которые нужно положить номера строк.
    2) за один проход бежим по строкам и добавляем их в соответствующие группы термов, которые держим в hashtable, где ключом у нас сам терм, а значением - массив из номеров строк.
    3) после того, как заполнили хеш, пробегаемся по нему один раз и смотрим, у кого длина массива больше единицы, это и будут исходные группы.

    Если нам нужно дополнительно сформировать группы из двух-трех термов, то делает все тоже самое, но ключом ставим treeset из этих элементов.

    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map.Entry;
    import java.util.TreeSet;
    
    public class Groups {
    
    	public static void main(String[] args) {
    		String[] myData = {
    				"F;I;J", 
    				"F;X;A",
    				"X;D;P",
    
    				"A;B;C",
    				"X;Y;Z",
    				"J;A;Z",
    				"U;V;W",
    				"E;E;E",
    				"D;F;G",
    		};
    		
    		HashMap<String, TreeSet<Integer>> groups = new HashMap<String, TreeSet<Integer>>();
    		
    		for(int line=0; line< myData.length; line++ ) { // бежим по строкам
    			
    			List<String> terms = Arrays.asList(myData[line].split(";")); // разбиваем на термы
    			
    			for(String term: terms) { // пробегаем по термам
    				TreeSet<Integer> group = groups.get(term); // выдергиваем группу
    				
    				if(group == null) { // если группы нет
    					group = new TreeSet<Integer>();
    					groups.put(term, group);
    				}
    				group.add(line); // добваляем строку
    			}
    		}
    		
    		// выводим результат
    		for(Entry<String, TreeSet<Integer>> group: groups.entrySet()) {
    			if(group.getValue().size() >1)
    				System.out.printf("%s - %s\n", group.getKey().toString(), group.getValue().toString());
    		}
    	}
    }


    И результат

    A - [1, 3, 5]
    D - [2, 8]
    F - [0, 1, 8]
    J - [0, 5]
    X - [1, 2, 4]
    Z - [4, 5]
    Ответ написан
    33 комментария
  • Какой СХД выбрать для виртуализации?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ух, вот зачем вам вот это все? Ставите CEPH на нескольких серверах и получаете щазтие. В кластере CEPH сеть делаете на 10Gb внутри и наружу.
    Итого, на ваш объем я бы сделал так:
    5-6 серверов по 8-12 дисков на SATA 4 Тб + SSD, с памятью по 64Гб, 2x CPU Xeon E5-2620v4.
    Примерная цена конфигурации с дисками (8x SATA 4Тб + 4x SSD 1Tb) ~ 630Кр
    Плюс коммутатор 10Гб ~ 100Кр

    Всего: 3250 килорублей.

    При этом получите очень функциональное хранилище для виртуалок! Кеширование на SSD и неубиенную систему! Да, расширяться - докупкой новых серверов в кластер (!). Ну и насчет VmWare, я бы посмотрел в сторону KVM.

    ЗЫ. Систему считал на основе "Сервер Supermicro SSG-6028R-E1CR12T"

    PPS. У нас примерно тоже самое, общий объем ceph ~ 120 терабайт.
    Ответ написан
    7 комментариев
  • Почему не могу подключится к SSH серверу на debian?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    SSH в дебиан по умолчанию не ставится. Установите принудительно - "apt install ssh"
    Ну и проверьте, что он крутится - "systemctl status ssh" и "ps ax | grep ssh"
    Ответ написан
  • Какой ПК собрать под Linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    У меня макбук про, я туда поставил vmware fusion и запускаю любые дистрибутивы. Рабочие серверы арендую в облаке, например на digital ocean и в mail.ru. На работе кокло 100 клинетов intel nuc6 с целеронами на борту, с загрузкой по сети, коннектятся к кластеру линуксовых машин. Везде debian8/9. Проблем нигде с производительностью нет!
    Ответ написан
  • Может ли человек навредить мне "перехватом" пакетов?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    1) некий человек понтует
    2) ssh взломать - задача нетривиальная
    3) просто забейте
    4) намекните, а хорошо ли он выучил "тапы" УК?
    Ответ написан
    2 комментария
  • Для чего используется Java в современном вебе?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот я, как раз сбежал обратно на яву после 8 лет программирования на python!
    И несказанно этому доволен - java8 стала очень и очень приятная, ну а бонусом прирост в скорости на моем приложении - 200х!
    И так, как минимум рекомендую для web посмотреть jooby.org, sparkjava.org и конечно же spring boot.
    На jooby как раз пишем маркет, очень весело и современно.
    Да, на котлин пока не смотрел.
    Ответ написан
    2 комментария
  • Как посчитать разницу между двумя данными в градусах значениями географической долготы в метрах?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Координаты, это условные точки широты и долготы на поверхности шара. К метрам и километрам они имеют отношение только при пересчете на поверхность шара. Считают обычно по формуле гаверсинусов. Подробно описано здесь - gis-lab.info/qa/great-circles.html
    На больших расстояниях может давать погрешность в 20-30 километров - расстояние от Москвы до Вашингтона например.
    Для более точных расчетов используют модель геоида - упрощенной модели Земли, но и формулы там совершенно другие.

    PS. Еще раз перечитал вопрос, и вот что хочу сказать...
    Долгота (меридиан) - окружность, проходящая через два полюса. Вторая долгота пересекает первую в точках полюсов, где расстояние между ними будет равно Нулю! Другими словами, расстояние между двумя долготами (двумя меридианами) сильно завит от широты (параллели), на которой измерять это расстояние .
    Ответ написан
    Комментировать
  • Правильно ли я работаю с сессиями и транзакциями Hibernate?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ух, сколько кода... Рекомендую сесси. хибернейта класть в servlet-filter, здесь ее открывать, и тут же ее закрывать.
    Стек вызовов у вас будет следующий
    filter ->
       -> servler
           hibenate
       <- servlet
    filter

    Примерно так - https://gist.github.com/mccxj/146009
    Ответ написан
    1 комментарий
  • Можно ли обойтись без предварительного создания пользователя при авторизации через tacacs+?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Другими словами, вам нужно создавать home-каталог, если прошла авторизация? А авторизация, как я понимаю, у вас проходит?
    Для этого в pam нужно подключить www.linux-pam.org/Linux-PAM-html/sag-pam_mkhomedir.html
    Но, есть одно но - этот модуль не может создавать вложенные подкаталоги.
    Например, если у пользователя каталог типа /mount/homes/office1/leah , то нужно создать /mount/homes/office1, а домашний каталог создастся автоматически.
    Ответ написан
    Комментировать
  • Не включается dhcp сервер линукс, как исправить?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Скорее всего у вас в конфиге dhcp указан нее тот диапазон адресов, что имеется у сетевой карты. Ну или где-то в конфиге напортачили.
    Ответ написан
    Комментировать
  • Infiniband по двум портам?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    У вас opensm запущен на одном из хостов? По идее должно работать.
    Ответ написан
  • Наиболее простой и быстрый способ проксировать запрос?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    простым маскарадингом проблему не решить разве?
    на этой машине устанавливает firewall, на интерфейс вешаете маскарадинг IP-адресов, в настройках openvpn сервера прописываете маршрут к этому хосту через ваш VPN.
    push "route 1.2.3.4 255.255.255.255"
    Ответ написан
    7 комментариев
  • Что дает Java Spring?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вся и идея spring и ему подобных в технологиях DI и IoC.
    Первая технология DI - Dependency Injection - внедрение зависимостей. Смысл следующий, пусть у нас есть класс, который зависит от другого класса, тогда контейнер автоматически найдет все зависимости и сам проинициализирует нужный класс. Пример: пусть у нас есть интерфейс "Фрукт", класс "Яблоко", интерфейс "Паразит", класс "Червяк". В класса "Яблоко" указываем в одном из методов или конструкторе зависимость от интерфейса "Паразит". Теперь положим в контейнер классы "Червяк" и "Яблоко", и попросим контейнер создать дать нам инстанс класса "Яблоко".
    Контейнер выполнит следующие действия:
    - посмотрит, что без класса, реализующего интерфейс "Паразит", он не может создать "Яблоко".
    - посмотрит на зарегистрированные классы, не реализует ли кто интерфейс "Паразит" и обнаружит класс "Червяк"
    - создаст инстанс класса "Червяк"
    - создаст инстанс класса "Яблоко" и передаст ему инстанс класса "Червяк"
    - отдаст созданный инстанс "Яблоко" нам.

    Теперь мы можем создать класс "Ева" с зависимостью от интерфейса "Фрукт", положить его в контейнер, и положить в контейнер класс "Адам" с зависимостью от "Ева" и попросить создать нам инстанс класса "Адам" :-)
    MutablePicoContainer pico = new DefaultPicoContainer();
    pico.addComponent(Fruit.class);
    pico.addComponent(Worm.class);
    pico.addComponent(Eve.class);
    pico.addComponent(Adam.class);
    .....
    Adam adam = pico.getComponent(Adam.class);


    Вторая технология IoC - Inversion of Control - контроль управления - это как раз и есть одна из реализаций принципа DI, когда внедрение зависимостей происходит через посредника - фреймворк.

    Легче всего разобраться с этим (а уж потом переходить к spring) - поработать с простыми контейнерами типа picocontainer , nanocontainer и guice.
    - picocontainer.com/introduction.html
    - https://github.com/google/guice
    Ответ написан
    Комментировать
  • На каком контроллере можно реализовать HID устройство (при нулевом опыте общения с аппаратной частью:)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Например на STM32. Практически любая отладочная плата подойдет, например STM32F4DISCOVERY. Кстати, там демо-прошивка как раз этулирует компьютерную мышку и мыргает диодиками.
    www.st.com/en/evaluation-tools/stm32f4discovery.html
    Ответ написан
    Комментировать
  • Придумать хорошее тестовое для JUN front VUE?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Я даю такое простое задание. Делаете список фильмов, актеров с поиском, данные берете через ajax от swapi.co. Все это с серверным рендерингом. И пагинацией. Реально, задание на час максимум. А уж имплементация вообще на вкус испытуемого. Хочешь бутстрап подключаете, хочешь роутеры прикручивайте. Но если не владеете, то реализовать фиг получится.
    Ответ написан
    9 комментариев
  • Java: Как узнать продолжительность видеофайла?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как уже предложил в соседней ветке, используйте ffmpeg -i и парсите его вывод. Есть также библиотека https://github.com/bramp/ffmpeg-cli-wrapper для того же самого и https://github.com/kokorin/Jaffree

    Увы, фреймворк JMF, а также все альтернативы (xuggle и т.д.), как-то не особо пошли у java-сообщества. Обычно всю работу с бедиа делают на других языках, используя некие сервисы для связи явы с нужным функционалом :-(

    Буду приятно удивлен и непременно попользую, если кто подскажет вменяемую и развивающуюся альтернативу для медиа на яве.
    Ответ написан
    Комментировать
  • Spring: Как организовать чтоб объект из БД был в единственном экземпляре?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, в общем все правильно понимаете. За исключением последнего - записи, когда сущность изменилась. Здесь таки требуется сказать "менеджеру" явно, чтобы он скинул сущность в базу данных, если она изменилась. Это сделано во имя безопасности данных, когда мы изменили сущность, и "менеджер" должен знать, что данные можно уже скинуть, и они непротиворечивые.
    Ответ написан
    Комментировать
  • Что есть кто (unix, linux, ubuntu, debian, kali)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Любая операционная система состоит из двух частей - ядро и окружение.
    Ядро понятное дело, это системные вызовы, работа с аппаратурой и процессами.
    Окружение - это то, с чем взаимодействует пользователь, набор утилит, программ и системы запуска.
    Как можно догадаться, на разные ядра можно прикручивать разное окружение. Состав ядра и окружения задает дистрибутив - набор из ядра и окруждения.
    Так вот, версии UNIX и отличаются именно этими наборами, есть дистрибутивы классических юникс-систем, типа BSD (openbsd, freebsd, solaris ...). Есть дистрибутивы Linux, отличающиеся в основном окружением, имея одно и тоже ядро linux.

    Теперь поговорим про окружение. В состав практически каждого окружения входит такая вещь, как пакетный менеджер., через который происходит установка и развертывание самого Окружения. Вот по типу пакетных менеджеров и отличаются обычно дистрибутивы linux. Есть debian-подобные подобные дистрибутивы (dpkg), есть redhat-подобные (rpm), есть альтернативные (pacman, yast, make world).

    В общем, все линуксы имеют в своем составе ядро linux + какой-то из пакетных менеджеров + систему запуска типа init/systemd/upstart + набор программ на выбор основателей дистрибутива

    Все юниксы имеют одно из ядер unix + все остальное тоже самое, но своё!

    Ну и вся история юникс красиво описана в https://ru.wikipedia.org/wiki/UNIX
    Ответ написан
    Комментировать