Category: it

Category was added automatically. Read all entries about "it".

Neo4j: создание public сервера

Neo4j по умолчанию предоставляет полный доступ к базе данных и не ограничивает время одной транзакции. Для открытого сервера это может привести к замедлению ответа или вообще смерти сервера, что не желательно. Однако пара простых настроек поможет вам этого избежать. Все настройки, кстати, хранятся в `${neo4j.home}/conf/`

Collapse )

Jenkins в качестве диспетчера задач.

Нашёл, как использовать Jenkins в качестве диспетчера вместо сron.

Идея в том, что бы создать Multi-configuration project, затем, в зависимости от потребностей, можно даже не импортировать код, а просто выбрать Execute Shell в качестве Build Step. В окошке шелла можно писать практически всё, что угодно, включая sudo комманды (конечно, придётся дать дженкинсу на них привилегии). Бонус в том, что один и тот же проект можно вызывать по всякому, включать в билд-цепочки (причём делая их зависимыми друг от друга), организовывать себе сообщения на емайл и Jenkins сохранит все логи, какие только возможны.

Сейчас замутил харвестеры через Jenkins, довольно стабильно всё работает.

Отображение JavaDoc в GitHub

Существует такая вещь как javadoc, которая помогает всем лентяем писать красивые (но, по большей части, бесполезные) каменты к своим программам. Вообще я считаю, что javadoc не есть good, поскольку мануал к серьёзной библиотеке не должен генерироваться непойми кем, но иногда, всё же, без него не обойтись особенно, если за написание комментариев вам не платят.

Существует другая вещь - GitHub Pages, которая позволяет вам запостить документацию к своему проекту. Сразу возникает вопрос - можно ли сочетать одно с другим? Не верьте тем пустобрёхам, которые скажут вам, что это невозможно, что нужно использовать *.md или что-то вроде. Они просто ламмеры не умеют читать мануалы. Сейчас я расскажу вам, как легко и просто отобразить страничку, сгенерированную JavaDoc в GitHub.
Collapse )

Java: динамический тип enum

Enum в Java, это больше, чем просто набор констант. Поскольку каждая переменная в Java является объектом или стремится быть таковым, то, когда вы объявляете:

enum Numbers { ONE, TWO, THREE };

вы, на самом деле, создаёте четыре новых статических объекта. Объект Numbers и по одному объекту для каждой из констант. Это позволяет делать просто поразительные вещи, например, получить строку, содержащую имя константы:

String oneName = Numbers.ONE.name();

Или получить константу по её имени:

Numbers number = Numbers.valueOf("TWO");

Или сравнить две константы с проверкой на тип и инициализацию:

if (number.equals(Numbers.THREE);

Это довольно большое удобство, но оно действует ровно до того момента, пока вы точно знаете, какие именно константы вам потребуются. К несчастью, иногда вы не можете этого знать (к, примеру, если тип перечесления задаётся из некой базы данных). Как быть в таком случае?

Collapse )

Android: исправление ошибки "R cannot be resolved to a variable"

На случай, если кто-то столкнулся с этой проблемой:

1) Проапдейтьте ADT, SDK, Eclipse, Java и прочее.
2) Убейте фолдер gen, он создастся вновь
3) Правый клик по проекту, выберете пункт меню Android Tools -> Fix Project Properties
4) Правый клик по проекту, выберете пункт меню Properties -> Java Build Path -> Order and Export. Убедитесь, что порядок ANDROID_FRAMEWOK, LIBRARIES, DEPENDENCIES, gen и src
5) В том же окне, в разделе Android выставьте в качестве target последний фреймворк.
6) Проверьте, что все файлы и фолдеры в res имеют в качестве названия только буквы английского нижнего регистра, знак подчёркивания и цифры.
7) проверьте, что в файлах исходников в src отсутствует директива "import android.R" в начале файла
8) Выберите пункт меню Project -> Clean.. и перегрузите экликпс.

mysql: InnoDb в сочетании с INSERT...IGNORE

Таблицы InnoDB после версии MySQL 5.1.22 приобрели одну неприятную особенность (кстати, нигде не документированную sic!)

Традиционно, если у вас есть в таблице поле с флагом auto_increment, оно будет увеличиваться на единицу при каждой новой строчки. Эта вещь весьма подходит для создания разнообразных индексов, и я, к примеру, использую его весьма широко. До версии 5.1.22, при записи новой строки в таблицу происходила, так называемая, AUTO-INC блокировка всей таблицы. Она гарантировала, к примеру, что если вы будете производить запись из двух параллельных потоков, вы не сможете присвоить двум строчкам одинаковые индексы.

Collapse )

linux: Редактирование очень больших файлов.

Существует два неплохих способа. Первый - это использование жутко не удобного редактора vi, который, однако, способен читать и редактировать файлы любого размера. Второй, это разбить файл на мелкие части, поменять, что нужно, и собрать обратно. Первый способ в особых комментариях не нуждается. Второй способ выглядит примерно так:

#Для разбивки файла
split –bytes=1m /path/to/large/file /path/to/output/file/prefix

#Для склейки файла обратно
cat /path/to/output/file/prefix* > /path/to/new/large/file

Синхронизация данных при помощи SSH и rsync

Типичная ситуация, у вас существует папка на неком сервере, и вы хотите забэкапить её на другом сервере. Или просто перенести её на другой сервер. Можно, конечно, съархивировать её при помощи tar -cjf, после чего закачать содержимое другого архива на сервер по sftp и там распаковать через консоль. Но это долго, муторно и, в случае, если это необходимо повторять периодически, весьма геморно.

К счастью, в линуксе существует для этого стандартное решение, которое, после небольшого ритуального танца, можно будет повесить на cron. Решение называется rsync.


Collapse )

Fedora 17. Настрйока VNC сервера

В 17-ой федоре VNC сервер теперь так же запускается из под systemctl. Изменения, на самом деле, не значительные, но, по скольку файл настроек содержит техническую ошибку, я решил, что надо бы описать их отдельным постом.

Файл /etc/sysconfig/vncservers теперь является заглушкой и указывает на /lib/systemd/system/vncserver@.service. Для использования, его следует, с начала, скопировать в /etc

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

Номер после @:, это номер vnc десктопа.

В файле необходимо заменить <USER> на имя юзера, от которого будет запускаться vnc. Так же, в строчку ExecStart стоит добавить параметр -localhost для того, что бы запретить вход в vnc без использования туннеля. В качестве бонуса, теперь в файле содержится пример команды для установления туннеля.

После того, как вы сконфигурировали сервер, установите его автоматический запуск командой

sudo systemctl enable vncserver@:1.service

Запустить сервер теперь можно командой

sudo systemctl start vncserver@:1.service

Wine и Microsoft Data Access Components

Опять напаролся на эту проблему, надо записать, что бы не забыть.

Для инсталляции MDAC под wine, необходим jet40. Корректная исталляция будет иметь вид:

sh winetricks jet40

MDAC поставится, при этом, автоматически. Если же пытаться ставить MDAC в ручную, то вас будут ожидать разного рода прикольные глюки.