<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Блог с перчинкой - Всё и сразу</title>
		<link>http://jcup.ru</link>
		<description>«Блог с перчинкой» радует своих читателей диковинными заметками об аспектах жизни авторов блога.</description>
		<language>ru-ru</language>
		<atom:link href="http://jcup.ru/rss" rel="self" type="application/rss+xml" />
		<item>
			<title><![CDATA[Сравнение WEBP с JPG]]></title>
			<link>http://jcup.ru/tekhnika/webp-vs-jpg</link>
			<guid>http://jcup.ru/tekhnika/webp-vs-jpg</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/webp-vs-jpg/sravnenie-webp-s-jpg.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/webp-vs-jpg/sravnenie-webp-s-jpg.jpg" alt="WEBP vs JPG. С приходом WEBP, шутки про шакалов останутся в прошлом." title="WEBP vs JPG. С приходом WEBP, шутки про шакалов останутся в прошлом."/>
    </picture>
    <span class="hide" itemprop="description">WEBP vs JPG. С приходом WEBP, шутки про шакалов останутся в прошлом.</span>
</div>  " /><style>
.formats-container {
  display:flex;
}
.formats-container p:nth-child(1) {
  padding-bottom:0px; 
  display:block; 
  width:50%
}
.formats-container p:nth-child(2) {
  padding-bottom:0px; 
  display:block; 
  width:50%; 
  text-align:right;
}
</style>

<p>Весь Интернет восхваляет относительно новый <a class="btn-link" href="https://ru.wikipedia.org/wiki/WebP">формат <b>WEBP</b></a>, но действительно ли он так хорош и лучше <b>проверенного временем <a class="btn-link" href="https://ru.wikipedia.org/wiki/JPEG">JPG</a></b>? Спойлер: Как оказалось, не всегда. В деталях сравним оба формата и разберемся какой из них лучше.</p>

<h2>Не сжатие, а потеря</h2>
<p>Оба формата призваны <b>уменьшить размер исходного файла</b> и используют для этого сжатие. <b>Сжать</b> - в лексиконе большинства графических форматов, означает <b>потерять часть исходного</b>, но при этом <b>сохранить суть</b> изображения. После сжатия изображение не является оригиналом, а скорее похоже на него. <b>JPG и WEBP используют различные алгоритмы</b> со своими плюсами и минусами.</p>

Если говорить о сжатии, различают понятия <b>«сжатие без потерь»</b> и <b>«сжатие с потерями»</b>, и WEBP, в отличие от JPG еще умеет сжимать без потерь, при этом показывая лучшие результаты, даже чем <b>png</b>(формат изображений, реализующий только сжатие без потерь).

<h2>Техническое сравнение наиболее распространенных форматов</h2>
<div class="tableWrapper tableLeftHeader">
<table>
  <thead>
  <tr>
    <th>Сравнение популярных<br/>графических форматов</th>
    <th>JPG</th>
    <th>WEBP</th>
    <th>PNG</th>
    <th>GIF</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>год выпуска</td>
    <td>1991</td>
	<td>2010</td>
    <td>1996</td>
    <td>1987</td>
  </tr>
  <tr>
    <td>сжатие с потерями</td>
    <td>+</td>
	<td>+</td>
    <td>-</td>
    <td>+</td>
  </tr>
  <tr>
    <td>сжатие без потерь</td>
    <td>-</td>
	<td>+</td>
    <td>+</td>
    <td>-</td>
  </tr>
  <tr>
    <td>анимация</td>
    <td>-</td>
	<td>+</td>
    <td>-</td>
    <td>+</td>
  </tr>
  <tr>
    <td>прозрачность</td>
    <td>-</td>
	<td>+</td>
    <td>+</td>
    <td>+</td>
  </tr>
  <tr>
    <td>прогрессивность<br/>(миниатюра для<br/>предпросмотра)</td>
    <td>+</td>
	<td>-</td>
    <td>-</td>
    <td>-</td>
  </tr>
  </tbody>
</table>
</div>

<h2>В каких случаях JPG оказывается лучше WEBP или ложка дёгтя</h2>

<p>Я прочитал множество статей на похожие темы, но мне не доводилось видеть <b>примеры в которых JPG побеждает WEBP</b>, а ведь не всё так хорошо с WEBP. Предчувствуя косые взгляды, в качестве доказательства я прикладываю изображения в указанных форматах.</p>

<p>Настоятельно рекомендую просматривать эту статью <b>на большом экране</b>. Все <b>сравниваемые изображения</b> в разных форматах примерно <b>равны по размеру</b>. JPG всегда слева, WEBP справа.</p> 
<p>Первым идёт <b>Микки Рурк</b> с его фактурным лицом. Обратите внимание, сколько деталей теряет WEBP.</p>

<div class="formats-container"><p>JPG, 40.4KB</p><p>WEBP, 41.8KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>
<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/mickey-rourke.jpg">
    <span class="file-download-container file-download-extension-jpg">
        <i>Скачать <br/> <b>Mickey Rourke.jpg</b><br/> 40.4 КБ</i>
    </span>
</a>

<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/mickey-rourke.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать <br/> <b>Mickey Rourke.webp</b><br/> 41.8 КБ</i>
    </span>
</a>
<br/>

<hr/>

<p>Светящийся логотип нашего блога на фоне темной бумаги. На втором изображении наблюдается потеря цвета ореола свечения и огромного количества мелких деталей. Тем не менее саму перчинку оба формата передают хорошо.</p>
<div class="formats-container"><p>JPG, 55.7KB</p><p>WEBP, 55.1KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>
<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/black-pepper.jpg">
    <span class="file-download-container file-download-extension-jpg">
        <i>Скачать <br/> <b>black pepper.jpg</b><br/> 55.7 КБ</i>
    </span>
</a>

<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/black-pepper.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать <br/> <b>black pepper.webp</b><br/> 55.1 КБ</i>
    </span>
</a>
<br/>

<hr/>

<p>Логотип блога на фоне обычного листа бумаги. Мелкие детали на белый фоне в WEBP тоже страдают.</p>
<div class="formats-container"><p>JPG, 57.8KB</p><p>WEBP, 57.5KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>
<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/white-pepper.jpg">
    <span class="file-download-container file-download-extension-jpg">
        <i>Скачать <br/> <b>white pepper.jpg</b><br/> 57.9 КБ</i>
    </span>
</a>

<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/white-pepper.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать <br/> <b>white pepper.webp</b><br/> 57.5 КБ</i>
    </span>
</a>
<br/>

<hr/>

<h2>Когда WEBP равен JPG по количеству деталей</h2>

<p>Яблоки, 1280x800. Изображение преимущественно состоит из плавных градиентов. Много одноцветных областей. <b>WEBP чувствует себя</b> в таких условиях <b>просто прекрасно</b>.</p>
<div class="formats-container"><p>JPG, 177KB</p><p>WEBP, 133KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>

<hr/>

<p>Заказ на море, 1280x800. Изображение преимущественно состоит из плавных градиентов. Много одноцветных областей. <b>WEBP чувствует себя</b> в таких условиях <b>просто прекрасно</b>.</p>
<div class="formats-container"><p>JPG, 148KB</p><p>WEBP, 115KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>

<hr/>

<p>Осенний лес, 1280x800. Количество мелких деталей зашкаливает. Неожиданным образом, <b>WEBP</b>, хоть и немного, но <b>проиграл JPG</b>, <b>размер файла WEBP</b> оказался <b>больше на 62КБ</b>.</p>
<div class="formats-container"><p>JPG, 438KB</p><p>WEBP, 500KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>
<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/firest.jpg">
    <span class="file-download-container file-download-extension-jpg">
        <i>Скачать <br/> <b>firest.jpg</b><br/> 438.4 КБ</i>
    </span>
</a>

<a class="file-download-link" target="_blank" href="/files/tekhnika/webp-vs-jpg/forest.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать <br/> <b>forest.webp</b><br/> 500.9 КБ</i>
    </span>
</a>
<br/>


<h2>Минимально-возможный уровень качества</h2>

<p>При сильной степени сжатия сильные мягкие градиенты на JPG становятся пилообразными и появляются артефакты. Изображение в шапке этого статьи, так же относится к этому разделу.</p>
<p>Едва поверив глазам, видим, на это изображение WEBP понадобилось всего 1840 байт. Без приукрас, WEBP - король плавных градиентов при минимальном размере изображения.</p>
<div class="formats-container"><p>JPG. 5.49KB</p><p>WEBP. 1.84KB </p></div>
<p><b>На этом месте располагается интерактивный элемент, который не може быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a></b></p>

<h2>Выявленные плюсы и минусы форматов</h2>
<div class="tableWrapper tableLeftHeader">
<table>
  <thead>
  <tr>
    <th>Плюсы и минусы<br/>WEPB и JPG</th>
    <th>JPG</th>
    <th>WEBP</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>чёткие границы</td>
    <td>вокруг границ появляются артефакты</td>
	<td>небольшое размытие границ</td>
  </tr>
  <tr>
    <td>градиенты</td>
    <td>появляются острые грани</td>
	<td>отлично</td>
  </tr>
  <tr>
    <td>нечеткие детали</td>
    <td>хорошо</td>
	<td>теряют фактуру</td>
  </tr>
  <tr>
    <td>общая чёткость</td>
    <td>чётко</td>
	<td>небольшая «мыльность»<br/>в высоком и низком диапазонах</td>
  </tr>
  <tr>
    <td>общая чёткость<br/>при сильном сжатии</td>
    <td>чётко, появляются артефакты</td>
	<td>изображенте «замылено»<br/>в деталях, границы чёткие</td>
  </tr>
  <tr>
    <td>прогрессивность</td>
    <td>грузится от размытого к четкому</td>
	<td>грузится сверху вниз</td>
  </tr>
  <tr>
    <td>размер файла</td>
    <td>выше</td>
	<td>ниже на 30%</td>
  </tr>
  <tr>
    <td>поддержка браузерами</td>
    <td>абсолютная</td>
	<td>>60%</td>
  </tr>
  </tbody>
</table>
</div>

<p>Как мы видим из таблицы, WEBP не всегда лучше JPG. Тем не менее, чаще всего выигрывает по размеру и качеству, если не требуется показать мелкие фактурные детали.</p>

<h2>Выводы</h2>

<p>Совсем недавно я переводил этот блог на WEBP. Прочитайте с <a class="btn-link" href="/php/chinim-generaciyu-webp-v-php">какими трудностями</a> мне пришлось столкнуться. Я получил <b>потерю мелких деталей</b> при использовании WEBP, даже <b>при степени сжатия 85%</b>, и это, конечно, не радует, но <b>размер</b> при этом получается <b>меньше примерно на 30%</b>. Невооруженным взглядом заметить отсутствие мелких деталей сложно, зато хорошо заметно <b>увеличение скорости загрузки</b> страницы. Таким образом, объём главной страницы этого блога при использовании WEBP <b>уменьшился с 1.8МБ, до 1.1МБ</b>, что довольно ощутимо, скорость загрузки <b>возросла почти в 2 раза</b>. Сейчас средняя иллюстрация при использовании webp, в разрешении 1280x800, занимает примерно 120КБ.</p>

<p>Не смотря на некоторые недостатки, использование <b>WEBP несёт ощутимые преимущества</b>. А использовать его или нет, решать вам.</p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/tekhnika/webp-vs-jpg'>http://jcup.ru/tekhnika/webp-vs-jpg</a><p>]]></description>
			<pubDate>Sun, 23 Dec 2018 12:47:01 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Чиним генерацию WEBP в PHP]]></title>
			<link>http://jcup.ru/php/chinim-generaciyu-webp-v-php</link>
			<guid>http://jcup.ru/php/chinim-generaciyu-webp-v-php</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/php/chinim-generaciyu-webp-v-php/bag-generacii-webp-v-php.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/php/chinim-generaciyu-webp-v-php/bag-generacii-webp-v-php.jpg" alt="Баг генерации WEBP в PHP. Решаем при помощи костылей." title="Баг генерации WEBP в PHP. Решаем при помощи костылей."/>
    </picture>
    <span class="hide" itemprop="description">Баг генерации WEBP в PHP. Решаем при помощи костылей.</span>
</div>  " /><p>На днях добавил к блогу <b>поддержку формата WEBP</b>. Работать начало всё сразу, но без костылей не обошлось.<br/> Каналы передачи данных становятся всё шире, скорости растут, а дух оптимизатора все никак не унимается. <b>WEBP обещает выигрыш до 30%</b> на размер файла <b>по сравнению с JPG</b> при примерно одинаковом количестве деталей. Проверено, так и есть.</p>

<h2>Реализация WEBP на этом блоге</h2>

<p>Сегодня, из всех браузеров, полноценно <b>поддерживают WEBP только Chromium-подобные браузеры</b>. Не очень-то и обширно, но радует, что крупные игроки <b>один за одним сообщают о внедрении технологии</b> в ближайшее время. Тем не менее, реализуя поддержку WEBP уже сегодня, мы получаем ощутимый прирост скорости загрузки. А по <a class="btn-link" href="https://www.comss.ru/page.php?id=4951">данным comss.ru</a>, мы покрываем <b>более 60% всех пользователей</b>.</p>

<div class="tableWrapper">
<table>
  <thead>
  <tr>
    <th>Браузер</th>
    <th>Покрытие, %</th>
    <th>webp</th>
    <th>Примечание</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>Chromium</td>
    <td>61,29</td>
    <td>да</td>
	<td>все Chromium-подобные браузеры<br/>(Chrome, Yandex-браузер, новая Opera и.т.д)</td>
  </tr>
  <tr>
    <td>Firefox</td>
    <td>12,38</td>
    <td>нет</td>
	<td>говорят, поддержку уже добавили в тестовую версию</td>
  </tr>
  <tr>
    <td>Edge</td>
    <td>4,03</td>
    <td>нет</td>
	<td>поддержку грозятся внести не только в Edge, но ещё и в Windows</td>
  </tr>
  </tbody>
</table>
</div>

<p>Как же быть с браузерами, не поддерживающими WEBP? Умные головы придумали <b>тег &lt;picture&gt;</b>, а в нём <b>теги &lt;source&gt;</b> с указанием типа изображения и пути к файлу. Браузеры сами решают, какое изображение они будут показывать. Например, <b>Chrome выбирает WEBP</b>. Современные браузеры корректно обработают эту конструкцию, а старые пропустят неизвестные теги. Особое внимание нужно обратить на атрибут <b>type</b>, в нем указывается <b>mime-тип</b> изображения.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/php/chinim-generaciyu-webp-v-php'>http://jcup.ru/php/chinim-generaciyu-webp-v-php</a></b></p>

<p>Я был приятно удивлен, обнаружив поддержку <b>WEBP</b> в библиотеке <b>php-gd</b>. На стороне сервера за сохранение изображений отвечают следующие функции:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/php/chinim-generaciyu-webp-v-php'>http://jcup.ru/php/chinim-generaciyu-webp-v-php</a></b></p>

<h2>PHP ломает WEBP</h2>

