• Как получить дробную часть числа?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    BigDecimal вас спасет. И да, с даблом такое сплошь и рядом. Пример не в кассу, но показателен.
    Double toBeTruncated = new Double("3.5789055");
    
    Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
        .setScale(3, RoundingMode.HALF_UP)
        .doubleValue();
    Ответ написан
    Комментировать
  • Скорость архивации архива? От чего зависит?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Зависит от частоты процессора,, иногда от количества ядер, от быстродействия памяти. И конечно от алгоритма сжатия, причем «максимальное сжатие» и «максимальное быстродействие» вещи прямо противоположные, максимальное сжатие самое медленное! От диска, его быстродействия, и от количества памяти зависимость очень маленькая, все современные диски справляются замечательно и в несколько потоков, не говоря уж про SSD.
    На сегодня один из самых быстрых lz4 -https://github.com/lz4/lz4/blob/dev/README.md
    Ах да, не все сжимается одинаково хорошо. Например картинки,аудио и видео -файлы уже достаточно хорошо ужаты, в них и так применяются достаточно хорошие алгоритмы компрессии, и дополнительно сжимать их практически бесполезно. Более того, размер после сжатия может и увеличиться!
    Ответ написан
    Комментировать
  • Как зайти на сайт через ipv6 при условии, что он его поддерживает?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    1) проверить, что на клиентской стороне это v6 работает ipv6.google.com
    2) есть куча калькуляторов ip непример ipcalc
    3)обычно выдают подсеть как минимум 64. А проверить диапазон см п 2
    4 ) если нет п 1, то настроить какой нтбудь туннель типа toredo
    Ответ написан
    2 комментария
  • Как на C++ дергать логи из syslog?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Проблема с логами, что они не специфицированы, от слова - совсем. Формат файлов логов разный в зависимости от системы логирования, syslog делает одно, rsyslog делает второе, апач- третье, и т.д. причем еще есть ротация этих логов, которая запускается по крону (обычно).
    Так что боюсь, парсер логов придется писать самому, либо поискать готовую библиотеку на c/c++. На ум библиотек не приходит, но есть программы-собиратели логов типа logstash, которые могут преобразовывать логи к какому-то единому знаменателю и кидать например в базу данных. Так вот из базы данных логи легче всего выдернуть, тем более на C.
    Ответ написан
    3 комментария
  • Почему синтаксическая ошибка?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Скобочки посчитайте в строке с курсором и выше!
    Ответ написан
    Комментировать
  • MacBook Air 2010 для новичка mac?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, полноценно работать не сможете! Либо ставить совсем старую OSX, но будут проблемы с сертификатами. Либо не брать. Да и дорого за такую машинку - в два раза цену скинуть и годится.

    Этот мак используется как печатная машинка, если только систему не урезали по самое "не могу". Но нужно ли себе портить впечатление?
    Ответ написан
    1 комментарий
  • Как реализовать OAuth2 сервер на своем веб-сервере?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Есть несколько библиотек, начиная от apache shiro и заканчивая scribejava. Можно огласить и весь список - https://oauth.net/code/java/
    А уж как прикрутить конкретную либу к вашему приложению - не скажу, код глядеть нужно. Но рекомендую scribejava или Apache Shiro. последняя посложнее, так как работает через Pac4j
    Ответ написан
    Комментировать
  • Что является сервером приложений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не знаю, почему все ругаются на диаграмму. Вполне традиционная. Просто сервера приложений обычно предоставляют кучу "коннекторов", одним из них может являться и http.

    В вашем случае tomcat + spring являются и web-сервером и сервером приложений. Или если сказать по другому. Tomcat - контейнер для web-приложений, а spring - приложение для web. Томсат - web-сервер, Spring - web-приложение. В один Tomcat можно упихнуть десятка три-четыре web-приложений на Spring.
    Ответ написан
    6 комментариев
  • Каковы минимальные требования к "железу" для приложения Tomcat/Pure Servlets/MySQL?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Кот Том отжирает около 20-60 мегов памяти. Мускул - примерно также. (но конечно же есть варианты). Вместо tomcat можно взять Jetty - ест гораздо меньше - мега 2 в минимуме. В принципе, если не делать мемориликов и утечек памяти, то любой хостинг начального уровня на 1 CPU и 512Mb - за глаза, даже с кешированием, гусарами и куртизанками.
    А все остальное: производительность, rps и все остальное - зависит только от вашего приложения, кеширования, архитектуры, работы с базой и данными. Как пример linux.org.ru , сайт с гигантской аудиторией. Вот что они о себе пишут - https://www.linux.org.ru/about (см. Софт и Сервер).
    Ответ написан
    Комментировать
  • Когда сажусь за рабочее место и притрагиваюсь к железу - бьёт статикой, как избежать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Извиняюсь (для lonelymyp ) , заземление совсем не чушь! Но одним им конечно же не всегда отделаться. Обувь, одежда, стулья - основные собиратели статики. А вот антистатический линолеум с заземлением - очень даже помогает. Но его мало просто положить (хотя эффект будет), его тоже нужно заземлять!
    На самом деле, при производстве электроники, есть и халаты, и тапочки, и стулья антистатические, плюс на столы коврики антистатические с браслетами (тоже к земле через коврик). Покрытие пола, либо наливной с сеткой + заземление, либо линолеум + сетка + заземление.

    PS. Тут такое дело, друг фирму держит, которая, в том числе занимается и чистыми комнатами с антистатической защитой. Я иногда у него на подрядах по сетям и коммуникациям, так что очень даже в курсе.
    Ответ написан
    Комментировать
  • Как запретить доступ к только к главной странице сайта в файле host?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Через файл hosts - ниак.
    Ответ написан
    Комментировать
  • Каким оборудованием объединить клиентов в одну сеть по VPN, протокол L2TP (без IPSec)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    На мой взгляд, намучившись в свое время со всякими VPN, лучшего решения, чем openVPN не найти! Работает и на винде, и на OSX, и на куче роутеров, с фирменными и кастомными прошивками. Сервер со стареньким процессором типа Core i3 держит 100 клиентов спокойно + плюс три виртуалки (телефонию, базу и web-камеры), но это под линукс.

    В микротике и ubiq есть клиент/сервер openvpn точно, ну и во всех линуксовых. Есть и в андроиде :-)

    PS. В данный момент наблюдаю порядка 40-45 клиентов, но они у нас не постоянные, то потухнут, то погаснут.
    Ответ написан
  • Как в Gson добавить кастомный маппер для типа?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Обычно так. Не работает? Тогда по конкретнее бы...
    Gson parser = new Gson(); // create json parser
    Type type = new TypeToken<Map<String, MyData[]>>(){}.getType(); // create custom type
    Map<String, MyData[]> data = parser.fromJson(json, type); // parse data to
    Ответ написан
    Комментировать
  • Как из rtmp получить аудио mp3?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    С помощью исключительно java не знаю. Но есть обертка для gstreamer - https://github.com/gstreamer-java/gst1-java-core. Вот из него-то и можно получить любую дорожку практически из любых контейнеров. Правда, как там дела с поддержкой rtmp (он ведь проприетарный), давно не проверял.
    Плагин есть, но в "ненадежных" - https://gstreamer.freedesktop.org/documentation/rt...

    С gstreamer-java сам работаю... так что пишите, если что...
    Если что - примеры здесь - https://github.com/gstreamer-java/gst1-java-examples
    Ответ написан
    4 комментария
  • Программа виртуализации для MAC?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) Есть VmWare Fusion - это как раз VmWare для мака, сам на такой сижу.
    2) VirtualBox тоже есть официальный для мака, причем бесплатный, иногда пользую по работе, но очень редко.
    3) Есть еще Parallels Desktop - перешел с него на пункт 1), так как стали его продавать по подписке, в результате первый дешевле.
    Во всех трех можно установить и линукс, и винду, и даже OSX.
    Ответ написан
    Комментировать
  • Что использовать для оповещений о новых сообщениях по email?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Мне кажется здесь нужна колоночная база данных типа clickhouse, tarantool, hbase или подобных. В ней делаются две таблицы с подписками пользователя и с топиками подписок пользователей. И нужна какая-то шина сообщений типа kafka. Все изменения сыпятся в кафку, из нее подхватываются и по выборке подписчиков из строки топика заносятся в строки соответствующих пользователей. При заходе пользователь считывает свою запись с установленными нотификациями, которые затем и показываются.
    Ответ написан
    Комментировать
  • FTP-клиент под macOS для правки текстовых файлов?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вроде бы как atom поддерживает remote-ftp - https://atom.io/packages/remote-ftp
    Eclipse точно поддерживает - плагин Remote System Explorer End-User Runtime
    Idea поддерживает тоже.
    И есть еще такая штука, как jEdit - плагин здесь plugins.jedit.org/plugindoc/FTP

    В вашем случае наверное Atom самое то.
    Но есть еще Emacs (мой фаворит) и Vim, не забывайте!
    Ответ написан
    Комментировать
  • Как правильно задать структуру класса для json объекта?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот, с помощью Gson все парсится хорошо.

    PS. вместо lombook.Data просто создайте геттеры/сеттеры у внутреннего класса. Мне так удобнее.

    package com.mycompany;
    
    import java.lang.reflect.Type;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    
    public class ReTest {
    	
    	@lombok.Data
    	public static class MyData {
    		private String name;
    		private String lastName;
    	}
    	
    	public static void main(String[] args) {
    		
    		String  json = "{\n" + 
    				"   \"12:30\": [\n" + 
    				"     {\n" + 
    				"         name: \"someName\",\n" + 
    				"         lastName: \"someLastName\"\n" + 
    				"      },\n" + 
    				"      {\n" + 
    				"         name: \"someName2\",\n" + 
    				"         lastName: \"someLastName2\"\n" + 
    				"      }\n" + 
    				"   ],\n" + 
    				"   \"13:15\": [\n" + 
    				"       {\n" + 
    				"         name: \"someName3\",\n" + 
    				"         lastName: \"someLastName3\"\n" + 
    				"      },\n" + 
    				"      {\n" + 
    				"         name: \"someName4\",\n" + 
    				"         lastName: \"someLastName4\"\n" + 
    				"      }\n" + 
    				"   ]\n" + 
    				"}";
    		
    		Gson parser = new Gson(); // create json parser
    		Type type = new TypeToken<Map<String, MyData[]>>(){}.getType(); // create custom type
    		Map<String, MyData[]> data = parser.fromJson(json, type); // parse data to 
     		
    		for( Entry<String, MyData[]> d: data.entrySet()) {
    			System.out.printf("%s\n", d.getKey());
    
    			for(MyData e: d.getValue()) {
    				System.out.printf("       %s\n", e);
    			}
    			System.out.println();
    		}
    	}
    }

    И вывод.
    12:30
           ReTest.MyData(name=someName, lastName=someLastName)
           ReTest.MyData(name=someName2, lastName=someLastName2)
    
    13:15
           ReTest.MyData(name=someName3, lastName=someLastName3)
           ReTest.MyData(name=someName4, lastName=someLastName4)
    Ответ написан
    1 комментарий
  • Как программно отправить файл?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вам нужны клиентские http библиотеки. И есть их у нас, okhttp или httpclient hc.apache.org. И даже встроенный в java httpclient api. Я предпочитаю первые два, нл их есть много еще разных всяких.
    Ответ написан
    Комментировать
  • Зачем нужны анонимные классы в java и как к ним обратиться?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Это у вас не анонимный класс, а внутренний класс. Обращаться к нему можно из любого места внешнего класса, ну и из самого себя.
    А анонимный класс, как следует из названия, имени не имеет. И создается например из интерфейса, реализуя его методы на месте.

    Внутренние классы могут быть закрытыми (private/protected) по умолчанию и видны будут только из внешнего класса, либо быть публичными (public static) и быть доступны всему приложению. Обычно используются, чтобы не раздувать структуру файлов-классов и для внутреннего применения в качестве временных хранилищ и оберток.

    Анонимный же класс создается на месте использования и служит для применения в конкретном месте приложения. В примере ниже мы в переменную threadзаписываем инcтанс нового класса, наследуемого от Thread с перегруженным методом run

    class MyThread  
    { 
        public static void main(String[] args) 
        { 
             // Создаем расширение стандартного класса Thread с переопределением метода run()
             Thread thread = new Thread()
            { 
                public void run() 
                { 
                    System.out.println("Child Thread"); 
                } 
            }; 
            thread.start(); 
            System.out.println("Main Thread"); 
        } 
    }
    Ответ написан
    Комментировать