← All posts tagged Java

AlexVK
Java bug Жаба мне снесла root корневой раздел. Точнее попыталась. Т.к. прав нет никаких то удалила /home
Со всем. Конфиги, настройки, ключи — всё улетело нахрен. Какие то доки, проекты, сорцы....
Жалко только ключи и настройки. Документация вся в иторнетах, почта там же. проекты — там же. Книги — их тьма в телеге и на трекерах... А вот ключи и настройки, вот этого вот нет, так что всё настраивтаь таки заново.

Особый привет глючным либам в недрах которых могут быть shutDownHook с удалением рабочего каталога!!
AlexVK
Java По результатам #2884193 выкидываю Thymeleaf.
Может необъяснимо падать на ровном месте, не говоря про тормоза.
Так что идёт это поделие в пень!
Благо что пока только пробовали по сути.
Меняю на freemarker
AlexVK
Java ссылка github.com
Comparing Template engines for Spring MVC

Ну и чтобы 2 раза не вставать
jTwig 4.709 seconds
Thymeleaf 4.147 seconds
Scalate — Scaml 3.479 seconds
Handlebars 2.936 seconds
Jade4j 2.735 seconds
Freemarker 2.637 seconds
HTTL 2.531 seconds
Pebble 2.512 seconds
Velocity 2.491 seconds
Mustache (JMustache) 2.326 seconds
JSP 2.227 seconds
Проверил результаты взяв версии чуть новее — картина примерно такая же +-
AlexVK
Java spring В Spring-е , якобы защищённым spring security совершенно случайно обнаружили огромную дырень.
Якобы защищённые ресурсы можно легко попасть просто немного изменив url
Уязвимость находится в antRequestmatcher и работает только при использовании оного.
Уязвимы все версии spring 3 и ветки 4.0, 4.1 и 4.2
Протестил сочетия со всем ветками spring security 3.x и 4.x — дело не в нём, дело именно в spring.
Подробностей пока не будет.
Очень интересно во многие ли вещи можно будет элементарно заглянуть чуть изменив url :-)
AlexVK
Java jpoint На Jpont есть , хм, своебразный человек yegor256.com , говорящий за то как вы вот все неправильно мыслите и неправильно програмируете.
По сути 2 доклада , это Объектно-ориентированное вранье youtube.com и ORM — это обидно youtube.com об одном и том же. Где то в начале он предлагает купить свою книжку на Амазоне, где он описал советы. А дальше он говорит о том какой у нас неправильный ООП который и не ООП а что ни на есть процедурное программирование. Много говорит за single responsibility который сформулировал не он.
Что тут не так. Довольно мало примеров "как правильно". По сути их нет, есть одни только теоретические рассуждения. Нет указаний на других авторов, занимающихся подобной практикой. Взять того же Мартина Фаулера. Он много говорит о том же что и Мартин писал лет этак 10 назад. Причём у Мартина в книгах куда богаче и понятнее.
Принцип тут — я тут вам немного расскажу, а всё остальное прочитаете в моей книге.
Примеры, не рассуждения, примеры. Этим берёт Файлер, вот вам код, вот это конкретно в нём неправильно и вот почему. Берём неправильно и делаем правильно. А так в общем то зёрна есть, в архитектуре java действительно хватает недостатков.
Геттеры и сеттеры, например, действительно зло, пришедшее со старого стандарта javaBeans, и т.к. заявлена поддержка всего ранее написанного то имеем то что имеем.
AlexVK
Java jpont Понравился доклад по JMS youtube.com
Хотя и прошлогодний. Интересно коснулся раз тем — и о архитектуре LinkedIn, про NoSQL и про катастрофу 11 сентября.
Действительно, oc4j и ряд Oracle-вых приблуд — говно и ни нужно. С oc4j в своё время хорошо натрахались.
AlexVK
code stat
Java memory used: 	3,281 Mb / 18,204 Mb
Nb of http sessions: 	1,542	
Nb of active threads
(current http requests): 	0	
System load	0.16

Nb of http sessions: 1,542  
Nb of active threads
(current http requests): 0

$vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  1      0 4435432 550564 16251416    0    0    36   230    0    0  2  1 96  1  0

netstat -n|grep ESTABLISHED| wc -l
32