<p>Как и положено, у этого блога есть 2 сервера. На тесте стоит php 5.6.36, на проме php 5.6.37. Внеся все необходимые правки, я протестировал сайт на домашнем компьютере и <b>обновил пром</b>. Я был удивлен, изображения на проме не отображались, вообще, хотя на тестовом сервере работали без проблем.</p>

<p>В консоли хрома ошибок не было, более того Хром рапортовал о нормальной загрузке изображений.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/php/chinim-generaciyu-webp-v-php/konsol-hroma.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/php/chinim-generaciyu-webp-v-php/konsol-hroma.jpg" itemprop="contentUrl" alt="Консоль хрома рапортовала о успешной загрузке изображений." title="Консоль хрома рапортовала о успешной загрузке изображений."/>
    </picture>
    <span class="image-description" itemprop="description">Консоль хрома рапортовала о успешной загрузке изображений.</span>
</div>

<p>Я <b>скачал сгенерированный WEBP-файл</b> с блога и... файл отлично открылся в <b>ACDSee</b>. Сравнивая файлы прома и теста, я обнаружил <b>несоответствие размеров для сгенерированных WEBP-файлов на сервере</b> и на домашнем компьютере. Размер файлов отличался всего лишь в 1 байт.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/php/chinim-generaciyu-webp-v-php/prichina-nerabotosposobnosti-webp.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/php/chinim-generaciyu-webp-v-php/prichina-nerabotosposobnosti-webp.jpg" itemprop="contentUrl" alt="Изображение с теста и прома. Размер файлов не совпадает." title="Изображение с теста и прома. Размер файлов не совпадает."/>
    </picture>
    <span class="image-description" itemprop="description">Изображение с теста и прома. Размер файлов не совпадает.</span>
</div>

<p>Вот эти 2 файла:</p>
<a class="file-download-link" target="_blank" href="/files/php/chinim-generaciyu-webp-v-php/jcup-gen.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать изображение с теста<br/> <b>jcup_gen.webp</b><br/> 157 КБ</i>
    </span>
</a>

<a class="file-download-link" target="_blank" href="/files/php/chinim-generaciyu-webp-v-php/jcup-ru.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать изображение с прома<br/> <b>jcup_ru.webp</b><br/> 157 КБ</i>
    </span>
</a>


<p>Сдул пыль с <b><a class="btn-link" href="https://mh-nexus.de/en/hxd/">HEX-редактора</a></b> и полез смотреть, чего там не хватает. Оказалось, что <b>промовкий PHP не дописывает 1 байт в конец файла</b>, файл оказывается не валидным и <b>Chrome не может его отобразить</b>. <b>Обновление пакетов</b> <b>php5.6</b> и <b>php5.6-gd</b> на проме не дало, ровным счётом, никаких результатов.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/php/chinim-generaciyu-webp-v-php/webp-fayl-v-hex-redaktore.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/php/chinim-generaciyu-webp-v-php/webp-fayl-v-hex-redaktore.jpg" itemprop="contentUrl" alt="В конце файла отсутствует байт x00 Проблема невалидности WEBP." title="В конце файла отсутствует байт x00 Проблема невалидности WEBP."/>
    </picture>
    <span class="image-description" itemprop="description">В конце файла отсутствует байт x00 Проблема невалидности WEBP.</span>
</div>

<p>Немного поисследовав структуру WEBP, я пришел к выводу, что <b>все живые файлы всегда заканчиваются байтом x00</b>, кроме того WEBP продолжает нормально работать, если добавить <b>любое количество x00 в конец</b>. Можете проверить сами, всё отлично работает:</p>
<a class="file-download-link" target="_blank" href="/files/php/chinim-generaciyu-webp-v-php/ru-with-many-x00.webp">
    <span class="file-download-container file-download-extension-image">
        <i>Скачать webp с огромным кол-ом x00 в конце<br/> <b>ru_with_many_x00.webp</b><br/> 157.1 КБ</i>
    </span>
</a>


<p>Так и появился на свет очередной костыль. Сразу после генерации изображения, <b>дописываем x00 в конец</b> файла.</p>

<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/php/chinim-generaciyu-webp-v-php'>http://jcup.ru/php/chinim-generaciyu-webp-v-php</a></b></p>
<p>Оригинальный адрес статьи: <a href='http://jcup.ru/php/chinim-generaciyu-webp-v-php'>http://jcup.ru/php/chinim-generaciyu-webp-v-php</a><p>]]></description>
			<pubDate>Fri, 21 Dec 2018 15:12:58 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Разгон оперативной памяти. Тайминги, частоты, напряжения.]]></title>
			<link>http://jcup.ru/tekhnika/razgon-operativnoy-pamyati</link>
			<guid>http://jcup.ru/tekhnika/razgon-operativnoy-pamyati</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razgon-operativnoy-pamyati.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/razgon-operativnoy-pamyati.jpg" alt="Разгон оперативной памяти. То чувство, когда 1333 DDR3 = 2400 DDR." title="Разгон оперативной памяти. То чувство, когда 1333 DDR3 = 2400 DDR."/>
    </picture>
    <span class="hide" itemprop="description">Разгон оперативной памяти. То чувство, когда 1333 DDR3 = 2400 DDR.</span>
</div>  " /><p>Изменение частоты памяти не влияет на её реальную скорость. <b>«Что за бред! Чем выше частота, тем лучше!»</b> - возразите вы. Дочитайте статью до конца и я развею все ваши сомнения.</p>

<h2>«Физика» работы памяти</h2>
<p>Каждая микросхема памяти состоит из миллионов ячеек данных. Каждая ячейка, в свою очередь, может хранить только одно из двух возможных значений, либо 0, либо 1. Но это только на логическом уровне, на физическом же уровне ячейка представляет из себя конденсатор, запасающий определенный уровень заряда. Если уровень напряжения выше определенного значения, считаем, что в ячейке записана логическая единица, если ниже логический ноль. Таким образом, каждая ячейка памяти хранит 1 бит данных.</p>
<p>Как всегда, в бочке мёда, есть ложка дёгтя. У ячеек данных слишком <b>короткая память</b>, дело в том, что конденсаторы слишком <b>быстро разряжаются</b>, всего за несколько миллисекунд ячейка способна <b>забыть всё</b>. Что тут говорить, даже при чтении данных <b>расходуется заряд</b>. Но помощь приходит контроллер.</p>

<p>Всем этим оркестром ячеек дирижирует <b>контроллер</b>. У микроконтроллера в арсенале есть всего 2 инструмента: <b>вольтметр</b> и <b>«зарядник»</b>. Контроллер получает питание с материнской платы и именно «мамка» решает на каком напряжении будет работать память. Именно этим напряжением контроллер заряжает ячейки с логической единицей, при логическом же нуле контроллер разряжает ячейку.</p>

<!--<h3>Записываем данные</h3>
<p>Контроллер памяти обращается к нужным ячейкам и последовательно либо заряжает ячейки(логическая единица), либо разряжает(логический ноль).</p>

<h3>Читаем данные</h3>
<p>Контроллер памяти обращается к нужным ячейкам и последовательно измеряет напряжение. Если напряжение выше определенной величины, приравнивает значение ячейки к логической единицей, если ниже, к логическому нулю.</p>-->

<h3>Удерживаем данные в памяти</h3>
<p>Как я писал выше, данные нельзя хранить просто так, все записанное будет потеряно в считанные миллисекунды. Умные головы придумали как решить эту проблему и научили контроллер постоянно сканировать ячейки и подзаряжать их. Контроллер памяти проходит все ячейки памяти сотни раз в секунду, считывая значения и записывая в ячейки эти же самые значения, тем самым подзаряжает разрядившиеся ячейки.
</p>
<p>Если перестать подзаряжать ячейки памяти, данные будут потеряны. Именно поэтому оперативную память называют <b>энергозависимой</b>.</p>
<br/>

<h2>Разгон оперативной памяти</h2>

<p>Все операции в оперативной памяти зависят от:</p>
<ul>
<li>частоты</li>
<li>таймингов</li>
<li>напряжения</li>
</ul>

<h3>Тестовый образец</h3>
<p>Цифра прописанная на планке оперативной памяти не является тактовой частотой. Реальной частотой будет <b>половина от указанной</b>, DDR (Double Data Rate - удвоенная скорость передачи данных). Поэтому память DDR-400 работает на частоте 200 МГц, DDR2-800 на частоте 400 МГц, а DDR3-1333 на 666 МГц и т.д.</p>
<p>Итак, если на нашей планке оперативной памяти стоит метка <b>1600 МГц</b>, значит оперативная память работает на частоте <b>800 МГц</b> и может выполнить ровно <b>800 000 000 тактов</b> за <b>1 секунду</b>. А один такт будет длиться 1/800 000 000 = <b>125 нс (наносекунд)</b></p>

<h3>Физические ограничения</h3>
<p>Мы подобрались к главному в разгоне, а именно <b>физическому ограничению</b>, контроллер просто не успеет зарядить ячейку памяти за <b>1 шаг</b>, на это требуется потратить времени не меньше, чем определенного физическими законам. А то, что нельзя сделать за 1 шаг, делается за <b>несколько</b>.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razgon-operativnoy-pamyati/fizicheskoe-ogranichenie-pamyati.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/razgon-operativnoy-pamyati/fizicheskoe-ogranichenie-pamyati.jpg" alt="физическое ограничение памяти" title="физическое ограничение памяти"/>
    </picture>
    <span class="image-description" itemprop="description">физическое ограничение памяти</span>
</div>


<p>Например, в нашем случае, требуется потратить около <b>7 шагов</b> на зарядку. Таким образом, зарядка ячейки длится <b>875 нс</b>. Полное кол-во шагов, за которые можно выполнить одну операцию, буть то чтение, запись, стирание или зарядка, <b>называют таймингами</b>.</p>
<p>Стоит оговориться и сказать. Есть способ зарядить ячейку быстрее, нужно заряжать её большим напряжением. Если мы увеличиваем базовое напряжение работы оперативной памяти, то получаем преимущество по времени зарядки и следовательно можем уменьшить тайминг, тем самым увеличив скорость.</p>

<p>Итак, мы знает, что <b>частота памяти</b> это <b>количество операций</b>, которое может совершить контроллер за 1 секунду, в то время как <b>тайминги</b> это <b>количество шагов</b> контроллера, требуемое для полного завершения 1 действия.</p>

<p>В оперативной памяти реализовано множество таймингов, каких именно в рамках статьи не имеет особо значения. Важно лишь одно, чем <b>ниже тайминги</b>, тем <b>быстрее работает</b> память.</p>
<p>Именно увеличивая частоты, <b>исключительно в сочетании с таймингами</b> можно добиться увеличения производительности.</p>

<h3>Стандартные профили таймингов</h3>
<p>Качественная материнская плата даёт массу возможностей по оверклокингу. В оперативную память же встроены стандартные профили таймингов, оперативная память точно знает какие тайминги нужно выставлять с предлагаемыми частотами и настойчиво рекомендует «мамке» использовать именно их. Войдя в BIOS в раздел оверклокинга оперативной памяти, первое за что хочется подергать, это частота оперативной памяти. При изменении частоты автоматически пересчитываются таймтинги. По факту вы получаете примерно ту же производительность, но для другой частоты. Кроме того, матплата старается держать тайминги в стабильной зоне работы.</p>

<h3>Тайминги наглядно</h3>
<p>Продолжаем рассматривать тестовый образец. Как будет вести себя память после разгона?</p>

<div class="tableWrapper">
<table>
  <thead>
  <tr>
    <th>Частота<br/>памяти,<br/>Mhz</th>
    <th>Тактов за<br/>секунду,<br/>шт</th>
    <th>Время 1<br/>таминга,<br/>нс</th>
    <th>Таймингов до<br/>стабильной<br/>зоны, шт</th>
    <th>Всего<br/>затрачено<br/>времени, нс</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>2400</td>
    <td>1&nbsp;200&nbsp;000&nbsp;000</td>
	<td>83</td>
    <td>11</td>
    <td>913</td>
  </tr>
  <tr>
    <td>1600</td>
    <td>800&nbsp;000&nbsp;000</td>
	<td>125</td>
    <td>7</td>
    <td>875</td>
  </tr>
  <tr>
    <td>1333</td>
    <td>666&nbsp;500&nbsp;000</td>
	<td>150</td>
    <td>6</td>
    <td>900</td>
  </tr>
  <tr>
    <td>1066</td>
    <td>533&nbsp;000&nbsp;000</td>
	<td>180</td>
    <td>5</td>
    <td>900</td>
  </tr>
  <tr>
    <td>800</td>
    <td>400&nbsp;000&nbsp;000</td>
	<td>250</td>
    <td>4</td>
    <td>1000</td>
  </tr>
  </tbody>
</table>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razgon-operativnoy-pamyati/grafik-taymingov.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/razgon-operativnoy-pamyati/grafik-taymingov.jpg" alt="График таймингов, в зависимости от частоты. Красным обозначено минимальное количество таймингов до преодоления физического ограничения." title="График таймингов, в зависимости от частоты. Красным обозначено минимальное количество таймингов до преодоления физического ограничения."/>
    </picture>
    <span class="image-description" itemprop="description">График таймингов, в зависимости от частоты. Красным обозначено минимальное количество таймингов до преодоления физического ограничения.</span>
</div>


<p>Как видим из таблицы и графика, <b>поднимая частоту</b>, нам необходимо <b>увеличивать тайминги</b>, а вот время затрачиваемое на операцию практически <b>не изменяется</b>, как и <b>не растёт скорость</b>.</p> 
  
<p>Как видим, средняя оперативная память с частотой <b>800 будет равна</b> по производительности оперативной памяти с частотой <b>2400</b>. На что действительно стоит обратить внимание, так это <b>качество материалов</b>, которые применил производитель. Более качественные модули дадут возможность выставлять <b>более низкие тайминги</b>, а следовательно <b>большее кол-во полезных операций</b>.</p>

<h2>Получается нельзя заставить работать память быстрее?</h2>
<p>Можно, для это придётся увеличить напряжение. Повышенное <b>напряжение быстрее заряжает ячейки</b> памяти и тем самым зона физических ограничений уменьшается, следовательно можно уменьшить тайминги.</p>

<h2>Изменяя частоту памяти никак не увеличить скорость?</h2>
<p>Да, мои поздравления, <b>теперь вы всё поняли</b>! Меняя только частоту, скорость не увеличить. Для увеличения производительности дополнительно следует уменьшать тайминги и увеличивать напряжение.</p>

<hr/>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razgon-operativnoy-pamyati/siniy-ehkran-smerti.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/razgon-operativnoy-pamyati/siniy-ehkran-smerti.jpg" itemprop="contentUrl" alt="Упсс.. что-то пошло не так, кажется, мы слишком занизили тайминги." title="Упсс.. что-то пошло не так, кажется, мы слишком занизили тайминги."/>
    </picture>
    <span class="image-description" itemprop="description">Упсс.. что-то пошло не так, кажется, мы слишком занизили тайминги.</span>
