<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1247517784847615755</atom:id><lastBuildDate>Thu, 24 Oct 2024 07:20:06 +0000</lastBuildDate><category>C++ Djvu</category><category>Open Source</category><category>FreeBSD</category><category>程式.生活.五四三</category><category>Linux</category><category>Qt</category><category>Python Djvu</category><category>Useful Commands</category><category>PHP Djvu</category><category>Django</category><category>Good Read</category><category>JavaScript Djvu</category><category>C# Djvu</category><category>Database</category><category>C++ Boost</category><category>Firefox Extension</category><category>HTML</category><category>Ruby Djvu</category><category>Thread</category><category>Algorithm</category><category>CSS</category><category>Design Patterns</category><category>Math</category><category>DailyDrill</category><category>GAE</category><category>JetPack</category><category>Lua</category><category>PyQt</category><category>Security</category><category>TCP/IP</category><category>Tiny Project</category><category>WPF</category><category>c++</category><title>Code as Fast as You Can Think</title><description>&quot;I have only proved my code correct, not tested it&quot; - Donald Knuth</description><link>http://codefast.blogspot.com/</link><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>303</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1912128599521107910</guid><pubDate>Mon, 20 Feb 2017 03:42:00 +0000</pubDate><atom:updated>2017-02-19T19:42:43.137-08:00</atom:updated><title>Static Site Renderer (work in progress)</title><description>WIP (Qt) &lt;br /&gt;
&lt;br /&gt;
1 manually trigger the QWebEnginePage::SavePage action======== &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; QMenu *menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (page()-&amp;gt;contextMenuData().linkUrl().isValid()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu = new QMenu(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::OpenLinkInThisWindow));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::OpenLinkInNewWindow));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::OpenLinkInNewTab));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::OpenLinkInNewBackgroundTab));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addSeparator();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::DownloadLinkToDisk));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::CopyLinkToClipboard));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu = page()-&amp;gt;createStandardContextMenu();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (page()-&amp;gt;contextMenuData().selectedText().isEmpty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;addAction(page()-&amp;gt;action(QWebEnginePage::SavePage));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; connect(menu, &amp;amp;QMenu::aboutToHide, menu, &amp;amp;QObject::deleteLater);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; menu-&amp;gt;popup(event-&amp;gt;globalPos());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. ========&lt;br /&gt;
&lt;br /&gt;
void TabWidget::downloadRequested(QWebEngineDownloadItem *download)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (download-&amp;gt;savePageFormat() != QWebEngineDownloadItem::UnknownSaveFormat) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePageDialog dlg(this, download-&amp;gt;savePageFormat(), download-&amp;gt;path());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dlg.exec() != SavePageDialog::Accepted)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; download-&amp;gt;setSavePageFormat(dlg.pageFormat());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; download-&amp;gt;setPath(dlg.filePath());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BrowserApplication::downloadManager()-&amp;gt;download(download);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; download-&amp;gt;accept();&lt;br /&gt;
}&lt;br /&gt;
=====&lt;br /&gt;
&lt;br /&gt;
http://stackoverflow.com/questions/38812787/how-to-handle-downloads-in-qwebengine&lt;br /&gt;
======&lt;br /&gt;
&lt;br /&gt;
http://doc.qt.io/qt-5/qwebengineprofile.html#downloadRequested&lt;br /&gt;
======&lt;br /&gt;
http://doc.qt.io/qt-5/qwebenginepage.html#save</description><link>http://codefast.blogspot.com/2017/02/static-site-renderer.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1780031746922417801</guid><pubDate>Sat, 04 Feb 2017 02:30:00 +0000</pubDate><atom:updated>2017-02-20T12:13:10.979-08:00</atom:updated><title>Wagtail CMS (new site setup FreeBSD 11)</title><description>sudo pkg install bash&lt;br /&gt;
&lt;br /&gt;
bash requires fdescfs(5) mounted on /dev/fd&lt;br /&gt;
&lt;br /&gt;
If you have not done it yet, please do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mount -t fdescfs fdesc /dev/fd&lt;br /&gt;
&lt;br /&gt;
To make it permanent, you need the following lines in /etc/fstab:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdesc&amp;nbsp;&amp;nbsp; /dev/fd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdescfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;
===&lt;br /&gt;
sudo pkg install emacs-nox11&lt;br /&gt;
&lt;br /&gt;
To run tcsd automatically, add the following line to /etc/rc.conf:&lt;br /&gt;
&lt;br /&gt;
tcsd_enable=&quot;YES&quot;&lt;br /&gt;
&lt;br /&gt;
You might want to edit /usr/local/etc/tcsd.conf to reflect your setup.&lt;br /&gt;
&lt;br /&gt;
If you want to use tcsd with software TPM emulator, use the following&lt;br /&gt;
configuration in /etc/rc.conf:&lt;br /&gt;
&lt;br /&gt;
tcsd_enable=&quot;YES&quot;&lt;br /&gt;
tcsd_mode=&quot;emulator&quot;&lt;br /&gt;
tpmd_enable=&quot;YES&quot;&lt;br /&gt;
&lt;br /&gt;
To use TPM, add your_account to &#39;_tss&#39; group like following:&lt;br /&gt;
&lt;br /&gt;
# pw groupmod _tss -m your_account&lt;br /&gt;
===&lt;br /&gt;
&lt;br /&gt;
portsnap fetch extract&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
&lt;br /&gt;
cd /usr/ports/lang/python3&lt;br /&gt;
make install clean BATCH=YES&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
cd /usr/ports/databases/postgresql96-server/&lt;br /&gt;
make install clean BATCH=YES&lt;br /&gt;
&lt;br /&gt;
sudo /usr/local/etc/rc.d/postgresql initdb&lt;br /&gt;
The files belonging to this database system will be owned by user &quot;postgres&quot;.&lt;br /&gt;
You can now start the database server using:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/local/bin/pg_ctl -D /var/db/postgres/data96 -l logfile start&lt;br /&gt;
&lt;br /&gt;
su postgres&lt;br /&gt;
$ createuser freebsd&lt;br /&gt;
$ createdb gchen&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;sudo -u postgres psql postgres&lt;/pre&gt;
&lt;pre&gt;(username postgres, databasename postgres)&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;alter user freebsd password &#39;mypassword&#39; &lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
cd /usr/ports/databases/postgresql-libpqxx&lt;br /&gt;
make install clean BATCH=YES&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;cd /usr/ports/www/nginx-devel/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;===&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;&lt;code class=&quot;code&quot;&gt;cd /usr/ports/sysutils/py-supervisor/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;&lt;code class=&quot;code&quot;&gt;===&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;&lt;code class=&quot;code&quot;&gt;&lt;code class=&quot;code&quot;&gt;cd /usr/ports/devel/py-virtualenv/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;===&lt;/code&gt;&lt;br /&gt;
&lt;code class=&quot;code&quot;&gt;&lt;code class=&quot;code&quot;&gt;cd /usr/ports/devel/py-pip/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&amp;nbsp;&lt;/code&gt; &lt;br /&gt;
==&lt;br /&gt;
/usr/ports/ports-mgmt/portupgrade-devel&lt;br /&gt;
==&lt;br /&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;cd /usr/ports/devel/git&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;cd /usr/ports/graphics/jpeg&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&lt;code&gt;sudo tzsetup&lt;/code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;bash &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;virtualenv -p /usr/local/bin/python3 py3wt &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;pip install -r mypip.txt (mypip.txt is the requirement file)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;python manage.py migrate&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;python manage.py runserver&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;python manage.py collectstatic&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;===&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt; /usr/local/etc/supervisord.conf&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;===&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code class=&quot;code&quot;&gt;cd /usr/ports/security/py-fail2ban/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code class=&quot;code&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code class=&quot;code&quot;&gt;Please do not edit the fail2ban.conf and jail.conf files as they
will be overwritten upon each upgrade of the port.

Instead, create new files named fail2ban.local and jail.local

For more information, see the official manual:

http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Configuration

If you are upgrading from 0.8.x consider adopting the new
configuration style.
&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code class=&quot;code&quot;&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;sudo ee /etc/ssh/sshd_config&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code&gt;ChallengeResponseAuthentication no
&lt;/code&gt;&lt;/code&gt;&lt;code&gt;sudo service sshd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/lang/python36&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/databases/py36-sqlite3&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;binary: /usr/local/bin/python3.6 &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;cd /usr/ports/sysutils/tmux/ &amp;amp;&amp;amp; make install clean&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;===&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/ports/devel/qt5-core&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/ports/devel/qmake5&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/local/lib/qt5/bin/qmake&amp;nbsp;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/local/lib/qt5/bin/qmake -project&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;QT += core
QT -= gui&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;add cpp file, e.g. &quot;main.cpp&quot; &lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/local/lib/qt5/bin/qmake -makefile &lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;make &lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;=== &lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;/usr/ports/www/w3m-img&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&lt;code class=&quot;code&quot;&gt;&amp;nbsp;&lt;/code&gt; **********************************************************
* To display images in proper positions,                 *
* you should set font size of your terminal emulator to  *
* &quot;# of pixels per character&quot; and &quot;# of pixels per line&quot; *
* in Option Setting Panel.                               *
*                                                        *
* For example, if you use 14 pixel fonts, the values     *
* should be these.                                       *
*                                                        *
* # of pixels per character = 7                          *
* # of pixels per line = 14                              *
**********************************************************&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;usr/ports/devel/boost-python-libs&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;Don&#39;t forget to add -pthread to your linker options when
linking your code.