Mean age of http sessions (min): 27 
Memory: Non heap memory = 603 Mb (Perm Gen, Code Cache),
Loaded classes = 33,382,
Garbage collection time = 6,435,803 ms,
Process cpu time = 376,865,670 ms,
Committed virtual memory = 29,079 Mb,
Free physical memory = 4,715 Mb,
Total physical memory = 29,970 Mb,
Free swap space = 0 Mb,
Total swap space = 0 Mb
AlexVK
Java dev К 8ке привыкаешь настолько что если сталкиваешься с версией ниже 8й кажется очень неудобным.
Всё таки в 8ке "говорливость" java чувствуется значительно меньше и иногда можно обойтись вообще без всякого xml. Хотя он всё ещё бывает нужен, но уже не десяток разных файлов, как раньше, а всего один — два. И то пока.
Начиная с 7 чем ниже версия тем больше боулерплейта.
AlexVK
Java ссылка dev Project Lombok
projectlombok.org
смысл просто — давайте весь boilerplate заменим на аннотации и будет генерится код по ним дабы жизнь казалась легче.
В принципе жизнь легче и так с любой нормальной IDE т.к. она легко расширяется плагинами и есть возможность весь этот boilerplate генерить так как надо буквально в пару кликов или в одно нажатие.
Глянул на то что получается — мда, лучше б я это не видел, всё таки в моей IDE это проще и как то понятнее что-ли.
Итог: абсолютно не нужно.
AlexVK
Java netty очень годная и клёвая штука, можно всячески рекомендовать для сетевых дел. Запилить свой протокол? Да в лёгкую. Неблокирующий сокет, все дела. Не разбегается на десятки потоков, сколько и как запилишь — так и будет.
AlexVK
Java программирование ldap Только разбор логов и последующие изучение дерева LDAP показали что на самом деле ошибки нет,
просто назвали не bcch а bbch в LDAP
И нам дали как bcch
Ну замечательно, пусть так и пользуют теперь
AlexVK
Java ссылка code
http://company.yandex.ru/job/vacancies/dev_java_infra.xml
Интересны вопросы
1) Перечислите все проблемы, которые вы видите в данном коде:
2) Какие из следующих стандартных контейнеров позволяют найти в них элемент за O(log(n)) по его значению?
3) Опустим
Напишите  lock-free реализацию класса с методом BigInteger next(), который  возвращает элементы последовательности Фибоначчи. Код должен корректно  работать в многопоточной среде.
4) Есть  таблица в MySQL-базе, в которую записываются регистрирующиеся на  сервисе пользователи. Затем, если пользователь удаляется с сервиса, в  соответствующей записи в этой таблице появляется время удаления. Логин  можно использовать повторно, если на момент регистрации в базе нет  такого же действующего логина.
AlexVK
программирование алгоритмы Понадобилось сделать генерацию уникальных ключей вида xxxx-xxxx-xxxx-xxxx
для приходящих через веб пользователей.
В качестве алфавита взял символы "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#"
Нужно именно 64 уникальных символа. 26 латинских букв в верхнем и нижнем регистрах, а также 10 цифр дают только 62. А вот с оставшимися двумя ещё определяюсь.
Uuid я отмёл как слишком большой. Правда есть и сокращённый вариант вроде, но и его тоже отмёл.
В общем, ничего подходящего не нашёл (правда это не исключает того что всё же плохо искал)
И изобрёл свой велосипед.
Сделал что-то вроде счётчика, этакого 96 битного числа. Если каждую последовательность из 6 бит этого числа представить в виде символа алфавита то и получается тот ключ который мне нужен.
Можно просто смещать на 6 бит это число и вытягивать крайние правые биты по маске 111111 (3F в HEX). А полученное число и будет позицией символа в алфавите.
Осталось определится с этим 96-битным числом.
Его сэмулировал 2мя числами: 64 бита, это unix time в миллисекундах.
И 32 бита как нибудь характеризующие клиента.
Решил сделать просто хеш (32 бит) из представления IP и User-agent, вот такой: docs.oracle.com
Получившиеся примеры:
aaab-qVZS-qLD2-0xys
aaab-qVZS-qLDl-JcUO
aaab-qVZS-qLEu-SNGo
aaab-qVZS-qLEL-At9C