<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1291912296346456290</id><updated>2024-08-29T16:02:05.957-07:00</updated><category term="ubuntu"/><category term="java"/><category term="mysql"/><category term="git"/><category term="python"/><category term="apache"/><category term="django"/><category term="windows"/><category term="idea"/><category term="javascript"/><category term="maven"/><category term="rails"/><category term="spring mvc"/><category term="teamfora"/><category term="tomcat"/><category term="virtual box"/><category term="freebsd"/><category term="postgresql"/><category term="svn"/><category term="angular 2"/><category term="c"/><category term="c#"/><category term="c++"/><category term="docker"/><category term="heroku"/><category term="iptables"/><category term="my minds"/><category term="nix"/><category term="ruby"/><category term="webpack"/><category term="VS2010"/><category term="WinAPI"/><category term="ant"/><category term="aptana"/><category term="art"/><category term="checkdisk"/><category term="chrome"/><category term="config"/><category term="daemontools"/><category term="flup"/><category term="gamedev"/><category term="gimp"/><category term="grub"/><category term="gwt"/><category term="indie"/><category term="inet6"/><category term="jetspeed"/><category term="json"/><category term="kubernetes"/><category term="lighttpd"/><category term="mavn"/><category term="mod-python"/><category term="mod-wsgi"/><category term="music"/><category term="netbeans"/><category term="network"/><category term="nginx"/><category term="nodejs"/><category term="npm"/><category term="openbox"/><category term="patterns"/><category term="php"/><category term="portal"/><category term="pypanel"/><category term="pyqt"/><category term="reactjs"/><category term="remote desktop"/><category term="require"/><category term="sharepoint"/><category term="systemjs"/><category term="vi"/><category term="web"/><category term="wine"/><category term="xml"/><title type='text'>DissDoc Blog</title><subtitle type='html'>ИТ-индустрия</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>118</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-5658716229057448859</id><published>2021-12-23T00:02:00.002-08:00</published><updated>2021-12-23T00:03:03.926-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gamedev"/><category scheme="http://www.blogger.com/atom/ns#" term="indie"/><title type='text'>Начало. Space Fights: Alone</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;&amp;nbsp;Долго думал над тем, чтобы начать писать свою игру. Прорабатывал концепции, много раз брался за реализацию, но затем на полпути бросал всяческие попытки что-то реализовать.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;Позже, сокращая идеи, пришел к плану написания простой аркады с элементами выживания. Основное направление - это старая и хорошо всем известная игра Asteroids. О ней слышали все, общую концепцию представляют тоже все, кто хоть раз в нее играл или хотя бы видел. И тут я подумал, а что если взять данную игру и добавить в нее идеи из Factorio? Будет ли она интересней и привлекательней? При этом оставив аркадную составляющую?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;&amp;nbsp;Итак, какие технологии будут в ней использоваться:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;libgdx 1.10&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;java 16 (возможно удастся добиться работы 17 версии)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;gimp (как редактор для pixel графики)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;музыку буду искать в свободном доступе&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;&amp;nbsp;Что касается самой игры, то должно быть&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;несколько локаций&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;переход между локация осуществляется через гипер-прыжки&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;возможность менять и перестраивать свой корабль&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;необходимо продумать процесс сбора ресурсов&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;добавить функционал исследования технологий&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;&lt;span&gt;Данная серия статей нужно для собственного контроля процесса разработки. Частые отчеты будут выходить на моем канале в Twitter. Тут будут исключительно выкладываться подведения итогов. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/5658716229057448859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/5658716229057448859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5658716229057448859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5658716229057448859'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2021/12/space-fights-alone.html' title='Начало. Space Fights: Alone'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-7209362856360138954</id><published>2020-01-05T02:41:00.001-08:00</published><updated>2020-01-05T02:43:30.211-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Установка Kubernetes на Ubuntu</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Всем привет! Сегодня я расскажу о своем опыте установки kubernetes на локальную машину с установленной ubuntu. Итак, поехали&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;
В самом начале нам необходимо в BIOS отключить безопасность загрузчика
&lt;br /&gt;
&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Boot Secure &lt;b&gt;DISABLE&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;
Затем необходимо проделать несколько шагов для установки virtualbox
&lt;br /&gt;
&lt;/span&gt;&lt;blockquote&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;sudo apt-get update&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;sudo apt-get install -y apt-transport-https&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;sudo apt-get install -y virtualbox virtualbox-ext-pack
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;
После этого начинаем ставить minikube&lt;br /&gt;
&lt;/span&gt;&lt;blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;color: #073763;&quot;&gt;curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.29.0/minikube-linux-amd64 &amp;amp;&amp;amp; chmod +x minikube &amp;amp;&amp;amp; sudo cp minikube /usr/local/bin/ &amp;amp;&amp;amp; rm miniku&lt;/span&gt;be 
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;
Также необходимо установить командную оболочку kubectl&lt;br /&gt;
&lt;/span&gt;&lt;blockquote&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl &amp;amp;&amp;amp; chmod +x kubectl &amp;amp;&amp;amp; sudo mv kubectl /usr/local/bin/
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;
Запускаем minikube&lt;br /&gt;
&lt;/span&gt;&lt;blockquote&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;minikube start
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Смотрим статус запущенного приложения&lt;br /&gt;
&lt;/span&gt;&lt;blockquote&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;kubectl cluster-info
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/7209362856360138954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/7209362856360138954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7209362856360138954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7209362856360138954'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2020/01/kubernetes-ubuntu.html' title='Установка Kubernetes на Ubuntu'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-7107856463214390347</id><published>2019-10-16T01:03:00.002-07:00</published><updated>2019-10-16T01:03:21.041-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Принятие политик iptable после перезагрузки сервера</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;Важное дополнение. Необходимо после перезагрузки сервера оставлять все свои политики, а не применять их снова. Для меня удобным способом является использование пакета iptables-persistent&lt;br /&gt;&lt;br /&gt; Первым делом устанавливаем сам пакет&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;apt-get install iptables-persistent&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Затем сохраняем все настройки в нужную директорию, откуда они будут подтягиваться&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;iptables-save &amp;gt; /etc/iptables/rules.v4&lt;/span&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;ip6tables-save &amp;gt; /etc/iptables/rules.v6&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Вот и все. Теперь после каждой перезагрузки у нас будут подгружаться наши настройки &lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/7107856463214390347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/7107856463214390347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7107856463214390347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7107856463214390347'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/10/iptable.html' title='Принятие политик iptable после перезагрузки сервера'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-7770323692811645904</id><published>2019-10-16T00:58:00.002-07:00</published><updated>2019-10-16T01:04:12.901-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Настройка iptables в Ubuntu</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Сегодня встретился с новой проблемой - необходимо было закрыть все порты на своем сервере, и открыть только самые необходимые. Для этого, что удивительно, пришлось перерыть интернет в поисках необходимых инструкций к действиям. Собирал все по кусочкам, поэтому решил написать небольшую статью.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Для начала, нам необходимо понять, что у нас доступно, а что нет. Проверяется командой&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -L&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Мы удостоверились, что на только что установленой ОС открыто все возможное. Нам нужно все эти конфигурации удалить&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -F&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Теперь самое интересное - нам нужно открыть все порты на локальном интерфейсе, для того, чтобы внутри сервера все работало без сбоев&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -i lo -j ACCEPT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A OUTPUT -o lo -j ACCEPT&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Также накопал важную строчку в процессе конфигурации. Необходимо разрешать уже открытым соединениям завершать работу (не блокировать)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Как только предварительные действия совершили, нужно открыть необходимые порты (мы открываем 22, 80, 8080, 443)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Теперь, чтобы все это заработало, необходимо поменять политику по умолчанию на DROP&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;sudo iptables -P INPUT DROP&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/7770323692811645904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/7770323692811645904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7770323692811645904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7770323692811645904'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/10/iptables-ubuntu.html' title='Настройка iptables в Ubuntu'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-1537049587979080177</id><published>2019-10-12T09:09:00.002-07:00</published><updated>2019-10-12T09:09:11.972-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><title type='text'>Docker. Шпаргался по командам</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FROM&lt;/span&gt;&lt;/b&gt; — задаёт базовый (родительский) образ.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;LABEL&lt;/b&gt;&lt;/span&gt; — описывает метаданные. Например — сведения о том, кто создал и поддерживает образ.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ENV&lt;/span&gt;&lt;/b&gt; — устанавливает постоянные переменные среды.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;RUN&lt;/b&gt;&lt;/span&gt; — выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;COPY&lt;/b&gt;&lt;/span&gt; — копирует в контейнер файлы и папки.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ADD&lt;/span&gt;&lt;/b&gt; — копирует файлы и папки в контейнер, может распаковывать локальные .tar-файлы.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;CMD&lt;/span&gt;&lt;/b&gt; — описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;WORKDIR&lt;/span&gt;&lt;/b&gt; — задаёт рабочую директорию для следующей инструкции.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ARG&lt;/span&gt;&lt;/b&gt; — задаёт переменные для передачи Docker во время сборки образа.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ENTRYPOINT&lt;/span&gt;&lt;/b&gt; — предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;EXPOSE&lt;/span&gt;&lt;/b&gt; — указывает на необходимость открыть порт.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;VOLUME&lt;/span&gt;&lt;/b&gt; — создаёт точку монтирования для работы с постоянным хранилищем.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/1537049587979080177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/1537049587979080177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/1537049587979080177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/1537049587979080177'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/10/docker.html' title='Docker. Шпаргался по командам'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-3161080666394094041</id><published>2019-10-09T11:32:00.001-07:00</published><updated>2019-10-09T11:32:03.224-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Создание ветки, если много удаленных репозиториев в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Всем привет!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Давайте представим, что по определенным причинам нам необходимо держать несколько удаленных репозиторием.&amp;nbsp; А именно помимо классического &lt;b&gt;origin&lt;/b&gt;, у нас еще есть &lt;b&gt;portal&lt;/b&gt; и &lt;b&gt;downgrade&lt;/b&gt; репозитории&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Нам нужно создать бранч от репозитория &lt;b&gt;downgrade&lt;/b&gt;. Для этого мы должны просто указать в каком месте находится данный репозиторий. Делается это простой командой&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git checkout -b mybranch downgrade/mybranch&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/3161080666394094041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/3161080666394094041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3161080666394094041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3161080666394094041'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/10/git_9.html' title='Создание ветки, если много удаленных репозиториев в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-6317868982480097115</id><published>2019-10-01T07:51:00.004-07:00</published><updated>2019-10-01T07:51:57.969-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Как переименовать ветку в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Сегодняшняя заметка о том, каким образом можно переименовать текущую ветку и продолжить работать в переименованной ветке. Выполняется это простыми командами. Для начала нужно&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git branch -m new-name&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Таким образом мы переименовываем текущий бранч или можно сделать иначе&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git checkout master&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git branch -m old-name new-name&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;После этого нужно удаленно тоже все подчистить&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git push origin :old-name new-name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif;&quot;&gt;git push origin -u new-name
&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/6317868982480097115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/6317868982480097115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/6317868982480097115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/6317868982480097115'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/10/git.html' title='Как переименовать ветку в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-6298358395577748478</id><published>2019-09-29T03:34:00.003-07:00</published><updated>2019-09-29T03:34:21.651-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Сливаем ветки и удаляем историю в одной из веток в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Сегодня быстрая заметка для удаления всех комментариев из той ветки, которую в дальнейшем планируем удалять. Это реализуется с помощью команды &lt;b&gt;--squash&lt;/b&gt;. Представим, что мы хотим заливаем все изменения в ветку &lt;b&gt;develop&lt;/b&gt; из ветки &lt;b&gt;feature/simple-test&lt;/b&gt;. И удалим в дальнейшем ветку &lt;b&gt;feature/simple-test&lt;/b&gt;. Выглядеть такая работа будет таким образом&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git checkout develop&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git merge --squash feature/simple-test&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git commit -m &quot;merge feature&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/6298358395577748478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/6298358395577748478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/6298358395577748478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/6298358395577748478'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/09/git_29.html' title='Сливаем ветки и удаляем историю в одной из веток в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-9209182616862893437</id><published>2019-09-21T03:30:00.000-07:00</published><updated>2019-09-21T03:30:00.440-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nodejs"/><category scheme="http://www.blogger.com/atom/ns#" term="npm"/><title type='text'>Удаление пакетов с помощью npm</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Доброго дня!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Вот небольшой набор команд, каким образом можно из package.json удалять пакеты&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;npm uninstall &lt;package&gt; &lt;br /&gt;
npm uninstall &lt;package&gt; --save &lt;br /&gt;
npm uninstall &lt;package&gt; --save-dev&lt;br /&gt;
npm -g uninstall &lt;package&gt; --save&lt;/package&gt;&lt;/package&gt;&lt;/package&gt;&lt;/package&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/9209182616862893437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/9209182616862893437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/9209182616862893437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/9209182616862893437'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/09/npm.html' title='Удаление пакетов с помощью npm'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-3889392677236796260</id><published>2019-09-21T00:32:00.004-07:00</published><updated>2019-09-21T00:32:42.280-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Удаление веток в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Без лишних слов, давайте приступим к удалению веток. Пусть у нас будет ветка &lt;b&gt;feature/simple-fix&lt;/b&gt;, над которой и будем экспериментировать&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Для начала, удалим ветку у себя локально&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git branch -d feature/simple-fix&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Для удаления ветки, которая находится удаленно, нам необходимо выполнить команду&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git push origin --delete feature/simple-fix&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Вот так быстро и легко можно подчистить ветки. Всем успехов!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/3889392677236796260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/3889392677236796260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3889392677236796260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3889392677236796260'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/09/git_15.html' title='Удаление веток в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-5134960327232028035</id><published>2019-09-21T00:07:00.006-07:00</published><updated>2019-09-21T00:07:44.967-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Очистить все коммиты в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Сегодня мы разберем проблему, когда необходимо стереть всю историю комментариев, но при этом оставить все изменения в текущей ветке. Итак, поехали.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Во-первых, нам необходимо создать сиротскую ветку от текущей ветки (которую мы потом будем удалять). Пусть наша текущая ветка будет называться develop. Создадим сироту&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git checkout --orphan develop_temp&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;В данной ветке нет ни одного комментария, но есть все файлы, которые были в ветке develop. Теперь нам нужно добавить все файлы в нашу новую ветку develop_temp&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git add -A&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git commit -am &quot;first commit&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Идем дальше. Удаляем нашу ветку-родитель (у нас же есть сирота, а у сироты не бывает родителей ;) )&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git branch -D develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;После этого переименовываем ветку-сироту по имени ветки-родителя&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git branch -m develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;И наконец зальем все в нашу репу&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git push -f origin develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;P.S. в данном подходе есть одна проблема, при мерджинге (или ребейзе). Проблема эта выглядит как сообщение об ошибке&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #990000; font-family: Verdana, sans-serif;&quot;&gt;fatal: refusing to merge unrelated histories&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Происходит это потому, что два несвязанных проекта пытаются смерджиться. Решается эта проблема при первом мердже командой&amp;nbsp;&lt;b&gt;allow-unrelated-histories&lt;/b&gt;. Как вариант это работает вот так&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;1.&amp;nbsp;git pull origin master --allow-unrelated-histories&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;2.&amp;nbsp;git merge develop --allow-unrelated-histories&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Да вот собственно и все. Всем успехов!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/5134960327232028035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/5134960327232028035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5134960327232028035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5134960327232028035'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/09/git_21.html' title='Очистить все коммиты в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-5202257110094585884</id><published>2019-09-20T23:46:00.000-07:00</published><updated>2019-09-20T23:46:34.946-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Слияние веток в git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Пусть у нас есть 2 ветки и мы не хотим пробегаться по всем изменениям и подтверждать, есть потребность залить слиться сразу, доверяя ветке, где находятся наши изменения&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;master (куда мы хотим залить наши изменения)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;develop (где находятся наши изменения после коммитов)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Вначале разберемся с командой &lt;b&gt;merge&lt;/b&gt;. Тут все просто. Заходим в master-ветку&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git checkout master&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;После этого сливаемся, при этом говорим, что принимаем изменения ветки &lt;u&gt;develop&lt;/u&gt; - указываем параметр &lt;b&gt;theirs&lt;/b&gt;, если же хотим принять изменения ветки master, то указываем параметр ours&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git merge -X theirs develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Что касаемо&lt;b&gt; rebase&lt;/b&gt;, то тут все аналогично. Т.е. мы находимся в той ветке, которую будем заливать&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git checkout develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;После этого мы выполняем команду &lt;b&gt;rebase&lt;/b&gt; и принимаем все изменения автоматически, а после нее заливаем изменения в &lt;u&gt;master&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git rebase -X theirs master&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git checkout master&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif;&quot;&gt;git merge develop&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Дальше, продолжайте работать. Всем успехов!&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/5202257110094585884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/5202257110094585884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5202257110094585884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5202257110094585884'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2019/09/git.html' title='Слияние веток в git'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-5330318503046578788</id><published>2018-10-04T04:54:00.006-07:00</published><updated>2018-10-04T04:54:53.946-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="angular 2"/><category scheme="http://www.blogger.com/atom/ns#" term="config"/><title type='text'>Angular pre-processor</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;If you wanna change pre-processor on existing project run&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;ng config schematics.@schematics/angular:component.styleext styl&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;If you wanna change pre-processor on new project run:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #073763; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;ng new my-app --style styl&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/5330318503046578788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/5330318503046578788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5330318503046578788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5330318503046578788'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2018/10/angular-pre-processor.html' title='Angular pre-processor'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-5016197348380566160</id><published>2018-09-26T09:09:00.001-07:00</published><updated>2018-09-26T09:09:10.544-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Оптимизация Ubuntu (в частности для SSD)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Порывшись в интернете, нашел несколько действий, которые должны позволить продлить срок службы SSD, а также ускорить работу всей системы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
В самом начале отключим работу лишних демонов приложений. Проще всего это сделать установив дополнительное приложение &lt;a href=&quot;https://packages.debian.org/ru/wheezy/sysv-rc-conf&quot;&gt;sysv-rc-conf&lt;/a&gt;. Делается это путем классической установки пакета
&lt;br /&gt;

