• Выдает ошибку потока, при применении tab.getId().equals(). Кто подскажет в чем проблема?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    1) напрягает "Exception in thread "Thread-4" java.lang.NullPointerException", часом не из другого ли потока все работает?
    2) Я так предполагаю что (Response response) летит из друго потока? Случаем не подтирается ли к моменту проверки String id?
    3) Точно ли существет Tab tab = tabPane.getTabs().get(i)?

    Рекомендации
    - самое, вот самое САМОЕ, важное, любые операции с ui проводить ТОЛЬКО в потоке javafx.
    - просто tab.getId() не вызывает npe? На всякий случай почитай как работает а лучше глянь исходники\доки, возможно что если id не установлен то вернется null а у null нет метода equals и отсюда npe.
    -возьми в руки дебаггер, поставь бряк на нужную строку и пошагово смотри что в какой переменной лежит.
    - очень критичный момент, не делай кашу в виде приема-обработки-отрисовки в одном месте, это какраз рождает проблемы с потоками. Подсказка, возьми коллекцию которая может многопоток, к примеру сетевой поток получил пакет и закинул ее в коллекцию после чего работает дальше, из этой коллекции 2й поток взял пакет и обрабатывает и по результату уже ,к примеру, отвечает обратно клиенту или отправляет обработанные данные в еще одну коллекцию из которой эти данные подхватит поток javafxui и отрисует. Т.е. сетевой поток получил и положил в коллекцию вообще не думая что там, зачем и куда. Поток бизнеслогики уже переваривает эти данные и решает что куда и как, ui поток не делает собственно ничего а только отрисовывает новые данные.

    На самом деле вангую что накосячил с потоками и отсюда такие приколы.
    Ответ написан
    1 комментарий
  • Samsung officeserv 7400 или Asterisk(elastix)?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Не дергаться, самец намного более безпроблемный в плане стабильности. Касательно voip то проще поднять астера как 2ю АТС именно для тех кому будет нужна crm, это к примеру call center.
    Дальше, эластикс мертв, тот что есть сейчас уже не на астериске а на основе 3сх и лицензии стоят дорого.
    Ответ написан
    4 комментария
  • Развеете мои стереотипы по ubuntu, linux mint?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Развеять или подтвердить не сможет абсолютно никто кроме Вас самих. Нужно попробовать самому, причем попробовать попользоваться каждой из систем хотябы с месяц, после чего уже будет представление достоинств и недостатков каждой системы.

    Сугубо на мой взгляд и опыт могу сказать что :
    - самая простая хоть и считается убунта но это только потому что у нее самое большое число мануалов и обсуждений на форумах.
    - opensuse намного, очень намного дружественнее убунты для пользователя т.к., для совсем новичка, в ней можно полностью игнорировать консоль с ручной правкой конфигов в отличии от той же убунты. Все чего так нехватает увидеть в gui настройках абсолютно любого другого диста тут есть. И опять же на мой взгляд для тех кто переходит с винды тут будет почти как дома. Надо в графике понастраивать фаирвол, пожалуйста, захотелось веб сервер поднять не вникая в конфиги, запросто, а может в домен завести, да пожалуйста всего пара кликов мышью.
    - debian\fedora\centos как правило этакая золотая середина для большинства тех кто уже понимает устройство линукс систем как и недостатки других дистрибутивов
    - bsd* системы хороши уже для тех кто имеет очень глубокое понимание всего происходящего и четко представляет конечную цель которую нужно реализовать. К примеру нужен шлюз на замену роутера в организации, позволить купить сервер нет возможности но есть вот такой скромный старичек свободный, значит накатываем на него бздю а в нее dhcp\dns сервер, единожды настраиваем и получаем стабильную работу нового шлюза который можно не трогать долгие годы и в котором нет абсолютно ничего лишнего и все ресурсы уходят именно на решение поставленной задачи а не левых чаще всего ненужных демонов без которых на обычном linux дистре врядли что то заработает.
    Ответ написан
    Комментировать
  • Как объединить две сети?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    - Если комутаторы управляемые:
    1) Соединить их шнурком
    2) На портах которые сцепляют коммутаторы прописать vlan
    3) На серверах прописать vlan до каждого коммутатора
    4) На серверах прописать статические роуты до подсетей через эти vlan
    5) Вероятно поправить правила iptables
    6) Вероятно поколдовать с dnsmasq связав их между серверами чтобы клиенты в обоих подсетях резолвили имена машин соседней подсети
    Ответ написан
  • Настройка интернета со скачиванием драйвера для интернета без интернета?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Варианты решений:
    - смотришь зависимости и скачиваешь их. Тут придется покопаться и глянуть зависимости к примеру внутри пакета или вот так https://debian.pkgs.org/9/debian-main-i386/pppoeco...
    - поднять в виртуалке убунту, поставить пакет, взять нужное из кэша
    - поставить систему, включть т.д. на андроиде через кабель и поставить все что нужно. (если телефон подключен к wifi то по кабелю инет будет раздаваться не через сотового оператора)
    - скачать фуллдвд образы и ставить что угодно с них.
    - поставить любой самый дешманский роутер и настроить на нем подключение к инету не паря себе мозги настройкой pppoe на линуксах особенно без знаний самого линукса.

    В целом убунта вообще ниразу не хороший выбор для старого компа\железа. Надо смотреть в сторону puppy и его производных, за одно таким выбором сразу и нужные пакеты подкинешь. Другой вариант какой нибудь tinycorelinux. В общем имеет смысл сначала пошарить варианты которые именно изначально сильно облегчены, чаще всего в них и софт идет сразу самодостаточным паком который просто подкидывается в систему и также легко сносится по необходиомсти, а вот убунта\лубунта это пытаться впихнуть слона в запорожец.
    Ответ написан
  • Как "прочувствовать" рекурсию?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    У меня точно такаяже проблема была в свое время, тоже не понимал до конца, в итоге понятие полностью пришло когда сделал простенький метод рекурсивного рыскания по файлам.
    Пример алгоритма:
    функция_поиска( url ){
          если (url.файл()) тогда *делаем нужное к примеру смотрим расширение или имя*
          иначе цикл_перебора_содержимого_каталога вызов функция_поиска( url )

    Лично я въехал с таких задач в рекурсию.

    Еще и сразу, за static методы бьют по рукам а бывает и по голове. Лучше сразу учитесь их избегать и использовать только для финализированных констант.
    Ответ написан
    2 комментария
  • Как вывести HashMap в окно JFrame?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Самый тупой вариант это обвернуть answerMap своими хотелками, к примеру методы put и remove и уже в них пихать на форму к примеру в jtable. Тупо но самый быстрый и вариант.
    Ответ написан
    Комментировать
  • Как прочитать данные из .DBX файла?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Найди в начале файла хэдер и по нему определи чье творение. Дальше если это бд то найти драйвер и пользоваться.
    Ответ написан
  • Звонок с браузера?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Есть такой тег в html 123456, в системе любой(андроид\вин\мак\линукс) он отрабатывает и вызывает дефолтную программу для звонков, естественно софтфон должен уметь звонить получая номер через аргумент. (еще можно sip:some@domain вместо tel).
    Если телефон хардварный то можно еще кой че сделать, написать маленького демона который по ari\agi\ami зацепит тег tel , сделает вызов на телефон тому кто вызывает, дождется снятия трубки и наберт кому из tel ссылки.
    Если пря чисто в браузере то выше дали ответ, полно разных js софтфонов.
    Ответ написан
    Комментировать
  • Как выполнять разные функции java программы с ярлыков?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Хоть ответ уже был отмечен но добавлю пару других вариантов.
    1) lnk имеет доку и спецификацию в которой очень много интересного. По сути проще открой ярлык блокнотом и удивишься =) Т.е. можешь работать с ярлыком как с обычным текстовым файлом.
    2) java программу можно запускать не только с аргументами. Можно сделать сколь угодно много точек входа(классов с функцией main) и вызывать нужную аргументом запуска типа
    java -cp MyJar.jar com.mycomp.myproj.MainClass2
    . Может пригодится к примеру если деалешь программу которая можно будет запустить в консольном варианте или с графикой.
    Ответ написан
    Комментировать
  • Будут ли трубки Panasonic KX-TCA175 работать с IP-базой KX-TGP600?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    dect у обоих, заработают но могут быть приколы с функционалом.
    Ответ написан
    Комментировать
  • Чат на Java (Интерфейс клиента на JavaFX), как сделать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Вот уже второй вопрос задаете и все такойже бестолковый.
    Во первых причем тут javafx вообще? Это вообще ui и никаким боком и уж темболее сложностей просто по определению быть не может ну вообще никак и никаким боком.
    Во вторых, абсолютно, подчеркиваю АБСОЛЮТНО, все что должно волновать на данный момент это архитектура. И начать НУЖНО именно с нее, сядьте, возьмите просто клочок бумаги и напишите пунктами в столбик что необходимо от чата, вот прям все что вы от него хотите, отчертите линию и справа также столбиком сгрупируйте хотелки по их смыслу, дальше уже для полученных групп справа написать псевдокод , что будет использоваться для этой фичи и какие типы данных будут ходить. Подобное я приводил уже в предудщем вашем вопросе но так и быть накидаю еще и тут пример.
    В третих, на тостер приходить надо уже с конкретной проблемой да еще и с которой нагуглить ничего не удалось, что то типа вот у меня сериализация, вот метод сериализация, вот десериализации, а вот ошибка и немогу понять почему.

    По второму пункту пример
    Хочу | Объединение схожего | Как сделать
    ----------------------------------------------------------------------------------------------------------------
    1 чат с другом | 1 | Формат (кому, откого, сообщение)
    2 история | 2 | Хранить в sql бд форматом сообщений
    3 чат со всеми | 1 | Формат (от кого, сообщение)
    4 чат со всеми но в комнате | 1 | Формат (от кого, комната, сообщение)
    5 авторизация | 3 | хранить в sql базе, передавать Форматом(логин, пароль)
    6 общение клиент сервер | | Текстовый вид, Json
    7 регистрация | 3 | хранить в sql , передавать Форматом(логин, пароль)
    n

    По результату берешь и систематизируешь уже конкретнее типа такого:
    1) Нарисовалось много разных форматов сообщений и надо их както отличать а значит сделаю класс родителя с полем int которое будет хранить тип сообщения. Проблема обмена информацией между клиентом и сервером решена полностью с обеих сторон.
    abstract class AMessage{
    int messType;
    }

    2) Необходим универсальный метод сериализации и десериализации объектов из\в json. Возьму библиотеку gson, почитав ее доки получился вот такой простой способ без колхоза. Проблема полностью решена.
    public <T> T fromJson(String json, Class<T> classOfT){
            Gson gson = new GsonBuilder().create();
            try{
                return gson.fromJson(json, classOfT);
            }catch(JsonSyntaxException jse){
                return null;
            }
        }
        public String toJson(Object obj){
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            try{
                return gson.toJson(obj);
            }catch(JsonSyntaxException jse){
                return null;
            }
        }

    3) Надо назначить и написать классы для каждого сообщения
    Для сообщения в комнату будет так
    //от кого, комната, сообщение
    class RoomMessage extends AMessage{
    String from;
    String roomName;
    String message;
    RoomMessage(String from, String roomName, String message){
     this.messType = 10;
     this.from = from;
     this.roomName = roomName;
     this.message = message;
    }
    }

    n - такой будет класс регистрации и т.д.

    Шаг n.

    Вот только теперь начинаешь писать код. Причем при написании идешь по всем шагам и только так как описал это ранее, даже если в процессе реализации это оказалось сложно\криво\глупо\неправильно.

    Программирование на самом деле состоит процентов на 90 из вот такой волокиты с написанием на бумаге всего и вся и только из 10% реализации. Кроме того таким способом все получится сделать очень быстро, логично и понятно, будет очень легко искать ошибки в программе и дебажить ее. Кроме того еще и получишь сразу почти готовую документацию которую останется только причесать и можно будет показать другому кодеру и он сразу въедет что тут и как работает. А вот заниматься написанием кода "эмпирическим" путем всегда тупиковое дело в котором будешь буксовать на месте, постоянно забывать что тут и как а главное зачем и почему неработает.

    ps еслибы я был преподавателем, а Вы студентом, надавал бы по заднице и вообще заставил вместо такой работы при мне писать от и до всю логику програмки на бумаге а затем рассказывать зачем и почему так сделал.
    Ответ написан
    Комментировать
  • Как учить C++ программисту который не учился в вузе в данной сфере?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Учился или нет роли не играет вообще никакой. Простых книг не бывает впринципе, мало того они устаревают очень быстро т.к. язык развивается и меняется также быстро. Кроме того qt, msvs и gcc хоть и являются с++ но очень непохожи друг на друга. Дальше, банально учить с++ надо ооочень долго и постоянно, его невозможно выучить для фана и вообще выучить.
    Для того что написали "Хочу понимать на базовом уровне. " лучше, быстрее и выгоднее учить просто С т.к. его еще и использовать сможете по назначению в других языках.
    Ответ написан
    4 комментария
  • Как в консоли linux работать с ftps?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Примонтируйте через curlftpfs и также работайте через МС, как закончите отмонтируйте. Для удобства можно сделать свои пункты меню на эти действия.
    Ответ написан
    Комментировать
  • Авторизация и регистрация для desktop приложения на Java, как лучше сделать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если по простому,а судя по вопросу это именно так, то как то так.
    Для начала вникаем что такое авторизация и регистрация и из чего состоит. Получится что есть клиент и сервер.
    Клиент для регистрации должен сказать желаемый логин и пароль. Для авторизации можно чуть усложнить и работать по 2м схемам, Первый когда клиент скажет серверу логин и пароль. Во втором логин и токен.
    *Токен тут получается после авторизации, его генерирует сервер и сообщает клиенту. Используется для минимальной защиты потому как на клиенте можно не хранить пароль а хранить только логин и токен.
    Сервер в свою очередь ждет от клиентов логин и пароль, после получения которых проверяет в своем хранилище(бд например) и отвечает клиенту сообщением состояния(ок, логин занят,ошибка, пароль простой и т.д.). Дальше он ждет от этого клиента авторизацию по одному из двух способов которая может быть по логину и паролю, тут сервер ответит также сообщением(сгенерирует токен, ошибка пароль\логин не верный). 2й вариант что ожидается логин и токен , ответ будет (ок, ошибка токен не верный).

    Общаться клиент и сервер естественно будет по сети а вот как решать уже вам. Это может быть:
    1) Голые сокеты, проще для понимания т.к. никаких библиотек уже не будет и собственно весь протокол будет ваш.
    2) Использовать какую нибудь rest подобную систему. К примеру тупо взяв сервер с php и сделать нечто похожее(понимаете смысл надеюсь) на register.php и auth.php. Соответсвенно запросы с клиента уже будут идти тупо по http
    3) Взять че покруче и на порядок сложнее, к примеру netty. Круче сокетов но сложнее в пару сотен раз хотя сделать придется по сути тоже что и на сокетах.
    4) Какой нибудь сетевой движек, к примеру kryonet. Тут конечно уже ближе к играм но почему нет? Придется читать доки и следовать принципам библиотеки, ниразу не узнав что такое сериализации и зачем она нужна.

    Для практики потом можно усложнять схему, к примеру чтобы сервер уже не просто смотрел на логин и токен клиента но и еще на его ip чтобы он совпадал. Можно обернуть все это шифрованием, реализовываться будет по разному в зависимости от того каким путем пойдете. Реализовать еще и временный токен этой сессии или же тупо еще одним параметром от клиента типа что за устройство, тогда клиент под одним логином сможет авторизоваться одновременно с нескольких устройств и никто никому мешать не будет.

    В более серьезных проектах примерна такая же схема как я описал выше но доработанная в пару тысяч раз толще на любой чих и случай жизни.

    Конкретно для javafx я тут вообще в этой теме ничего не вижу да и вообще быть ничего не может т.к. это всеголишь библиотека для отрисовки интерфейса программы с коллекциями предназначенными помочь это сделать еще удобнее. Аналогично ей существуют еще ее предшественники awt и swing которые посложнее но темнеменее работают и легче по ресурсам.
    Ответ написан
    4 комментария
  • Солвер (расталкивание объектов) физического движка?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Навероное тут нехватает параметра массы или хотябы трения а лучше сразу обоих. На худой конец хотябы какойто коэффициент гашения accerelation.
    Сейчас у вас абсолютно линейный мир в "сферическом вакуме".
    Ответ написан
    Комментировать
  • Есть ли хорошая библиотечка для работы с форматами телефонных номеров?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Это уже крайняя лень, что сложного то в такой элементраной задаче? Ввод по маске? Если же уже данные приходят откудато то что сложного удалить со строки все кроме цифр а потом сделать так как нужно или удобно? Это все пару строк кода займет.
    Ответ написан
    Комментировать
  • Не могу найти ноутбук dell?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Установленная ОС: Linux;
    Жесткий диск: SSD 512Gb или больше;
    Оперативная память: 8Gb;
    Видеокарта абсолютно неважна, т.к. не работаю с графикой.

    У делов как правило есть ноуты которые официально поддерживают линь но он не предустановлен а там где предустановлен имеют убунту , в названии Developer Edition и цену неадекватную. В реальности лучше и надежнее погуглить на конкретную модель и железо.
    SSD лучше и проще купить самостоятельно и отдельно.
    ОЗУ проще самому докинуть опять же в нужном объеме.
    Видяшку идеальна только интегрированная от интела, все остальные будут болью если не сейчас то с обновлением ядра\дров\везы.
    Ответ написан
  • Какой xmpp сервер выбрать?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    prosody -легко но придется чуть чуть напильником поработать
    metronome.im - форк просоди но сделан работать из коробки с кучей своих фич, по сути почти целая соц сеть и для корпоративки рекомендую глянуть сразу
    Tigase XMPP Server - тоже стоит глянуть, делают очень серьезные дядьки.
    Ответ написан
    Комментировать
  • Почему до сих пор никто не создал p2p мессенджер?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Потому что у p2p только один единственный плюс в виде децентрализации и он же является минусом перечеркиващим все остальное. Сам p2p также фигово предназначен для передачи мелких и РАЗНЫХ данных но хорошо для передачи мелкими кусочками болищих неменяющихся данных.

    Т.е. грубо говоря одно дело идет раздача 1гб данных куче пиров которые также становится раздающими и в целом ускоряют раздачу потому что этот гиг хочет 1000 человек. Другое дело у тебя 10 байт текста обвязанных 300 байтами служебки и их надо передать одному единственному или паре пиров, остальным он не нужен, в таком случае сеть грубо говоря превращается в кучу шлюзов ретрансляторов из разряда ПирА(отправляет сообщение пиру Я) -> увидел пирБ(не мое передам дальше и затру у себя)->...-> поймал пирП(не мое передам дальше и затру у себя) ->...->->получил пирЯ(а это мне!). В савокупности для передачи породится космическое число мусора и изначальные байта сообщения по дороге выжрут мегабайты чужого трафика. Кроме того время доставки сообщения может быть очень большим пока сообщение путешевствует от пира к пиру даже потому что иногда придется искать маршрут что говорится в слепую не зная с какой стороны находится адресат.
    Почему на мобилках не интересен и не популярен тот же токс, ну вот ты пользуешься торрентом на телефоне? Аааа трафик жалко стало да? вот и тут схожая ситуация.

    Вобщем для передачи однотипных данных прокол просто изумительный, для передачи мелких или часто изменяемых он ужасен и неповоротлив.

    Намного более интересные это жаббер\matrix которые могут быть гибридными, проще это представить как почту где ты привязался к сервису например яндекс и можешь отправить сообщение пользователю который привязан к гуглу, каждый сервис имеет свои плюшки а если что то не нравится то всегда можно найти другого провайдера почты. Но к сожалению яббер не нашел массового успеха погрязнув в стандартах изза чего потерял совместимость, а матрица досих пор в каком то непонятном состоянии.
    Ответ написан
    Комментировать