Задать вопрос
  • Как из 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"); 
        } 
    }
    Ответ написан
    Комментировать
  • Маркировка x86 это номенклатура а не физическая величина?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    X86 это система команд 32-х оазрядных процессоров Интел. X64 система команд, изначально придуманная компанией AMD, и потом лицензированная Интел. В результате мы можем встретить и описание amd64. Но все это относится только к процессорам интел и amd, в привычном нам понимании. Есть и spark64, и mips64 и даже arm64 и ppc64, которые никакого отношения к ним не имеют.
    Ответ написан
    Комментировать
  • Разряд и бит это одно и тоже?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, одно и тоже. Просто одно слово интернациональное - бит, второе нет. С другой стороны, разряд определяет положение бита в физическом регистре. Словосочетание «бит в 7-м разряде» может означать, в зависимости от архитектуры (интел или моторола) совсем разные числа.
    Ответ написан
    Комментировать
  • 64 битный процессор работает только с 64 битами и не меньше?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Технически, процессор в 64 бита исполняет только 64-разрядные команды. Но в некоторых процессорах есть блок трансляции команд из 32 бит в 64, который можно включить программно. Так вот, операционная система по заголовку файла определяет исполняемый тип программы, и если файл в 32 битной адресации, взводит разрешает использовать блок трансляции для данной программы.
    Конечно же все гораздо сложнее, и для исполнения 32 программ нужны и библиотеки в формате 32 бит, и нужно знать как работает транслятор памяти, и блоки защиты адресов, и планировщик процессов и куча всего прочего, типа выборки адресов из памяти. Но собственно, это к делу не относится.
    Ответ написан
  • Как сравнивать None Python и NULL SQLite?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А все потому, что нужно использовать prepared statement! Подозреваю, что мускул zetcode.com/db/mysqlpython
    Где-то посередине..
    Ответ написан
  • Как лучше использовать Django + несколько SSH подключений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Запускайте на каждое ssh-соединение по отдельному потоку. Потоки синхронизируйте через внешнюю шину сообщений, например можно ее реализовать через redis, просто и дешево.
    Ответ написан
    Комментировать
  • Как на macOS создать виртуальный порт с переадресацией данных на IP?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Можно использовать netcat (nc). Кажется эта утилита есть по умолчанию. Если нет, оставить из brew. Но она консольная.
    Ответ написан
    Комментировать
  • Вопрос по Java - swing?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А почему бы не взять javafx? Там можно вполне использовать CSS для обрамления label. Ну и с событиями, как мне кажется, там полегче.
    Вообще-то есть предложение, если на javafx, то сделать (нарисовать) клавиатуру в SVG, и показываать ее либо через webview, либо через SVGPath, либо вообще рендерить через batic. Ну и сделать массив с координатами каждой кнопки!
    Ответ написан
  • Увеличить скорость сетевого соединения до 1Гб/с?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) Чтобы сделать бондинг, нужен УПРАВЛЯЕМЫЙ коммутатор. Ваш не годится. Точнее - все же лучше управляемый с поддержкой 802.3ad LACP
    2) Скорость в 100Мб ненормально, но весь вопрос как и чем измеряете. Рекомендую освоить iperf и потестить скорость с коммутатором и без (прямым соединением двух адаптеров).
    3) Есть утилита ethtool, через нее можно посмотреть на какой скорости подключился адаптер к коммутатору. Почитать как можно например здесь - lexpr.ru/ethtool
    4) Дело может быть и в полохо или неправильно обжатых кабелях. Как минимум см пункт 3.
    5) Про virtio Уже Вам написали.
    6) Да, в виртуалку можно прокинуть полностью физический адаптер (и даже из одного адаптера сделать несколько виртуальных!). Для этого сервер должен уметь VT-d/IOMMU (включается в BIOS), а адаптеры - SR-IOV/VFIO.
    Ответ написан
    Комментировать
  • Как реализовать планировщик выполнения скрипта на Python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Для простых случаев - python-rq, для тяжелых - celery.
    Ответ написан
    Комментировать
  • Как и чем правильно чистить контакты SD-карт, чтоб их не повредить?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) да ластик помогает
    2) нет часто чистить не нужно. Нужно чистить, когда явные признаки загрязнения и когда она не читается, перед тем как выкинуть
    3) это из-за устройства разъема считывателя, нет не изнашивает, абсолютно.
    Ответ написан
    Комментировать
  • При запуске ubuntu открывается консоль, что делать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вы наверное поставили серверный вариант системы, без графического интерфейса. Если так и задумано, то что вы хотели делать?! Если не так, то проще перставить систему в десктопной версии.
    Но можно выполнить следующую команду и допоставить desktop sudo tasksel Из появившегося списка. Да, команда попросит ввести пароль повторно.
    Ответ написан
    1 комментарий
  • Какой сервер хранения данных выбрать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Рекомендую посмотреть в сторону распределенных хранилищ, в частности - собрать CEPH-кластер. Серверов у вас много. Вы их свяжете между собой 10G сетью, поставите iSCSI на раздачу, а в некоторых случаях, если клиенты будут под linux, то и напрямую подключите. Будет у вас распределенное хранилище на все диски сразу. Можно будет сделать и кеширование на SSD, и прозрачное добавление дисковых ресурсов, и прозрачное восстановление и кучу всего хорошего.
    Есть, правда, небольшие требования к серверам, по гигабайту RAM на терабайт диска. Если втыкаете 24 диска по терабайту, то ставите 24 гига памяти. Но это не проблема. При этом вам совсем будут не нужны RAID-карты, достаточно обыкновенных HBA и экстендеров. За каждым диском отдельно будет следить и администрировать сам CEPH. Он же будет делать дублирование и распределение данных по дискам и серверам кластера. Производительность будет заведомо лучше, чем при записи на отдельный сервер, так как запись.чтение происходит параллельно на несколько серверов кластера.
    Дополнительно получите снапшоты, гибкость управления и очень хорошую отказоустойчивость.
    Ответ написан
    Комментировать
  • Вопрос по Eclipse IDE, не компилируется?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А что Вы хотите от данного класса? У него нет метода main, соответственно как приложение его запустить нельзя. Он не наследует никаких классов, и тоже не будет никак запущен.
    Другими словами - данный класс нужно запускать к каком-то окружении. Вариантов два - сделать метод main public static void main(String[] args) { .... }, или запустить его из другого класса, который будет импортировать и сoздавать объект вашего Person.
    Ну, можно написать unit-test, в рамках другого тест-класса.
    Ответ написан