&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;sudo apt-get install sysv-rc-conf
&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
Затем запускаем приложение и убираем &quot;крестики&quot; с &quot;лишних&quot; приложений. А приложения у нас лишние следующие
&lt;br /&gt;

&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;brltty&lt;/b&gt; - служба помощи слепым людям посредством дисплея Брайля&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;pppd-dns&lt;/b&gt; - служба подключения к интернету через модем&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;saned&lt;/b&gt; - служба работы со сканерами&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;speech-di&lt;/b&gt; - служба синтеза речи&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
Мое любимое приложение - &lt;b&gt;Preload&lt;/b&gt;. Помогает ускорять запуск приложений благодаря тому, что кэширует часто используемые приложения и их библиотеки в оперативной памяти. 
&lt;br /&gt;

&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;sudo apt-get install preload
&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
Затем поменяем параметр &lt;i&gt;sortstrategy&lt;/i&gt; в файле &lt;b&gt;/etc/preload.conf&lt;/b&gt; на &lt;b&gt;0&lt;/b&gt;. Для SSD бессмысленно указывать очередь сортировки запросов. 
&lt;br /&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
Уменьшим диапазон срабатывания &lt;u&gt;swap&lt;/u&gt;, чтобы swap раздел начинал использоваться только при достижении 90% заполненности оперативной памяти. Для этого в файле &lt;b&gt;/etc/sysctl.conf &lt;/b&gt;в самом конце добавим строчку&lt;br /&gt;

