четверг, сентября 22

JetBrains PhpStorm и имя пользователя

При создании новых файлов, можно использовать автоподстановку имени пользователя по переменной ${USER}. И всё бы хорошо, если бы она не равнялась логину пользователя, что не всегда удобно. При работе в Eclipse я уже привык к добавлению следующих строчек кода в eclipse.ini:
-Duser.name="Victor Alenkov (http://borzdeg.blogspot.com)"
А вот в продуктах от JetBrains данный подход с правкой PhpStorm.vmoptions не сработал - стабильно ругался на пробел в строке. :( В итоге, родилось следующее решение: находим в файле PhpStorm.sh находим и дописываем что нам нужно (выделено жирным):
$WEBIDE_JDK/bin/java $JVM_ARGS -Djb.restart.code=88 -Duser.name="Victor Alenkov (http://borzdeg.blogspot.com)" $WEBIDE_MAIN_CLASS_NAME $*
Сохраняемся и перезапускаем IDE. наслаждаемся)
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

вторник, августа 23

ручная установка JRE/JDK на Linux сервере

Бывает так, что на сервере с Linux нет требуемой версии Java и её приходится устанавливать самому.
Со временем пришёл к следующей схеме (подсмотрел "в этих ваших интырнетах") да сам что-то допилил.

1) качаем нужную нам версию с оффсайта. Лично я качаю всегда или tar или bin архив
2) распаковываем куда-нить на сервере. например в /usr/lib/jvm/
3) делаем симлинк default на ту JRE/JDK, что будет использоваться по умолчанию
4) делаем симлинк latest на ту JRE/JDK, что является последней версией (может быть на ту же версию Java, что и для default)
5) добавляем через update-alternatives наш каталог default
6) указываем через update-alternatives по умолчанию добавленный default.

Пример (для Java SE Development Kit 7):

$ wget http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz
$ tar xvf jdk-7-linux-x64.tar.gz
$ sudo mv jdk1.7.0 /usr/lib/jvm/
$ sudo ln -s /usr/lib/jvm/jdk1.7.0 /usr/lib/jvm/default
$ sudo ln -s /usr/lib/jvm/jdk1.7.0 /usr/lib/jvm/latest
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/default/bin/java" 4
$ sudo update-alternatives --install "/usr/bin/java" "javac" "/usr/lib/jvm/default/bin/java" 4
$ sudo update-alternatives --install "/usr/bin/java" "javaws" "/usr/lib/jvm/default/bin/java" 4

И теперь через команду "sudo update-alternatives --config java" (вместо java можно подставить javac или javaws) настраиваем, что по умолчанию будет отзываться на команду java (javac и javaws соответственно).

Проверяем:

$ java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

ЗЫ: симлинк latest нужен, чтобы всегда можно было обратиться к последней версии Java :)

пятница, июля 22

вторник, июля 12

Google Translate

в гугл-транслите внизу под полем ввода есть "Прослушать".
но, если включить перевод с немецкого на русский и... в поле ввода написать по-русски, то кнопка переименуется в beatbox. правда она не пашет :( по крайней мере, я пока не понял ЧТО туда написать, чтобы услышать битбокс

ЗЫ: а фразу "ыыы пфф бздынь" он воспринимает как белорусский язык)

кросспост

четверг, июля 7

Eclipse и большие XML файлы

При попытке открыть очередной XML файл в несколько сотен килобайт внутри Eclipse, последний тупо "завис". Различные попытки "поиграть" с параметрами запуска не приводили к успеху.

В итоге, действенным способом оказалось предварительно отформатировать XML, а потом уже "скармливать" его Eclipse.

самый простой и быстрый способ, это в консоли выполнить:
xml_pp -l -i.bak file

В итоге, получим отформатированный XML-файл file и его резервную копию (оригинал) в виде file.bak

Правда нужно это больше только для удобоваримого визуального чтения файла) а в обиходе лучше использовать таки однострочный xml-файл для уменьшения размера оного.


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

понедельник, мая 30

gnome & глюки

Иногда полезно полностью "сносить" настройки какой-либо проги. Это заметил уже давно - ещё со времён "проживания" на винде.

Вот и сейчас, долго думал, отчего у меня глюки:
1) Rhythmbox не желает понимать ленты подкастов
2) Pidgin ругается на подключение к протоколу аськи (при этом, если зайти в кеды, то прекрасно подключается)
3) ещё по мелочи всякого "хлама"