</div>
<p>Оригинальный адрес статьи: <a href='http://jcup.ru/tekhnika/razgon-operativnoy-pamyati'>http://jcup.ru/tekhnika/razgon-operativnoy-pamyati</a><p>]]></description>
			<pubDate>Tue, 06 Aug 2019 03:24:55 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Разбираем древние телефоны]]></title>
			<link>http://jcup.ru/tekhnika/razbiraem-starye-telefony</link>
			<guid>http://jcup.ru/tekhnika/razbiraem-starye-telefony</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razbiraem-starye-telefony.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/razbiraem-starye-telefony.jpg" alt="разбираем старые телефоны" title="разбираем старые телефоны"/>
    </picture>
    <span class="hide" itemprop="description">разбираем старые телефоны</span>
</div>  " /><p>Сотовые телефоны выбрались из каменного века не так давно. Каких-то лет 10 назад мобилки не умели даже многозадачность, а тормозить являлось нормой. В качестве преимуществ производители называли 11 встроенных мелодий или объём памяти в пару мегабайт. Как вспомню, аж олдскулы сводит.</p>
<p>Шел 2007 год и в эти самые времена я занимался ремонтом телефонов, весь двор носил. За день доводилось собирать/разбирать по несколько телефонов. Примерно в это время у меня появилось желание создать свой сайт на <b>.narod.ru</b>, но я всё время откладывал. Фото разбираемых телефонов как раз готовились к открытию.</p>
<p>... Потребовалось всего лишь <b>11 лет</b> и теперь у меня есть блог. Я чудом отыскал старые файлы, сдул пыль и с радостью представляю вам.</p>

<h2>Наши пациенты</h2>
<ul>
<li>Siemens c75</li>
<li>Sony Ericsson Z200</li>
<li>Nokia 3200</li>
</ul>

<h2>Siemens c75</h2>
<p>Бюджетная моделька, отличалась чудовищной камерой, делающей снимки в фиолетовых оттенках и пронзающим писком, вместо мелодий для гудка. Разработчики из Siemens решили вместо нормального формата для музыки использовать <b>wav</b>, хотя телефон был достаточно быстр для <b>mp3</b>. Системные платы телефонов того времени сейчас выглядят как картриджи от денди, хотя в те бородатые времена они казались чем-то высокотехнологичным.</p>
<p>Как я уже говорил, я занимался ремонтом и запомнился мне этот телефон еще и тем, что чип памяти был припаян довольно плохо и при среднем ударе отлетал от платы. Разберешь телефон, пальцем надавишь на чип и телефон радостно включается. :)</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razbiraem-starye-telefony/siemens-c75.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/razbiraem-starye-telefony/siemens-c75.jpg" itemprop="contentUrl" alt="Затёртый до блеска, Siemens c75" title="Затёртый до блеска, Siemens c75"/>
    </picture>
    <span class="image-description" itemprop="description">Затёртый до блеска, Siemens c75</span>
</div>
<p><b>На этом месте располагается галерея, которая не может быть правильно отображена в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/razbiraem-starye-telefony'>http://jcup.ru/tekhnika/razbiraem-starye-telefony</a></b></p>

<h2>Sony Ericsson Z200</h2>
<p>Курочим «Японца». Вы только посмотрите на этот многослойный шлейф, соединяющий 2 части раскладушки вместе, наверное это самая дорогостоящая часть в этом аппарате.</p>
<p>Около верхнего динамика гордо красуется распаянная на плате «батарейка bios». Ага, при отключении аккумулятора время не сбрасывалось.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razbiraem-starye-telefony/sony-ericsson-z200.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/razbiraem-starye-telefony/sony-ericsson-z200.jpg" itemprop="contentUrl" alt="Раскладушка Sony Ericsson Z200" title="Раскладушка Sony Ericsson Z200"/>
    </picture>
    <span class="image-description" itemprop="description">Раскладушка Sony Ericsson Z200</span>
</div>
<p>А знаете ли вы что... Наши люди использователи антенну, похожую на открывашку для пива, по прямому назначению.</p>
<p><b>На этом месте располагается галерея, которая не может быть правильно отображена в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/razbiraem-starye-telefony'>http://jcup.ru/tekhnika/razbiraem-starye-telefony</a></b></p>

<h2>Nokia 3200</h2>
<p>В отличии от предыдущих пациентов, этого невозможно разобрать без повреждений. В Nokia 3200 встроен хороший динамик с объёмом, как видно на фото, верхняя пластина которого приклеена, даже мини фазоинвертор имеется. Потрясающий звук с басами, современным телефонам есть чему поучиться у этого дедушки.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/razbiraem-starye-telefony/nokia-3200.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/razbiraem-starye-telefony/nokia-3200.jpg" itemprop="contentUrl" alt="Nokia 3200 в странном корпусе" title="Nokia 3200 в странном корпусе"/>
    </picture>
    <span class="image-description" itemprop="description">Nokia 3200 в странном корпусе</span>
</div>
<p><b>На этом месте располагается галерея, которая не может быть правильно отображена в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/tekhnika/razbiraem-starye-telefony'>http://jcup.ru/tekhnika/razbiraem-starye-telefony</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/tekhnika/razbiraem-starye-telefony'>http://jcup.ru/tekhnika/razbiraem-starye-telefony</a><p>]]></description>
			<pubDate>Sat, 15 Dec 2018 21:30:34 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Swing KeyListener, слушаем нажатия клавиш]]></title>
			<link>http://jcup.ru/java/keylistener-swing-java</link>
			<guid>http://jcup.ru/java/keylistener-swing-java</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/keylistener-swing-java/java-swing-keylistener.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/keylistener-swing-java/java-swing-keylistener.jpg" alt="Swing KeyListener, слушаем нажатия клавиш" title="Swing KeyListener, слушаем нажатия клавиш"/>
    </picture>
    <span class="hide" itemprop="description">Swing KeyListener, слушаем нажатия клавиш</span>
</div>  " /><p>Для прослушивания нажатий клавиш, существует специальный интерфейс KeyListener:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Каждый метод, реализованный интерфейсом KeyListener, вызывается определенным событием, вместе с которым передается экземпляр KeyEvent. KeyEvent содержит в себе всю информацию о нажатой клавише и о модификаторах, таких как Alt, Ctrl, Shift:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Дополнительно про KeyEvent можно <a target="_blank" class="btn-link" href="http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html">почитать тут</a>.</p>
<p>У каждой клавиши есть свой цифровой код, например, код <strong>пробела</strong> 32, клавиша <strong>вправо</strong> имеет код 39. Всегда можно посмотреть эти коды, выполнив команду:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Кроме того, класс KeyEvent содержит коды всех клавиш в статических переменных, все они начинаются на VK_</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Можно и нужно использовать эти переменные для сравнения:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<h3>Короткие нажатия</h3>
<p>Когда дело касается только обработки нажатой клавиши, достаточно поместить необходимый код в метод keyTyped() интерфейса KeyListener.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<h3>Длинные одновременные нажатия</h3>
<p>Другое дело, когда нам необходимо обрабатывать не только нажатие, но еще и его длительность и скорее всего сразу у нескольких клавиш одновременно. В этом случае приходится вводить дополнительные переменные, на каждую отслеживаемую клавишу:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Такой подход позволяет реализовывать составные действия, например, длительное движение вправо-вверх одновременно. Необходимо правильно отлавливать события с клавиатуры. Когда зажата клавиша, мы получаем событие в метод <b>keyPressed</b> и записываем эту информацию в переменную. С этого момента мы считаем, что клавиша непрерывно нажата. Если клавиша будет отпущена, мы получим событие в метод <b>keyReleased</b> и обновим об этом информацию в переменной.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<p>Некий движок, управляющий нашей программой и живущий в отдельном потоке не слушает нажатия клавиш напрямую. Вместо этого, он работает с переменными, которые мы любезно для него подготовили.</p>
<h3>Подключаем слушатель</h3>
<p>Остается только повесить наш класс слушателя нажатий на какой-нибудь компонент <b>Swing</b>, например на <b>JFrame</b>:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p>
<h3>Живой пример</h3>
<p>Перед вами код, реализующий отрисовку змейки. Голова управляется "стрелками".</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/keylistener-swing-java/zmeyka-na-java-swing.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/keylistener-swing-java/zmeyka-na-java-swing.jpg" itemprop="contentUrl" alt="Змейка на Java Swing в 100 строк кода" title="Змейка на Java Swing в 100 строк кода"/>
    </picture>
    <span class="image-description" itemprop="description">Змейка на Java Swing в 100 строк кода</span>
</div>
<p>Листинг <b>RunKeybord.java</b>:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/keylistener-swing-java'>http://jcup.ru/java/keylistener-swing-java</a><p>]]></description>
			<pubDate>Sun, 16 Dec 2018 15:25:31 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Восстановление видеокарты с артефактами в духовке]]></title>
			<link>http://jcup.ru/tekhnika/vosstanovlenie-videokarty</link>
			<guid>http://jcup.ru/tekhnika/vosstanovlenie-videokarty</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty.jpg" alt="Восстанавливаем видеокарту в духовке" title="Восстанавливаем видеокарту в духовке"/>
    </picture>
    <span class="hide" itemprop="description">Восстанавливаем видеокарту в духовке</span>
</div>  " /><h2>Вместо вступления</h2>

<p>В этой статье речь пойдет о том как в кустарных условиях и бесплатно восстановить видеокарту с артефактами.</p>
<p>Как-то раз один мой знакомый попросил посмотреть его компьютер. С его слов на мониторе появились странные полосы, квадраты и прочие искажения.</p>
<p>Всё стало ясно почти сразу, артефакты. Компьютер довольно давно не чистился от пыли и все кулеры обросли "валенками". Почти никакого охлаждения и в этих условиях видеокарта ежедневно тянула что-то вроде GTA4.</p>
<p>Основная причина появления артефактов, это нагрев процессора видеокарты свыше 220&deg;С. Именно при этой температуре начинает плавится припой и чип частично отпаивается. Конечно, система охлаждения что есть сил прижимает чип к плате, а встроенное ПО уменьшает частоту, но этого недостаточно. Нужно понимать, что под воздействием высоких температур чип быстро деградирует, видеокарта может вообще перестать подавать признаки жизни, но моему знакомому повезло. </p>

<p>Сразу скажу, что подобный ремонт видеокарт с артефактами в лучшем случае принесет лишь временный результат, так 3 отремонтированных мной видеокарты обрастали артефактами в течении 2 месяцев. Одну из видеокарт удавалось воскрешать более 8 раз, то был больше спортивный интерес, а видеокарта после всего этого поменяла цвет с синего на темно-коричневый.</p>


<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-lsd.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-lsd.jpg" itemprop="contentUrl" alt="LSD-подобные артефакты" title="LSD-подобные артефакты"/>
    </picture>
    <span class="image-description" itemprop="description">LSD-подобные артефакты</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-lesenki.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-lesenki.jpg" itemprop="contentUrl" alt="Артефакты видеокарты типа «Лесенки»" title="Артефакты видеокарты типа «Лесенки»"/>
    </picture>
    <span class="image-description" itemprop="description">Артефакты видеокарты типа «Лесенки»</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-stolbiki.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/artefakty-videokarty-stolbiki.jpg" itemprop="contentUrl" alt="Артефакты видеокарты типа «Столбики»" title="Артефакты видеокарты типа «Столбики»"/>
    </picture>
    <span class="image-description" itemprop="description">Артефакты видеокарты типа «Столбики»</span>
</div>

<h2>Жарим</h2>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/geforce-gtx-660-vid-speredi.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/geforce-gtx-660-vid-speredi.jpg" itemprop="contentUrl" alt="Geforce GTX 660 вид спереди" title="Geforce GTX 660 вид спереди"/>
    </picture>
    <span class="image-description" itemprop="description">Geforce GTX 660 вид спереди</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/geforce-gtx-660-vid-szadi.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/geforce-gtx-660-vid-szadi.jpg" itemprop="contentUrl" alt="Geforce GTX 660 вид сзади" title="Geforce GTX 660 вид сзади"/>
    </picture>
    <span class="image-description" itemprop="description">Geforce GTX 660 вид сзади</span>
</div>

<p>С видеокарты необходимо снять все пластиковые части, радиаторы, да и вообще всё, что можно снять и видеокарта почти готова к обработке теплом. Но не всегда всё складывается так просто. На некоторых видеокартах производители распаивают конденсаторы старого типа и при длительной тепловой обработке они будут щелкать как попкорн, поэтому предварительно их лучше выпаять или прикупить новых. Нам повезло, у нас распаяны современные конденсаторы, устойчивые к длительному нагреву.</p>

<div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/ehlektroliticheskie-kondensatory-starogo-obrazca.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/ehlektroliticheskie-kondensatory-starogo-obrazca.jpg" alt="Конденсаторы, которые взорвутся." title="Конденсаторы, которые взорвутся."/>
    </picture>
    <span class="image-description" itemprop="description">Конденсаторы, которые взорвутся.</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/termoustoychivye-ehlektroliticheskie-kondensatory.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/termoustoychivye-ehlektroliticheskie-kondensatory.jpg" alt="Термоустойчивые электролитические конденсаторы" title="Термоустойчивые электролитические конденсаторы"/>
    </picture>
    <span class="image-description" itemprop="description">Термоустойчивые электролитические конденсаторы</span>
</div>


<p>Первым делом необходимо <s>поперчить, посолить по вкусу</s> обмотать видеокарту обычной фольгой для готовки. У фольги 2 ключевых миссии:
	<ul>
    	<li>Равномерно распределить тепло по поверхности карты.</li>
    	<li>Защитить элементы карты от конвекции духовки. Все дело в том, что в момент пикового нагрева припой переходит в жидкую фазу и перестаёт удерживать распаяные на плате карты элементы, их может просто сдуть:)</li>
    </ul>
</p>

<p>Обратите внимание, карта запекается строго чипами вверх!</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/videokarta-na-folge.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/videokarta-na-folge.jpg" itemprop="contentUrl" alt="Заворачиваем видеокарту чипами вверх!" title="Заворачиваем видеокарту чипами вверх!"/>
    </picture>
    <span class="image-description" itemprop="description">Заворачиваем видеокарту чипами вверх!</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/mumificirovannaya-folgoy-karta.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/mumificirovannaya-folgoy-karta.jpg" itemprop="contentUrl" alt="Мумифицированная фольгой видеокарта" title="Мумифицированная фольгой видеокарта"/>
    </picture>
    <span class="image-description" itemprop="description">Мумифицированная фольгой видеокарта</span>
</div>

<p>Нам нужно точно знать сколько греть и когда остановиться. Я нашел довольно простой способ, я использовал обычный легкоплавкий припой ПОС-40. Объясню позже как это работает.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/pripoy-pos-40.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/pripoy-pos-40.jpg" itemprop="contentUrl" alt="Припой ПОС-40" title="Припой ПОС-40"/>
    </picture>
    <span class="image-description" itemprop="description">Припой ПОС-40</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/indikator-iz-pripoya-pos-40.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/indikator-iz-pripoya-pos-40.jpg" itemprop="contentUrl" alt="Индикатор из припоя ПОС-40" title="Индикатор из припоя ПОС-40"/>
    </picture>
    <span class="image-description" itemprop="description">Индикатор из припоя ПОС-40</span>