&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;vm.swappiness=10
&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;
И на последок самое простое - очистим кэш apt и удалим неиспользуемые зависимости&lt;br /&gt;
&lt;/span&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;sudo apt-get autoremove&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;sudo apt-get clean
&lt;/span&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/5016197348380566160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/5016197348380566160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5016197348380566160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/5016197348380566160'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2018/09/ubuntu-ssd.html' title='Оптимизация Ubuntu (в частности для SSD)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-7129570397060383503</id><published>2017-05-07T02:19:00.001-07:00</published><updated>2017-05-07T02:20:04.427-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="teamfora"/><title type='text'>Teamfora. Определение со стратегией</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: x-small;&quot;&gt;Всем привет! Основная идея архитектуры данного проекта - проверить весь функционал, который необходим приложению. Я долго работал над многими проектами, стартапами, чтобы сконцентрироваться над максимально коротким сроком вывода приложения в публичный доступ.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: x-small;&quot;&gt;Конкретное время я не скажу, потому что очень тяжело запихивать процесс создания нового продукта, когда у меня еще намечается несколько закрытых релизов. Но стек технологий будет максимально простым.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: x-small;&quot;&gt;Для бекенда будет использоваться PostgreSQL и Django 1.10.x, для фронтенда на первых парах скорее всего Angular2. Что из себя будет представлять проект, я буду рассказывать либо на своем канале Youtube, либо тут в блоге (пока не решил). Но в блоге обязательно буду дублировать результаты работы.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/7129570397060383503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/7129570397060383503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7129570397060383503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/7129570397060383503'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2017/05/teamfora.html' title='Teamfora. Определение со стратегией'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-8303869928485295840</id><published>2016-10-31T08:40:00.002-07:00</published><updated>2016-10-31T08:40:52.152-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="reactjs"/><category scheme="http://www.blogger.com/atom/ns#" term="webpack"/><title type='text'>Основы ReactJS. Урок #1. Настройка webpack </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/uto3WBKJj58/0.jpg&quot; src=&quot;https://www.youtube.com/embed/uto3WBKJj58?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/8303869928485295840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/8303869928485295840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8303869928485295840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8303869928485295840'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2016/10/reactjs-1-webpack.html' title='Основы ReactJS. Урок #1. Настройка webpack '/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/uto3WBKJj58/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-8516024908824977353</id><published>2016-07-31T04:01:00.001-07:00</published><updated>2016-07-31T04:01:10.196-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="angular 2"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="require"/><category scheme="http://www.blogger.com/atom/ns#" term="systemjs"/><category scheme="http://www.blogger.com/atom/ns#" term="teamfora"/><category scheme="http://www.blogger.com/atom/ns#" term="webpack"/><title type='text'>Teamfora. Определение frontend для десктопной версии</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;После долгих попыток, исследований многих фреймворков остановился я на нескольких популярный: Angular 2 и Aurelia. По своей сути - это один и тот же фреймворк, дьявол кроется в деталях. Не буду вдаваться в подробности, в чем у них отличия, лишь опишу, что остановился я на Angular 2.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Последнюю неделю я боролся с данным фреймворком и пытался найти оптимальные настройки для него, чтобы было не просто комфортно работать с ним, но и все настройки для сборки были удобны. Скажу сразу, что пробовал я несколько.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;1. SystemJS. Настраивается удобно, собирал я с помощью npm модуля systembuilder&#39;a. Все бы ничего, но натыкался он постоянно на стандарты ES7 - декораторы. Конечно я подключал es7.decorators, конечно пробовал использовать es5. Но задача моя оставалась четкой - использовать Angular 2 (очень много удобств, плюс адекватный роутинг), а также ES6.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;2. Дальше пробовать стал require от nodeJS. Все бы ничего, но код стал похож на лапшу. И меня это совсем удручало.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;3. И в итоге остановился я на webpack. На сегодняшний день для меня - это самый лучший сборщик. Основной плюс, который замечаешь сразу, это повтор почти всей структуры TypeScript. Позволяет смотреть примеры на TypeScript, а писать на чистом JS стандарта EcmaScript2015&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;В следующей статье расскажу, как я подключал webpack, и что из этого получилось.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/8516024908824977353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/8516024908824977353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8516024908824977353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8516024908824977353'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2016/07/teamfora-frontend.html' title='Teamfora. Определение frontend для десктопной версии'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-2863911866294478838</id><published>2016-07-22T11:06:00.002-07:00</published><updated>2016-07-22T11:06:48.968-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="teamfora"/><title type='text'>Teamfora. Разговоры об архитектуре и жизни</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Исследовал я последние две недели Angular 2. Вся политика данного фреймворка основана, кажется, на TypeScript. И адаптировать для ES6 бывает проблематично. Сейчас я в некотором замешательстве. Оставаться на второй версии Angular или все-таки брать первую и быстро сделать продукт.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Ввиду последних тенденций жизни, приходится работать на нескольких работах и времени не то, что на свой продукт, на семью совсем не хватает. Сколько я еще так продержусь - не знаю. Но стараюсь все равно хоть чуть-чуть, но выделять время на Teamfora.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Кроме колебаний разных версий Angular, вся остальная архитектура приложения остается прежней. Возможно еще какие-то технологии я включу в проект со временем. Но все остается по прежнему. И стратегия разработки остается четкой.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/2863911866294478838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/2863911866294478838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2863911866294478838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2863911866294478838'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2016/07/teamfora.html' title='Teamfora. Разговоры об архитектуре и жизни'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-2525603548226847769</id><published>2016-06-30T02:42:00.000-07:00</published><updated>2016-06-30T02:42:48.861-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="teamfora"/><title type='text'>Teamfora. Обнуление</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;После продолжительных проб и ошибок в разработке продукта помощи в подборе персонала и оптимизации выполнения задач, я пришел к текущей концепции и планам работ. Это небольшое введение должно пролить свет на всю систему в целом. А я обещаю отписываться тут как можно чаще, чтобы себя мотивировать и не снижать темп разработки.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;Что это за проект?&lt;/b&gt; Это система управления проектами и командами. Создается исключительно для маленьких компаний, которые не хотят работать онлайн, для которых нужна приватность от внешнего мира.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;Основные технологии&lt;/b&gt;, используемые в разработке.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Серверная часть&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Spring Framework - основной фреймворк, используемый при разработки сервисов&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;PostgreSQL - СУБД для хранения структуры данных и основных данных&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Cassandra - СУБД для хранения схем, настроек, событий, транзакций действий пользователей&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Jetty - основной веб-сервер&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;TDD - разработка преимущественно с предварительным тестированием&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Клиентская часть&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;AngularJS 2 - рискну использовать вторую часть довольно удобного фреймворка&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Grunt - для сборки и обфускации проекта&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Nginx - прокси-сервер&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Less - таблица стилей для удобной поддержки и разработки&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Вся система на первых порах будет поставляться в виде образа для VBox. Каждый сможет ее потестировать и понять, что сейчас происходит с системой.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Версия 1.0 должна представлять собой продукт, в котором можно будет создавать проекты по шаблонам и автоматически привлекать сотрудников.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/2525603548226847769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/2525603548226847769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2525603548226847769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2525603548226847769'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2016/06/teamfora.html' title='Teamfora. Обнуление'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-4852112281800161020</id><published>2015-02-16T00:56:00.001-08:00</published><updated>2015-02-16T22:47:07.787-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="patterns"/><title type='text'>Singleton</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Всем привет! Сегодня поговорим о самом известном шаблоне проектирования &quot;Одиночка&quot; (Singleton). О нем уже очень много сказано, но тем не менее - это самый популярный вопрос на собеседованиях.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;u&gt;Singleton&lt;/u&gt; - паттерн гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Самый общий Singleton, которого хватает почти на 90% задач&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;script src=&quot;https://gist.github.com/dissdoc/7bce80ec7ddcec54ac03.js&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Какие у него плюсы и минусы:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ ленивая инициализация&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;- низкая производительность&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Есть более продуктивный шаблон (Double Checked Locking &amp;amp; volatile)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;script src=&quot;https://gist.github.com/dissdoc/dc78949ed60b051c0c29.js&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Какие у этого шаблона плюсы и минусы:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Ленивая инициализация&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Высокая производительность&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;- Поддерживается JDK5+&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Есть еще и очень простой Singleton (Enum Singleton)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;script src=&quot;https://gist.github.com/dissdoc/51d2bf54ee98aef2452c.js&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Какие у этого шаблона плюсы и минусы:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Сериализация из коробки&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Потокобезопасность из коробки&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Возможность использования EnumSet, EnumMap и т.д.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;+ Поддержка switch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;- Неленивая инициализация&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/4852112281800161020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/4852112281800161020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/4852112281800161020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/4852112281800161020'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2015/02/singleton.html' title='Singleton'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-2892781343764076356</id><published>2013-10-17T05:21:00.001-07:00</published><updated>2013-10-17T05:21:56.845-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>JavaScript Calendar</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Всем привет. Не так давно в школу HeadHunter проходил конкурсный набор по направление JavaScript developer на нагруженные сервера. Так вот, я тоже туда пробовал попасть с учетом того, что JS знаю исключительно по библиотеке JQuery.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Итак был конкурс, я прошел первый тур с отсутствие знания основ JS. Просто сел за ноутбук и начал писать читая какую-то статью об основах данного языка. Спустя несколько дней родился проект календаря. Постарался максимально качественно подойти к написанию кода. Учел все возможные архитектурные особенности своего &quot;продукта&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://farm6.staticflickr.com/5528/10327000446_b081d10118.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;http://farm6.staticflickr.com/5528/10327000446_b081d10118.jpg&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;В результате получился модульный проект. С не очень качественной архитектурой (ибо первый проект), но работающий (!). А это уже для меня хорошее достижение. Я проникся этим языком и теперь пытаюсь активно его изучать.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Данный календарь я выставляю на всеобщее обозрение. И надеюсь найдутся люди, которые будут его иногда поддерживать и развивать, а может кто-то будет просто его использовать. Мне будет приятно, если вы напишете пару строк мне о календаре. Сам код &lt;a href=&quot;https://github.com/dissdoc/calendar&quot; target=&quot;_blank&quot;&gt;находится тут&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Запускаемая страница index.html :) Весь код полностью нативный, а это значит что есть только &quot;чистый&quot; JavaScript, CSS и HTML5&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/2892781343764076356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/2892781343764076356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2892781343764076356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/2892781343764076356'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2013/10/javascript-calendar.html' title='JavaScript Calendar'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-8190507074965092557</id><published>2013-10-15T06:55:00.000-07:00</published><updated>2013-10-15T06:55:23.439-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Protocol Buffers</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Так выпали карты, и мы стали использовать технологию Protocol Buffers или просто protobuf,&amp;nbsp;предложенной Google для решения проблем сериализации между платформами и существующими языками.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;В этой статье моя цель раскрыть основы использования данной технологии в контексте платформы Java.&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Данная технология по сути ничем не отличается от всем известных подходов/технологий JSON или XML. Однако она имеет ряд преимуществ. Одно из них (по заявлению самого Google) это превосходство в сериализации/десериализации по сравнению с XML до 20-100 раз, и это не считая что и размер получаемых данных в 3-4 раза меньше. Но есть еще одно принципиальное отличие - это подход в создании такого объекта. Средства, обычно предоставляемые для работы с JSON или XML, являются некоторыми низкоуровневыми инструментами, а protobuf обеспечивается инструментами высокого уровня.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Чтобы описать структура данных, необходимо создать .proto файл, в который необходимо занести все необходимые поля. Нужно отметить, что те разработчики, которые сталкивались с описанием CORBA объектов, вам это покажется знакомым. Proto-файл напоминает файл IDL от CORBA. И компилируется специальным метакомпилятором по аналогичному принципу, только с помощью утилиты protoc.exe (если вы используете Window, для Linux аналогичный бинарный файл, но с другим расширением)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Если вся теория понятна - тогда поехали разрабатывать продукт. Для начала, чтобы начать использование технологии protobuf  с помощью средств предоставляемых Google следует скачать необходимый установочный пакет (под вашу операционную систему) со &lt;a href=&quot;https://code.google.com/p/protobuf/downloads/list&quot; target=&quot;_blank&quot;&gt;текущей страницы&lt;/a&gt;. Я его сохранил и распаковал в директорию C:\web\proto&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;a href=&quot;http://farm4.staticflickr.com/3781/10291368996_5f1600520e.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://farm4.staticflickr.com/3781/10291368996_5f1600520e.jpg&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Следующим шагом создадим простой maven-проект, где и будем экспериментировать с protobuf-технологией. Для тех, кто подзабыл, как создавать maven-проект, можно &lt;a href=&quot;http://dissdoc.blogspot.ru/2013/06/create-simple-project.html&quot; target=&quot;_blank&quot;&gt;подсмотреть тут&lt;/a&gt;. Сама структура проекта в итоге должна выглядеть как на картинке справа&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Файл Person.proto содержит информацию о сериализуемом объекте. В данном случае у нас это какой-то абстрактный пользователь, у которого есть идентификатор (для БД более актуально) и имя с фамилией, также у него есть права (роль) на какие-то действия. У роли есть описательная часть, кто это (Пользователь, Модератор или Админ), а также идентификатор (пусть в БД).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Как только создали этот файл, его необходимо собрать. В папке commands в нашем проекте вы найдете необходимый скрипт для создания java-класса и дальнейшей работы с ним. После того, как скомпилировали proto-файл, пора переходить к работе над объектом.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;В 13 и 18 строках файла TestProtoFile.java мы создаем пользователя с ролью, в 27 строке мы нашего пользователя сохраняем (сериализуем) в файл, а в 33 строке читаем файл и создаем нашего только что сохраненного пользователя (десериализуем)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Весь проект лежит на &lt;a href=&quot;https://github.com/dissdoc/prototest&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/8190507074965092557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/8190507074965092557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8190507074965092557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/8190507074965092557'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2013/10/protocol-buffers.html' title='Protocol Buffers'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-4691155554609347382</id><published>2013-09-27T04:55:00.000-07:00</published><updated>2013-09-27T04:55:21.520-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Фильтр для web-приложения</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Добрый день. Давно ничего не писал в сюда. И вот пришла идея описать процесс подключения и использования собственного фильтра. Такую же идея мы используем в своем продукте документооборота DocPrEx (Document Project Expression) для авторизации и аутентификации пользователя. Возможно что-то в дальнейшем будет меняться. Но сейчас это все выглядит более, чем удачно. Поскольку можно отказаться от SpringSecurity. Итак, добро пожаловать под кат&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Первое, что нам необходимо, это создать свой фильтр. Можно имплиментировать как интерфейс Filter, так и класс (что собственно я и делаю для упрощения работы)&amp;nbsp;OncePerRequestFilter. Самая идея фильтра очень примитивна. Мы берем все параметры запроса и ищем параметр с именем USER, если таковой не находится, то возвращаем ошибку 401 (Unauthentication), если же он есть, то пропускаем дальше в нужные сервлеты&lt;/span&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/6727423.js&quot;&gt;&lt;/script&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;И осталось только этот фильтр зарегистрировать в web.xml&lt;/span&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/6727454.js&quot;&gt;&lt;/script&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Готово! И добро пожаловать в документацию по фильтрам. Поскольку не вижу смысла объяснять то, что написано в комментариях к использованному нами классу.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/4691155554609347382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/4691155554609347382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/4691155554609347382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/4691155554609347382'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2013/09/web.html' title='Фильтр для web-приложения'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-3410308596634321960</id><published>2013-07-12T03:34:00.000-07:00</published><updated>2013-07-12T03:34:26.515-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="spring mvc"/><title type='text'>AOP with annotation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Сегодня поговорим о той проблеме, с которой пришлось столкнуться намедни. Нужно было логировать только определенные методы и классы в спринговом приложении. В интеренетах полно решений для всех методов, но мало для конкретных. Поэтому восполним этот пробел нижеследующим решение.&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;Для начала напишем элементарную аннотацию (в дальнейшем, если хотите) ее можно расширить&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/5983410.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;Затем аннотируем необходимый метод&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/5983424.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;Далее напишем аспектноориентированный метод (вот такое словосочетание) который будет отлавливать нашу аннотацию. Тут все просто (после выполнения инструкций) - срабатывает лог. Мы говорим, что делаем это для любого метода (нам не интересно ни что он возвращает, ни как называется, ни какие аргументы имеет), у которого есть наша аннотацию&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/5983440.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;Ну и не забываем добавить в конфиг наш аспектноориентированный подход :) А также просканировать пакет, где этот класс содержится (component-scan)
&lt;script src=&quot;https://gist.github.com/dissdoc/5983443.js&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/3410308596634321960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/3410308596634321960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3410308596634321960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3410308596634321960'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2013/07/aop-with-annotation.html' title='AOP with annotation'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1291912296346456290.post-3823827934682618288</id><published>2013-07-11T00:41:00.001-07:00</published><updated>2013-07-11T00:41:58.500-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gwt"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>GWT Cookies</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;Понадобилось недавно сохранять настройки пользователя на javascript, генерируемом с помощью Google Web Toolkit. Пробежавшись по API нашел очень неплохой класс Cookies. В результате написал небольшую обертку для своих настроек. Чем и делюсь ниже. Сам класс очень простой и я думаю, что нет необходимости что-либо писать еще. Поэтому смотрим ниже выкладку. На все вопросы готов ответить&lt;/span&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/dissdoc/5973356.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://dissdoc.blogspot.com/feeds/3823827934682618288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1291912296346456290/3823827934682618288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3823827934682618288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1291912296346456290/posts/default/3823827934682618288'/><link rel='alternate' type='text/html' href='http://dissdoc.blogspot.com/2013/07/gwt-cookies.html' title='GWT Cookies'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>