You have built the Boost.Python library. You have to add the following
options when building your own code:

Compiler options:
   -I/usr/local/include/python2.7 -I/usr/local/include

Linker options:
   -L/usr/local/lib/python2.7 -L/usr/local/lib -lboost_python -lpython2.7&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt; cd /usr/ports/net/rabbitmq&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/devel/catch&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/databases/postgresql96-contrib&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/devel/boost-python-libs&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;Compiler options:
   -I/usr/local/include/python2.7 -I/usr/local/include

Linker options:
   -L/usr/local/lib/python2.7 -L/usr/local/lib -lboost_python -lpython2.7&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;=== &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;&amp;nbsp;/usr/ports/www/youtube_dl&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;If you want to use mp3 audio conversion please make sure multimedia/ffmpeg is
built with the &quot;LAME&quot; option enabled.
&amp;nbsp;===&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;code&gt;/usr/ports/security/py-certbot &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;code-pre command&quot;&gt;&lt;/pre&gt;
</description><link>http://codefast.blogspot.com/2017/02/wagtail-cms-new-site-setup-freebsd-11.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-2412523017142264979</guid><pubDate>Sun, 29 Jan 2017 04:55:00 +0000</pubDate><atom:updated>2017-02-04T07:51:08.917-08:00</atom:updated><title>Wagtail CMS (new site setup UBUNTU 16.04)</title><description>cd&lt;br /&gt;
&lt;br /&gt;
sudo apt install virtualenv&lt;br /&gt;
&lt;br /&gt;
virtualenv -p /usr/bin/python3 py3wt&lt;br /&gt;
&lt;br /&gt;
source py3wt/bin/activate&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;pip install wagtail&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;wagtail start gchen &lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;cd gchen&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;setup database&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;sudo apt-get install postgresql-client&lt;/pre&gt;
&lt;pre&gt;sudo apt-get install postgresql postgresql-contrib
sudo apt-get install pgadmin3&lt;/pre&gt;
&lt;pre&gt;sudo apt install libpq-dev &lt;/pre&gt;
&lt;pre&gt;sudo -u postgres psql postgres&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;sudo apt&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; install python3&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;dev &lt;/span&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;\password postgres &lt;/pre&gt;
&lt;pre&gt;sudo -u postgres createdb gchen   (gchen is the database name)&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;pip install psycopg2&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;python manage.py migrate&lt;/pre&gt;
&lt;br /&gt;
python manage.py createsuperuser&lt;br /&gt;
python manage.py runserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
&lt;br /&gt;
connect to database&lt;br /&gt;
&lt;pre&gt;sudo -u postgres psql postgres&lt;/pre&gt;
&lt;pre&gt;(username postgres, databasename postgres) &lt;/pre&gt;
&lt;br /&gt;
=====&lt;br /&gt;
&lt;br /&gt;
change password:&lt;br /&gt;
&lt;br /&gt;
alter user postgres password &#39;postgres&#39;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======= &lt;br /&gt;
list database&lt;br /&gt;
\l&lt;br /&gt;
&lt;br /&gt;
=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
deployment&lt;br /&gt;
sudo apt install supervisor&lt;br /&gt;
pip install gunicorn&lt;br /&gt;
python manage.py collectstatic&lt;br /&gt;
&lt;br /&gt;
====&lt;br /&gt;
sudo apt install nodejs</description><link>http://codefast.blogspot.com/2017/01/wagtail-cms-new-site-setup-ubuntu-1604.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-4470985332977655579</guid><pubDate>Sun, 28 Jun 2015 13:23:00 +0000</pubDate><atom:updated>2015-06-28T06:23:22.011-07:00</atom:updated><title>Set up Ionic in Mac OS X Yosemite</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2qayfJdKUdimMh3G6efDWWvLSyyOMmqxhRZxLe6Npz_rYzjOnG4c39Kgi2g4MDcK6cKtuPd04YAPSyPuPvMIiXPDGl7NXIgMumuSFdjHib7bkMNWCh57fheYXU2-l2rlv5n2fPEWXZ6w/s1600/Ionic_in_Mac.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2qayfJdKUdimMh3G6efDWWvLSyyOMmqxhRZxLe6Npz_rYzjOnG4c39Kgi2g4MDcK6cKtuPd04YAPSyPuPvMIiXPDGl7NXIgMumuSFdjHib7bkMNWCh57fheYXU2-l2rlv5n2fPEWXZ6w/s640/Ionic_in_Mac.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Here is the official guide: &lt;a href=&quot;http://cordova.apache.org/docs/en/3.3.0/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide&quot;&gt;http://cordova.apache.org/docs/en/3.3.0/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Go to App Store, download Xcode and install it&lt;br /&gt;
&lt;br /&gt;
3. Open Xcode&lt;br /&gt;
&lt;br /&gt;
4. Xcode Menu → Preferences → Downloads → Components → iOS 8.2 Simulator
 (there are a few others, so pick iOS 8 that can run on iPhone 6)&lt;br /&gt;
&lt;br /&gt;
5. Install Xcode Command Line Tools: Open a Terminal, type “xcode-select —install”&lt;br /&gt;
&lt;br /&gt;
6. Install nodejs, &lt;a href=&quot;https://nodejs.org/download/&quot;&gt;https://nodejs.org/download/&lt;/a&gt;, downlod “Mac &lt;span class=&quot;caps&quot;&gt;OS X &lt;/span&gt;Installer (.pkg)”, open the download file and follow the installer to install Nodejs&lt;br /&gt;
&lt;br /&gt;
7. Install cordova tool chains, open a Terminal, and type “sudo npm install -g cordova”&lt;br /&gt;
&lt;br /&gt;
8. In a terminal, create a sample app, type “cordova create hello com.example.hello HelloWorld”&lt;br /&gt;
&lt;br /&gt;
9. In the termial, go to your hello app, “cd hello”&lt;br /&gt;
&lt;br /&gt;
10. In the termial, specify your build target, type “cordova platform 
add ios” (target is ios here, others like android, firefox, kindle fire,
 blackberry etc..)&lt;br /&gt;
&lt;br /&gt;
11. In the termial, ready to build the project, type “cordova build”&lt;br /&gt;
&lt;br /&gt;
12. Use Xcode &lt;span class=&quot;caps&quot;&gt;IDE&lt;/span&gt; and ready to develop, so double clicking “hello/platforms/ios/HelloWorld.xcodeproj” (or a file ending with .xcodeproj)&lt;br /&gt;
&lt;br /&gt;
13. There is a “Play” symbol/button on the Xcode &lt;span class=&quot;caps&quot;&gt;IDE&lt;/span&gt;, you can click it and Xcode will launch the iOS simulator running your ionic Hello app.&lt;br /&gt;
&lt;br /&gt;
14. And the rest is iterating your code and build. That is, modifying 
your project in Xcode, building your project in a terminal with “cordova
 build”, then click the “Play” button to test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description><link>http://codefast.blogspot.com/2015/06/set-up-ionic-in-mac-os-x-yosemite.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2qayfJdKUdimMh3G6efDWWvLSyyOMmqxhRZxLe6Npz_rYzjOnG4c39Kgi2g4MDcK6cKtuPd04YAPSyPuPvMIiXPDGl7NXIgMumuSFdjHib7bkMNWCh57fheYXU2-l2rlv5n2fPEWXZ6w/s72-c/Ionic_in_Mac.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1389708405245381567</guid><pubDate>Fri, 18 Oct 2013 03:00:00 +0000</pubDate><atom:updated>2013-10-17T20:08:20.633-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Linux</category><title>BeagleBone Black</title><description>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkcyXDqhnBR_Ldx-cESQsJu7mxbYCa7OXfQ5LLDwAfZ6tUHnfK4CfDNVP98mLssKdxTA-l8NVIjrfprXKSXX6SPzLz5abyQoeM2ayGQYtKEzDauEIaZCw6EfE5kTFKTdY5_on5-23cVg/s1600/beaglebone.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkcyXDqhnBR_Ldx-cESQsJu7mxbYCa7OXfQ5LLDwAfZ6tUHnfK4CfDNVP98mLssKdxTA-l8NVIjrfprXKSXX6SPzLz5abyQoeM2ayGQYtKEzDauEIaZCw6EfE5kTFKTdY5_on5-23cVg/s1600/beaglebone.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Compared with Rasparry Pi, Beaglebone Black looks more developer friendly and more powerful. Remember to order extra hardware (temperature sensor,sound buzzer, LEDs, simple LCD screen,power supply etc) with your Beaglebone Black together, so you can use your Beaglebone to control them.&lt;br /&gt;
