<?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-5744154463195670470</id><updated>2025-11-03T05:50:23.466+03:00</updated><category term="Cplusplus"/><category term="programming"/><category term="Windows"/><category term="разное"/><category term="VisualStudio"/><category term="Ubuntu"/><category term="boost"/><category term="debug"/><category term="HR"/><category term="template"/><category term="Android"/><category term="books"/><category term="Architecture"/><category term="favourites"/><category term="Eclipse"/><category term="Microsoft"/><category term="ALM"/><category term="C++0x"/><category term="Mac"/><category term="XML"/><category term="bash"/><category term="console"/><category term="funny"/><category term="python"/><category term="security"/><category term="архитектура"/><category term="DirectShow"/><category term="Internet"/><category term="Java"/><category term="OS X"/><category term="SQL"/><category term="XPath"/><category term="infotecs"/><category term="learning"/><category term="network"/><category term="инфотекс"/><category term="работа"/><category term="AVI"/><category term="Agile"/><category term="DLL"/><category term="HDTV"/><category term="JNI"/><category term="Linux"/><category term="STL"/><category term="VSCode"/><category term="VirtualBox"/><category term="XQuery"/><category term="design"/><category term="editors"/><category term="firststeps"/><category term="lifehack"/><category term="memcpy"/><category term="oldstuff"/><category term="powershell"/><category term="tutorial"/><category term="vulnerability"/><category term="бизнес-анализ"/><category term="вакансии"/><category term="взлом"/><category term="доклады"/><category term="обзор"/><category term="объявление"/><category term="продукт"/><category term="требования"/><category term="Empathy"/><category term="Fsharp"/><category term="GNOME"/><category term="HDD"/><category term="Levenshtein distance"/><category term="MFC"/><category term="MSDN"/><category term="MSDOS"/><category term="NVIDIA"/><category term="OLEDB"/><category term="OSX"/><category term="Pascal"/><category term="SETUP"/><category term="TFS"/><category term="VCN"/><category term="VFW"/><category term="algorithms"/><category term="allocator"/><category term="amazon"/><category term="bind"/><category term="bugs"/><category term="c++"/><category term="cmake"/><category term="development"/><category term="dns"/><category term="dotnet"/><category term="ebooks"/><category term="export"/><category term="fiction"/><category term="gcc"/><category term="git"/><category term="google"/><category term="hexdump"/><category term="http"/><category term="inheritance"/><category term="ipv6"/><category term="javascript"/><category term="keyboard"/><category term="kindle"/><category term="lambda"/><category term="lifestyle"/><category term="localization"/><category term="lossless"/><category term="meetup"/><category term="memory"/><category term="mouse"/><category term="nginx"/><category term="openday"/><category term="port_mapping"/><category term="proxy"/><category term="reading"/><category term="regex"/><category term="remote access"/><category term="review"/><category term="role"/><category term="rss"/><category term="sed"/><category term="server"/><category term="sizeof"/><category term="spectrum"/><category term="ssh"/><category term="startup"/><category term="story"/><category term="subscription"/><category term="tablet"/><category term="testing"/><category term="tips"/><category term="trie"/><category term="twitter"/><category term="usability"/><category term="utf8"/><category term="utils"/><category term="video"/><category term="vim"/><category term="web"/><category term="xxd"/><category term="z80"/><category term="аналитика"/><category term="грант"/><category term="исследования"/><category term="история"/><category term="квантовая криптография"/><category term="книги"/><category term="конкурс"/><category term="криптография"/><category term="ложное срабатывание"/><category term="поиск"/><category term="почта"/><category term="сценарии"/><category term="чтение"/><category term="электронные"/><title type='text'>Code @ C++</title><subtitle type='html'>Не только на C++. Новые технологии, процессы и Agile.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default?redirect=false&amp;orderby=published'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;orderby=published'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>218</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-3232105962413827004</id><published>2025-03-07T14:35:00.000+03:00</published><updated>2025-03-07T14:35:03.553+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="cmake"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>_JAVA_OPTIONS + CMake = No compatible library found</title><content type='html'>В копилку странных знаний...&lt;br /&gt;&lt;br /&gt;

Если есть необходимость работать в окружении, где используется прокси, то приходится задавать переменную &lt;tt&gt;_JAVA_OPTIONS&lt;/tt&gt;, например, так:&lt;br /&gt;&lt;br /&gt;
&lt;tt&gt;export _JAVA_OPTIONS=&quot;-Dhttps.proxyHost=${HOST_IP} -Dhttps.proxyPort=3128&quot;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;

Все бы ничего, но, если переменная окружения &lt;tt&gt;_JAVA_OPTIONS&lt;/tt&gt; в принципе задана, то при сборке в Android Studio нативного кода CMake не работает и сборка заканчивается с ошибкой такого вида:&lt;br /&gt;&lt;br /&gt;
&lt;tt&gt;CMakeLists.txt debug|arm64-v8a : No compatible library found&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;

Ошибка настолько неинформативная, что постоянно натыкаюсь на это и заново разбираюсь в чем дело...</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/3232105962413827004/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/3232105962413827004' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3232105962413827004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3232105962413827004'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2025/03/javaoptions-cmake-no-compatible-library.html' title='_JAVA_OPTIONS + CMake = No compatible library found'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-4937436545942407556</id><published>2022-05-12T10:18:00.004+03:00</published><updated>2022-05-12T10:20:13.009+03:00</updated><title type='text'>Collateral damage</title><content type='html'>Это неспокойное время затронуло и этот ресурс. Мы знаем о проблемах доступа из России — нас немножко блокируют (лес рубят — щепки летят) и некоторые картинки и форматирование могут временно отображаться некорректно в связи с блокировками российских контролирующих органов. Но информация должна быть доступна в любой точке мира, т.к. мы верим, что наука и сотрудничество умных образованных людей ведут к миру.&lt;p&gt;Для исправления ситуации сейчас производится перенос домена и его ресурсов. Мы работаем над этим и всё исправится и будет доступно как раньше, а пока можно читать через VPN.&lt;p&gt;&lt;p&gt;Тем временем вы можете поддержать проект переводом на кошелек Ethereum 0xBc94262e2F6ddCD9F482d7304a2786Fb13Ad264c.

  &lt;script data-address=&quot;0xBc94262e2F6ddCD9F482d7304a2786Fb13Ad264c&quot; data-meta=&quot;eth-button&quot; src=&quot;https://cdn.rawgit.com/eth-button/eth-button/09673e85d517452e18a5248b96115bc552a0ac01/dist/eth-button.js&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/4937436545942407556/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/4937436545942407556' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4937436545942407556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4937436545942407556'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2022/05/collateral-damage.html' title='Collateral damage'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-5781727326796925145</id><published>2020-08-27T21:32:00.004+03:00</published><updated>2022-11-11T15:56:11.074+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Три редко используемых возможности Python 3, о которых каждый должен знать</title><content type='html'>&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;423&quot; data-original-width=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt_idAjLwJxe2eFo4aPPLN5GUKnm2ttBRia9HDH8HixXVQf4H_b4lOBC5vDsrSO-sc5aboxlrwk9pJdWGsN397GWTn7GdIbYn3woYz2D2ni5e_ehXXSZ1eaIZDBaUz1YCrrl-2RAEXTMqYA7_4JC_f9Ca14mIsj8USYf13MTubjHEZWDDgm2uwf_l/s320/3fu4e7_f_vmrx4xmtofiqor_pck.jpeg&quot;&gt;