</div>

<div itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/gtx-v-pech.webp"/>
        <img class="image-seftcontainer-bw" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/gtx-v-pech.jpg" alt="GTX на русской раскладке" title="GTX на русской раскладке"/>
    </picture>
    <span class="hide" itemprop="description">GTX на русской раскладке</span>
</div>    

<p>Устанавливаем температуру духовки примерно на 230&deg;С и помещаем пациента внутрь, поверх размещаем наш индикатор.</p>

  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/temperatura-pechi-230-gradusov.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/temperatura-pechi-230-gradusov.jpg" itemprop="contentUrl" alt="Температура духовки 230&deg;С" title="Температура духовки 230&deg;С"/>
    </picture>
    <span class="image-description" itemprop="description">Температура духовки 230&deg;С</span>
</div>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/videokarta-s-indikatorom.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/videokarta-s-indikatorom.jpg" itemprop="contentUrl" alt="Видеокарта с индикатором" title="Видеокарта с индикатором"/>
    </picture>
    <span class="image-description" itemprop="description">Видеокарта с индикатором</span>
</div>

<p>Внимательно смотрим на индикатор, в процессе запекания он будет деформироваться и в итоге медленно переходит в жидкую фазу. Припой видеокарты имеет примерно тот-же состав, что и на видеокарте, в итоге, когда наш индикатор окончательно "сложится", процесс приготовления окончен. В процессе карта может немного дымить, ничего страшного:)</p>

<p>Индикатор покажет состояние готовности.</p>  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti.jpg" itemprop="contentUrl" alt="Индикатор готовности" title="Индикатор готовности"/>
    </picture>
    <span class="image-description" itemprop="description">Индикатор готовности</span>
</div> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti-razmyagchaetsya.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti-razmyagchaetsya.jpg" itemprop="contentUrl" alt="Индикатор готовности размягчается" title="Индикатор готовности размягчается"/>
    </picture>
    <span class="image-description" itemprop="description">Индикатор готовности размягчается</span>
</div>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti-plavitsya.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/indikator-gotovnosti-plavitsya.jpg" itemprop="contentUrl" alt="Индикатор готовности плавится" title="Индикатор готовности плавится"/>
    </picture>
    <span class="image-description" itemprop="description">Индикатор готовности плавится</span>
</div>   
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/pora-otklyuchat-pech.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/pora-otklyuchat-pech.jpg" itemprop="contentUrl" alt="Пора отключать печь" title="Пора отключать печь"/>
    </picture>
    <span class="image-description" itemprop="description">Пора отключать печь</span>
</div>   
  
<p>Нельзя вынимать из духовки видеокарту сразу, нужно дать духовке остыть, а припою хорошо схватиться. В идеале оставить духовку отключенной до полного остывания. Если совсем не терпится собрать и проверить карту, немного приоткрыть дверцу духовки и дать полностью остыть.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/razvorachivaem-kartu.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/razvorachivaem-kartu.jpg" itemprop="contentUrl" alt="Разворачиваем карту" title="Разворачиваем карту"/>
    </picture>
    <span class="image-description" itemprop="description">Разворачиваем карту</span>
</div>  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/tekhnika/vosstanovlenie-videokarty/videokarta-nemnogo-potemnela.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/tekhnika/vosstanovlenie-videokarty/videokarta-nemnogo-potemnela.jpg" itemprop="contentUrl" alt="Видеокарта немного потемнела" title="Видеокарта немного потемнела"/>
    </picture>
    <span class="image-description" itemprop="description">Видеокарта немного потемнела</span>
</div>  
   
<p>Вполне ожидаемо, карта немного поменяла цвет.</p>

<p>Собираем в обратной последовательности и проверяем. С высокой вероятностью, карта ещё немного послужит.</p>

<p>Всем неубиваемых видеокарт или успешной домашней кулинарии!</p>
  
  

<p>Оригинальный адрес статьи: <a href='http://jcup.ru/tekhnika/vosstanovlenie-videokarty'>http://jcup.ru/tekhnika/vosstanovlenie-videokarty</a><p>]]></description>
			<pubDate>Sat, 15 Dec 2018 19:24:10 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Взлом пароля методом Brute Force]]></title>
			<link>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</link>
			<guid>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/vzlom-parolya-metodom-brutforsa/vzlom-pentagona-brutforsom.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/vzlom-parolya-metodom-brutforsa/vzlom-pentagona-brutforsom.jpg" alt="Взлом сайта Пентагона методом Brute Force." title="Взлом сайта Пентагона методом Brute Force."/>
    </picture>
    <span class="hide" itemprop="description">Взлом сайта Пентагона методом Brute Force.</span>
</div>  " /><h3>Задача с паролем</h3>
<p>Дана <a target="_blank" class="btn-link" href="/files/java/vzlom-parolya-metodom-brutforsa/jcupru-protectedbox.jar">библиотека</a>, содержащая защищенную паролем фразу. О пароле известно, что:</p>
<ul>
<li>генерируется новый пароль при каждой инициализации библиотеки;</li>
<li>длина пароля от 1 до 5 символов;</li>
<li>разрешенные символы в пароле: числа, прописные и строчные буквы английского алфавита.</li>
</ul>
<p>Известна структура библиотеки:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/vzlom-parolya-metodom-brutforsa'>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</a></b></p>
<p>Требуется получить защищенную фразу, подобрав правильный пароль. <a target="_blank" class="btn-link" href="/files/java/vzlom-parolya-metodom-brutforsa/jcupru-protectedbox.jar">Скачайте библиотеку с парольной фразой</a> и подключите к своему проекту.</p>
<hr id="system-readmore" />
<h3>Применяем грубую силу</h3>
<p>Какие только задачи не поднимаются во время проектирования, тестирования и отладки. Сегодня мы рассмотрим довольно простую с точки зрения алгоритмов задачу - перебор всех возможных паролей из жестко определенных диапазонов, такой подход называется <a class="btn-link" href="https://ru.wikipedia.org/wiki/Brute_Force" target="_blank">Brute Force</a>.</p>
<p>Нам известно что пароль состоит только из цифр и букв английского алфавита, значит мы можем составить специфический словарь символов и работать с ним. Символы проще всего представить специальным примитивным типом char. Для инициализации словаря будем использовать ArrayList&lt;Character&gt;, char в Java соответствует класс Character, поэтому типизуем коллекцию им, кстати, такое перевоплощение в Java называется <a class="btn-link" href="http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html" target="_blank">Autoboxing</a>.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/vzlom-parolya-metodom-brutforsa'>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</a></b></p>
<p>Итак, в нашем словаре оказалось 62 символа. Прикинем возможное количество комбинаций(c), оно будет высчитываться по формуле c=l<sup>n</sup>, где l-длина словаря, n-число символов.</p>

<div class="tableWrapper">
<table>
<thead>
<tr>
<th>Длина</th>
<th>Комбинации</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>62</td>
</tr>
<tr>
<td>2</td>
<td>3 844</td>
</tr>
<tr>
<td>3</td>
<td>238 328</td>
</tr>
<tr>
<td>4</td>
<td>14 776 336</td>
</tr>
<tr>
<td>5</td>
<td>916 132 832</td>
</tr>
</tbody>
</table>
</div>

<p>Расчет показал, что при длине пароля всего в 5 символов, мы получаем почти миллиард комбинаций. В реальной жизни, нужно понимать, что на подбор довольно сложного пароля могут уйти месяцы и годы и возможно стоит поискать другой способ, например перебор по наиболее <a class="btn-link" target="_blank" href="https://habr.com/post/129052/">часто используемым паролям</a>.</p>
<p>Построим класс подбора по аналогии с принципом действия счетного механизма старого счетчика.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/vzlom-parolya-metodom-brutforsa/ciferblat-diskovogo-schetchika.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/vzlom-parolya-metodom-brutforsa/ciferblat-diskovogo-schetchika.jpg" itemprop="contentUrl" alt="Циферблат дискового счётчика" title="Циферблат дискового счётчика"/>
    </picture>
    <span class="image-description" itemprop="description">Циферблат дискового счётчика</span>
</div>

<p>Счетчик имеет несколько барабанов, барабан проходит по кругу и значения повторяются. Каждый барабан этого счетного механизма пройдя круг, цепляет при помощи переключателя следующий барабан и поворачивает его на 1 деление, все остальные барабаны работают аналогично. Другими словами, в счетчике мы поворачиваем только 1 барабан, а значения всех остальных барабанов меняются автоматом. Так же в этой модели мы имеем возможность считать разом значения со всех баранов. Просто идеальная система для нашего алгоритма подбора паролей!</p>
<p>По аналогии мы создадим класс, который по кругу будет выдавать значения из нашего словаря, класс будет знать о следующем "барабане", эту информацию мы передадим через конструктор. Еще мы снабдим класс методом для переключения значения на следующее. Мы дополним словарь "пустым" значением, т.к. нам необходимо перебрать пароли разной длины. Остается только обеспечить считывание пароля со всех ячеек.</p>
<p>Модель барабанного счетчика очень похожа на шаблон проектирования "Цепочка обязанностей".</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/vzlom-parolya-metodom-brutforsa'>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</a></b></p>
<p>Осталось написать только управляющий класс.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/vzlom-parolya-metodom-brutforsa'>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</a></b></p>
<p>На моем компьютере, на базе камня Xeon X3450, перебор миллиарда комбинаций занимает в среднем 10 сек :) Этот показатель можно значительно улучшить, если работать в несколько потоков. Приведенный выше пример очень экономно расходует память, что очень важно для огромного количества повторений.</p>
<hr/>
<a class="file-download-link" target="_blank" href="/files/java/vzlom-parolya-metodom-brutforsa/jcupru-protectedbox.jar">
    <span class="file-download-container file-download-extension-unknown">
        <i>Скачать библиотеку с парольной фразой<br/> <b>jcupRu_ProtectedBox.jar</b><br/> 2.5 КБ</i>
    </span>
</a>


<hr/>
<div>
<b>Апдейт от 06.04.2022</b><br/>
Не прошло и 2х лет, как статья получила фидбек. Мне очень приятно видеть неравнодушие в глазах посетителей) В связи с этим, объявляю <a href="https://govnokod.ru/27115#comment595434" target="_blank" class="btn-link">официальную ветку комментов</a>.
<br/> 
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/vzlom-parolya-metodom-brutforsa/swpvf6/maptbiwka-s-granatoy-v-puh-i-prah-raznosit-avtora-blozhika.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/vzlom-parolya-metodom-brutforsa/swpvf6/maptbiwka-s-granatoy-v-puh-i-prah-raznosit-avtora-blozhika.jpg" itemprop="contentUrl" alt="MAPTbIwKA с гранатой в пух и прах разносит автора бложика" title="MAPTbIwKA с гранатой в пух и прах разносит автора бложика"/>
    </picture>
    <span class="image-description" itemprop="description">MAPTbIwKA с гранатой в пух и прах разносит автора бложика</span>
</div>
</div><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/vzlom-parolya-metodom-brutforsa'>http://jcup.ru/java/vzlom-parolya-metodom-brutforsa</a><p>]]></description>
			<pubDate>Wed, 06 Apr 2022 02:19:51 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[ActiveMQ 5 + Wildfly 11]]></title>
			<link>http://jcup.ru/java/activemq-wildfly</link>
			<guid>http://jcup.ru/java/activemq-wildfly</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/activemq-wildfly.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/activemq-wildfly.jpg" alt="Пытаемся подружить ActiveMQ и WildFly" title="Пытаемся подружить ActiveMQ и WildFly"/>
    </picture>
    <span class="hide" itemprop="description">Пытаемся подружить ActiveMQ и WildFly</span>
</div>  " />В сети великое множество мануалов, рассказывающие нам невероятную повесть о том, как подружить ActiveMQ и WildFly. Но в основном, они все на английском и не работают. Из 8 прочитанных мной мануалов, 8 не привели меня к победе, конечно, в них было много полезного. Возможно, так обстоят дела потому, что все описывают работу с разными версиями, вот и мне пришлось пройтись по этим граблям.

<h2>Установка сервера ActiveMQ</h2>

<p>Если сервер ActiveMQ у вас уже стоит, смело пропускайте эту часть. На момент выхода статьи, доступен ActiveMQ версии 5.</p>
<p>1) Скачаем сервер <a class="btn-link" target="_blank" href="http://activemq.apache.org/download.html">ActiveMQ</a> с официального сайта и куда-нибудь распакуем.</p>
<p>2) Определим пользователей в файле <b>conf/jetty-realm.properties</b>, используя образец внутри.</p>

<p><i>Сервер ActiveMQ кроссплатформенное приложение и в папке <b>bin</b> находим версии для <b>Windows</b> и <b>Linux</b>.</i></p>

<p>3) Запустим скрипт с параметром <b>start</b>.</p>

<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>

<p>4) Если все сделано верно, можно посетить админку <b>http://localhost:8161/admin/</b></p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/activemq-wildfly/adminskaya-panel-activemq.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/activemq-wildfly/adminskaya-panel-activemq.jpg" itemprop="contentUrl" alt="Админская панель ActiveMQ, сразу после устновки" title="Админская панель ActiveMQ, сразу после устновки"/>
    </picture>
    <span class="image-description" itemprop="description">Админская панель ActiveMQ, сразу после устновки</span>
</div>

<h2>О WildFly</h2>
<p>Все описанное далее выполнялось и проверялось на чистой копии WildFLy 11, запущенной в режиме <b>standalone</b> и взятой с <a  class="btn-link" target="_blank" href="http://wildfly.org/downloads/">официального сайта</a>. Адаптер ActiveMQ требует профиля WildFly уровня не ниже <b>full</b>, поэтому необходимо запускать WildFly c параметром <b>-c standalone-full.xml</b></p>

<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>

<h2>Устанавливаем Resource Adapter</h2>

<p>1) Получим с <a class="btn-link" target="_blank" href="http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/">официального сайта</a> файл <b>activemq-rar-5.11.1.rar</b>, для данного мануала нужна именно эта версия.</p>

<p><i>Не путать с архиватором Александра Рошала, в данном случае расширение rar указывает на специальный тип файла resource adapter, который традиционно упакован в zip. Да, да! Файл с расширением rar, является архивом zip.</i></p>

<p>2) Распакуем содержимое <b>activemq-rar-5.11.1.rar</b> в папку <b>modules/org/apache/activemq/ra/main/</b>, в эту же папку подкладываем файл <b><a class="btn-link" target="_blank" href="/files/java/activemq-wildfly/module.xml">module.xml</a></b></p>

<p><i><b><a class="btn-link" target="_blank" href="/files/java/activemq-wildfly/module.xml">module.xml</a></b> - файл, с прописанными зависимостями, устанавливаемого модуля в WildFly, приложенный подходит только для версии адаптера 5.11.1, для другой версии адаптера вы можете сделать его самостоятельно, по аналогии.</i></p>

