В данной заметке я хочу показать каким образом можно определять и устранять утечки памяти в Java на примере из моей повседневной работы. Мы не будем здесь рассматривать возможные причины появления утечек, об этом будет отдельная статья, так как тема достаточно обширная. Стоит заметить, что речь пойдет о диагностике именно Heap Memory, об утечках в других областях памяти будет отдельная статья.
Александр @xolvo
User
Angular2: RC4 to RC5 Unit Tests Migration Guide
8 min
11KСразу скажу, что я не любитель Angular1, angular-way и иже с ними, потому как ребята из Angular таких делов наворотили, что иногда диву даешься. Тем не менее, их новое детище выглядит многообещающе. Да, Америку не открыли, но создали нечто, способное конкурировать с популярными современными фреймворками (React + Redux, Aurelia, и т.д.).
Есть и плюсы, и минусы, о которых уже написаны статьи и даже книги, но суть поста в другом.
RC5 вышел всего неделю назад и «порадовал» разработчиков многими изменениями, которые, возможно, и помогают в работе и упрощают жизнь, но заставят серьёзно попотеть над переписыванием уже написанного кода.
+13
Микросервисная архитектура, Spring Cloud и Docker
14 min
258KTutorial
Привет, Хабр. В этой статье я кратко расскажу о деталях реализации микросервисной архитектуры с использованием инструментов, которые предоставляет Spring Cloud на примере простого концепт-пруф приложения.
Код доступен для ознакомления на гитхабе. Образы опубликованы на докерхабе, весь зоопарк стартует одной командой.
+31
Kibana-мать или Зачем вам вообще нужны логи?
9 min
233KВы можете сказать, что “иногда бывает нужно...” Но на самом деле, вы хотите всегда видеть, что у вас в логах, через графический интерфейс. Это позволяет:
Так что сегодня вновь поговорим о стэке ELK (Elasticsearch+Logstash+Kibana).
Но на этот раз — в условиях json-логов!
Такой use case обещает наполнить вашу жизнь совершенно новыми красками и заставит испытать полную гамму чувств.
- Облегчить жизнь разработчикам и сисадминам, время которых просто жалко и дорого тратить на написание grep-конвейеров и парсеров под каждый отдельный случай.
- Предоставить доступ к информации, содержащейся в логах, умеренно-продвинутым пользователям — менеджерам и техподдержке.
- И видеть динамику и тенденции появления залогированых событий (например, ошибок).
Так что сегодня вновь поговорим о стэке ELK (Elasticsearch+Logstash+Kibana).
Но на этот раз — в условиях json-логов!
Такой use case обещает наполнить вашу жизнь совершенно новыми красками и заставит испытать полную гамму чувств.
+18
Вёрстка писем: 60 полезных ресурсов, руководств и исследований
3 min
111KВ нашем блоге на Хабре мы часто пишем о создании почтовых рассылок — верстке HTML и CSS, работе с plain-text сообщениями и описываем интересные эксперименты. Сегодня мы представляем вашему вниманию список из 60 полезных ресурсов, туториалов и исследований о работе с email.
+14
Hibernate cache
6 min
178KДовольно часто в java приложениях с целью снижения нагрузки на БД используют кеш. Не много людей реально понимают как работает кеш под капотом, добавить просто аннотацию не всегда достаточно, нужно понимать как работает система. Поэтому этой статье я попытаюсь раскрыть тему про то, как работает кеш популярного ORM фреймворка. Итак, для начала немного теории.
Прежде всего Hibernate cache — это 3 уровня кеширования:
Кеш первого уровня всегда привязан к объекту сессии. Hibernate всегда по умолчанию использует этот кеш и его нельзя отключить. Давайте сразу рассмотрим следующий код:
Возможно, Вы ожидаете, что будет выполнено 2 запроса в БД? Это не так. В этом примере будет выполнен 1 запрос в базу, несмотря на то, что делается 2 вызова load(), так как эти вызовы происходят в контексте одной сессии. Во время второй попытки загрузить план с тем же идентификатором будет использован кеш сессии.
Один важный момент — при использовании метода load() Hibernate не выгружает из БД данные до тех пор пока они не потребуются. Иными словами — в момент, когда осуществляется первый вызов load, мы получаем прокси объект или сами данные в случае, если данные уже были в кеше сессии. Поэтому в коде присутствует getName() чтобы 100% вытянуть данные из БД. Тут также открывается прекрасная возможность для потенциальной оптимизации. В случае прокси объекта мы можем связать два объекта не делая запрос в базу, в отличии от метода get(). При использовании методов save(), update(), saveOrUpdate(), load(), get(), list(), iterate(), scroll() всегда будет задействован кеш первого уровня. Собственно, тут нечего больше добавить.
Прежде всего Hibernate cache — это 3 уровня кеширования:
- Кеш первого уровня (First-level cache);
- Кеш второго уровня (Second-level cache);
- Кеш запросов (Query cache);
Кеш первого уровня
Кеш первого уровня всегда привязан к объекту сессии. Hibernate всегда по умолчанию использует этот кеш и его нельзя отключить. Давайте сразу рассмотрим следующий код:
SharedDoc persistedDoc = (SharedDoc) session.load(SharedDoc.class, docId);
System.out.println(persistedDoc.getName());
user1.setDoc(persistedDoc);
persistedDoc = (SharedDoc) session.load(SharedDoc.class, docId);
System.out.println(persistedDoc.getName());
user2.setDoc(persistedDoc);
Возможно, Вы ожидаете, что будет выполнено 2 запроса в БД? Это не так. В этом примере будет выполнен 1 запрос в базу, несмотря на то, что делается 2 вызова load(), так как эти вызовы происходят в контексте одной сессии. Во время второй попытки загрузить план с тем же идентификатором будет использован кеш сессии.
Один важный момент — при использовании метода load() Hibernate не выгружает из БД данные до тех пор пока они не потребуются. Иными словами — в момент, когда осуществляется первый вызов load, мы получаем прокси объект или сами данные в случае, если данные уже были в кеше сессии. Поэтому в коде присутствует getName() чтобы 100% вытянуть данные из БД. Тут также открывается прекрасная возможность для потенциальной оптимизации. В случае прокси объекта мы можем связать два объекта не делая запрос в базу, в отличии от метода get(). При использовании методов save(), update(), saveOrUpdate(), load(), get(), list(), iterate(), scroll() всегда будет задействован кеш первого уровня. Собственно, тут нечего больше добавить.
+26
Power Query: стероиды для MS Excel и Power BI
7 min
207KВ данной статье я хочу рассказать о некоторых возможностях бесплатной и крайне полезной, но пока еще мало известной надстройки над MS Excel под названием Power Query.
Power Query позволяет забирать данные из самых разных источников (таких как csv, xls, json, текстовых файлов, папок с этими файлами, самых разных баз данных, различных api вроде Facebook opengraph, Google Analytics, Яндекс.Метрика, CallTouch и много чего еще), создавать повторяемые последовательности обработки этих данных и загружать их внутрь таблиц Excel или самого data model.
И вот под катом вы можете найти подробности всего этого великолепия возможностей.
+34
Доклад: «Аспектно-ориентированное программирование в распределенных системах для java разработчиков и QA»
2 min
8.4KПод катом — краткое описание доклада про аспектно-ориентированное программирование и применение AspectJ-scripting, а также ссылки на материалы по теме и видеозапись выступления.
+6
Протоколирование JDBC запросов и их параметров в существующем приложении
4 min
13KВ публикации рассмотрим как можно внедрить логирование jdbc операций в существующее приложение без его пересборки и перекомпиляции. Это даст возможность протоколировать параметры запросов, которые заполняет программа, и многие другие аспекты работы с jdbc.
+15
Жонглирование. Теория. Практика
5 min
40KНастороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
- У жонглирования есть своя теория — стройная и математически привлекательная!
- Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
- В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.
Теория
Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
+232
Очень быстрый и эффективный способ расслабления глаз
4 min
412KПредисловие
Не знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
Обещаю, что эффект почувствуете сразу!
+230
Проблема с режимом сна в Mac OS Lion
3 min
88KПосле установки обновления огромное количество пользователей жалуются на некорректную реакцию компьютера на выход из режима сна, причём независимо от типа устройства, будь то iMac, Macbook или Mac Mini. Проявляется это таким образом: после погружения компьютера в сон, его уже невозможно разбудить традиционными способами: открытием крышки ноутбука, нажатием кнопки включения, etc, приходится делать hard reset. Главная прелесть заключается в том, что существует множество модификаций этого бага: у кого-то он проявляется только если вводить компьютер в режим сна путём закрытия крышки, у кого-то только путём нажатия «Режим сна» в меню; у кого-то он проявляется только при подключённом MagSafe, а у кого-то только при работе от аккумулятора. У меня же он проявляется крайне экзотическим образом: система просыпается, но ведёт себя так, как будто её перезапускали, — все приложения загружаются заново.
Что интересно, единого лекарства против этого нету. На форуме поддержки предлагают огромное количество решений проблемы, но ни один из них не помогает всем и наверняка.
Этот пост — сборка всех возможных решений отсюда: https://discussions.apple.com/thread/3190738.
+18
Покупка в Apple Store с доставкой в Россию
7 min
125KДля чего я пишу этот пост?
На многих форумах не устают задавать одни и те же вопросы, суть которых сводится к одному — “Где и как дешевле купить определенный девайс?”. Некоторые, осознав, что лучший способ это заказать заграницей и в этом нет ничего сложного, решаются на покупку в иностранном интернет магазине, но получают не совсем то, что ожидали, например, недавний пост «Так ли выгодно делать покупки за рубежом (на примере ebaytoday.ru)».
Особенно ярко это проявляется при покупке техники Apple, так как официально техника, если и поставляется, то с большой задержкой и в большинстве случаев по заоблачным ценам. Данная статья не сможет решить первую проблему в полной мере, так как Гонконг не является, так называемой “страной первой волны”, где в первую очередь появляются устройства от Apple, а вот метод борьбы со второй я и попытаюсь описать далее.
Итак, о чем же данный пост?
В данном посте я хочу описать весь процесс покупки техники на Apple Store HK через посредника(Shipito), начиная от основных моментов работы с shipito.com, заканчивая объединением нескольких посылок в одну и оплатой доставки в Россию. Описываемый способ может использоваться и для США, но, к сожалению, я не пробовал этого делать и, по некоторым отзывам, Apple Store US отказывается высылать на адреса Shipito, на этом моменте я постараюсь остановиться подробнее в заключении.
UPD: получил посылку, публикую Tracking #: CP839884595HK и пишу сроки внизу статьи.
+150
10 способов расположить к себе айтишника
3 min
3.1KНе копипаст и не перевод. Принимаются дополнения и уточнения ;)
1. Регулярно консультируйтесь с айтишником по поводу всего, что связано с системами сложнее веника
Будь то водогрей или сигнализация — это неважно. Айтишник должен разбираться во всём, что присутствует в современном мире и недоступно вам. Просто потому, что вам кажется, что он заумен. Физик ядерщик тем временем почему-то остаётся в стороне, хотя имеет к кондиционерам и дрелям ровно такое же отношение.
2. Задалбывайте айтишника словом «компьютерщик»
Ведь совсем неважно, что у каждого айтишника есть своя узкая специализация, хотя бы на верхнем уровне, «железа» и «софта», а свою специальность он уважает. Даже не забивайте себе голову мыслями о том, как бы вы, начальник отдела по продажам в секторе B2B, чувствовали себя назови кто-то вас «торгашом».
1. Регулярно консультируйтесь с айтишником по поводу всего, что связано с системами сложнее веника
Будь то водогрей или сигнализация — это неважно. Айтишник должен разбираться во всём, что присутствует в современном мире и недоступно вам. Просто потому, что вам кажется, что он заумен. Физик ядерщик тем временем почему-то остаётся в стороне, хотя имеет к кондиционерам и дрелям ровно такое же отношение.
2. Задалбывайте айтишника словом «компьютерщик»
Ведь совсем неважно, что у каждого айтишника есть своя узкая специализация, хотя бы на верхнем уровне, «железа» и «софта», а свою специальность он уважает. Даже не забивайте себе голову мыслями о том, как бы вы, начальник отдела по продажам в секторе B2B, чувствовали себя назови кто-то вас «торгашом».
+129
Страсть к программированию
2 min
75KНа днях дочитал книгу Чеда Фоулера (Chad Fowler) Страсть к программированию (The Passionate Programmer). Сразу скажу, что она мне действительно понравилась и даже меня зажгла. На мой взгляд, данный опус не совсем соответствует своему названию (которое, кстати, уже менялось) и книга вряд ли придаст кому-то реальной страсти к такому интересному занятию как программинг. Однако следуя её советам вполне можно построить эффектную карьеру в любимом деле. Автор указывает на типичные ошибки и показывает, как их избежать. В конце каждого из разделов (а их 53) есть пункт «Действуй!» с описанием того, что можно попробовать и применить прямо здесь и сейчас.
Книга мне настолько понравилась, что я решил начать её переводить. Оригинал можно скачать здесь стоит это удовольствие всего 15$. В среднем буду стараться держать темп — по одному разделу в неделю, со временем доходя до 2-3 разделов. А сегодня — глава первая.
Книга мне настолько понравилась, что я решил начать её переводить. Оригинал можно скачать здесь стоит это удовольствие всего 15$. В среднем буду стараться держать темп — по одному разделу в неделю, со временем доходя до 2-3 разделов. А сегодня — глава первая.
+13
Задержка курсора 32 миллисекунды в Mac OS X
1 min
15KРазработчик приложений под OS X Евгений Зуев рассказывает о лаге рендеринга курсора под Mac OS X, который они никак не могут побороть. Имеется в виду задержка между получением информации от мыши и рендерингом нового положения курсора.
Оказывается, сейчас лаг составляет 32 мс, из-за чего на «маках» не так комфортно играть в игры, как на Linux или Windows, где более высокая скорость реакции на движения мыши. Излишне восприимчивых пользователей тоже раздражает едва уловимое «подтормаживание» курсора в OS X.
Оказывается, сейчас лаг составляет 32 мс, из-за чего на «маках» не так комфортно играть в игры, как на Linux или Windows, где более высокая скорость реакции на движения мыши. Излишне восприимчивых пользователей тоже раздражает едва уловимое «подтормаживание» курсора в OS X.
+39
Как я проходил собеседование в компанию Zynga
11 min
27KНа Хабре опять стали появляться статьи о том, как проходить собеседования на должность программиста. Материал из них полезен соискателям так же, как учебники полезны студентам во время сессии. Вызубрите том по Мат. Анализу и, если попадете на тот экзамен, получите пятерку.
Гораздо интереснее читать реальные истории людей, которые описывают свой опыт собеседований в ту или иную известную компанию. Что спрашивали, что не спрашивали, какая была атмосфера, сколько проходило интервью? Такие данные много полезнее, чем «а зазубри еще это, авось спросят».
Итак, я хочу рассказать о том, как представители компании Zynga приезжали в Москву в поисках нужных людей. О своем опыте общения с ними, об ошибках и сделанных выводах.
Ну, и картиночка на затравку.
Гораздо интереснее читать реальные истории людей, которые описывают свой опыт собеседований в ту или иную известную компанию. Что спрашивали, что не спрашивали, какая была атмосфера, сколько проходило интервью? Такие данные много полезнее, чем «а зазубри еще это, авось спросят».
Итак, я хочу рассказать о том, как представители компании Zynga приезжали в Москву в поисках нужных людей. О своем опыте общения с ними, об ошибках и сделанных выводах.
Ну, и картиночка на затравку.
+242
SSD и HDD в теле одного MacBook Pro
4 min
162KПриветствую, уважаемые хабражители.
Мой опыт, которым я хочу с вами поделиться, должен оказаться полезным для всех пользователей ноутбуков, хотя мой частный пример — MacBook Pro.
После покупки сего агрегата, с порядковым номером в линейке: 6.1, я ожидал невиданных ранее скоростей, но, увы, предательская каруселька перегрузки, на месте курсора > появлялась достаточно часто, заставляла себя ждать, мучила вопросом «как так?!» при этом скорость загрузки тотально укомплектованной операционной системы составляла примерно 2+ минуты, с загрузкой 5-и приложений (различной тяжести) на автозапуске.
Такие показатели + периодические подвисания оказались досадным и обидным заключением, ведь под капотом процессор i7 / 4Gb DDR3 / 5 Series Chipset с возможной скоростью обмена данными в 3 гигабита.
Тогда я решил разобраться с досадной загвоздкой в скорости работы и решить проблему апгрейдом доступных внутренностей ноутбука; не смотря на то, что сам по себе ноутбук уже встал в солидную копеечку, мириться с такой его манерой работы — я не мог.
Мой опыт, которым я хочу с вами поделиться, должен оказаться полезным для всех пользователей ноутбуков, хотя мой частный пример — MacBook Pro.
После покупки сего агрегата, с порядковым номером в линейке: 6.1, я ожидал невиданных ранее скоростей, но, увы, предательская каруселька перегрузки, на месте курсора > появлялась достаточно часто, заставляла себя ждать, мучила вопросом «как так?!» при этом скорость загрузки тотально укомплектованной операционной системы составляла примерно 2+ минуты, с загрузкой 5-и приложений (различной тяжести) на автозапуске.
Такие показатели + периодические подвисания оказались досадным и обидным заключением, ведь под капотом процессор i7 / 4Gb DDR3 / 5 Series Chipset с возможной скоростью обмена данными в 3 гигабита.
Тогда я решил разобраться с досадной загвоздкой в скорости работы и решить проблему апгрейдом доступных внутренностей ноутбука; не смотря на то, что сам по себе ноутбук уже встал в солидную копеечку, мириться с такой его манерой работы — я не мог.
+75
Таблетки с CES. Итоговая таблица
3 min
2KTranslation
Выставка CES в Лас-Вегасе просто разразилась невиданным множеством планшетных компьютеров на всевозможных платформах. Среди них преобладают железки на Android или Windows 7. Журналисты engadget постарались и собрали список всех анонсированных планшетов. Под хабракатом вы увидите весь сводный список грядущих таблеток с кратким описанием каждой из них, а также планируемой датой выпуска и ценой.
+71
Трое В Серверной, Версия 1.0, Новогодняя Редакция
1 min
783Трое в Серверной, версия 1.0, киберпанковская, финальная. Маленький подарок всем поклонникам сериала ТВС :)
http://троевсерверной.рф/
http://троевсерверной.рф/
+31
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity