tag:blogger.com,1999:blog-55249556589107172952024-03-14T04:42:52.210-07:00Pythoner's BlogCode the World with PythonAnonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-5524955658910717295.post-49943811642783160062016-07-11T14:07:00.000-07:002016-07-11T14:07:07.114-07:00Internship Experience at Cityflo<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 18pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I am really excited to share my internship experience at Cityflo. It has been really two awesome months working here. Here at Cityflo, the team is building a great product that is solving the commute problem of thousands of people in India. During this period of 2 months, I worked on new technologies and got to learn a lot. </span></div>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 18pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It was 21st December 2015 when I joined Cityflo as Backend Developer Intern. I devoted the first week on ramping up the codebase. Also, I took Cityflo ride in the first week itself and the experience was really awesome as the ride was punctual and very much comfortable.</span></div>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 18pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">From the second week, I was assigned the task of setting up Test Driven development for Cityflo. TDD setup was really necessary at that time since two or three times the system fucked up when the code changes was deployed on the production server. For instance, once a small syntax error due to one of the team member caused internal server error and the ride bookings on the mobile app stopped for about 15-20 minutes until we reverted it back to previous stable commit. These small errors can cause a large number of problems for a company growing at a fast pace and needed to be taken care of. Here comes the role of Test Driven Development(TDD). For the first time in my life, I wrote test suite for such a big codebase of about 5000 lines of code. </span></div>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 18pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">While writing the tests, I realized that TDD is something really important that will help us deploy the code fastly without worrying about code failure at the production server. Writing the test cases is not that easy. It needs understanding of each and every corner case written in the codebase so that if anything changes in the code, then tests should fail ideally. This constitutes a good test suite.</span></div>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 18pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">After writing complete set of test cases for the whole business logic, the code coverage raised from 0 to 85%. I also integrated travis CI and Coveralls as well. After completing the TDD, no fuck up has happened at the production server. It really helped Cityflo in keeping the code clear and simple and increased productivity. Here at Cityflo, we always strive for the code coverage with a better set of test cases that checks everything. Along with this feature, I fixed hundreds of daily tech issues and the maintenance issues. </span></div>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the whole span of 2 months, I ended up in making 280 commits which comprised of 14,223 lines of additions and 8,433 lines of deletions. </span></div>
<span id="docs-internal-guid-fe3239a7-dbc7-ee74-4bd9-b70485cbe797"><br /></span>
<div dir="ltr" style="line-height: 1.9956521739130435; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3d596d; font-family: Georgia; font-size: 15.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I would like to thank Cityflo Team for giving me such an amazing experience. :-) </span></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com4tag:blogger.com,1999:blog-5524955658910717295.post-57402752293370654742015-09-11T02:17:00.000-07:002015-09-11T02:21:17.753-07:00Google Summer of Code 2015 Experience<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3kNWPKwes2s_afCyEgAc8EoIy4GfCn1ODoHzp_UyigV2YJ2R1A9RTgs2NO7xUmKOaJCUuqdI7uuoltvNCUnTeJSJS1vGbJiRTgC1t_jDyhau6Xrt25tXhM9Nr7hBzfQxsEq10hyfVE6w/s1600/gsoc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3kNWPKwes2s_afCyEgAc8EoIy4GfCn1ODoHzp_UyigV2YJ2R1A9RTgs2NO7xUmKOaJCUuqdI7uuoltvNCUnTeJSJS1vGbJiRTgC1t_jDyhau6Xrt25tXhM9Nr7hBzfQxsEq10hyfVE6w/s400/gsoc.jpg" width="400" /></a></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: inherit;">Hi everyone, I was selected for Google Summer of Code 2015 under CloudCV Organization. In this blog post, I am going to describe the work that I did whole summer. I hope that it might be useful :P </span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br />I was selected as the Google Summer of Code student in the <b><span style="color: black;"><span style="color: black;"><a href="http://cloudcv.org/" target="_blank">CloudCV</a> </span>O</span>rganization</b> for the Project '<span style="line-height: 1.5em;">Integrating Dropbox, Google Drive and S3 and building REST APIs for CloudCV</span><span style="line-height: 1.5em;">'. </span></span><br />
<span style="font-family: inherit;"><span style="line-height: 1.5em;"><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXrDJJhV92QzkOgYyJIjMU6YvgYSK2QbLcLE3oB2JOtSY6blQQvwu7BwPpQx2kv0nPFe17O97AmbD34MecGXSO2db5S3DI_nta7O2yWj4DotItVJ2jsoOkixsnhbS0F1Dyj5N4nTLjnA4/s1600/aaaaa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="339" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXrDJJhV92QzkOgYyJIjMU6YvgYSK2QbLcLE3oB2JOtSY6blQQvwu7BwPpQx2kv0nPFe17O97AmbD34MecGXSO2db5S3DI_nta7O2yWj4DotItVJ2jsoOkixsnhbS0F1Dyj5N4nTLjnA4/s640/aaaaa.png" width="640" /></a></div>
<span style="font-family: inherit;"><span style="line-height: 1.5em;"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><span style="line-height: 1.5em;">It has been an awesome experience this summer. I learn a lot of new technologies and worked on them in a very short span of time. </span></span></div>
<div style="text-align: left;">
<b style="font-family: inherit; line-height: 1.5em;"><br /></b></div>
<h2 style="text-align: left;">
<span style="font-family: inherit; line-height: 1.5em;"><span style="font-size: x-large;">TL;DR</span></span></h2>
<div style="text-align: left;">
In short, the project aimed in developing the following functionalities: </div>
<div style="text-align: left;">
</div>
<ul style="text-align: left;">
<li>Integrate the third party authentication through Dropbox and Google </li>
<li>Create the new database schema for CloudCV </li>
<li>Create the REST APIs for the new database model</li>
<li>Modify and Integrate the NVIDIA's DIGITS Framework (Deep Learning Framework) and add the concept of users in DIGITS</li>
<li>Create the CloudStorage Upload APIs for uploading several Gigabytes of Model Jobs to Dropbox, Google Drive and Amazon S3 Cloud</li>
<li>Create the CloudStorage Download APIs for downloading the training and validation datasets from Dropbox, Google and Amazon S3 Cloud</li>
</ul>
<div>
Now, explaining the project in detail: </div>
<div>
<ul>
<li><b>Integrate the third party authentication through Dropbox and Google:</b><br /><br />For integrating the third party authentication, I used the <a href="https://github.com/pennersr/django-allauth" target="_blank">Django-Allauth</a> package for django. I already did a lot of research over the list of authentication packages available for Django. So, finally I chose Django-Allauth. It handled all the cases quite well except some due to which I needed to change that so that it satisfied the needs. Integrating this was not that tough, but creating a beautiful UI was a big problem for me. I used the <a href="http://materializecss.com/" target="_blank">Materializecss</a> (based out of Material Design) for creating the layouts.</li>
<li><b>Create a new Database Schema</b><br /><br />Creating a database schema and normalizing it properly has always been a challenge for me. I brainstormed a lot for the database schema and finally after a lot of discussion with mentors over this topic, we came to a conclusion and the database schema looked like as shown here <a href="http://www.deshraj.in/cloudcv_db" target="_blank">http://www.deshraj.in/cloudcv_db</a>.</li>
<li><b>Create REST APIs for new Database Model</b><br /><br />That was my first time when I built REST APIs. Before going into depth, I would like to say that REST is just AWESOME ;) I loved the concept. For creating the APIs, I preferred the DRF(<a href="http://www.django-rest-framework.org/" target="_blank">Django REST Framework</a>). DRF has a lot of out of box functionalities that helps a developer very much in building the RESTful Architecture.</li>
<li><b>Inegrating Workspaces in DIGITS</b><br /><br />This task involved working on the DIGITS Framework and modifying it for adding the concept of workspaces and users. About DIGITS: Deep Learning GPU Training System is a webapp for training deep neural networks. The official source code repository of DIGITS is <a href="https://github.com/NVIDIA/DIGITS">https://github.com/NVIDIA/DIGITS</a>. The basic idea behind creating workspaces in DIGITS is to facilitate the collaboration of several researchers, data-scientists to work together. This will create a platform for them to work collaboratively. After integrating workspaces, I needed to connect the both Django(CloudCV Server) with Flask(DIGITS) to support a single authentication system. So, the session was managed in CloudCV Server and DIGITS server got the Readonly access to sessions so as to check the logged in user. For managing sessions, I used the <a href="https://github.com/hellysmile/django-redis-sessions-fork" target="_blank">Redis_Session Fork</a>. The implementation of sharing single session between django and is a crucial part of the project.</li>
<li><b>Building Cloud Storage API </b><br /><br />This Cloud Storage API is one of the prominent features of CloudCV forked DIGITS. Using this API, the models can be easily uploaded and downloaded from cloud storages like Dropbox, Google Drive and Amazon S3 Cloud. Speaking about the technology, <b><a href="http://boto.readthedocs.org/en/latest/ref/s3.html" target="_blank">Boto S3</a> </b>is used to fetch the data from S3 buckets. </li>
<li><b>Planning after GSOC 2015</b><br /><br />I have been contributing to open source projects from around 11 months and I love to do that. So, I am continuing my work on CloudCV. Also, I am contributing to the Main Repository of NVIDIA DIGITS so as to add other functionalities and help the Researchers and Data Scientists around the world who are using it. </li>
</ul>
<div>
<br /></div>
</div>
<div>
It has been the most challenging summer for me that improved my coding skills a lot. I would recommend that one should start contributing to the Open Source Projects as early as possible because that teaches you how the big Organizations like Mozilla, Google, Microsoft etc works on their projects. Also, it gets added to your CV that is a big plus. </div>
<div>
<br />
If you have any comments, then do comment below the post. Sorry for my bad composition :) :) </div>
<div>
<br />
My Github: <a href="http://github.com/deshraj">http://github.com/deshraj</a><br />
<br /></div>
<div>
Lastly, I would say that </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_4OPrZkan0YwxzesNCKEfkj9T2WRegZwMg9DuAzN5ygIyK458O1VnIgmPBMvwAUxZYcKOkXJgGcAy-iQg9nALl-1HgZNzr944oVbhor8yZ6EFEkoElQaz6VpubarIkoCipM3wNzOxJE/s1600/KbXPO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_4OPrZkan0YwxzesNCKEfkj9T2WRegZwMg9DuAzN5ygIyK458O1VnIgmPBMvwAUxZYcKOkXJgGcAy-iQg9nALl-1HgZNzr944oVbhor8yZ6EFEkoElQaz6VpubarIkoCipM3wNzOxJE/s400/KbXPO.png" width="400" /></a></div>
<div>
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com2tag:blogger.com,1999:blog-5524955658910717295.post-20357032940954420082015-06-06T06:39:00.000-07:002015-06-06T06:41:03.849-07:00Install Caffe on Ubuntu 14.04 the right way<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="font-stretch: normal; line-height: 98px; margin: 0px; padding: 5px 0px; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 20px; line-height: 40.9999961853027px;">What is Caffe? Why it is used ?</span></h2>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: #fbfaf7; line-height: 24px;">Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by the Berkeley Vision and Learning Center (</span><a href="http://bvlc.eecs.berkeley.edu/" style="background-color: #fbfaf7; border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">BVLC</a><span style="background-color: #fbfaf7; line-height: 24px;">) and by community contributors.</span></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">Before beginning the installation, I would like to tell you that its a great pain in ass installing the Caffe. </span></div>
<h2 style="text-align: left;">
<b><span style="font-family: Arial, Helvetica, sans-serif;">Installation: </span></b></h2>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">First, you need to install the general dependencies using the following command:</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
<div>
<div style="text-align: left;">
<span style="background-color: #eeeeee;"><code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-family: 'Courier New', Courier, monospace; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Courier New, Courier, monospace;">sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev</span> </code><span style="font-family: Courier New, Courier, monospace; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; white-space: pre-wrap;">libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler</span></span></div>
<div style="text-align: left;">
<span style="background-color: #eeeeee;"><span style="font-family: Courier New, Courier, monospace; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; white-space: pre-wrap;"><br />
</span></span></div>
</div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">After installing these, you need to install three more dependencies:</span></div>
<div>
<ul style="text-align: left;">
<li><span style="color: black;"><a href="https://developer.nvidia.com/cuda-zone" style="background-color: #fbfaf7; border: 0px; font-family: 'Open Sans', sans-serif; font-size: 14px; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><b>CUDA</b></a><span style="background-color: #fbfaf7;"><span style="font-family: Open Sans, sans-serif;"><span style="font-size: 14px; line-height: 24px;"> is required for GPU mode. Installing CUDA is optional but it is recommended for better performance. </span></span><br />
<span style="font-family: Open Sans, sans-serif;"><span style="font-size: 14px; line-height: 24px;">To install CUDA, you can visit the link <a href="https://developer.nvidia.com/cuda-downloads">https://developer.nvidia.com/cuda-downloads</a> and then you can download CUDA for Ubuntu 14.04. Start the download and go get some coffee since it is quite large and will take time to download. After successful download, install it. </span></span></span></span></li>
<li><span style="background-color: #fbfaf7;"><span style="font-family: Open Sans, sans-serif;"><span style="font-size: 14px; line-height: 24px;"><b>BLAS </b></span></span></span><span style="background-color: #fbfaf7; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 24px;">: Install ATLAS by </span><code style="background-color: #eeeeee; border: 0px; font-stretch: inherit; line-height: 14px; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Courier New, Courier, monospace;">sudo apt-get install libatlas-base-dev</span></code><span style="background-color: #fbfaf7; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 24px;"> or install OpenBLAS or MKL for better CPU performance.</span></li>
<li><span style="background-color: #fbfaf7; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 24px;"><b>BOOST : </b>BOOST C++ library can be downloaded and installed through <a href="http://sourceforge.net/projects/boost/files/boost/1.58.0/" target="_blank">Sourceforge</a>.</span></li>
<li><span style="background-color: #fbfaf7; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 24px;"><b>OpenCV 2.4 or above: </b>For installing OpenCV, follow this <a href="http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html" target="_blank">link</a>. </span></li>
<li><span style="background-color: #fbfaf7; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px;"><b>Python: </b>If you use the default python, then</span><span style="background-color: #fbfaf7; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px;"> you will need to </span><span style="background-color: #eeeeee; font-family: Courier New, Courier, monospace; line-height: 24px;">sudo apt-get install python-dev</span><span style="background-color: #fbfaf7; font-size: 14px; line-height: 24px;"><span style="font-family: Courier New, Courier, monospace;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">package.</span></span></li>
</ul>
<h2 style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="line-height: 24px;">Compilation Part:</span></span></h2>
</div>
<div>
Now as you have installed the prerequisites on your system, so now you need to edit the config file (Makefile.config). Create the config file by copying the contents of Makefile.config.example file to Makefile.config using the following command:</div>
<div>
<br />
<div style="text-align: left;">
<span style="background-color: #eeeeee; text-align: center;"><span style="font-family: Courier New, Courier, monospace;">cp Makefile.config.example Makefile.config</span></span></div>
</div>
<div style="text-align: left;">
<span style="background-color: #eeeeee; text-align: center;"><br />
</span></div>
<div style="text-align: left;">
<span style="background-color: white; text-align: center;">After this, you need to change the configurations in Makefile.config file. Change the config according to the following conditions:</span></div>
<div>
<ul style="background-color: #fbfaf7; border: 0px; font-size: 14px; font-stretch: inherit; line-height: 24px; margin: 0px 0px 22px; padding: 0px 0px 0px 25px; vertical-align: baseline;">
<li style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-align: left; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">For cuDNN acceleration, you should uncomment the <code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; vertical-align: baseline;">USE_CUDNN := 1</code> switch in <code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; vertical-align: baseline;">Makefile.config</code>.</span></li>
<li style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">For CPU-only Caffe, uncomment <code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; vertical-align: baseline;">CPU_ONLY := 1</code> in <code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; vertical-align: baseline;">Makefile.config</code>.</span></li>
</ul>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 24px;">For the lazy ones, here is the complete the configuration of my Makefile.</span></span><br />
<div>
<pre class="brush: html"><pre></pre>
<pre class="brush: html"><code>
## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
#CPU_ONLY := 1
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++
# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
CUDA_DIR := /usr
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas
# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib
# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib
# Uncomment to support layers written in Python (will link against Python libs)
# WITH_PYTHON_LAYER := 1
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib
# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1
# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0
# enable pretty build (comment to see full commands)
Q ?= @
</code></pre>
<pre class="brush: html"></pre>
</pre>
</div>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 24px;">
</span></span> <span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 24px;">After making successful changes in the configuration file, you need to run the following commands:</span></span></div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: left;">
<span style="background-color: #eeeeee;"><span style="font-family: Courier New, Courier, monospace;">make all</span></span></div>
<div style="text-align: left;">
<span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;">make test</span></div>
<div style="text-align: left;">
<span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;">make runtest</span></div>
<div style="text-align: left;">
<span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"><br />
</span></div>
</div>
<div>
(Before running next two compilation commands, you need to make sure that you have set PYTHON and MATLAB path in Makefile.config)</div>
<div>
To compile the PYTHON wrappers, you need to run the command,</div>
<div>
<br /></div>
<div>
<span style="background-color: #eeeeee;"><span style="font-family: Courier New, Courier, monospace;">make pycaffe</span></span></div>
<div>
<br /></div>
<div>
To compile the MATLAB wrappers, you need to run the command ,</div>
<div>
<br /></div>
<div>
<span style="background-color: #eeeeee;"><span style="font-family: Courier New, Courier, monospace;">make metacaffe</span></span><br />
<span style="background-color: #eeeeee;"><span style="font-family: Courier New, Courier, monospace;"><br />
</span></span></div>
<div>
Finally, if you have reached here, then you have installed Caffe on your System successfully. I am sure that after the successful installation of Caffe, you will feel like Heaven ;) </div>
<h2 style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Errors that may occur during Installation</span><span style="font-family: Arial, Helvetica, sans-serif;">: </span></h2>
<ul style="text-align: left;">
<li><b style="font-family: Arial, Helvetica, sans-serif;">nvcc is not found</b><span style="font-family: Arial, Helvetica, sans-serif;"> during the </span><span style="background-color: #eeeeee;"><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Courier New, Courier, monospace;">make all</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span></span><span style="font-family: Arial, Helvetica, sans-serif;"> command. To solve this error, install the whole nvidia-cuda-toolkit using the following command:</span><span style="background-color: #eeeeee; white-space: inherit;"><span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><span style="font-family: Courier New, Courier, monospace;">sudo apt-get install nvidia-cuda-toolkit</span></span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; padding: 0px; white-space: inherit;"><span style="font-family: Arial, Helvetica, sans-serif;"><b>cudnn.hpp does not exist:</b> </span></code></span><code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; padding: 0px; white-space: inherit;"><span style="font-family: Arial, Helvetica, sans-serif;">To fix this error, you need to place the cudnn.hpp file that resides in the tar file( for eg. </span></code><b style="font-family: Arial, Helvetica, sans-serif;">cudnn-6.5-linux-x64-v2</b><span style="font-family: Arial, Helvetica, sans-serif;"> in my case</span><span style="font-family: Arial, Helvetica, sans-serif; white-space: inherit;">) you just downloaded. Copy the file cudnn.hpp to ./caffe/include/ directory with appropriate permissions(644) . After placing the file there, then run the make commands again.</span><span style="font-family: Arial, Helvetica, sans-serif; white-space: inherit;"><br />
This issue was also also reported on github Caffe repository at </span><a href="https://github.com/BVLC/caffe/issues/1325" style="font-family: Arial, Helvetica, sans-serif;">https://github.com/BVLC/caffe/issues/1325</a><span style="font-family: Arial, Helvetica, sans-serif;">. </span></li>
</ul>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Now you are all done. Now, you can start playing with examples like <a href="http://caffe.berkeleyvision.org/gathered/examples/mnist.html" target="_blank">Training LeNet on MNIST</a>. </span><br />
<h2 style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>End-Note:</b></span></h2>
<div style="background-color: white; box-sizing: border-box; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px; text-align: left;">
</div>
<ul style="background-color: white; box-sizing: border-box; line-height: 20px; margin-bottom: 10px; margin-top: 0px;">
<li style="box-sizing: border-box;"><span style="font-family: Arial, Helvetica, sans-serif;">Hope this page helps reduce some effort required to install Caffe on your machines. To view our bigger attempts at reducing this overload, checkout the <a href="http://cloudcv.org/" style="background: 0px 0px; box-sizing: border-box; text-decoration: none;">CloudCV</a> organisation page.</span></li>
</ul>
<ul style="background-color: white; box-sizing: border-box; line-height: 20px; margin-bottom: 10px; margin-top: 0px;">
<li style="box-sizing: border-box;"><span style="font-family: Arial, Helvetica, sans-serif;">The <a href="https://github.com/BVLC/caffe/issues" style="background: 0px 0px; box-sizing: border-box; text-decoration: none;">BVLC Caffe issues</a> and the caffe-users <a href="https://groups.google.com/forum/#!forum/caffe-users" style="background: 0px 0px; box-sizing: border-box; text-decoration: none;">google-group</a> are excellent sources to get your queries solved and debug the errors you face.</span></li>
</ul>
<ul style="background-color: white; box-sizing: border-box; line-height: 20px; margin-bottom: 10px; margin-top: 0px;">
<li style="box-sizing: border-box;"><span style="font-family: Arial, Helvetica, sans-serif;">I have taken references from a lot of sources I found online and one can easily find them through the sources cited in above bullet. This wiki is for educational purposes only.</span></li>
</ul>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com2tag:blogger.com,1999:blog-5524955658910717295.post-68955521499078461622015-05-30T18:48:00.001-07:002015-05-30T18:48:58.025-07:00Django-Allauth vs. Django Social Auth vs. Python-Social-Auth<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt; text-align: center;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Process Flow of </span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Authentication and Authorization using </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">OAuth 2.0 Protocol :</span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt; text-align: center;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="webflow.png" height="377px;" src="https://lh3.googleusercontent.com/dIfUwytgFGTSgthcG_npDIZsawfvZUDXZTj4zjP-uBoq-EQ97ZGAXUWhmICf2k0DK6wbzU2Ypbzw2OQhJNt_ssh3v8LcEcWlkC-MTRFNrnKd1ImEofaY368nEifhOmAGNPHdblE" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="320px;" /></span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt; text-align: center;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Fig: Process flow of Authentication through Google using OAuth 2.0</span></div>
<div dir="ltr" style="line-height: 1.8327272415161155; margin-bottom: 17pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The whole process flow described above involves four steps. Firstly, the OAuth 2.0 credentials like client ID and client secret are obtained from the provide(Google Developers Console in this case) for the web application. Now, to access any API, one needs to get the access token from the provider using the set of client ID and client Secret . </span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">After the user login, the user is asked whether they are willing to grant the permissions that the application is requesting. This process is called </span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">user consent</span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. If the user grants the permission, the provider Authorization Server sends the application an access token (or an authorization code that the application can use to obtain an access token). After the application obtains an access token, it sends the token to the Provider API in an HTTP authorization header. Access tokens have limited lifetimes. If the application needs access to provider's API beyond the lifetime of a single access token, it can obtain a refresh token. A refresh token allows an application to obtain new access tokens.</span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: white; color: #222222; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This is the whole workflow of the authorization using OAuth 2.0 protocol. </span></div>
<b id="docs-internal-guid-afd20b94-a7a5-6930-6715-09773db77e7e" style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Majorly three django packages are used for integrating social authentication. Below, they are described briefly: </span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Django-allauth</span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">:</span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b>Codebase</b></span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: </span><a href="https://github.com/pennersr/django-allauth" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://github.com/pennersr/django-allauth</span></a><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-left: 36pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It is an integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. In simple terms, it is a combination of simple login and registration along with social authentication system. </span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-left: 36pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django-Allauth is the most popular Django package used for Authentication purposes. Best thing about it is that it is available as open source which speeds up the development process due to collaborations with the developers all around the world. </span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Advantages of Django-allauth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 0pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Support for Python 2.6, 2.7 and 3.3 </span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Support for Django Version 1.4.3 and above.</span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Supports Social authentication through Dropbox and google using OAuth2.0</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Supports multiple authentication schemes (e.g. login by user name, or by e-mail)</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Multiple strategies for account verification (ranging from none to e-mail verification)</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Support to connect multiple social accounts to a Django user account.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Consumer keys, tokens make use of the Django sites framework. This is especially helpful for larger multi-domain projects, but also allows for for easy switching between a development (localhost) and production setup without interfering with your settings and database.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Rapidly gaining traction and improving day by day.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">FAQ page solves most of the problems related to Django-allauth. Otherwise most problems are solved on StackOverflow under the tag </span><a href="http://stackoverflow.com/questions/tagged/django-allauth" style="text-decoration: none;"><span style="background-color: #fdfdfa; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">#django-allauth</span></a><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. Also mailing list is also available to solve further issues if any. </span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It is well tested than other Django authentication packages; credits to consistent development work going on.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The installation, configuration is easy to get started with. </span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Pre-defined templates are available. Its upto the developer whether he wants to customize them or not. </span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Also, one can easily add the new backends if required.</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b><br />
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Disadvantages of django-allauth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">While working on it and researching more about it, I found that it has some documentation gaps that need to be fixed. </span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It can get problematic for beginners since it involves </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">series of small but time-consuming hurdles. </span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Django Social Auth:</span></div>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b>Codebase</b></span><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: </span><a href="https://github.com/omab/django-social-auth" style="text-decoration: none;"><span style="background-color: #fdfdfa; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://github.com/omab/django-social-auth</span></a></div>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django Social-auth library is a Django package that was made for the social authentication. But the library is </span><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">deprecated</span><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> now and has migrated to </span><a href="https://github.com/omab/python-social-auth" style="text-decoration: none;"><span style="background-color: #fdfdfa; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Python-social-auth</span></a><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> for providing better support to several frameworks and ORMs.</span></div>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Advantages of Django-Social-Auth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Provides social authentication using OAuth and OpenId mechanism</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Support for Django, Flask, Pyramid, Webpy frameworks.</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Disadvantages of Django-Social-auth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This package is deprecated.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">No support for Python 3.x</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Development on its codebase has stopped.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Not well documented. It lacks FAQ page for bug fixing.</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Python-Social-Auth:</span></div>
<div dir="ltr" style="line-height: 1.5600000000000003; margin-bottom: 7pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><b>Codebase</b>: </span><a href="https://github.com/omab/python-social-auth" style="line-height: 1.56; text-decoration: none;"><span style="background-color: #fdfdfa; color: #1155cc; font-family: Cambria; font-size: 15px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://github.com/omab/python-social-auth</span></a></div>
<div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Python social-auth is </span><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">easy-to-setup</span><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> authentication system that provides vast support. It supports several frameworks and auth providers. It has migrated from </span><a href="https://github.com/omab/django-social-auth" style="text-decoration: none;"><span style="background-color: #fdfdfa; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">django-social-auth</span></a><span style="background-color: #fdfdfa; color: #090000; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to generalize the package to provide a vast support and implement a common interface to </span><span style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">define new authentication providers from third-parties and bring support for more frameworks and ORMs.</span></div>
<b style="font-weight: normal;"><br /></b><br />
<div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Advantages of Python-Social-auth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Provides support for frameworks such as Django, Flask, Webpy, Pyramid and Tornado.</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Supports Python 3.x</span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Supports social authentication through Dropbox, Google, etc. using OAuth 2.0 </span></div>
</li>
<li dir="ltr" style="background-color: #fdfdfa; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">F</span><a href="http://psa.matiasaguirre.net/docs/strategies.html" style="text-decoration: none;"><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">rameworks API</span></a><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> is provided that ease the implementation to increase the number of frameworks supported.</span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ORMs like</span><span style="background-color: white; color: #333333; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="http://www.sqlalchemy.org/" style="text-decoration: none;"><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">SQLAlchemy</span></a><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://docs.djangoproject.com/en/dev/topics/db/" style="text-decoration: none;"><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django ORM</span></a><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and </span><a href="http://mongoengine.org/" style="text-decoration: none;"><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Mongoengine</span></a><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> are supported</span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Storage API is provided to add support to more ORMs. </span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Multiple social accounts can be associated to a single user.</span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Basic user data population, to allow custom fields values from providers response.</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Disadvantages of Python Social-Auth:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Not well documented. </span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Newer package. So, we cannot predict the future developments. </span></div>
</li>
<li dir="ltr" style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Lot of issues(98 issues) are listed on Github. </span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.9200000286102274; margin-bottom: 12pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Comparison between the three authentication packages:</span></div>
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none; width: 624px;"><colgroup><col width="*"></col><col width="*"></col><col width="*"></col><col width="*"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Features</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django-Allauth</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django-Social-auth</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Python-Social-auth</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Commits on Codebase</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Regular and fast- developing</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">No commits made since 6 months.</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Regular commits on codebase</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Python 3.x Support</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">NO</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Authentication </span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Simple authentication + </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Social authentication </span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Only </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Social authentication</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Only </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Social authentication</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Predefined and customizable</span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Templates</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">NO</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">NO</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Framework Support</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django, Flask, Webpy, Pyramid and Tornado</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django, Flask, Webpy, Pyramid and Tornado</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Total Commits</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1072</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1611</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1384</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Development Status</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Beta</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Beta</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Beta</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">OAuth 2.0 Support</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Current Stable Version</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0.19.1</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0.7.28</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0.2.2</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Support for Dropbox and Google</span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">YES</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Repository Forks</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">545</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">735</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">458</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Total no. of Contributors</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">150</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">167</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">148</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Repo. watchers</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1650</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2169</span></div>
</td><td style="border-bottom: solid #d9d9d9 1px; border-left: solid #d9d9d9 1px; border-right: solid #d9d9d9 1px; border-top: solid #d9d9d9 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1502</span></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Selecting the Appropriate Package:</span></div>
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The package which does not affects the scalability of the project must be given more weightage among all other packages.</span></div>
<br />
<div dir="ltr" style="line-height: 1.558636301214041; margin-bottom: 6pt; margin-top: 4pt;">
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">From previous work experience and research on authentication libraries, </span><span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Django-Allauth turns out to be the most appropriate choice of them all. So. in my view, django-allauth should be used for integration. </span></div>
<div>
<span style="background-color: white; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com25tag:blogger.com,1999:blog-5524955658910717295.post-40033759730713887252015-04-06T12:16:00.000-07:002015-04-06T12:25:39.919-07:00How to fetch Images from different Social Media Networks using their APIs using O. Auth 2.0 Protocol?<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">First Open the Facebook graph explorer at </span><a href="https://developers.facebook.com/tools/explorer/145634995501895" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://developers.facebook.com/tools/explorer/145634995501895</span></a><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We will get the web page similar to shown as below: </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="fb3.png" height="351px;" src="https://lh6.googleusercontent.com/9fzBYCpV-zacYeVOqTPw0aCZlrwsaU1Xz76EeSJn9GRjnX516QR3IPIT7-lNYMwXLZ_LmcHdnSIcWFiEhvkygA0-ueA-XUgC_TpckNgzHY5JcFd2yR0mpt9_eaexFLk6VrFWTFA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2. Then, we need to click on Get Access Token button select the data that we want the users to provide us.After clicking the button ”Get Access Token”, we will get a screen similar to this and from the given options, we need to select the details that we want to fetch. </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">(Screenshot on next page)</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="fb2.png" height="351px;" src="https://lh3.googleusercontent.com/H-XWlAwZl9t4kGLhumhkqy7AEJRSxV4aUPFolh6qOgzYErN_vcuAvxyoH_gjkcsg-MZNRrA-h23G3fwuRJ3DAX46fgWY6Bdvk-ZjF51eBo6BZcRMKpAgI7bRtVCwZ5M4NEebrzo" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3. After getting the access token, we can now use the filters provided on the left side as shown in the figure below. Select the details that you want. For example, in this case, we need to select the ‘albums’. In albums category, we need to select ‘photos’ field and then in ‘photos’ field, we need to select the ‘source’ field that will provide us the url of the images stored. </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="fb4.png" height="351px;" src="https://lh4.googleusercontent.com/WRdh5Th_d4YbJYjGCao5O0CLHIcapdmSOn03HGKmOjCrWxs6zT8fxNLdQCe-Vg0iMwNjTQ3jTg9DrllaBawKEQip9FFEuwg72jdZglJbcvcvvSQTZoCk_3tqFtovT4E7wZibIXI" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="fb5.png" height="351px;" src="https://lh3.googleusercontent.com/xRBt_0rWf4VO8CNq83fCddTDkwq2kLB9QO8a13Du94irVLjBx3ulblZzsVegcUVuYQvA2qUuANkyo-GDH5KlVpFxNpazTD74NLQ6DYBXIg7j2PvVtsQvo0FsprdyG5tI6FJ6JF8" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4. After selecting the details, we need to press ‘submit’ button and it will make a GET request and give the data of all photos in users albums along with their source url and hence we can get the images through the json data that we get as shown in screenshot below. </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="fb6.png" height="351px;" src="https://lh3.googleusercontent.com/2T_OfZtUW72GT6LPSk1u14YcTxAymJAwOTG_YErf_VgqppmVRP9PbGLyNMHVyozfWuAzRrQhf6gCgnuIEao2sdeSdKtcTG4gE84IZLeQn0R75RAt_tIb7IqA7wiGFRCzrer2kRk" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Using the Facebook Graph API in python, we will get the same results as shown above. And hence, we can extract the urls of all the images from json data that we get and download the images on server. Finally, we can easily use them according to our use. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Fetching images from Dropbox using its API:</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Dropbox doesn’t recommend to fetch all the folders and files in a single API call. There are two ways to fetch the images :</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Fetch one by one using get_file_and_metadata method:</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A simple example for fetching a file : </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">#python code for fetching a file gsoc.txt and saving in gsoc.txt on local machine </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">f, metadata = client.get_file_and_metadata('/gsoc.txt')</span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">out = open(‘gsoc.txt', 'wb')</span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">out.write(f.read())</span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">out.close()</span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">print metadata</span><span style="background-color: #d9d9d9; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">get_file_and_metadata </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">method returns an httplib.HTTPResponse that we should .read() from to get the full response.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">See this link </span><a href="https://www.dropbox.com/developers/core/start/python#downloading" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.dropbox.com/developers/core/start/python#downloading</span></a><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> for more information about this method.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Search for the particular file types and then download:</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">There's no method to get a recursive list of files, so you would need to use</span><a href="https://www.dropbox.com/developers/core/docs#search" style="text-decoration: none;"><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">/search</span></a><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to find files or</span><a href="https://www.dropbox.com/developers/core/docs#delta" style="text-decoration: none;"><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">/delta</span></a><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> with no cursor to get the full list of files.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">See the link for more info: </span><a href="http://stackoverflow.com/questions/18270357/retrieve-all-image-files-using-dropbox-core-api" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://stackoverflow.com/questions/18270357/retrieve-all-image-files-using-dropbox-core-api</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 19px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Fetching images from Google Drive:</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Fetching images from Google Drive involves two steps: </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span></div>
<br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">List all the folders and files in the directory to get the fileId and other metadata about the files.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This step involves the use of Children:list method for getting the details and metadata of the files and folder in the particular folder or root directory.</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">For example, searching for folders and files found in root directory in the image shown below:</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="g1.png" height="351px;" src="https://lh4.googleusercontent.com/wM1CXMoLKk4YROpa1sBom5-g1fpi7SePJ1_C9RbaYLNawRSFdUq96O59rV9WmL7Nj1QrqwDuB1ewNFtnjckRTSpQWS57loxeZH_jriBX4oROvmezWs8dfpySsAUGoA5KoaDaEG8" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">After the search is completed, we get result in JSON format as shown in the next image:</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="g2.png" height="351px;" src="https://lh5.googleusercontent.com/chDXLLFdg4uHWGAJJcBItpiOM7YbQj_L8NzEk-fKlU57VRErn-rUGQGKMtZw4IKmiIKQH2sWqSlB8-wfpSq_wb2-DnLGBtI3R4yT2SThxYgejnh8QetnuACn0vaXQIZVCLxEiaA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">More details about this method can be found at: </span><a href="https://developers.google.com/drive/v2/reference/children/list#try-it" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://developers.google.com/drive/v2/reference/children/list#try-it</span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">After getting the fileID, the final step is to get the url for downloading the files and folders. The files are downloaded using the </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">get method </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">of Google Drive API. </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The code of downloading the files using the get method is self provided by Google at </span><a href="https://developers.google.com/drive/v1/reference/files/get#examples" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://developers.google.com/drive/v1/reference/files/get#examples</span></a><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. </span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span><span style="background-color: transparent; color: black; font-family: Cambria; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This makes the whole process of fetching the images more easier. </span></div>
</li>
</ol>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-64879582524183819032015-03-15T10:48:00.000-07:002015-03-17T12:30:40.834-07:00Deploying a Django Web Application on AWS Instance<div dir="ltr" style="text-align: left;" trbidi="on">
Hi, someone asked me to make a doc for deploying a django application on an AWS instance. So, I am making this blog post for that.<br />
<h3 style="text-align: left;">
<u>Prerequisite:</u></h3>
<div>
1. Ubuntu or any other flavour of Linux</div>
<div>
2. Knowledge of Git </div>
<div>
3. A Github/Bitbucket Account and </div>
<div>
4. Obiviously an AWS account</div>
<div>
<br /></div>
<div>
<b><u>Setting up Account on AWS:</u></b></div>
<div>
<br /></div>
<div>
So, first of all you need to have an account on AWS. If you Dont have one then you can create the account by going to the link <a href="http://aws.amazon.com/">http://aws.amazon.com</a> and follow the instructions in setting up the account. </div>
<div>
<br /></div>
<div>
<b><u>Instance Creation on AWS:</u></b></div>
<div>
<br /></div>
<div>
After setting up the account, you need to create an instance of EC2 from your AWS account and you </div>
<div>
will be asked to choose a machine, then choose 64 bit Ubuntu 14.04 HVM. During instance creation, you will be asked to generate the key file for logging on to your instance, then type any name you like and click "Download the File". Keep the file safe since you cannot download it again. </div>
<div>
<br /></div>
<div>
After downloading the key file(extension is "*.pem") then your instance will be created and it will assigned an IP Address and copy that IP address for the future use. </div>
<div>
<br /></div>
<div>
<b><u>Configuring the Instance:</u></b></div>
<div>
<br /></div>
<div>
After logging into your AWS Account , you will see a lot of services that are provided by the AWS. From those services, select the first one i.e EC2 CLOUD. Then, in the next screen, wou will see that one instance is running. You would need to configure the port of the instance by going on to the Security Group that comes on the left side of the AWS console Screen. Click on the security group and then below click at Inbound Option then set TYPE: All Traffic , Protocol: All, Port Range: All.</div>
<div>
<br /></div>
<div>
Finally, you all configured. </div>
<div>
<br /></div>
<div>
<b><u>Logging into AWS Instance :</u></b><br />
<b><u><br /></u></b>
<br />
<ol style="text-align: left;">
<li>Open terminal and type the following command:</li>
</ol>
<blockquote class="tr_bq">
<code>sudo ssh -i name_of_key_file.pem ubuntu@Instance_ip_address</code></blockquote>
<blockquote class="tr_bq">
for example: <code>sudo ssh -i deshraj.pem ubuntu@54.123.456.78</code> </blockquote>
( Note: i am assuming that the .pem file is there in the home directory)<br />
<br />
2. If nothing gets wrong then you will be successfully logged in to your instance. Now you need to install some packages to run your django web application.<br />
<br />
3. I am listing the packages that you need to install :<br />
<br />
<code>sudo apt-get udpate</code><br />
<code>sudo apt-get install python-dev</code><br />
<code>sudo apt-get install python-pip</code><br />
<code>sudo apt-get install apache2</code><br />
<code>sudo apt-get update</code><br />
<code>pip install django</code><br />
<code> sudo apt-get install libapache2-mod-wsgi</code><br />
<code> sudo a2enmod wsgi</code><br />
<code> sudo service apache2 restart </code><br />
<code><br /></code>
(Please install the other packages yourself if I would have missed something)<br />
<br />
4. After the installation you are good to go and you need to clone your repository of django project.<br />
<br />
For Cloning type the following command :<br />
cd /var/www/<br />
git clone link_to_git_repository<br />
for example : git clone https://github.com/DESHRAJ/Youtube-Downloader.git<br />
<br />
5. Now you need to edit the apache config present at /etc/apache2/apache2.conf.<br />
<br />
To edit that file, type the command:<br />
nano /etc/apache2/apache2.conf<br />
<br />
At the end of this file, add the following lines according to location of your django project :<br />
</div>
<div>
<span class="nb" style="font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; font-size: 14px; line-height: 21px; white-space: pre-wrap;">WSGIScriptAlias</span><span style="font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; font-size: 14px; line-height: 21px; white-space: pre-wrap;"> / </span><span class="sx" style="font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; font-size: 14px; line-height: 21px; white-space: pre-wrap;">/path/to/mysite.com/mysite/wsgi.py</span><br />
<pre style="font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; font-size: 14px; font-variant-ligatures: no-common-ligatures; line-height: 21px; margin: 15px 20px; text-rendering: optimizespeed; white-space: pre-wrap; word-wrap: break-word;"><span class="nb"> WSGIPythonPath</span> <span class="sx">/path/to/mysite.com</span>
<span class="nt"> <Directory</span> <span class="s">/path/to/mysite.com/mysite</span><span class="nt">></span>
<span class="nt"> <Files</span> <span class="s">wsgi.py</span><span class="nt">></span>
<span class="nb"> Require</span> <span class="k">all</span> granted
<span class="nt"> </Files></span>
<span class="nt"> </Directory></span></pre>
<div style="font-variant-ligatures: no-common-ligatures; line-height: 21px; margin: 15px 20px; text-align: left; text-rendering: optimizespeed; white-space: pre-wrap; word-wrap: break-word;">
<span class="nt"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Or if you have problem in changing the .conf file,then follow the tutorial at this link: </span><a href="https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/modwsgi/" style="font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; font-size: 14px;">https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/modwsgi/</a></span><br />
<br />
Now you are all done. Just restart the apache2 web server adn you are all done.<br />
Commanfe for restartiing the paache server :<br />
<code>sudo service apache2 restart</code><br />
<br />
Finally you have successfully deployed the django application on AWS instance. :) </div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-74272439722819096972015-02-25T15:26:00.000-08:002015-03-15T09:52:47.241-07:00Working on Open Source Projects teaches a lot<div dir="ltr" style="text-align: left;" trbidi="on">
I am writing this blog psot in context to the open source projects on which I have worked previously.<br />
<div>
Contributions in any Open Source projects teaches a lot to anyone who is willing to code and learn. </div>
<div>
<br /></div>
<div>
<h2 style="text-align: left;">
<b style="background-color: white;">TL;DR</b></h2>
</div>
<div>
<ul style="text-align: left;">
<li>Don't get confused in participating in any open source project. Just go ahead.</li>
<li>The developers working on the projects are very helping in nature. They are always ready to help you.</li>
<li>If you think that you don't know the whole concepts of the particular technology, then start working on any project, it will help you to cover the areas in which you are weak. I have learned this from my experience. </li>
<li>So all I want to say is that just start doing it today itself. :) </li>
</ul>
<div>
<br /></div>
</div>
<div>
I would like to share my experience in Open Source: </div>
<div>
<ul style="text-align: left;">
<li>It was July 2014 and I was working as a Web Developer Intern in TLabs that is one of the top start-up accelerators in India. There I was reading the documentation of Django-allauth and I was configuring the django-allauth in my local repository. There I encountered a problem and then I found a bug :) and reported to my Senior Developer in the company. He then told me about the Open Source Projects and described me that how actually it works and how persons like me can fix this. Then I cloned the repository of django-allauth and made the changes according to me and then made a pull request and after a day my PR was merged. I felt happy for contributing to a big project on which only few developers who are real programmers code. Then I felt that I should start with some organization and start making some contribution to their projects. </li>
</ul>
<ul style="text-align: left;">
<li>Later on in Sept 2014, one day I just started making my Online Portfolio using the Impress JS library and while I was reading the docs, I found a documentation error in that and at that moment only I just made the pull request and it was merged successfully. Lastly I was successful in making my portfolio and it is live at <a href="http://www.deshraj.in/">http://www.deshraj.in</a> . This encouraged me a lot towards the open source projects.</li>
</ul>
<ul style="text-align: left;">
<li>After a week, I came to know about the<b> Open Hatch</b> (<a href="https://openhatch.org/">https://openhatch.org/</a>) , Basically it is a website that helps the new comers in the field of Open Source and helps them in choosing any open source project and lists them the bugs that they can fix for a head start. I just explored the website OpenHatch and wondered that why not I should contribute to OpenHatch ? Then I talked to mentor <b>Asheesh Laroia</b> (<a href="https://github.com/paulproteus">https://github.com/paulproteus</a>) and he helped me a lot in getting through the codebase and I fixed some bugs in OpenHatch's ohmainline repository. As the codebase was written in django, I was comfortable with it. </li>
</ul>
</div>
<div>
<ul style="text-align: left;">
<li>In Oct 2014, After fixing some of the bugs in OpenHatch, I moved onto projects in the <b>Mozilla Organization</b> . Then I started working on <b>Mozilla Fjord </b>that powers <a href="http://input.mozilla.org/">http://input.mozilla.org</a> . This project is mainly the feedback system of Mozilla for every product that Mozilla is having. It also involves the analysis of the data recorded from the users. Here I worked on bugs under mentors <b>WillkG</b> and <b>mythmon</b> and they helped me a lot in fixing the issues. I made mistakes but they corrected me. I was very much happy that I worked under some of the Top Developers of the world(Software Engineers of Mozilla) and they were guiding me to tackle a particular task. I worked on another project simultaneously named, <b>Mozilla Kitherder</b>, where <b>Yvan Boily</b> mentored me on the bug that I fixed. The bug in this project on whcih I was worked was the best of my all bugs that I have resolved yet since it involved a lot of changes in the codebase. </li>
</ul>
</div>
<div>
<ul style="text-align: left;">
<li>Currently I am working on the <b>Mochitests</b> (A testing framework of Mozilla) where I am mentored by <b>Joel Maher</b>. He is the coolest mentor I ever had. He helped in setting up the whole project repository and helped in setting up the Mozilla Central repository. Currently i am working on some bugs involved in Mochitest. I am thankful to the mentors who helped me in doing such great things and now feel that I should help some students and encourage them to start working on the projects like this. </li>
</ul>
<div>
<br /></div>
<h3>
</h3>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0Noida, Uttar Pradesh, India28.5355161 77.39102649999995328.312280599999998 77.068302999999958 28.7587516 77.713749999999948tag:blogger.com,1999:blog-5524955658910717295.post-49311311927757553912015-02-08T11:04:00.002-08:002015-03-15T09:53:56.553-07:00How to Run Django with mod_wsgi and Apache with a virtualenv Python environment on a Debian VPS<div dir="ltr" style="text-align: left;" trbidi="on">
<ul class="social-sharing" style="background-color: white; float: right; font-family: proxima-nova, sans-serif; font-size: 20px; line-height: 30px; margin: 0px; padding: 0px; position: absolute; right: 0px;">
<li class="shareBtn" id="sbTwitter" style="-webkit-transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease; box-sizing: border-box; clear: right; display: block; float: right; font-size: 12px; font-weight: 600; list-style: none; margin: 0px; max-height: 0px; opacity: 0; padding: 0px; position: relative; transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease;"><a href="http://twitter.com/share?text=How%20to%20Run%20Django%20with%20mod_wsgi%20and%20Apache%20with%20a%20virtualenv%20Python%20environment%20on%20a%20Debian%20VPS&url=https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps" style="-webkit-transition: left 0.3s ease; background-color: #2fa6f9; border-radius: 3px; border: 1px solid transparent; color: white; cursor: default; display: block; left: -10px; line-height: 13px; outline: none; padding: 10px 10px 9px; pointer-events: none; position: relative; text-align: center; text-decoration: none; transition: left 0.3s ease; width: 65px;" target="_blank" title="Share on Twitter"><br class="Apple-interchange-newline" /> TWEET</a></li>
<li class="shareBtn" id="sbFacebook" style="-webkit-transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease; box-sizing: border-box; clear: right; display: block; float: right; font-size: 12px; font-weight: 600; list-style: none; margin: 0px; max-height: 0px; opacity: 0; padding: 0px; position: relative; transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease;"><a href="https://www.facebook.com/sharer/sharer.php?u=https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps" style="-webkit-transition: left 0.3s ease; background-color: #2e579a; border-radius: 3px; border: 1px solid transparent; color: white; cursor: default; display: block; left: -10px; line-height: 13px; outline: none; padding: 10px 10px 9px; pointer-events: none; position: relative; text-align: center; text-decoration: none; transition: left 0.3s ease; width: 65px;" target="_blank" title="Share on Facebook"><span class="sIcon icon-facebook-B" style="font-family: community_icons; font-size: 13px; font-weight: normal; left: -2px; line-height: 1; speak: none; top: -1px;"></span> SHARE</a></li>
<li class="shareBtn" id="sbGoogle" style="-webkit-transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease; box-sizing: border-box; clear: right; display: block; float: right; font-size: 12px; font-weight: 600; list-style: none; margin: 0px; max-height: 0px; opacity: 0; padding: 0px; position: relative; transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease;"><a href="https://plus.google.com/share?url=https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps" style="-webkit-transition: left 0.3s ease; background-color: #db5b3c; border-radius: 3px; border: 1px solid transparent; color: white; cursor: default; display: block; left: -10px; line-height: 13px; outline: none; padding: 10px 10px 9px; pointer-events: none; position: relative; text-align: center; text-decoration: none; transition: left 0.3s ease; width: 65px;" target="_blank" title="Share on Google+"><span class="sIcon icon-google-plus-B" style="font-family: community_icons; font-weight: normal; line-height: 1; speak: none;"></span> SHARE</a></li>
<li class="shareBtn" id="sbYC" style="-webkit-transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease; box-sizing: border-box; clear: right; display: block; float: right; font-size: 12px; font-weight: 600; list-style: none; margin: 0px; max-height: 0px; opacity: 0; padding: 0px; position: relative; transition: max-height 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease;"><a href="https://news.ycombinator.com/submitlink?u=https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps&t=How%20to%20Run%20Django%20with%20mod_wsgi%20and%20Apache%20with%20a%20virtualenv%20Python%20environment%20on%20a%20Debian%20VPS" style="-webkit-transition: left 0.3s ease; background-color: #ff7b21; border-radius: 3px; border: 1px solid transparent; color: white; cursor: default; display: block; left: -10px; line-height: 13px; outline: none; padding: 10px 10px 9px; pointer-events: none; position: relative; text-align: center; text-decoration: none; transition: left 0.3s ease; width: 65px;" target="_blank" title="Submit to Hacker News"><span class="sIcon icon-hacker-news" style="font-family: community_icons; font-weight: normal; left: -2px; line-height: 1; speak: none;"></span> SHARE</a></li>
</ul>
<h1 class="content-title" style="background-color: white; color: #2d2d2d; font-family: proxima-nova, sans-serif; font-size: 40px; font-weight: 300; line-height: 1.2; margin: 0px 0px 10px; padding: 0px;">
<span style="font-size: 22px; letter-spacing: -0.5px;">Introduction</span></h1>
<div class="content-body tutorial-content" style="background-color: white; font-family: proxima-nova, sans-serif; font-size: 19px;">
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Working with Django applications, and Python applications in general, is a complex matter with many tools in use. There are multiple ways of achieving the same goal and often there is no single way to do things.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
One of the most popular ways of deploying Django applications to the web on a dedicated server is to use Nginx paired with Gunicorn. A great way to do that has already been described in depth in <a href="https://www.digitalocean.com/community/articles/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn" style="border-bottom-color: black; border-bottom-style: dotted; border-bottom-width: 1px; color: black; text-decoration: none;">this article</a>. It is however a quite popular scenario to host Django applications alongside existing websites served using Apache. We will try to cover the quick route to achieve that particular goal. Please note, however, that this is not a definitive guide to Django and Apache pairing and there are configuration aspects not covered here.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
This text will make several assumptions:</div>
<ul style="font-size: 16px; margin: 0px 0px 28px 28px; padding: 0px;">
<li style="box-sizing: border-box; clear: left; line-height: 28px; list-style: disc outside none; margin: 0px 0px 10px 10px; padding: 0px;"><div style="margin-bottom: 22px; padding: 0px;">
You have already set up your droplet with Debian 7.0 or later. There are many differences between different Linux distributions; therefore for the sake of clarity we will focus on a Debian server.</div>
</li>
<li style="box-sizing: border-box; clear: left; line-height: 28px; list-style: disc outside none; margin: 0px 0px 10px 10px; padding: 0px;"><div style="margin-bottom: 22px; padding: 0px;">
You are at least somewhat familiar with common Python tools such as <span style="font-weight: 600;">pip</span> package manager and<span style="font-weight: 600;">virtualenv</span> for making virtual environments. These tools are wonderfully explained in <a href="https://www.digitalocean.com/community/articles/common-python-tools-using-virtualenv-installing-with-pip-and-managing-packages" style="border-bottom-color: black; border-bottom-style: dotted; border-bottom-width: 1px; color: black; text-decoration: none;">this article</a>.</div>
</li>
<li style="box-sizing: border-box; clear: left; line-height: 28px; list-style: disc outside none; margin: 0px 0px 10px 10px; padding: 0px;"><div style="margin-bottom: 22px; padding: 0px;">
You are at least somewhat familiar with Django project structure, as this article is not intended to walk through using and configuring Django itself.</div>
</li>
<li style="box-sizing: border-box; clear: left; line-height: 28px; list-style: disc outside none; margin: 0px 0px 10px 10px; padding: 0px;"><div style="margin-bottom: 22px; padding: 0px;">
You are familiar with basic Apache administration, as this tutorial will cover only the simple installation of the server itself and necessary configuration changes to pair Django with Apache.</div>
</li>
</ul>
<div data-unique="prerequisites" name="prerequisites">
</div>
<h2 id="prerequisites" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Prerequisites</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Before installing new packages, it is always a good practice to update your system packages and package indexes. To do that execute:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">apt-get update
apt-get upgrade
</code></pre>
<div data-unique="installing-apache" name="installing-apache">
</div>
<h2 id="installing-apache" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Installing Apache</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Since this text focuses on using <span style="font-weight: 600;">Apache</span> to serve the application, the server itself is necessary. To install the necessary packages execute:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">apt-get install apache2
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Straight after installation Apache will already be running. You can check whether the Apache web server has been properly set-up by opening your web browser and pointing it to the server IP address. You should see a simple <span style="font-weight: 600;">It works!</span> page on the screen.</div>
<div data-unique="installing-pip-and-virtualenv" name="installing-pip-and-virtualenv">
</div>
<h2 id="installing-pip-and-virtualenv" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Installing pip and virtualenv</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
To begin working with Python and <span style="font-weight: 600;">Django</span> on a webserver, <span style="font-weight: 600;">pip</span> and <span style="font-weight: 600;">virtualenv</span> must be installed first. <span style="font-weight: 600;">Pip</span> is a Python package manager that facilitates installing Python software packages such as <span style="font-weight: 600;">Django</span> itself, whereas <span style="font-weight: 600;">virtualenv</span> makes it possible to create separate virtual environments for Python applications in order to separate libraries needed for different applications and avoid version clash between them.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
To do that execute:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">apt-get install python-pip python-virtualenv
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
This command will install <span style="font-weight: 600;">pip</span> and <span style="font-weight: 600;">virtualenv</span> from the Debian package repository. You can verify that both tools have been properly installed by running them with <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">--version</code> switch.</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:~# virtualenv --version
1.7.1.2
root@django:~# pip --version
pip 1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
root@django:~#
</code></pre>
<div data-unique="creating-a-virtual-environment-using-virtualenv" name="creating-a-virtual-environment-using-virtualenv">
</div>
<h2 id="creating-a-virtual-environment-using-virtualenv" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Creating a virtual environment using virtualenv</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Upon <span style="font-weight: 600;">Apache</span> installation a <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">/var/www</code> directory is automatically created in which the default web server root is set up. We will put our new <span style="font-weight: 600;">Django</span> application there with all its dependencies.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Let's create a new directory called <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">sampleapp</code> inside that directory and enter the new directory:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">cd /var/www
mkdir sampleapp
cd sampleapp
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Then let's create a new virtual environment using <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">virtualenv</code>. A Python virtual environment is basically a directory in which the Python interpreter and a local instance of <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">pip</code> resides. The local instance of<code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">pip</code> installs all packages inside the virtual environment. That way no installed packages pollute global Python installation and also there is no possibility of package version clash in a hypothetical scenario of two applications running two different versions of <span style="font-weight: 600;">Django</span> or any other library.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
To create a new virtual environment enter:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">virtualenv env
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
where <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">env</code> is the virtual environment name - it could be any other word. The output from this command should look like this:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:/var/www/sampleapp# virtualenv env
New python executable in env/bin/python
Installing distribute.............................................................................................................................................................................................done.
Installing pip...............done.
root@django:/var/www/sampleapp#
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The virtual environment is now ready and can be used in two different ways.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
One way is to run commands using virtual environment interpreter directly. With this method it is necessary to always remember to execute the correct interpreter or <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">pip</code> instance, as there is a possibility to run a system-wide one.</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:/var/www/sampleapp# env/bin/pip --version
pip 1.1 from /var/www/sampleapp/env/lib/python2.7/site-packages/pip-1.1-py2.7.egg (python 2.7)
root@django:/var/www/sampleapp# env/bin/python --version
Python 2.7.3
root@django:/var/www/sampleapp#
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The other way is to <em>activate</em> the environment first, using</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">source env/bin/activate
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
the environment name will then be prepended to the command line as such</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:/var/www/sampleapp# source env/bin/activate
(env)root@django:/var/www/sampleapp#
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
and all commands executed will be using local virtual environment versions</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">(env)root@django:/var/www/sampleapp# pip --version
pip 1.1 from /var/www/sampleapp/env/lib/python2.7/site-packages/pip-1.1-py2.7.egg (python 2.7)
(env)root@django:/var/www/sampleapp# python --version
Python 2.7.3
(env)root@django:/var/www/sampleapp#
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
it is easier to work that way; however it is necessary to <em>deactivate</em> the environment after the work is done using the following command</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">deactivate
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
it will return the shell to normal</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">(env)root@django:/var/www/sampleapp# deactivate
root@django:/var/www/sampleapp#
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The freshly created environment will be used to store all necessary dependencies, including <span style="font-weight: 600;">Django</span> and related libraries. It will also be used by <span style="font-weight: 600;">Apache</span> and <span style="font-weight: 600;">mod_wsgi</span> later on to serve the application using correct dependencies.</div>
<div data-unique="installing-django-inside-virtual-environment" name="installing-django-inside-virtual-environment">
</div>
<h2 id="installing-django-inside-virtual-environment" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Installing Django inside virtual environment</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Next necessary step is to install <span style="font-weight: 600;">Django</span> inside the virtual environment. Let's do that without activating the environment beforehand using:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">env/bin/pip install django
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The last messages shown after executing this command should look like this</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">Successfully installed django
Cleaning up...
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
<span style="font-weight: 600;">Django</span> is now installed inside virtual environment and is not available from within system-wide Python installation. You can verify that behavior by importing <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">django</code> module using both interpreters</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:/var/www/sampleapp# python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
>>> exit()
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Import using system-wide interpreter failed, whereas</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">root@django:/var/www/sampleapp# env/bin/python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
the one executed inside the virtual environment succeeded.</div>
<div data-unique="creating-first-django-project" name="creating-first-django-project">
</div>
<h2 id="creating-first-django-project" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Creating first Django project</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
To create a simple, basic example project we can use <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">django-admin.py</code> script as follows</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;"> env/bin/django-admin.py startproject sampleapp .
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Please note the trailing <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">.</code> in the command - without it the project will be created in an additional subdirectory. After executing that command a new <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">sampleapp</code> directory and <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">manage.py</code> script will be created in <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">/var/www/sampleapp</code>. The <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">manage.py</code> script is used to execute <span style="font-weight: 600;">Django</span> commands for this particular project. One of the possible uses of <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">manage.py</code> is to run a test server instance to verify that everything is working as intended.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Please execute:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">env/bin/python manage.py runserver 0.0.0.0:8000
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
This will run a test server bound to all interfaces on port 8000. The output should look like this:</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">Validating models...
0 errors found
April 08, 2014 - 12:29:31
Django version 1.6.2, using settings 'sampleapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
If you open your server IP address with port 8000 in your browser (the address should look like<code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">http://<ip address>:8000/</code>) you should see the <span style="font-weight: 600;">It worked!</span> example <span style="font-weight: 600;">Django</span> page. This is the result we will work towards using Apache web server instead of the built-in <span style="font-weight: 600;">Django</span> development server.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Since the <span style="font-weight: 600;">Django</span> application is working properly, we can proceed to pair the application with Apache.</div>
<div data-unique="installing-mod_wsgi-for-apache" name="installing-mod_wsgi-for-apache">
</div>
<h2 id="installing-mod_wsgi-for-apache" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Installing mod_wsgi for Apache</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The easiest and also recommended way to serve Python applications using <span style="font-weight: 600;">Apache</span> is to use <span style="font-weight: 600;">mod_wsgi</span>module. It is not installed by default with neither Python nor <span style="font-weight: 600;">Apache</span>, so we have to install an additional package.</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">apt-get install libapache2-mod-wsgi
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The next step will be to configure default <span style="font-weight: 600;">Apache</span> virtual host that at the beginning of the article served <span style="font-weight: 600;">It works!</span> page to serve our <span style="font-weight: 600;">Django</span> application.</div>
<div data-unique="configuring-mod_wsgi-in-a-default-virtual-host" name="configuring-mod_wsgi-in-a-default-virtual-host">
</div>
<h2 id="configuring-mod_wsgi-in-a-default-virtual-host" style="color: #2d2d2d; font-size: 28px; letter-spacing: 0.2px; margin: 10px 0px; padding: 0px;">
Configuring mod_wsgi in a default virtual host</h2>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The idea behind configuring <span style="font-weight: 600;">mod_wsgi</span> for any other virtual host in Apache is the same as the one presented here. We will use the default virtual host for simplicity, since it is the one already provided by a clean Apache installation.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
Open the default virtual host configuration file in <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">nano</code> editor</div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">nano /etc/apache2/sites-enabled/000-default
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
and add three following lines just below <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;"><VirtualHost *:80></code></div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">WSGIDaemonProcess sampleapp python-path=/var/www/sampleapp:/var/www/sampleapp/env/lib/python2.7/site-packages
WSGIProcessGroup sampleapp
WSGIScriptAlias / /var/www/sampleapp/sampleapp/wsgi.py
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The first line spawns a WSGI daemon process called <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">sampleapp</code> that will be responsible for serving our<span style="font-weight: 600;">Django</span> application. The daemon name can be basically anything, but is good practice to *use descriptive names such as application names here.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
If we were using global Python installation and global <span style="font-weight: 600;">Django</span> instance, the <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">python-path</code> directive would not be necessary. However, using virtual environment makes it obligatory to specify the alternate Python path so that <span style="font-weight: 600;">mod_wsgi</span> will know where to look for Python packages.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The path must contain two directories: the directory of <span style="font-weight: 600;">Django</span> project itself - <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">/var/www/sampleapp</code> - and directory of Python packages inside our virtual environment for that project -<code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">/var/www/sampleapp/env/lib/python2.7/site-packages</code>. Directories in path definition are delimited using a colon sign.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The second line tells that particular virtual host to use the WSGI daemon created beforehand, and as such, the daemon name must match between those two. We used <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">sampleapp</code> in both lines.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
The third line is the most important, as it tells <span style="font-weight: 600;">Apache</span> and <span style="font-weight: 600;">mod_wsgi</span> where to find WSGI configuration. The <code style="background-color: #f6f6f6; border-radius: 2px; color: #111111; font-family: monospace, serif; font-size: 15px; margin: 0px 3px; padding: 3px;">wsgi.py</code> supplied by <span style="font-weight: 600;">Django</span> contains the barebone default configuration for WSGI for serving<span style="font-weight: 600;">Django</span> application that works just fine and changing the configuration in this file is out of this article scope.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
After these changes it is necessary to restart <span style="font-weight: 600;">Apache</span></div>
<pre style="background-color: #f6f6f6; border-radius: 3px; box-sizing: border-box; font-family: monospace, serif; font-size: 14px; margin-bottom: 28px; overflow: auto !important; padding: 13px 17px; word-wrap: normal !important;"><code langs="" style="border-radius: 0px; color: #111111; font-family: monospace, serif; margin: 0px; padding: 0px;">service apache2 restart
</code></pre>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
After that, upon opening the web browser on your server IP address, without any additional ports, you should see the same <span style="font-weight: 600;">Django</span> page as before instead of initial <span style="font-weight: 600;">It works!</span> page that we have seen earlier.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
That makes our configuration complete.</div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
<em>Please note: using the default virtual host without additional care is not the recommended way of configuring a production server. It is used for demonstration purposes.</em></div>
<div style="font-size: 16px; line-height: 28px; margin-bottom: 22px; padding: 0px;">
<em>Source: Digital Ocean</em></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-68042748021999890052015-01-25T12:47:00.003-08:002015-01-25T12:47:52.604-08:00Resources for entering into Open Source World<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; color: #141823; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 4px; margin-top: 4px;">
<b><u>Git Tutorials:</u></b></div>
<ul style="background-color: white; color: #141823; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 18px; list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Git Concepts Simplified : <a href="http://gitolite.com/gcs.html" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://gitolite.com/gcs.html</a> ??</li>
<li>Understanding the git in best way <a href="http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://readwrite.com/2013/09/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>30/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>understanding-github-a-journey-<wbr></wbr><span class="word_break" style="display: inline-block;"></span>for-beginners-part-1</a> </li>
<li>Git branching and merging <a href="http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://git-scm.com/book/en/v2/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Git-Branching-Basic-Branching-a<wbr></wbr><span class="word_break" style="display: inline-block;"></span>nd-Merging</a> ALSO<a href="https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://github.com/Kune<span class="text_exposed_show" style="display: inline;">na/Kunena-Forum/wiki/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Create-a-new-branch-with-git-an<wbr></wbr><span class="word_break" style="display: inline-block;"></span>d-manage-branches</span></a><span class="text_exposed_show" style="display: inline;"> ALSO <a href="http://stackoverflow.com/questions/3999541/after-git-clone-does-not-see-branch" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://stackoverflow.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>questions/3999541/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>after-git-clone-does-not-see-br<wbr></wbr><span class="word_break" style="display: inline-block;"></span>anch</a></span></li>
<div class="text_exposed_show" style="display: inline;">
<li>Atlassian Git Tutorials : <a href="https://www.atlassian.com/git/tutorial/git-basics" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://www.atlassian.com/git/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>tutorial/git-basics</a></li>
<li>Try Git ( Interactive) : <a href="http://try.github.io/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://try.github.io//</a></li>
<li>Best video tutorials: <a href="http://www.lynda.com/Git-training-tutorials/1383-0.html" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.lynda.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Git-training-tutorials/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>1383-0.html</a></li>
<li>Some more : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fsixrevisions.com%2Fresources%2Fgit-tutorials-beginners%2F&h=lAQE3bnXa&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://sixrevisions.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>resources/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>git-tutorials-beginners/</a><br />( The best are Pro Git and Git Immersion )</li>
</div>
</ul>
<div class="text_exposed_show" style="background-color: white; color: #141823; display: inline; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 18px;">
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Beginners Missions on Open Source Contribution:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>OpenHatch : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fopenhatch.org%2F&h=RAQGN0x4a&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://openhatch.org/</a> , check out the missions.</li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<u><b>Blogs:</b></u></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Fixing your first Bug (By :sawrubh) : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fsawrubh.tumblr.com%2Fpost%2F89737523167%2Ftips-and-tricks-for-fixing-your-first-bug&h=HAQFJBwyi&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://sawrubh.tumblr.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>post/89737523167/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>tips-and-tricks-for-fixing-your<wbr></wbr><span class="word_break" style="display: inline-block;"></span>-first-bug</a></li>
<li>Getting started with bug squashing( By :manishearth) : <a href="http://inpursuitoflaziness.blogspot.in/2014/02/getting-started-with-bug-squashing.html" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://<wbr></wbr><span class="word_break" style="display: inline-block;"></span>inpursuitoflaziness.blogspot.in<wbr></wbr><span class="word_break" style="display: inline-block;"></span>/2014/02/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>getting-started-with-bug-squash<wbr></wbr><span class="word_break" style="display: inline-block;"></span>ing.html</a></li>
<li>How to get started with Open Source Contribution ( by HackerEarth) :<a href="http://blog.hackerearth.com/2014/03/how-to-get-started-with-open-source.html" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://blog.hackerearth.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>2014/03/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>how-to-get-started-with-open-so<wbr></wbr><span class="word_break" style="display: inline-block;"></span>urce.html</a></li>
<li>Finding answers in the Firefox code ( By Josh Matthews) :<a href="http://www.joshmatthews.net/blog/2012/01/answering-questions/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.joshmatthews.net/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>blog/2012/01/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>answering-questions/</a></li>
<li>Google Summer of Code Tips (By Vaidik Kapoor) :<a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fgoo.gl%2FyOlXs0&h=DAQGQa0Vt&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://goo.gl/yOlXs0</a> </li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Unix:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>TutorialsPoint: <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.tutorialspoint.com%2Funix%2Findex.htm&h=qAQGqefHm&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.tutorialspoint.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>unix/index.htm</a></li>
<li><a href="http://www.ee.surrey.ac.uk/Teaching/Unix/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.ee.surrey.ac.uk/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Teaching/Unix/</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Linux</u></b>:</div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>EFYtimes : <a href="http://efytimes.com/e1/fullnews.asp?edid=116916" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://efytimes.com/e1/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>fullnews.asp?edid=116916</a><br />Some more: <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fefytimes.com%2Fe1%2Ffullnews.asp%3Fedid%3D134928&h=oAQE4JaTF&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://efytimes.com/e1/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>fullnews.asp?edid=134928</a></li>
<li><a href="http://l.facebook.com/l.php?u=http%3A%2F%2FEDX.org%2F&h=8AQFTTqW1&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">EDX.org</a> course : <a href="https://www.edx.org/course/linuxfoundationx/linuxfoundationx-lfs101x-introduction-1621#.U9Kt5nI2yXp" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://www.edx.org/course/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>linuxfoundationx/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>linuxfoundationx-lfs101x-introd<wbr></wbr><span class="word_break" style="display: inline-block;"></span>uction-1621#.U9Kt5nI2yXp</a></li>
</ul>
<div>
<b><u>Python:</u></b></div>
<div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Reference docs: <a href="https://www.facebook.com/groups/1534090800176936/1545629875689695/?notif_t=like#" role="button" style="color: #2e57aa; cursor: pointer; text-decoration: none;"></a><a href="https://docs.python.org/2/tutorial/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://docs.python.org/2/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>tutorial/</a></li>
<li>Interactive Learning: <a href="https://www.facebook.com/groups/1534090800176936/1545629875689695/?notif_t=like#" role="button" style="color: #2e57aa; cursor: pointer; text-decoration: none;"></a><a href="http://l.facebook.com/l.php?u=http%3A%2F%2Flearnpython.org%2F&h=5AQHUpSGZ&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://learnpython.org/</a></li>
<li>Execution Visualizer: <a href="https://www.facebook.com/groups/1534090800176936/1545629875689695/?notif_t=like#" role="button" style="color: #2e57aa; cursor: pointer; text-decoration: none;"></a><a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.pythontutor.com%2Fvisualize.html%23mode%3Dedit&h=OAQFY0mo_&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.pythontutor.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>visualize.html#mode=edit</a></li>
</ul>
</div>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Bash:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Basic + Advance: <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.lynda.com%2FBash-training-tutorials%2F1804-0.html&h=hAQFOIUM1&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.lynda.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Bash-training-tutorials/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>1804-0.html</a></li>
<li>Basic and slow: <a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DnVt3Rst-2H8%26list%3DPL7B7FA4E693D8E790&h=7AQE48WEl&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://www.youtube.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>watch?v=nVt3Rst-2H8&list=PL7B7F<wbr></wbr><span class="word_break" style="display: inline-block;"></span>A4E693D8E790</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Opportunities:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Outreach Program for women: <a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgnome.org%2Fopw%2F&h=WAQFMSePm&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://gnome.org/opw/</a></li>
<li>Google Summer Of Code : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.google-melange.com%2F&h=KAQGGASuX&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.google-melange.com/</a></li>
<li>Some More : <a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fopenhatch.org%2Fwiki%2FOpportunities&h=QAQE9RGKX&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">https://openhatch.org/wiki/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>Opportunities</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Member's Blogs and Proposals(If Any):</u></b></div>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u><br /></u></b></div>
<div style="margin-bottom: 4px; margin-top: 4px;">
<br /></div>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Students Guides:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>GSoC students guide : <a href="http://en.flossmanuals.net/gsocstudentguide/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://en.flossmanuals.net/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>gsocstudentguide/</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Mozilla Specific Links:</u></b></div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>What Can I do for Mozilla : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwhatcanidoformozilla.org%2F&h=vAQGRfWih&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://<wbr></wbr><span class="word_break" style="display: inline-block;"></span>whatcanidoformozilla.org/</a></li>
<li>Video tutorials - <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fcodefirefox.com%2F&h=uAQElWchq&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://codefirefox.com/</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Interactive Tutorials Websites:</u></b> </div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li>Codecademy : <a href="http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.codecademy.com%2F&h=qAQGqefHm&s=1" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.codecademy.com/</a></li>
<li>CodeSchool: <a href="http://www.codeschool.com/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.codeschool.com/</a></li>
<li>Learn Python: <a href="http://learnpython.org/" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://learnpython.org/</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<b><u>Resources and Presentations by Shakti Kannan</u></b>:</div>
<ul style="list-style-type: square; margin: 10px 0px; padding: 0px 10px 0px 25px;">
<li><a href="http://shakthimaan.com/downloads.htm" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://shakthimaan.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>downloads.htm</a></li>
<li>Mailing List Guidelines : <a href="http://www.shakthimaan.com/downloads/glv/presentations/i-want-2-do-project-tell-me-wat-2-do.pdf" rel="nofollow" style="color: #2e57aa; cursor: pointer; text-decoration: none;" target="_blank">http://www.shakthimaan.com/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>downloads/glv/presentations/<wbr></wbr><span class="word_break" style="display: inline-block;"></span>i-want-2-do-project-tell-me-wat<wbr></wbr><span class="word_break" style="display: inline-block;"></span>-2-do.pdf</a></li>
</ul>
<div style="margin-bottom: 4px; margin-top: 4px;">
<br /></div>
<div style="margin-bottom: 4px; margin-top: 4px;">
Source : Open Source Group of GBPEC on facebook </div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-23601060381668613932015-01-24T06:01:00.004-08:002015-01-24T06:13:21.712-08:00How to deploy a Django app using Heroku ?<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px;">
How to deploy django application using HerokuApp?</div>
<div style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px;">
10 steps to follow and you will have your django app hosted online :</div>
<ol class="task-list" style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px; margin-top: 0px; padding: 0px 0px 0px 2em;">
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
Signup on Heroku at <a href="https://signup.heroku.com/signup/dc" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">https://signup.heroku.com/signup/dc</a></div>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
Login on Heroku at <a href="https://devcenter.heroku.com/login" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">https://devcenter.heroku.com/login</a></div>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
Download the Heroku Toolbelt: A) If you are using Windows:</div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> https://s3.amazonaws.com/assets.heroku.com/heroku-toolbelt/heroku-toolbelt.exe
</code></pre>
<div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
B) If you are using Ubuntu, Run the command in the terminal(open terminal using Alt + Ctrl + T ):</div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
</code></pre>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
Once installed, you can use the heroku command from your command shell. Log in using the email address and password you used when creating your Heroku account. Run this command to login in the shell :</div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> heroku login
</code></pre>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
Create a requirements.txt file in your project's root directory. Mention the requierments that you need to run you django app on Heroku Server. For example, open the following link: <a href="https://github.com/DESHRAJ/Youtube-Downloader/blob/master/ytd/requirements.txt" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">https://github.com/DESHRAJ/Youtube-Downloader/blob/master/ytd/requirements.txt</a></div>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
If your project is not a git repository, then make it a Git repository by running this command in the root directory of your project:</div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> git init
</code></pre>
<div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
You now have a functioning git repository that contains a simple application as well as a requirements.txt file, which is used by Python’s dependency manager, Pip.</div>
</li>
<li style="box-sizing: border-box;"><div style="box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;">
then run the following command in the projects root directory :</div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> heroku create yourAppName
</code></pre>
</li>
</ol>
<div style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px;">
(NOTE : The app name you will provide will be checked by heroku and if it is not used by anyother user, you will get you django app running at <a href="http://yourappname.herokuapp.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">http://yourAppName.herokuapp.com</a> ).<br />
<span style="line-height: 25.6000003814697px;"><br /></span>
<span style="line-height: 25.6000003814697px;">8. Finally, run the following command to deploy the application :</span></div>
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> git push heroku master</code></pre>
<span style="color: #333333; font-family: Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif;"><span style="line-height: 25.6000003814697px;"><br /></span></span><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px;">9. To check if the django app has been hosted or not, run the following command:</span><div>
<span style="color: #333333; font-family: Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif;"><span style="line-height: 25.6000003814697px;"><br /></span></span><pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> heroku open</code></pre>
<span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px;">10. If you encounter any error in deploying you app, then see the logs using the command :</span><br /><pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: inherit; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal;"> heroku logs --tail</code></pre>
<ol class="task-list" style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px; margin-top: 0px; padding: 0px 0px 0px 2em;">
</ol>
<div style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px;">
and try to figure it out that where the error occured. If you encounter error in log then by googling the question, you can easily figure out what needs to be changed. Its pretty easy to deploy app using heroku.</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-2458567385088933462015-01-11T17:59:00.000-08:002015-01-11T17:59:05.630-08:00 A big problem for students- How to make a website live ?<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">I wanted to upload a simple website based on HTML, CSS and JS files, with a few images, and a favicon. So I registered at Heroku, bought a domain name, followed the Heroku instructions on how to set up the “Toolbelt” and GIT.</span></div>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">So I thought I was all set up: I created a folder with an index.html page, with the text “Coming Soon…”. I set up the repository, and tried to commit to Heroku, only to receive a message similar to “This is not a code repository” or something similar. Heroku is primarily aimed at apps running on frameworks, like Ruby on Rails, Django (Python), node.js, or… ahem… PHP.</span></div>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Heroku allows you to publish PHP sites as well, with NO configuration needed! That’s right, just create your .php files, and it will figure out that the Heroku app should run PHP for this site, and it will auto-configure the app to run on the latest version of PHP/Apache.</span></div>
<h2 style="background-color: #f9f9f9; border: none; color: #222222; line-height: 28.7999992370605px; margin: 30px 0px 7px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">So here is how you do it:</span></h2>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Rename your index.html to home.html or something similar.</span></div>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Create an index.php file with the following code:</span></div>
<pre style="background-color: #f9f9f9; border: none; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><?php include_once("home.html"); ?></span></pre>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">That’s it!</span></div>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Now go to your app folder in CMD (or Bash), and commit your code to Heroku using the following:</span></div>
<pre style="background-color: #f9f9f9; border: none; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">git add .
git commit -m 'Change this to a meaningful description'
git push heroku master</span></pre>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> And finally, you should get the following:</span></div>
<pre style="background-color: #f9f9f9; border: none; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">-----> Heroku receiving push
-----> PHP app detected
-----> Bundling Apache version 2.2.22
-----> Bundling PHP version 5.3.10
-----> Discovering process types
Default types for PHP -> web
-----> Compiled slug size: 9.5MB
-----> Launching... done, v4</span></pre>
<div style="background-color: #f9f9f9; border: none; color: #333333; line-height: 24px; margin-bottom: 20px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><strong style="border: none; margin: 0px; padding: 0px; vertical-align: baseline;">Congratulations!</strong> You have published a static site to Heroku with one line of PHP code <img alt=":)" class="wp-smiley" src="http://www.lemiffe.com/wp-includes/images/smilies/icon_smile.gif" style="border: none; height: auto; margin: 0px; max-width: 100%; padding: 0px; vertical-align: baseline;" /></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-85479985697227995922015-01-06T01:42:00.000-08:002015-01-06T01:45:00.693-08:00Blocked Internet Sucks alot<div dir="ltr" style="text-align: left;" trbidi="on">
Whenever you try to open websites and you see that the ISPs have blocked the websites then it sucks alot. Yesterday, when I was trying to download some python packages from PyPi then found that the College Administration has blocked the PyPi.<div>
<br /></div>
<div>
Really that made me mad and for the next three to four hours I started research on Internet to how to bypass the blocking. I found several ways to bypass the Blocking. Our college has setup a certificate for the secure browsing. Without importing that certificate to your browser , you cannot access internet. The security has been provided by the Cyberoam Securtiy. So I started with the proxy sites, but they have such a good blocking system that all the proxy P2P sites and the URLTranslator websites were blocked. Then next I tried to setup the vpn using the OpenVPN but I found some difficulty in that and then I left this method. The best I found on Internet was to setup the SSH Tunneling. </div>
<div>
<br /></div>
<div>
Setting up SSH Tunneling only requires to have a ssh access to a server. </div>
<div>
To set up the ssh to the server, the command only you need to run through the terminal is </div>
<div>
<br /></div>
<div>
ssh username@serveraddress.com -L 1000:127.0.0.1:80</div>
<div>
<br /></div>
<div>
And you just need to enter the socks host address as 127.0.0.1 and socks port as 1000. </div>
<div>
<br /></div>
<div>
Finally, you have got the Unblocked Internet Connection. Maybe it will be slower than that of you previous connection but its worth. </div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com4tag:blogger.com,1999:blog-5524955658910717295.post-32773507323034296502015-01-03T18:54:00.003-08:002015-01-03T18:54:36.088-08:00Data Scraping vs. Data Crawling for the Web<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; line-height: 18px; margin-bottom: 22px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">One of our favorite quotes has been- ‘If a problem changes by an order, it becomes a totally different problem’ and in this lies the answer to- <span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-style: italic; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">what’s the difference between scraping and crawling</span><i style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">?</i></span></div>
<div dir="ltr" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; line-height: 18px; margin-bottom: 22px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;"><strong style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crawling</strong> usually refers to dealing with large data-sets where you develop your own crawlers (or bots) which crawl to the deepest of the web pages. <a href="https://www.promptcloud.com/data-scraping-software/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Data scraping</a> on the other hand refers to retrieving information from any source (not necessarily the web). It’s more often the case that irrespective of the approaches involved, we refer to <a href="https://www.promptcloud.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">extracting data from the web as scraping</a> (or harvesting) and that’s a serious misconception.</span></div>
<h3 style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; letter-spacing: 1px; line-height: 1.30434782608696em; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: small;">Below are some differences in our opinion- both evident and subtle</span></span></h3>
<ol style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<li style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://www.promptcloud.com/blog/Future-of-Web-Scraping" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Scraping data does not necessarily involve the web</a>. <strong style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Data scraping</strong> could refer to extracting information from a local machine, a database, or even if it is from the internet, a mere “Save as” link on the page is also a subset of the data scraping universe. Crawling on the other hand differs immensely in scale as well as in range. Firstly, crawling = <a href="https://www.promptcloud.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">web crawling</a> which means on the web, we can only “crawl” data. Programs that perform this incredible job are called crawl agents or bots o</span><img alt="Web Crawling and Scraping" class="alignright wp-image-18674 size-medium" height="231" src="https://www.promptcloud.com/wp-content/uploads/2012/05/Web-Scraping-Web-Crawling-300x231.jpg" style="float: right; height: auto; margin: 0px 0px 20px 20px; max-width: 100%;" width="300" /><span style="font-family: Arial, Helvetica, sans-serif;">r spiders (please leave the other spider in spiderman’s world). Some web spiders are algorithmically designed to reach the maximum depth of a page and crawl them iteratively (did we ever say scrape?).</span></li>
<li style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Web is an open world and the quintessential practising platform of our right to freedom. Thus a lot of content gets created and then duplicated. For instance, the same <a href="https://www.promptcloud.com/blog/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">blog</a>might be posted on different pages and our spiders don’t understand that. Hence, data de-duplication (affectionately dedup) is an integral part of data crawling. This is done to achieve two things- keep our clients happy by not flooding their machines with the same data more than once, and saving our own servers some space. However, dedup is not necessarily a part of data scraping.</span></li>
<li style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">One of the most challenging things in the <strong style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">web crawling space</strong> is to deal with coordination of successive crawls. Our spiders have to be polite with the servers that they hit so that they don’t piss them off and this creates an interesting situation to handle. Over a period of time, our intelligent spiders have to get more intelligent (and not crazy!) and learn to know when and how much to hit a server in order to crawl data on its web pages while complying with its politeness policies.</span></li>
<li style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Finally, different <strong style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">crawl agents</strong> are used to crawl different websites and hence you need to ensure they don’t conflict with each other in the process. This situation never arises when you intend to just scrape data.</span></li>
</ol>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; line-height: 18px; margin-bottom: 22px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;">
<span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">On a concluding note, scraping represents a very superficial node of crawling. which <a href="http://www.linkedin.com/company/promptcloud" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #303030; cursor: pointer; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #1155cc; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">we</span></a> call extraction and that again requires few algorithms and some automation in place.</span></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-87882716674651059062015-01-02T08:37:00.001-08:002015-01-02T09:30:11.147-08:00Starting Open Source Forum in our College<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif;">I am glad to say that me and Taranjeet Sir have started an Open Source Forum in our college for spreading the knowledge of Open Source. I know there will be a lot of challenges in getting through but we are ready to handle that. </span><br />
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<div>
<span style="font-family: Verdana, sans-serif;">Firstly, we are focusing on the basics of the Git and Introduction to Github.</span></div>
</div>
<div>
<span style="font-family: Verdana, sans-serif;">The main focus is to make sure that everyone is capable of using the Git Version Control. This will ensure that they are good to go with the further topics. </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Ok first let me tell you that how git can help you in building your career:</span></div>
<div>
<ul style="text-align: left;">
<li><h3 style="background-color: white; color: #e74c3c; font-size: 30px; font-weight: 500; line-height: 1em; margin: 60px 0px 16px;">
<span style="font-family: Verdana, sans-serif;">Save Time</span></h3>
<span style="font-family: Verdana, sans-serif;"><span style="background-color: white; line-height: 1.6em;">Git is lightning fast. And although we're talking about only a few seconds per command, it quickly adds up in your work day. Use your time for something more useful than waiting for your version control system to get back to you.</span> </span></li>
<li><h3 style="background-color: white; color: #e74c3c; font-size: 30px; font-weight: 500; line-height: 1em; margin: 60px 0px 16px;">
<span style="font-family: Verdana, sans-serif;">Work Offline</span></h3>
<div style="background-color: white; line-height: 1.6em; margin-bottom: 16px;">
<span style="font-family: Verdana, sans-serif;">What if you want to work while you're on the move? With a centralized VCS like Subversion or CVS, you're stranded if you're not connected to the central repository. With Git, almost everything is possible simply on your local machine: make a commit, browse your project's complete history, merge or create branches... Git let's you decide where and when you want to work.</span></div>
</li>
<li><h3 style="background-color: white; color: #e74c3c; font-family: museo-slab, 'Museo Slab', Georgia, serif; font-size: 30px; font-weight: 500; line-height: 1em; margin: 60px 0px 16px;">
Don’t Mix Things Up</h3>
<div style="background-color: white; line-height: 1.6em; margin-bottom: 16px;">
<span style="font-family: Verdana, sans-serif;"></span></div>
<div style="background-color: white; font-family: museo-sans, 'Museo Sans', 'Trebuchet MS', Trebuchet, sans-serif; line-height: 1.6em; margin-bottom: 16px;">
Separation of concerns is paramount to keeping track of things. While you’re working on feature A, nothing (and no-one) else should be affected by your unfinished code. What if it turns out the feature isn't necessary anymore? Or if, after 10 commits, you notice that you took a completely wrong approach? Branching is the answer for these problems. And while other version control systems also know branches, Git is the first one to make it work as it should: fast & easy.</div>
</li>
<li><h3 style="background-color: white; color: #e74c3c; font-family: museo-slab, 'Museo Slab', Georgia, serif; font-size: 30px; font-weight: 500; line-height: 1em; margin: 60px 0px 16px;">
Make Useful Commits</h3>
<div style="background-color: white; font-family: museo-sans, 'Museo Sans', 'Trebuchet MS', Trebuchet, sans-serif; line-height: 1.6em; margin-bottom: 16px;">
A commit is only really useful if it just contains related changes. Imagine having a commit that contains something from feature A, a little bit of feature B, and bugfix C. This is hard to understand for your teammates and can't be rolled back easily if some of the code is causing problems. Git helps you create granular commits with its unique "staging area" concept: you can determine exactly which changes shall be included in your next commits, even down to single lines. This is where version control starts to be useful.</div>
</li>
</ul>
</div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">One can start with the Git tutorials using this link : </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #0000ee; font-family: Verdana, sans-serif;"><u><a href="http://www.pyurl.com/git">http://www.pyUrl.com/git</a></u></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">This is the official git tutorial and very much easy. </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Git is used world wide for the software development. Git is used by the organizations like Google, Mozilla, Open Hatch, OLPC, Python Software Foundation and many other organizations. </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Keep Coding. </span></div>
<div>
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-16999238650741635452014-12-31T05:07:00.000-08:002014-12-31T05:10:19.628-08:002014 Memories :) :) <div dir="ltr" style="text-align: left;" trbidi="on">
Since this is my last post of this year , I wish everyone a very happy new year. Do wishes and may the next year fulfill your life with happiness and joy.<br />
<br />
Today the exams are over and it is the time to contribute fully to fjord project on which I have been working for last one month. Till now I have made two pull requests in this project and one of them was merged and the second one is under review. Check my github profile at <a href="http://github.com/deshraj">http://github.com/deshraj</a>.<br />
<br />
I would like to summarize the big events of my life in this year:<br />
<ul style="text-align: left;">
<li><b>Internship at <a href="http://takezero.in/"><span style="color: black;">TakeZero</span></a></b> that changed my life from C++ to Python Language.</li>
<li><b>Internship at <a href="http://fratmart.com/"><span style="color: black;">Fratmart</span></a></b> that laid my pathway towards Entrepreneurship and I have been able to setup a whole start-up by my own.</li>
<li>Learnt scraping of data and utilizing them for solving own problems like video downloading. </li>
<li>Back to back three projects in two days during my pre-university tests :</li>
</ul>
<blockquote class="tr_bq">
<ul style="text-align: left;">
<li><b><a href="http://www.videoloot.in/"><span style="color: black;">VideoLoot</span></a><span style="color: #444444;"> </span></b>(A youtube downloader),</li>
</ul>
</blockquote>
<blockquote class="tr_bq">
<ul style="text-align: left;">
<li><a href="http://www.pyurl.com/"><span style="color: black;"><b>PyUrl</b> </span></a>(A url shortner service ) and </li>
</ul>
</blockquote>
<blockquote class="tr_bq">
<ul style="text-align: left;">
<li><a href="http://gaanelelo.herokuapp.com/"><b><span style="color: black;">Gaanelelo</span></b> </a>(Free download of mp3 songs ). </li>
</ul>
</blockquote>
<ul style="text-align: left;">
<li>The most exciting moment of this year was when I made the Youtube Video Downloader in just 1.5 hours.</li>
<li>Starting working the Mozilla Organization by contributing code in their two repositiories. First in <b><a href="https://github.com/ygjb/kitherder"><span style="color: black;">Kitherder</span> <span style="color: black;">Project</span></a></b> and then in <b><a href="https://github.com/mozilla/fjord"><span style="color: black;">Fjord</span><span style="color: #444444;"> </span><span style="color: black;">Project</span></a></b>.</li>
</ul>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-40575917591893794682014-12-29T09:54:00.000-08:002014-12-29T09:54:05.019-08:00Amazing Quora<div dir="ltr" style="text-align: left;" trbidi="on">
These days <b>Quora</b> is getting very much popular in the common college students. Whether you want any answers in any topic then you can have the best answers you can expect. For example some of questions that I saw were : <div>
<br /></div>
<div>
1. What is the funniest whats-app status that you have seen ? </div>
<div>
2. What is the most amazing shell script that have you made? </div>
<div>
<br /></div>
<div>
Nowadays I am using as the new social networking. Every time when I use my smartphone then I do visit <b>Quora</b> for getting some cool answers of cool questions. </div>
<div>
<br /></div>
<div>
Thanks <b>Quora</b> for providing such a beautiful platform for question answering forum. </div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-48136603559209223982014-11-29T04:01:00.002-08:002014-11-29T04:01:51.752-08:00Connecting to Amazon EC2 behind a proxy<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="background-color: white; color: #333333; font-family: 'Helvetica Neue', HelveticaNeue, Arial, sans-serif; font-size: 30px; line-height: 1.2; margin: -5px 0px -4px;">
<a href="http://sawrubh.tumblr.com/post/72302432945/connecting-to-amazon-ec2-behind-a-proxy" style="color: #333333; display: block; outline: 0px; text-decoration: none;"><span style="font-size: 16px; line-height: 1.6;">This is more kind of a note to self.</span></a></h2>
<div class="body-text" style="background-color: white; color: #333333; font-family: 'Helvetica Neue', HelveticaNeue, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-top: 1em;">
<div style="margin-top: 1em;">
Port 22 which is used for ssh is blocked on my college network, so I needed to tunnel ssh connections over HTTP or HTTPS. For this I did the following things :</div>
<ul style="margin: 1em 0px; padding: 0px 0px 0px 40px;">
<li>ssh into the remote EC2 machine (using a proxy free connection).</li>
<li>Add<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
Port 443</blockquote>
to <span style="font-weight: 700;">/etc/ssh/sshd_config</span> below the line which says <span style="font-weight: 700;">Port 22</span>. I’m using 443 instead of some other port because right now I don’t serve my website over https. I might need to change this port to something else once I start accepting https connections too.</li>
<li>Restart sshd by running</li>
</ul>
<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
sudo service ssh restart</blockquote>
<ul style="margin: 1em 0px; padding: 0px 0px 0px 40px;">
<li>Now on my machine, install corkscrew by running </li>
</ul>
<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
sudo apt-get install corkscrew</blockquote>
<ul style="margin: 1em 0px; padding: 0px 0px 0px 40px;">
<li>Edit your ~/.ssh/config file to like the one given below</li>
</ul>
<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
Host AWS-Proxy<br />Hostname <Public DNS><br />Port 443<br />User ubuntu<br />IdentityFile <path to key file><br />ProxyCommand /usr/bin/corkscrew 10.10.78.61 3128 %h %p<br />
<div style="margin-top: 1em;">
Host AWS-Free<br />Hostname <Public DNS><br />Port 22<br />User ubuntu<br />IdentityFile <path to key file></div>
</blockquote>
<ul style="margin: 1em 0px; padding: 0px 0px 0px 40px;">
<li>Now I can simply connect to the EC2 instance when behind proxy using</li>
</ul>
<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
ssh AWS-Proxy</blockquote>
<ul style="margin: 1em 0px; padding: 0px 0px 0px 40px;">
<li>When on a proxy free connection I simply use</li>
</ul>
<blockquote style="border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 3px; margin: 1em 0px; padding-left: 20px;">
ssh AWS-Free</blockquote>
<br />
<div style="margin-top: 1em;">
Troubleshooting :</div>
<div style="margin-top: 1em;">
If the above doesn’t work, first of all verify if you’ve allowed incoming connections to your machine over HTTPS (or the custom port that you’re using). Follow the instructions given here for doing so : <a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule" style="color: #333333;" target="_blank">http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule</a></div>
<div style="margin-top: 1em;">
You might need to change the username in the config file depending on the AMI that’s running. For Amazon Linux, the user name is <code class="code" style="font-family: monospace, serif; font-size: 1em;">ec2-user</code>. For RHEL5, the user name is often <code class="code" style="font-family: monospace, serif; font-size: 1em;">root</code> but might be <code class="code" style="font-family: monospace, serif; font-size: 1em;">ec2-user</code>. For an Ubuntu, AMI the user name is <code class="code" style="font-family: monospace, serif; font-size: 1em;">ubuntu</code>. Otherwise, check with your AMI provider.</div>
<div style="margin-top: 1em;">
You might need to change the proxy address and port depending on your scenario.</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-86669068204075277332014-11-28T00:48:00.002-08:002014-11-28T00:49:29.110-08:00Contributions that encourages me<div dir="ltr" style="text-align: left;" trbidi="on">
The open source contributions in any Organization makes you feel as a developer, a matured developer. I recently contributed to three open source projects:<br />
<br />
<ol style="text-align: left;">
<li> <b><a href="https://github.com/mozilla/fjord">Mozilla-fjord</a></b></li>
<li><b><a href="https://github.com/ygjb/kitherder">Mozilla-kitherder </a></b></li>
<li><b><a href="https://github.com/openhatch/oh-mainline">Openhatch oh-mainline</a></b></li>
</ol>
<div>
Currently, I am focusing on Mozilla kitherder and Mozilla fjord project. These are the biggest projects that I have done in my life. Working on such a big project lets you to introduce yourself with other Developers. </div>
<div>
<br /></div>
While going through the code base of a project, one gets to know about the different coding styles. One also gets to know about the better way of implementation of his earlier projects.<br />
<div>
<br /></div>
<div>
I would like to help the new students who want to contribute to Open Source projects.</div>
<div>
You can start contribution using the website http://openhatch.org . This website is the best one for starting open source contributions. </div>
<div>
<br /></div>
<div>
I have heard from many students that open source is something very big thing and they are not able to do anything in this field. So, I would like to inform all of you guys that its all matter of practice and hard work. The more you will explore the Github , Openhatch and the more you will learn form there. There is nothing that you can get without hard work. There is no shortcut to hard work.</div>
<div>
<br /></div>
<div>
Stay hungry Stay foolish.</div>
<div>
Deshraj Yadav. </div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-25209165805494270852014-11-27T00:16:00.001-08:002014-11-27T00:17:00.895-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 class="post-title entry-title" itemprop="name" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 22px; font-stretch: normal; margin: 0.75em 0px 0px; position: relative;">
Maximum Sum of All Sub-arrays (solve using dynamic programming)</h3>
<div class="post-header" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 11px; line-height: 1.6; margin: 0px 0px 1.5em;">
<div class="post-header-line-1">
</div>
</div>
<div class="post-body entry-content" id="post-body-2307394403923334015" itemprop="description articleBody" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 1.4; position: relative; width: 570px;">
<div dir="ltr" trbidi="on">
<br />
<div class="MsoNormal">
<b><u>Question: </u></b>A sub-array has one number of some continuous numbers. Given an integer array with positive numbers and negative numbers, get the maximum sum of all sub-arrays. Time complexity should be O(n).</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For example, in the array <span style="color: black;">{</span><span style="color: black;">1, -2, 3, 10, -4, 7, 2, -5</span><span style="color: black;">}, its sub-array {</span><span style="color: black;">3, 10, -4, 7, 2</span><span style="color: black;">} has the maximum sum 18.</span></div>
<div class="MsoNormal">
<span style="color: black;"></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><u>Analysis:</u></b>An array with n elements has n(n+1)/2 sub-arrays. It costs O(n<sup>2</sup>) time at least to calculate their sum. Usually the intuitive and forceful solution is not the most optimized one. Interviewers will tell us that there are better solutions.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><i>Solution 1: Analyze arrays number by number(this is a simple approach)</i></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We try to accumulate every number in the example array from first to end. We initialize <i>sum</i> as 0. At our first step, add the first number 1, and <i>sum</i> is 1. And then if we add the second number -2,<i>sum</i> becomes -1. At the third step, we add the third number 3. We can notice that <i>sum</i> is less than 0, so the new <i>sum</i> will be 2 and it is less than the third number 3 itself if we add it with a negative <i>sum</i>. Therefore, the accumulated <i>sum</i> can be discarded.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We continue accumulating from the third number with <i>sum</i> 3. When we add it with the fourth number 10, <i>sum</i> becomes 13, and it decreases to 9 when we add it with the fifth number -4. We can notice that the <i>sum</i> with -4 is less than the previous <i>sum</i> since -4 is a negative number. Therefore, we should store the previous <i>sum</i> 13, since it might be the max sum of sub-arrays. At the sixth step, we add the sixth number 7 and <i>sum</i> is 16. Now <i>sum</i> is greater than the previous max sum of sub-arrays, we need to update it to 16. It is same when we add the seventh number 2. The max sum of sub-arrays is updated to 18. Lastly we add -5 and sum becomes 13. Since it is less than the previous max sum of sub-arrays, it final max sum of sub-array is 18, and the sub-array is <span style="color: black;">{</span><span style="color: black;">3, 10, -4, 7, 2</span><span style="color: black;">} accordingly. We can summarize the whole process with the Table 1:</span></div>
<div class="MsoNormal">
<br /></div>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableLightShading" style="border-collapse: collapse; border: currentcolor;"><tbody>
<tr style="height: 0.3in;"><td style="border-color: black currentcolor; border-style: solid none; border-width: 1pt medium; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">Step</span></b></div>
</td><td style="border-color: black currentcolor; border-style: solid none; border-width: 1pt medium; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">Operation</span></b></div>
</td><td style="border-color: black currentcolor; border-style: solid none; border-width: 1pt medium; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">Accumulated sum of sub-arrays</span></b></div>
</td><td style="border-color: black currentcolor; border-style: solid none; border-width: 1pt medium; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">Maximum sum</span></b></div>
</td></tr>
<tr style="height: 0.3in;"><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">1</span></b></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add 1</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">1</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">1</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">2</span></b></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add -2</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">-1</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">1</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">3</span></b></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Discard previous sum -1, add 3</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">3</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">3</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">4</span></b></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add 10</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">13</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">13</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">5</span></b></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add -4</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">9</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">13</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">6</span></b></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add 7</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">16</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">16</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">7</span></b></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add 2</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">18</span></div>
</td><td style="background: silver; border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">18</span></div>
</td></tr>
<tr style="height: 0.3in;"><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 29.4pt;" valign="top" width="39"><div class="MsoNormal" style="margin-bottom: 0in;">
<b><span style="font-size: 10pt;">8</span></b></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 138.3pt;" valign="top" width="184"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">Add -5</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 148.5pt;" valign="top" width="198"><div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-size: 10pt;">13</span></div>
</td><td style="border: currentcolor; height: 0.3in; padding: 0in 5.4pt; width: 78.15pt;" valign="top" width="104"><div class="MsoNormal" style="margin-bottom: 0in; page-break-after: avoid;">
<span style="font-size: 10pt;">18</span></div>
</td></tr>
</tbody></table>
</div>
<div align="center" class="MsoCaption" style="text-align: center;">
Table 1: The process to calculate the maximum sum of all sub-arrays in the array {1, -2, 3, 10, -4, 7, 2, -5}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After we get clear ideas of this solution, we are ready to develop some code. The following is the sample code:</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-indent: 0.5in;">
<span style="color: blue; font-family: 'Courier New'; font-size: 9pt;">bool</span><span style="font-family: 'Courier New'; font-size: 9pt;"> g_InvalidInput = <span style="color: blue;">false</span>;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> </span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="color: blue; font-family: 'Courier New'; font-size: 9pt;">int</span><span style="font-family: 'Courier New'; font-size: 9pt;"> FindGreatestSumOfSubArray(<span style="color: blue;">int</span> *pData, <span style="color: blue;">int</span> nLength)</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;">{</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">if</span>((pData == NULL) || (nLength <= 0))</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> {</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> g_InvalidInput = <span style="color: blue;">true</span>;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">return</span> 0;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> }</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> g_InvalidInput = <span style="color: blue;">false</span>;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">int</span> nCurSum = 0;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">int</span> nGreatestSum = 0x80000000;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">for</span>(<span style="color: blue;">int</span> i = 0; i < nLength; ++i)</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> {</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">if</span>(nCurSum <= 0)</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> nCurSum = pData[i];</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">else</span></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> nCurSum += pData[i];</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">if</span>(nCurSum > nGreatestSum)</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> nGreatestSum = nCurSum;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> }</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;"> <span style="color: blue;">return</span> nGreatestSum;</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 0.5in;">
<span style="font-family: 'Courier New'; font-size: 9pt;">}</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We should keep invalid inputs during interview, such as the pointer parameter of array is NULL or its length is 0. What should be return for the invalid inputs? If it is 0, how can we distinguish the two situations: one is for the actual maximum sum of sub-arrays is 0 and the other is for invalid inputs? Therefore, we define a global variable to make whether inputs are invalid or not.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><i>Solution 2: Dynamic programming</i></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If we have a deep understanding of algorithm, we may solve this problem with dynamic programming. If function <i>f(i)</i> stands for the maximum sum of a sum-array ended with the i<sup>th</sup>number, what it is to get is <i>max[f(i)]</i>. We can calculate <i>f(i)</i> with the following recursive equation:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhra_UKCm-ybzHp9j7152zMq0hEQIJorI7FRqFIB6g0m2mqECiOYN4Lme0RG1ii-HPWiu7i65NnNlwr2qGpO89IOtjXlHsgHOC2iV8dBAusrwOw2ZPg2_qGZCdpGP1wcHpHRR-a3Xuat2c/s1600/DP.PNG" imageanchor="1" style="color: #888888; margin-left: 1em; margin-right: 1em; text-decoration: none;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhra_UKCm-ybzHp9j7152zMq0hEQIJorI7FRqFIB6g0m2mqECiOYN4Lme0RG1ii-HPWiu7i65NnNlwr2qGpO89IOtjXlHsgHOC2iV8dBAusrwOw2ZPg2_qGZCdpGP1wcHpHRR-a3Xuat2c/s1600/DP.PNG" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0980392) 1px 1px 5px; background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1px solid rgb(238, 238, 238); box-shadow: rgba(0, 0, 0, 0.0980392) 1px 1px 5px; padding: 5px; position: relative;" /></a><span style="font-family: Calibri, sans-serif; font-size: 11pt; line-height: 16.8666667938232px;"><br /></span></div>
</div>
<div class="MsoNormal">
In the equation above, if the sum of sub-array ended with the (i-1)<sup>th</sup> number is negative, the sum of sub-array ended with the i<sup>th</sup> number should be the i<sup>th</sup> number itself (it is the third step in the Table 1). Otherwise, we can get the sum of sub-array ended with the i<sup>th</sup> number by adding the i<sup>th</sup>number and the sum of sub-array ended with the previous number.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Even though we analyze the problem recursively, we will write code based on iteration eventually. The iterative code according to the equation above should be save to the code of the first solution. <span style="font-family: 'Courier New';">nCursum</span> is the <i>f(i)</i> in the equation, and nGreatestSum is <i>max[f(i)]</i>. Therefore, these two solutions are essentially identical to each other.</div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-31994268923184274442014-11-20T15:02:00.002-08:002014-11-20T15:13:20.558-08:00Wonderful undefined behavior of C language<div dir="ltr" style="text-align: left;" trbidi="on">
Today, on stackoverflow I was reading an answer of a question on C language. The question is :<br />
<br />
<pre class="lang-c prettyprint prettyprinted" style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="typ" style="background: transparent; border: 0px; color: #2b91af; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"> main</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">(){</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background: transparent; border: 0px; color: #2b91af; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"> a</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="lit" style="background: transparent; border: 0px; color: maroon; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
printf</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="background: transparent; border: 0px; color: maroon; margin: 0px; padding: 0px; vertical-align: baseline;">"%d %d %d"</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">,++</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">a</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">a</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">a</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">++);</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="background: transparent; border: 0px; color: darkblue; margin: 0px; padding: 0px; vertical-align: baseline;">return</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background: transparent; border: 0px; color: maroon; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"> </span></code></pre>
<pre class="lang-c prettyprint prettyprinted" style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
</span></code></pre>
<div style="text-align: left;">
<div style="text-align: left;">
<code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">What is the exact output of this program ?</span></code></div>
<div style="text-align: left;">
<code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="pln" style="background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></span></code></div>
</div>
You will be amazed to see the answer that I found on Stackoverflow. I am sharing the screenshot with you. The most interesting fact about the answer is that the answer is verified on Stackoverflow.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDr_4fJYbQUjYq7SrHCE_b9b5OYbXxLr5Ch20ZSIPOP8MdYMSxyYy4edeMhAJtO2Z6JwqZ0DgzV9SqAJgT7i0ZaWwC_ELtirCGhKKRjTYFwZdXJCEBa7_7UD94k70SLqdINGuqcDs2j_c/s1600/Screenshot+from+2014-11-21+04:25:35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDr_4fJYbQUjYq7SrHCE_b9b5OYbXxLr5Ch20ZSIPOP8MdYMSxyYy4edeMhAJtO2Z6JwqZ0DgzV9SqAJgT7i0ZaWwC_ELtirCGhKKRjTYFwZdXJCEBa7_7UD94k70SLqdINGuqcDs2j_c/s1600/Screenshot+from+2014-11-21+04:25:35.png" height="443" width="640" /></a></div>
<br />
<br />
<br />
<br />
It is true that C language shows a lot of undefined behavior several times in increment and decrement operator operations and is totally compiler dependent. Also the printf statement shows undefined behaviour when you pass two functions for printing in printf.<br />
<br />
The link for the above problem is given below:<br />
http://stackoverflow.com/questions/12545976/order-of-argument-passing-in-c<br />
<pre class="lang-c prettyprint prettyprinted" style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"></pre>
<pre class="lang-c prettyprint prettyprinted" style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"></pre>
</div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-65796541095371769312014-11-18T04:49:00.000-08:002014-11-18T04:49:20.863-08:00Awesome Django for Django Developers<div dir="ltr" style="text-align: left;" trbidi="on">
This post is for the django developers out there. I just found out an interesting <a href="https://github.com/rosarior/awesome-django">link</a> that is very much useful for the django developers.<br />
<br />
<a href="https://github.com/rosarior/awesome-django">Awesome Django</a> is a curated list of awesome django apps, projects and resources. Inspired by and based on <a href="https://github.com/vinta/awesome-python/">Awesome-python.</a> This is important for every developers to use the tools available to him and use them wisely as he can. Also, the current world is shifting towards the open source technologies. So, in this competitive world to pace ahead , one needs to use the tools available appropriately.<br />
Some of the django apps available out there are that I use the most are :<br />
<br />
1. Django Allauth<br />
2. Django Facebook<br />
3. Django RestFramework.<br />
4. Django-Haystack<br />
5. Django Registrations and many more.<br />
<br />
If you are new to django and you have the programming knowledge of python, then you can start learning from the links below :<br />
<ul class="task-list" style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin-bottom: 16px; margin-top: 0px; padding: 0px 0px 0px 2em;">
<li style="box-sizing: border-box;"><a href="http://www.lightbird.net/dbe/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Django by Example</a> (1.2)</li>
<li style="box-sizing: border-box;"><a href="http://lightbird.net/dbe2/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Django by Example for Django 1.5</a> (1.5)</li>
<li style="box-sizing: border-box;"><a href="http://agiliq.com/books/djenofdjango/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Djen of Django</a></li>
<li style="box-sizing: border-box;"><a href="http://effectivedjango.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Effective Django</a> (1.5)</li>
<li style="box-sizing: border-box;"><a href="http://gettingstartedwithdjango.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Getting started with Django</a> (video)</li>
<li style="box-sizing: border-box;"><a href="http://www.tangowithdjango.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Tango With Django</a> (1.5)</li>
<li style="box-sizing: border-box;"><a href="http://chimera.labs.oreilly.com/books/1234000000754/index.html" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Test-Driven Web Development with Python</a> (1.7)</li>
<li style="box-sizing: border-box;"><a href="http://www.djangobook.com/en/2.0/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">The Django book</a> (2.0)</li>
<li style="box-sizing: border-box;"><a href="http://twoscoopspress.org/products/two-scoops-of-django-1-6/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box; color: #4183c4; text-decoration: none;">Two Scoops of Django: Best Practices for Django 1.6</a> - Making Python and Django as fun as ice cream.</li>
</ul>
<div>
<span style="color: #333333; font-family: Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif;"><span style="line-height: 25.6000003814697px;">If you have any query, then you can contact me on the email id provided. (deshrajdry@gmail.com)</span></span></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0tag:blogger.com,1999:blog-5524955658910717295.post-6874928148490405802014-11-16T12:33:00.002-08:002014-11-16T12:33:17.907-08:00Start blogging for Open Source<div dir="ltr" style="text-align: left;" trbidi="on">
Hey Everyone!<br />
<br />
I dont like to write blogs. But now I think that I should start writing so that I can help other developers out there with my knowledge and share my code with them . I like the knowledge sharing very much. So I have started writing blogs.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFLRUJuU9Iy6sytf5kT4G8bn47j7QI6dN0xXFJkOML_0itNQj2u3uWSm8KuEP-jiglNeGYRjwRmLjE770w7fhHPXnKQcSaQaLUxY6OesAAGQwyawEuDZfoLqILDZ63-ZV40-IzU2USEg/s1600/django.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFLRUJuU9Iy6sytf5kT4G8bn47j7QI6dN0xXFJkOML_0itNQj2u3uWSm8KuEP-jiglNeGYRjwRmLjE770w7fhHPXnKQcSaQaLUxY6OesAAGQwyawEuDZfoLqILDZ63-ZV40-IzU2USEg/s1600/django.png" height="225" width="400" /></a></div>
First of all, I would like to introduce myself. I am a Computer Science Undergraduate at JSS Noida. I love to code on programming websites like Codechef, Hackerrank and Project Euler. I am a Django developer. Till now I have done more than 10 projects based on django framework.<br />
Also I am very much interested in Open Source Contribution. I have successfully contributed in django-allauth, Impress JS and Open Hatch website. My several other patches are under review and hope soon they will also be accepted.<br />
<br />
The posts that I will be publishing will help a lot to the django developers out there in their projects.<br />
Thanks for reading my first blog post.<br />
I will be updating very soon.<br />
<br />
Keep Coding.<br />
Regards,<br />
<b>Deshraj</b><br />
<a href="http://www.deshraj.in/">http://www.deshraj.in</a><br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/07393704978326269201noreply@blogger.com0