<p>3) Задеплоим файл <b>activemq-rar-5.11.1.rar</b> на WildFly, подложив его в папку <b>standalone/deployments</b>.</p>

<p>4) Поправим конфиг <b>standalone-full.xml</b>, располагающийся в папке <b>standalone/configuration</b>.</p>

<p>5) Заменим секцию <b>urn:jboss:domain:resource-adapters</b> на:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>  

<p>6) Заменим секцию <b>urn:jboss:domain:messaging-activemq</b> на:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>

<p>7) Изменим секцию <b>urn:jboss:domain:ejb3</b>:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>

<h2>Пишем HelloWorld.war</h2>
<p>В этот раз, я не буду приводить весь код, но отмечу основные моменты. Вы можете сразу скачать <a class="btn-link" target="_blank" href="/files/java/activemq-wildfly/src-helloworld-activemq-mdb.zip">сырцы</a> <a class="btn-link" target="_blank" href="/files/java/activemq-wildfly/src-helloworld-activemq-mdb.zip">helloworld-activemq-mdb</a>. Отправка сообщений производится силами встроенного сервлета, достаточно пройти по адресу <b>http://localhost:8080/helloworld-activemq-mdb/jms/</b>. Если всё настроено верно, в консоле WildFly появится тестовое сообщение.</p>

<h3>Приём сообщений.</h3>
<p><i>Вы можете не указывать раздел <admin-objects> в секции <b>urn:jboss:domain:resource-adapters</b>, если требуется реализовать исключительно приём сообщений.<p>

<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>  

<h3>Отправка сообщений:</h3>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a></b></p>
  
<hr/>
<a class="file-download-link" target="_blank" href="/files/java/activemq-wildfly/standalone-full.xml">
    <span class="file-download-container file-download-extension-unknown">
        <i>Скачать конфиг<br/> <b>standalone-full.xml</b><br/> 31 КБ</i>
    </span>
</a>
<br/>
<a class="file-download-link" target="_blank" href="/files/java/activemq-wildfly/module.xml">
    <span class="file-download-container file-download-extension-unknown">
        <i>Скачать конфиг<br/> <b>module.xml</b><br/> 1.8 КБ</i>
    </span>
</a>
<br/>
<a class="file-download-link" target="_blank" href="/files/java/activemq-wildfly/src-helloworld-activemq-mdb.zip">
    <span class="file-download-container file-download-extension-archive">
        <i>Скачать приложение-пример<br/> <b>src-helloworld-activemq-mdb.zip</b><br/> 4.1 КБ</i>
    </span>
</a>

  <p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/activemq-wildfly'>http://jcup.ru/java/activemq-wildfly</a><p>]]></description>
			<pubDate>Mon, 17 Dec 2018 22:59:17 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Включаем автозавершение в Eclipse]]></title>
			<link>http://jcup.ru/java/eclipse-no-proposals</link>
			<guid>http://jcup.ru/java/eclipse-no-proposals</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/eclipse-no-proposals/avtozavershenie-v-eclipse.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/eclipse-no-proposals/avtozavershenie-v-eclipse.jpg" alt="Автозавершение в Eclipse" title="Автозавершение в Eclipse"/>
    </picture>
    <span class="hide" itemprop="description">Автозавершение в Eclipse</span>
</div>  " /><p><b>Code assist</b> (ассистент кода, еще его называют <b>автозавершение</b>), подход, позволяющий завершать ваш код, выбрав вариант из нескольких предложенных. Ассистент кода активируется при нажатии <b>Ctrl+Space</b>. Пожалуй, это одна из самых часто используемых операций, привыкаешь работать с ней на автомате.</p>
<p>Иногда, в процессе работы с большими проектами, Eclipse отказывается завершать вводимый код, выводя вместо подсказок <b>No Default Proposals</b>.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/eclipse-no-proposals/avtozavershenie-ne-rabotaet.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/eclipse-no-proposals/avtozavershenie-ne-rabotaet.jpg" itemprop="contentUrl" alt="Автозавершение в Eclispse не работает" title="Автозавершение в Eclispse не работает"/>
    </picture>
    <span class="image-description" itemprop="description">Автозавершение в Eclispse не работает</span>
</div>

<p>По странному стечению обстоятельств, подсказки из категории Java отключаются, к счастью происходит это не часто и их можно просто включить. Проходим к настройкам: <b>Windows</b> -&gt; <b>Preferences</b> -&gt; <b>Java</b> -&gt; <b>Editor</b> -&gt; <b>Content Assist</b> -&gt; Advanced"</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/eclipse-no-proposals/vklyuchaem-avtozavershenie-v-eclipse.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/eclipse-no-proposals/vklyuchaem-avtozavershenie-v-eclipse.jpg" itemprop="contentUrl" alt="Включаем автозавершение в Eclipse" title="Включаем автозавершение в Eclipse"/>
    </picture>
    <span class="image-description" itemprop="description">Включаем автозавершение в Eclipse</span>
</div>

<p>Результат:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/eclipse-no-proposals/avtozavershenie-rabotaet.webp"/>
        <img class="image-in-container" src="http://jcup.ru/images/java/eclipse-no-proposals/avtozavershenie-rabotaet.jpg" itemprop="contentUrl" alt="Автозавершение работает, как и положено." title="Автозавершение работает, как и положено."/>
    </picture>
    <span class="image-description" itemprop="description">Автозавершение работает, как и положено.</span>
</div>
<p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/eclipse-no-proposals'>http://jcup.ru/java/eclipse-no-proposals</a><p>]]></description>
			<pubDate>Sat, 15 Dec 2018 20:11:36 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[JFrame произвольной формы]]></title>
			<link>http://jcup.ru/java/jframe-proizvolnoy-formy</link>
			<guid>http://jcup.ru/java/jframe-proizvolnoy-formy</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/jframe-proizvolnoy-formy.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/jframe-proizvolnoy-formy.jpg" alt="Произвольная форма окна, на примере Microsoft Word" title="Произвольная форма окна, на примере Microsoft Word"/>
    </picture>
    <span class="hide" itemprop="description">Произвольная форма окна, на примере Microsoft Word</span>
</div>  " /><blockquote>
Ой! Заметка есть, а русский букв нет. Обещаю, описание будет, но позже :)
</blockquote>
  

<p>AnyFrame.java</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/jframe-proizvolnoy-formy'>http://jcup.ru/java/jframe-proizvolnoy-formy</a></b></p>
<p>ShapeUtils.java</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/jframe-proizvolnoy-formy'>http://jcup.ru/java/jframe-proizvolnoy-formy</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/jframe-proizvolnoy-formy'>http://jcup.ru/java/jframe-proizvolnoy-formy</a><p>]]></description>
			<pubDate>Sun, 16 Dec 2018 14:53:44 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Установка Java. JRE или JDK?]]></title>
			<link>http://jcup.ru/java/ustanovka-java</link>
			<guid>http://jcup.ru/java/ustanovka-java</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/ustanovka-java/jdk-ili-jre.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/ustanovka-java/jdk-ili-jre.jpg" alt="JDK или JRE. Что выбрать для моих целей?" title="JDK или JRE. Что выбрать для моих целей?"/>
    </picture>
    <span class="hide" itemprop="description">JDK или JRE. Что выбрать для моих целей?</span>
</div>  " /><p><b>Java</b> кроссплатформенный объектно-ориентированный язык программирования. Кроссплатформенность это основное преимущество Java перед другими языками. Этого удалось добиться благодаря использованию собственной виртуальной машины. Приложения, разработанные и скомпилированные под Java представлены в виде специального байт-кода, которой идеально заточен под виртуальную машину Java и не зависит от компьютерной архитектуры и разрядности ОС. В Sun, а затем в Oracle позаботились о том, что бы виртуальные машины были доступны практически для всех ОС.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/ustanovka-java/logip-java.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/ustanovka-java/logip-java.jpg" alt="Логотип Java" title="Логотип Java"/>
    </picture>
    <span class="image-description" itemprop="description">Логотип Java</span>
</div>

<hr/>

<p>Не стоит путать <b>Java</b> с <b>JavaScript</b>, это совершенно разные языки программирования, у них различный синтаксис, различные подходы к интерпретации и даже различные области применения.</p>
<p>Виртуальная машина поставляется в 2-х вариантах:</p>
<ul>
<li><b>JRE</b> (Java Runtime Enviroment) - виртуальная машина Java, способная выполнить любое скомпилированное в байт-код приложение на языке Java. Виртуальная машина хоть и описывает суть происходящего, но может звучать не очень понятно. <b>JRE</b> с большой натяжкой можно назвать фреймворком. Это некий набор библиотек, достаточный для запуска любого Java-приложения, даже Minecraft.</li>
<li><b>JDK</b> (Java Developer Kit) - та-же виртуальная машина Java, но дополненная компилятором. Проще говоря, это достаточный комплект для разработки приложения любой сложности и его выполнения. JDK включает в свой набор JRE. Для разработки выбираем этот вариант.</li>
</ul>
<p>Oracle не хочет денег за свой продукт, JRE и JDK свободно распространяются на сайте разработчика: <a class="btn-link" target="_blank" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"> http://www.oracle.com/technetwork/java/javase/downloads/index.html</a></p>
<p>Мы рассмотрим установку именно <b>JDK</b>.</p>
<h2>Windows:</h2>
<ul>
<li>Скачиваем последнюю версию JDK с <a class="btn-link" target="_blank" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">сайта разработчика</a>. Обратите внимание на разрядность системы.</li>
<li>Устанавливаем как обычное приложение.</li>
<p>Автор мануала, ярый противник использования в путях пробелов и русских символов. Так или иначе, в процессе разработки приложений приходится работаться с консолью, пробелы при этом создают много мелких неудобств. Если девелопер работает в команде разработчиков из разных стран, русские буквы в путях могут создать интересные проблемы, хотя с каждым годом этих проблем все меньше. Использование строчных букв приходит из разработки ПО в Linux, дело в том, что в Linux, например, папки с названием "deploy" и "Deploy" являются разными и могут совершенно свободно сосуществовать вместе. <b>Java</b> - кроссплатформенный язык программирования, поэтому очень важно учить себя думать кроссплатформенно.</p>
<li>Прописываем переменную JAVA_HOME. Как это сделать, описано в <a class="btn-link" target="_blank" href="/java/kak-propisat-javahome">этой статье</a>.</li>
</ul>
<h2>Ubuntu:</h2>
<p>Часто бывает, что в комплекте с дистрибьютивами Linux уже идут встроенные OpenJDK или OpenJRE, это похожая виртуальная машина на машину Java, это аналог не лучшего качества, для разработки он не годится, поэтому от него лучше избавиться:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>Oraсle с некоторых пор перестал поддерживать Debian-подобные системы и предоставлять для них готовые дистрибьютивы. Народные умельцы быстро нашли выход. Для быстрой установки JDK достаточно добавить внешний PPA-репозиторий:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>Установка <b>JDK</b> v7:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>Установка <b>JDK</b> v8:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>Вы можете установить несколько версий Java одновременно, для выбора версии виртуальной машины выполните команду:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>В результате выполнения команды будет выведен список всех установленных машин Java.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p>
<p>Выберите необходимую версию и повторите то же самое для компилятора:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/ustanovka-java'>http://jcup.ru/java/ustanovka-java</a><p>]]></description>
			<pubDate>Sun, 16 Dec 2018 14:54:12 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Как установить JAVA_HOME?]]></title>
			<link>http://jcup.ru/java/kak-propisat-javahome</link>
			<guid>http://jcup.ru/java/kak-propisat-javahome</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/kak-propisat-javahome.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/kak-propisat-javahome.jpg" alt="Картинка для привлечения внимание. Ноги, кафель, ну вы поняли..." title="Картинка для привлечения внимание. Ноги, кафель, ну вы поняли..."/>
    </picture>
    <span class="hide" itemprop="description">Картинка для привлечения внимание. Ноги, кафель, ну вы поняли...</span>
</div>  " /><h2>Windows:</h2>
<p>Приступим к настройке.</p>
<ol>
<li>Давим по значку рабочего стола правой кнопки мыши -&gt; открывается окно "Система".</li>
<li>На левой панели давим по пункту "Дополнительные параметры системы" -&gt; открывается окно "Свойства системы"</li>
<li>На вкладке "Дополнительно" нажимает на кнопку "Переменные среды..." -&gt; открывается окно "Переменные среды"</li>
</ol>
<p>Перед вами 2 списка, в верхнем списке указаны все переменные доступные только вашему пользователю, в нижнем - всей системе. В некоторых случаях может потребоваться установить разные переменные JAVA_HOME для нескольких юзеров одной системы, в этом случае для каждого юзера придется прописать свою переменную в списке "Переменные среды пользователя". Мы пойдем обычным путем и установим одинаковую переменную для всех.</p>
<p> </p>
<ul>
<li>Необходимо убедиться что переменной JAVA_HOME нет в списке, если есть, давим кнопку изменить и переходим к 6 пункту.</li>
<li>Давим кнопку "Создать...".</li>
<li>Указываем имя переменной "JAVA_HOME", в значении переменной указываем полный путь до папки с JDK, например "C:\java\jdk1.7.0_79\".</li>
</ul>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/kak-propisat-javahome/okno-svoystv-sistemy-v-windows.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/kak-propisat-javahome/okno-svoystv-sistemy-v-windows.jpg" alt="Окно «Свойств системы» в Windows" title="Окно «Свойств системы» в Windows"/>
    </picture>
    <span class="image-description" itemprop="description">Окно «Свойств системы» в Windows</span>
</div>


<p>Не будет лишним так-же указать переменную "JRE_HOME", она пригодится, например, для разработки портлетов для портала Liferay, для этого по аналогии повторите пункт 6. Как правило, JRE находится в папке с JDK, примерный путь "C:\java\jdk1.7.0_79\jre\".</p>
<p>После установки дистрибьютива JDK виртуальная машина "java.exe" будет доступна в консоли повсеместно. Для выполнения некоторых задач, необходимо так-же предоставить доступ к компилятору "javac.exe", для этого отредактируйте переменную Path. Добавьте в значение переменной ";" и путь до папки с компилятором, например "C:\Java\jdk1.7.0_79\bin\".</p>

<h2>Ubuntu:</h2>
<p>Для начала необходимо понять куда была установлена Java, выполните команды:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p>
<p>Результатом выполнения команды будет список установленных виртуальных машин Java:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p>
<p>Из этого списка нам потребуется столбик Path. Полный путь до виртуальных машин должен быть до "jre/bin/java", например в нашем случае 0-ой пункт будет иметь полный путь до машины "/usr/lib/jvm/java-8-oracle".</p>
<p>Для установки переменной JAVA_HOME, необходимо прописать ее в /etc/environment, используя путь до машины Java.</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p>
<p>Изменения вступят в силу автоматически после перезагрузки, либо мы можем перегрузить переменные окружения командой:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p>
<p>Осталось выполнить проверку:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p>
<p>Если в результате команда напечатает путь до машины JAVA, значит настройка завершена успешно.</p>
<h4>JRE_HOME</h4>
<p>Не будет лишним так-же указать переменную "JRE_HOME", она пригодится, например, для разработки портлетов для портала Liferay. Как правило, JRE находится в папке с JDK, т.е. значение JRE_HOME = путь до виртуальной машины + "/jre".</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/kak-propisat-javahome'>http://jcup.ru/java/kak-propisat-javahome</a><p>]]></description>
			<pubDate>Sat, 15 Dec 2018 20:35:14 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[jframe-po-centru]]></title>
			<link>http://jcup.ru/java/jframe-po-centru</link>
			<guid>http://jcup.ru/java/jframe-po-centru</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/jframe-po-centru.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/jframe-po-centru.jpg" alt="" title=""/>
    </picture>
    <span class="hide" itemprop="description"></span>
