• Как узнать имя пользователя в Windows с помощью JS или Java Applet?

    ehabarov
    @ehabarov
    IT Specialist
    Нужна более полная формулировка задачи. Начиная с ответа на вопрос "зачем"?

    Правильно ли я понимаю что хочется получить в произвольном браузере имя (идентификатор учетной записи) пользователя, под которой пользователь зашел в свою операционную систему(запустил браузер)? При этом веб-сервер с рабочей машиной пользователя никак не связаны (например общей аутентификацией)?
    Если да, то, скорее всего, общего решения нет. Ибо приложению, которое исполняется в браузере, в общем случае такая информация не нужна и, доступность такой информации является утечкой данных, что нехорошо с точки зрения безопасности.

    Если же это корпоративная сеть с единой аутентификацией (Kerberos , MS Active Directory и т.п.) и хочется сделать "прозрачную" аутентификацию пользователя в приложении - то это решаемо. Смотреть в сторону GSSAPI, NTLM, "Integrated Windows authentication".
    Ответ написан
    Комментировать
  • Как запустить программу java на centOS?

    ehabarov
    @ehabarov
    IT Specialist
    FTP-протокол использует более одного порта.
    21 - это "управляющее соединение" (Control Connection).
    Для передачи данных (вывод списка тоже относится к этому) используется отдельное соединение, которое называется "Data Connection".
    В активном режиме инициатором этого соединения является FTP-сервер. На какой адрес и порт соединяться - сообщает клиент при открытии соединения. В настоящее время использовать такой режим передачи не рекомендуется.
    В пассивном режиме инициатором соединения является клиент, а адрес и порт (динамический, меняется) сообщает FTP-сервер.

    Нужно включать более подробное логгирование в FTP-клиенте, чтобы выводились команды, посылаемые на FTP-сервер и получаемые ответы.
    Ну и проверить, не запрещено ли где-то соединение на порты, отличные от 21-го.
    Ответ написан
    1 комментарий
  • Как восстановить OS X на IMac?

    ehabarov
    @ehabarov
    IT Specialist
    Вот этого будет достаточно: Как переустановить MacOS Yosemite?
    Ответ написан
    Комментировать
  • Существует ли способ установить на OS X 10.10 Yosemite собственную тему оформления?

    ehabarov
    @ehabarov
    IT Specialist
    Сам не пробовал, но, возможно, подойдут варианты, представленные по ссылкам:
    Top 7 Ways to Personalize Your Mac OS X Desktop
    How to Customize the Look and Functionality of OS X
    Ответ написан
    Комментировать
  • У JAVA есть будущее?

    ehabarov
    @ehabarov
    IT Specialist
    Да никуда Java не пропадет в ближайшем обозримом будущем.
    Ибо пока нет других языков и VM обеспечивающих сравнимую кросс-платформенность.
    Язык вполне популярен, под него существует огромное количество библиотек и готовых продуктов.
    Из известных GUI-приложений можно назвать платформу Eclipse и производные продукты на основе это платформы. Например: List of Eclipse-based software.
    В ближайшем будущем, более вероятно, появится большее количество производных языков (напр. Scala), которые будут генерировать байт-код для JVM.
    Т.е. возможно, что Java, как язык, будет постепенно снижать популярность, но JVM, скорее всего, останется надолго.
    Ответ написан
    Комментировать
  • ESB vs application server?

    ehabarov
    @ehabarov
    IT Specialist
    Насколько я знаю, компания IBM придерживается мнения, что ESB - это концепция и технология, а не конкретный продукт. И эта технология может реализовываться как на основе одного продукта, так и на некотором множестве продуктов.
    Сама технология была призвана уменьшить паутину взаимосвязей между разными приложениями и их компонентами, централизовать и упорядочить взаимодействие, упростить замену и подключение новых компонент.
    Применима ли эта технология к конкретной задаче - нужно выяснять. Выбор конкретной архитектуры и реализации - зависит от задачи.
    Ответ написан
    Комментировать
  • Как убрать лишние пробелы и отступы?

    ehabarov
    @ehabarov
    IT Specialist
    Попробуйте так:
    <%@ page trimDirectiveWhitespaces="true" %>

    Дополнительная информация:
    Strip whitespace from jsp output
    The Java EE 5 Tutorial: Eliminating Extra White Space
    Ответ написан
    2 комментария
  • Хоткеи MacOS 10.10, переключение между окнами и др?

    ehabarov
    @ehabarov
    IT Specialist
    Официальная информация Apple : ОС OS X: сочетания клавиш
    Ответ написан
    Комментировать
  • Как организвовать многопоточное взаимодействие с БД в Java?

    ehabarov
    @ehabarov
    IT Specialist
    Подход из мира JEE (и не только):

    Для всего многопоточного приложения используется реализация "пула соединений", которая обслуживает соединения с СУБД (одной или несколькими).
    Прикладной код каждого потока обращается к пулу, получает из него соединение с СУБД, выполняет определенную работу (запрос или запросы), закрывает транзакцию и закрывает соединение (в результате соединение возвращается в пул).
    В этом случае предполагается, что прикладной код удерживает соединение минимально необходимое время.

    Такой подход позволяет обслуживать много потоков относительно малым числом соединений с СУБД и экономить время на установку соединения, т.к. в нормальных условиях в пуле присутствует процент свободных и готовых к работе соединений.
    Плюс прикладной код не содержит настроек для конкретной СУБД, все настройки хранятся на уровне файлов конфигурации пула соединений.

    Логика управления пулом может самостоятельно устанавливать новые соединения (если все существующие заняты), завершать соединения (если очень много свободных), "отбирать" соединения у прикладного кода, если по соединению долго не было никакой активности (банально забыли закрыть соединение), проверять незанятые соединения на "живость", выполняя диагностические SQL-запросы и т.п.

    Примеры реализации пулов соединений:
    Apache Commons DBCP
    c3p0:JDBC DataSources/Resource Pools
    The Tomcat JDBC Connection Pool
    Ответ написан
    Комментировать
  • Как переустановить MacOS Yosemite?

    ehabarov
    @ehabarov
    IT Specialist
    При наличии нормального канала в интернет можно выполнить установку из сети.
    Такой режим называется "Internet Recovery".
    В этом случае в самом начале будет запрошен AppleID, после чего произойдет выгрузка дистрибутива Mac OS X с серверов Apple.
    Ссылки:
    Как переустановить OS X с помощью Internet Recovery
    ОС OS X: сведения о восстановлении ОС OS X
    Ответ написан
  • Вытеснит ли ASP.NET платформу J2EE с ниши enterprise приложений за счет своей кроссплатформенности?

    ehabarov
    @ehabarov
    IT Specialist
    Java и JEE существует под гораздо большее количество ОС и платформ и тоже не стоит на месте, а развивается. Появление кросс-платформенности у потенциального конкурента возможно подстегнет процесс развития.
    Поэтому, если процесс вытеснения и будет, то весьма и весьма постепенный.
    Ответ написан
    Комментировать
  • Нужна ли звуковая карта в этой схеме?

    ehabarov
    @ehabarov
    IT Specialist
    По оптике можно передавать разные звуковые потоки/форматы, и нет прямого ограничения на два канала. А дальше вопрос какой звук и откуда планируется выводить?

    Если нужен вывод готового звука в цифровых форматах (LPCM, DD5.1, DTS и т.п.) - то в используемом плеере настраивается вывод исходного потока (без декодирования) на Toslink, а декодированием будет заниматься ресивер из комплекта домашнего кинотеатра.

    Если речь про звук, который формируют программы/игры, то скорее всего на выходе Toslink будет только стерео (PCM), т.к. очень маловероятно, что встроенная звуковая карта умеет упаковывать многоканальный звук в цифровой многоканальный формат (тот же DD 5.1 например).

    И в том и в другом случае, при подключении через Toslink для преобразования звука из цифры в аналог будет использоваться ресивер/усилитель из комплекта ДК и качество выходного звука будет определяться качеством декодера и ЦАП именно ресивера, а не аудиокарты.

    Поэтому, нужно четко понимать что может вам дать внешняя звуковая карта, по сравнению со встроенной, с учетом вашей конфигурации.
    По описанию аудиокарты можно сказать что она может дать лучшее качество звука (по сравнению со встроенной) в случае аналогового подключения к усилителю и колонкам.
    Ответ написан
  • Как повысить fps через vnc?

    ehabarov
    @ehabarov
    IT Specialist
    Рекомендую посмотреть в сторону NoMachine - Free Remote Desktop For Everybody

    Я пользовался этим ПО пару лет назад, когда нужно было работать с удаленным сервером в графическом терминале, по сравнению с VNC и X-Forwarding он работал ощутимо шустрее.

    Современную версию не "щупал", но по моей информации - продукт стал только лучше.
    Сейчас вроде бы можно даже играть и смотреть видео.
    Ответ написан
    Комментировать
  • Как подключить R к Java?

    ehabarov
    @ehabarov
    IT Specialist
    Судя по ошибке, вы пытаетесь загрузить 32-битную dll-библиотеку внутри 64-битной среды Java.
    Так сделать не получится.
    Варианты решения:
    1. Использовать для исполнения 32-битную среду Java.
    2. Использовать 64-битную версию библиотеки jri.dll.
    Ответ написан
    1 комментарий
  • Как внутри batника указать путь из которого он запущен?

    ehabarov
    @ehabarov
    IT Specialist
    Самый надежный вариант - значение переменной окружения: %~dp0.
    Переменная %0 содержит путь и имя исполняемого файла (возможно относительное).
    Выражение ~dp - формирует полный путь (диск и подкаталог), исключая имя файла.
    Обсуждение на StackOverflowWhat does %~dp0 mean, and how does it work?
    @echo off
    setlocal
    echo %%0 = %0
    echo %%~dp0 = %~dp0
    endlocal
    Ответ написан
    Комментировать
  • Существует Java библиотека для работы с RTSP?

    ehabarov
    @ehabarov
    IT Specialist
    Нагуглено: Oracle Java : RTSP Support, The Java Media Framework API (JMF)
    RTSP support has recently been added to the Java Media Framework. It enables JMF based clients (both applets and applications) to communicate with RTSP enabled servers and request that the streaming of specified mediafile (video-on-demand).

    For example, you can use JMStudio as an RTSP client by opening a URL from the File menu with the following parameters:

    rtsp://host:port/mediafile

    rtsp://129.144.251.202/test.mov

    If the port information is omitted the default RTSP port 554 is assumed.

    To construct an RTSP player programmatically, you use the Manager.createPlayer method and pass in an RTSP URL.
    Ответ написан
    Комментировать
  • Как заменить часть URL на другое значение (mod_rewrite) или proxy?

    ehabarov
    @ehabarov
    IT Specialist
    ИМХО здесь будет достаточно возможностей mod_alias и его директив Alias или Redirect.
    Примеры директив есть по ссылкам.
    Ответ написан
    Комментировать
  • После записи объекта в конец файла(append), чтение дописанных данных выдает StreamCorruptedException, какие есть способы справиться?

    ehabarov
    @ehabarov
    IT Specialist
    StackOverflow предлагает такой метод: Appending to an ObjectOutputStream
    Суть метода:
    - Если конечный файл не существует - то пользуемся обычным ObjectOutputStream для его создания (в этом случае в начало файла пишется нужная сигнатура).
    - Если файл уже существует - пользуемся предложенным там классом AppendingObjectOutputStream, который предотвращает повторное формирование сигнатуры.

    UPD: Пример кода, перенес из комментария.

    AppendingObjectOutputStream.java - это копия кода со StackOverflow.
    ObjectStreamTest.java - пример использования в программе.

    Метод writeObject() - выполняет запись очередного объекта в файл.
    В этот методе используется:
    - ObjectOutputStream - если файл не существует (будет создан).
    - AppendingObjectOutputStream - если файл уже существует (будет дозаписан).

    Метод readObjects() - последовательно читает файл с объектами и отображает имя класса каждого считанного объекта. Используется, чтобы удостовериться, что файл читается нормально после дописывания.

    --- AppendingObjectOutputStream.java ---
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    
    public class AppendingObjectOutputStream extends ObjectOutputStream 
    {
      public AppendingObjectOutputStream(OutputStream out) throws IOException 
      {
        super(out);
      }
      @Override
      protected void writeStreamHeader() throws IOException 
      {
        // do not write a header, but reset:
        // this line added after another question
        // showed a problem with the original
        reset();
      }
    }

    --- ObjectStreamTest.java ---
    import java.io.EOFException;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    public class ObjectStreamTest 
    {
      public static void main(String[] args) throws IOException, ClassNotFoundException 
      {
        String filename = "objFile.bin";
        writeObject(filename, new String("Test1"));
        writeObject(filename, new Integer(10));
        writeObject(filename, new Long(200));
        writeObject(filename, new String("Test2"));
        readObjects(filename);
      }
      public static void writeObject(String filename, Object obj) throws IOException
      {
        File file = new File(filename);
        FileOutputStream  fos = null;
        ObjectOutputStream oos = null;
        if ( file.exists() ) 
        {
          fos = new FileOutputStream(file, true);
          oos = new AppendingObjectOutputStream( fos );
        }
        else
        {
          fos = new FileOutputStream(file);
          oos = new ObjectOutputStream(fos);
        }
        oos.writeObject(obj);
        oos.close();
        fos.close();
      }
      public static void readObjects(String filename) throws IOException, ClassNotFoundException
      {
        FileInputStream  fis = new FileInputStream(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object obj = null;
        try 
        {
          while ( (obj = ois.readObject() ) != null )
          {
            System.out.println("Object class is : "+obj.getClass().getName());
          }
        } 
        catch (EOFException e) 
        {
          System.out.println("End of file reached.");
        }
        ois.close();
        fis.close();
      }
    }
    Ответ написан
    3 комментария
  • Насколько java кроссплатформенна?

    ehabarov
    @ehabarov
    IT Specialist
    Нужно разбираться с ошибками.

    В общем случае один раз скомпилированный класс будет запускаться на виртуальной машине Java такой-же или более новой версии без проблем. Но, не запустится на более старой версии, о чем будет выдана соответствующая ошибка.
    Окружение для запуска Java-машины для разных платформ настраивается немного по разному. Например для Unix/Linux систем разделителем элементов в переменной CLASSPATH (в этой переменной задаются пути для поиска классов и библиотек классов) является двоеточие, а для Windows - точка с запятой.
    Бывают и другие нюансы, например разные кодировки по умолчанию для разных платформ, из-за чего могут неправильно считываться файлы конфигурации используемых библиотек. Про использование Native-библиотек уже все сказали.
    Ответ написан
    Комментировать
  • Что не так в jsp?

    ehabarov
    @ehabarov
    IT Specialist
    1. Желательно использовать другое объявление taglib
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    2. Попробуйте вот так:
    <c:set var = "day" value = "${user.day}" scope="session"/>

    Expression Language в JSP сам разбирается что вызывать, согласно спецификации JavaBeans.
    Т.е. в классе user это может быть и public поле с именем day и getter-метод вида getDay().
    Подробнее: читать спецификацию на JSP Expression Language.
    The Java EE 6 Tutorial : Overview of the EL
    Ответ написан
    Комментировать