• Как настроить ntp для ceph?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ceph не так уж и критичен ко времени, у нас бывает разбежка до 5 минут! А сделать лучше так, запустите один дополнительный ntp, и с нено синхронизирутесь.
    Другими словами, vt-gate -> ntp на одной из нод -> остальные ntp + vt-gate
    Только приоритеты правильные выставляйте!!!
    Ответ написан
  • C++ путь файла?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вообще -то хорошо прятать такие вещи в resources, и загружать их относительно через getResource()
    Вот здесь подробно написано - https://skipy-ru.livejournal.com/5343.html
    Ну и текущий каталог можно получить так
    Path currentRelativePath = Paths.get("");
    String s = currentRelativePath.toAbsolutePath().toString();
    System.out.println("Current relative path is: " + s);

    Или попробовать так
    System.getProperty("user.dir")
    И javatutorialhq.com/java/example-source-code/io/fil...
    Ответ написан
    Комментировать
  • Как получить доступ к базе данных vesta?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Подозреваю, что базы данных никакой нет (она конечно же есть, но вам в нее не нужно), а лимиты реализованы через квотирование дискового пространства.
    Вот здесь почитайте - https://www.opennet.ru/base/sys/linux_fs_quota.txt.html
    А посмотреть можно и через консоль repquota -ua
    Ответ написан
    Комментировать
  • Как прочитать данные из .DBX файла?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Попробуйте вот это - https://github.com/Yasas/xbase4j
    Ответ написан
    Комментировать
  • Как читать 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
    Ответ написан
    Комментировать