&lt;br /&gt;
You will pay around $120, nice price to pay for teaching yourself embedded programming. For example, write your own electronic thermometer. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv7Xfwpjs2yA7P6LEehhzzgoNgqWjkQO6MZI9wUgejtU8M0QHeCnM7X8pgmmgis1CGIa5yPmALwnioZH_RlY_5w3E4c97G-QrrDzT3HLjghRwcLxrs-wUIl7dVM2x4ccblIuCujXaeAQs/s1600/starter.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;571&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv7Xfwpjs2yA7P6LEehhzzgoNgqWjkQO6MZI9wUgejtU8M0QHeCnM7X8pgmmgis1CGIa5yPmALwnioZH_RlY_5w3E4c97G-QrrDzT3HLjghRwcLxrs-wUIl7dVM2x4ccblIuCujXaeAQs/s1600/starter.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh06gEihJsZM9MviH9S7Ju_ak0qndMY7_sSwDNkx45q6kU7WDcnygI5fsi6w7HrQ8iEtQ0TF5Rh8lztMlzRsfvxPPncNp7EEyVHHz478XiblI6g2xBSXSboy6boIxqv3qUNinn8yoeF-kc/s1600/hardware.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;402&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh06gEihJsZM9MviH9S7Ju_ak0qndMY7_sSwDNkx45q6kU7WDcnygI5fsi6w7HrQ8iEtQ0TF5Rh8lztMlzRsfvxPPncNp7EEyVHHz478XiblI6g2xBSXSboy6boIxqv3qUNinn8yoeF-kc/s1600/hardware.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2013/10/beaglebone-black.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkcyXDqhnBR_Ldx-cESQsJu7mxbYCa7OXfQ5LLDwAfZ6tUHnfK4CfDNVP98mLssKdxTA-l8NVIjrfprXKSXX6SPzLz5abyQoeM2ayGQYtKEzDauEIaZCw6EfE5kTFKTdY5_on5-23cVg/s72-c/beaglebone.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-7635450350440770329</guid><pubDate>Sun, 10 Feb 2013 21:18:00 +0000</pubDate><atom:updated>2013-02-11T18:45:48.585-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">c++</category><category domain="http://www.blogger.com/atom/ns#">Qt</category><title>BCD Adder (Binary-coded decimal)</title><description>&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Binary Code Decimal (BCD) Adder.&lt;br /&gt;
&lt;br /&gt;
This is a tool that helps you add two decimals as BCD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiNkl3PF6QiF131-9SgearVETAYyB_amrYxiYTAVT8N9B7SoJBLi7xTmIxQtGCv0HeKd2kLI2wnJmk4Sl-2GBw32l494e-z6_ZUV7siG0O7-kuCVGtXSBYrnNwlABddb7IT4ezUp0ttUE/s1600/bcd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiNkl3PF6QiF131-9SgearVETAYyB_amrYxiYTAVT8N9B7SoJBLi7xTmIxQtGCv0HeKd2kLI2wnJmk4Sl-2GBw32l494e-z6_ZUV7siG0O7-kuCVGtXSBYrnNwlABddb7IT4ezUp0ttUE/s640/bcd.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Why is BCD adder useful?&lt;br /&gt;
&lt;br /&gt;
Double and Float sometimes do not meet the requirement of precision. For example, you cannot hold more than 17 digits in double.&lt;br /&gt;
&lt;br /&gt;
With this BCD adder, you can add numbers with 10^18 digits!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source: &lt;a href=&quot;https://github.com/crystalcoding/HappyHacking/tree/master/BCD/bcd_gui&quot;&gt;https://github.com/crystalcoding/HappyHacking/tree/master/BCD/bcd_gui&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download (windows binary): &lt;a href=&quot;http://dl.dropbox.com/u/58798915/release-BCD-v0.9.zip&quot;&gt;http://dl.dropbox.com/u/58798915/release-BCD-v0.9.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2013/02/bcd-adder-binary-coded-decimal.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiNkl3PF6QiF131-9SgearVETAYyB_amrYxiYTAVT8N9B7SoJBLi7xTmIxQtGCv0HeKd2kLI2wnJmk4Sl-2GBw32l494e-z6_ZUV7siG0O7-kuCVGtXSBYrnNwlABddb7IT4ezUp0ttUE/s72-c/bcd.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-5489348882198969919</guid><pubDate>Mon, 14 Jan 2013 21:16:00 +0000</pubDate><atom:updated>2013-01-14T13:16:59.148-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FreeBSD</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><title>FreeNAS GUI Update </title><description>&lt;span id=&quot;internal-source-marker_0.27382055708350495&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;FreeNAS (GUI) Web-based upgrade &amp;nbsp;from 8.3.0 &amp;nbsp;Release to 8.3.1 Beta2&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;img height=&quot;313px;&quot; src=&quot;https://lh4.googleusercontent.com/7xpgsIWDfWvAI8IUCIlBrJnRGviH7-Ks-DTaKmjCuv0YyIA4s7B1opaN6-5so4oAROm9BLoQyrihkUomAdMuJN-TOD7cVVnvjHsE7hY8XbX3gIsrUnbm&quot; width=&quot;445px;&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;1. Back up the configuration “System → Settings → General → Save Config”&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;2. Download the &lt;/span&gt;&lt;a href=&quot;http://sourceforge.net/projects/freenas/files/FreeNAS-8.3.1/BETA2/x64/FreeNAS-8.3.1-BETA2-x64.GUI_Upgrade.txz/download&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;&quot;&gt;*.txz&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; file. Upload it through the GUI, &amp;nbsp;Remember to specify the checksum. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;img height=&quot;243px;&quot; src=&quot;https://lh4.googleusercontent.com/WB6zLJpwBrgTyRcDYsXDuy0EHQnXtioe_g2bAroUpzStH2ryQEJunldyIIyJTtTpEbayKNnSXvcTbMe-XabtLhpaOA9S83N5ho83LIRpy4jUfY8kVt9u&quot; width=&quot;451px;&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;3. Take about 5~10 minutes flashing the USB key, the machine reboots once, and I manually reboot it again&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;img height=&quot;447px;&quot; src=&quot;https://lh4.googleusercontent.com/pdTjGeEONb3HjdoiYOfPLdYHqsDKWRYzkjKcsHZeO9lFtQBiTfHHhu2bHyS6MQX1JWkHa-ItinYMMDb1Lu-T-gU60y9QnTzyQLz-bNnLaV_UKCkZbVMT&quot; width=&quot;453px;&quot; /&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;Old services are up and running after the upgrade. (Say the old config are good) &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;reference&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;&quot;&gt;http://doc.freenas.org/index.php/Upgrading_FreeNAS%C2%AE&lt;/span&gt;</description><link>http://codefast.blogspot.com/2013/01/freenas-gui-update.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/7xpgsIWDfWvAI8IUCIlBrJnRGviH7-Ks-DTaKmjCuv0YyIA4s7B1opaN6-5so4oAROm9BLoQyrihkUomAdMuJN-TOD7cVVnvjHsE7hY8XbX3gIsrUnbm=s72-c" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-3443600120469798195</guid><pubDate>Sat, 12 Jan 2013 05:47:00 +0000</pubDate><atom:updated>2013-01-11T21:49:45.818-08:00</atom:updated><title>When there is update available for your computer...</title><description>&lt;em&gt;DeJaVu ? :p&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEdPyqQ1Ah47A1_3iLD97D73Um9GGNPsLPix1jWcgOm9F0VeIe0455ke-TRsd3qAqWFp7yZsIabWIRHz2rvz21oT0pDwo8beCau0vV0wubGFQ_OWMC3-R3-au0ZVdVa9rexsxLfbIF220/s1600/ComputerUpdates.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;364&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEdPyqQ1Ah47A1_3iLD97D73Um9GGNPsLPix1jWcgOm9F0VeIe0455ke-TRsd3qAqWFp7yZsIabWIRHz2rvz21oT0pDwo8beCau0vV0wubGFQ_OWMC3-R3-au0ZVdVa9rexsxLfbIF220/s640/ComputerUpdates.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2013/01/when-there-is-update-available-for-your.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEdPyqQ1Ah47A1_3iLD97D73Um9GGNPsLPix1jWcgOm9F0VeIe0455ke-TRsd3qAqWFp7yZsIabWIRHz2rvz21oT0pDwo8beCau0vV0wubGFQ_OWMC3-R3-au0ZVdVa9rexsxLfbIF220/s72-c/ComputerUpdates.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-6191685444951334922</guid><pubDate>Tue, 08 Jan 2013 17:39:00 +0000</pubDate><atom:updated>2013-01-08T09:56:39.795-08:00</atom:updated><title>Thanks James :D</title><description>The first time in my life that I have to read the manual to use a keyboard.&amp;nbsp; (a mechanical one)&lt;br /&gt;
&lt;br /&gt;
Learn a few things about mechanical keyboards. (do I really need the USB polling rate &amp;lt; &lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;1000Hz/1ms response time&lt;/span&gt;) I like the touch. It feels right even after I switched from a old keyboards I&#39;ve used for months.&lt;br /&gt;
&lt;br /&gt;
Also CoolerMaster is a Taiwan-based company? A little surprise.&lt;br /&gt;
&lt;br /&gt;
The LED backlight is also very useful. Usually my room is very dark at night.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Got it yesterday night. Awesome gift from James. Definitely a great product which will last for years.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVjtNGbXjw_PFBBszGUkdIMLdnKooJpDRLsKHBIOzFw-tg4XcQAMM9VL60rqvxrLUBCvTVDvp4z5mD2BpVVib5V-emoZWtQDlbEUDku62JYPoyR6vCS0dLOc3JRng2L-zwWSctYwAkWus/s1600/before1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVjtNGbXjw_PFBBszGUkdIMLdnKooJpDRLsKHBIOzFw-tg4XcQAMM9VL60rqvxrLUBCvTVDvp4z5mD2BpVVib5V-emoZWtQDlbEUDku62JYPoyR6vCS0dLOc3JRng2L-zwWSctYwAkWus/s320/before1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtateroN2SwsWSlbyLFMHlIG3feYXv6H8DT3KvPfm27Hc5a_CFQ5n-fddsJWn41xZ-OvJFE70_9ulyl_J938Etk-gWwCpwk8V2ECwkgMS8o2riFRJrTBcGWH8a_sVPKxClhc8oar8tNfM/s1600/IMAG0488.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtateroN2SwsWSlbyLFMHlIG3feYXv6H8DT3KvPfm27Hc5a_CFQ5n-fddsJWn41xZ-OvJFE70_9ulyl_J938Etk-gWwCpwk8V2ECwkgMS8o2riFRJrTBcGWH8a_sVPKxClhc8oar8tNfM/s320/IMAG0488.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCXENuYagT12IUvgLOVQ0mKGvfEg1HksC3cBi-sv0lgUqyDuCxBv5n6wrRSFx0RhwLcoqiVqvcrULYF-1IOqYc1njx0Jbd6lpJnO6CZZQ2qSNDdhUkOeBAwp37Zbi5AiWic6JlZ1zsSjc/s1600/IMAG0503.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCXENuYagT12IUvgLOVQ0mKGvfEg1HksC3cBi-sv0lgUqyDuCxBv5n6wrRSFx0RhwLcoqiVqvcrULYF-1IOqYc1njx0Jbd6lpJnO6CZZQ2qSNDdhUkOeBAwp37Zbi5AiWic6JlZ1zsSjc/s320/IMAG0503.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYtTz6PmNngvztjSPb0MwroB1XMtpsV5HDwJRxOYhz98DAQcOeZT7imRoZJHpJNtW9pyJj0xK-ycQujV9ELAvyGz8bC9GPpdODXBSlglpVxIDVCAlPBHfU1PRhT09wbyvCSnCNB1-pReY/s1600/IMAG0507.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYtTz6PmNngvztjSPb0MwroB1XMtpsV5HDwJRxOYhz98DAQcOeZT7imRoZJHpJNtW9pyJj0xK-ycQujV9ELAvyGz8bC9GPpdODXBSlglpVxIDVCAlPBHfU1PRhT09wbyvCSnCNB1-pReY/s320/IMAG0507.jpg&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2013/01/thank-you-james-d.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVjtNGbXjw_PFBBszGUkdIMLdnKooJpDRLsKHBIOzFw-tg4XcQAMM9VL60rqvxrLUBCvTVDvp4z5mD2BpVVib5V-emoZWtQDlbEUDku62JYPoyR6vCS0dLOc3JRng2L-zwWSctYwAkWus/s72-c/before1.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-4034219497874872610</guid><pubDate>Mon, 12 Nov 2012 00:33:00 +0000</pubDate><atom:updated>2012-11-11T16:50:13.047-08:00</atom:updated><title>Serbian Recipies</title><description>Today Srđan prepared Bison-Meat-with-Rice-inside-Red-Pepper, yummy. He is my roommate studying mechanical engineering @ UoR in the USA. He claimed this is the first time he tried this &lt;a href=&quot;http://en.wikipedia.org/wiki/Serbia&quot; target=&quot;_blank&quot;&gt;Serbian&lt;/a&gt; recipe.&lt;br /&gt;
&lt;br /&gt;
First time and successful? How come? I guess it is because he speaks &lt;a href=&quot;http://www.mathworks.com/products/matlab/&quot; target=&quot;_blank&quot;&gt;Matlab&lt;/a&gt;. Another example that coders can &lt;a href=&quot;http://www.codinghorror.com/blog/2007/06/learning-or-learning-how-to-learn.html&quot; target=&quot;_blank&quot;&gt;learn new things effectively&lt;/a&gt;. xD&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGgEy3ZXYQ4YicW90YwdQZ6_QtnnYleEl88yvRHo9wmGUUGJiw5ttbw4-yROH_UQcGpR1wR2KmTgC2b2wwzqiSwbXWCjQ4HytaHLlno5ceQW_QWhVDFl9qXMzcv1UfrNwD9GOlpp4XrnI/s1600/IMAG0095.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGgEy3ZXYQ4YicW90YwdQZ6_QtnnYleEl88yvRHo9wmGUUGJiw5ttbw4-yROH_UQcGpR1wR2KmTgC2b2wwzqiSwbXWCjQ4HytaHLlno5ceQW_QWhVDFl9qXMzcv1UfrNwD9GOlpp4XrnI/s640/IMAG0095.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8oHALWLKF9bklicF-jwrYKEg7Ze9czjNILDmGeBK92EZQLwIYiHvPprRKPH7joEV3i3P2sIJwrYSDFM1RKE1fuhSh3JWC1Y5MNUViYKnq148lqVwTmTwXSSvYSVHU4soZfeNI4wAp4-E/s1600/IMAG0008.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8oHALWLKF9bklicF-jwrYKEg7Ze9czjNILDmGeBK92EZQLwIYiHvPprRKPH7joEV3i3P2sIJwrYSDFM1RKE1fuhSh3JWC1Y5MNUViYKnq148lqVwTmTwXSSvYSVHU4soZfeNI4wAp4-E/s640/IMAG0008.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuJNtP_WOc-GYhy-hcHKR9Qm7n6TBpg2qhV8wEsWBjjk2g4gDufuITXB6ofMQCXsn73jdQu3LMjIzA7BasFeobY5vxvk-KxellwSHJKo7laXpsnTcNaHxYoXiTC1_g99pyv3rDpU3Rj2A/s1600/IMAG0088.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuJNtP_WOc-GYhy-hcHKR9Qm7n6TBpg2qhV8wEsWBjjk2g4gDufuITXB6ofMQCXsn73jdQu3LMjIzA7BasFeobY5vxvk-KxellwSHJKo7laXpsnTcNaHxYoXiTC1_g99pyv3rDpU3Rj2A/s640/IMAG0088.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwwD7DTM7c4sRYawpSuX3oBN8WUC0-VuFj3F5GBV1rg1PlWL1d48hJLWSRhtKORUw1cg0EWO8Qrkl_yvgqvQIn-sXcUm9K-28rMFDsk6-olgyBPc8bYTrjfIXA4uc9-kdDPTBZTWS894M/s1600/IMAG0091.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwwD7DTM7c4sRYawpSuX3oBN8WUC0-VuFj3F5GBV1rg1PlWL1d48hJLWSRhtKORUw1cg0EWO8Qrkl_yvgqvQIn-sXcUm9K-28rMFDsk6-olgyBPc8bYTrjfIXA4uc9-kdDPTBZTWS894M/s640/IMAG0091.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYJGSIjweay-Bf4UClCUUwISBM7tfWsGuiU2XlAABZCOQVJC6rNYqw9TsT7GeGyfEEaT6z2MaDc8xtZWmAYGcQsdDMyc8SaRL_06pUsnExfbuF7rjHlcmRWv2NZ3afl2-mI3ATGQUDuQ/s1600/IMAG0092.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYJGSIjweay-Bf4UClCUUwISBM7tfWsGuiU2XlAABZCOQVJC6rNYqw9TsT7GeGyfEEaT6z2MaDc8xtZWmAYGcQsdDMyc8SaRL_06pUsnExfbuF7rjHlcmRWv2NZ3afl2-mI3ATGQUDuQ/s640/IMAG0092.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs5HuSSqBqDc24A3FUJCIpK5Dy8AazWYbvBnBReTebc5ab5HjkSKviAZ9ZfYNOQbYNNA4Dr7m7HWQxLh0RaZRMKLijPX2R5SjvXY6xqCrVESxtOGjPz2mrfGMUQYKEUSR3sJmG_UNYuB8/s1600/IMAG0093.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs5HuSSqBqDc24A3FUJCIpK5Dy8AazWYbvBnBReTebc5ab5HjkSKviAZ9ZfYNOQbYNNA4Dr7m7HWQxLh0RaZRMKLijPX2R5SjvXY6xqCrVESxtOGjPz2mrfGMUQYKEUSR3sJmG_UNYuB8/s640/IMAG0093.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaftlTYNCg0H1sr7aaEaE53m0D5zG29jC_DO-gt3waxV3PG3NgU9AMgddojd8ldUTO3KsuEe9_TA_yL_Zc9WFQ7BHoMtTm_msletxb9_qC9p70VPsJDyEUYZQcoM0knmYeBZZFC2Rgm4M/s1600/IMAG0094.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaftlTYNCg0H1sr7aaEaE53m0D5zG29jC_DO-gt3waxV3PG3NgU9AMgddojd8ldUTO3KsuEe9_TA_yL_Zc9WFQ7BHoMtTm_msletxb9_qC9p70VPsJDyEUYZQcoM0knmYeBZZFC2Rgm4M/s640/IMAG0094.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2012/11/serbian-recipies.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGgEy3ZXYQ4YicW90YwdQZ6_QtnnYleEl88yvRHo9wmGUUGJiw5ttbw4-yROH_UQcGpR1wR2KmTgC2b2wwzqiSwbXWCjQ4HytaHLlno5ceQW_QWhVDFl9qXMzcv1UfrNwD9GOlpp4XrnI/s72-c/IMAG0095.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-3931683958212007315</guid><pubDate>Sun, 09 Sep 2012 14:36:00 +0000</pubDate><atom:updated>2012-09-09T07:40:52.331-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Python Djvu</category><title>Python, Dropbox API File Size Mismatch Bug Under Window</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;
The following Python code will simply upload a file using Dropbox API. This works will under Linux. However, the code will break if you use it under Windows platform.&lt;/div&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;
Do you see the bug?&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggzAX-gVFgsbWd-J8w5ClruY_YrVpFowAysikvAyYHasGhyphenhyphencWA-Lz_RHTFMCJ2hUYK6F0I9X-WxM-4DZbXBRNcqTQDo2Q4x60W7Vq2Gz6a3fTYJbZhp_gqaYDFYUE09MyN4yzwi-aebgY/s1600/codefast.blogspot.com+2012-9-9+10:37:0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggzAX-gVFgsbWd-J8w5ClruY_YrVpFowAysikvAyYHasGhyphenhyphencWA-Lz_RHTFMCJ2hUYK6F0I9X-WxM-4DZbXBRNcqTQDo2Q4x60W7Vq2Gz6a3fTYJbZhp_gqaYDFYUE09MyN4yzwi-aebgY/s1600/codefast.blogspot.com+2012-9-9+10:37:0.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;
The bug is at line:&lt;/div&gt;
&lt;b&gt;f = open(&#39;working-draf.txt&#39;)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This may or may not work. Because it is not open as a binary file. Dropbox has a utility that will complain how many bytes it read is not equal to the file you are trying to send with the client.puf_file() call.&lt;br /&gt;
&lt;br /&gt;
To fix it, simple put:&lt;br /&gt;
&lt;b&gt;f = open(&#39;working-draft.txt&#39;, &lt;span style=&quot;color: #e69138;&quot;&gt;&#39;rb&#39;&lt;/span&gt;)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Open the file in binary mode ! This will get rid of file size mismatch assertion.&lt;br /&gt;
&lt;br /&gt;
Happy Dropboxing.</description><link>http://codefast.blogspot.com/2012/09/python-dropbox-api-file-size-mismatch.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggzAX-gVFgsbWd-J8w5ClruY_YrVpFowAysikvAyYHasGhyphenhyphencWA-Lz_RHTFMCJ2hUYK6F0I9X-WxM-4DZbXBRNcqTQDo2Q4x60W7Vq2Gz6a3fTYJbZhp_gqaYDFYUE09MyN4yzwi-aebgY/s72-c/codefast.blogspot.com+2012-9-9+10:37:0.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1280909118279563718</guid><pubDate>Sat, 18 Aug 2012 18:31:00 +0000</pubDate><atom:updated>2012-08-18T11:31:59.815-07:00</atom:updated><title></title><description>&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/7jpm5OkRNac&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Kindle Touch 要怎麼換回英文&lt;br /&gt;
&lt;br /&gt;
1. 按 home 按鈕，回主頁&lt;br /&gt;
2. 按 menu (右上), menu 會彈出&lt;br /&gt;
3. 按 setting (從下 數上來第二個)&lt;br /&gt;
4. 按 device option (從下 數上來第二個)&lt;br /&gt;
5. 按 language and dictionaries (從下 數上來第一個)&lt;br /&gt;
6. 按 language (從上 數下來第一個)&lt;br /&gt;
7. 按 english (united states) (從上 數下第三個)&lt;br /&gt;
8. 按 ok (在同一頁，右下), 按後確定會彈出&lt;br /&gt;
9. 按 ok (右)&lt;br /&gt;
10. kindle touch 會 restart&lt;br /&gt;
</description><link>http://codefast.blogspot.com/2012/08/kindle-touch-1.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/7jpm5OkRNac/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1371044408351352144</guid><pubDate>Wed, 08 Aug 2012 13:25:00 +0000</pubDate><atom:updated>2012-08-08T06:41:43.339-07:00</atom:updated><title>Kindle Touch 怎麼重設</title><description>老爸，&lt;br /&gt;
&lt;br /&gt;
網上看一堆美國人用kindle也是不小心選到西斑牙文.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6zYXeH0zO-g2Nd1RtdxPdgUmdNgIujvl6H0SI7UJW6ih1cgaSK9vSnBYXUL8nEegu5Me1rKssZzjw4fWYW76NK6XJIXrbuFmnyqUbhuTa1RQhNx1zpmzb9kTvAAOXTXPTWrivHllebeo/s1600/amazon-kindle-touch-uk-release-date-set-0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6zYXeH0zO-g2Nd1RtdxPdgUmdNgIujvl6H0SI7UJW6ih1cgaSK9vSnBYXUL8nEegu5Me1rKssZzjw4fWYW76NK6XJIXrbuFmnyqUbhuTa1RQhNx1zpmzb9kTvAAOXTXPTWrivHllebeo/s400/amazon-kindle-touch-uk-release-date-set-0.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;很簡單你可以重設Kindle:&lt;br /&gt;
(不是英文也沒關係因為其它語言也是這樣設)&lt;br /&gt;
&lt;br /&gt;
1. 選項-&amp;gt; 2. 設定 -&amp;gt; 3. 選項 -&amp;gt; 4. 重設 -&amp;gt; 5. 確定&lt;br /&gt;
&lt;br /&gt;
你就照下面youtube 的教學去touch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. 右上角按 &quot;選項&quot;&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m5s&quot;&gt;http://youtu.be/UwEx4dTj5Dw?t=1m5s&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. 按&quot;設定&quot; (從下數上來第三個選項)&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m10s&quot;&gt;http://youtu.be/UwEx4dTj5Dw?t=1m10s&lt;/a&gt;&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m10s&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
3. 再按右上角&quot;選項&quot;&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m20s&quot;&gt;http://youtu.be/UwEx4dTj5Dw?t=1m20s&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
4. 按&quot;重設&quot; (從下數上來第四個選項)&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m29s&quot;&gt;http://youtu.be/UwEx4dTj5Dw?t=1m29s&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
5. 在yes,&amp;nbsp; no視窗，按yes&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/UwEx4dTj5Dw?t=1m32s&quot;&gt;http://youtu.be/UwEx4dTj5Dw?t=1m32s&lt;/a&gt;</description><link>http://codefast.blogspot.com/2012/08/kindle-touch.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6zYXeH0zO-g2Nd1RtdxPdgUmdNgIujvl6H0SI7UJW6ih1cgaSK9vSnBYXUL8nEegu5Me1rKssZzjw4fWYW76NK6XJIXrbuFmnyqUbhuTa1RQhNx1zpmzb9kTvAAOXTXPTWrivHllebeo/s72-c/amazon-kindle-touch-uk-release-date-set-0.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-3395954950483310144</guid><pubDate>Sat, 14 Jul 2012 12:42:00 +0000</pubDate><atom:updated>2012-08-06T18:01:12.313-07:00</atom:updated><title>HTTP Authentication for Django VirtualHost</title><description>If you want to protect a virtualhost with Django, you can use http basic authentication. The question is how &amp;nbsp;to protect your test site but not the production site (assuming they are both on the same server). Here is how to do it:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
First generate your htppasswd file:&lt;/div&gt;
&lt;div&gt;
#htpasswd -c htpasswd user_name&lt;/div&gt;
&lt;div&gt;
assume we put the file in&lt;/div&gt;
&lt;div&gt;
/home/myusename/htpasswd&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Second, assume the site you want to protect is called test.mysite.com on port 80&lt;/div&gt;
&lt;div&gt;
Put the following for your http configuration. In Ubuntu, it will be a file in your /etc/apach2/sites-enable/ directory&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setEnvIfNoCase HOST ^test\.mysite\.com\.?(:80)?$ PROTECTED_HOST&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;location&gt;&lt;/location&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#put this in your location directive&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthUserFile /home/myusername/htpasswd&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthType Basic&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthName &quot;this site is password protected :)&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Order Deny,Allow&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Satisfy any&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Deny from all&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Require valid-user&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Allow from env=!PROTECTED_HOST&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
This configuration, will pop up password for test.mysite.com on port 80.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://codefast.blogspot.com/2012/07/http-authentication-for-django.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-6452201095560132536</guid><pubDate>Wed, 18 Jan 2012 04:32:00 +0000</pubDate><atom:updated>2012-01-17T20:33:07.873-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Django</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><title>Django, Force Https on Django Admin in Apache</title><description>&lt;br /&gt;
Encrypt all network traffic going through Django admin pages. &lt;br /&gt;
i.e. All pages  &lt;b&gt;http&lt;/b&gt;://yoursite.com/admin/ANY_PAGES will be redirected to &lt;br /&gt;
secure pages &lt;b&gt;https&lt;/b&gt;://yoursite.com/admin/ANY_PAGES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just add a redirect match to your httpd.conf file. For example, in Ubuntu (/etc/apache2/sites-available/your_config_file) you can do:&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;color: #e69138;&quot;&gt;RedirectMatch ^/admin.* &lt;a href=&quot;https://deydistributing.com/admin&quot;&gt;https://yoursite.com/admin&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2012/01/django-force-https-on-django-admin-in.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1952717629091345419</guid><pubDate>Sun, 15 Jan 2012 01:48:00 +0000</pubDate><atom:updated>2012-09-14T22:17:47.772-07:00</atom:updated><title>Integrate Nginx Monitoring into Monitis.com</title><description>When you are looking for a web server which is highly scalable with low memory footprint, Nginx can be your winning candidate. Nginx is well-known for its ability to deliver static content with efficient use of server resources. Nginx is also lightweight compare to Apache, and Nginx can handle concurrency very well. To appreciate Nginx&#39;s power, Nginx comes with a module called &lt;a href=&quot;http://wiki.nginx.org/NginxHttpStubStatusModule&quot; target=&quot;_blank&quot;&gt;stub_status&lt;/a&gt;, which allows you to monitor the server statistics in real time. Here is an example of the output once you enable the stub_status module:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjFBCIEQy9Bczwp_CmFuR726izD5KAclCPgh11NxIFcAzy5Bpi3O_NpYJT14HQNjt9mBvi08L5mlNrVGNvOlPQ2eoLuTATpy9V-XjhQ3Rv6FoAObyHqXBXyThFWjifXiG7fBg-8SBYjNE/s1600/nginx.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;65&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjFBCIEQy9Bczwp_CmFuR726izD5KAclCPgh11NxIFcAzy5Bpi3O_NpYJT14HQNjt9mBvi08L5mlNrVGNvOlPQ2eoLuTATpy9V-XjhQ3Rv6FoAObyHqXBXyThFWjifXiG7fBg-8SBYjNE/s200/nginx.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;b&gt;Active connections: 291
server accepts handled requests
&amp;nbsp; 16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106&amp;nbsp; &lt;/b&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;b&gt; &lt;/b&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;b&gt; &lt;/b&gt;&lt;/pre&gt;
However, the information Nginx provides above is a bit cryptic. Furthermore, if you need to monitor several Nginx servers, things can quickly go out of control. Isn&#39;t it nice for systemadin to have the stats organize into columns? Better yet, can we keep tracking all stats continuously with a nice graph?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Monitis (&lt;a href=&quot;https://www.monitis.com/&quot; target=&quot;_blank&quot;&gt;https://www.monitis.com/&lt;/a&gt;), a hosted statistics and monitoring provider, can organize those Nginx statistics for you. Once you have a Monitis account, you can create several custom monitors, and track several Nginx servers at once. Everything is inside your Monitis Dashboard. We&#39;ve demonstrated the solution for &lt;a href=&quot;http://blog.monitis.com/index.php/2011/07/03/integrate-apache-monitoring-into-monitis-com/&quot; target=&quot;_blank&quot;&gt;Integrate Apache Monitoring into Monitis.com&lt;/a&gt;. Today we&#39;ll show you how to achieve this for Nginx.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNIq9-e0cyj5Iu6LQUPEdGyfxFpv-BDtozeBKyK0b0lhg3Z2DqjWEAnb7C9lh5Q6AZTDkz5ztm_edm0TzABr90wrlcekTlmMTAMLiIcnxkRAbBcT4YgsZdcVFXHK_abIqXMMemhUAaAO4/s1600/nginxgraph.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNIq9-e0cyj5Iu6LQUPEdGyfxFpv-BDtozeBKyK0b0lhg3Z2DqjWEAnb7C9lh5Q6AZTDkz5ztm_edm0TzABr90wrlcekTlmMTAMLiIcnxkRAbBcT4YgsZdcVFXHK_abIqXMMemhUAaAO4/s400/nginxgraph.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Figure 1: Monitis shows a nice graph for Nginx Stub Staus.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt4rx6wJGRMadruiQk7l-dq_gAxbN-WSGLdqafFev1jMdJcBfntcsbh2Mv1uU3fIuj9zA5TQNVsjulEHPNHw6FYqcza90ibi3DJ9XgCTQzyMHnMZUpaLU1P_tqG1ezL-fr6_mfKsi8X8/s1600/nginxstat.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt4rx6wJGRMadruiQk7l-dq_gAxbN-WSGLdqafFev1jMdJcBfntcsbh2Mv1uU3fIuj9zA5TQNVsjulEHPNHw6FYqcza90ibi3DJ9XgCTQzyMHnMZUpaLU1P_tqG1ezL-fr6_mfKsi8X8/s400/nginxstat.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Figure 2: Monitis provides a cleaner output for Nginx Server Stats&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Automatically Feed Nginx Statistics to Your Monitis account&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#39;s quickly show an available program to do this. In 5 steps, you can fetch your Nginx stats and send them to your Monitis account periodically. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. You Nginx stub_status module is installed.&lt;br /&gt;
&lt;br /&gt;
2. Edit your nginx.conf, so that Nginx knows the url for stats. Here we use port &lt;i&gt;80&lt;/i&gt;, listen on &lt;i&gt;localhost&lt;/i&gt; with address of &lt;i&gt;nginx_status&lt;/i&gt;. i.e. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; server {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;80&lt;/b&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp; &lt;b&gt;localhost&lt;/b&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; location &lt;b&gt;/nginx_status&lt;/b&gt; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stub_status on;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp;&amp;nbsp; off;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; allow 127.0.0.1;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; deny all;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
i.e. with the configuration above, you can view the original Nginx stats @ http://localhost/nginx_status &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Start your Nginx Server with Stub Status enable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. &lt;a href=&quot;https://github.com/crystalcoding/Monitis-Scripting/tree/master/csharp/monitis_nginx_stats/sample&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; the code and run the program.(required .Net 3.5+)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On your windows command line, run the program like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;monitis_nigix_stats.exe &lt;i&gt;&quot;[apikey]&quot; &quot;[secretkey]&quot; &quot;[monitorname]&quot; &quot;[minitortag]&quot; &quot;[nginx stub status url]&quot;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example,assume you already have a Monitis account:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #666666;&quot;&gt;monitis_nginx_stats.exe &quot;14NAC40PIMSUEEBQFJOQL18T5U&quot; &quot;74H6U7A2DG71JU80QR48FEOPAL&quot; &quot;Nginx Monitor&quot; &quot;Nginx+Stub+Status&quot; &quot;http://localhost/nginx_status&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;*note: please register to get your free apiKey and secreKey from Monitis&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.monitis.com/free_signup.jsp&quot;&gt;https://www.monitis.com/free_signup.jsp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Log in to your Monitis account, you can see a new custom monitor ready to be added (Monitors-&amp;gt;Manage Monitors-&amp;gt;Custom Monitors). Check and add your new monitor to your dashboard.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXaojFoW8H8eRk7fQ9JLq4qM8DwzFet0JSK_O-1GF_x-AkSazLfGEakMx2Qr2UzsZ-Ikt_Wwe682iKCUHRfDNLr4q6F7KXNVrova52PuElpzV0wWrXW_fpw3BdFx9_-PWp7ikhn-FWIXU/s1600/addmonitor.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXaojFoW8H8eRk7fQ9JLq4qM8DwzFet0JSK_O-1GF_x-AkSazLfGEakMx2Qr2UzsZ-Ikt_Wwe682iKCUHRfDNLr4q6F7KXNVrova52PuElpzV0wWrXW_fpw3BdFx9_-PWp7ikhn-FWIXU/s400/addmonitor.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. You are all set.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp4GhchR7dKNRJgI9cfxHQQ8oa_xmEKEF8mone_q9AU-eMFU1FcvmzNSiXr6SgMd2UUmOSvU7uccF606_ZNn6Ypu2Qv4k19RuXCUGMqXwgrASnrsKEt3is8a0afQgVQxTRPnwgEx5nYWQ/s1600/nginxgraph2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp4GhchR7dKNRJgI9cfxHQQ8oa_xmEKEF8mone_q9AU-eMFU1FcvmzNSiXr6SgMd2UUmOSvU7uccF606_ZNn6Ypu2Qv4k19RuXCUGMqXwgrASnrsKEt3is8a0afQgVQxTRPnwgEx5nYWQ/s320/nginxgraph2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In this article, we demonstrate Monitis&#39; enterprise solution in Nginx monitoring. Now statistics from Nginx are eye-candy to view, and we can gather data from several Nginx servers in a single dashboard. The code example above is in C#. However, Monitis provides opensource library (&lt;a href=&quot;http://monitis.com/api/api.html#sdk&quot; target=&quot;_blank&quot;&gt;SDK&lt;/a&gt;) and scripts available for your custom monitors. You are free to pick a SDK in your favorite language, or simply integrate the already working script with your Monitis account. Get your free registration at &lt;a href=&quot;https://www.monitis.com/free_signup.jsp&quot;&gt;https://www.monitis.com/free_signup.jsp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy Nginx monitoring!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Monitis Team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
External Scripts:&lt;br /&gt;
&lt;br /&gt;
Nginx Monitoring in Python&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/crystalcoding/Monitis-Scripting/tree/master/python&quot;&gt;https://github.com/crystalcoding/Monitis-Scripting/tree/master/python&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Nginx Monitoring in C#&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/crystalcoding/Monitis-Scripting/tree/master/csharp&quot;&gt;https://github.com/crystalcoding/Monitis-Scripting/tree/master/csharp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
External Links for further information:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://monitis.com/api/api.html#addCustomMonitor&quot;&gt;http://monitis.com/api/api.html#addCustomMonitor&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.monitis.com/free_signup.jsp&quot;&gt;https://www.monitis.com/free_signup.jsp&lt;/a&gt;&lt;a href=&quot;http://blog.monitis.com/index.php/2011/07/05/25-apache-performance-tuning-tips/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to 25 Apache Performance Tuning Tips&quot;&gt;25 Apache Performance Tuning Tips&lt;/a&gt;</description><link>http://codefast.blogspot.com/2012/01/integrate-nginx-monitoring-into.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjFBCIEQy9Bczwp_CmFuR726izD5KAclCPgh11NxIFcAzy5Bpi3O_NpYJT14HQNjt9mBvi08L5mlNrVGNvOlPQ2eoLuTATpy9V-XjhQ3Rv6FoAObyHqXBXyThFWjifXiG7fBg-8SBYjNE/s72-c/nginx.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-5990225632564800362</guid><pubDate>Sat, 10 Dec 2011 16:03:00 +0000</pubDate><atom:updated>2011-12-10T08:05:48.334-08:00</atom:updated><title>You Are the Apple of My Eye</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8qv08mDwy9O37B5d4Di1rHLjfkL4VjSSzvWj-7eFSmqgvvqS3Fat_0zVTqhEEIMTunBvQxZFocIqGRXANetpMfZvY9m7lC5Pp_qNCAjyTHr8bp1njeofPgjrby3GB2HwdePY7K84wXkI/s1600/youaretheappleofmyeyesJPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;580&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8qv08mDwy9O37B5d4Di1rHLjfkL4VjSSzvWj-7eFSmqgvvqS3Fat_0zVTqhEEIMTunBvQxZFocIqGRXANetpMfZvY9m7lC5Pp_qNCAjyTHr8bp1njeofPgjrby3GB2HwdePY7K84wXkI/s640/youaretheappleofmyeyesJPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/12/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8qv08mDwy9O37B5d4Di1rHLjfkL4VjSSzvWj-7eFSmqgvvqS3Fat_0zVTqhEEIMTunBvQxZFocIqGRXANetpMfZvY9m7lC5Pp_qNCAjyTHr8bp1njeofPgjrby3GB2HwdePY7K84wXkI/s72-c/youaretheappleofmyeyesJPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-2565366870582036563</guid><pubDate>Wed, 07 Dec 2011 01:52:00 +0000</pubDate><atom:updated>2011-12-06T17:59:31.892-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C++ Djvu</category><category domain="http://www.blogger.com/atom/ns#">Qt</category><title>Qt Djvu, Short Template to Extract Target Line in Current Directory</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIiF5-p7BOKhU8-7lVCj4mSIfSwhSfRGOa2Xz5L4D5MwFrh45AFLdK-tsoA3zx1N7j3EvYoAk_kfp5d6Llxz_oaG27Ifuq1zml7RVNipzqMwzGc6cVdgWdLj9DX2x7mdrHRITPPl0kngs/s1600/codepad.org+2011-12-6+20%253A51%253A27.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIiF5-p7BOKhU8-7lVCj4mSIfSwhSfRGOa2Xz5L4D5MwFrh45AFLdK-tsoA3zx1N7j3EvYoAk_kfp5d6Llxz_oaG27Ifuq1zml7RVNipzqMwzGc6cVdgWdLj9DX2x7mdrHRITPPl0kngs/s1600/codepad.org+2011-12-6+20%253A51%253A27.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#39;s a boilerplate for reading and parsing files.&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&lt;b&gt;Just throw in your &quot;process&quot; interface that can do&lt;/b&gt;&lt;/div&gt;
&lt;b style=&quot;color: #e69138;&quot;&gt;all the heavy duty work.&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
The code can: &lt;br /&gt;
1. read all files in the current directory&lt;br /&gt;
2. extract all lines which contain http://&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_70253410&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/mixtools/source/browse/trunk/qt/extract_url_in_files.cpp&quot;&gt;http://code.google.com/p/mixtools/source/browse/trunk/qt/extract_url_in_files.cpp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/12/qt-djvu-short-template-to-extrat-target.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIiF5-p7BOKhU8-7lVCj4mSIfSwhSfRGOa2Xz5L4D5MwFrh45AFLdK-tsoA3zx1N7j3EvYoAk_kfp5d6Llxz_oaG27Ifuq1zml7RVNipzqMwzGc6cVdgWdLj9DX2x7mdrHRITPPl0kngs/s72-c/codepad.org+2011-12-6+20%253A51%253A27.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-6543730147615259431</guid><pubDate>Wed, 30 Nov 2011 17:41:00 +0000</pubDate><atom:updated>2011-12-05T19:54:09.103-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C++ Djvu</category><title>OpenSource, JUCE C++ Library</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i41.tinypic.com/2m5cpdt.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;http://i41.tinypic.com/2m5cpdt.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
JUCE is another nice C++ Framework besides Qt.&lt;br /&gt;
It is quite feature-rich. GUI, Socket, and even Multi-media.&lt;br /&gt;
And it&#39;s Cross-Platform under Linux, Mac and Windows :)&lt;br /&gt;
Check it out here&lt;br /&gt;
&lt;a href=&quot;http://www.rawmaterialsoftware.com/juce.php&quot;&gt;http://www.rawmaterialsoftware.com/juce.php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/11/opensource-juce-c-library.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://i41.tinypic.com/2m5cpdt_th.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1598601216450227219</guid><pubDate>Sat, 19 Nov 2011 20:10:00 +0000</pubDate><atom:updated>2011-11-19T13:03:07.083-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Python Djvu</category><title>Python Djvu, Get Miku&#39;s Life Concert From YouTube (25lines)</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/DTXO7KGHtjI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9d-74Zw9Isl5-PnKWLGlxZ_aSdn-ROituCUk8zdjB4tYrWWT_ZziNuzJilNYacLsAIVb1xgY0Y__yb8AFjVZLFRxcjsnKTRy0k6Hqw5vIWAtzyO4vtw6REl1SQq6hxC09PFi5eXUxwYQ/s1600/python.codepad.org+2011-11-19+15%253A26%253A11.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9d-74Zw9Isl5-PnKWLGlxZ_aSdn-ROituCUk8zdjB4tYrWWT_ZziNuzJilNYacLsAIVb1xgY0Y__yb8AFjVZLFRxcjsnKTRy0k6Hqw5vIWAtzyO4vtw6REl1SQq6hxC09PFi5eXUxwYQ/s1600/python.codepad.org+2011-11-19+15%253A26%253A11.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The code link is &lt;a href=&quot;http://code.google.com/p/mixtools/source/browse/trunk/youtube/miku.py&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;</description><link>http://codefast.blogspot.com/2011/11/python-djvu-get-mikus-life-concert-from.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/DTXO7KGHtjI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-1843484932963339858</guid><pubDate>Sun, 13 Nov 2011 23:08:00 +0000</pubDate><atom:updated>2011-11-19T13:47:54.416-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">程式.生活.五四三</category><title>OpenSource, Text-To-Speech/SingingSynthesizer</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKcfBuv5hltNYKfzNwjorQkdKIZDQEuPEaXwPHEbvTxYYLh4AsonUkh4m3nqur483VJsUW5UhCsLKdaGShldU2ijyar47kJkz-x3fcqP2LmUkZJJrYgJhHQWvcP24Oh8FNlOYuzKznwOs/s1600/www.crypton.co.jp+2011-11-13+18%253A31%253A42.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;


&lt;br /&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/kbbA9BhCTko&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Hatsune_Miku&quot; target=&quot;_blank&quot;&gt;Hatsune Miku&lt;/a&gt; is one of the best singing synthesizer. It is getting popular in the United States as well. (&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b style=&quot;color: #e69138;&quot;&gt;you type, Miku sings&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8pmXjp7ZqWazZ3ksUUvm8AJS0iHtRSlWj2qtK7OsuBGVErHsOVcR4-HES7WqQRAs_B_twifab4qyqJIEQq_OJM48q0hjrBuM0kZJqdsDw4jCFXOvOlYJ0XLfo90wfPMF_kJeyFPZuRq0/s1600/www.crypton.co.jp+2011-11-13+18%253A25%253A30.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8pmXjp7ZqWazZ3ksUUvm8AJS0iHtRSlWj2qtK7OsuBGVErHsOVcR4-HES7WqQRAs_B_twifab4qyqJIEQq_OJM48q0hjrBuM0kZJqdsDw4jCFXOvOlYJ0XLfo90wfPMF_kJeyFPZuRq0/s320/www.crypton.co.jp+2011-11-13+18%253A25%253A30.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
For opensource solution, Linux has several text-to-speech packages that work out-of-the box too. Do not overlook accessibility software, they can be amazing.&lt;br /&gt;
&lt;a href=&quot;https://wiki.ubuntu.com/Accessibility/doc/LanguagesAndSpeechSynthesis&quot; target=&quot;_blank&quot;&gt;https://wiki.ubuntu.com/Accessibility/doc/LanguagesAndSpeechSynthesis&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq6CpKIYjUsUQlN0srBSZIn0dPCGZsaqD5mN6OWYfC_sqX1oR5-cC6gDUMxNgig7xVxlMHoffbf8DX2vRZDQREY0xxsofb0BoWZwlO5A2_eInRhDvQJaLWwazKBZq82PZUszwuHimP8IA/s1600/wiki.ubuntu.com+2011-11-13+18%253A14%253A34.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq6CpKIYjUsUQlN0srBSZIn0dPCGZsaqD5mN6OWYfC_sqX1oR5-cC6gDUMxNgig7xVxlMHoffbf8DX2vRZDQREY0xxsofb0BoWZwlO5A2_eInRhDvQJaLWwazKBZq82PZUszwuHimP8IA/s320/wiki.ubuntu.com+2011-11-13+18%253A14%253A34.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Say Hello World in your Linux terminal:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b style=&quot;color: #e69138;&quot;&gt;# espeak -v en &quot;Hello World&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/11/opensource-text-to-speechsingingsynthes.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/kbbA9BhCTko/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-2734292698365698821</guid><pubDate>Sun, 13 Nov 2011 02:57:00 +0000</pubDate><atom:updated>2011-11-12T19:43:44.728-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">JavaScript Djvu</category><title>JQuery Fundamentas by Rebecca Murphey</title><description>HTML5 is attracting more and more attention. I am very excited to see major browsers implement HTML5 in the future, just like C++11 becomes an improved standard and it gives a great boost for the C++ community and compiler writers.Yes standard is slow to finalized, but it does pay off in the long run. Now HTML5+CSS+Javascript present great potential, and Adoebe &lt;a href=&quot;http://blogs.adobe.com/conversations/2011/11/flash-focus.html&quot;&gt;announce&lt;/a&gt; they will not support flash in mobile devices but heavily invested in HTML5.&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Javascript therefore becomes an important tool for web developers/designers. It is not as clean as Python/Ruby but Javascript can do amazing stuff. You can build an javascript application, and ready to ship instantly on major browser. Learn to write clean javascript, regardless which javascript framework you might pick later. &lt;br /&gt;
&lt;br /&gt;
&lt;h1 class=&quot;title&quot;&gt;




JQuery Fundamentals
            &lt;/h1&gt;
Rebecca Murphey has a nice article on JQuery. It&#39;s hard not to use javascript with JQuery nowadays. I like the article. The content is rich, but still a quick read from start to end.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://jqfundamentals.com/&quot;&gt;http://jqfundamentals.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also spend a few minutes reading the JQuery source. It&#39;s a great library coded with efficiency in mind. &lt;br /&gt;
&lt;a href=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js&quot;&gt;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Learn how to write, debug, build efficient code in web browsers. &lt;b&gt;Stick to the standard while you can, they won&#39;t disappear overnight. :)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1 class=&quot;title&quot;&gt;




&lt;/h1&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/11/jquery-fundamentas-by-rebecca-murphey.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-8454779726704864690</guid><pubDate>Tue, 04 Oct 2011 03:12:00 +0000</pubDate><atom:updated>2011-10-03T20:16:34.388-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FreeBSD</category><category domain="http://www.blogger.com/atom/ns#">Security</category><title>FreeBSD Binary Update &amp;&amp; Security Patch</title><description>It is very easy to keep your favorite FreeBSD system up-to-date. You can secure your kernel, base system, and third-party software easily!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Secure Your FreeBSD Base System:&lt;/b&gt;&lt;br /&gt;
#freebsd-update fetch install&lt;br /&gt;
*you might want to rebuild all your ports after you update/upgrade your base&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Secure Your FreeBSD ports:&lt;/b&gt;&lt;br /&gt;
#portaudit -Fda&lt;br /&gt;
#portupgrade the_package_name_you_want_to_update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/10/freebsd-binary-update-security-patch.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-8962746535530598461</guid><pubDate>Sat, 01 Oct 2011 16:27:00 +0000</pubDate><atom:updated>2011-11-29T11:45:20.286-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FreeBSD</category><title>Acer Aspire Wireless Network in FreeBSD 8</title><description>FreeBSD 8 supports Brodcom wireless network card. Get it to work within 10 minutes.&lt;br /&gt;
&lt;br /&gt;
1. get kernel source&lt;br /&gt;
2. prepare your driver&lt;br /&gt;
3. configure your network card&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Run sysinstall to get kernel src:&lt;br /&gt;
#sysinstall -&amp;gt; post install-&amp;gt; Distributions: &amp;nbsp; get kernel src for everything&lt;br /&gt;
&lt;br /&gt;
#prepare your Brodcome driver&lt;br /&gt;
cd /usr/src/sys/modules/bwi/ &amp;amp;&amp;amp; make install&lt;br /&gt;
cd /usr/ports/net/bwi-firmware-kmod &amp;amp;&amp;amp; make install clean&lt;br /&gt;
#you might need to get the package of /usr/ports/net/bwi-firemware-kmod from another media&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;/boot/loader.conf&lt;/b&gt;&lt;br /&gt;
wlan_wep_load=&quot;YES&quot;&lt;br /&gt;
wlan_ccmp_load=&quot;YES&quot;&lt;br /&gt;
wlan_tkip_load=&quot;YES&quot;&lt;br /&gt;
bcml5_sys_load=&quot;YES&quot;&lt;br /&gt;
if_bwi_load=&quot;YES&quot;&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
(#ifconfig will show bwi0)&lt;br /&gt;
test:&lt;br /&gt;
ifconfig wlan0 create wlandev bwi0&lt;br /&gt;
ifconfig wlan0 up scan&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;/etc/wpa_supplicant.conf&lt;/b&gt;&lt;br /&gt;
network={&lt;br /&gt;
&amp;nbsp; ssid=&quot;your_router_ssid_here&quot;&lt;br /&gt;
&amp;nbsp; psk=&quot;your_password_here&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;/etc/rc.conf&lt;/b&gt;&lt;br /&gt;
wlans_bwi0=&quot;wlan0&quot;&lt;br /&gt;
ifconfig_wlan0=&quot;WPA DHCP&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
at least, you can reboot or restart your networking by:&lt;br /&gt;
# /etc/rc.d/netif start&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
Do not forget to press your &lt;b&gt;wireless button&lt;/b&gt; if your wireless is turned off!&lt;/div&gt;
(The acer laptop wireless button in the front )&lt;br /&gt;
&lt;br /&gt;
Enjoy wireless networking in FreeBSD!</description><link>http://codefast.blogspot.com/2011/10/acer-aspire-wireless-network-in-freebsd.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1247517784847615755.post-4770703951541029403</guid><pubDate>Sat, 01 Oct 2011 16:15:00 +0000</pubDate><atom:updated>2011-10-01T09:15:45.141-07:00</atom:updated><title>Ubunt Easy Partition during Installation</title><description>It is tempting to install Ubuntu using the &quot;entire disk&quot;. One of the drawbacks is you will lose your data if you reinstall Ubuntu again. (e.g. fix broken ubuntu or you simply want a fresh install)&lt;br /&gt;
&lt;br /&gt;
The easiest way to store your personal files and configuration is to have a &quot;/home&quot; partition during installation. You can think /home as &quot;My Documents&quot; under Windows. Now you will need to install your Ubuntu on the &quot;/&quot; partition. You can think of &quot;/&quot; as &quot;C:&quot; under Windows. You will need at least 2GB for the &quot;/&quot; partition. However, if you plan to install some programs, Ubuntu recommends you to get at least 8GB for the &quot;/&quot; partition. Also make sure you have a swap partition which is the same or double the size of your RAM. &lt;br /&gt;
&lt;br /&gt;
In summary, you can have the following configuration for your disk partition:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
&lt;b&gt;/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 16GB or more&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
&lt;b&gt;/home --&amp;gt;&amp;nbsp; the rest goes to here&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
&lt;b&gt;swap&amp;nbsp; --&amp;gt;&amp;nbsp; 2GB&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
https://help.ubuntu.com/8.04/switching/installing-partitioning.html&lt;br /&gt;
https://help.ubuntu.com/8.04/installation-guide/i386/partition-sizing.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://codefast.blogspot.com/2011/10/ubunt-easy-partition-during.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item></channel></rss>