</div>  " /><p>Для центрирования JFrame относительно какого-либо компонента используется метод <strong>.setLocationRelativeTo</strong>, если подать ему в качестве аргумента <strong>null</strong>, будет произведена центровка относительно экрана:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/jframe-po-centru'>http://jcup.ru/java/jframe-po-centru</a></b></p>
<p>Для своих проектов я написал библиотеку для работы с окнами, в которую вошел вот такой метод, реализующий центровку:</p>
<p><b>На этом месте располагается листинг, который не может быть правильно отображен в rss-ленте. Перейдите к оригинальной статье: <a href='http://jcup.ru/java/jframe-po-centru'>http://jcup.ru/java/jframe-po-centru</a></b></p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/jframe-po-centru'>http://jcup.ru/java/jframe-po-centru</a><p>]]></description>
			<pubDate>Sun, 16 Dec 2018 14:55:29 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Онлайн настройка ГБО Lovato в Easy Fast]]></title>
			<link>http://jcup.ru/avto/nastroyka-gbo-lovato-v-easy-fast</link>
			<guid>http://jcup.ru/avto/nastroyka-gbo-lovato-v-easy-fast</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast.jpg" alt="Как настроить ГБО Ловато 4-го поколения?" title="Как настроить ГБО Ловато 4-го поколения?"/>
    </picture>
    <span class="hide" itemprop="description">Как настроить ГБО Ловато 4-го поколения?</span>
</div>  " /><p>Решился я на установку газового оборудования на свой авто, обратился в специализированную конторку. Мне поставили оборудование Ловато, но правильно настроить так и не смогли. Город у меня не большой и другие фирмы, которые я смог найти, не занимались установкой и обслуживанием Lovato.</p>

<h3>Основные проблемы:</h3>
<ul>
<li>машина почти не "тянула" на газу</li>
<li>гигантский расход газа</li>
<li>вместе с газом <b>одновременно</b> расходовался бензин</li>
<li>после установки ГБО машина заводилась на бензине со взрывами в выхлопной системе</li>
</ul>
<p>После многих попыток, я понял, что настроить мне газ так не смогут и придется во всем разобраться самому. Безысходность - двигатель прогресса, пришлось искать варианты. Немного погуглив, я нашел огромное количество мануалов, но все они так или иначе были не полными и не раскрывали сути настройки. Во многом пришлось разбираться самому.</p>

<h2>Что потребуется для настройки ГБО?</h2>
<ul>
  <li>кабель ГБО (статья о том, <a class="btn-link" target="_blank" href="/avto/kak-sdelat-kabel-dlya-gbo-lovato">как самостоятельно изготовить кабель ГБО</a>)</li>
  <li>драйвер кабеля ГБО</li>
  <li>ноутбук с временем автономной работы около 2-х часов</li>
  <li>программа Lovato Easy Fast</li>
  <li>obd-адаптер</li>
  <li>мобильный телефон с bluetooth программой Torque или ODB Doctor</li>
  <li>понимание сути настройки (внимательно читает эту статью)</li>
</ul>

<h2>Где взять кабель ГБО?</h2>
<p><a class="btn-link" target="_blank" href="/avto/kak-sdelat-kabel-dlya-gbo-lovato">Изготовить самому</a> или купить примерно за 100$.</p>

<h2>Lovato Easy Fast</h2>
<p><strong>Lovato Easy Fast</strong> - это официальный софт для настройки ГБО Lovato. Для запуска софта не нужен лицензионный ключ, а работать он может как с оригинальным, так и с самодельным кабелем. Странно, что производитель не распространяет свой продукт на официальном сайте.</p>
<p>Я использовал Lovato Easy Fast 1.7.4, гуглится и скачивается без труда.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-glavnoe-menyu.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-glavnoe-menyu.jpg" alt="Lovato Easy Fast - главное меню" title="Lovato Easy Fast - главное меню"/>
    </picture>
    <span class="image-description" itemprop="description">Lovato Easy Fast - главное меню</span>
</div>


<h3>Основные параметры раздела "Конфигурация"</h3>

<h4>Вкладка "Конфигурация"</h4>

<ul>
<li>В этой вкладке располагаются характеристики вашего двигателя и газовой системы. Убедитесь, что все параметры соответствуют действительности.</li>
</ul>

<h4>Переключение</h4>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-pereklyuchenie.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-pereklyuchenie.jpg" alt="Lovato Easy Fast - раздел «Переключение»" title="Lovato Easy Fast - раздел «Переключение»"/>
    </picture>
    <span class="image-description" itemprop="description">Lovato Easy Fast - раздел «Переключение»</span>
</div>

<ul>
<li><strong>Разрешить прогрев форсунок</strong> - в этом режиме, при морозе сначала будут включаться форсунки, работать некоторое время и только потом будет подаваться газ. Этот параметр увеличит расход бензина.</li>
<li><strong>Холостой ход</strong>  какая топливная система будет обеспечивать холостой ход. Смело ставим газ.</li>
<li><strong>Переключение</strong>  два варианта: при замедлении, что соответствует уменьшению нажатия на педаль газа и при ускорении, что соответствует увеличению нажатия на педаль газа. Чаще всего переключение происходит и без этих действий, но иногда для переключения авто на газ требуется выполнить это условия.</li>
<li><strong>Температура редуктора для переключения</strong>  пока редуктор не прогреется до заданной температуры, система не переключится на газ. Если редуктор исправен, ставим как можно меньше.</li>
<li><strong>Заводка на газе при нагретом двигателе</strong>  после поворота ключа зажигания, если двигатель теплее указанной температуры, произойдет автоматическое переключение на газ.</li>
<li><strong>Задержка переключения при горячем двигателе</strong>  если двигатель горячее редуктора, но не горячее температуры запуска на газу, то работает это правило.</li>
<li>Работа при высоких оборотах.<ol>
<li><strong>Газ</strong>  в этом меню можно настроить добавку бензина, когда уже газовые форсунки не справляются.</li>
<li><strong>Добавка бензина</strong>  это более подробная настройка опции «Газ».</li>
<li><strong>Бензин</strong>  тут все просто, превысили обороты  отключили газ, включили бензин.</li>
</ol></li>
</ul>

<h4>Карта</h4>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-karta.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-karta.jpg" alt="Lovato Easy Fast - раздел «Карта»" title="Lovato Easy Fast - раздел «Карта»"/>
    </picture>
    <span class="image-description" itemprop="description">Lovato Easy Fast - раздел «Карта»</span>
</div>

<ul>
<li><strong>таблица Время/Обороты</strong>  самая интересная часть, тут и будет производиться настройка</li>
<li><strong>Чувствительность доп.впрыск</strong>  добавление бензина в газовоздушную смесь при резких ускорения.</li>
</ul>

<h3>Основные параметры раздела "Самонастройка"</h3>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-camonastroyka.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-razdel-camonastroyka.jpg" alt="Lovato Easy Fast - раздел «Cамонастройка»" title="Lovato Easy Fast - раздел «Cамонастройка»"/>
    </picture>
    <span class="image-description" itemprop="description">Lovato Easy Fast - раздел «Cамонастройка»</span>
</div>


<ul>
<li><strong>Время Газ</strong>  время открытия газовых форсунок</li>
<li><strong>Время Бенз.</strong>  время открытия бензиновых форсунок</li>
<li><strong>Д.Газ</strong>  давление газа</li>
<li><strong>Кнопка самонастройка</strong>  автоматическая настройка холостого хода</li>
</ul>

<h2>Выбор жиклеров</h2>
<p>Существует ошибочное мнение, что жиклеры находятся на конце шланга и установлены в коллектор, на самом деле жиклеры установлены непосредственно в газовые форсунки.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/zhiklery-gbo-lovato.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/zhiklery-gbo-lovato.jpg" alt="Где найти жиклеры ГБО Lovato?" title="Где найти жиклеры ГБО Lovato?"/>
    </picture>
    <span class="image-description" itemprop="description">Где найти жиклеры ГБО Lovato?</span>
</div>


<p>Убедитесь, что у вас правильно выбраны жиклеры. Вот таблица диаметров, в зависимости от мощности одного цилиндра.</p>

<div class="tableWrapper">
<table>
<thead>
<tr><th>Мощность на<br/> 1 цилиндр, л.с.</th><th>Диаметр,<br/> мм</th></tr>
</thead>
<tbody>
<tr>
<td>13-20</td>
<td>1,6</td>
</tr>
<tr>
<td>20-26</td>
<td>1,8</td>
</tr>
<tr>
<td>26-29</td>
<td>2,0</td>
</tr>
<tr>
<td>29-34</td>
<td>2,2</td>
</tr>
<tr>
<td>34-39</td>
<td>2,4</td>
</tr>
<tr>
<td>39-45</td>
<td>2,6</td>
</tr>
</tbody>
</table>
</div>
<p>При необходимости, рассверлите жиклеры.</p>

<h2>Самонастройка</h2>
<p>Перед настройкой рекомендуется немного поездить на бензине, это нужно для того, что бы бензиновые мозги "почувствовали" нормальный режим и выправили корректирующие коэффициенты.</p>
<p>Все что может самонастройка, это точно определить время впрыска газа на холостом ходу. Все остальные режимы двигателя требуют ручной настройки. Очень жаль, чаще всего газовщики ограничиваются только этим режимом.</p>
<p>Подключаем кабель к авто, включаем программу Lovato Easy Fast, происходит инициализация, которая занимает некоторое время. В правом нижнем углу значок с кабелем, отображается с зеленой галкой. С этого момента можно приступать к настройке.</p>

<h4>Приступаем к настройке:</h4>
<ol>
<li>Зайдите в меню Самонастройка.</li>
<li>Закройте газовый винт редуктора до конца и откройте на несколько оборотов. Давление газа должно быть в пределах <b>1.2</b>-<b>1.4</b> bar(индикатор в программе сверху).</li>
<li>Нажмите кнопку автонастройки.
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/gbo-lovato-knopka-starta-samonastroyki.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/gbo-lovato-knopka-starta-samonastroyki.jpg" alt="Кнопка старта самонастройки" title="Кнопка старта самонастройки"/>
    </picture>
    <span class="image-description" itemprop="description">Кнопка старта самонастройки</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/camonastroyka-gbo-v-processe.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/camonastroyka-gbo-v-processe.jpg" alt="Cамонастройка в процессе" title="Cамонастройка в процессе"/>
    </picture>
    <span class="image-description" itemprop="description">Cамонастройка в процессе</span>
</div>


<p>Во время настройки двигатель может троить или вообще заглохнуть, что свидетельствует о неправильном диаметре форсунок.</p>
</li>
<li>После удачного завершения автонастройки, нажимаем кнопку «Бензин»(правый верхний угол), авто переключается на газ, сравниваем индикаторы «Время газ» и «Время бензин», эти 2 времени должны быть примерно одинаковыми, как правило бензиновое время меньше газового на 1-2 мс. Чем ближе будет эти показатели, тем лучше будет работать двигатель на высоких нагрузках и на холостом ходу. Если газовое время слишком высоко, необходимо рассверлить жиклеры форсунок либо увеличить давление газа, если слишком низко, то снизить давление газа.
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/gbo-lovato-nastroyka-zavershena.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/gbo-lovato-nastroyka-zavershena.jpg" alt="Самонастройка завершена правильно" title="Самонастройка завершена правильно"/>
    </picture>
    <span class="image-description" itemprop="description">Самонастройка завершена правильно</span>
</div>


<p>Переключаясь с бензина на газ и обратно двигатель должен работать ровно, это свидетельствует о правильной самонастройке холостого хода.</p>
</li>
</ol>
<div>После каждого рассверливания жиклеров или изменения давления газа необходимо произвести самонастройку заново.</div>

<h2>Суть правильной настройки</h2>
<p>Четвертое поколение газовых мозгов, в отличие от всех предыдущих, использует родной сигнал с бензиновых форсунок и адаптирует его в сигнал для газовых форсунок с учетом специальных коэффициентов, которые хранятся в топливной карте. Это позволяет учитывать все индивидуальные особенности любых двигателей и без особых усилий, устанавливать на них ГБО. Вся суть хорошей настройки сводится к тому, что необходимо заставить бензиновые мозги работать на газе и продолжать считать, что они работают на нормальном бензине.</p>
<p>Многие считают, что с помощью топливной газовой карты можно «задушить» двигатель и тем самым сэкономить топливо, либо добавить газа и сделать его мощнее. Нужно понять одну простую связь.</p>
<div>Бензиновый мозг считывает показания кислородного датчика и на основе этих данных, формирует топливную смесь. Газовые форсунки жестко связаны с бензиновыми и если бензиновый мозг почувствует недолив или перелив топлива, то скорректирует подачу до нормальных показаний датчика кислорода.</div>
<p>Проблемы, как в случае с автонастройкой, возникают из-за разных корректировок по всей топливной карте. Где-то двигатель переливает, где-то недоливает, а в итого это вытекает в плохую тягу, высокий расход и бензиновый мозг постепенно забывает как правильно работать с бензином и когда вы на него переключаетесь происходят рывки, провалы, взрывы в выхлопной системе. Из этого следует, что существует всего одна настройка газа  правильная. Хотите тюнинговать авто - прошивайте бензиновый мозг.</p>

<h2>Точная настройка(Online-настройка)</h2>
<p>После удачного завершения самонастройки можно переходить к точному конфигурированию топливной карты.</p>

<h3>Коррекция топлива:</h3>
<p>Установите ODB адаптер в диагностическую колодку автомобиля, подключитесь к нему через Bluetooth с вашего телефона, используя Torque(или аналогичную программу). Выведите на дисплей информацию в виде графика о долгосрочной и краткосрочной коррекции. Суть этих параметров заключается в корректировке топлива. Если возникает какая-то ситуация, когда в двигатель подается слишком бедная или слишком богатая смесь, то время открытия форсунок компенсируется этим коэффициентом. Например забитые форсунки, обеднят смесь и коэффициент коррекции вырастет. Как правило этот параметр не может выходить за пределы ± 25%. Если проблема смеси наблюдается слишком долго, краткосрочная коррекция заносится в долгосрочную.</p>
<p>Во время настройки ГБО нам будет необходимо сверяться с коэффициентами коррекции топлива на бензине и газе и «прижимать» газовую корректировку к бензиновой на разных режимах работы.</p>