В итоге, снёс полностью каталоги .gconf(d) и все глюки "как рукой сняло" :)

Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

суббота, марта 26

JSP и вывод таблиц с "отсутствующими" строками

написание поста навеяно следующим комментарием:
на практике часто возникает задача отображать данные в виде списка или таблицы, но случай, когда данных нет, требуется обрабатывать особо. Например, в случае с Java и JSTL код темплейта оказывается весьма тяжеловесным, и я, признаться, не встречал особенно выдающихся альтернатив

Приведу как минимум 2 примера, на вскидку, для решения вышеозвученной "проблемы".

Исходные данные:
<java>
Class Row{
private int id;
private String text;
... вырезанные getters & setters ...
}

List rows; // Количество элементов от 0 до n
</java>

Способ первый: "прямой" вывод данных с помощью смеси JSTL+HTML
<jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<table>
 <thead>
  <tr>
   <th>id</th>
   <th>text</th>
  <tr>
 </thead>
 <tbody>
  <c:choose>
   <c:when test="${fn:length(rows)>0}">
    <c:forEach var="row" items="${rows}">
     <tr>
      <td>${row.id}</td>
      <td>${row.text}</td>
     </tr>
    </c:forEach>
   </c:when>
   <c:otherwise>
    <tr>
     <td colspan="2">Нет данных для вывода</td>
    </tr>
   </c:otherwise>
  </c:choose>
 </tbody>
</table>
</jsp>

Способ второй: с помощью DisplayTag
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<display:setProperty name="basic.empty.showtable" value="true"/>
<display:setProperty name="basic.msg.empty_list" value="Нет данных для вывода"/>
<display:table name="rows">
 <display:column property="id" />
 <display:column property="text" />
</display:table>



Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

четверг, марта 17

Lotus Notes/Domino & XStream

Настройка Lotus Domino для работы с библиотекой XStream.

1) копируем файлы xstream-{version}.jar и xpp3_min-{version}.jar (это на тот случай, если вместо DomDriver вы хотите использовать XppDriver) в каталог {DOMINO_BIN}/jvm/lib/ext
2) в файле {DOMINO_BIN}/jvm/security/java.policy в блоке "grant" дописываем строку (не наступите на грабли) :
grant { ... permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; }
3) перезагружаете сервер Lotus Domino

Для возможности использования подсказок в Lotus Domino Designer на базе Eclipse, потребуется положить библиотеки и на рабочей станции разработчика в каталог {NOTES_BIN}/jvm/lib/ext и перезапустить клиента

ЗЫ: Если что-то настроено неправильно, то в логах буду сыпаться сообщения похожие на это:
... Agent error: java.lang.ExceptionInInitializerError: Cannot access defaults field of Properties Agent error: java.lang.NoClassDefFoundError: com.thoughtworks.xstream.converters.collections.PropertiesConverter (initialization failure) Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:140) Agent error: at com.thoughtworks.xstream.XStream.setupConverters(XStream.java:647) Agent error: at com.thoughtworks.xstream.XStream.(XStream.java:445) Agent error: at com.thoughtworks.xstream.XStream.(XStream.java:385) Agent error: at com.thoughtworks.xstream.XStream.(XStream.java:342) ...

ЗЫЫ: при разработке под Lotus Domino 8.x уже можно использоваться аннотации (в eclipse-based редакторе, при сохранении, будет предложено повысить версию java-проекта до 1.5 для компиляции)


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

понедельник, марта 14

Lotus Domino & java.policy

мелкие баги бывают такие разные и противные...

вот например, стабильно в консоли получал на любой "чих" ошибку "error: java.security.AccessControlException: Access denied (java.lang.RuntimePermission setContextClassLoader)"
Перековырял всё, а ошибка всё не уходит...

В какой-то момент осенило - проблема может быть не в нехватке прав, а в самом проблемном файле java.policy. Беру "эталонный" файлик с другого сервера, подставляю и вуаля - всё работает!

беглый анализ произошедшего нашел и виновника возникшей оказии: сервер расположен на Windows, файлик правился из Linux, в итоге в файле образовались иные "переносы строк" - вот на этом IBM JDK и запнулась и перестала и вовсе читать конфигурацию. А внешне файл выглядел нормально что в Windows (блокнот), что в Linux


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!