<?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-5492488374166728489</id><updated>2026-08-23T09:34:51.919-07:00</updated><category term="components"/><title type='text'>Appery.io Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-5665898933118626749</id><published>2018-01-11T05:14:00.002-08:00</published><updated>2018-01-11T05:14:33.379-08:00</updated><title type='text'>Configuring domain name and ssl certificate in Standalone version of API Express</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Video shows how to setup domain name and ssl certificate in API Express&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;640&quot; height=&quot;532&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/JdXtnrQDNfI/0.jpg&quot; src=&quot;https://www.youtube.com/embed/JdXtnrQDNfI?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/5665898933118626749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2018/01/configuring-domain-name-and-ssl.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5665898933118626749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5665898933118626749'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2018/01/configuring-domain-name-and-ssl.html' title='Configuring domain name and ssl certificate in Standalone version of API Express'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/JdXtnrQDNfI/default.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-2667858546490347235</id><published>2018-01-04T03:34:00.001-08:00</published><updated>2018-01-04T03:34:16.968-08:00</updated><title type='text'>API Express Standalone version in Docker container</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Video shows how to run Standalone version of API Express in Docker container&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;640&quot; height=&quot;532&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/eMnHtqy0YUA/0.jpg&quot; src=&quot;https://www.youtube.com/embed/eMnHtqy0YUA?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/2667858546490347235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2018/01/api-express-standalone-version-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2667858546490347235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2667858546490347235'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2018/01/api-express-standalone-version-in.html' title='API Express Standalone version in Docker container'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/eMnHtqy0YUA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-7764113495007176323</id><published>2017-12-29T03:56:00.003-08:00</published><updated>2017-12-29T03:56:56.106-08:00</updated><title type='text'>Appery.io Login/Logout online/offline Step by Step</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;I will show you how to create secured mobile application on appery.io with login/logout features and ability to work in offline mode.&lt;/span&gt;&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-de3c7760-a221-53a4-5b42-e5a46b72c04a&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Let’s create Appery database with name LabelDB&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Our database will be secured and user’s credentials will be saved in predefined collection Users. &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In real application we would have registration page but for our demo app Let’s create predefined users with name &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;alex and password pass1&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;john with password pass2&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Our database will be have only one custom collection with name Labels which will be store short messages.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Let’s create In collection Labels custom column with name label and type String&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;By analogy with Users collections let’s create two predefined labels &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Label-1&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;label-2&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Since we considered information in Labels collection as secured we have mark it as secured.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After that only authorized users will be able to work with it.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Since our application should be able to work offline we have to work with our database via API Express &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Let’s create API Express project with name LabelProject&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And In LabelProject let’s create generated service with with labels&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;From list of db connections let’s select predefined database connection with name [Appery.io] LabelDB&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Then we need to select collection Labels&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Let’s leave everything as it is.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And last step we have to mark our API Express project as secured &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;On Settings tab enable “Secure REST API” checkbox &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Select Security type Security Provider&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And select [Appery.io] LabelDB as Security Provider&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Now let’s create ui of our application &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Create blank ionic application&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Rename Screen1 page to Login &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And add new page Labels &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Login screen has two input fields username and password &lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Property Ng-model of username field is username&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And property Ng-model of password field is password &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Also we need to add button with Text Login and property ng-click login()&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After successful login user will be redirected on Labels page&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;So here we need to add variables username and password &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Application should work with API Expres project for that let’s run API Express extension and select LabelsProject and generate labels generic services. &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After refreshing app corresponding API Express services should be added into our application.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Drag and drop AppClientLogin service&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And map our application variables on variables of Login service&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After successful login user will be redirected on Labels page otherwise he will see corresponding alert message.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;On second page user will be see the list of labels&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;For that we add list element&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And specify property ng-repeat as label in labels&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And update init method here we have to invoke labels_find services and map $scope.labels variable on success&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Since all App Client services are invoked asynchronously we need to invoke $scope.$apply() method manually.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And also let’s add two buttons Login which will redirect us on Login page &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;For that just specify navigate-to property as Login&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And Logout button which also will be redirected as on Login page but before that invoke AppClientLogout method &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Don’t forget to invoke $scope.$apply() manually&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Application is ready for testing&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;First let’s test that it works properly online&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;We provided correct credentials alex/pass1 and were navigated on Labels page where we see the list of our labels with two labels&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Let’s press Logout button&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Now we are on Login screen and let’s move our application to offline mode it is very easy to do in chrome browser just enable offline checkbox on network tab&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;First let’s make sure that invalid credentials will not work and provide username bob and password pass3 while everything is correct &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And now we provide our previous credentials alex/pass1 and go to Labels page and can see our labels&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Network tab is empty and it means that all data were taken from offline storage.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Again let’s press Logout button&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;And try to login with as second user john/pass2.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;AppClient remembers only last user for offline mode so it is impossible to login only as alex&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;That is it what I wanted to show. Thanks for your attention. &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/7764113495007176323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-loginlogout-onlineoffline-step.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7764113495007176323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7764113495007176323'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-loginlogout-onlineoffline-step.html' title='Appery.io Login/Logout online/offline Step by Step'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-29362722242189609</id><published>2017-12-29T03:55:00.005-08:00</published><updated>2017-12-29T03:55:42.352-08:00</updated><title type='text'>Platform Architecture of appery.io API Express environment</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Platform Architecture of appery.io API Express environment&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEjsAe2qn-GzuXDSR1AiquFpi5FuQ-Vrc9CWPTdnfrSunM4ckK0kbwBcr3MksIgOCfu0eBtCqklwahzZPSI-WSb8vJyf06USM1M9yO4YwAF-YZCa_6uRolAa0PO7lL5Z3pI5JpI4BOwgCypd/s1600/Platform+architecture+of+Appery.io+API+Express+environment.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1050&quot; data-original-width=&quot;1320&quot; height=&quot;508&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsAe2qn-GzuXDSR1AiquFpi5FuQ-Vrc9CWPTdnfrSunM4ckK0kbwBcr3MksIgOCfu0eBtCqklwahzZPSI-WSb8vJyf06USM1M9yO4YwAF-YZCa_6uRolAa0PO7lL5Z3pI5JpI4BOwgCypd/s640/Platform+architecture+of+Appery.io+API+Express+environment.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/29362722242189609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/platform-architecture-of-apperyio-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/29362722242189609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/29362722242189609'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/platform-architecture-of-apperyio-api.html' title='Platform Architecture of appery.io API Express environment'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsAe2qn-GzuXDSR1AiquFpi5FuQ-Vrc9CWPTdnfrSunM4ckK0kbwBcr3MksIgOCfu0eBtCqklwahzZPSI-WSb8vJyf06USM1M9yO4YwAF-YZCa_6uRolAa0PO7lL5Z3pI5JpI4BOwgCypd/s72-c/Platform+architecture+of+Appery.io+API+Express+environment.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-7084124194858419883</id><published>2017-12-29T03:54:00.003-08:00</published><updated>2017-12-29T03:54:45.073-08:00</updated><title type='text'>Appery.io Login/Logout in offline mode</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.7); font-family: &amp;quot;Source Serif Pro&amp;quot;, serif; font-size: 21px;&quot;&gt;Video shows how to create secured mobile application on appery.io with login/logout features and ability to work in offline mode.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.7); font-family: &amp;quot;Source Serif Pro&amp;quot;, serif; font-size: 21px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;640&quot; height=&quot;532&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/1UCeY953pq4/0.jpg&quot; src=&quot;https://www.youtube.com/embed/1UCeY953pq4?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white; color: rgba(0, 0, 0, 0.7); font-family: &amp;quot;Source Serif Pro&amp;quot;, serif; font-size: 21px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/7084124194858419883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-loginlogout-in-offline-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7084124194858419883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7084124194858419883'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-loginlogout-in-offline-mode.html' title='Appery.io Login/Logout in offline mode'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/1UCeY953pq4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-6075582315076696114</id><published>2017-12-29T03:51:00.006-08:00</published><updated>2017-12-29T03:52:50.259-08:00</updated><title type='text'>Appery.io security in API Express</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Video covers the most important aspects security in API Express&lt;br /&gt;
&lt;br /&gt;
- Custom Security&lt;br /&gt;
- Security Provider&lt;br /&gt;
- Using Users collection of Appery.io database&lt;br /&gt;
- Using LDAP component&lt;br /&gt;
- Integrating LDAP and appery.io databases&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;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/gygVFasIn_U/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;532&quot; src=&quot;https://www.youtube.com/embed/gygVFasIn_U?feature=player_embedded&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/6075582315076696114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-security-in-api-express.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6075582315076696114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6075582315076696114'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/apperyio-security-in-api-express.html' title='Appery.io security in API Express'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/gygVFasIn_U/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-1409033480764311464</id><published>2017-12-06T23:45:00.006-08:00</published><updated>2017-12-06T23:58:07.493-08:00</updated><title type='text'>26 Essential Metrics for Successful Mobile Apps</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;background-color: white; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 16px; margin-bottom: 20px; padding: 0px;&quot;&gt;
You have a great app idea and have created a mobile app to share your amazing idea with the world. The app made a great impact initially and marketing activities seem to be attracting downloads. But revenue is declining. What&#39;s wrong?&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 16px; margin-bottom: 20px; padding: 0px;&quot;&gt;
The answer is simple: to make your mobile app a success, you need to constantly improve it. In fact, Gartner suggests a release cycle of 1.5 - 2 months for mobile apps. So how should you identify which parts of your app to improve? For this, application analytics are a must.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 16px; margin-bottom: 20px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&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/AVvXsEjkMXTRAf1ZiWL2UXVjo08wyTZpt9cG-JTbLiaLR2lwRs3UmPhNoZob7WVIuYWykEBlqxM1kpoQEPdRS__WWNQKE9YPhRCPiRIqgSXcPCOrPyAqtrxTXzwpkN1D6dzStRtwNmWC4naC7zFq/s1600/261.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMXTRAf1ZiWL2UXVjo08wyTZpt9cG-JTbLiaLR2lwRs3UmPhNoZob7WVIuYWykEBlqxM1kpoQEPdRS__WWNQKE9YPhRCPiRIqgSXcPCOrPyAqtrxTXzwpkN1D6dzStRtwNmWC4naC7zFq/s1600/261.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/1409033480764311464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/26-essential-metrics-for-successful.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/1409033480764311464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/1409033480764311464'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/26-essential-metrics-for-successful.html' title='26 Essential Metrics for Successful Mobile Apps'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMXTRAf1ZiWL2UXVjo08wyTZpt9cG-JTbLiaLR2lwRs3UmPhNoZob7WVIuYWykEBlqxM1kpoQEPdRS__WWNQKE9YPhRCPiRIqgSXcPCOrPyAqtrxTXzwpkN1D6dzStRtwNmWC4naC7zFq/s72-c/261.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-7592647325982538475</id><published>2017-12-04T04:38:00.000-08:00</published><updated>2017-12-04T04:38:02.442-08:00</updated><title type='text'>Blockchain Basics</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy1SZ4OTpzO7SWlJC1NLQnhEAFz04ZBa7z3A5U8J4KGDHaQHD3t6eqX2GRfmld2KmodAtpNFJHCT_70spGvsIj9JS-_0efqXoS4lqcef0Qn6G2f29GLR_3KMA6hY-NWAXeaRfkDPKVNPaX/s1600/blockchainbasic.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;913&quot; data-original-width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy1SZ4OTpzO7SWlJC1NLQnhEAFz04ZBa7z3A5U8J4KGDHaQHD3t6eqX2GRfmld2KmodAtpNFJHCT_70spGvsIj9JS-_0efqXoS4lqcef0Qn6G2f29GLR_3KMA6hY-NWAXeaRfkDPKVNPaX/s1600/blockchainbasic.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/7592647325982538475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/12/blockchain-basics.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7592647325982538475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7592647325982538475'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/12/blockchain-basics.html' title='Blockchain Basics'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy1SZ4OTpzO7SWlJC1NLQnhEAFz04ZBa7z3A5U8J4KGDHaQHD3t6eqX2GRfmld2KmodAtpNFJHCT_70spGvsIj9JS-_0efqXoS4lqcef0Qn6G2f29GLR_3KMA6hY-NWAXeaRfkDPKVNPaX/s72-c/blockchainbasic.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-6693102410117974179</id><published>2017-11-30T04:38:00.003-08:00</published><updated>2017-11-30T04:38:46.682-08:00</updated><title type='text'>RSA Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Illustration of RSA work by example&lt;/span&gt;&lt;/h4&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Around the encryption algorithms with an open and private key there are many misunderstandings and mystifications. Here I would like to show very briefly and clearly, with concrete numbers and minimum formulas, how this works.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I do not go into the theory (it&#39;s not very clear what level of preparation the reader should expect), but I&#39;m sure that after reading this short illustration, it will be easier for any person to understand the formulas and strong evidence.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;So. Let&#39;s say I want to get some data from you. We do not want you to be recognized by anyone other than us. And we do not have any confidence in the reliability of the data transmission channel. Let&#39;s get started.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Step one. Preparation of keys&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I need to do some preliminary steps: generate a public and private key.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I choose two prime numbers. Let it be p = 3 and q = 7.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We compute the module - the product of our p and q: n = p × q = 3 × 7 = 21.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We calculate the Euler function: φ = (p-1) × (q-1) = 2 × 6 = 12.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We choose a number e that meets the following criteria: (i) it should be simple, (ii) it should be less than φ - there are options: 3, 5, 7, 11, (iii) it should be relatively prime to φ; there remain variants 5, 7, 11. We choose e = 5. This, so-called, open exponent.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Now the pair {e, n} is my public key. I send it to you so that you encrypt your message. But for me it&#39;s not all. I need to get a private key.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I need to calculate the number d, the inverse of e modulo φ. That is, the remainder of dividing modulo φ of the product d × e must be 1. We write this in the notation adopted in many programming languages: (d × e)% φ = 1. Or (d × 5)% 12 = 1. d can be equal to 5 ((5 × 5)% 12 = 25% 12 = 1), but that it does not confuse with e in the following narrative, let&#39;s take it equal to 17. You can check for yourself that (17 × 5)% 12 is actually 1 (17 × 5-12 × 7 = 1). So d = 17. The pair {d, n} is a secret key, I leave it with me. It can not be communicated to anyone. Only the owner of the private key can decrypt that which was encrypted with the public key.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Step two. Encryption&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Now it&#39;s your turn to encrypt your message. Let&#39;s say your message is 19. Let&#39;s call it P = 19. In addition to it, you already have my public key: {e, n} = {5, 21}. Encryption is performed using the following algorithm:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Raise your message to the power of e modulo n. That is, calculate 19 to the power of 5 (2476099) and take the remainder of the division by 21. It turns out 10 - this is your encoded data.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Strictly speaking, you do not need to calculate a huge number of &quot;19 to the power of 5&quot;. For each multiplication it is enough to calculate not the complete product, but only the remainder of dividing by 21. But this is the details of the implementation of calculations, let&#39;s not go into them.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Received data E = 10, you send me.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Here it should be noted that the message P = 19 should not be greater than n = 21. otherwise nothing will turn out.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Step three. Explanation&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I got your data (E = 10), and I have a private key {d, n} = {17, 21}.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Please note that the public key can not decrypt the message. And I did not tell anyone the private key. This is the beauty of asymmetric encryption.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We start to decode:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I do an operation that is very similar to yours, but I use d instead of e. I&#39;ll raise E to the power of d: I get 10 to the power of 17 (let me not write a one with seventeen zeros). I calculate the remainder of dividing by 21 and get 19 - your message.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Note that no one except me (even you!) Can decrypt your message (E = 10), since no one has a private key.&lt;/span&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: large;&quot;&gt;What is the guarantee of encryption reliability&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;The reliability of encryption is ensured by the fact that it is very difficult for a third person (trying to crack the cipher) to compute a private key over an open one. Both keys are computed from one pair of primes (p and q). That is, the keys are interconnected. But to establish this connection is very difficult. The main snag is the decomposition of the module n into simple factors p and q. If the number is the product of two very large primes, it is very difficult to factor it.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I will try to show this with an example. Let&#39;s factor the number 360:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;immediately clear. that it is divided into two (got 2)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;the remaining 180 too, apparently even (2 more)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;90 - also even (another two)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;45 is not divisible by 2, but the next attempt is successful - it is divided into three (got 3)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;15 is also divisible by 3&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;5 - simple.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We at every step, practically without busting, were getting more and more multipliers, easily obtaining a complete decomposition 360 = 2 × 2 × 2 × 3 × 3 × 5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Now let&#39;s take the number 361. Then we&#39;ll have to suffer.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;it is not even&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;three - no, not shared&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;five (for example, we act smartly and only sort out simple numbers, although, in practice, the search for large prime numbers, in itself, is a difficult task) - does not fit&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;seven? - no.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;and only 19 will give us the answer: 361 = 19 × 19.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;When using large numbers, the task becomes very complicated. This allows us to hope that the cracker simply does not have enough computing resources to break your code in the foreseeable future.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;And how does it all work in practice?&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Many readers ask how all this is applied in practice. Let&#39;s look at a slightly more close to life example. We will encrypt and decipher the word &quot;MOLE&quot;, proposed by one of the readers. And at the same time, we will quickly consider what problems are encountered and how they are solved.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;First, we generate keys with slightly larger numbers. They are not so obvious, but they will allow us to encrypt not only numbers from zero to 20.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We repulse a pair of primes {p, q} = {17, 19}. Let our public key be {e, n} = {5, 323}, and closed {d, n} = {173, 323}.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We are ready for encryption. Let&#39;s translate our word into a digital representation. We can take simply the numbers of letters in the alphabet. We get a sequence of numbers: 11, 17, 15, 19.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;We can encrypt each of these numbers with the public key {e, n} = {5, 323} and get the encryption 197, 272, 2, 304. These numbers can be transferred to the recipient who has the private key {d, n} = {173, 323 } and he decodes everything.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;A little about the complexities&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;In fact, the described encryption method is very weak and never used. The reason is simple - encryption by letter. The same letter will be encrypted with the same number. If an attacker intercepts a sufficiently large message, he will be able to guess its contents. First he will pay attention to the frequent codes of spaces and will divide the cipher into words. Then he will notice one-letter words and guess how the letters &quot;a&quot;, &quot;and&quot;, &quot;o&quot;, &quot;c&quot;, &quot;k&quot; are coded ... Through a short search, he will compute additional letters for short words like &quot;but&quot;, &quot;not &quot;, &quot;by&quot;. And for longer words, easily restore all the remaining letters.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Thus, an attacker does not have to guess your secret keys. He will hack your message without knowing them.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;To avoid this, special additional algorithms are used, the essence of which is that each previous part of the message starts to affect the next one.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Simpler, it looks like this. Before encryption, we apply a rule to the message: b: = (b + a)% n. Where a is the previous part of the message, and b is the next. That is, our message (11, 17, 15, 19) is changing. 11 remains unchanged. 17 turns into (11 + 17)% 323 = 28. 15 becomes (15 + 28)% 323 = 43. A 19 turns into 62.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;The sequence (11, 28, 43, 62) turns out to be &quot;confusing&quot;. All the letters in it are mixed, in the sense that each code is affected not by one letter, but all the previous ones.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;The person who receives your message will have to do the opposite operation, with the minus sign: b: = (b - a)% n. And only then he will receive the codes of letters.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;In practice, random and meaningless letters are added to the original message in the initial message. To even the first code it was impossible to understand anything. The recipient simply discards the beginning of the message.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;That is, we can add a random number to the beginning and get (299, 11, 17, 15, 19). After mixing, it turns out: 299, 310, 4, 19, 38. After encryption, it will no longer be possible to guess where there was a letter.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;In real life, it&#39;s still a little more complicated. Blocks for which the message is longer than one letter. Therefore, first, alignment algorithms are applied, then blocking algorithms with entanglement, and then RSA-encryption itself is applied.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;The recipient does everything in the reverse order: decrypts, &quot;unravels&quot; the blocks and discards unnecessary information added just for alignment (so that the message can be divided into an entire number of blocks).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Details and principles of forming blocks can be read here. I in this note wanted to tell only about RSA. Here, it was possible.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/6693102410117974179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/11/rsa-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6693102410117974179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6693102410117974179'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/11/rsa-example.html' title='RSA Example'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-3258509892868041708</id><published>2017-10-09T05:58:00.001-07:00</published><updated>2017-10-09T05:58:19.564-07:00</updated><title type='text'>A successful Git branching model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;header class=&quot;Entry-header&quot; style=&quot;background-color: white; border: 0px; color: #191919; font-family: Helvetica, Arial, sans-serif; font-size: 13px; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;div class=&quot;Category-ttl&quot; style=&quot;border: 0px; color: #0cb04d; font-size: 18.005px; font-weight: bold; margin-bottom: 0.4em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-size: 24.57px;&quot;&gt;Branching workflow using topic and integration branch&lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;div class=&quot;Entry-content&quot; style=&quot;background-color: white; border: 0px; color: #191919; font-family: Helvetica, Arial, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
We will be covering the branching workflow with a simple example.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Say for instance, you are currently working on a new feature on the current branch. Suddenly, somebody finds a bug in the production and you are now tasked to fix that bug, parallel to working on the new feature earlier.&lt;/div&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;On the way of work on a topic branch to add functions, it becomes necessary to fix bugs.&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_1.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Before starting on the bug fix, you would want to create a new branch based off the integration branch. This new branch will isolate the bug fix from the new feature that you were working on.&lt;/div&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;You can start working independently from the addition of functions by creating a new topic branch for fixing bugs.&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_2.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
When you ready to release the bug fix, merge the bug fix topic branch into the integration branch.&lt;/div&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;You can make it public by including it in the original branch&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_3.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Once that is done, you can proceed to switch back to your original feature branch and continue working on the new feature.&lt;/div&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;You can go back to the original branch to continue working on the addition of functions&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_4.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
On your feature branch, you will notice that commit &quot;X&quot;, which is the bug fix commit, is needed in order for you to continue implementing the new feature. In other words, you will have to synchronize your current branch with the changes on the integration branch.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
There are two options to go about doing this. The first is to merge the integration branch that includes commit &quot;X&quot; with the current branch.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The second option is to rebase the current branch to the integration branch that includes commit &quot;X&quot;.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
For this example, we will use the rebase approach which will produce a resulting history that is similar to the example below.&lt;/div&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;Rebase a unified branch&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_5.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;Mg-b30&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Now that we have commit &quot;X&quot; on our current branch, we can safely proceed to work on our new feature.&lt;/div&gt;
&lt;div class=&quot;Important Mg-b40&quot; style=&quot;background: url(&amp;quot;./img/post/bg_important.png&amp;quot;) right center no-repeat scroll; border: 0px; margin-bottom: 40px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-height: 85px; padding: 30px 110px 15px 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;background-color: #0cb04d; border-radius: 6px; border: 0px; color: white; font-size: 18.005px; line-height: 1.6; padding: 20px; position: relative; vertical-align: baseline;&quot;&gt;
As you can see here, branching allows us to effectively work on multiple concurrent tasks.&lt;/div&gt;
&lt;/div&gt;
&lt;article class=&quot;Post-column&quot; style=&quot;border: 0px; margin: 0px; padding: 60px 0px; vertical-align: baseline;&quot;&gt;&lt;h1 style=&quot;background-color: #b9e0a5; border-radius: 4px 4px 0px 0px; border: 0px; color: #333333; font-size: 16.003px; margin: 0px 0px 1em; padding: 8px 0px; position: relative; text-align: center; vertical-align: baseline;&quot;&gt;
Column 「A successful Git branching model」&lt;/h1&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
We highly recommend that you check out the article &quot;A successful Git branching model&quot; at&amp;nbsp;&lt;a href=&quot;http://nvie.com/posts/a-successful-git-branching-model/&quot; style=&quot;border: 0px; color: #009999; cursor: pointer; margin: 0px; outline: none; padding: 0px; text-decoration-line: none; vertical-align: baseline;&quot; target=&quot;_blank&quot;&gt;http://nvie.com/posts/a-successful-git-branching-model/&lt;/a&gt;. It covers one of the most popular approaches for managing Git branching workflow.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The article suggests that we maintain four types of branches, each with different roles.&lt;/div&gt;
&lt;ul style=&quot;border: 0px; list-style: none; margin: 0px 0px 2em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Main branch&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Feature branch (topic branch)&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Release branch&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Hot fix branch&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;Mg-b40 Text-center&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;img alt=&quot;Branch model at Git&quot; src=&quot;https://backlogtool.com/git-tutorial/en/img/post/stepup/capture_stepup1_5_6.png&quot; style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;background: none 0px 2px no-repeat scroll rgb(185, 224, 165); border-radius: 4px; border: 0px; color: #333333; font-size: 14.04px; line-height: 1.5; margin: 0px 0px 0.5em; padding: 5px 10px; vertical-align: baseline;&quot;&gt;
Main branch&lt;/h2&gt;
&lt;div class=&quot;Item&quot; style=&quot;border: 0px; margin: 0px; padding: 10px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The main branch consists of the master and develop branches.&lt;/div&gt;
&lt;ul class=&quot;Mg-b40&quot; style=&quot;border: 0px; list-style: none; margin: 0px 0px 2em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Master&lt;/b&gt;&lt;br /&gt;Codebase residing in the master branch is considered to be production-ready. When it is ready for a specific release, the latest commit will be given a release tag.&lt;/li&gt;
&lt;li style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; list-style-type: disc; margin: 0px 0px 0.5em 2em; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Develop&lt;/b&gt;&lt;br /&gt;Codebase residing in the develop branch is used in your team&#39;s day to day development. This is where all new features are merged to, waiting to be deployed in upcoming releases. This branch is very much like the integration branch that we have described earlier in this section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background: none 0px 2px no-repeat scroll rgb(185, 224, 165); border-radius: 4px; border: 0px; color: #333333; font-size: 14.04px; line-height: 1.5; margin: 0px 0px 0.5em; padding: 5px 10px; vertical-align: baseline;&quot;&gt;
Feature branch&lt;/h2&gt;
&lt;div class=&quot;Item&quot; style=&quot;border: 0px; margin: 0px; padding: 10px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The feature branch works like a topic branch which we have covered earlier.&lt;/div&gt;
&lt;div class=&quot;Mg-b40&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
When you plan to start working on a new feature/bug fix, you would want to create a feature branch. A feature branch would normally be created off a develop branch. This feature branch can reside in your local machine throughout the entire development lifecycle of the feature.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
You should push this branch up to the remote repository whenever you are ready to merge the change set with the develop branch.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background: none 0px 2px no-repeat scroll rgb(185, 224, 165); border-radius: 4px; border: 0px; color: #333333; font-size: 14.04px; line-height: 1.5; margin: 0px 0px 0.5em; padding: 5px 10px; vertical-align: baseline;&quot;&gt;
Release branch&lt;/h2&gt;
&lt;div class=&quot;Item&quot; style=&quot;border: 0px; margin: 0px; padding: 10px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
When you plan to roll out a new release, you would want to create a release branch. A release branch helps you to prepare and ensure that the new features are running correctly.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
By convention, release branch names normally start with the prefix &quot;release-&quot;.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The release branch is typically created off the develop branch when it becomes close to being production-ready.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Only bug fix and release related issues should be addressed on this branch. Having this branch would allow other team members to continue pushing new features to the develop branch without interrupting the release workflow.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
When you are ready to release, merge the release branch with the master branch and tag a release number to the newly created merge commit.&lt;/div&gt;
&lt;div class=&quot;Mg-b40&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
You would also want to merge the release branch into the develop branch, so that both the master and develop branches receive the latest change/bug fix from the release branch.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background: none 0px 2px no-repeat scroll rgb(185, 224, 165); border-radius: 4px; border: 0px; color: #333333; font-size: 14.04px; line-height: 1.5; margin: 0px 0px 0.5em; padding: 5px 10px; vertical-align: baseline;&quot;&gt;
Hot fix branch&lt;/h2&gt;
&lt;div class=&quot;Item&quot; style=&quot;border: 0px; margin: 0px; padding: 10px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
When you need to add an important fix to your production codebase quickly, you would want to create a Hot fix branch off the master branch.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
By convention, hot fix branch names normally start with the prefix &quot;hotfix-&quot;.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The advantage of a hot fix branch is that it allows you to quickly issue a patch and have the change merged with the master branch without having to wait for the next release.&lt;/div&gt;
&lt;div class=&quot;Mg-b60&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
A hot fix branch should be merged with the develop branch as well.&lt;/div&gt;
&lt;div class=&quot;Mg-b60&quot; style=&quot;border: 0px; color: #333333; font-size: 16.003px; line-height: 1.7; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;https://backlogtool.com/git-tutorial/en/stepup/stepup1_5.html&quot; target=&quot;_blank&quot;&gt;Original&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/3258509892868041708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/10/a-successful-git-branching-model.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3258509892868041708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3258509892868041708'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/10/a-successful-git-branching-model.html' title='A successful Git branching model'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-4199911517711492445</id><published>2017-10-06T06:27:00.004-07:00</published><updated>2017-10-06T06:29:43.820-07:00</updated><title type='text'>JSONPlaceholder</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;link href=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/github.min.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;
    &lt;script id=&quot;twitter-wjs&quot; src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/widgets.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script async=&quot;&quot; src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/analytics.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script id=&quot;facebook-jssdk&quot; src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/sdk.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/highlight.min.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script&gt;hljs.initHighlightingOnLoad();&lt;/script&gt;
    &lt;link href=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
    &lt;link href=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/font-awesome.min.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;

    &lt;script async=&quot;&quot; defer=&quot;&quot; gapi_processed=&quot;true&quot; src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/platform.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/button.b5276da659efda6dff11c91b8160a531.js.Без названия&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;style type=&quot;text/css&quot;&gt;.fb_hidden {
        position: absolute;
        top: -10000px;
        z-index: 10001
    }

    .fb_reposition {
        overflow: hidden;
        position: relative
    }

    .fb_invisible {
        display: none
    }

    .fb_reset {
        background: none;
        border: 0;
        border-spacing: 0;
        color: #000;
        cursor: auto;
        direction: ltr;
        font-family: &quot;lucida grande&quot;, tahoma, verdana, arial, sans-serif;
        font-size: 11px;
        font-style: normal;
        font-variant: normal;
        font-weight: normal;
        letter-spacing: normal;
        line-height: 1;
        margin: 0;
        overflow: visible;
        padding: 0;
        text-align: left;
        text-decoration: none;
        text-indent: 0;
        text-shadow: none;
        text-transform: none;
        visibility: visible;
        white-space: normal;
        word-spacing: normal
    }

    .fb_reset &gt; div {
        overflow: hidden
    }

    .fb_link img {
        border: none
    }

    @keyframes fb_transform {
        from {
            opacity: 0;
            transform: scale(.95)
        }
        to {
            opacity: 1;
            transform: scale(1)
        }
    }

    .fb_animate {
        animation: fb_transform .3s forwards
    }

    .fb_dialog {
        background: rgba(82, 82, 82, .7);
        position: absolute;
        top: -10000px;
        z-index: 10001
    }

    .fb_reset .fb_dialog_legacy {
        overflow: visible
    }

    .fb_dialog_advanced {
        padding: 10px;
        -moz-border-radius: 8px;
        -webkit-border-radius: 8px;
        border-radius: 8px
    }

    .fb_dialog_content {
        background: #fff;
        color: #333
    }

    .fb_dialog_close_icon {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/yq/r/IE9JII6Z1Ys.png) no-repeat scroll 0 0 transparent;
        cursor: pointer;
        display: block;
        height: 15px;
        position: absolute;
        right: 18px;
        top: 17px;
        width: 15px
    }

    .fb_dialog_mobile .fb_dialog_close_icon {
        top: 5px;
        left: 5px;
        right: auto
    }

    .fb_dialog_padding {
        background-color: transparent;
        position: absolute;
        width: 1px;
        z-index: -1
    }

    .fb_dialog_close_icon:hover {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/yq/r/IE9JII6Z1Ys.png) no-repeat scroll 0 -15px transparent
    }

    .fb_dialog_close_icon:active {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/yq/r/IE9JII6Z1Ys.png) no-repeat scroll 0 -30px transparent
    }

    .fb_dialog_loader {
        background-color: #f6f7f9;
        border: 1px solid #606060;
        font-size: 24px;
        padding: 20px
    }

    .fb_dialog_top_left, .fb_dialog_top_right, .fb_dialog_bottom_left, .fb_dialog_bottom_right {
        height: 10px;
        width: 10px;
        overflow: hidden;
        position: absolute
    }

    .fb_dialog_top_left {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/ye/r/8YeTNIlTZjm.png) no-repeat 0 0;
        left: -10px;
        top: -10px
    }

    .fb_dialog_top_right {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/ye/r/8YeTNIlTZjm.png) no-repeat 0 -10px;
        right: -10px;
        top: -10px
    }

    .fb_dialog_bottom_left {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/ye/r/8YeTNIlTZjm.png) no-repeat 0 -20px;
        bottom: -10px;
        left: -10px
    }

    .fb_dialog_bottom_right {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/ye/r/8YeTNIlTZjm.png) no-repeat 0 -30px;
        right: -10px;
        bottom: -10px
    }

    .fb_dialog_vert_left, .fb_dialog_vert_right, .fb_dialog_horiz_top, .fb_dialog_horiz_bottom {
        position: absolute;
        background: #525252;
        filter: alpha(opacity=70);
        opacity: .7
    }

    .fb_dialog_vert_left, .fb_dialog_vert_right {
        width: 10px;
        height: 100%
    }

    .fb_dialog_vert_left {
        margin-left: -10px
    }

    .fb_dialog_vert_right {
        right: 0;
        margin-right: -10px
    }

    .fb_dialog_horiz_top, .fb_dialog_horiz_bottom {
        width: 100%;
        height: 10px
    }

    .fb_dialog_horiz_top {
        margin-top: -10px
    }

    .fb_dialog_horiz_bottom {
        bottom: 0;
        margin-bottom: -10px
    }

    .fb_dialog_iframe {
        line-height: 0
    }

    .fb_dialog_content .dialog_title {
        background: #6d84b4;
        border: 1px solid #365899;
        color: #fff;
        font-size: 14px;
        font-weight: bold;
        margin: 0
    }

    .fb_dialog_content .dialog_title &gt; span {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/yd/r/Cou7n-nqK52.gif) no-repeat 5px 50%;
        float: left;
        padding: 5px 0 7px 26px
    }

    body.fb_hidden {
        -webkit-transform: none;
        height: 100%;
        margin: 0;
        overflow: visible;
        position: absolute;
        top: -10000px;
        left: 0;
        width: 100%
    }

    .fb_dialog.fb_dialog_mobile.loading {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/ya/r/3rhSv5V8j3o.gif) white no-repeat 50% 50%;
        min-height: 100%;
        min-width: 100%;
        overflow: hidden;
        position: absolute;
        top: 0;
        z-index: 10001
    }

    .fb_dialog.fb_dialog_mobile.loading.centered {
        width: auto;
        height: auto;
        min-height: initial;
        min-width: initial;
        background: none
    }

    .fb_dialog.fb_dialog_mobile.loading.centered #fb_dialog_loader_spinner {
        width: 100%
    }

    .fb_dialog.fb_dialog_mobile.loading.centered .fb_dialog_content {
        background: none
    }

    .loading.centered #fb_dialog_loader_close {
        color: #fff;
        display: block;
        padding-top: 20px;
        clear: both;
        font-size: 18px
    }

    #fb-root #fb_dialog_ipad_overlay {
        background: rgba(0, 0, 0, .45);
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        top: 0;
        width: 100%;
        min-height: 100%;
        z-index: 10000
    }

    #fb-root #fb_dialog_ipad_overlay.hidden {
        display: none
    }

    .fb_dialog.fb_dialog_mobile.loading iframe {
        visibility: hidden
    }

    .fb_dialog_content .dialog_header {
        -webkit-box-shadow: white 0 1px 1px -1px inset;
        background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#738ABA), to(#2C4987));
        border-bottom: 1px solid;
        border-color: #1d4088;
        color: #fff;
        font: 14px Helvetica, sans-serif;
        font-weight: bold;
        text-overflow: ellipsis;
        text-shadow: rgba(0, 30, 84, .296875) 0 -1px 0;
        vertical-align: middle;
        white-space: nowrap
    }

    .fb_dialog_content .dialog_header table {
        -webkit-font-smoothing: subpixel-antialiased;
        height: 43px;
        width: 100%
    }

    .fb_dialog_content .dialog_header td.header_left {
        font-size: 12px;
        padding-left: 5px;
        vertical-align: middle;
        width: 60px
    }

    .fb_dialog_content .dialog_header td.header_right {
        font-size: 12px;
        padding-right: 5px;
        vertical-align: middle;
        width: 60px
    }

    .fb_dialog_content .touchable_button {
        background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#4966A6), color-stop(.5, #355492), to(#2A4887));
        border: 1px solid #29487d;
        -webkit-background-clip: padding-box;
        -webkit-border-radius: 3px;
        -webkit-box-shadow: rgba(0, 0, 0, .117188) 0 1px 1px inset, rgba(255, 255, 255, .167969) 0 1px 0;
        display: inline-block;
        margin-top: 3px;
        max-width: 85px;
        line-height: 18px;
        padding: 4px 12px;
        position: relative
    }

    .fb_dialog_content .dialog_header .touchable_button input {
        border: none;
        background: none;
        color: #fff;
        font: 12px Helvetica, sans-serif;
        font-weight: bold;
        margin: 2px -12px;
        padding: 2px 6px 3px 6px;
        text-shadow: rgba(0, 30, 84, .296875) 0 -1px 0
    }

    .fb_dialog_content .dialog_header .header_center {
        color: #fff;
        font-size: 16px;
        font-weight: bold;
        line-height: 18px;
        text-align: center;
        vertical-align: middle
    }

    .fb_dialog_content .dialog_content {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/y9/r/jKEcVPZFk-2.gif) no-repeat 50% 50%;
        border: 1px solid #555;
        border-bottom: 0;
        border-top: 0;
        height: 150px
    }

    .fb_dialog_content .dialog_footer {
        background: #f6f7f9;
        border: 1px solid #555;
        border-top-color: #ccc;
        height: 40px
    }

    #fb_dialog_loader_close {
        float: left
    }

    .fb_dialog.fb_dialog_mobile .fb_dialog_close_button {
        text-shadow: rgba(0, 30, 84, .296875) 0 -1px 0
    }

    .fb_dialog.fb_dialog_mobile .fb_dialog_close_icon {
        visibility: hidden
    }

    #fb_dialog_loader_spinner {
        animation: rotateSpinner 1.2s linear infinite;
        background-color: transparent;
        background-image: url(https://static.xx.fbcdn.net/rsrc.php/v3/yD/r/t-wz8gw1xG1.png);
        background-repeat: no-repeat;
        background-position: 50% 50%;
        height: 24px;
        width: 24px
    }

    @keyframes rotateSpinner {
        0% {
            transform: rotate(0deg)
        }
        100% {
            transform: rotate(360deg)
        }
    }

    .fb_iframe_widget {
        display: inline-block;
        position: relative
    }

    .fb_iframe_widget span {
        display: inline-block;
        position: relative;
        text-align: justify
    }

    .fb_iframe_widget iframe {
        position: absolute
    }

    .fb_iframe_widget_fluid_desktop, .fb_iframe_widget_fluid_desktop span, .fb_iframe_widget_fluid_desktop iframe {
        max-width: 100%
    }

    .fb_iframe_widget_fluid_desktop iframe {
        min-width: 220px;
        position: relative
    }

    .fb_iframe_widget_lift {
        z-index: 1
    }

    .fb_hide_iframes iframe {
        position: relative;
        left: -10000px
    }

    .fb_iframe_widget_loader {
        position: relative;
        display: inline-block
    }

    .fb_iframe_widget_fluid {
        display: inline
    }

    .fb_iframe_widget_fluid span {
        width: 100%
    }

    .fb_iframe_widget_loader iframe {
        min-height: 32px;
        z-index: 2;
        zoom: 1
    }

    .fb_iframe_widget_loader .FB_Loader {
        background: url(https://static.xx.fbcdn.net/rsrc.php/v3/y9/r/jKEcVPZFk-2.gif) no-repeat;
        height: 32px;
        width: 32px;
        margin-left: -16px;
        position: absolute;
        left: 50%;
        z-index: 4
    }&lt;/style&gt;

&lt;br /&gt;
&lt;div class=&quot;narrow&quot;&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/AVvXsEjB3IayUicRN6Kx4YSui5lLSBrbHg_hUPubWX8MSD2XGSFizswYZQ3N52r_uwrN01vP5PSedmDtmMJ37qgns1PmQ3dwvRUhhuOTkvvmAljlA6XFS-lmT3sxi_OhzXmRwz-39OZ_vR8V-R8V/s1600/json.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;338&quot; data-original-width=&quot;562&quot; height=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB3IayUicRN6Kx4YSui5lLSBrbHg_hUPubWX8MSD2XGSFizswYZQ3N52r_uwrN01vP5PSedmDtmMJ37qgns1PmQ3dwvRUhhuOTkvvmAljlA6XFS-lmT3sxi_OhzXmRwz-39OZ_vR8V-R8V/s640/json.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;
&lt;br /&gt;&lt;/h2&gt;
JSONPlaceholder is a free online REST service that you can use whenever you need some fake data.
    &lt;br /&gt;
It&#39;s great for tutorials, faking a server, sharing code examples, ...
    &lt;br /&gt;
&lt;h2&gt;
Example&lt;/h2&gt;
Run this code in a console or from anywhere (CORS and JSONP supported).&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;javascript hljs&quot; id=&quot;example&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;var&lt;/span&gt; root = &lt;span class=&quot;hljs-string&quot;&gt;&#39;https://jsonplaceholder.typicode.com&#39;&lt;/span&gt;;

$.ajax({
  url: root + &lt;span class=&quot;hljs-string&quot;&gt;&#39;/posts/1&#39;&lt;/span&gt;,
  method: &lt;span class=&quot;hljs-string&quot;&gt;&#39;GET&#39;&lt;/span&gt;
}).then(&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(data)&lt;/span&gt; &lt;/span&gt;{
  &lt;span class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(data);
});&lt;/code&gt;&lt;/pre&gt;
Response example
    &lt;br /&gt;
&lt;div class=&quot;json hljs&quot; id=&quot;result&quot;&gt;
{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;&lt;span class=&quot;hljs-attribute&quot;&gt;userId&lt;/span&gt;&quot;: &lt;span class=&quot;hljs-value&quot;&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;&lt;span class=&quot;hljs-attribute&quot;&gt;id&lt;/span&gt;&quot;:
        &lt;span class=&quot;hljs-value&quot;&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;&lt;span class=&quot;hljs-attribute&quot;&gt;title&lt;/span&gt;&quot;: &lt;span class=&quot;hljs-value&quot;&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;sunt aut facere repellat provident occaecati excepturi optio reprehenderit&quot;&lt;/span&gt;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;&lt;span class=&quot;hljs-attribute&quot;&gt;body&lt;/span&gt;&quot;: &lt;span class=&quot;hljs-value&quot;&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;quia et suscipit suscipit recusandae consequuntur expedita et cum reprehenderit molestiae ut ut quas totam nostrum rerum est autem sunt rem eveniet architecto&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;}
    &lt;/div&gt;
&lt;h2&gt;
Resources&lt;/h2&gt;
Inspired by common use cases.
    &lt;br /&gt;
&lt;table&gt;
        &lt;tbody&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts&quot;&gt;/posts&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;100 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/comments&quot;&gt;/comments&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;500 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/albums&quot;&gt;/albums&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;100 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/photos&quot;&gt;/photos&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;5000 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/todos&quot;&gt;/todos&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;200 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/users&quot;&gt;/users&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;10 items&lt;/td&gt;
        &lt;/tr&gt;
&lt;/tbody&gt;
    &lt;/table&gt;
&lt;h2&gt;
Routes&lt;/h2&gt;
All HTTP verbs are supported.&lt;br /&gt;
        View usage &lt;a href=&quot;https://github.com/typicode/jsonplaceholder#how-to&quot;&gt;examples&lt;/a&gt;.
    &lt;br /&gt;
&lt;table&gt;
        &lt;tbody&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;GET&lt;/td&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts&quot;&gt;/posts&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;GET&lt;/td&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts/1&quot;&gt;/posts/1&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;GET&lt;/td&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts/1/comments&quot;&gt;/posts/1/comments&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;GET&lt;/td&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/comments?postId=1&quot;&gt;/comments?postId=1&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;GET&lt;/td&gt;
            &lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts?userId=1&quot;&gt;/posts?userId=1&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;POST&lt;/td&gt;
            &lt;td&gt;/posts&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;PUT&lt;/td&gt;
            &lt;td&gt;/posts/1&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;PATCH&lt;/td&gt;
            &lt;td&gt;/posts/1&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;td class=&quot;verb&quot;&gt;DELETE&lt;/td&gt;
            &lt;td&gt;/posts/1&lt;/td&gt;
        &lt;/tr&gt;
&lt;/tbody&gt;
    &lt;/table&gt;
&lt;/div&gt;
&lt;script src=&quot;https://jsonplaceholder.firebaseapp.com/jsonplaceholder_files/jquery-2.1.3.min.js.Без названия&quot;&gt;&lt;/script&gt;
&lt;script&gt;
    // Use http or https based on location.protocol
    var exampleText = $(&#39;#example&#39;).text()
    $(&#39;#example&#39;).text(exampleText.replace(&#39;http:&#39;, location.protocol))

    // Highlight result element
    $(&#39;#result&#39;).each(function (i, block) {
        hljs.highlightBlock(block);
    });

    // Run example
    $(&#39;#run&#39;).click(function () {
        var root = location.protocol + &#39;//jsonplaceholder.typicode.com&#39;;
        $.ajax({
            url: root + &#39;/posts/1&#39;,
            method: &#39;GET&#39;
        }).then(function (data) {
            var str = JSON.stringify(data, null, &#39;\t&#39;)
            $(&#39;#result&#39;).html(
                str.replace(/\n/g, &#39;&lt;br/&gt;&#39;)
                    .replace(/\\n/g, &#39; &#39;)
                    .replace(/\t/g, &#39;&amp;nbsp;&amp;nbsp;&#39;)
            );

            $(&#39;#result&#39;).each(function (i, block) {
                hljs.highlightBlock(block);
            });
        });
    });

    // Tell that jQuery can be used in console
    console.log(&#39;You can use jQuery functions&#39;)
&lt;/script&gt;


&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/4199911517711492445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/10/jsonplaceholder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/4199911517711492445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/4199911517711492445'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/10/jsonplaceholder.html' title='JSONPlaceholder'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB3IayUicRN6Kx4YSui5lLSBrbHg_hUPubWX8MSD2XGSFizswYZQ3N52r_uwrN01vP5PSedmDtmMJ37qgns1PmQ3dwvRUhhuOTkvvmAljlA6XFS-lmT3sxi_OhzXmRwz-39OZ_vR8V-R8V/s72-c/json.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-1064516360025561493</id><published>2017-10-06T03:37:00.003-07:00</published><updated>2017-10-06T05:42:43.249-07:00</updated><title type='text'>RSA</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;head&gt;
    
    &lt;title&gt;RSA Key Generator&lt;/title&gt;
    &lt;!--&lt;base id=&quot;basetag&quot; href=&quot;/jsencrypt/&quot;&gt;--&gt;
    &lt;base href=&quot;.&quot;&gt;&lt;/base&gt;
    &lt;!--[if IE]&gt;
    &lt;script type=&#39;text/javascript&#39;&gt;
        (function () {
            var tag = document.getElementById(&#39;basetag&#39;);
            tag.href = location.protocol + &#39;//&#39; + location.host + &#39;/jsencrypt/&#39;;
        }());
    &lt;/script&gt;
    &lt;![endif]--&gt;

    
    &lt;script src=&quot;https://rsagenerator.firebaseapp.com/rsa_files/ca-pub-1902035200208763.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script async=&quot;&quot; src=&quot;https://rsagenerator.firebaseapp.com/rsa_files/ga.js.Без названия&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://rsagenerator.firebaseapp.com/rsa_files/jquery.min.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://rsagenerator.firebaseapp.com/rsa_files/bootstrap.min.js.Без названия&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://rsagenerator.firebaseapp.com/rsa_files/jsencrypt.js.Без названия&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;!--&lt;script type=&quot;text/javascript&quot;&gt;--&gt;
        &lt;!--var _gaq = _gaq || [];--&gt;
        &lt;!--_gaq.push([&#39;_setAccount&#39;, &#39;UA-450670-2&#39;]);--&gt;
        &lt;!--_gaq.push([&#39;_trackPageview&#39;]);--&gt;
        &lt;!--(function () {--&gt;
            &lt;!--var ga = document.createElement(&#39;script&#39;);--&gt;
            &lt;!--ga.type = &#39;text/javascript&#39;;--&gt;
            &lt;!--ga.async = true;--&gt;
            &lt;!--ga.src = (&#39;https:&#39; == document.location.protocol ? &#39;https://ssl&#39; : &#39;http://www&#39;) + &#39;.google-analytics.com/ga.js&#39;;--&gt;
            &lt;!--var s = document.getElementsByTagName(&#39;script&#39;)[0];--&gt;
            &lt;!--s.parentNode.insertBefore(ga, s);--&gt;
        &lt;!--})();--&gt;
    &lt;!--&lt;/script&gt;--&gt;

&lt;/head&gt;

        &lt;br /&gt;
&lt;div class=&quot;panel panel-default&quot;&gt;
&lt;div class=&quot;panel-heading&quot;&gt;
&lt;h1&gt;
RSA Key Generator&lt;/h1&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/AVvXsEhOWoHAP1c4AgMLFTXngw4xQ6l7Omxn0BrCUO3SlNnQzy0C3NPy3uuPyDiL1vuq8FewA33ypjRZIFmrsEbLcTYj6aI5LGcHw77clYS_aLPDHeVk5NDRIX_w9qVv4oIquqK28lXab9d3q1zy/s1600/rsa.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;931&quot; data-original-width=&quot;1087&quot; height=&quot;547&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOWoHAP1c4AgMLFTXngw4xQ6l7Omxn0BrCUO3SlNnQzy0C3NPy3uuPyDiL1vuq8FewA33ypjRZIFmrsEbLcTYj6aI5LGcHw77clYS_aLPDHeVk5NDRIX_w9qVv4oIquqK28lXab9d3q1zy/s640/rsa.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;RSA&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;b style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;Rivest–Shamir–Adleman&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;) is one of the first practical&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Public-key_cryptography&quot; style=&quot;background: none rgb(255, 255, 255); color: #0b0080; font-family: sans-serif; font-size: 14px; text-decoration-line: none;&quot; title=&quot;Public-key cryptography&quot;&gt;public-key cryptosystems&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&amp;nbsp;and is widely used for secure data transmission.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel-body&quot;&gt;
&lt;div class=&quot;col-lg-2&quot;&gt;
&lt;div class=&quot;btn-group&quot;&gt;
&lt;div class=&quot;input-group&quot;&gt;
&lt;span class=&quot;input-group-addon&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;input-group-addon&quot;&gt;Key Size&lt;/span&gt;
                            &lt;button class=&quot;btn btn-default dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; data-value=&quot;512&quot; id=&quot;key-size&quot; type=&quot;button&quot;&gt;512 bit &lt;span class=&quot;caret&quot;&gt;&lt;/span&gt;&lt;/button&gt;
                            &lt;br /&gt;
&lt;ul class=&quot;dropdown-menu&quot;&gt;
&lt;li&gt;&lt;a class=&quot;change-key-size&quot; data-value=&quot;512&quot; href=&quot;http://travistidwell.com/jsencrypt/#&quot;&gt;512 bit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;change-key-size&quot; data-value=&quot;1024&quot; href=&quot;http://travistidwell.com/jsencrypt/#&quot;&gt;1024 bit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;change-key-size&quot; data-value=&quot;2048&quot; href=&quot;http://travistidwell.com/jsencrypt/#&quot;&gt;2048 bit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;change-key-size&quot; data-value=&quot;4096&quot; href=&quot;http://travistidwell.com/jsencrypt/#&quot;&gt;4096 bit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;button class=&quot;btn btn-primary&quot; id=&quot;generate&quot;&gt;Generate New Keys&lt;/button&gt;
                    &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;small id=&quot;time-report&quot;&gt;Generated in 24 ms&lt;/small&gt;&lt;/i&gt;
                    &lt;br /&gt;
&lt;br /&gt;
&lt;!--&lt;label for=&quot;async-ck&quot;&gt;&lt;input id=&quot;async-ck&quot; type=&quot;checkbox&quot;&gt; Async&lt;/label&gt;--&gt;
                &lt;/div&gt;
&lt;div class=&quot;col-lg-10&quot;&gt;
&lt;div class=&quot;row&quot;&gt;
&lt;div class=&quot;col-lg-6&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;label for=&quot;privkey&quot;&gt;Private Key&lt;/label&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;small&gt;&lt;textarea id=&quot;privkey&quot; rows=&quot;15&quot; style=&quot;width: 100%;&quot;&gt;&lt;/textarea&gt;
                            &lt;/small&gt;
                        &lt;br /&gt;&lt;label for=&quot;pubkey&quot;&gt;Public Key&lt;/label&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div class=&quot;col-lg-6&quot;&gt;
&lt;small&gt;&lt;textarea id=&quot;pubkey&quot; readonly=&quot;readonly&quot; rows=&quot;15&quot; style=&quot;width: 100%;&quot;&gt;&lt;/textarea&gt;
                            &lt;/small&gt;
                        &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;
&lt;div class=&quot;panel panel-default&quot;&gt;
&lt;div class=&quot;panel-heading&quot;&gt;
&lt;h3&gt;
RSA Encryption Test&lt;/h3&gt;
&lt;/div&gt;
&lt;div class=&quot;panel-body&quot;&gt;
&lt;div class=&quot;col-lg-5&quot;&gt;
&lt;label for=&quot;input&quot;&gt;Text to encrypt:&lt;/label&gt;&lt;br /&gt;
&lt;textarea id=&quot;input&quot; name=&quot;input&quot; rows=&quot;4&quot; style=&quot;width: 100%;&quot;&gt;This is a test!&lt;/textarea&gt;
                &lt;/div&gt;
&lt;div class=&quot;col-lg-2&quot;&gt;
&lt;br /&gt;
&lt;button class=&quot;btn btn-primary&quot; id=&quot;execute&quot;&gt;Encrypt / Decrypt&lt;/button&gt;
                &lt;/div&gt;
&lt;div class=&quot;col-lg-5&quot;&gt;
&lt;label for=&quot;crypted&quot;&gt;Encrypted:&lt;/label&gt;&lt;br /&gt;
&lt;textarea id=&quot;crypted&quot; name=&quot;crypted&quot; rows=&quot;4&quot; style=&quot;width: 100%;&quot;&gt;&lt;/textarea&gt;
                &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
        $(function () {

            //Change the key size value for new keys
            $(&quot;.change-key-size&quot;).each(function (index, value) {
                var el = $(value);
                var keySize = el.attr(&#39;data-value&#39;);
                el.click(function (e) {
                    var button = $(&#39;#key-size&#39;);
                    button.attr(&#39;data-value&#39;, keySize);
                    button.html(keySize + &#39; bit &lt;span class=&quot;caret&quot;&gt;&lt;/span&gt;&#39;);
                    e.preventDefault();
                });
            });

            // Execute when they click the button.
            $(&#39;#execute&#39;).click(function () {

                // Create the encryption object.
                var crypt = new JSEncrypt();

                // Set the private.
                crypt.setPrivateKey($(&#39;#privkey&#39;).val());
                //return;
                // If no public key is set then set it here...
                var pubkey = $(&#39;#pubkey&#39;).val();
                if (!pubkey) {
                    $(&#39;#pubkey&#39;).val(crypt.getPublicKey());
                }

                // Get the input and crypted values.
                var input = $(&#39;#input&#39;).val();
                var crypted = $(&#39;#crypted&#39;).val();

                // Alternate the values.
                if (input) {
                    $(&#39;#crypted&#39;).val(crypt.encrypt(input));
                    $(&#39;#input&#39;).val(&#39;&#39;);
                }
                else if (crypted) {
                    var decrypted = crypt.decrypt(crypted);
                    if (!decrypted)
                        decrypted = &#39;This is a test!&#39;;
                    $(&#39;#input&#39;).val(decrypted);
                    $(&#39;#crypted&#39;).val(&#39;&#39;);
                }
            });

            var generateKeys = function () {
                var sKeySize = $(&#39;#key-size&#39;).attr(&#39;data-value&#39;);
                var keySize = parseInt(sKeySize);
                var crypt = new JSEncrypt({default_key_size: keySize});
                var async = $(&#39;#async-ck&#39;).is(&#39;:checked&#39;);
                var dt = new Date();
                var time = -(dt.getTime());
                if (async) {
                    $(&#39;#time-report&#39;).text(&#39;.&#39;);
                    var load = setInterval(function () {
                        var text = $(&#39;#time-report&#39;).text();
                        $(&#39;#time-report&#39;).text(text + &#39;.&#39;);
                    }, 500);
                    crypt.getKey(function () {
                        clearInterval(load);
                        dt = new Date();
                        time += (dt.getTime());
                        $(&#39;#time-report&#39;).text(&#39;Generated in &#39; + time + &#39; ms&#39;);
                        $(&#39;#privkey&#39;).val(crypt.getPrivateKey());
                        $(&#39;#pubkey&#39;).val(crypt.getPublicKey());
                    });
                    return;
                }
                crypt.getKey();
                dt = new Date();
                time += (dt.getTime());
                $(&#39;#time-report&#39;).text(&#39;Generated in &#39; + time + &#39; ms&#39;);
                $(&#39;#privkey&#39;).val(crypt.getPrivateKey());
                $(&#39;#pubkey&#39;).val(crypt.getPublicKey());
            };

            // If they wish to generate new keys.
            $(&#39;#generate&#39;).click(generateKeys);
            generateKeys();
        });
    &lt;/script&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/1064516360025561493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/10/rsa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/1064516360025561493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/1064516360025561493'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/10/rsa.html' title='RSA'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOWoHAP1c4AgMLFTXngw4xQ6l7Omxn0BrCUO3SlNnQzy0C3NPy3uuPyDiL1vuq8FewA33ypjRZIFmrsEbLcTYj6aI5LGcHw77clYS_aLPDHeVk5NDRIX_w9qVv4oIquqK28lXab9d3q1zy/s72-c/rsa.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-9220008445294156357</id><published>2017-09-19T07:54:00.002-07:00</published><updated>2017-09-19T07:54:27.890-07:00</updated><title type='text'>Scrum</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDPGzMa9Sp6dKEUuIjpa9xc4iinZAMopB_jQqCV6pM9IrSGPYUbLRFCSYl5GfmqvTeiJ6LGzKq60cROSa4i0pwV88t2-7B7x5smNcY0fm_zLN5BcIwBKFj5BhtIc6NyAtWjeCUC2uLmgad/s1600/scrum.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;337&quot; data-original-width=&quot;720&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDPGzMa9Sp6dKEUuIjpa9xc4iinZAMopB_jQqCV6pM9IrSGPYUbLRFCSYl5GfmqvTeiJ6LGzKq60cROSa4i0pwV88t2-7B7x5smNcY0fm_zLN5BcIwBKFj5BhtIc6NyAtWjeCUC2uLmgad/s640/scrum.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;Scrum&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&amp;nbsp;is a framework for managing&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Software_development&quot; style=&quot;background: none rgb(255, 255, 255); color: #0b0080; font-family: sans-serif; font-size: 14px; text-decoration-line: none;&quot; title=&quot;Software development&quot;&gt;software development&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;. It is designed for teams of three to nine developers who: break their work into actions that can be completed within fixed duration cycles (called &quot;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Sprint_(software_development)&quot; style=&quot;background: none rgb(255, 255, 255); color: #0b0080; font-family: sans-serif; font-size: 14px; text-decoration-line: none;&quot; title=&quot;Sprint (software development)&quot;&gt;sprints&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&quot;), track progress and re-plan in daily 15-minute&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Stand-up_meeting&quot; style=&quot;background: none rgb(255, 255, 255); color: #0b0080; font-family: sans-serif; font-size: 14px; text-decoration-line: none;&quot; title=&quot;Stand-up meeting&quot;&gt;stand-up meetings&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;, and collaborate to deliver workable software every sprint.&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&amp;nbsp;Approaches to coordinating the work of multiple scrum teams in larger organizations include&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;Large-Scale Scrum&lt;/i&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;Scrum of Scrums&lt;/i&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;, among others.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;

&lt;iframe allowfullscreen=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;484&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://docs.google.com/presentation/d/e/2PACX-1vRnPe8fofj3U215Q7fGA1MXQvmaiKy8C4tBTZ-xFNIWbNp8c-7YEW_CtPH5zsN-Q6tAQF5U9wjBPRhu/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;810&quot;&gt;&lt;/iframe&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/9220008445294156357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/09/scrum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/9220008445294156357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/9220008445294156357'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/09/scrum.html' title='Scrum'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDPGzMa9Sp6dKEUuIjpa9xc4iinZAMopB_jQqCV6pM9IrSGPYUbLRFCSYl5GfmqvTeiJ6LGzKq60cROSa4i0pwV88t2-7B7x5smNcY0fm_zLN5BcIwBKFj5BhtIc6NyAtWjeCUC2uLmgad/s72-c/scrum.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-4674422361202816468</id><published>2017-09-15T12:30:00.005-07:00</published><updated>2017-09-15T13:33:29.007-07:00</updated><title type='text'>Blockchain</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;

    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/bootstrap.min.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/bootstrap-theme.min.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/bootstrap-horizon.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/ladda-themeless.min.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/ie10-viewport-bug-workaround.css&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://ancipov-cc0d5.firebaseapp.com/blockchain.css&quot;&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/jquery.min.js.download&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/bootstrap.min.js.download&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/spin.min.js.download&quot;&gt;&lt;/script&gt;
    &lt;style type=&quot;text/css&quot;&gt;&lt;/style&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/ladda.min.js.download&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/ie10-viewport-bug-workaround.js.download&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/sha256.js.download&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://ancipov-cc0d5.firebaseapp.com/blockchain.js.download&quot;&gt;&lt;/script&gt;

&lt;h1&gt;SHA256 Hash&lt;/h1&gt;
    &lt;div id=&quot;well1&quot; class=&quot;well&quot;&gt;
        &lt;form class=&quot;form-horizontal&quot;&gt;
            &lt;div class=&quot;form-group&quot;&gt;&lt;label for=&quot;data&quot; class=&quot;col-sm-4 control-label&quot;&gt;Data:&lt;/label&gt;
                &lt;div class=&quot;col-sm-4&quot;&gt;&lt;textarea id=&quot;data&quot; rows=&quot;10&quot; onkeyup=&quot;$(&amp;quot;#hash&amp;quot;).val(sha256())&quot;
                                                 class=&quot;form-control&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;form-group&quot;&gt;&lt;label for=&quot;hash&quot; class=&quot;col-sm-4 control-label&quot;&gt;Hash:&lt;/label&gt;
                &lt;div class=&quot;col-sm-2&quot;&gt;&lt;input id=&quot;hash&quot; type=&quot;text&quot; disabled=&quot;&quot; class=&quot;form-control&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/form&gt;
    &lt;/div&gt;

&lt;script&gt;function getText(block, chain) {
    return $(&#39;#data&#39;).val();
}

$(&quot;#hash&quot;).val(sha256());&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/4674422361202816468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/09/blockchain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/4674422361202816468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/4674422361202816468'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/09/blockchain.html' title='Blockchain'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-2500950376650076399</id><published>2017-09-14T03:03:00.003-07:00</published><updated>2017-09-14T03:07:21.483-07:00</updated><title type='text'>Continuous Integration vs. Continuous Delivery vs. Continuous Deployment</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigxt0enAFRbl4qZupnbqXDLYRrDovHLHkiTN6oHX4fHt7-JE9g6RbTeklu9V7H6Uw8HJahFjqBaLYJXqRiLWVGuFpd4unGzyGtiYj8lvltYIE3WHHGyYvdnD7ehKHmarDusQYitjZRxpsg/s1600/cid.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;676&quot; data-original-width=&quot;1200&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigxt0enAFRbl4qZupnbqXDLYRrDovHLHkiTN6oHX4fHt7-JE9g6RbTeklu9V7H6Uw8HJahFjqBaLYJXqRiLWVGuFpd4unGzyGtiYj8lvltYIE3WHHGyYvdnD7ehKHmarDusQYitjZRxpsg/s640/cid.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.7); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; font-family: &amp;quot;Source Serif Pro&amp;quot;, serif; font-size: 21px; line-height: 32px; margin-bottom: 3.2rem; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.7); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; font-family: &amp;quot;Source Serif Pro&amp;quot;, serif; font-size: 21px; line-height: 32px; margin-bottom: 3.2rem; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 24px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.4em; margin: 30px 0px 10px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous integration&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Developers practicing continuous integration merge their changes back to the main branch as often as possible.&amp;nbsp;The developer&#39;s changes are validated by creating a build and running automated tests against the build.&amp;nbsp;By doing so, you avoid the integration hell that usually happens when people wait for release day to merge their changes into the release branch.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous integration puts a great emphasis on testing automation to check that the application is not broken whenever new commits are&amp;nbsp;integrated into the main branch.&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 24px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.4em; margin: 30px 0px 10px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous delivery&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way.&amp;nbsp;This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
In theory, with continuous delivery, you can decide to release daily, weekly, fortnightly, or whatever suits your business requirements. However, if you truly want to get the benefits of continuous delivery, you should deploy to production as early as possible to make sure that you release small batches, that are easy to troubleshoot in case of a problem.&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 24px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.4em; margin: 30px 0px 10px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous deployment&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous deployment goes one step further than continuous delivery. With this practice, every change that passes all stages of your production pipeline&amp;nbsp;is released to your customers. There&#39;s no human intervention, and only a failed test will prevent a new change to be deployed to production.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: inherit; color: #253858; font-family: LLCircularWeb, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 16px; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.5; margin-bottom: 24px; margin-top: 15px; padding: 0px; vertical-align: baseline; white-space: normal;&quot;&gt;
Continuous deployment is an excellent way to accelerate the feedback loop with your customers and take pressure off the team as there isn&#39;t a&amp;nbsp;&lt;em style=&quot;border: 0px; box-sizing: inherit; font-family: inherit; font-size: inherit; font-stretch: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Release Day&lt;/em&gt;&amp;nbsp;anymore. Developers can focus on building software, and they see their work go live minutes after they&#39;ve finished working on it.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/2500950376650076399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/09/continuous-integration-vs-continuous.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2500950376650076399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2500950376650076399'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/09/continuous-integration-vs-continuous.html' title='Continuous Integration vs. Continuous Delivery vs. Continuous Deployment'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigxt0enAFRbl4qZupnbqXDLYRrDovHLHkiTN6oHX4fHt7-JE9g6RbTeklu9V7H6Uw8HJahFjqBaLYJXqRiLWVGuFpd4unGzyGtiYj8lvltYIE3WHHGyYvdnD7ehKHmarDusQYitjZRxpsg/s72-c/cid.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-534098290868854968</id><published>2017-08-30T02:59:00.001-07:00</published><updated>2017-08-30T03:55:06.075-07:00</updated><title type='text'>Appery.io Binary data in API Express (Generated services)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBGdsbqPtdLAvbj3TSd4xGariG5zlhrjDkPkfNLErncJauQ23NFqM86Yv4nwZu8D4w4UepZYwzQ5NxaMSETKZqKybtV9zpeRvSf5ZFrBVnRemlSZssOobDsCJdzsFIczh6U7c0C3-t6_B5/s1600/fileicon.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;338&quot; data-original-width=&quot;338&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBGdsbqPtdLAvbj3TSd4xGariG5zlhrjDkPkfNLErncJauQ23NFqM86Yv4nwZu8D4w4UepZYwzQ5NxaMSETKZqKybtV9zpeRvSf5ZFrBVnRemlSZssOobDsCJdzsFIczh6U7c0C3-t6_B5/s320/fileicon.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API Express provides powerful and flexible mechanism of working with binary data.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API Express uses JSON format so to work with binary data it is used Base64 format (you can read more about that by following link &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Base64&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://en.wikipedia.org/wiki/Base64&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ) &lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328d-1f17-e1aa-c7b39939c4ee&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;For testing you can use &lt;/span&gt;&lt;a href=&quot;http://www.ancipov.com/2017/08/base64.html&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Base64 Converter&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; to convert ordinary string to string in Base64 format and vise versa.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-weight: 700; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-weight: 700; white-space: pre-wrap;&quot;&gt;Binary data in Generated Services&lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API Express provides embedded support of Binary for Generated services.&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328d-5cbb-be17-b5119fcd307e&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fields with type BLOB in generated services are considered as Binary &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Operations get and list will convert value of this field into Base64 String&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Operations create and update will accept String in Base64 format and API Express will save converted binary into database.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;To understand better how it work let’s consider example&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Relational database has table files with columns &lt;/span&gt;&lt;b style=&quot;font-family: arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;id&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;b style=&quot;font-family: arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;name&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt; and &lt;/span&gt;&lt;b style=&quot;font-family: arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;content &lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt; id - unique identifier of files
 name - file name
 content - file binary content
 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Following DDL scripts can be used for&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; white-space: pre-wrap;&quot;&gt;MySQL&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;b style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;; font-size: 12px;&quot;&gt;CREATE TABLE files &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 12px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;(
  id      INT          NOT NULL auto_increment PRIMARY KEY,
  name    VARCHAR(64) NOT NULL,
  content BLOB         NOT NULL
)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: 11pt; vertical-align: baseline;&quot;&gt;Postgresql&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;; font-size: 12px;&quot;&gt;CREATE TABLE files&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 12px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;(
 id      SERIAL PRIMARY KEY,
 name    VARCHAR(64) NOT NULL,
 content BYTEA        NOT NULL
)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: 11pt; vertical-align: baseline;&quot;&gt;MSSQL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;; font-size: 12px;&quot;&gt;CREATE TABLE files&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 12px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;(
 id      INT PRIMARY KEY IDENTITY,
 name    VARCHAR(64) NOT NULL,
 content VARBINARY    NOT NULL
)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: 11pt; vertical-align: baseline;&quot;&gt;Oracle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;courier new&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 12px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;CREATE TABLE files
(
 id      INT PRIMARY KEY,
 name    VARCHAR(64) NOT NULL,
 content BLOB         NOT NULL
)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot;; font-size: 12px;&quot;&gt;It is assumed that already exist Database Connection to Relational database.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 12px; white-space: pre-wrap;&quot;&gt;To work with table let’s create API Express Generated service&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;img height=&quot;473&quot; src=&quot;https://lh3.googleusercontent.com/IBWeEhzV8FwH2typfStWGM3zS9saOsDUaCLnbikXAjQ4Yx7JwK_OKXCzUVwDq7ooWMS0hmGOFsCNXwJVCtO9oDVlf6T8QSAVNtkOo5RtV252S3aKMZAEn-VDEg_RFGpdxItmNWgz&quot; style=&quot;border: none; font-size: 11pt; transform: rotate(0rad);&quot; width=&quot;624&quot; /&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;On Test page we can check how our services are working&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;div style=&quot;font-family: arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;b&gt;1. Create record in files table.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;name of our file will be &lt;/span&gt;&lt;b style=&quot;font-size: 14.6667px;&quot;&gt;test.txt&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;file will contain only sentence &lt;b&gt;test message&lt;/b&gt; in Base64 format it is &lt;b&gt;IHRlc3QgbWVzc2FnZQ==&lt;/b&gt;

Request payload
{
    &quot;name&quot;: &quot;test.txt&quot;,
    &quot;content&quot;: &quot;IHRlc3QgbWVzc2FnZQ==&quot;
}

Response of operation create
{
    &quot;content&quot;: &quot;IHRlc3QgbWVzc2FnZQ==&quot;,
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;test.txt&quot;
}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;img height=&quot;721&quot; src=&quot;https://lh3.googleusercontent.com/5QNWCxBz49OB5aTxzzIb_CXFIkKwD439Ejzti8eZ_9pJDmRa7SEAo0qe038XEEZZpR8i5EYYR8Ux6tGTiNNtleW1ytBgJOEriD5Co6j5Q8CC4Vh_e9VJMjHDbVOjR82PUnKO2Lqi&quot; style=&quot;border: none; font-size: 11pt; text-indent: 36pt; transform: rotate(0rad);&quot; width=&quot;624&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
If to take a look on this record in database client we would see that in database sentence &lt;b style=&quot;font-family: arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;test message&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt; was saved&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-indent: 48px;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;2. Get record from files table.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;
 Operation find will return just created record if to pass file name test.txt in query 
 {
       &quot;name&quot;: &quot;test.txt&quot;
 }

 Response of operation find is

 [{
     &quot;content&quot;: &quot;IHRlc3QgbWVzc2FnZQ==&quot;,
     &quot;id&quot;: 1,
     &quot;name&quot;: &quot;test.txt&quot;
 }]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 11pt; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: pre-wrap;&quot;&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;&lt;span style=&quot;vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id=&quot;docs-internal-guid-c585c77e-328e-86d1-7b51-2ece99ae8ea4&quot;&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/534098290868854968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-binary-data-in-api-express.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/534098290868854968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/534098290868854968'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-binary-data-in-api-express.html' title='Appery.io Binary data in API Express (Generated services)'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBGdsbqPtdLAvbj3TSd4xGariG5zlhrjDkPkfNLErncJauQ23NFqM86Yv4nwZu8D4w4UepZYwzQ5NxaMSETKZqKybtV9zpeRvSf5ZFrBVnRemlSZssOobDsCJdzsFIczh6U7c0C3-t6_B5/s72-c/fileicon.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-6934503576008799893</id><published>2017-08-29T06:03:00.002-07:00</published><updated>2017-08-29T06:20:39.380-07:00</updated><title type='text'>Base64 Converter</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEjPgzzA9HqgYrl7GWfyhhI-JJ-ufZxmAIK12W-tUNkCiDaFyeHRX1zbiPKPUDUf_ertg7GckqxuBvs6uHdbfxhgAe7EkixNHqu6x0WaBkcQw0TK5JuGmzg5j4tsdS4BEmIShYE80YNk0lEC/s1600/base64.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;806&quot; data-original-width=&quot;806&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPgzzA9HqgYrl7GWfyhhI-JJ-ufZxmAIK12W-tUNkCiDaFyeHRX1zbiPKPUDUf_ertg7GckqxuBvs6uHdbfxhgAe7EkixNHqu6x0WaBkcQw0TK5JuGmzg5j4tsdS4BEmIShYE80YNk0lEC/s320/base64.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.&lt;br /&gt;
&lt;br /&gt;
Each base64 digit represents exactly 6 bits of data.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Base64&quot; target=&quot;_blank&quot;&gt;Base64 Wikipedia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;textarea id=&quot;from&quot; style=&quot;height: 100px; width: 100%;&quot;&gt; &lt;/textarea&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;input console.log=&quot;&quot; onclick=&quot;document.getElementById(&#39;to&#39;).value = btoa(document.getElementById(&#39;from&#39;).value)&quot; type=&quot;button&quot; value=&quot;String to Base64&quot; /&gt;
&lt;input console.log=&quot;&quot; onclick=&quot;document.getElementById(&#39;to&#39;).value = atob(document.getElementById(&#39;from&#39;).value)&quot; type=&quot;button&quot; value=&quot;Base64 to String&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;textarea id=&quot;to&quot; style=&quot;height: 100px; width: 100%;&quot;&gt; &lt;/textarea&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/6934503576008799893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/base64.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6934503576008799893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/6934503576008799893'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/base64.html' title='Base64 Converter'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPgzzA9HqgYrl7GWfyhhI-JJ-ufZxmAIK12W-tUNkCiDaFyeHRX1zbiPKPUDUf_ertg7GckqxuBvs6uHdbfxhgAe7EkixNHqu6x0WaBkcQw0TK5JuGmzg5j4tsdS4BEmIShYE80YNk0lEC/s72-c/base64.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-8972347832567307225</id><published>2017-08-28T05:35:00.001-07:00</published><updated>2017-09-05T03:28:18.298-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="components"/><title type='text'>LDAP component</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&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/AVvXsEjUXlFBAA-jTMwyrusZlb3hIOGOzb9ZYJJdgW1fMOIdIRunpi7gNJJV22MXyjg_NceMGBhLTxGlfUwjVnvPrl9kw60x5vjCFLFN5nQwjt0hOn6J14JPKE0dd0gOz5KPNARb6RcILow40jM9/s1600/ldap.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;215&quot; data-original-width=&quot;235&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUXlFBAA-jTMwyrusZlb3hIOGOzb9ZYJJdgW1fMOIdIRunpi7gNJJV22MXyjg_NceMGBhLTxGlfUwjVnvPrl9kw60x5vjCFLFN5nQwjt0hOn6J14JPKE0dd0gOz5KPNARb6RcILow40jM9/s1600/ldap.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Most apps require a user to register and login with credentials. Most often, the app requires that the user create a user/password that is specific to the app. This is a cumbersome process that requires the user to remember yet one more password. It’s also not very secure.&lt;/span&gt;&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-f81126eb-28f2-09a8-9c1a-94ab467b44bf&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A much better approach is to enable the user to simply log in with existing credentials from another service that is trusted, like an LDAP directory in an enterprise &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;LDAP, or Lightweight Directory Access Protocol&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, is an internet protocol that programs use to look up information from a server. LDAP can be used to look up encryption certificates, pointers to printers and other services on a network, and provides “single sign-on,” where one password for a user is shared between many services. It’s typically used by enterprise organizations.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Appery.io offers powerful and flexible mechanism of creating secured mobile applications which use your LDAP.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjHi8nEWw-9jCAnJkK1hK8hPnS0miFhPjy428vxL3B9fc8Z6OQE1GmalIlndEDYh9vYaK9RslMx3YeBvizCEY57evQ6BlqKT6BosX1GZmKBQMhClhfzVB4Zu8SxBX6eEaS-dJKuWUvpJhX/s1600/ldapcomp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;639&quot; data-original-width=&quot;1117&quot; height=&quot;364&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjHi8nEWw-9jCAnJkK1hK8hPnS0miFhPjy428vxL3B9fc8Z6OQE1GmalIlndEDYh9vYaK9RslMx3YeBvizCEY57evQ6BlqKT6BosX1GZmKBQMhClhfzVB4Zu8SxBX6eEaS-dJKuWUvpJhX/s640/ldapcomp.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;To understand how it works in details let consider example&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In this tutorial we use testing LDAP server &lt;/span&gt;&lt;a href=&quot;http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;ol style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Create API Express project with name &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;SecuredProject&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Go to &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Settings &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;sub tab&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Enable &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Secure REST API&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Select Security type &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Custom service&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Came back to &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;sub tab&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Open &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;login &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;service in &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;system &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;folder (just press edit link)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Remove default &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;SCRIPT &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;component from flow&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Add &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;LDAP &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;component instead&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Provide following values for properties of &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;LDAP &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;component&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ol style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Provider type: LDAP&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Host: ldap.forumsys.com&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Port: 389&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;User DN: cn=read-only-admin,dc=example,dc=com&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Admin Password: password&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Username: &amp;nbsp;BODY.username&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Password: &amp;nbsp;BODY.password&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Base DN: dc=example,dc=com&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Object classes: person&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;User login name field: uid&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Press &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Generate &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;button to make sure that configuration is correct&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In open popup specify &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ol style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Username: riemann &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Password: password &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Press &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Run LDAP&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; button&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Response field should be&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;status&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;success&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;session&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;riemann&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;userName&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;riemann&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;ol start=&quot;14&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Press &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Import Respons&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;e button and &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Save &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;button&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Press &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Test &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;button&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In new opened window specify &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Request body payload (data).&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;username&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;riemann&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;password&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;options&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;{}&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;ol start=&quot;17&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The response of login service should look like&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;sessionToken&quot;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #666600; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #008800; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;f735cb5d-ea48-4fca-be2e-9ebfdd98e6ca&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;ol start=&quot;18&quot; style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;It means that we successfully logged in our project and got session token which can be used subsequently to perform rest calls to another services of this project.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/8972347832567307225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/ldap-component.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/8972347832567307225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/8972347832567307225'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/ldap-component.html' title='LDAP component'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUXlFBAA-jTMwyrusZlb3hIOGOzb9ZYJJdgW1fMOIdIRunpi7gNJJV22MXyjg_NceMGBhLTxGlfUwjVnvPrl9kw60x5vjCFLFN5nQwjt0hOn6J14JPKE0dd0gOz5KPNARb6RcILow40jM9/s72-c/ldap.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-3670698372598415514</id><published>2017-08-28T00:49:00.005-07:00</published><updated>2017-08-28T06:20:34.960-07:00</updated><title type='text'>i18n</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Example of using i18n in appery.io&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEh-yjjAnU3cbojr31Yvdijiue09vyeecu2MrZpby2YP5tnOut_LYLmZeQ2s5CIi9s4EOUpqocFf5qtvQS741kaLDzQODhDraY8-y2SS-cUfH0Iw3tojBCIRObwCci27LaGH1lnlYR1XbLQb/s1600/i18n2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;971&quot; data-original-width=&quot;1000&quot; height=&quot;310&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yjjAnU3cbojr31Yvdijiue09vyeecu2MrZpby2YP5tnOut_LYLmZeQ2s5CIi9s4EOUpqocFf5qtvQS741kaLDzQODhDraY8-y2SS-cUfH0Iw3tojBCIRObwCci27LaGH1lnlYR1XbLQb/s320/i18n2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/zbEuzb5N7dE/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;532&quot; src=&quot;https://www.youtube.com/embed/zbEuzb5N7dE?feature=player_embedded&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/3670698372598415514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/tetwete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3670698372598415514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3670698372598415514'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/tetwete.html' title='i18n'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yjjAnU3cbojr31Yvdijiue09vyeecu2MrZpby2YP5tnOut_LYLmZeQ2s5CIi9s4EOUpqocFf5qtvQS741kaLDzQODhDraY8-y2SS-cUfH0Iw3tojBCIRObwCci27LaGH1lnlYR1XbLQb/s72-c/i18n2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-3852305967605940436</id><published>2017-07-19T00:27:00.000-07:00</published><updated>2017-08-29T00:28:10.352-07:00</updated><title type='text'>Appery.io Login/Logout in offline mode</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSbJH4YfxQnLwv_GxbSWw-UdiFdCLhlgjEDfV2w9cJkWgmaQScNVgjHrwqzgSK7AgrKOQnNxz5LpSOjewRXcwgBTvV1G-rHbbASHVWjSejJCjt6GqfGIX2xbT-61ciNoJwD99tOc5RKDkL/s1600/offline.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;300&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSbJH4YfxQnLwv_GxbSWw-UdiFdCLhlgjEDfV2w9cJkWgmaQScNVgjHrwqzgSK7AgrKOQnNxz5LpSOjewRXcwgBTvV1G-rHbbASHVWjSejJCjt6GqfGIX2xbT-61ciNoJwD99tOc5RKDkL/s400/offline.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Source Serif Pro, serif;&quot;&gt;&lt;span style=&quot;font-size: 21px; white-space: pre-wrap;&quot;&gt;Video shows how to create secure mobile application with ability to work offline.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;640&quot; height=&quot;532&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/1UCeY953pq4/0.jpg&quot; src=&quot;https://www.youtube.com/embed/1UCeY953pq4?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/3852305967605940436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/07/apperyio-loginlogout-in-offline-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3852305967605940436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/3852305967605940436'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/07/apperyio-loginlogout-in-offline-mode.html' title='Appery.io Login/Logout in offline mode'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSbJH4YfxQnLwv_GxbSWw-UdiFdCLhlgjEDfV2w9cJkWgmaQScNVgjHrwqzgSK7AgrKOQnNxz5LpSOjewRXcwgBTvV1G-rHbbASHVWjSejJCjt6GqfGIX2xbT-61ciNoJwD99tOc5RKDkL/s72-c/offline.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-7017060489964713056</id><published>2017-06-14T01:10:00.000-07:00</published><updated>2017-08-29T01:15:55.573-07:00</updated><title type='text'>REST concepts</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;&lt;/div&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/AVvXsEhAeoLmPtxenjJIowzhK08_WxI5hmqEoiLkv4PWIyV22BJLxwA6qngcaXwz_dO4b9hrGAs5gkhBPOe3LjhJUrvFEdM2-BiCxR65ne2hhyphenhyphen48Vy-EP6tTCeM3xYpRURWpIn0K0JiY6uBacc7O/s1600/restapi.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;404&quot; data-original-width=&quot;372&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAeoLmPtxenjJIowzhK08_WxI5hmqEoiLkv4PWIyV22BJLxwA6qngcaXwz_dO4b9hrGAs5gkhBPOe3LjhJUrvFEdM2-BiCxR65ne2hhyphenhyphen48Vy-EP6tTCeM3xYpRURWpIn0K0JiY6uBacc7O/s320/restapi.png&quot; width=&quot;294&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Representational state transfer (REST) or RESTful web services is a way of providing interoperability between computer systems on the Internet. REST-compliant Web services allow requesting systems to access and manipulate textual representations of Web resources using a uniform and predefined set of stateless operations. Other forms of Web service exist, which expose their own arbitrary sets of operations such as WSDL and SOAP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;https://docs.google.com/presentation/d/e/2PACX-1vQsjwgNi6th7MLqH2H-RXrEc_nsA6Rm-s21UF-LvQ9PTM14_aAWqKcR1kUuy5qH6F62nGWr-3lT0qse/embed?start=false&amp;loop=false&amp;delayms=3000&quot; frameborder=&quot;0&quot; width=&quot;810&quot; height=&quot;484&quot; allowfullscreen=&quot;true&quot; mozallowfullscreen=&quot;true&quot; webkitallowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/7017060489964713056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/rest-concepts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7017060489964713056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/7017060489964713056'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/rest-concepts.html' title='REST concepts'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAeoLmPtxenjJIowzhK08_WxI5hmqEoiLkv4PWIyV22BJLxwA6qngcaXwz_dO4b9hrGAs5gkhBPOe3LjhJUrvFEdM2-BiCxR65ne2hhyphenhyphen48Vy-EP6tTCeM3xYpRURWpIn0K0JiY6uBacc7O/s72-c/restapi.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-2895467529422844493</id><published>2017-05-11T07:47:00.000-07:00</published><updated>2017-08-28T23:57:12.976-07:00</updated><title type='text'>Appery.io platform overview</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPuGY1WGN0X_uQtc7-dB4o1Z-HBtj1IEM1zeqSNYrPgbckRYgK9_lxgvO7LxfFL73NLzYuq1GOremAyoeWvF2qvDoJA0APwCaqAKOh7k5XCEjYnrXG6NDBSNZ-61RKgloiPonsrWo745d/s1600/A4_Tri-Fold_InnerFinal-en-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1144&quot; data-original-width=&quot;1600&quot; height=&quot;456&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPuGY1WGN0X_uQtc7-dB4o1Z-HBtj1IEM1zeqSNYrPgbckRYgK9_lxgvO7LxfFL73NLzYuq1GOremAyoeWvF2qvDoJA0APwCaqAKOh7k5XCEjYnrXG6NDBSNZ-61RKgloiPonsrWo745d/s640/A4_Tri-Fold_InnerFinal-en-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&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/AVvXsEijcRLMQbsXQqG5Uxmlt8Il03Q7D3-BYc_gaVbKClL5axS7ISxW3t08ZjgHYyXdF84F3PS6yhaa1qTj-67WbzZbShBCWAZA8SI9G71tYacoLL4YXACv6pwKXVvEO0i35Kg6V57gPpJi2vHQ/s1600/A4_Tri-Fold_OuterFinal-en-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1144&quot; data-original-width=&quot;1600&quot; height=&quot;456&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijcRLMQbsXQqG5Uxmlt8Il03Q7D3-BYc_gaVbKClL5axS7ISxW3t08ZjgHYyXdF84F3PS6yhaa1qTj-67WbzZbShBCWAZA8SI9G71tYacoLL4YXACv6pwKXVvEO0i35Kg6V57gPpJi2vHQ/s640/A4_Tri-Fold_OuterFinal-en-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Appery.io is the first mobile platform that offers a cloud-based rapid development environment with integrated backend services and a rich catalog of API plug-ins.&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
App Builder&lt;/h3&gt;
Appery.io is visual IDE for creating mobile applications by dragging components, selecting from pull-down menus, and «connecting the dots» between backend systems and user interface controls. Browser-based development enables real-time collaboration between developers,&lt;br /&gt;
&lt;br /&gt;
designers, and business users. Developers can create reusable assets that can be in the form of API plug-ins for integration to backend systems, custom components for the user interface, or application templates.&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;Frameworks&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
Appery.io is based on industry-standard languages and frameworks. Developers can code using HTML, JavaScript, and CSS, so the applications are portable across any platform. In addition, Appery.io leverages Apache Cordova and any third-party Cordova plug-ins to create native or hybrid apps that support native device capabilities. The platform leverages the very popular jQuery Mobile framework with a rich set of UI components.&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;Application Security&lt;/h3&gt;
&lt;div&gt;
Appery.io delivers enterprise-grade security with our optional Enterprise Mobile Safe secure container. Apps are deployed in a secure container on the device and connected to a secure server, protecting all app artifacts such as data, code, and content with AES-256 encryption. Appery.io can also integrate with third-party secure container and enterprise app store solutions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Integration with Enterprise Systems and Cloud APIs&lt;/h3&gt;
&lt;div&gt;
Appery.io integrates easily with any available REST API without the need for coding. Developers connect the dots using a visual interface to map data between the application and the backend system. The Appery.io Enterprise Integration Server offers integration with backend systems including LDAP directories; relational databases such as Oracle, Microsoft SQL server, MySQL, and PostgreSQL; and CRM systems such as Salesforce.com, REST APIs, and SOAP-based web services.&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;Integrated Backend Services (MBaaS)&lt;/h3&gt;
Unlike point tools and other Mobile Backend-as-a-service (MBaaS) providers, Appery.io offers a complete platform with tools for designers and developers along with integrated backend services.&lt;br /&gt;
Appery.io backend-services include a cloud database (based on MongoDB) to store app data and manage users and files, a server code engine to support server-side business logic, and a push notification service to engage users even when the apps are not running.&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Team Management and Real-time Collaboration&lt;/h3&gt;
Appery.io team management capabilities enable team leaders to invite colleagues by sharing (and unsharing) user seats for the platform and by sharing (and unsharing) projects.&lt;br /&gt;
Because the development environment is web-based, with projects stored in the cloud, multiple users can view and mofigy applications at the same time.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Key features&lt;/h3&gt;
Cloud-based visual development environment with optional coding using JavaScript, HTML, CSS&lt;br /&gt;
Integrated backend services (MBaaS) including a cloud database&lt;br /&gt;
Visual integration to third-party REST APIs&lt;br /&gt;
Prebuilt plug-ins to enterprise systems and cloud services&lt;br /&gt;
Real-time collaboration&lt;br /&gt;
Secure container for enterprise-grade security&lt;br /&gt;
Complete platform with support for entire app lifecycle&lt;br /&gt;
On-premise and cloud-based deployment options&lt;br /&gt;
IOS, Android and HTML5 responsive applications&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/2895467529422844493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-platform-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2895467529422844493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2895467529422844493'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-platform-overview.html' title='Appery.io platform overview'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPuGY1WGN0X_uQtc7-dB4o1Z-HBtj1IEM1zeqSNYrPgbckRYgK9_lxgvO7LxfFL73NLzYuq1GOremAyoeWvF2qvDoJA0APwCaqAKOh7k5XCEjYnrXG6NDBSNZ-61RKgloiPonsrWo745d/s72-c/A4_Tri-Fold_InnerFinal-en-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-2216734257616855023</id><published>2017-04-20T07:43:00.000-07:00</published><updated>2017-08-29T07:30:54.638-07:00</updated><title type='text'>Appery.io on TIBO 2017</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;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/AVvXsEj3bVNkqmf3RkrS2N-ysNXFQIv6_E53GWMtn3G81s_dXi-owVVpSxqW1N2769jS661EILgF5r97OsHz3h7f1kW9sQUp5t2C2FHFJeMGK7XpUnlQMXmER9aw7Qdh1I1hMkkeZ42D5bRXeSpp/s1600/20170418_100012.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;1546&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3bVNkqmf3RkrS2N-ysNXFQIv6_E53GWMtn3G81s_dXi-owVVpSxqW1N2769jS661EILgF5r97OsHz3h7f1kW9sQUp5t2C2FHFJeMGK7XpUnlQMXmER9aw7Qdh1I1hMkkeZ42D5bRXeSpp/s320/20170418_100012.jpg&quot; width=&quot;309&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I had a chance to present Appery.io on&amp;nbsp;&lt;a href=&quot;http://www.tc.by/english/events/&quot; target=&quot;_blank&quot;&gt;TIBO 2017&lt;/a&gt;&amp;nbsp;24th International Forum on Telecommunications, Information and Banking Technologies that is to take place in Minsk, Belarus on 18 – 20 April 2017&lt;br /&gt;
&lt;br /&gt;
Held since 1994, TIBO is one of the biggest exhibition events in the CIS and the Baltic states. The forum gathers the leading Belarusian and foreign producers of telecommunications equipment, computers and software, security systems and devices, suppliers of ICT services. TIBO 2016 brought together more than 100 companies from 18 countries: Belarus, Russia, Ukraine, Kazakhstan, Azerbaijan, Latvia, Lithuania, Poland, the Czech Republic, Germany, Finland, Sweden, the United Kingdom, Turkey, China, the Republic of Korea, Japan, and the United States.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/2216734257616855023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-on-tibo-2017.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2216734257616855023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/2216734257616855023'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-on-tibo-2017.html' title='Appery.io on TIBO 2017'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3bVNkqmf3RkrS2N-ysNXFQIv6_E53GWMtn3G81s_dXi-owVVpSxqW1N2769jS661EILgF5r97OsHz3h7f1kW9sQUp5t2C2FHFJeMGK7XpUnlQMXmER9aw7Qdh1I1hMkkeZ42D5bRXeSpp/s72-c/20170418_100012.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-5680397559580011455</id><published>2017-03-21T23:52:00.000-07:00</published><updated>2017-08-28T23:52:59.808-07:00</updated><title type='text'>Appery.io MeetingRoomCalendar app in Exadel office</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZYLIXFSAjX-dmxS-_DhmJNw7w_aEBA8UgnMW2TjiZFJegC5fNgWqSYTeIO0GeTenqJKElAa5jCsFFGXE8QAQgAW2uYSyyw5GWoIPk4xfayXKeBySDwa7qbMJyoPM6BLO00ooRgG_FKG6/s1600/image002.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;397&quot; data-original-width=&quot;529&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZYLIXFSAjX-dmxS-_DhmJNw7w_aEBA8UgnMW2TjiZFJegC5fNgWqSYTeIO0GeTenqJKElAa5jCsFFGXE8QAQgAW2uYSyyw5GWoIPk4xfayXKeBySDwa7qbMJyoPM6BLO00ooRgG_FKG6/s640/image002.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&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/AVvXsEic5d0awWEszA5Qp9q-rjhUsMnyWS26zrqDQ6zNEKLgZsXx3gQoN05LTWM1aT5EPngMMMaxI8R6NPkSOuDt-JjgZXoJzqKWsnlCQay8zJ0kvXOsaBjsdgU17UBWUIHTvud_7zKFKg6dOB7u/s1600/image018.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;306&quot; data-original-width=&quot;543&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic5d0awWEszA5Qp9q-rjhUsMnyWS26zrqDQ6zNEKLgZsXx3gQoN05LTWM1aT5EPngMMMaxI8R6NPkSOuDt-JjgZXoJzqKWsnlCQay8zJ0kvXOsaBjsdgU17UBWUIHTvud_7zKFKg6dOB7u/s640/image018.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Finally we installed in Exadel offices MeetingRoomCalendar application which were created on appery.io&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/5680397559580011455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/03/apperyio-meetingroomcalendar-app-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5680397559580011455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5680397559580011455'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/03/apperyio-meetingroomcalendar-app-in.html' title='Appery.io MeetingRoomCalendar app in Exadel office'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZYLIXFSAjX-dmxS-_DhmJNw7w_aEBA8UgnMW2TjiZFJegC5fNgWqSYTeIO0GeTenqJKElAa5jCsFFGXE8QAQgAW2uYSyyw5GWoIPk4xfayXKeBySDwa7qbMJyoPM6BLO00ooRgG_FKG6/s72-c/image002.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492488374166728489.post-5268736899197423614</id><published>2017-03-16T08:00:00.000-07:00</published><updated>2017-08-28T23:57:36.591-07:00</updated><title type='text'>Training - Introduction into Appery.io platform</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&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/AVvXsEjS8ojtT94vbmu8yhfxHkjKa67COwZpxoHSUUC2UQkDXlZQPo1HHK9osoMd_tQcDjAtRQ5aObScaTxHAFkDbszH7Ar8M-rz0YJegEw_qVAG7xffyw_8-nrhGN1DTpNMmvxj58C8fOBhJmuW/s1600/Training-Improve.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1132&quot; data-original-width=&quot;1600&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS8ojtT94vbmu8yhfxHkjKa67COwZpxoHSUUC2UQkDXlZQPo1HHK9osoMd_tQcDjAtRQ5aObScaTxHAFkDbszH7Ar8M-rz0YJegEw_qVAG7xffyw_8-nrhGN1DTpNMmvxj58C8fOBhJmuW/s320/Training-Improve.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Merriweather; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Merriweather; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;I had a chance to conduct training &quot;Introduction into Appery.io platform&quot;&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Merriweather; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Merriweather; text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;1. Appery.io intoduction (history, example of apps created on&lt;span class=&quot;Apple-converted-space&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://appery.io/&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #1155cc; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;appery.io&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;nbsp;&lt;/span&gt;few words about team and etc)&lt;br /&gt;2. Explanation of basic principles of our platform (why it is a platform, explanation what is hybrid apps pros and cons)&lt;br /&gt;3. App Builder&lt;br /&gt;4. Database&lt;br /&gt;5. API Express&lt;br /&gt;6. Security&lt;br /&gt;7. Server Code&lt;br /&gt;8. Push notifications&lt;br /&gt;9. Autoupdate&lt;br /&gt;10. Offline&lt;br /&gt;11. Showing sample app from our tutorial&lt;br /&gt;12. Conclusion&lt;br /&gt;13. Questions and Answers&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ancipov.blogspot.com/feeds/5268736899197423614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-booklet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5268736899197423614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492488374166728489/posts/default/5268736899197423614'/><link rel='alternate' type='text/html' href='http://ancipov.blogspot.com/2017/08/apperyio-booklet.html' title='Training - Introduction into Appery.io platform'/><author><name>Alex Ancipov</name><uri>http://www.blogger.com/profile/12487225734572971114</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/AVvXsEjdLBrOnamTGNaHS_fdornfs0jS-sbOCDxOvsIGLVqCYkYi42sL7-9b4j7JGiJCSYW21RdrnpfiQNizY29v0jgc2eeJkJ4VDhhQuMRU48aTsqK_wAQxmkoeom5LbsEzFlw/s113/alex.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS8ojtT94vbmu8yhfxHkjKa67COwZpxoHSUUC2UQkDXlZQPo1HHK9osoMd_tQcDjAtRQ5aObScaTxHAFkDbszH7Ar8M-rz0YJegEw_qVAG7xffyw_8-nrhGN1DTpNMmvxj58C8fOBhJmuW/s72-c/Training-Improve.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>