<h3>Алгоритм настройки:</h3>
<p>Настройку лучше всего производить вдвоем. Водитель и настройщик. Выбирается более-менее ровный участок дороги, на котором продолжительное время можно поддерживать одинаковые обороты двигателя.</p>
<p>Каждая из ячеек в топливной карте соответствует времени открытия форсунки за 20 мс. Каждая форсунка 8-ибитная, а значит имеет 256 временных уровней. 0-минимальное значение, означает, что форсунка закрыта, 255  максимальное значение, означает, что форсунка открыта полное время.</p>
<p>Имеет смысл производить настройку только на рабочих режимах, скажем если вы не «крутите» двигатель более 4500, то нет смысла настраивать карту выше. Настройка осуществляется поэтапно, на каждом этапе увеличиваются обороты двигателя на 500 об/мин. Автомобиль движется продолжительное время на настраиваемых оборотах.</p>

<h4>Приступаем к настройке:</h4>
<p>В программе Lovato Easy Fast перейдите в раздел "Конфигурация" во вкладку "Карта".</p>
<ol>
<li>Включается подача бензина(кнопкой в программе)</li>
<li>Водитель устанавливает постоянные обороты двигателя и точно держит их во время настройки.</li>
<li>На этих оборотах через ODB считываются коэффициенты коррекции.</li>
<li>Включается газ(кнопкой в программе)</li>
<li>Снова считываются коэффициенты коррекции.</li>
<li>Настраивается ячейка под точкой на топливной карте. Если коэффициент коррекции слишком большой, значение ячейки уменьшается, если маленький  увеличивается. Рекомендую выделять весь столбик и изменять его разом на несколько единиц. (После выделения нажимается клавиша Enter).
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/karta-toplivnoy-korrekcii.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/karta-toplivnoy-korrekcii.jpg" alt="ГБО lovato карта топливной коррекции" title="ГБО lovato карта топливной коррекции"/>
    </picture>
    <span class="image-description" itemprop="description">ГБО lovato карта топливной коррекции</span>
</div>

</li>
<li>Процесс настройки повторяется на разных оборотах и разных нагрузках(например, движение в гору).</li>
</ol>
<p>После настройки карта осматривается на наличие резких перепадов в режимах. Хорошо настроенная карта  плавная, т.е. соседние ячейки не сильно отличаются по значению. Если есть неравномерные выпады, рекомендую «выпрямить» область вокруг них вручную.</p>
<p>Если все настроено правильно, вы получите минимальный расход газа и максимальную тягу.</p>

<h2>Настройка ГБО без ODB-адаптера</h2>
<p>Очень жаль, но не всегда удается считать корректные значения c ODB. Порой адаптер не просто не совместим с бензиновыми мозгами. Рассмотрим вариант настройки ГБО Lovato, когда по каким-то причинам нет возможности прочитать коэффициенты коррекции.</p>
<p>Данный метод не является точным, вы не сможете выставить идеальные коэффициенты топливной карты, но погрешность настройки будет в приемлемых пределах.</p>
<p>Настройка без-ODB очень похожа на настройку с адаптером, но в этом случае, мы будем сверяться не с коэффициентом коррекции, а с временем подачи бензина. Это, пожалуй, самая непостоянная величина и она изменяется несколько раз в секунду, так или иначе, это единственное, с чем мы сейчас можем работать. Вам необходимо прочитать усредненное значение этой величины, например, параметр скачет от 4.5 до 5.0, в этом случае средняя величина 4.75. Для верной настройки по времени бензина важно двигаться по максимально ровной дороге, с предельно одинаковыми оборотами, любое отклонение критично.</p>

<h4>Приступаем к настройке без ODB:</h4>
<ol>
<li>Включается подача бензина(кнопкой в программе)</li>
<li>Водитель устанавливает постоянные обороты двигателя и точно держит их во время настройки.</li>
<li>На этих оборотах из программу Lovato Easy Fast считывается усредненное значение времени впрыска бензина.</li>
<li>Включается газ(кнопкой в программе)</li>
<li>Снова считываются усредненное время впрыска бензина.</li>
<li>Настраивается ячейка под точкой на топливной карте. Если <strong>время впрыска бензина</strong> при работе на газу больше чем на бензине, значение ячейки увеличивается, если меньше  уменьшается. Рекомендую выделять весь столбик и изменять его разом на несколько единиц. (После выделения нажимается клавиша Enter).
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/lovato-vremya-vpryska-benzina.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/lovato-vremya-vpryska-benzina.jpg" alt="Время впрыска Бензина" title="Время впрыска Бензина"/>
    </picture>
    <span class="image-description" itemprop="description">Время впрыска Бензина</span>
</div>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/lovato-vremya-vpryska-gaza.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/lovato-vremya-vpryska-gaza.jpg" alt="Время впрыска Газа" title="Время впрыска Газа"/>
    </picture>
    <span class="image-description" itemprop="description">Время впрыска Газа</span>
</div>

</li>
<li>Процесс настройки повторяется на разных оборотах и разных нагрузках(например, движение в гору).</li>
</ol>
<h2>«Играем» с подачей бензина</h2>
<p>Четвертое поколение ГБО очень "хитрое" и в него встроены интересные алгоритмы добавки бензина. Таким образом, одновременно в камере сгорания могут оказаться <b>газ</b> и <b>бензин</b>.</p>
<p>Как известно, «на газу» автомобиль ведет себе не так динамично, как на бензине. Инженеры Lovato хорошо прочувствовали эту проблему и создали <b>режим довпрыска бензина</b> при резких ускорениях. В итоге мы получаем увеличение скорости сгорания газа за счет присутствия бензина и следовательно повышение мощности. Различия в мощности между бензином и газо-бензином практически отсутствуют. На больших ровных участках, когда не нужно быстро разгоняться подается только газ. Преимущественно городской режим и довпрыск бензина не создадут хорошей экономии и если вам не нужно, что бы авто был таким же «прытким», как и на бензине, то добавку бензина можно отключить, делается это в программе Lovato Easy Fast в меню «Конфигурация», на вкладке «Карта», ползунком чувствительности.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-dopolnitelnyy-vprysk-benzina.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/nastroyka-gbo-lovato-v-easy-fast/easy-fast-dopolnitelnyy-vprysk-benzina.jpg" alt="Lovato Easy Fast - дополнительный впрыск бензина" title="Lovato Easy Fast - дополнительный впрыск бензина"/>
    </picture>
    <span class="image-description" itemprop="description">Lovato Easy Fast - дополнительный впрыск бензина</span>
</div>


<p>Можно так же настроить <b>добавку бензина в тяжелых условия</b>, например, при определенных высоких оборотах или помочь газовым форсункам, когда те открыты полностью. Эта помощь возможна, когда время бензиновых форсунок не превышает 16 мс. Программа Lovato Easy Fast в меню «Конфигурация», на вкладке «Переключение», пункты «Холостой ход» и «Работа на высоких оборотах».</p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/avto/nastroyka-gbo-lovato-v-easy-fast'>http://jcup.ru/avto/nastroyka-gbo-lovato-v-easy-fast</a><p>]]></description>
			<pubDate>Sat, 15 Dec 2018 21:50:43 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Как изготовить кабель для ГБО Lovato 4 поколения?]]></title>
			<link>http://jcup.ru/avto/kak-sdelat-kabel-dlya-gbo-lovato</link>
			<guid>http://jcup.ru/avto/kak-sdelat-kabel-dlya-gbo-lovato</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato.jpg" alt="Кабель для ГБО Lovato" title="Кабель для ГБО Lovato"/>
    </picture>
    <span class="hide" itemprop="description">Кабель для ГБО Lovato</span>
</div>  " /><h2>Как я делал шнур для ГБО</h2>

<p>Решился я на установку газового оборудования на свой авто, обратился в специализированную конторку. Мне поставили оборудование ловато, но правильно настроить так и не смогли. Город у меня не большой и другие фирмы, которые я смог найти, не занимались установкой и обслуживанием Lovato.</p>

<p>Безысходность - двигатель прогресса, пришлось разбираться в вопросе самостоятельно. Внешний осмотр показал, что оборудование установлено правильно. Это означало только одно - проблема была в неверной настройке блока ГБО.</p>

<p>Наша цель конфигурирование блока ГБО, для этого производитель предлагает специальное ПО Lovato Easy Fast, с официального сайта его не скачать, но можно найти в сети. Немного погуглив, я понял, что кабель ГБО это не что иное как преобразователь USB&#8594;UART. А это значит, легко найти готовые варианты или даже собрать самому.</p>
  
<h2>Изготовление кабеля ГБО</h2>
<h3>Что потребуется для настройки ГБО?</h3>
<ul>
  <li>кабель ГБО (его-то мы и будем делать)</li>
  <li>драйвер кабеля ГБО</li>
  <li>ноутбук с временем автономной работы около 2-х часов</li>
  <li>программа Lovato Easy Fast</li>
  <li>obd-адаптер</li>
  <li>мобильный телефон с bluetooth программой Torque или ODB Doctor</li>
  <li>прочитайте статью о <a target="_blank" class="btn-link" href="/avto/nastroyka-gbo-lovato-v-easy-fast">сути настройки ГБО Ловато</a></li>
</ul>

<p>Итак, на наше авто уже установлено ГБО 4 поколения, требуется произвести его настройку. Начнем с разъема, его можно найти неподалеку от блока ГБО. Он спрятан под черным колпачком и выглядит как показано ниже. Именно к нему мы и будем подключаться.</p>
<h3>Распиновка раъёма Lovato</h3>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/raspinovka-razema-lovato.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/raspinovka-razema-lovato.jpg" alt="Распиновка разъёма Lovato" title="Распиновка разъёма Lovato"/>
    </picture>
    <span class="image-description" itemprop="description">Распиновка разъёма Lovato</span>
</div>


<ul>
<li>GND (масса)</li>
<li>Rx (прием данных)</li>
<li>Tx (передача данных)</li>
<li>+12 (питание, нам не пригодится)</li>
</ul>

<h3>Правильное подключение кабеля ГБО к разъёму:</h3>
<p>В интернете приведено 2 вида распиновок этого кабеля и они противоречат друг другу. Если бы у меня тогда под рукой был вольтметр, пошел Ва-Банк:) Как оказалось, если перепутать и подключить массу кабеля ГБО на +12 разъема - ничего страшного не происходит, но лучше так не ошибаться. Rx и Tx можно путать местами. Rx и Тx адаптера должны быть подключены к Tx и Rx ГБО соответственно, т.е. перекрестно. Абсолютно понятно, что работать кабель будет, только после правильного подключения всех пинов.</p>


<div class="tableWrapper">
<table>
  	<thead>
	<tr><th>Наш<br/>кабель</th><th>Разъём<br/>блока ГБО</th></tr>
    </thead>
	<tbody>
  	<tr><td align="right">GND</td><td>GND</td></tr>  
  	<tr><td align="right">Rx</td><td>Tx</td></tr>  
  	<tr><td align="right">Tx</td><td>Rx</td></tr>  
    <tr><td align="right">нет</td><td>+12</td></tr>
    </tbody>
</table>
</div>

<h3>Где взять преобразователь USB&#8594;UART?</h3>
<p>Вы можете удивиться, но дата-кабель, ценой около 100$, можно изготовить самостоятельно за 3$. По факту, этот кабель не что иное, как USB&#8594;UART адаптер со специальными уровнями TTL. С этой задачей прекрасно справляется микросхема PL2303HX:</p>
<ul>
<li>Можно заказать <a class="btn-link" rel="nofollow" href="https://ru.aliexpress.com/af/USB-to-TTL-converter-UART-module-CH340G.html?SearchText=USB+to+TTL+converter+UART+module+CH340G&d=y&initiative_id=SB_20181205013426&origin=n&catId=0&isViewCP=y&jump=afs"> преобразователь на чипе PL2303HX</a> на AliExpress, ориентировочный ценник  0.85$.

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/kitayskiy-preobrazovatel-usb-v-uart.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/kitayskiy-preobrazovatel-usb-v-uart.jpg" alt="Китайский преобразователь USB в UART." title="Китайский преобразователь USB в UART."/>
    </picture>
    <span class="image-description" itemprop="description">Китайский преобразователь USB в UART.</span>
</div>

  
</li>
<li>Так же данная микросхема применялась почти поголовно во всех дата-кабелях к старым мобилам, типа Siemens, Nokia, Motorola. Наверняка со старых времен, у вас найдется такой кабель, можно дать ему вторую жизнь.
  
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/data-kabel-ot-starogo-sotovogo-telefona.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/data-kabel-ot-starogo-sotovogo-telefona.jpg" alt="Дата кабель от старого сотового телефона." title="Дата кабель от старого сотового телефона."/>
    </picture>
    <span class="image-description" itemprop="description">Дата кабель от старого сотового телефона.</span>
</div>


Для наших целей необходимо использовать всего 3 пина, выделенных, красным.</li>
</ul>
<p>Для подключения к разъему ГБО Lovato очень удобно использовать DIP-штырьки, купить можно в любом магазине радиодеталей или заказать с AliExpress, их можно ломать и использовать по одному.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/dip-pins.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/dip-pins.jpg" alt="Планка пинов для DIP-монтажа." title="Планка пинов для DIP-монтажа."/>
    </picture>
    <span class="image-description" itemprop="description">Планка пинов для DIP-монтажа.</span>
</div>


<p>Припаяйте провода к этим штырькам и вашему адаптеру. Рекомендую сделать провода достаточно длинными, что бы можно было конфигурировать ГБО из салона авто, это требуется для онлайн-настройки, об этом позже.</p>
<p>В итоге, у нас должен получится примерно такой кабель:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/samodelnyy-kabel-gbo-lovato.webp"/>
        <img class="image-in-container-bw" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/avto/kak-sdelat-kabel-dlya-gbo-lovato/samodelnyy-kabel-gbo-lovato.jpg" alt="Самодельный кабель для ГБО." title="Самодельный кабель для ГБО."/>
    </picture>
    <span class="image-description" itemprop="description">Самодельный кабель для ГБО.</span>
</div>


<h3>Работает ли наш кабель? Последние тесты.</h3>
<p>Для работы адаптера устанавливаем драйвер (скачать можно с сайта разработчика микросхемы <a class="btn-link" href="http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&amp;pcid=41">Profilic PL2303HX</a>). Если вы используете пиратскую версию микросхемы, драйвера установятся, но не будут работать, эта проблема реашается установкой драйвера более ранней версии(скачать можно в конце статьи). Проверить работоспособность свежесобранного кабеля можно программой <a class="btn-link" href="http://www.compt.ru/ru/download.php" ref="nofollow">Com Port Toolkit</a>. Рабочая программа условно делится на две части: левая панель  передача, правая прием.</p>
<p>Замкните между собой контакты Rx и Tx, таким образом, все что вы отправите через этот кабель, будет сразу же им принято. В левой панели <b>Com Port Toolkit</b> попробуйте отправить несколько байт, если в правом окне отобразятся эти же байты, значит кабель исправен.</p>

