<?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-8421230754008661149</id><updated>2024-09-15T15:11:25.638-07:00</updated><category term="flask"/><category term="basic"/><category term="build"/><category term="foundation"/><category term="guide"/><category term="new tab"/><category term="newbie"/><category term="pygments"/><category term="quick"/><category term="source file"/><category term="tutorial"/><category term="web app"/><title type='text'>Web Development</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webapp-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421230754008661149/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://webapp-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hasan Karahan</name><uri>http://www.blogger.com/profile/02992055413153642708</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/AVvXsEjCx76PRBDA7X28_086N7WKAZ75b261dWnmxtzriHbzLFO2VHKFegZQevVJddUuMaf3Epy5yfQRIqY_V7AuQKwKLomL_7tzdoMaE7hMAsQkl9U2I54bec4OgmPhSGb9fpc/s220/me+%5B024%5D.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8421230754008661149.post-3943861678603636614</id><published>2012-08-11T02:44:00.000-07:00</published><updated>2012-08-11T02:44:46.366-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flask"/><category scheme="http://www.blogger.com/atom/ns#" term="new tab"/><category scheme="http://www.blogger.com/atom/ns#" term="pygments"/><category scheme="http://www.blogger.com/atom/ns#" term="source file"/><title type='text'>One browser tab for each source file</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 style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; padding: 0px;&quot;&gt;
If people want to show a source file in a new tab, it usually works for text files. But if&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;CPP&lt;/strong&gt;,&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;H&lt;/strong&gt;&amp;nbsp;files or like are involved then those are offered as a download! One possible solution to this problem is to convert those source files to HTML using tools like&amp;nbsp;&lt;a href=&quot;http://pygments.org/faq/&quot; style=&quot;border: 0px; color: #4183c4; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;pygments&lt;/a&gt;, which allows you a conversion like:&lt;/div&gt;
&lt;ul style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin: 15px 0px; padding: 0px 0px 0px 30px;&quot;&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;pygmentize -f html -O full -o cpp-source.html source.cpp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
This will create an HTML file&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;cpp-source.html&lt;/em&gt;&amp;nbsp;from&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;source.cpp&lt;/em&gt;, where the latter can then be served with whatever method.&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html&lt;/strong&gt;&amp;nbsp;is a small web application demonstrating this approach; follow the instructions below the get it running:&lt;/div&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;&quot;&gt;$ git clone git://github.com/hsk81/code2html.git code2html.git
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
Clones the GIT repository&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html&lt;/strong&gt;&amp;nbsp;from GitHub; you&#39;ll only have read access.&lt;/div&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;&quot;&gt;$ cd code2html.git
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
Switches to the repository folder&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html.git&lt;/em&gt;, which has been created at the first step.&lt;/div&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;&quot;&gt;$ ./setup.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
Installs the&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html&lt;/strong&gt;&amp;nbsp;dependencies&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Flask&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Pygments&lt;/strong&gt;. For this step to work you need a&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;python&lt;/code&gt;&amp;nbsp;interpreter with the&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;virtualenv&lt;/code&gt;environment builder properly set-up.&lt;/div&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;&quot;&gt;$ source bin/activate
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
Activates&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;virtualenv&lt;/code&gt;&amp;nbsp;for the project; this step is necessary since the previous one has installed our dependencies into a virtual environment.&lt;/div&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;&quot;&gt;$ ./code2html.py
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-bottom: 15px; margin-top: 15px; padding: 0px;&quot;&gt;
Executes the&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html&lt;/strong&gt;&amp;nbsp;web application; you should see an output like&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;running on http://0.0.0.0:5001/&lt;/code&gt;. Point your browser to the address and play around with the demonstration.&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; margin-top: 15px; padding: 0px;&quot;&gt;
After you&#39;re done with the demonstration hit&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;CTRL+C&lt;/strong&gt;&amp;nbsp;to kill&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;code2html&lt;/strong&gt;&amp;nbsp;and run&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(234, 234, 234); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 12px; margin: 0px 2px; padding: 0px 5px; white-space: nowrap;&quot;&gt;deactivate&lt;/code&gt;&amp;nbsp;to exit the virtual environment.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webapp-dev.blogspot.com/feeds/3943861678603636614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webapp-dev.blogspot.com/2012/08/one-browser-tab-for-each-source-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421230754008661149/posts/default/3943861678603636614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421230754008661149/posts/default/3943861678603636614'/><link rel='alternate' type='text/html' href='http://webapp-dev.blogspot.com/2012/08/one-browser-tab-for-each-source-file.html' title='One browser tab for each source file'/><author><name>Hasan Karahan</name><uri>http://www.blogger.com/profile/02992055413153642708</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/AVvXsEjCx76PRBDA7X28_086N7WKAZ75b261dWnmxtzriHbzLFO2VHKFegZQevVJddUuMaf3Epy5yfQRIqY_V7AuQKwKLomL_7tzdoMaE7hMAsQkl9U2I54bec4OgmPhSGb9fpc/s220/me+%5B024%5D.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421230754008661149.post-7482547126036132317</id><published>2012-07-26T00:26:00.002-07:00</published><updated>2012-07-26T00:38:43.903-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="basic"/><category scheme="http://www.blogger.com/atom/ns#" term="build"/><category scheme="http://www.blogger.com/atom/ns#" term="flask"/><category scheme="http://www.blogger.com/atom/ns#" term="foundation"/><category scheme="http://www.blogger.com/atom/ns#" term="guide"/><category scheme="http://www.blogger.com/atom/ns#" term="newbie"/><category scheme="http://www.blogger.com/atom/ns#" term="quick"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="web app"/><title type='text'>Flask Guide for Web Application Development</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A friend of my mine has recently dropped me a &lt;i&gt;&quot;Quickest way for someone who has never built a web app to do so?&quot;&amp;nbsp;&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt;email asking for some input. I provided that, and would like to share it here.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;The problem with writing web sites is that many newbies think it is easy. Well, my experience tells me that it is &lt;i&gt;not&lt;/i&gt;. Especially if people would like to display something that&#39;s&amp;nbsp;&lt;i&gt;data driven&lt;/i&gt;&amp;nbsp;(using tables or diagrams)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;since it&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;becomes quickly complex: It is then appropriate to talk about &lt;/span&gt;&lt;i&gt;web application development&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;rather than using the misleading notion &lt;/span&gt;&lt;i&gt;writing a web site&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Fortunately, many, many, &lt;i&gt;extremely&lt;/i&gt; many libraries provide excellent help, in building a nice web application. But unfortunately the&amp;nbsp;plethora of the choices is also a problem for a newbie, since it can be difficult the evaluate the various libraries, frameworks and approaches, if one does not know some basic foundations, on which a modern web application is build&amp;nbsp;upon.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Therefore, before I explain you the guide/tutorial towards the end of this post,&amp;nbsp;I&#39;ve to dive into those basic foundations.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;