&lt;p/&gt;
Python 3 существует уже какое-то время и довольно много разработчиков, особенно те, кто только начинает свой путь в Python, уже используют эту версию языка. Несмотря на то, что множество новых возможностей широко используются, похоже, что некоторые остались за кадром. В этой статье я расскажу о трех наименее известных, но полезных, возможностях. Я знаю о них из других языков и они делают Python 3 классным.
&lt;p/&gt;
&lt;i&gt;Данная статья является переводом &lt;a href=&quot;https://medium.com/better-programming/3-neglected-features-in-python-3-that-everyone-should-be-using-65cffc96f235&quot;&gt;3 Neglected Features in Python 3 That Everyone Should Be Using&lt;/a&gt;&lt;/i&gt;.
&lt;p/&gt;
&lt;a href=&quot;http://www.codeatcpp.com/2020/08/python-3.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/5781727326796925145/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/5781727326796925145' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5781727326796925145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5781727326796925145'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2020/08/python-3.html' title='Три редко используемых возможности Python 3, о которых каждый должен знать'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt_idAjLwJxe2eFo4aPPLN5GUKnm2ttBRia9HDH8HixXVQf4H_b4lOBC5vDsrSO-sc5aboxlrwk9pJdWGsN397GWTn7GdIbYn3woYz2D2ni5e_ehXXSZ1eaIZDBaUz1YCrrl-2RAEXTMqYA7_4JC_f9Ca14mIsj8USYf13MTubjHEZWDDgm2uwf_l/s72-c/3fu4e7_f_vmrx4xmtofiqor_pck.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-7291215322884652682</id><published>2018-09-18T08:26:00.000+03:00</published><updated>2018-09-18T08:33:27.757+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ALM"/><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="infotecs"/><category scheme="http://www.blogger.com/atom/ns#" term="openday"/><category scheme="http://www.blogger.com/atom/ns#" term="role"/><category scheme="http://www.blogger.com/atom/ns#" term="startup"/><category scheme="http://www.blogger.com/atom/ns#" term="архитектура"/><category scheme="http://www.blogger.com/atom/ns#" term="бизнес-анализ"/><category scheme="http://www.blogger.com/atom/ns#" term="доклады"/><category scheme="http://www.blogger.com/atom/ns#" term="инфотекс"/><category scheme="http://www.blogger.com/atom/ns#" term="продукт"/><category scheme="http://www.blogger.com/atom/ns#" term="работа"/><title type='text'>Давайте запустим стартап, или зачем нужны архитекторы</title><content type='html'>Стала доступна запись моего выступления на Infotecs Open Day 2018 в Томске. Там я рассказывал немного о том:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;какие могут быть сложности при создании продукта,&lt;/li&gt;
&lt;li&gt;какой технологический стек используется,&lt;/li&gt;
&lt;li&gt;чем занимаются архитекторы в компании Infotecs,&lt;/li&gt;
&lt;li&gt;как при проектировании учитываются требования безопасности.&lt;/li&gt;
&lt;/ul&gt;
Доклад был рассчитан в основном на студентов, которых было большинство на данном мероприятии.
&lt;br&gt;
&lt;a href=&quot;http://www.codeatcpp.com/2018/09/blog-post.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/7291215322884652682/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/7291215322884652682' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/7291215322884652682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/7291215322884652682'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2018/09/blog-post.html' title='Давайте запустим стартап, или зачем нужны архитекторы'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/D9EeaJkaIWw/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-3920577747068406268</id><published>2018-06-30T19:30:00.002+03:00</published><updated>2022-11-11T15:59:58.033+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="ebooks"/><category scheme="http://www.blogger.com/atom/ns#" term="fiction"/><category scheme="http://www.blogger.com/atom/ns#" term="kindle"/><category scheme="http://www.blogger.com/atom/ns#" term="learning"/><category scheme="http://www.blogger.com/atom/ns#" term="lifestyle"/><category scheme="http://www.blogger.com/atom/ns#" term="oldstuff"/><category scheme="http://www.blogger.com/atom/ns#" term="reading"/><category scheme="http://www.blogger.com/atom/ns#" term="spectrum"/><category scheme="http://www.blogger.com/atom/ns#" term="story"/><category scheme="http://www.blogger.com/atom/ns#" term="z80"/><category scheme="http://www.blogger.com/atom/ns#" term="история"/><category scheme="http://www.blogger.com/atom/ns#" term="книги"/><category scheme="http://www.blogger.com/atom/ns#" term="обзор"/><category scheme="http://www.blogger.com/atom/ns#" term="чтение"/><category scheme="http://www.blogger.com/atom/ns#" term="электронные"/><title type='text'>Где брать и как читать электронные книги</title><content type='html'>Сегодня я расскажу где я покупаю книги, почему электронные и как их читаю.
&lt;br&gt;
&lt;br&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;550&quot; data-original-width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ1En990k_mGissHgYOSfcJLUvs1FcUotPsUBSAq7AmmIvr2bALlVylMbUVdHQNp2JOcLERhiIDLg3gC-wKwbuj1YUBoh7besYjz-7BJ5kmML4XhBFJcgUW-yvSuHq2NOTPSW65T1iM_g/s1600/books.jpg&quot;&gt;
&lt;br&gt;
&lt;br&gt;
Раньше я читал очень много бумажных книг. Еще учась в школе я прочитал все издания с научной фантастикой в городской библиотеке. А когда фантастика закончилась, то даже начал читать фэнтези. Хотя я рос в небольшом городе и городская библиотека была небольшая, но книг было прочитано много. Чтобы не брать повторно прочитанные книги, я аккуратно записывал все названия в текстовом редакторе на компьютере ZX-Spectrum (да, это было давно). Я нашел этот список уже в другом тысячелетии, когда &lt;a href=&quot;https://www.blogger.com/2015/07/blog-post.html&quot;&gt;разбирал старые пятидюймовые диски&lt;/a&gt;. В те времена разработчики часто придумывали свои форматы хранения, так как доступа в Интернет почти ни у кого не было, и до общепринятых стандартов должно было пройти еще много лет.&lt;br&gt;
&lt;a href=&quot;http://www.codeatcpp.com/2018/06/why-kindle.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/3920577747068406268/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/3920577747068406268' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3920577747068406268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3920577747068406268'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2018/06/why-kindle.html' title='Где брать и как читать электронные книги'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ1En990k_mGissHgYOSfcJLUvs1FcUotPsUBSAq7AmmIvr2bALlVylMbUVdHQNp2JOcLERhiIDLg3gC-wKwbuj1YUBoh7besYjz-7BJ5kmML4XhBFJcgUW-yvSuHq2NOTPSW65T1iM_g/s72-c/books.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-2633541608315080137</id><published>2018-04-12T08:10:00.002+03:00</published><updated>2022-05-12T09:35:00.044+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="learning"/><category scheme="http://www.blogger.com/atom/ns#" term="meetup"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="архитектура"/><category scheme="http://www.blogger.com/atom/ns#" term="взлом"/><category scheme="http://www.blogger.com/atom/ns#" term="инфотекс"/><category scheme="http://www.blogger.com/atom/ns#" term="требования"/><title type='text'>Как спроектировать систему, устойчивую к &quot;русским&quot; хакерам?</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJGh283xU3UBYS6M0FEowVC66QKEBikUWyXERD8Ay7DeHhLU8VqX7BAba94aOy9Ru8zPoZhNRkPMcXX_9izcbZNWdXh6yRwnSpGe-LKpg-7lP9eWqA2I35ivf1oy6ZIz6oysBJH8wr4bOjZZum9EK3q0BZy5zYrTgiFIw2BrbNqL21BrK6PoLB21l/s640/hacker-2300772_640.jpg&quot; data-original-width=&quot;640&quot; data-original-height=&quot;426&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
18 апреля на InfoTeCS Open Day я расскажу как спроектировать систему, устойчивую к &quot;русским&quot; хакерам. Увидимся в Томске!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://vk.com/infotecs_openday&quot;&gt;Группа VK с материалами мероприятия.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/2633541608315080137/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/2633541608315080137' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2633541608315080137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2633541608315080137'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2018/04/blog-post.html' title='Как спроектировать систему, устойчивую к &quot;русским&quot; хакерам?'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJGh283xU3UBYS6M0FEowVC66QKEBikUWyXERD8Ay7DeHhLU8VqX7BAba94aOy9Ru8zPoZhNRkPMcXX_9izcbZNWdXh6yRwnSpGe-LKpg-7lP9eWqA2I35ivf1oy6ZIz6oysBJH8wr4bOjZZum9EK3q0BZy5zYrTgiFIw2BrbNqL21BrK6PoLB21l/s72-c/hacker-2300772_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-4052830143673714462</id><published>2018-03-02T09:01:00.001+03:00</published><updated>2022-05-12T09:35:58.188+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="infotecs"/><category scheme="http://www.blogger.com/atom/ns#" term="грант"/><category scheme="http://www.blogger.com/atom/ns#" term="инфотекс"/><category scheme="http://www.blogger.com/atom/ns#" term="исследования"/><category scheme="http://www.blogger.com/atom/ns#" term="квантовая криптография"/><category scheme="http://www.blogger.com/atom/ns#" term="конкурс"/><category scheme="http://www.blogger.com/atom/ns#" term="криптография"/><title type='text'>Внимание, конкурс!</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfvKvgWyz1OJTOZuADFlJOC_nBMEN4zfXy-cK2S3kIT5GPnMi2nD7aP6keqt06wLzcuRbyRBhN-Kgwt2CeLzlS1IUIg-NGkr7h-U9cZw8A03OLA4WmBOwQnfNyrRWalvg5_5Ijb4MoP5a2y2V_lXhPmmbL_68Fgk3kvnKIq3bkcRjkgQvy6YQE9Ctr/s700/vk_academy.png&quot; data-original-width=&quot;700&quot; data-original-height=&quot;501&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Коллеги из компании &amp;laquo;ИнфоТеКС&amp;raquo; в очередной раз запустили конкурс научно-технических исследований в области информационной безопасности, криптографии и телекоммуникаций. В этом году конкурс посвящен технологиям квантовой криптографии.&lt;br /&gt;
&lt;br /&gt;
К участию приглашаются исследователи и инженеры в области оптоэлектронных устройств, лазерной и квантовой физики. И, конечно же, традиционно ожидаются заявки от специалистов в области информационной безопасности, аспирантов, студентов и независимых исследователей.&lt;br /&gt;
&lt;br /&gt;
Размер вознаграждения за выполненный проект &amp;mdash; грант до &lt;b&gt;1 миллиона рублей&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Заявки на участие принимаются онлайн &lt;b&gt;до 15 апреля 2018 года&lt;/b&gt; (включительно). Подать заявку можно на &lt;a href=&quot;http://academy.infotecs.ru/zayavka/?utm_source=codeatcpp&amp;utm_campaign=academy2018&amp;utm_medium=banner&quot;&gt;сайте &amp;laquo;ИнфоТеКС Академия&amp;raquo;&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/4052830143673714462/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/4052830143673714462' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4052830143673714462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4052830143673714462'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2018/03/infotecs-academy-2018.html' title='Внимание, конкурс!'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfvKvgWyz1OJTOZuADFlJOC_nBMEN4zfXy-cK2S3kIT5GPnMi2nD7aP6keqt06wLzcuRbyRBhN-Kgwt2CeLzlS1IUIg-NGkr7h-U9cZw8A03OLA4WmBOwQnfNyrRWalvg5_5Ijb4MoP5a2y2V_lXhPmmbL_68Fgk3kvnKIq3bkcRjkgQvy6YQE9Ctr/s72-c/vk_academy.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-1122499439035601610</id><published>2017-08-16T13:40:00.002+03:00</published><updated>2022-11-11T16:05:12.115+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="dns"/><category scheme="http://www.blogger.com/atom/ns#" term="http"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="server"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><category scheme="http://www.blogger.com/atom/ns#" term="архитектура"/><title type='text'>Как работают веб-приложения</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn0HalKqDYIsmf1-t74v3EYn9AfwaTFsZZzrHCn6WWWy8IoCqSA9aJUi3fgpUmFGP_KY0SOLjx5Y-jUY9WWR4KefUx2v_DEMzwotfVcu5ertK5Ly8zL1dwS3DTGJ0RgCoHWMhoLlih_P1RxZ8Ns5mxh_xmLsTm9ZGqHVNyewU1BtuBztp8wbMinTh8/s640/code-1486361_640.jpg&quot;&gt;&lt;br&gt;
Некоторые из читателей уже подписаны на мой &lt;a href=&quot;https://twitter.com/codeatcpp&quot;&gt;Twitter&lt;/a&gt; и видели опрос на тему безопасного способа передачи пароля в веб. Тема важная, так что стоит на ней остановиться подробнее, но для начала разберемся как вообще работают веб-приложения.&lt;br&gt;
&lt;br&gt;
Ниже приведена схема, на которой я очень упрощенно описал типичный веб-сервис и его взаимодействие с веб-браузером. Однако, тут показаны все важные компоненты, которые участвуют в процессе.&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLX5BumygiGaZJ8zG9wxBtR-EJQd9aMaG2_8uyZrcGnAozjETgUt0YoEKbEPOVfvN0HSj7SVws63ctPKLksi5VASYfAljq6T5TH3IakXDwxLpiUvKQNr7B665nQNwtBHlNZNNY9HmIMxc/s1600/typical_web_server.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLX5BumygiGaZJ8zG9wxBtR-EJQd9aMaG2_8uyZrcGnAozjETgUt0YoEKbEPOVfvN0HSj7SVws63ctPKLksi5VASYfAljq6T5TH3IakXDwxLpiUvKQNr7B665nQNwtBHlNZNNY9HmIMxc/s800/typical_web_server.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;Далее рассмотрим по шагам что происходит.&lt;a href=&quot;http://www.codeatcpp.com/2017/08/blog-post.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/1122499439035601610/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/1122499439035601610' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1122499439035601610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1122499439035601610'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2017/08/blog-post.html' title='Как работают веб-приложения'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn0HalKqDYIsmf1-t74v3EYn9AfwaTFsZZzrHCn6WWWy8IoCqSA9aJUi3fgpUmFGP_KY0SOLjx5Y-jUY9WWR4KefUx2v_DEMzwotfVcu5ertK5Ly8zL1dwS3DTGJ0RgCoHWMhoLlih_P1RxZ8Ns5mxh_xmLsTm9ZGqHVNyewU1BtuBztp8wbMinTh8/s72-c/code-1486361_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-3947289834504775410</id><published>2017-04-21T09:15:00.003+03:00</published><updated>2022-11-11T16:01:08.934+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="console"/><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="tips"/><title type='text'>Небольшие заметки про отладку Bash скриптов</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghspwA2X1q5F4iBnOAo7g1J1C-zBT2qiB5k_AS1C9Q9-zzzTlJg6IiSzEHZSUlgEytCgMHAg7HDYch3TFR3x_gFWFNHm8UIVgssYkkodgR_moPiZs6pGSTsVW2LzgrGyTog2nUpjzPquQ/s1600/analog-1346071_640.jpg&quot;&gt;&lt;br&gt;
Если вам когда-либо приходилось писать сложные скрипты на Bash, то вы наверняка думали о двух вещах:&lt;br&gt;
&lt;ol&gt;&lt;li&gt;Никогда больше не писать сложные скрипты на Bash.&lt;/li&gt;
&lt;li&gt;Как отлаживать то, что уже написано?&lt;/li&gt;
&lt;/ol&gt;Если с первым пунктом все понятно, то ответ на второй вопрос не так просто найти. Интегрированный среды для пошаговой отладки я не нашел (если не брать в расчет странный &lt;a href=&quot;https://sourceforge.net/p/bashdb/code/ci/master/tree/&quot;&gt;BASH Debugger&lt;/a&gt;). Но способ получить трейс есть, также как и выполнить скрипт по шагам.&lt;br&gt;
&lt;br&gt;
Получить трейс выполнения проще простого. Надо всего лишь запустить bash с параметром &lt;tt&gt;-x&lt;/tt&gt;. Либо в самом коде выполнить команду &lt;tt&gt;set +x&lt;/tt&gt;. Первый вариант выглядит предпочтительней, потому что вы извне контролируете — нужен вам подробный вывод или нет. Конечному пользователю такой вывод обычно не только не нужен, но и откровенно мешает.&lt;br&gt;
&lt;br&gt;
Посмотрим, как это работает на практике.&lt;a href=&quot;http://www.codeatcpp.com/2017/04/bashdebug.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/3947289834504775410/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/3947289834504775410' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3947289834504775410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3947289834504775410'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2017/04/bashdebug.html' title='Небольшие заметки про отладку Bash скриптов'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghspwA2X1q5F4iBnOAo7g1J1C-zBT2qiB5k_AS1C9Q9-zzzTlJg6IiSzEHZSUlgEytCgMHAg7HDYch3TFR3x_gFWFNHm8UIVgssYkkodgR_moPiZs6pGSTsVW2LzgrGyTog2nUpjzPquQ/s72-c/analog-1346071_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-2027890330210196079</id><published>2017-03-02T09:54:00.001+03:00</published><updated>2022-11-11T16:01:26.548+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="ipv6"/><category scheme="http://www.blogger.com/atom/ns#" term="взлом"/><category scheme="http://www.blogger.com/atom/ns#" term="ложное срабатывание"/><category scheme="http://www.blogger.com/atom/ns#" term="почта"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>Google: кто-то завладел вашим паролем</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEK_PwQE-DMwWbNwh9rAKUhefKnCaTfDCPOnOg_RCLfD7aYtXhXKXYk7jJ2165oXdb3yJy2pclUPYbeVSd4DtzNJm512YIsTo40voebRYuCX5CZ3-_cMvUGz-HeTNi3UwNLufWNvwe1vw/s1600/passwd.png&quot;&gt;&lt;br&gt;
&lt;br&gt;
Ночью мне пришло письмо на резервную почту о том, что кто-то использовал мой пароль для доступа к почте GMail, и что Google отважно заблокировал негодяев. Ну и мне, конечно, необходимо срочно принять меры. Я немного удивился, что почта, которая заведена специально для PayPal оказалась кем-то взломана. Учитывая, что она почти нигде не засвечена и имеет сгенерированный высокоэнтропийный пароль, это казалось невозможным. Однако, я сменил пароль, внутренне уже приготовившись к СМС с информацией о снятии денег с карты. А после смены пароля я начал разбираться в произошедшем и вот что выяснилось...&lt;a href=&quot;http://www.codeatcpp.com/2017/03/google.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/2027890330210196079/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/2027890330210196079' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2027890330210196079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2027890330210196079'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2017/03/google.html' title='Google: кто-то завладел вашим паролем'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEK_PwQE-DMwWbNwh9rAKUhefKnCaTfDCPOnOg_RCLfD7aYtXhXKXYk7jJ2165oXdb3yJy2pclUPYbeVSd4DtzNJm512YIsTo40voebRYuCX5CZ3-_cMvUGz-HeTNi3UwNLufWNvwe1vw/s72-c/passwd.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-1311765660521789331</id><published>2016-11-25T08:28:00.000+03:00</published><updated>2016-11-25T08:28:13.833+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="favourites"/><title type='text'>Бесплатные технические книги в электронном виде</title><content type='html'>Коллекция ссылок на бесплатные (не ворованные) технические книги собрана на ресурсе &lt;a href=&quot;https://devfreebooks.github.io/&quot;&gt;devfreebooks.github.io&lt;/a&gt;. Там есть книги по различным языкам разработки, фреймворкам, протоколам. Некоторые книги доступны для скачивания, а некоторые только для чтения онлайн.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/1311765660521789331/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/1311765660521789331' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1311765660521789331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1311765660521789331'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/11/blog-post.html' title='Бесплатные технические книги в электронном виде'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-3992995096454980324</id><published>2016-08-08T10:56:00.001+03:00</published><updated>2022-05-12T09:39:16.321+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="архитектура"/><category scheme="http://www.blogger.com/atom/ns#" term="доклады"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>Польза архитектуры для создания безопасных продуктов</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfafLQmQi7TJJ0Rrs9IjmMaCnPiombw4E0ZOY8yy4SItXZm7wH6LeuoEwuqPsKZjCTlN6dM0sgv_wUkisAQU6IDCz0lyUcUWUjWyv0NbXevaUnhPWn3lIUNFtJI9WJKPmYlDacqmKTPbd8iwn1A_cTKPmcNZo84ZDnBfaAX_Lvkrx1iVM6f0EmihT1/s640/leto_ctf_640.jpg&quot;&gt;&lt;br&gt;
&lt;br&gt;
Завтра (9 августа 2016) выступаю в &lt;a href=&quot;https://letoctf.aciso.ru/&quot;&gt;Летней школе CTF&lt;/a&gt; с лекцией о пользе архитектурных артефактов для создания безопасных решений. Пока выяснял как туда лучше доехать выяснил интересный факт из жизни Подмосковья:&lt;br&gt;
&lt;ul&gt;&lt;li&gt;Маршрут Зеленоград — Университет Дубна: около 140 км на автомобиле и примерно 5 часов на общественном транспорте.&lt;/li&gt;
&lt;li&gt;Маршрут Зеленоград — Мариинский театр: около 680 км на автомобиле и примерно 5 часов на общественном транспорте.&lt;/li&gt;
&lt;/ul&gt;Отсюда выводы: во-первых, Питер стал невероятно близок к Москве после появления скоростных поездов, и это невероятно круто. Во-вторых, подмосковные центры научного притяжения до сих пор остаются сложнодоступными и это очень печально.&lt;br&gt;
&lt;br&gt;
Видео доклада: &lt;a href=&quot;http://www.codeatcpp.com/2016/08/blog-post.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/3992995096454980324/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/3992995096454980324' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3992995096454980324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/3992995096454980324'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/08/blog-post.html' title='Польза архитектуры для создания безопасных продуктов'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfafLQmQi7TJJ0Rrs9IjmMaCnPiombw4E0ZOY8yy4SItXZm7wH6LeuoEwuqPsKZjCTlN6dM0sgv_wUkisAQU6IDCz0lyUcUWUjWyv0NbXevaUnhPWn3lIUNFtJI9WJKPmYlDacqmKTPbd8iwn1A_cTKPmcNZo84ZDnBfaAX_Lvkrx1iVM6f0EmihT1/s72-c/leto_ctf_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-1413193739723670473</id><published>2016-08-01T13:46:00.001+03:00</published><updated>2022-11-11T16:01:54.290+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="firststeps"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="SETUP"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Создаем и публикуем модуль Python</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEUqNx_X68kQWpPLt88V4YtrObAD8REU7z7A6li4zicdDDwXyaQK8Cr-fmi0YqDACyoJ5GP2r3Yct0MxnFJ7KdVuCY2KpuS9LbcvwnvKWgcuB4RIGz15r2MVQb86n3gsHz1fhEms55E14/s640/python-module.jpg&quot;&gt;&lt;br&gt;
&lt;br&gt;
В &lt;a href=&quot;../../2016/06/c-python.html&quot;&gt;прошлый раз&lt;/a&gt; я описал шаги по освоению Питона для разработчика С++. Теперь, разобравшись с основами, можно начинать создавать свои первые проекты. Как и в других языках для этой цели разработчики используют какой-либо фреймворк, который зачастую определяет структуру программы, но этот путь может быть опишу в другой раз. Сегодня посмотрим на структуру типичного пакета Python.&lt;br&gt;
&lt;a href=&quot;http://www.codeatcpp.com/2016/08/python.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/1413193739723670473/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/1413193739723670473' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1413193739723670473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1413193739723670473'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/08/python.html' title='Создаем и публикуем модуль Python'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEUqNx_X68kQWpPLt88V4YtrObAD8REU7z7A6li4zicdDDwXyaQK8Cr-fmi0YqDACyoJ5GP2r3Yct0MxnFJ7KdVuCY2KpuS9LbcvwnvKWgcuB4RIGz15r2MVQb86n3gsHz1fhEms55E14/s72-c/python-module.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-9173187541420442880</id><published>2016-06-06T08:11:00.001+03:00</published><updated>2022-05-12T09:41:06.997+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="firststeps"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'> Мой путь из C++ в Python</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTk7uHE8zTSPQzsoWouFwPdcetwxKGQPcTgnTDMWpJrZWbH5h_l-2V7Y7CTxaf47NHWKrg5h9hzKyFyK7i9pPipMaWsVMw4E7ozt1qGpESdJALdNSKoAygDDmnbg07L2dYlRHbyJ6ko8zAXVGARlgNVl1PexB7QSMX-njaaN2RZH1RP3TRaU9hEsey/s640/letters-483010_640.jpg&quot;&gt;&lt;p/&gt;Этот текст кратко поясняет как мне удалось быстро начать писать программы на Python. Все, что описывается, основывается на личном опыте и ощущениях, и поэтому может не описывать тот самый единственно верный путь. Тем не менее, изложенная информация агрегирует знания, которые пришлось собрать, чтобы создавать собственные проекты на Python. Для начала не огромные высокопроизводительные системы, но и на C++ вы тоже не сразу стали выдавать шедевры. Если у кто-то посчитает, что тут не хватает важных вещей, о который обязательно нужно сказать, то в комментариях можно это отметить.&lt;a href=&quot;http://www.codeatcpp.com/2016/06/c-python.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/9173187541420442880/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/9173187541420442880' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/9173187541420442880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/9173187541420442880'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/06/c-python.html' title=' Мой путь из C++ в Python'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTk7uHE8zTSPQzsoWouFwPdcetwxKGQPcTgnTDMWpJrZWbH5h_l-2V7Y7CTxaf47NHWKrg5h9hzKyFyK7i9pPipMaWsVMw4E7ozt1qGpESdJALdNSKoAygDDmnbg07L2dYlRHbyJ6ko8zAXVGARlgNVl1PexB7QSMX-njaaN2RZH1RP3TRaU9hEsey/s72-c/letters-483010_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-5559431158819408103</id><published>2016-05-17T19:33:00.001+03:00</published><updated>2022-05-12T09:42:05.511+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="hexdump"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="sed"/><category scheme="http://www.blogger.com/atom/ns#" term="utils"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><category scheme="http://www.blogger.com/atom/ns#" term="xxd"/><title type='text'>hex dump</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6WaeloOmCMmJEFVEv0hkVK6_Zc8drcJiGgyGHcFAgrVebfDd2OkO9MXu4Ptyj0X7yDJZPAvW6aKlLpMQVaT6RKOi03ojIgFHJOM_1xLuBjHa0NnDSwoeLFOtAF2JXSFmU6kg-X7rDEw_IQj8Nz6yyuUzYktqFzvRqShmihACcFD5bDoNrrbQ_7iKn/s800/hexdump.jpg&quot; /&gt;&lt;br /&gt;
Постоянные пользователи Vim наверняка слышали об утилите &lt;a href=&quot;http://linuxcommand.org/man_pages/xxd1.html&quot;&gt;xxd&lt;/a&gt;. Она позволяет вывести дамп указанного файла. Выглядит это следующим образом:&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-bash&quot;&gt;$ xxd -l 64 db.sqlite3 
0000000: 5351 4c69 7465 2066 6f72 6d61 7420 3300  SQLite format 3.
0000010: 0400 0101 0040 2020 0000 0013 0000 0024  .....@  .......$
0000020: 0000 0000 0000 0000 0000 0017 0000 0004  ................
0000030: 0000 0000 0000 0000 0000 0001 0000 0000  ................
&lt;/pre&gt;Параметр&amp;nbsp;&lt;tt&gt;-l&amp;nbsp;64&lt;/tt&gt; указывает, что нужно вывести только первые 64 байта. Есть еще один любопытный параметр&amp;nbsp;(&lt;tt&gt;-i&lt;/tt&gt;), который позволяет сгенерировать код, и его можно сразу вставлять в C или C++ файл:&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-bash&quot;&gt;$ xxd -i -l 64 db.sqlite3
unsigned char db_sqlite3[] = {
  0x53, 0x51, 0x4c, 0x69, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
  0x74, 0x20, 0x33, 0x00, 0x04, 0x00, 0x01, 0x01, 0x00, 0x40, 0x20, 0x20,
  0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
  0x00, 0x00, 0x00, 0x00
};
unsigned int db_sqlite3_len = 64;
&lt;/pre&gt;Параметров для генерации кода для других языков не предусмотрено. Но это поправимо. Например, мне понадобилось вставить код в модульные тесты на Python&amp;nbsp;3. Помог в этом потоковый редактор &lt;a href=&quot;http://linuxcommand.org/man_pages/sed1.html&quot;&gt;sed&lt;/a&gt;:&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-bash&quot;&gt;$ xxd -l 64 -g 1 -u db.sqlite3 | sed -e &#39;s/.\+: /b&quot;\\x/g&#39; -e &#39;s/  .*/&quot;/g&#39; -e &#39;s/ /\\x/g&#39;
b&quot;\x53\x51\x4C\x69\x74\x65\x20\x66\x6F\x72\x6D\x61\x74\x20\x33\x00&quot;
b&quot;\x04\x00\x01\x01\x00\x40\x20\x20\x00\x00\x00\x13\x00\x00\x00\x24&quot;
b&quot;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x04&quot;
b&quot;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00&quot;
&lt;/pre&gt;И кстати, вскоре я поделюсь опытом как быстро начать писать программы на Python.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Книги по теме:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot; http://www.ozon.ru/context/detail/id/23941510/?partner=jia3ep&amp;from=bar &quot;&gt;Дню Нейл. Практическое использование Vim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot; http://www.ozon.ru/context/detail/id/8382738/?partner=jia3ep&amp;from=bar &quot;&gt;Марк Лутц. Программирование на Python. Том 1&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/5559431158819408103/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/5559431158819408103' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5559431158819408103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5559431158819408103'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/05/hex-dump.html' title='hex dump'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6WaeloOmCMmJEFVEv0hkVK6_Zc8drcJiGgyGHcFAgrVebfDd2OkO9MXu4Ptyj0X7yDJZPAvW6aKlLpMQVaT6RKOi03ojIgFHJOM_1xLuBjHa0NnDSwoeLFOtAF2JXSFmU6kg-X7rDEw_IQj8Nz6yyuUzYktqFzvRqShmihACcFD5bDoNrrbQ_7iKn/s72-c/hexdump.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-2991422664526036008</id><published>2016-04-05T14:32:00.001+03:00</published><updated>2022-11-11T16:02:11.064+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="VisualStudio"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>В Visual Studio добавилась поддержка сборки под Linux</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHxtA7gK8RDNgZ3gClZdiqxAI3cDFCC8gTaNDToh2GzSAksxYeBndGhGp4PxcbhJBKx4hF3tMhtyBSTBGopPWPEqunVvEjAac2DmCWRMhCYkw1PLlLhnKtxMIklvloEDg6HMa5R7x-ho/s1600/vs_linux.png&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Итак, в Visual Studio теперь можно компилировать и отлаживать проекты под Linux. Можно было бы подумать, что это первоапрельская шутка, но нет &amp;mdash; новость была выложена 30 марта. Кроме того, я уже попробовал &amp;mdash; это реально работает.&lt;br /&gt;
&lt;br /&gt;
Visual Studio использует доступ по ssh на удаленную машину с Linux. Туда автоматически копируются необходимые исходные файлы, которые потом там же и компилируются. При необходимости запускается gdbserver для организации удаленной отладки. Все это делается незаметно и не требует ручной настройки. Надо учитывать, что это самая первая версия и для продакшена пока не годится.&lt;br /&gt;
&lt;br /&gt;
На первый взгляд видятся следующие недостатки:&lt;ol&gt;&lt;li&gt;Копирование файлов на удаленную машину не выглядит безопасным. Канал конечно защищен, но вот сама удаленная машина может контролироваться потенциальным нарушителем.&lt;/li&gt;
&lt;li&gt;Копирование большого проекта может занять продолжительное время.&lt;/li&gt;
&lt;li&gt;На удаленной машине элементарно может не быть места для всех сорсов и объектных файлов.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Также пока не реализовано отображение стандартного вывода в Output в самой Visual Studio. То есть, программа удаленно работает и что-то пишет в консоль, но прочитать это нельзя. Но этот недостаток скоро исправят, так как он уже есть в бэклоге команды разработки.&lt;br /&gt;
&lt;br /&gt;
Подробнее: &lt;a href=&quot;https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/&quot;&gt;https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/2991422664526036008/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/2991422664526036008' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2991422664526036008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2991422664526036008'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/04/visual-studio-linux.html' title='В Visual Studio добавилась поддержка сборки под Linux'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHxtA7gK8RDNgZ3gClZdiqxAI3cDFCC8gTaNDToh2GzSAksxYeBndGhGp4PxcbhJBKx4hF3tMhtyBSTBGopPWPEqunVvEjAac2DmCWRMhCYkw1PLlLhnKtxMIklvloEDg6HMa5R7x-ho/s72-c/vs_linux.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-5450510867594139002</id><published>2016-04-03T21:36:00.003+03:00</published><updated>2022-11-11T16:02:24.362+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="аналитика"/><category scheme="http://www.blogger.com/atom/ns#" term="бизнес-анализ"/><category scheme="http://www.blogger.com/atom/ns#" term="продукт"/><category scheme="http://www.blogger.com/atom/ns#" term="сценарии"/><category scheme="http://www.blogger.com/atom/ns#" term="требования"/><title type='text'>Сценарии как развитие идеи сторимаппинга</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxwOO71Yr2reCX1QJuG5ObRBxBE-BgYPkFFZWkWd7NESxKvkgZ_OACjxErUfX32IVz5Fx1orEWrmw0-x3ckK06bpF9MP4dEZhdzYYSYb1s5DkjWqnP5LQW-rXLG9RVCYPyUwGBq21BfZg/s1600/a4b695449f46421a86faa2ca46be5e1d.jpg&quot;&gt;&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;Директор небольшой брокерской фирмы Юрий сидел в офисе, который он арендовал в модном коворкинге вместе со своими немногочисленными сотрудниками. Компания последнее время показывала очень хорошие результаты. Престижное экономическое образование позволило самостоятельно построить успешную компанию, а вот как обезопасить основной капитал – базу клиентов – от участившихся хакерских атак собственными силами Юрий не знал. Своим сотрудникам Юрий доверял, но они часто работали из дома, из кафе, да и местный администратор Илья не вызывал доверия, наверное из-за бороды и черной футболки.&lt;br&gt;
&lt;/blockquote&gt;&lt;a href=&quot;http://www.codeatcpp.com/2016/04/blog-post.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/5450510867594139002/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/5450510867594139002' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5450510867594139002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/5450510867594139002'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/04/blog-post.html' title='Сценарии как развитие идеи сторимаппинга'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxwOO71Yr2reCX1QJuG5ObRBxBE-BgYPkFFZWkWd7NESxKvkgZ_OACjxErUfX32IVz5Fx1orEWrmw0-x3ckK06bpF9MP4dEZhdzYYSYb1s5DkjWqnP5LQW-rXLG9RVCYPyUwGBq21BfZg/s72-c/a4b695449f46421a86faa2ca46be5e1d.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-8938736675499443238</id><published>2016-03-28T11:55:00.001+03:00</published><updated>2022-05-12T09:44:38.228+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++0x"/><category scheme="http://www.blogger.com/atom/ns#" term="Cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="gcc"/><category scheme="http://www.blogger.com/atom/ns#" term="localization"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="utf8"/><category scheme="http://www.blogger.com/atom/ns#" term="VisualStudio"/><title type='text'>Использование UTF-8 в исходных кодах</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDaISsa5PRZnan07qaYJrAefmZJoFXabybXK_8OY6rtfjsOIj8TcN0Ki89dTs_hfKoICVF3abD7NXxYYh1BXC8TQGRUp4kzzUKicQKN3Zj-ecUMWbIknTxtk8jSW2Qey1U-QjrJwLMuFiFJr-BOD20wHwumoh1phblXqqGNpVxbRw2hMFTIfWIOUHo/s640/pencil-602440_640.jpg&quot;&gt;&lt;br&gt;
Некоторые время назад возникла задача проверить совместимость компиляторов с исходными файлами в представлении UTF-8 с маркером и без него. Маркер BOM был придуман для индикации порядка байт в машинных словах. Несмотря на то, что UTF-8 — это байтовый поток и такой маркер не имеет большого смысла в его первоначальном понимании, многие утилиты корректно работают только при наличии маркера в файле. Для обозначения UTF-8 в начало файла вставляется последовательность EF&lt;sub&gt;16&lt;/sub&gt;, BB&lt;sub&gt;16&lt;/sub&gt;, BF&lt;sub&gt;16&lt;/sub&gt;. Файлы в кодировке UTF-8 без маркера неотличимы от ASCII файлов, если используются только 7-битные символы.&lt;br&gt;
&lt;br&gt;
В результате эксперимента исследовались файлы в вариантах &lt;i&gt;Unicode (UTF-8 with signature) – Codepage 65001&lt;/i&gt; и &lt;i&gt;Unicode (UTF-8 without signature) – Codepage 65001&lt;/i&gt; для Visual Studio 2013, Visual Studio 2008 и Visual Studio 2014 CTP2. Для полноты сравнения в системе Linux была проведена аналогичная проверка с компилятором GNU C++ 4.7.2. В качестве редактора в Linux использовался vi с опциями &lt;tt&gt;set [no]bomb&lt;/tt&gt; для получения файлов с маркером и без него.&lt;br&gt;
&lt;a href=&quot;http://www.codeatcpp.com/2016/03/utf-8.html#more&quot;&gt;Читать дальше »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/8938736675499443238/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/8938736675499443238' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/8938736675499443238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/8938736675499443238'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/03/utf-8.html' title='Использование UTF-8 в исходных кодах'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDaISsa5PRZnan07qaYJrAefmZJoFXabybXK_8OY6rtfjsOIj8TcN0Ki89dTs_hfKoICVF3abD7NXxYYh1BXC8TQGRUp4kzzUKicQKN3Zj-ecUMWbIknTxtk8jSW2Qey1U-QjrJwLMuFiFJr-BOD20wHwumoh1phblXqqGNpVxbRw2hMFTIfWIOUHo/s72-c/pencil-602440_640.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-8562434251588530987</id><published>2016-02-16T13:32:00.001+03:00</published><updated>2022-11-11T16:02:39.332+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="infotecs"/><category scheme="http://www.blogger.com/atom/ns#" term="вакансии"/><category scheme="http://www.blogger.com/atom/ns#" term="объявление"/><category scheme="http://www.blogger.com/atom/ns#" term="работа"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>Как получить финансирование для ваших проектов</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSiW0-dg13T5xzij-sxaN7J6SyL2v-OH0k-w6oeRxcp5KCpVEHjnlwH9Cs8oe36VAYFpzyfssDDOnVqhXUpR-1teTKDMbUyr4ggXuRC2rSfP4SauAaU7zLMFFWfHMG8YJhNKEioFGHgpk/s1600/infotecs_ac.png&quot; /&gt;&lt;br /&gt;
Коллеги из компании &amp;laquo;Инфотекс&amp;raquo; рассказали, что открывается конкурс научно-технических проектов в рамках программы поддержки исследователей в области информационной безопасности, криптографии и телекоммуникаций &amp;laquo;ИнфоТеКС Академия 2016&amp;raquo;.&lt;br /&gt;
&lt;br /&gt;
Программа предоставляет возможность получить поддержку интересного научного проекта, а также предлагает ряд перспективных тем для исследований и разработки. К участию в программе приглашаются студенты, аспиранты, отдельные разработчики, а также научные коллективы.&lt;br /&gt;
&lt;br /&gt;
Размер вознаграждения за выполненный проект &amp;mdash; до 500 тысяч рублей, что немало даже с текущим курсом доллара.&lt;br /&gt;
&lt;br /&gt;
Заявки на участие принимаются &lt;a href=&quot;http://academy.infotecs.ru/zayavka/&quot;&gt;онлайн&lt;/a&gt; до 31 марта 2016 года включительно. Подробнее о конкурсе можно почитать на &lt;a href=&quot;http://academy.infotecs.ru/formaty-uchastiya/nauchnye-issledovaniya/&quot;&gt;сайте Академии&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/8562434251588530987/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/8562434251588530987' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/8562434251588530987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/8562434251588530987'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/02/infotecsacademy.html' title='Как получить финансирование для ваших проектов'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSiW0-dg13T5xzij-sxaN7J6SyL2v-OH0k-w6oeRxcp5KCpVEHjnlwH9Cs8oe36VAYFpzyfssDDOnVqhXUpR-1teTKDMbUyr4ggXuRC2rSfP4SauAaU7zLMFFWfHMG8YJhNKEioFGHgpk/s72-c/infotecs_ac.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-9191130020008314034</id><published>2016-01-27T09:07:00.001+03:00</published><updated>2022-11-11T16:02:47.819+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="lifehack"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><title type='text'>git через корпоративный прокси</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf-pVeVWmECp9dPiJ2ZQsDa89Vq_cPHyTrueKkdMhD4GcVhH3F0y_EzJaNwJRNmEub5qqP6uvmyjn1dNxIcnYnLeD8L4_Z2wc6s9ok08tNLVUahtHJuUmp1S55de95CDKw0G8pfUpWVK0/s1600/github.png&quot; /&gt;&lt;br /&gt;
Есть вы находитесь за корпоративным прокси, то, возможно, сталкивались с проблемой ограничения доступа во внешнюю сеть по некоторым протоколам. Да что некоторым &amp;mdash; часто режут все, кроме HTTP(S). Это создает проблему при выкачивании исходников проектов с GitHub, Bitbucket и других площадок. Собственно, сам проект можно выкачать указывая в пути &lt;tt&gt;https://&lt;/tt&gt; адрес вместо &lt;tt&gt;git://&lt;/tt&gt;. Но с внешними модулями проекта так не пройдет. Тут остается править все пути в &lt;tt&gt;.gitmodules&lt;/tt&gt;, что плохо, так как будет постоянно возникать вопрос слияния при обновлении этого файла на сервере.&lt;br /&gt;
&lt;br /&gt;
Но есть и другой способ. Можно сказать git, чтобы он автоматически подменял при чтении конфига все вхождения &lt;tt&gt;git://&lt;/tt&gt; на &lt;tt&gt;https://&lt;/tt&gt;. Для этого достаточно ввести в консоли следующую команду:&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-bash&quot;&gt;$ git config --global url.&quot;https://github.com/&quot;.insteadOf git://github.com/&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/9191130020008314034/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/9191130020008314034' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/9191130020008314034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/9191130020008314034'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2016/01/git.html' title='git через корпоративный прокси'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf-pVeVWmECp9dPiJ2ZQsDa89Vq_cPHyTrueKkdMhD4GcVhH3F0y_EzJaNwJRNmEub5qqP6uvmyjn1dNxIcnYnLeD8L4_Z2wc6s9ok08tNLVUahtHJuUmp1S55de95CDKw0G8pfUpWVK0/s72-c/github.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-2678305318845040858</id><published>2015-12-08T16:47:00.001+03:00</published><updated>2022-11-11T16:03:02.878+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="inheritance"/><title type='text'>О типах наследования в C++</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjHju9t2W7Uu_IT-T0cVPwF9380EPvD_WHOfDZ4bz7A9fJHrM5KKJzkEoAWUPEil3jU3GgTmwtPrTss5H8bgrhN1RUdbU34tLJY_M5TUWle2CiOOdnuj-7Yrk0KeujorQrdSpKk8NT50/s1600/private-20115_640.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Часто люди путаются с ограничениями, которые накладывают ключевые слова &lt;tt&gt;public&lt;/tt&gt;, &lt;tt&gt;protected&lt;/tt&gt; и &lt;tt&gt;private&lt;/tt&gt; при наследовании классов в C++. Ниже приведен код, который наглядно иллюстрирует различия с правами доступа.&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-cpp&quot;&gt;class A 
{
public:
    int x; // доступно извне класса
protected:
    int y; // недоступно извне класса, но доступно в методах наследника
private:
    int z; // недоступно извне класса и в методах наследника
};

class B : public A
{
    // тут x будет public
    // тут y будет protected
    // z недоступен в B
};

class C : protected A
{
    // тут x будет protected
    // тут y будет protected
    // z недоступен в C
};

class D : private A
{
    // тут x будет private
    // тут y будет private
    // z недоступен в D
};
&lt;/pre&gt;Стоит иметь ввиду, что если ничего не указывать при наследовании классов, то по умолчанию используется &lt;tt&gt;private&lt;/tt&gt;. При наследовании структур умолчания другие &amp;mdash; там будет &lt;tt&gt;public&lt;/tt&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/2678305318845040858/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/2678305318845040858' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2678305318845040858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/2678305318845040858'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2015/12/c.html' title='О типах наследования в C++'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjHju9t2W7Uu_IT-T0cVPwF9380EPvD_WHOfDZ4bz7A9fJHrM5KKJzkEoAWUPEil3jU3GgTmwtPrTss5H8bgrhN1RUdbU34tLJY_M5TUWle2CiOOdnuj-7Yrk0KeujorQrdSpKk8NT50/s72-c/private-20115_640.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-1460195208923899951</id><published>2015-11-24T16:00:00.001+03:00</published><updated>2022-05-12T09:46:11.342+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HR"/><category scheme="http://www.blogger.com/atom/ns#" term="вакансии"/><category scheme="http://www.blogger.com/atom/ns#" term="объявление"/><category scheme="http://www.blogger.com/atom/ns#" term="поиск"/><category scheme="http://www.blogger.com/atom/ns#" term="работа"/><title type='text'>Как создать правильное описание вакансии</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLoBXvAvzBA_Gq_xFdrAJ45OJ1zjTv3StOhDzbCgPfdrtBFgHQPSD2T6cAEYqrWv7COgHOhJx98ajFVmjPiKLLkFD0EtJ0YntCtJ0PhyaE_BNRWt-P1JG1nkYv8F3a9J6sQSPKeMBsecdy3eDGG9VSvdZmBU378nH-DDQ0Z-8QeQHJw0eJDWBZ5CL9/s500/5564980981_4972a1845b.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Объявление о работе &amp;mdash; это самый первый этап отбора кандидатов. Можно считать, что компания предлагает кандидату провести самопроверку по требованиям, а кандидат узнает что ему придется делать на новой работе. Как сделать этот этап наиболее полезным для обеих сторон?&lt;br /&gt;
&lt;br /&gt;
Зачастую работодатели составляют объявления о найме сотрудников таким образом, что не совсем ясно кого они действительно готовы взять на работу. В объявлении вписывают все специфичные технологии и языки, которые используются в данный момент в проекте, а может и те, которые хотелось бы использовать, причем опыт работы с этим зоопарком обязательно должен быть от трех лет. Получается очень специфичная смесь, которая, возможно, хорошо описывает уже работающих в компании сотрудников или даже идентифицирует несуществующего идеального сотрудника, но совершенно не подходит для поиска новых. Почему? А потому что именно таких на рынке нет.&lt;br /&gt;
&lt;br /&gt;
Серьезный кандидат видя такое объявление понимает, что он не подходит, и с высокой вероятностью не откликнется на вакансию, чтобы не тратить свое время. А те, кто не ценит свое время, будут тратить время работодателя на пустое первичное интервью.&lt;br /&gt;
&lt;br /&gt;
Поэтому стоит разделить объявление на несколько логических разделов. Первый &amp;mdash; это обязательные требования. В них нужно указать то, без чего действительно нельзя обойтись и чему невозможно обучиться в разумное время. Надо понимать, что чем больше будет этот раздел, тем меньше потенциальных работников будут готовы попробовать свои силы. Работодателю также стоит заранее подготовиться по каждому пункту, придумать как вы будете проверять знания кандидата. Раз эти требования обязательные, то и проверить их нужно тщательно.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы кандидату стала понятна предметная область, в которой ему придется профессионально расти, стоит добавить раздел &amp;laquo;Желательно знать или вектор развития&amp;raquo;. Вот тут уже можно описать все технологии, которые вы мечтаете использовать и предметную область, в которой вы работаете. Кандидаты с нужными навыками будут понимать, что у них есть преимущество на собеседовании и откликнутся с большей охотой. А остальные смогут оценить интересно ли им будет на работе и готовы ли они расти в указанных направлениях.&lt;br /&gt;
&lt;br /&gt;
Также крайне важно иметь раздел с описанием обязанностей нового сотрудника. Вы же знаете чем он будет заниматься, не так ли? Если нет, то подумайте, стоит ли вам вообще кого-то искать. Обязанности сотрудника &amp;mdash; это то, что он будет делать на работе каждый день. Писать код, ходить на совещания, общаться с клиентами, писать документацию, считать ROI? Все обязанности стоит указать, даже если вам кажется и так все очевидным из названия вакансии. Это, с одной стороны отсеет всех, кому работа неинтересна, а с другой &amp;mdash; люди не узнают внезапно через месяц работы, что они в должности программиста должны вести бэклог продукта и составлять отчеты по KPI.&lt;br /&gt;
&lt;br /&gt;
Ну и конечно, стоит описать все преимущества, которые есть у вас в компании для таких хороших людей, которые пройдут все ваши испытания. Пишите обо всем честно. Оплата больничных по закону? Вы серьезно? Вы же не кассиров в Ашан набираете, в IT никому не интересно получить половину зарплаты после недели работы из дома из-за болезни. Разобрались, что это не преимущество, можете указать в разделе &amp;laquo;Мы классная компания,&amp;nbsp;НО&amp;raquo;. Оплаченные обеды в офисе, бассейн, футбол, фитнес? Хорошо. ДМС? Если в него ничего не включено, кроме оказания экстренной помощи в критических ситуациях, то лучше не позориться, чтобы потом не было разочарования. Подписываетесь под &lt;a href=&quot;http://blog.codinghorror.com/the-programmers-bill-of-rights/&quot;&gt;The Programmer&#39;s Bill of Rights&lt;/a&gt;? Тогда это точно стоит указать. В общем, хвалите компанию, но будьте честны, так как нет ничего хуже обманутых ожиданий.&lt;br /&gt;
&lt;br /&gt;
Удачной охоты.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/1460195208923899951/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/1460195208923899951' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1460195208923899951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/1460195208923899951'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2015/11/blog-post.html' title='Как создать правильное описание вакансии'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLoBXvAvzBA_Gq_xFdrAJ45OJ1zjTv3StOhDzbCgPfdrtBFgHQPSD2T6cAEYqrWv7COgHOhJx98ajFVmjPiKLLkFD0EtJ0YntCtJ0PhyaE_BNRWt-P1JG1nkYv8F3a9J6sQSPKeMBsecdy3eDGG9VSvdZmBU378nH-DDQ0Z-8QeQHJw0eJDWBZ5CL9/s72-c/5564980981_4972a1845b.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-7076985824292656197</id><published>2015-10-08T10:55:00.001+03:00</published><updated>2022-05-12T09:46:58.519+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><title type='text'>Притча об архитекторах</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJsz22-wj9DliJkvNZ3CztvUW-TE56tS1Lnx_Vtcc0zwGLP56yL5tUbZZtE_FmxrrPATltmzQSv5q9h2RK8osJ1kQJh8_Mi7py6IFWOhxwdYErZMIbaHOVZJQefoJXoK-v3yhwcPfgjQoUpD267Z0UoDfBiCg16Tr2u2uV8-FGnVa3w3Ans101btXS/s600/house_building.jpeg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Пришел заказчик к архитектору и говорит:&lt;br /&gt;
&amp;mdash; Спроектируй мне самый крутой дом, с кучей комнат, красивым оформлением и вообще чтобы удобно было.&lt;br /&gt;
Архитектор спрашивает:&lt;br /&gt;
&amp;mdash; А где будет стоять этот дом?&lt;br /&gt;
Заказчик отвечает:&lt;br /&gt;
&amp;mdash; Ты же крутой архитектор, ты спроектировал много разнообразных домов, просто сделай мне тоже самый крутой и удобный, а где он будет стоять &amp;mdash; это тебя уже не касается.&lt;br /&gt;
Архитектор подумал и говорит:&lt;br /&gt;
&amp;mdash; Да, я спроектировал очень много домов и поэтому я знаю, что если дом будет стоять в пустыне, то мне не нужно придумывать гидроизоляцию фундамента, но зато нужно подумать о мощной системе кондиционирования, чтобы вы не мучились о жары. А если он будет за полярным кругом, то мне нужно подумать о хорошем отоплении и огромных окнах на крыше, чтобы вы могли наслаждаться северным сиянием. Есть много неявных деталей, которые делают жизнь комфортной. Но если я не знаю где будет стоять дом, то как я смогу сделать его удобным?</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/7076985824292656197/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/7076985824292656197' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/7076985824292656197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/7076985824292656197'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2015/10/blog-post.html' title='Притча об архитекторах'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJsz22-wj9DliJkvNZ3CztvUW-TE56tS1Lnx_Vtcc0zwGLP56yL5tUbZZtE_FmxrrPATltmzQSv5q9h2RK8osJ1kQJh8_Mi7py6IFWOhxwdYErZMIbaHOVZJQefoJXoK-v3yhwcPfgjQoUpD267Z0UoDfBiCg16Tr2u2uV8-FGnVa3w3Ans101btXS/s72-c/house_building.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-4753029246230893553</id><published>2015-10-02T15:22:00.000+03:00</published><updated>2015-12-16T14:13:33.020+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="console"/><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="port_mapping"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Windows port mapping</title><content type='html'>&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFaik7T26Anffx9U2HzBP_BYgvzgL2RBnLsoJvLU1EujTk_XtGCCCffVRjXdcsCu7JD-y8DRaBgBPJbd29I_AQNFRAaaUq1AQIQN7GHoBrDTDHsse-GLp75UPZLR17IuGaBzheaodzmfA/s800-Ic42/20120619_161727.jpg&quot;/&gt;&lt;br /&gt;
&lt;br /&gt;
Работая в Windows бывает нужно, чтобы виртуалка могла подключиться не только к хост-машине, но и к некоторым удаленным сервисам. Это легко осуществить создав «зеркало» удаленного порта на локальном хосте. Оказывается, это очень просто сделать встроенными средствами Windows. Достаточно ввести следующую команду (с правами администратора):&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;C:\&amp;gt;netsh interface portproxy add v4tov4 listenport=8080 listenaddress=192.168.33.11 connectport=80 connectaddress=64.233.162.101&lt;/pre&gt;&lt;br /&gt;
В данной команде 64.233.162.101 и 80 — это адрес удаленного сервера. А 192.168.33.11 и 8080 — адрес порта в виртуальной сети (или любой другой локальный интерфейс).</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/4753029246230893553/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/4753029246230893553' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4753029246230893553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4753029246230893553'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2015/10/windows-port-mapping.html' title='Windows port mapping'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFaik7T26Anffx9U2HzBP_BYgvzgL2RBnLsoJvLU1EujTk_XtGCCCffVRjXdcsCu7JD-y8DRaBgBPJbd29I_AQNFRAaaUq1AQIQN7GHoBrDTDHsse-GLp75UPZLR17IuGaBzheaodzmfA/s72-c-Ic42/20120619_161727.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5744154463195670470.post-4970721432801426379</id><published>2015-08-07T03:00:00.002+03:00</published><updated>2022-11-11T15:50:24.285+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="keyboard"/><category scheme="http://www.blogger.com/atom/ns#" term="mouse"/><category scheme="http://www.blogger.com/atom/ns#" term="tablet"/><category scheme="http://www.blogger.com/atom/ns#" term="usability"/><category scheme="http://www.blogger.com/atom/ns#" term="обзор"/><title type='text'>Немобильная мобильностьили как я подключал клавиатуру и мышь к планшету</title><content type='html'>Казалось бы планшеты придумали для мобильности. Я решил проверить планшет с операционной системой Android в этом разрезе.&lt;br /&gt;
&lt;br /&gt;
Все эксперименты проводились на устройстве Samsung Galaxy Tab S с операционной системой Android 4.4.2. Никто мне его не выдавал для тестов или рекламы, это мой личный аппарат для &lt;strike&gt;игры в танчики&lt;/strike&gt; отладки Android приложений.&lt;br /&gt;
&lt;br /&gt;
Оказалось, что с помощью OTG-кабеля можно подключить клавиатуру, мышь и флешку. При этом поддерживаются различные раскладки клавиатур. А вот действие кнопок мыши совсем неочевидно. Левая кнопка действует как касание, а действие правой зависит от приложения &amp;mdash; где-то она работает как аппаратная кнопка &amp;laquo;Назад&amp;raquo;, а где-то как правая кнопка мыши. На фото видно, что использовались проводная клавиатура и Bluetooth мышь фирмы Apple. Прокрутка на мыши работает как в Windows, что, учитывая сенсорную природу мыши, неудобно. Попытка воткнуть флешку в клавиатуру (в ней есть два разъема для подключения дополнительных устройств) не нашла понимания и флешка даже не замигала диодом. Возможно, этой проблемы нет при использовании более навороченного, чем мой, OTG-кабеля, но я этого не проверял.&lt;br /&gt;
&lt;br /&gt;
Конечно, здорово, что все это поддерживается. Однако, подключив это разнообразие я понял, что таскать весь этот набор с собой гораздо сложнее, чем небольшой ноутбук. Результат можно увидеть на фото. Выглядит громоздко, не так ли?&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlzZimEAkcuPHqs4BOTC7dS7wia1rdbzc7Ykr3q9yPIR-TRatJIPXh9pfaWy-qZq--NE5fLl4e6MvAJsb9Wf8ETKd1N8GKKx2rtXDaPCEg4oekQ_NZSp4jfPocV2_dJjfrIPd5olQQnxQWWkWSzE8XbzV_x4gnyg2LHr4o5ezeR2LIReEduvMrl7d/s800/IMG_20150806_195857-800x600.jpg&quot; /&gt;&lt;/div&gt;
Выводы у меня следующие &amp;mdash; планшет предназначен больше для потребления информации, чем для ее создания. Смотреть что-то в интернете, разглядывать фотки и проверять почту очень удобно. А вот написать что-то... Мне конечно удалось подготовить весь этот текст пользуясь только планшетом, но не могу сказать, что клавиатура и мышь сделали жизнь проще. Разве что печатать с полноценной клавиатурой быстрее. Но вряд ли я стану таскать ее с собой. Может надо было попробовать голосовой ввод? К тому же как уменьшить фотографию до необходимого размера, сохранив при этом терпимое качество, я не понял. Все популярные приложения с Гугл Маркета сильно искажают картинку. Лучшее, чего удалось добиться видно на фото выше.</content><link rel='replies' type='application/atom+xml' href='http://www.codeatcpp.com/feeds/4970721432801426379/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5744154463195670470/4970721432801426379' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4970721432801426379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5744154463195670470/posts/default/4970721432801426379'/><link rel='alternate' type='text/html' href='http://www.codeatcpp.com/2015/08/tabletkbmouse.html' title='Немобильная мобильность&lt;br/&gt;&lt;small&gt;или как я подключал клавиатуру и мышь к планшету&lt;/small&gt;'/><author><name>Kirill V. Lyadvinsky</name><uri>http://www.blogger.com/profile/03118738824565485127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipVMwdHtufH-xTY8jCla22o_VZUL0yO_dgXktwixck4JMY_LKSh8BidAJHkrYNHeQyMYYHwLQTo1O6QgWylm1zeEnt_BruZEy06OeAWtDD8HUlRGOIwl50nEec44jN4g/s220/codeatcpp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlzZimEAkcuPHqs4BOTC7dS7wia1rdbzc7Ykr3q9yPIR-TRatJIPXh9pfaWy-qZq--NE5fLl4e6MvAJsb9Wf8ETKd1N8GKKx2rtXDaPCEg4oekQ_NZSp4jfPocV2_dJjfrIPd5olQQnxQWWkWSzE8XbzV_x4gnyg2LHr4o5ezeR2LIReEduvMrl7d/s72-c/IMG_20150806_195857-800x600.jpg" height="72" width="72"/><thr:total>8</thr:total></entry></feed>