<h2>Настраиваем «мозги»</h2>
<p>Прочитайте о <a  class="btn-link" target="_blank" href="/avto/nastroyka-gbo-lovato-v-easy-fast">правильной настройке <b>ГБО Lovato</b></a>, используя официальное ПО <b>Lovato Easy Fast</b> и наш кабель.</p>

<h2>Драйвера для пиратский микросхем PL2303HX</h2>
<p>
<a class="btn-link" target="_blank" href="/files/avto/kak-sdelat-kabel-dlya-gbo-lovato/pl2303-prolific-driverinstaller-v1-5-0.zip">PL2303-Prolific-DriverInstaller-v1.5.0.zip</a><br/>
<a class="btn-link" target="_blank" href="/files/avto/kak-sdelat-kabel-dlya-gbo-lovato/pl2303-prolific-driverinstaller-1025.7z">PL2303_Prolific_DriverInstaller_1025.7z</a>
</p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/avto/kak-sdelat-kabel-dlya-gbo-lovato'>http://jcup.ru/avto/kak-sdelat-kabel-dlya-gbo-lovato</a><p>]]></description>
			<pubDate>Fri, 27 Sep 2019 00:04:17 +0400</pubDate>
		</item>
		<item>
			<title><![CDATA[Установка и начальная настройка Liferay Portal и IDE Eclipse]]></title>
			<link>http://jcup.ru/java/liferay-get-started</link>
			<guid>http://jcup.ru/java/liferay-get-started</guid>
			<description><![CDATA[<img src="http://jcup.ru<div class="post-image blogitem-image" itemscope itemtype="https://schema.org/ImageObject"> 
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-ustanovka-i-pervonachalnaya-nastroyka.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-ustanovka-i-pervonachalnaya-nastroyka.jpg" alt="Установка Liferay и первоначальная настройка среды разработки" title="Установка Liferay и первоначальная настройка среды разработки"/>
    </picture>
    <span class="hide" itemprop="description">Установка Liferay и первоначальная настройка среды разработки</span>
</div>  " /><p><strong>Liferay</strong>  это корпоративный портал с реализованными базовыми решениями, предоставляющий очень гибкие возможности по созданию мощных <b>web-приложений</b>, используя всю мощь языка <b>Java</b>. Поставляется в виде готового сервера. Liferay можно назвать системой управлением содержимым(CMS). Liferay - это блочная структура, состоящая из портлетов(<b>Portlets</b>). Встроенный конструктор позволяет настроить права доступа к приложениям, и скомпоновать их на рабочей области портала.</p>
<p><b>Liferay</b> распространяется как под <strong>проприетарной</strong> и <strong>свободной </strong>версиями. Последнея обеспечило популярность системы.</p>

<p>Нам потребуются:</p>
<ul>
<li>ОC Windows или Linux</li>
<li>Java JDK</li>
<li>Liferay Portal в сборке с Tomcat</li>
<li>Liferay plugin SDK</li>
<li>Liferay IDE</li>
</ul>
<blockquote>
  
<h2>Для пользователей Linux:</h2>
<p>Статья написана с уклоном на использование Windows, но ничего не мешает разрабатывать портлеты под Linux или Mac. Это статья вполне подойдет для вас, замените пути "c:\" на "/home/user/".</p>
</blockquote>
<p>Инструкция по настройки рабочего места для Liferay Portal разбирта на 6 шагов:</p>
<ol>
<li><a href="#p1">Установка JDK</a></li>
<li><a href="#p2">Установка Liferay Portal</a></li>
<li><a href="#p3">Установка Liferay IDE</a></li>
<li><a href="#p4">Установка Liferay Plugin SDK</a></li>
<li><a href="#p5">Настройка Eclipse IDE</a></li>
<li><a href="#p6">Настройка Liferay Portal</a></li>
</ol>

<h2 id="p1">Установка JDK</h2>
<p>Первым делом, необходимо установить <b>Java Developer Kit(JDK)</b>, установить переменные окружения <b>JAVA_HOME</b> и <b>JRE_HOME</b>. Как это сделать, я описывал в <a class="btn-link" target="_blank" href="http://jcup.ru/java/java-install">этой статье</a>.</p>

<h2 id="p2">Установка Liferay Portal</h3>
<p>Liferay Portal можно свободно скачать на сайте разработчика:</p>
<p><a class="btn-link" target="_blank" rel="external nofollow" href="https://www.liferay.com/downloads/liferay-portal/available-releases">https://www.liferay.com/downloads/liferay-portal/available-releases</a></p>
<p>Выбираем сборку с <b>Tomcat</b>. <b>Tomcat</b>  это сервер приложений, в нашем случае обеспечивает работу портала. Вообще портал будет работать и на других серверах приложений, в этой статье мы будем рассматривать работу именно на Tomcat.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-na-oficialnom-sayte.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-na-oficialnom-sayte.jpg" alt="Скачаем Liferay с официального сайта" title="Скачаем Liferay с официального сайта"/>
    </picture>
    <span class="image-description" itemprop="description">Скачаем Liferay с официального сайта</span>
</div>


<p>Для удобства работы, лучше разместить папку с порталом в самом корне диска "C:\lr\". Как и многие свободные продукты, Liferay Portal поставляется без инсталлятора. Достаточно распаковать его и он готов к работе. Распакуйте его в папку "C:\lr\portal\".</p>
<blockquote>
  
<h2>Для справки:</h2>
<p>Папка <b>deploy</b>  папка для установки web-приложений. Если в эту папку положить скомпилированный портет, он будет установлен в Liferay Portal.</p>
<p>Управление сервером осуществляется скриптами, находящимися в папке "C:\lr\portal\tomcat-7.0.42\bin\".</p>
<p><strong>startup.bat</strong>  ручной запуск сервера, не запускайте его до конца этой инструкции(<b>startup.sh</b> - для Linux и Mac)</p>
<p><strong>shutdown.bat</strong>  ручная остановка сервера(<b>shutdown.sh</b> - для Linux и Mac)</p>
</blockquote>

<h2 id="p3">Установка Liferay IDE</h2>
<p>Теперь скачаем и установим среду разработки, находится она том-же сайте разработчика по адресу:</p>
<p><a rel="external nofollow" class="btn-link" href="https://www.liferay.com/downloads/liferay-projects/liferay-ide">https://www.liferay.com/downloads/liferay-projects/liferay-ide</a></p>
<p>Кстати, среда разработки  это не что иное, как Eclipse с установленным плагином, о плагине мы поговорим позже. Если ваша вера требует другой версии Eclipse, скачайте ее и установите плагин вручную.</p>
<p>Выбираем версию Eclipse в соответствии с разрядностью вашей системы:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/versiya-liferay.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/versiya-liferay.jpg" alt="Выберите версию Liferay" title="Выберите версию Liferay"/>
    </picture>
    <span class="image-description" itemprop="description">Выберите версию Liferay</span>
</div>


<p>Скачайте Eclipse и распакуйте его в C:\lr\ide. Eclipse не из того софта, что заботится о ярлыке, придется создать его вручную.</p>

<div itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/yarlyk-liferay.webp"/>
        <img class="image-seftcontainer" src="http://jcup.ru/images/java/liferay-get-started/yarlyk-liferay.jpg" alt="Ярлык Liferay" title="Ярлык Liferay"/>
    </picture>
    <span class="hide" itemprop="description">Ярлык Liferay</span>
</div>

<h2 id="p4">Установка Liferay Plugin SDK</h2>
<p>Займемся установкой плагина. Скачать его можно с сайта разработчика, находится он в том-же выпадающем списке, что и <b>Liferay Portal</b>:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-plugin-sdk-dlya-eclipse.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-plugin-sdk-dlya-eclipse.jpg" alt="Скачайте с сайта Liferay Plugin SDK для Eclipse" title="Скачайте с сайта Liferay Plugin SDK для Eclipse"/>
    </picture>
    <span class="image-description" itemprop="description">Скачайте с сайта Liferay Plugin SDK для Eclipse</span>
</div>


<p>Скачайте плагин и распакуйте его в папку "C:\lr\liferay-plugins-sdk".</p>

<h2 id="p5">Настройка Eclipse IDE</h2>
<p>Запускаем Eclipse. При запуске Eclipse предложить выбрать рабочую папку для проектов, рекомендую для дальнейшего удобства выбрать "C:\lr\workspace".</p>

<p>Необходимо выбрать режим разработчика Liferay, для этого в правом верхнем углу нажмите на пиктограмму "Open Perspective".</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/dobavit-perspektivu-v-eclipse.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/dobavit-perspektivu-v-eclipse.jpg" alt="Добавить перспективу в Eclipse" title="Добавить перспективу в Eclipse"/>
    </picture>
    <span class="image-description" itemprop="description">Добавить перспективу в Eclipse</span>
</div>


<p>И выберите перспективу Liferay:</p>
<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/vyberite-perspektivu-liferay.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/vyberite-perspektivu-liferay.jpg" alt="Выберите перспективу Liferay" title="Выберите перспективу Liferay"/>
    </picture>
    <span class="image-description" itemprop="description">Выберите перспективу Liferay</span>
</div>


<p>Кликните на пиктограмму Liferay и выберите New Liferay SDK.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/dobavit-liferay-sdk-v-sistemu.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/dobavit-liferay-sdk-v-sistemu.jpg" alt="Добавить Liferay SDK в систему" title="Добавить Liferay SDK в систему"/>
    </picture>
    <span class="image-description" itemprop="description">Добавить Liferay SDK в систему</span>
</div>


<p>В поле Location укажите путь до плагина:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/ukazhite-put-k-liferay-sdk.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/ukazhite-put-k-liferay-sdk.jpg" alt="Укажите путь к Liferay SDK" title="Укажите путь к Liferay SDK"/>
    </picture>
    <span class="image-description" itemprop="description">Укажите путь к Liferay SDK</span>
</div>


<p>Теперь уведомим Eclipse о том, что у нас уже установлен сервер Liferay на Tomcat, благодаря этому, мы сможем управлять сервером прямо из нашей среды разработки. Найдите вложенное окно Servers, оно находится снизу слева, внутри Eclipse. Кликните по подчеркнутой синей надписи.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/eclipse-servers.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/eclipse-servers.jpg" alt="Eclipse вкладка «Servers»" title="Eclipse вкладка «Servers»"/>
    </picture>
    <span class="image-description" itemprop="description">Eclipse вкладка «Servers»</span>
</div>


<p>Из списка выбираем текущую версию Liferay Portal. На момент написания статьи, последняя версия Liferay  6.2. Жмем Next &gt;.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/eclipse-okno-new-server.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/eclipse-okno-new-server.jpg" alt="Eclipse окно «New Server». Укажите вашу версию Liferay." title="Eclipse окно «New Server». Укажите вашу версию Liferay."/>
    </picture>
    <span class="image-description" itemprop="description">Eclipse окно «New Server». Укажите вашу версию Liferay.</span>
</div>


<p>Указываем путь до папки с Tomcat.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/put-k-do-papki-s-tomcat.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/put-k-do-papki-s-tomcat.jpg" alt="Укажите путь к до папки с Tomcat" title="Укажите путь к до папки с Tomcat"/>
    </picture>
    <span class="image-description" itemprop="description">Укажите путь к до папки с Tomcat</span>
</div>


<p>Жмем Finish.</p>

<h2 id="p6">Настройка Liferay Portal</h2>
<p>Eclipse IDE настроен, приступим к настройке портала.</p>
<p>Запустим сервер прямо из Eclipse. Левый нижний угол, вложенное окно Servers.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-tomcat-start-server.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-tomcat-start-server.jpg" alt="Запустим сервер Liferay" title="Запустим сервер Liferay"/>
    </picture>
    <span class="image-description" itemprop="description">Запустим сервер Liferay</span>
</div>


<p>Лог работы сервера выводится во вкладку Console. Liferay грузится очень долго, запаситесь чаем и терпением. На моем Core i3, SSD, 6 гб DDR3, загрузка занимает 129 секунд. Вы можете наблюдать в логе огромное количество записей, окрашенных в красный цвет, все хорошо, это не исключения, это нормальное поведение)</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-start-time.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-start-time.jpg" alt="Liferay запустился за 129 секунд" title="Liferay запустился за 129 секунд"/>
    </picture>
    <span class="image-description" itemprop="description">Liferay запустился за 129 секунд</span>
</div>


<p>Сервер считается запущенным, после записи в логе INFO: Server startup in 129380 ms.</p>
<p>Сервер работает и после первого запуска нуждается в начальной настройке. Запускаем любимый браузер и переходим по ссылке <b>http://localhost:8080/</b>. Заполняем все поля для создания учетки админа.</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/nachalnaya-stranica-lifaray-servera.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/nachalnaya-stranica-lifaray-servera.jpg" alt="Начальная страница настройки Lifaray сервера" title="Начальная страница настройки Lifaray сервера"/>
    </picture>
    <span class="image-description" itemprop="description">Начальная страница настройки Lifaray сервера</span>
</div>


<p>Сейчас мы настраиваем Liferay как тестовый сервер для разработки, поэтому нам вполне подойдет встроенная БД(Hypersonic). На продакшине, конечно, нужно обязательно использовать внешнюю БД, настроить можно, кликом по кнопке (Change).</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/vybor-bd-lifaray.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/vybor-bd-lifaray.jpg" alt="Выбор БД Lifaray" title="Выбор БД Lifaray"/>
    </picture>
    <span class="image-description" itemprop="description">Выбор БД Lifaray</span>
</div>


<p>Давим на кнопку Finish configuration. Дайте Liferay немного времени</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/liferay-gotovitsya-k-pervomu-zapusku.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/liferay-gotovitsya-k-pervomu-zapusku.jpg" alt="Liferay готовится к первому запуску" title="Liferay готовится к первому запуску"/>
    </picture>
    <span class="image-description" itemprop="description">Liferay готовится к первому запуску</span>
</div>


<p>В случае удачи, Liferay выведет следующее сообщение:</p>

<div class="image-container" itemscope itemtype="http://schema.org/ImageObject">
    <picture>
        <source type="image/webp" srcset="/images/java/liferay-get-started/nastroyka-zavershena-uspeshno-zapusku.webp"/>
        <img class="image-in-container" itemprop="contentUrl" class="img-responsive" src="http://jcup.ru/images/java/liferay-get-started/nastroyka-zavershena-uspeshno-zapusku.jpg" alt="Настройка завершена успешно, о чем свидетельствует сообщение портала." title="Настройка завершена успешно, о чем свидетельствует сообщение портала."/>
    </picture>
    <span class="image-description" itemprop="description">Настройка завершена успешно, о чем свидетельствует сообщение портала.</span>
</div>


<p>В систему всегда можно войти по адресу <b>http://localhost:8080</b>, используя вашу учетку.</p>
<p>На данном этапе вы имеете полностью сконфигурированное рабочее место для <b>разработки портлетов</b> для <b>Liferay Portal</b>.</p><p>Оригинальный адрес статьи: <a href='http://jcup.ru/java/liferay-get-started'>http://jcup.ru/java/liferay-get-started</a><p>]]></description>
			<pubDate>Tue, 18 Dec 2018 14:12:14 +0400</pubDate>
		</item>
	</channel>
</rss>