&lt;span style=&quot;background-color: white;&quot;&gt;Foundations&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Here you see the architecture of a recent web application of mine; I&#39;m going to discuss the foundations of a data driven web application development based on this sketch:&lt;/span&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4FFefj4qssI0-Q_DJ4zfJT4LBwLHIYvNuMzNrejHcUJFruAGGP31F2bNXFoG3f4EJT_7OCX7EZi15HoL4dmK4msgtt6SBkg-sXp9PDPkxTttbWk0gR_2iISNuNZtFZqWbnK1cnAkYyei2/s1600/web-app.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4FFefj4qssI0-Q_DJ4zfJT4LBwLHIYvNuMzNrejHcUJFruAGGP31F2bNXFoG3f4EJT_7OCX7EZi15HoL4dmK4msgtt6SBkg-sXp9PDPkxTttbWk0gR_2iISNuNZtFZqWbnK1cnAkYyei2/s400/web-app.png&quot; width=&quot;356&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
Web Application Architecture&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Everything starts with &lt;/span&gt;&lt;i&gt;data&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt;! God said in the beginning &quot;&lt;/span&gt;&lt;i&gt;Be!&quot;&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, provided the data (using JSON, not SQL - he&#39;s a modern God) and we became. Almost every system needs a &lt;/span&gt;&lt;b&gt;database&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;b&gt;DB&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)&amp;nbsp;to store stuff. This data ends up being shown inside a reader&#39;s browser in various forms like &lt;/span&gt;&lt;i&gt;trees, tables, lists, text and diagrams.&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;So there must be &lt;i&gt;something&lt;/i&gt; that takes your data from your database, does some magic with it and gives you your web site. This magician is usually labelled as a &lt;b&gt;framework&lt;/b&gt;: It &lt;i&gt;renders&lt;/i&gt; the data into a&amp;nbsp;view-able format.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But the magician needs some help from another wizard, since it cannot alone deliver the rendered web site to the reader. That big helper is a &lt;b&gt;webserver&lt;/b&gt;&lt;i&gt;,&lt;/i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;which usually sits on an&amp;nbsp;anonymous&amp;nbsp;remote machine (a &lt;b&gt;server&lt;/b&gt;)&amp;nbsp;somewhere out there: Its job it to send the stuff to the reader.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The reader has a &lt;b&gt;client&lt;/b&gt;&amp;nbsp;machine (e.g. a laptop or a tab) that runs a &lt;b&gt;browser&lt;/b&gt;&amp;nbsp;- on top of an &lt;b&gt;operating system &lt;/b&gt;(&lt;b&gt;OS&lt;/b&gt;) -&amp;nbsp;to display the web site.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So after establishing these very basic notions, I&#39;ll explain which software &lt;b&gt;I&#39;m&lt;/b&gt; using for each part to build my web applications:&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

Database: SQLite&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
For my database during the development stage I almost always use &lt;b&gt;SQLite&lt;/b&gt;. It is a &lt;i&gt;single file&lt;/i&gt; based sytem, which means that there is almost no installation and maintenance efforts involved. SQLite (like many other DBs) uses the &lt;i&gt;query language&lt;/i&gt; &lt;b&gt;SQL&lt;/b&gt;: It&#39;s a so called &lt;i&gt;declarative &lt;/i&gt;language to tell DBs what kind of data you&#39;d like to have. The DB usually responds with zero or many rows containing the entries you&#39;ve asked for.&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

&lt;b&gt;Database ORM: SQLAlchemy&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Usually querying a DB directly with SQL is considered low level. Post stone-age&amp;nbsp;people use modern tools which are so called &lt;i&gt;object relational mappers&lt;/i&gt;&amp;nbsp;(ORM) like &lt;b&gt;SQLAlchemy&lt;/b&gt;&amp;nbsp;that maps the &lt;i&gt;relational model&lt;/i&gt; of a common database into an object (or class) model of an &lt;i&gt;object oriented&lt;/i&gt; programming language.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A &lt;i&gt;relational model&lt;/i&gt;&amp;nbsp;is just a fancy name for various data stored inside tables. There is actually a whole mathematical theory hidden under the carpet, but that shall be of no relevance here. Just remember: A bunch of data that is saved in tables.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now an &lt;i&gt;object oriented&lt;/i&gt;&amp;nbsp;&lt;i&gt;(OO)&lt;/i&gt; programming language is a language that allows you to write software using notions like &lt;i&gt;classes&lt;/i&gt; and &lt;i&gt;objects&lt;/i&gt;: E.g. my cat &quot;Billu&quot; would be an object of the class &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Cat&lt;/span&gt;. Using a modern OO language like &lt;b&gt;Python&lt;/b&gt;&amp;nbsp;I&#39;ve the possibility to write:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;b&gt;class&lt;/b&gt; Cat:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;def&lt;/b&gt; __init__ (&lt;i&gt;self&lt;/i&gt;, name):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;self&lt;/i&gt;.name = name&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;def&lt;/b&gt; __repr__ (&lt;i&gt;self&lt;/i&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;return&lt;/b&gt; &#39;&amp;lt;Cat %r&#39;&amp;gt; % &lt;i&gt;self&lt;/i&gt;.name&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;Having defined such a class &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Cat&lt;/span&gt;&amp;nbsp;I&#39;m now in the position the create various&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; text-align: left;&quot;&gt;Cat&lt;/span&gt;&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;objects, like:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;billu = Cat (&quot;Billu&quot;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;billa = Cat (&quot;Billa&quot;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Now, I&#39;ve two cats living in the memory of my computer system; let&#39;s print them:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;b&gt;print&lt;/b&gt; billu,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small; text-align: left;&quot;&gt;billa&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;Cat &#39;Billu&#39;&amp;gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small; text-align: left;&quot;&gt;&amp;lt;Cat &#39;Billa&#39;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So this is the minimal explanation of &lt;i&gt;OO&lt;/i&gt; programming I could think of; I hope it&#39;s enough to give you at least an idea what we&#39;re dealing with here.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Very well, but what&amp;nbsp;happened&amp;nbsp;to our fancy &lt;i&gt;relational&lt;/i&gt; database? How can we connect our cats to a DB and fetch their names from without us hard coding their names inside the programming language? To do that, we need to extend the above &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Cat&lt;/span&gt;&amp;nbsp;class with something like this (pseudo-code!):&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;b&gt;class&lt;/b&gt;&amp;nbsp;Cat (db.Model):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;id = db.Column (db.Integer, primary_key=&lt;b&gt;True&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;name = db.Column (db.Unicode)&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;def&lt;/b&gt;&amp;nbsp;__init__ (&lt;i&gt;self&lt;/i&gt;, name):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;self&lt;/i&gt;.name = &lt;b&gt;unicode&lt;/b&gt; (name)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;def&lt;/b&gt;&amp;nbsp;__repr__ (&lt;i&gt;self&lt;/i&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;return&lt;/b&gt;&amp;nbsp;&#39;&amp;lt;Cat %r&#39;&amp;gt; %&amp;nbsp;&lt;i&gt;self&lt;/i&gt;.name&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now, provided your database is initialized with our &lt;i&gt;Billu&lt;/i&gt; and &lt;i&gt;Billa&lt;/i&gt; and&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;correctly&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;connected to, you can&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;execute the following DB query:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&amp;nbsp;Cat.query.all ();&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; [&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;lt;Cat &#39;Billu&#39;&amp;gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;lt;Cat &#39;Billa&#39;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The &lt;b&gt;ORM&lt;/b&gt; working behind the scenes translates the &lt;b&gt;Python&lt;/b&gt; statement&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; text-align: justify;&quot;&gt;Cat.query.all ()&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small; text-align: justify;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;to the &lt;b&gt;SQL&lt;/b&gt; statement&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;SELECT * FROM &quot;cat&quot; ;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;the result is a table of rows:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;1|Billu&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;2|Billa&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;This table is translated back&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;by the ORM&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;into Python objects and then printed using the&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&amp;nbsp;statement as&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Cat &#39;Billu&#39;&amp;gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Cat &#39;Billa&#39;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;. You can see, this greatly simplifies the interaction with the DB and enables us to write relevant &lt;i&gt;business logic&lt;/i&gt;&amp;nbsp;instead of dealing with the profanities of SQL and DBs.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;Note: &lt;/b&gt;The above example works only in combination with the framework I&#39;m going the explain below (you need the &lt;b&gt;Flask-SQAlchemy&lt;/b&gt;&amp;nbsp;ORM extension for the shown queries).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

Framework: Flask&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We use the magician &lt;b&gt;Flask.&lt;/b&gt;&amp;nbsp;This sorcerer describes himself on his own web site like this:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Georgia, serif; font-size: 17px; text-align: -webkit-auto;&quot;&gt;&lt;i&gt;&lt;b&gt;Flask&lt;/b&gt; is a micro-framework for &lt;b&gt;Python&lt;/b&gt; based on &lt;b&gt;Werkzeug&lt;/b&gt;, &lt;b&gt;Jinja 2&lt;/b&gt; and good intentions.&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Wow! As we know Flask is in the business of dark magik, that means his ways are not always clear to outsiders, and many need a little help to understand what the hell this is all about ..&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Let me translate the tech talk for you:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white;&quot;&gt;Flask&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;is the name of the framework. It is a so called &lt;i&gt;micro-framework,&lt;/i&gt;&amp;nbsp;which means that it does not try to solve everything for you, but provides an&amp;nbsp;&lt;i&gt;extendable&lt;/i&gt; &lt;i&gt;core&lt;/i&gt; of&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;functionality. It is written in the programming language &lt;b&gt;Python&lt;/b&gt;&amp;nbsp;and is based on the libraries &lt;i&gt;&lt;b&gt;Werkzeug&lt;/b&gt;&lt;/i&gt;&amp;nbsp;and &lt;i&gt;&lt;b&gt;Jinja 2&lt;/b&gt;&lt;/i&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We can ignore for sake of clarity &lt;i&gt;Werkzeug&lt;/i&gt;&amp;nbsp;since it would lead to too much technical details here. But we&#39;ve to talk a little bit about &lt;i&gt;Jinja 2&lt;/i&gt;: It is a so called &lt;i&gt;template engine, &lt;/i&gt;meaning it allows us to &lt;i&gt;&lt;b&gt;embed data&lt;/b&gt;&lt;/i&gt; into other stuff.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;So what does our magician friend Flask exactly do? What is this mentioned &lt;i&gt;extendable core functionality &lt;/i&gt;about&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;? Its main job is to take the data from the DB (by&amp;nbsp;querying it with SQL by means of an ORM) and put the acquired information into other formats (by using &lt;i&gt;Jinja 2&lt;/i&gt;) that can actually be used by a browser to display your web site.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So another description of a framework could go like this: It takes raw data from a DB and uses templates to convert it into a&amp;nbsp;view-able form. Like a magician that mixes some ingredients (data) according to some recipe (template) and come up with a good drink or a nice looking gem stone (web site). I hope I did not stretch the analogy to much and, but you should be getting my point.&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;

HTML, CSS, JS &amp;amp; JSON&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But what are these formats a browser can display? Well these are the infamous &lt;b&gt;HTML&lt;/b&gt;, &lt;b&gt;CSS&lt;/b&gt; and &lt;b&gt;JS&lt;/b&gt; triple. HTML stands for &lt;i&gt;hyper text markup language&lt;/i&gt;&amp;nbsp;and it is used the write the &lt;i&gt;structure&lt;/i&gt;&amp;nbsp;(and content) of a web site;&amp;nbsp;CSS is an abbreviation for &lt;i&gt;cascading style sheets&lt;/i&gt;&amp;nbsp;and describes how a web site should look like; JS stand for &lt;i&gt;JavaScript&lt;/i&gt;&amp;nbsp;and it is used to implement the dynamic&amp;nbsp;behavior&amp;nbsp;of web site.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Combining all three elements a browser is able the render an nice looking, interactive web site, web page, web application etc.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hummh, but what about data that might be asked for (by the client to the server)&amp;nbsp;&lt;i&gt;after&lt;/i&gt; the web site has been rendered? How should that piece of information be sent? That is the role of &lt;b&gt;JSON&lt;/b&gt;, where this &lt;i&gt;JS object notation&lt;/i&gt;&amp;nbsp;is used to send bits and pieces to the browser on the client side. An example:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
A table (e.g. showing weather for various cities) is structurally described with HTML, styled with CSS and has a &lt;i&gt;fetch data&amp;nbsp;&lt;/i&gt;button implementing well the &lt;i&gt;fetch data&lt;/i&gt;&amp;nbsp;functionality with JS.&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Now, when the user clicks on the button the browser sends a request to the server side asking for the weather information.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
On the server side the &lt;i&gt;Python&lt;/i&gt; framework&amp;nbsp;&lt;b&gt;Flask &lt;/b&gt;takes this request and&amp;nbsp;queries the &lt;b&gt;SQLite&lt;/b&gt;&amp;nbsp;database using &lt;i&gt;SQL&lt;/i&gt; for the latest weather conditions (let&#39;s say temperature and humidity). The framework converts then the query result (which is a list of temperature and&amp;nbsp;humidity&amp;nbsp;numbers for each city in the DB) to &lt;i&gt;JSON&lt;/i&gt;&amp;nbsp;and sends that back the the client.&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;In this case there are no&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;background-color: white;&quot;&gt;Jinja 2&lt;/i&gt;&lt;span style=&quot;background-color: white;&quot;&gt; templates involved.&lt;/span&gt;&lt;/blockquote&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;

&lt;span style=&quot;background-color: white;&quot;&gt;GET &amp;amp; POST Requests&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If a client&#39;s browser communicates with a server there are basically two kind of requests: GET and POST. GET requests should be used to ask the server for information and POST requests to send new information to the server.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, I hope this has clarified somehow what a framework really does; since it&#39;s working behind the scenes, it&#39;s not very obvious for newbies to see what it is really all about.&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

Web Server: Cherokee&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Between the client&#39;s browser and the framework usually there is another entity sitting: the &lt;b&gt;webserver&lt;/b&gt;. In the development phase of a web site a web server is usually not required, since most the the frameworks have a built-in web server.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But once a project goes into production, it is highly recommended to use one for performance, security and administrative reasons. I personally prefer to use &lt;b&gt;Cherokee&lt;/b&gt;: It is fast, but compared to others (like Lighttpd or Nginx) not as fast, but provides an excellent graphical web based user interface to tweak the various configuration parameters of the web server.&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

Client: Browsers &amp;amp; OS&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, use your favorite: Chrome, Firefox, Opera, Safari, Explorer etc. I prefer&amp;nbsp;&lt;b&gt;Chrome&lt;/b&gt; and Firefox, and make sure that my web application are running&amp;nbsp;smoothly in those. Usually, I totally ignore the others. My development and test machine is &lt;b&gt;GNU/Arch Linux&lt;/b&gt;.&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;

&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;JavaScript Libraries: jQuery &amp;amp; ExtJS&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;Now, there is one more thing you need to know: Designing an appealing web site with pure HTML and CSS is an art and not very easy. Therefore you&#39;ve many, many helper libraries which are actually implemented in JavaScript. A lot of those offer also integrated UI widgets which can relieve a little the burden on the HTML author and CSS designer. My choices at the moment are &lt;b&gt;jQuery&lt;/b&gt; and &lt;b&gt;ExtJS&lt;/b&gt;&amp;nbsp;but with a strong desire to learn more about&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; text-align: left;&quot;&gt;AngularJS&lt;/b&gt;&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;b&gt;jQuery&lt;/b&gt; (see also jQuery UI) is a small library which helps to inspect and change the structure of and HTML document and its CSS. Plus it has a small but very useful set of widgets like a &lt;i&gt;button, calendar piker, slider, tabs &lt;/i&gt;etc.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b style=&quot;text-align: left;&quot;&gt;ExtJS&lt;/b&gt;&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&amp;nbsp;is a full blown JavaScript library (framework) that allows you to build complex web applications that look similar to desktop applications. It has a very good documentation but also a steep learning curve.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;Its strong point is that it shields people with less experience in HTML and especially CSS from UI design decisions, since most of them are given by the library, but that is at the same time also a negative, because many pages or applications utilizing ExtJS look somewhat similar.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;b&gt;AngularJS &lt;/b&gt;is&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;something quite interesting&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;, that does not support nice UI widgets, but instead offers you so called&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;bi-directional bindings&lt;/i&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;: An easy way to connect your input fields with your views &lt;i&gt;lists, tables&lt;/i&gt; etc.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;There are many more JavaScript libraries competing for the attention of a web developer, and one has to do a lengthy (on sometimes frustrating) research which library or a set of libraries one is going to use, before starting a new project. Important is in my opinion the documentation and licencing model (and of course the feature list).&lt;/span&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;

&lt;span style=&quot;background-color: white;&quot;&gt;Guide/Tutorial: &lt;i&gt;Hello World&lt;/i&gt; with Flask&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You need to run a &lt;b&gt;GNU/Linux &lt;/b&gt;or&lt;b&gt; Unix &lt;/b&gt;compatible operating system, like &lt;i&gt;Ubuntu&lt;/i&gt; or &lt;i&gt;MacOS&lt;/i&gt;. Plus the &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;b&gt;python&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;b&gt;virtualenv&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;b&gt;git&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;packages need to be properly installed and set-up. Then execute:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; font-size: 13px; text-align: -webkit-auto;&quot;&gt;git clone&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000ee; font-family: &#39;courier new&#39;, monospace; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&lt;u&gt;git://&lt;a href=&quot;http://github.com/hsk81/flask-prj.git&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;github.com/hsk81/&lt;wbr&gt;&lt;/wbr&gt;flask-prj.git&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;website.git&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;This will copy an empty project environment onto your system and name it&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;&lt;i&gt;website&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;. But&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;&lt;i&gt;website&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&#39;s&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;repository&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: inherit; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;will be connected to&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; text-align: -webkit-auto;&quot;&gt;&lt;span style=&quot;font-family: &#39;courier new&#39;, monospace;&quot;&gt;&lt;i&gt;flask-prj&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&#39;s&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: inherit; text-align: -webkit-auto;&quot;&gt;. You should severe that connection with:&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: &#39;courier new&#39;, monospace; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&lt;b&gt;cd&lt;/b&gt; website.git &amp;amp;&amp;amp; &lt;b&gt;git&lt;/b&gt; remote rm origin&lt;/span&gt;&lt;/blockquote&gt;
Now execute:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&lt;span style=&quot;font-family: &#39;courier new&#39;, monospace;&quot;&gt;./&lt;b&gt;setup.sh&lt;/b&gt; &quot;website&quot;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, helvetica, sans-serif; text-align: -webkit-auto;&quot;&gt;which will setup&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;&lt;b&gt;virtualenv&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, helvetica, sans-serif; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;&lt;b&gt;flask&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, helvetica, sans-serif; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;for you properly.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;&lt;a href=&quot;http://www.virtualenv.org/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;virtual-env&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, helvetica, sans-serif; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;allows you to setup a small Python based virtual environment on your machine and helps you to keep your system installation clean. Change into your virtual enviroment with:&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&lt;span style=&quot;font-family: &#39;courier new&#39;, monospace;&quot;&gt;&lt;b&gt;source&lt;/b&gt; bin/activate&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;Read now exactly the following&lt;/span&gt;&lt;b style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;Flask&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;links in the given order; y&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: inherit; text-align: left;&quot;&gt;ou&#39;ve already done most of the steps in point (4) by executing&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;./setup.sh &quot;website&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; font-size: 13px; text-align: -webkit-auto;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: inherit; text-align: left;&quot;&gt;, but don&#39;t skip it for the sake of completeness (and for you to understand what actually happened inside&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: &#39;courier new&#39;, monospace; text-align: -webkit-auto;&quot;&gt;./setup.sh&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; color: #222222; text-align: -webkit-auto;&quot;&gt;:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;color: #222222; font-size: 13px; text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://flask.pocoo.org/&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://flask.pocoo.org/docs/&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/foreword/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://flask.pocoo.org/docs/&lt;wbr&gt;&lt;/wbr&gt;foreword/&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/installation/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://flask.pocoo.org/docs/&lt;wbr&gt;&lt;/wbr&gt;installation/&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, [already done!]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/quickstart/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://flask.pocoo.org/docs/&lt;wbr&gt;&lt;/wbr&gt;quickstart/&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/tutorial/&quot; style=&quot;background-color: white; color: #1155cc;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;http://flask.pocoo.org/docs/&lt;wbr&gt;&lt;/wbr&gt;tutorial/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;This should give you a first impression on how to develop a web application with&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;Flask&lt;/b&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;; after that you should venture into accessing the database. Read&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;a href=&quot;http://packages.python.org/Flask-SQLAlchemy/&quot; style=&quot;color: #1155cc; font-size: 13px; text-align: -webkit-auto;&quot; target=&quot;_blank&quot;&gt;http://packages.python.org/&lt;wbr&gt;&lt;/wbr&gt;Flask-SQLAlchemy/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
to understand of the &lt;i&gt;framework&lt;/i&gt; &lt;b&gt;Flask&lt;/b&gt; interacts with the &lt;i&gt;ORM&lt;/i&gt; &lt;b&gt;SQAlchemy&lt;/b&gt;. I&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;t will provide you with a very nice overview how to get data into you application.&lt;/span&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;

&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;Final&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;From here on, you can apply your knowledge you&#39;ve gained reading the&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;Flask&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;documentation and decide how you&#39;d like to continue with the &lt;b&gt;client side (&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;front-end&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;development: Either you stick with pure HTML/CSS or you punch your head through some of the ExtJS, JQuery, AngularJS or other JavaCript libraries.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;As long as you&#39;re not comfortable with the overall approach, I&#39;d recommend to stay with pure HTML/CSS/JS, since the front-end JS libraries can be a pain sometimes.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;If you&#39;d like to see full blown system - a web based text editor - still in development, then you can visit&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/hsk81/webed&quot; style=&quot;background-color: white;&quot;&gt;http://github.com/hsk81/webed&lt;/a&gt;&amp;nbsp;and checkout the source code the get an idea about &lt;b&gt;ExtJS&lt;/b&gt; in combination with &lt;b&gt;Flask&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto;&quot;&gt;Enjoy ;P&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webapp-dev.blogspot.com/feeds/7482547126036132317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webapp-dev.blogspot.com/2012/07/flask-guide-for-web-application.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421230754008661149/posts/default/7482547126036132317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421230754008661149/posts/default/7482547126036132317'/><link rel='alternate' type='text/html' href='http://webapp-dev.blogspot.com/2012/07/flask-guide-for-web-application.html' title='Flask Guide for Web Application Development'/><author><name>Hasan Karahan</name><uri>http://www.blogger.com/profile/02992055413153642708</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/AVvXsEjCx76PRBDA7X28_086N7WKAZ75b261dWnmxtzriHbzLFO2VHKFegZQevVJddUuMaf3Epy5yfQRIqY_V7AuQKwKLomL_7tzdoMaE7hMAsQkl9U2I54bec4OgmPhSGb9fpc/s220/me+%5B024%5D.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4FFefj4qssI0-Q_DJ4zfJT4LBwLHIYvNuMzNrejHcUJFruAGGP31F2bNXFoG3f4EJT_7OCX7EZi15HoL4dmK4msgtt6SBkg-sXp9PDPkxTttbWk0gR_2iISNuNZtFZqWbnK1cnAkYyei2/s72-c/web-app.png" height="72" width="72"/><thr:total>4</thr:total></entry></feed>