Я никогда не использовал Spring framework (Java) и мало задумывался об его изучении даже с учетом того, что Grails framework, который я люблю и периодически на его основе разрабатываю проекты, базируется на Spring framework-е. Но настал момент истины и я решил из любопытства ознакомиться с этой технологией. Вместо того что бы читать документацию, я решил скачать книгу. Стоит упомянуть, что книга была бесплатная и ее можно скачать.

Нередко, описывать технические книги также интересно – они как и любые другие книги содержат историю и часто можно забыть, что читаешь технический материал. В данном конкретном случае это не так! Весь изложенный материал представляет краткие описания примеров использования технологии и кучу кода. Можно забыть, что читаешь книгу так как создается впечатление, что перелистывая страницы, смотришь на исходный код программы и никаких более полезных материалов не присутствует. Удручает отсутствие полноценных объяснений и сценариев использования. Например, если я читаю про IoC (Inversion of Control) то автору стоит объяснить его читателям: что это такое, почему это нужно использовать, дать пару примеров использования, как больших так и малых, не ограничиваясь поверхностным описанием.

Что же позитивного в этой книге? Если рассматривать книгу как маленькое введение и ознакомление с Спрингом, то она вполне адекватно раскрывает предмет рассмотрения, но на мой взгляд, все же не подойдет новичкам. С другой стороны, если вы уже знаете предмет и хотите быстро ознакомиться с возможностями Spring, не уходя далеко, то эта книга для вас.

Итого:
+: Бесплатна

+: Хороша для быстрого просмотра 

-: Суха как туалетная бумага

-: Нет объяснений и глубины раскрытия предмета

-: Чувствуется расчет на более менее опытного программиста

=: Если вы хотите в деталях изучить Spring и понять что да как, то эта книга не для вас! Если вы хотите просто и быстро ознакомиться и у вас есть опыт программирования то можете просмотреть. Я лично собираюсь посмотреть другую книгу, что бы полноценно ознакомиться со Spring-ом.


Название: Spring Framework 3.1 tutorial
Автор: tutorialspoint.com
Обложка:
SpringTutorial_2014-05-14

ЗЫ: Большое спасибо Stripcode-у за помощь в редактировании статьи.


This article is dedicated to performance estimations and analysis of Atlassian Stash. Recently, I encountered performance issues with Stash – got the following banner on top of the website: “Atlassian Stash is reaching resource limits” and that, prompted questions about performance and possible solutions.

Note:
After initial log reviews, it was established that there are no issues or errors that might prevent Stash from optimal operation. In case of crashes or other issues with Stash, this article will not be helpful.

Data & Performance:
First get access to Stash’s access logs. Please note that log files might be broken into multiple parts so make sure to get them all. Example:

• atlassian-stash-access-2014-04-29.0.log
• atlassian-stash-access-2014-04-29.1.log

Next get “stash-log-parser” – https://bitbucket.org/ssaasen/stash-log-parser. It will go through logs and extract all the relevant information and as a bonus it can make a few very useful graphs.

Once you run the parser and get results, you can quickly review graphs and estimate where and when issues occur. Perhaps you have “automated building tools” that like to clone repos right in the middle of a workday and therefore are straining the server’s resources to the max.

graph1_05062014

Next you will have to make a rough estimate of your usage and make sure that your machine has enough “juice” to pull the workload. First familiarize yourself with Stash’s “appetite”: https://confluence.atlassian.com/display/STASH/Scaling+Stash

Essentially rough estimates will come out to the following:
CPU requirements: number of CPUs = number of concurrent clone operations / 2
RAM requirements: amount of memory = 1.5 * number of concurrent clone operations * average repository size (if repository is larger than 700MB, then use 700MB for above calculation).

There are other GIT operations (besides clone), but clone is the most demanding one and therefore approximate system requirements are measured via “it”. So let’s take a look at the following examples:

Assume that you have a small setup with an average of 2 concurrent clones and repository sizes of about 5 MB, therefore you will need one CPU core and about 15MB of memory. Another case: you have around 10 concurrent clone requests with repository size of 2GB, therefore you will have to have CPU with at least 5 cores, and about 10.5GB of RAM.

graph2_05062014

Please note: that Stash itself doesn’t use the entire memory; instead it delegates GIT work to underlying GIT client that is installed in the operating system. Therefore you native GIT client will perform heavy lifting, allocating and de-allocating memory accordingly.

One more piece of advice with memory estimation – try to take an average size of actively used repositories. Stash might host several hundred repos, however active repositories might number only one hundred. In that case it would make sense to measure the average size of only active repos and calculate memory requirements based on that.

graph3_05062014

Also I would strongly encourage log accumulation (sometimes logs are not kept for more than a week) – that would allow having usage data for longer periods of time and therefore more accurately reflect usage and future needs.

Solutions:
There are a number of solutions that can be employed, in order to reduce workload and improve performance, however performance largely depends on a particular setup and usage scenario. Here are a couple of solutions:

1. Use SCM Cache Plugin in order to reduce cloning load on Stash (https://confluence.atlassian.com/display/STASH/Scaling+Stash)
2. Configure automatic build tools to use HTTP/HTTPS protocol
3. Configure hooks in Stash in order to notify automatic build tools of changes, instead of having automatic build tools pull data on a schedule – reducing number of requests
4. Re-schedule automatic build tools to run off peak hours
5. Upgrade hardware to estimated requirements


Введение:

Защитник – девятая книга в серии “Потерянный флот”, в которой продолжается повествование о жизни великого Блэк Джека. События разворачиваются на границе человеческого космоса после того как флот вернулся из длинной изнуряющей экспедиции в ранее неисследованные части вселенной. Однако, добраться до дома – Альянса будет не так просто! Путь пролегает через Синдикатные миры, которые проиграв войну все ещё пытаются избавиться от флота Альянса всеми мыслимыми и немыслимыми путями.

Мои мысли:

История достаточно развлекательная, но к сожалению далека от идеала. Автору не удалось написать ни захватывающей ни глубокой истории, сравнимой с историями Даниеля Суареза и Петера Хамильтона. Даже если сравнить “Защитника” с его предыдущими книгами той же серии, чувствуется что эта книга выбивается из общего замысла – будто автор потерял мысль и не может вернуться к ней обратно.

Книга не вызывает волнения от приключений, боя, технических загадок, а представляется сухим докладом, окончить ознакомление с которым хочеться побыстрее. После одной трети книги я даже подумал, что возможно стоит закончить её прочтение. Однако, после затянутого начала, автор все же пытается оживить историю и придать ей вкус приключений и политической интриги. И все же, ожидание разворота сюжетной линии после двух третей книги становится безнадежной задачей! Создается ощущение, что вся книга является своеобразной прелюдией к следующим приключениям великого “Блэк Джека”.

Итого:
+: Хорошо показана армейская жизнь
+: Можно провести время, в особенности, если вы знакомы со всей историей
-: Нет никакого новшества за исключением пары моментов в истории
-: Скучно и предсказуемо
-: Местами крайне много упора на политику
=: Книгу прочитать/послушать стоит если нет других альтернатив или если вы действительно любите всю серию книг и хотите следить за развитием истории. Лично мне, эта книга напоминает уже заезженный сериал, который должен был завершится пару сезонов назад, но все ещё продолжается.

Название: The Lost Fleet Beyond The Frontier – Guardian
Автор: John G. Hemry / Jack Campbell
Обложка:
Lost Fleet Beyond The Frontier - Guardian-cover

ЗЫ: Большое спасибо Stripcode-у за помощь в редакции статьи.