<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4859509273414434749</id><updated>2024-09-06T12:19:47.684+08:00</updated><category term="Linux"/><category term="AIX"/><category term="Raspberry Pi"/><category term="Solaris"/><category term="pi"/><category term="python"/><category term="News"/><category term="Security"/><category term="Web"/><category term="HP-UX"/><category term="N54L"/><category term="Software"/><category term="Networking"/><category term="EMC"/><category term="Lighttpd"/><category term="Storage"/><category term="Tivoli"/><category term="docker"/><category term="eclipse che"/><category term="git"/><category term="moinmoin"/><category term="proxmox"/><category term="wiki"/><category term="Apache"/><category term="DigitalOcean"/><category term="Game"/><category term="ITM"/><category term="Java"/><category term="Omnibus"/><category term="Oracle"/><category term="flickr"/><category term="ipfire"/><category term="nextcloud"/><category term="openvpn"/><category term="openweathermap"/><category term="pass"/><category term="password"/><category term="ras"/><category term="trac"/><category term="trickle"/><category term="ufw"/><category term="whatsapp"/><category term="wordpress"/><category term="wp-cli"/><category term="yeelight"/><category term="yowsup"/><title type='text'>Techdoc Blog</title><subtitle type='html'>Contains technical document about Unix/Linux, Java, Python, Raspberry Pi and other IT related topics.&#xa;&#xa;Not a full tutorial but as a quick reference guide</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-432412268153724808</id><published>2017-07-27T01:39:00.001+08:00</published><updated>2017-07-27T01:41:25.551+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ipfire"/><category scheme="http://www.blogger.com/atom/ns#" term="N54L"/><category scheme="http://www.blogger.com/atom/ns#" term="proxmox"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Running ipfire in a Proxmox KVM</title><content type='html'>Long ago my network equipment at home was simple: just used a &lt;a href=&quot;http://amzn.to/2h314oy&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Belkin N600&lt;/a&gt; router to connect to my ISP. All my computers and devices, including some raspberry pi, mobile phones and pads will access the internet via the router. As the number of clients increased, I found that the Belkin router did not serve well. Therefore I installed a software firewall, IPFire, on a &lt;a href=&quot;http://amzn.to/2uX9xzC&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Raspberry Pi&lt;/a&gt; (Model B) and replace the existing router. (I still needed the N600 as a wireless bridge so I switch it to a bridge mode)&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.ipfire.org/&quot; target=&quot;_blank&quot;&gt;IPFire&lt;/a&gt; is a great software firewall. You can have a look at the website so see the &lt;a href=&quot;http://www.ipfire.org/features&quot; rel=&quot;&quot; target=&quot;_blank&quot;&gt;features&lt;/a&gt;. Running IPFire on Raspberry Pi is surprisingly stable too. Everything was fine until I change the ISP plan from 8M (8mbps/1mbps) &amp;nbsp;to 100M (100mbps/30mbps).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The problem was the hardware limitation of the Raspberry Pi. The builtin LAN and another usb&lt;a href=&quot;http://amzn.to/2uConc4&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt; ethernet adapter &lt;/a&gt;worked fine when I was using 8M. However after I changed to use the 100M plan I found that the maximum speed was 30M something. In order to utilize my bandwidth I planned to run IPFire on another hardware.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I didn&#39;t have a big budget at that time so I wondered if I can make use of my existing hardware. My &lt;a href=&quot;http://amzn.to/2uykHK1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;N54L&lt;/a&gt; that is running proxmox seems to be a good choice. So I decided to create a KVM for this.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The config of the IPFire VM is simple:&lt;/div&gt;
&lt;div&gt;
1. 512M ram&lt;/div&gt;
&lt;div&gt;
2. 1 CPU&lt;/div&gt;
&lt;div&gt;
3. 16GB virtual disk (virtio driver)&lt;/div&gt;
&lt;div&gt;
4. one bridged network (virtio driver)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
One tricky thing I have done was to passthrough USB adapter from host to the VM, which should have a better performance.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
By running lsusb on host:&lt;/div&gt;
&lt;div&gt;
# lsusb&lt;/div&gt;
&lt;div&gt;
...&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Bus 003 Device 002: ID &lt;span style=&quot;color: red;&quot;&gt;0bca:8133&lt;/span&gt; Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter&lt;/div&gt;
&lt;div&gt;
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
...&lt;/div&gt;
&lt;div&gt;
Then add a line at&amp;nbsp;/etc/pve/qemu-server/&lt;vmid&gt;.conf&lt;/vmid&gt;&lt;/div&gt;
&lt;div&gt;
usb0: host=0bca:8133,usb3=yes&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
note that only use &quot;usb3=yes&quot; if you are using a usb3 device.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When the setting was done, I started the VM, the USB adapter was detected and just followed the instruction to setup. In my case I connected USB adapter to RED (internet), the virtual adapter to GREEN (internal). As I did a IPFire configuration backup from raspberry pi. I just import it back to the VM and everything ran out of the box!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I did a quick test by running the command line version of speedtest (&lt;a href=&quot;https://github.com/sivel/speedtest-cli&quot; target=&quot;_blank&quot;&gt;speedtest-cli&lt;/a&gt;). the result was 80mpbs/26mbps which is acceptable.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
[root@ipfire ~]# ./speedtest-cli&lt;/div&gt;
&lt;div&gt;
Retrieving speedtest.net configuration...&lt;/div&gt;
&lt;div&gt;
Testing from XXXXXXX (xxx.xxx.xx.xxx)...&lt;/div&gt;
&lt;div&gt;
Retrieving speedtest.net server list...&lt;/div&gt;
&lt;div&gt;
Selecting best server based on ping...&lt;/div&gt;
&lt;div&gt;
Hosted by xxxxxxxx[22.51 km]: 8.898 ms&lt;/div&gt;
&lt;div&gt;
Testing download speed................................................................................&lt;/div&gt;
&lt;div&gt;
Download: 81.54 Mbit/s&lt;/div&gt;
&lt;div&gt;
Testing upload speed................................................................................................&lt;/div&gt;
&lt;div&gt;
Upload: 25.93 Mbit/s&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In summary IPFire is a good solution if you want to have a software firewall. There are other free firewalls such as pfsense or opnsense. I will try them and compare. But for now, I am happy to use IPFire.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/432412268153724808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/432412268153724808?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/432412268153724808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/432412268153724808'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2017/07/running-ipfire-in-proxmox-kvm.html' title='Running ipfire in a Proxmox KVM'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-7227793083696686535</id><published>2017-06-28T12:17:00.004+08:00</published><updated>2017-06-28T14:06:00.427+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="yeelight"/><title type='text'>Playing Yeelight with Python</title><content type='html'>Recently I&#39;ve been playing a&amp;nbsp;&lt;a href=&quot;http://amzn.to/2skOod9&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Yeelight Smart LED Bulb&lt;/a&gt;. It&#39;d be a good starting of learning home automation, as such smart LED Bulbs do not depend on any modification of your home electricity system. This yeelight bulb is already bundled with the WIFI chip so that you can configure it using its official app (both Android and iOS are available)&lt;br /&gt;
&lt;br /&gt;
Using the official app is straight forward, then I wondered can I play it &#39;harder&#39;. Then I searched and found some interest use cases:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Controlling yeelight by Python&lt;/li&gt;
&lt;li&gt;Controlling yeelight by Siri (wow!)&lt;/li&gt;
&lt;li&gt;Controlling yeelight by Home-Assistant&lt;/li&gt;
&lt;/ol&gt;
In fact there should be more cases, including Amazon Alexa or Google Home, but I do have these products and the setup will be very similar to 2. and 3, that I will explain it in another post later. Right now I am going to share how to play the yeelight with python.&lt;br /&gt;
&lt;br /&gt;
First, you need the official app to enable developer mode. Then just use python yeelight package &lt;a href=&quot;https://yeelight.readthedocs.io/en/latest/&quot; target=&quot;_blank&quot;&gt;https://yeelight.readthedocs.io/en/latest/&lt;/a&gt;&amp;nbsp;and you are good to go!&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;import yeelight
&lt;/pre&gt;
&lt;pre&gt;yeelight_ip=&#39;xxx.xxx.xx.xxx&#39; # your yeelight bulb IP
light = yeelight.Bulb(yeelight_ip, effect=&#39;smooth&#39;)
light.turn_off()
light.turn_on()&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;# Set it to white
light.set_rgb(255,255,255)&lt;/pre&gt;
&lt;pre&gt;# Set the brightness
light.set_brightness(100)
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Not very difficult right? If you have a raspberry Pi you can set some cronjobs in order to turn the light on in the morning as a silent &amp;nbsp;alarm clock, or place the bulb in your kid&#39;s bedroom, then change the brightness from 100% to 1% (then off, of course) in one hour.&lt;br /&gt;
&lt;br /&gt;
If you think it&#39;s too dummy to control such a bulb, I agree. That&#39;s why there will be some more elegant solutions. Next time I&#39;ll show how I setup a virtual HomeKit and ask Siri to control the bulb.&lt;br /&gt;
&lt;br /&gt;
Ref:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;setup yeelight using official apps &lt;a href=&quot;https://www.youtube.com/watch?v=57ErTRimfA0&quot; target=&quot;_blank&quot;&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable developer mode:&amp;nbsp;&lt;a href=&quot;http://www.yeelight.com/en_US/developer&quot; target=&quot;_blank&quot;&gt;http://www.yeelight.com/en_US/developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python Yeelight Library:&amp;nbsp;&lt;a href=&quot;https://yeelight.readthedocs.io/en/latest/&quot; target=&quot;_blank&quot;&gt;https://yeelight.readthedocs.io/en/latest/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/7227793083696686535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/7227793083696686535?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7227793083696686535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7227793083696686535'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2017/06/playing-yeelight-with-python.html' title='Playing Yeelight with Python'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-1057887812750622922</id><published>2017-06-03T22:02:00.001+08:00</published><updated>2017-06-03T22:02:25.045+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nextcloud"/><category scheme="http://www.blogger.com/atom/ns#" term="proxmox"/><title type='text'>Nextcloud on Archlinux</title><content type='html'>Recently I&#39;m trying Nextcloud, which is a fork of Owncloud.&lt;br /&gt;
&lt;br /&gt;
I have to admit that I am not a big fan of PHP apps. When I tested Owncloud several years ago I only felt it&#39;s very slow.....As someone recommended Nextcloud a few weeks ago I&#39;d like to give it a try.&lt;br /&gt;
&lt;br /&gt;
The installation doc was well but since it is only for Redhat and Ubuntu. I&#39;d like to add some notes when using Archlinux (with Nginx, PHP-FPM, Mariadb, Redis Server):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The official packages are needed (&quot;pacman -Sy nginx, php-fpm, mariadb, redis&quot;)&lt;/li&gt;
&lt;li&gt;The AUR package &lt;a href=&quot;https://aur.archlinux.org/packages/php-smbclient/&quot; target=&quot;_blank&quot;&gt;php-smbclient&lt;/a&gt; is needed if you want to use the external storage feature with SMB/CIFS&lt;/li&gt;
&lt;li&gt;Using memory caching can improve the performance. From the doc you can choose APCu, Memcached and Redis. I am using Redis server since it should be most flexible approach. AUR package &lt;a href=&quot;https://aur.archlinux.org/packages/php-redis/&quot; target=&quot;_blank&quot;&gt;php-redis&lt;/a&gt;, again, is needed.&lt;/li&gt;
&lt;li&gt;Download the latest &lt;a href=&quot;https://nextcloud.com/install/#&quot; target=&quot;_blank&quot;&gt;Nextcloud package&lt;/a&gt;. Extract and put it under /var/www&lt;/li&gt;
&lt;li&gt;under /etc/php/php.ini, make sure these lines are uncommented:&lt;br /&gt;zend_extension=opcache.so&lt;br /&gt;extension=pdo_mysql.so&lt;br /&gt;extension=&quot;smbclient.so&quot;&lt;br /&gt;extension=&quot;redis.so&quot;&lt;/li&gt;
&lt;li&gt;Following the official method to &lt;a href=&quot;https://docs.nextcloud.com/server/12/admin_manual/installation/nginx.html&quot; target=&quot;_blank&quot;&gt;setup Nginx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enable the services so that they will bring up after a reboot. (systemctl enable xxx)&lt;/li&gt;
&lt;li&gt;Using SSL is highly recommended. It&#39;s very easy to get one from &lt;a href=&quot;https://letsencrypt.org/&quot; target=&quot;_blank&quot;&gt;Let&#39;s Encrypt&lt;/a&gt; with zero cost.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
I will setup a container on my proxmox and evaluate for a while and give a brief review about it &amp;nbsp;later.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/1057887812750622922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/1057887812750622922?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1057887812750622922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1057887812750622922'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2017/06/nextcloud-on-archlinux.html' title='Nextcloud on Archlinux'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-4290096841956537595</id><published>2016-09-01T11:29:00.000+08:00</published><updated>2016-09-01T11:29:20.098+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="eclipse che"/><category scheme="http://www.blogger.com/atom/ns#" term="N54L"/><title type='text'>Eclipse Che setup - on a server with Docker</title><content type='html'>If you take a look at the official site you&#39;ll see the installation is super easy - just a single line:

&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;docker run --rm -t -v /var/run/docker.sock:/var/run/docker.sock eclipse/che start&lt;/pre&gt;
&lt;br /&gt;
Of course it is assumed that you have Docker 1.8 or later installed.&lt;br /&gt;
&lt;br /&gt;
If you run it in your desktop or laptop, you can start using it. Just go to &quot;http://localhost:8080&quot; and create a workspace for your development:&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://www.eclipse.org/che/images/features/img-features-docker-powered.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://www.eclipse.org/che/images/features/img-features-docker-powered.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Since I am going to install it on my HP N54L server (ArchLinux), I need to put from environment variables:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;docker run --rm -t -e CHE_HOST_IP=&lt;n54l ip=&quot;&quot;&gt;&lt;n54l ip=&quot;&quot;&gt;&amp;nbsp;-v /var/run/docker.sock:/var/run/docker.sock &amp;nbsp;eclipse/che &amp;nbsp;stop&lt;/n54l&gt;&lt;/n54l&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;n54l ip=&quot;&quot;&gt;&lt;br /&gt;&lt;/n54l&gt;&lt;/div&gt;
Then I can go ot &quot;http://&lt;n54l ip=&quot;&quot;&gt;:8080&quot; to enjoy this web IDE.&lt;/n54l&gt;&lt;br /&gt;
&lt;br /&gt;
Another thing I discover is that if you run &quot;docker ps&quot; you will see:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;CONTAINER ID        IMAGE                                                                       COMMAND                  CREATED             STATUS              PORTS                                                                                                                       NAMES
6b5cf5c1c0e9        eclipse-che/workspacef2v2k7ltal4gbsxp_machineph3hokyhknjhxa90_che_default   &quot;/home/user/entrypoin&quot;   42 hours ago        Up 42 hours         0.0.0.0:32817-&amp;gt;22/tcp, 0.0.0.0:32816-&amp;gt;4401/tcp, 0.0.0.0:32815-&amp;gt;4403/tcp, 0.0.0.0:32814-&amp;gt;4411/tcp, 0.0.0.0:32813-&amp;gt;8080/tcp   workspacef2v2k7ltal4gbsxp_machineph3hokyhknjhxa90_che_default
ac63c449f4b8        codenvy/che-server:latest                                                   &quot;/home/user/che/bin/c&quot;   42 hours ago        Up 42 hours         8000/tcp, 0.0.0.0:8080-&amp;gt;8080/tcp                                                                                            che-server
&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;&quot;&gt;Just remember do not stop it by running &quot;docker stop che-server&quot;. I did once and when I start the che-server my previous setting, including workpsaces and projects were gone.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;&quot;&gt;Instead, we should run&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;
&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;docker run --rm -t -e CHE_HOST_IP=&lt;n54l ip=&quot;&quot;&gt;&lt;n54l ip=&quot;&quot;&gt;&amp;nbsp;-v /var/run/docker.sock:/var/run/docker.sock &amp;nbsp;eclipse/che &amp;nbsp;stop&lt;/n54l&gt;&lt;/n54l&gt;&lt;/pre&gt;
&lt;br /&gt;Or simply download the start/stop script from eclipse.org:&lt;br /&gt;&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;n54l ip=&quot;&quot;&gt;
&lt;/n54l&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;&lt;n54l ip=&quot;&quot;&gt;curl -sL https://raw.githubusercontent.com/eclipse/che/master/che.sh &amp;gt; che&lt;/n54l&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;
then run
 ./che start / stop / restart&lt;/pre&gt;
&lt;br /&gt;for my case I need to set the environemnt:&lt;br /&gt;&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;CHE_HOST_IP=je54 ./che  start&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;CHE_HOST_IP=je54 ./che  stop&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/4290096841956537595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/4290096841956537595?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/4290096841956537595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/4290096841956537595'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2016/09/eclipse-che-setup-on-server-with-docker.html' title='Eclipse Che setup - on a server with Docker'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-3423133700576260130</id><published>2016-09-01T11:01:00.001+08:00</published><updated>2016-09-01T11:01:59.779+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="eclipse che"/><category scheme="http://www.blogger.com/atom/ns#" term="N54L"/><title type='text'>Eclipse Che (coding within a browser)</title><content type='html'>I am not a professional programmer or developer. But I do need to code time to time. 90% of my coding is done with &quot;vi&quot;. It&#39;s very powerful if the project is small. I also tried atom.io or sublime text, but they are just too powerful that I don&#39;t want to invest too much time. Then I found Eclipse Che.&lt;br /&gt;
&lt;br /&gt;
Eclipse was a heavy IDE and I was using it 10 years ago, when I was still a big fans of Java. I put it down for years but when i visit the site again I found there is an interesting project: Eclispe Che - http://eclipse.org/che . Unlike Atom or Sublime Text, it&#39;s not a editor or IDE but a development infrastructure. It&#39;s not necessary to install it in your PC or laptop, but another server or even in the cloud. Even you install it in your PC you just install a docker container and use a browser to work:&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://files.readme.io/L1H81xsQji1Tq1G6VifQ_Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://files.readme.io/L1H81xsQji1Tq1G6VifQ_Capture.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://files.readme.io/JYahQlET8StJXQ83AqUK_Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://files.readme.io/JYahQlET8StJXQ83AqUK_Capture.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you can see everything is in docker. For my case I can put it in my HP N54L and then I can code with any computers. The installation is pretty simple, I will show it in the next post.</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/3423133700576260130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/3423133700576260130?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3423133700576260130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3423133700576260130'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2016/09/eclipse-che-coding-within-browser.html' title='Eclipse Che (coding within a browser)'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-6199763082188504388</id><published>2016-08-29T22:08:00.001+08:00</published><updated>2016-08-29T22:08:48.514+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="wordpress"/><category scheme="http://www.blogger.com/atom/ns#" term="wp-cli"/><title type='text'>Wordpress install by wp-cli (Command line only)</title><content type='html'>&lt;h3&gt;
Prepare the database (mysql / mariadb)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;mysql -u&lt;user&gt; -p&lt;password&gt;&lt;/password&gt;&lt;/user&gt;&lt;/li&gt;
&lt;li&gt;create database wp_db1;&lt;/li&gt;
&lt;li&gt;grant all on wp_db1.* to &lt;user&gt;@&#39;%&#39; identified by &lt;password&gt;;&lt;/password&gt;&lt;/user&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
wp-cli&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download wp-cli at&amp;nbsp;&lt;a href=&quot;http://wp-cli.org/&quot; target=&quot;_blank&quot;&gt;http://wp-cli.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;div class=&quot;language-bash highlighter-rouge&quot; style=&quot;background-color: #f1f1f1; color: #292929; font-family: &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; line-height: 25.6px;&quot;&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;color: #f1f1f1; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Courier, monospace; font-size: 1em; overflow: auto; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.298039) 0px 1px; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code style=&quot;background: rgb(68, 68, 68); border-radius: 0.3em; direction: ltr; display: block; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Courier, monospace; font-size: 1em; margin: 0.5em 0px 1.1em; overflow: auto; padding: 0.4em 0.5em 0.3em; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.298039) 0px 1px; word-break: normal; word-spacing: normal;&quot;&gt;wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Move the file to /usr/local/bin (Or set $PATH to the location you want )&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;create the wordpress home (eg. /var/www/wordpress)&lt;/li&gt;
&lt;li&gt;cd /var/www/wordpress&lt;/li&gt;
&lt;li&gt;wp core download&lt;/li&gt;
&lt;li&gt;wp core config --dbname=wp_db1 --dbuser=&lt;user&gt; --dbpass=&lt;password&gt; --dbprefix=wp&lt;/password&gt;&lt;/user&gt;&lt;/li&gt;
&lt;li&gt;wp core install --url=&quot;&lt;domainname&gt;&quot; &amp;nbsp;--title=&quot;&lt;title&gt;&quot; --admin_user=&quot;&lt;user&gt;&quot; --admin_password=&quot;&lt;password&gt;&quot; --admin_email=&quot;&lt;email&gt;&quot;&lt;/li&gt;
&lt;/ul&gt;
Now you can login WordPress with a browser for further configuration.&lt;br&gt;&lt;div&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/title&gt;&lt;/domainname&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/6199763082188504388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/6199763082188504388?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6199763082188504388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6199763082188504388'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2016/08/wordpress-install-by-wp-cli-command.html' title='Wordpress install by wp-cli (Command line only)'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-3387799203185147950</id><published>2015-11-06T06:30:00.000+08:00</published><updated>2015-11-06T09:21:05.895+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="whatsapp"/><category scheme="http://www.blogger.com/atom/ns#" term="yowsup"/><title type='text'>Sending Whatsapp Messages from Raspberry Pi</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
yowsup is the Whatsapp library. It is written in python so we can run even with a Raspberry Pi. After the installation there is a client script that we can send message to other Whatsapp user.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;Reasons to use yowsup:&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;send messages to mobile device like SMS&lt;/li&gt;
&lt;li&gt;the cost is cheap: all we need is just a mobile number ( a number that has not been registered in Whatsapp) and a Raspberry Pi ( I am using Raspberry Pi B2, but any model should be found)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;Installation&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre brush:bash=&quot;&quot;&gt;$ virtualenv2 venv/
New python executable in venv/bin/python2
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
$ . venv/bin/activate
(venv)$ git clone https://github.com/tgalal/yowsup

Cloning into &#39;yowsup&#39;...
remote: Counting objects: 6983, done.
remote: Total 6983 (delta 0), reused 0 (delta 0), pack-reused 6983
Receiving objects: 100% (6983/6983), 1.49 MiB | 574.00 KiB/s, done.
Resolving deltas: 100% (4388/4388), done.
Checking connectivity... done.

python setup.py  install
&lt;/pre&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;After the setup there will be a script &quot;yowsup-cli&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Registration&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
Prepare the following information:&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;&lt;ul&gt;
&lt;li&gt;the phone number &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (XXXXXXXX)&lt;/li&gt;
&lt;li&gt;the country code &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (CCC)&lt;/li&gt;
&lt;li&gt;the mobile country code (mcc)&lt;/li&gt;
&lt;li&gt;the mobile network code (mnc)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div class=&quot;p3&quot;&gt;
Note that the phone number is in the form of Country Code + Number. And the mcc and mnc can be found at &lt;a href=&quot;https://en.wikipedia.org/wiki/Mobile_country_code&quot; target=&quot;_blank&quot;&gt;https://en.wikipedia.org/wiki/Mobile_country_code&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
For example, if you are using Verizon LTE in US, that the mcc and mnc should be 310 and 012 respectively.&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
Run the command:&lt;/div&gt;
&lt;pre brush:bash=&quot;&quot;&gt;./yowsup-cli registration --requestcode sms --phone CCCXXXXXXXX --cc CCC --mcc 310 --mnc 012

INFO:yowsup.common.http.warequest:{&quot;status&quot;:&quot;sent&quot;,&quot;length&quot;:6,&quot;method&quot;:&quot;sms&quot;,&quot;retry_after&quot;:1805}

status: sent
retry_after: 1805
length: 6
method: sms
&lt;/pre&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;If you are lucky enough you will receive a SMS from the mobile phone.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Ea6gkIFakYE2XHJnsMZYMjgq6cZQfmvSoYNjp8bNRouZJRIK7XJCb-Lu9Iq5L8EZ14juB5neD5wot_XkXGJjHWClKolqOC0nnFzpvHG9HQSs_3PudyZpQ3Jnu-0EMz83wpLyPL90WaQ/s1600/yowsup1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Ea6gkIFakYE2XHJnsMZYMjgq6cZQfmvSoYNjp8bNRouZJRIK7XJCb-Lu9Iq5L8EZ14juB5neD5wot_XkXGJjHWClKolqOC0nnFzpvHG9HQSs_3PudyZpQ3Jnu-0EMz83wpLyPL90WaQ/s400/yowsup1.png&quot; width=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;With this WhatsApp code we can run another command:&lt;/span&gt;&lt;/div&gt;
&lt;pre brush:bash=&quot;&quot;&gt;./yowsup-cli registration --register 800-269 --phone CCCXXXXXXXX --cc CCC
INFO:yowsup.common.http.warequest:{&quot;status&quot;:&quot;ok&quot;,&quot;login&quot;:&quot;CCCXXXXXXXX&quot;,&quot;pw&quot;:&quot;kaiaCmXHgRxxxvuOfbbCFHlqbLI=&quot;,&quot;type&quot;:&quot;new&quot;,&quot;expiration&quot;:1478245880,&quot;kind&quot;:&quot;free&quot;,&quot;price&quot;:&quot;$1.00&quot;,&quot;cost&quot;:&quot;1.00&quot;,&quot;currency&quot;:&quot;USD&quot;,&quot;price_expiration&quot;:1449782266}

status: ok
kind: free
pw: kaiaCmXHgRxxxvuOfbbCFHlqbLI=
price: $1.00
price_expiration: 1449782266
currency: USD
cost: 1.00
expiration: 1478245880
login: CCCXXXXXXXX
type: new
&lt;/pre&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;Note that the line pw: xxxxxxxxxxxxx . That&#39;s the password we need to put in a config file.&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
create a file yowsup-cli.conf with the following content:&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
cc=CCC # The country code&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
phone=XXXXXXXX # the phone number&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
id= #&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
password=xxxxxxxxxxx # the password&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Finally we can test by sending a message to a Whatsapp user (eg. CCCYYYYYYYY):&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;./yowsup-cli demos -c yowsup-cli.conf -s YYYYYYY “hello world”&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmYBvpuzXJAWEMDOc3RLQZEbftWDTV745xf31yT9cFv5ON5WtDn2gkJzJEZeKV3wlRYs086rkpmOqH2YLPO-gRDJAZa5g_Yxtx5TO4tYHg4gEv28kjADj7lpCvNR29uQotOsd7qcrpXl0/s1600/yowsup2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmYBvpuzXJAWEMDOc3RLQZEbftWDTV745xf31yT9cFv5ON5WtDn2gkJzJEZeKV3wlRYs086rkpmOqH2YLPO-gRDJAZa5g_Yxtx5TO4tYHg4gEv28kjADj7lpCvNR29uQotOsd7qcrpXl0/s320/yowsup2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;By using the simple command we can send Whatsapp message to another user programmatically. Possible usages are to send alerts when some health check jobs failed, or writing authentication apps that can send the passcode.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Ref:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/tgalal/yowsup&lt;/li&gt;
&lt;li&gt;https://en.wikipedia.org/wiki/Mobile_country_code&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/3387799203185147950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/3387799203185147950?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3387799203185147950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3387799203185147950'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/11/sending-whatsapp-messages-from.html' title='Sending Whatsapp Messages from Raspberry Pi'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Ea6gkIFakYE2XHJnsMZYMjgq6cZQfmvSoYNjp8bNRouZJRIK7XJCb-Lu9Iq5L8EZ14juB5neD5wot_XkXGJjHWClKolqOC0nnFzpvHG9HQSs_3PudyZpQ3Jnu-0EMz83wpLyPL90WaQ/s72-c/yowsup1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-5745721213157654847</id><published>2015-10-30T17:33:00.000+08:00</published><updated>2015-10-30T17:56:56.369+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flickr"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="trickle"/><title type='text'>Using trickle to control the bandwidth usage of a particular process</title><content type='html'>Recently I have written a little python script to upload my photos to flickr using the flickr api. It was fun and I will share how to do it later. However when I started uploading 600 photos to flickr at home my wife complained the Internet speed was too slow. She said she could not watch youtube and even some foreign website!&lt;br /&gt;
&lt;br /&gt;
Telling her to wait is not a solution ( I could be killed :p ). So I had stop the script and wait for the &#39;non-busy hour&#39; to continue. However, this way is not practical, because it&#39;s hard to define a non-busy hour. In fact, mid night might not be good as well, because sometimes I need to have a conference call. Therefore, I tried to find if any tools that can limit the traffic so that the script will not upset our life.&lt;br /&gt;
&lt;br /&gt;
Finally I found trickle and it totally solves my problem.&lt;br /&gt;
&lt;br /&gt;
First, we have to install trickle.&lt;br /&gt;
&lt;br /&gt;
Depending on the distributions:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pacman -S trickle&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;apt-get install trickle&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;yum install trickle&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
To run a program with limited bandwidth, just run:&lt;br /&gt;
&lt;pre class=&quot;brush: bash;&quot; name=&quot;code&quot;&gt;$ trickle -s -u UPLOAD -d DOWNWORD THE_PROGRAM&lt;/pre&gt;
&lt;br /&gt;
in my case:&lt;br /&gt;
&lt;pre class=&quot;brush: bash;&quot; name=&quot;code&quot;&gt;
&lt;/pre&gt;
&lt;pre class=&quot;brush: bash;&quot; name=&quot;code&quot;&gt;$ trickle -s -u 40 -d 40 python flickr_upload.py
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;-d and -u are to specify the download and upload speed respectively. Remember the unit is&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;KB/s while your ISP usually use kbs as the unit. You will need to convert it in order to set a&amp;nbsp;&lt;/span&gt;reasonable&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;throughput for the process. You can check with this &lt;a href=&quot;http://testmy.net/tools/convert.php&quot; target=&quot;_blank&quot;&gt;online conversion&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href=&quot;http://testmy.net/tools/convert.php&quot; target=&quot;_blank&quot;&gt;calculator&lt;/a&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;If you have a set of programs run by an user you can limit them buy running a trickled. For example:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ trickled -u 40 -d 40&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Then you can limit any program run by this user with this limit setting:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ trickle program1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ trickle program2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ # more...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;After limited the upload and download speed of my python script, everybody is&amp;nbsp;&lt;/span&gt;satisfied.&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;Though it takes much longer to upload photos to flickr, it&#39;s okay for me and my wife can browse and watch whatever she wants. Happy ending...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;PS:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Please note that trickle cannot resolve all cases. It only works when the application (the binary) is using the dynamic library glibc. To check if it is using the glibc, you can use the following command&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ ldd /usr/bin/python |grep libc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;libc.so.6 =&amp;gt; /usr/lib/libc.so.6 (0x00007f96a991f000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;If it is not using glibc, then you have find another way, probably using iptable or enable QoS on the router if it is supported&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Ref:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.archlinux.org/index.php/Trickle&quot; target=&quot;_blank&quot;&gt;https://wiki.archlinux.org/index.php/Trickle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://linux.die.net/man/1/trickle&quot; target=&quot;_blank&quot;&gt;http://linux.die.net/man/1/trickle&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;a data-sumome-discover-grid&gt;&lt;/a&gt;


</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/5745721213157654847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/5745721213157654847?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/5745721213157654847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/5745721213157654847'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/10/using-trickle-to-control-bandwidth.html' title='Using trickle to control the bandwidth usage of a particular process'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-785612177467528069</id><published>2015-09-24T01:04:00.001+08:00</published><updated>2015-09-24T01:04:19.678+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DigitalOcean"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><category scheme="http://www.blogger.com/atom/ns#" term="ufw"/><title type='text'>12 Things do to after just started your DigitalOcean VPS</title><content type='html'>Recently I helped one of my client to setup a VPS on DigitalOcean (DO). The price is very competitive (the cheapest plan is $5 per month) and they offer SSD as the storage. I highly recommend to give a try if someone is looking for a virtual hosting.&lt;br&gt;
&lt;br&gt;
Actually a VPS is just a server running on other location. Once you subscribe a plan and start to OS, it&amp;#39;s your responsibility to maintain the system.&lt;br&gt;
&lt;br&gt;
The steps below are to enhance the security once the server is deployed ( we are using Ubuntu 14.04 in this case). The objective is to harden the server so that it can only be accessed from a client with ssh&lt;br&gt;
&lt;br&gt;
1. Setup ssh keyfrom a linux server at home or office. Assumed you have a linux client with a user &amp;quot;user1&amp;quot;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2015/09/12-things-do-to-after-just-started-your.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/785612177467528069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/785612177467528069?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/785612177467528069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/785612177467528069'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/09/12-things-do-to-after-just-started-your.html' title='12 Things do to after just started your DigitalOcean VPS'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-6651803126777111784</id><published>2015-09-11T17:38:00.002+08:00</published><updated>2015-09-11T17:41:55.429+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="N54L"/><title type='text'>Benchmarking of Hard disks on N54L using Bonnie++</title><content type='html'>&lt;h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Getting the hard disk details&lt;/span&gt;&lt;/h3&gt;
First we use smartctl to get the details, you can see there are 3 disks. 2x &lt;a href=&quot;http://www.amazon.com/gp/product/B00MBMW9K4/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B00MBMW9K4&amp;amp;linkCode=as2&amp;amp;tag=a0d32-20&amp;amp;linkId=STMIXXGE7O2PJK6W%22%3EWD20EZRX-00D8PB0,%20DCM%20HANNHTJMAB,%20Western%20Digital%202TB%20SATA%203.5%20Hard%20Drive&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;WD Green 2TB 5400rpm&lt;/a&gt; and 1x &lt;a href=&quot;http://www.amazon.com/gp/product/B007HD3RSU/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B007HD3RSU&amp;amp;linkCode=as2&amp;amp;tag=a0d32-20&amp;amp;linkId=WJU2XIV7EORCR2PK&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;HP 500GB 7200rpm&lt;/a&gt;. The HP one is bundled and I think it&amp;#39;s not enough for me to store my data So I buy the WD disks and make it as a mirror.&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;#smartctl -i /dev/sda&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;smartctl 6.4 2015-06-04 r4109 [x86_64-linux-3.14.51-1-lts] (local build)&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;=== START OF INFORMATION SECTION ===&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Model Family:     Western Digital Green&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Device Model:     WDC WD20EZRX-00D8PB0&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Serial Number:    WD-xxxxxxxxxx&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;LU WWN Device Id: 5 0014ee 6055d1735&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Firmware Version: 80.00A80&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;User Capacity:    2,000,398,934,016 bytes [2.00 TB]&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Sector Sizes:     512 bytes logical, 4096 bytes physical&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Rotation Rate:    5400 rpm&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Device is:        In smartctl database [for details use: -P show]&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;ATA Version is:   ACS-2 (minor revision not indicated)&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Local Time is:    Fri Sep 11 17:09:32 2015 HKT&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;SMART support is: Available - device has SMART capability.&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;SMART support is: Enabled&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;Continue...&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2015/09/benchmarking-of-hard-disks-on-n54l.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/6651803126777111784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/6651803126777111784?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6651803126777111784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6651803126777111784'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/09/benchmarking-of-hard-disks-on-n54l.html' title='Benchmarking of Hard disks on N54L using Bonnie++'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCyJfpYlEGF2NvNF4g-w5XUJ8Gaq3PxF4SboIgYEm401ApNHr2DBpZsktYRHB5L_WMcHWzWtuvze-gxRKjvZqnwB8842kppTAtfhhpPLgL4Hh1M43Eojsr_kAOwNgODxTwqLV0gyIYNoE/s72-c/n54l-bonnie-test.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-2369534958157159686</id><published>2015-08-28T00:04:00.001+08:00</published><updated>2015-08-28T00:04:35.383+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="pass"/><category scheme="http://www.blogger.com/atom/ns#" term="password"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Pass Store (Password Manager in command line)</title><content type='html'>&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7XepVG1lssN1tTb8zH84SS-UCJoYD-cwLb0BiRqnnoECc_AAgwSywW8aJ6S0Cl5UWbkw-ygMhGic7YVk0HdZ8-u1x0bbOjiMJSSvqD0OkDe17TzLojBzwToxuBl1-0uKUQTHIxi-nt9Q/s1600/password-866977_640.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;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7XepVG1lssN1tTb8zH84SS-UCJoYD-cwLb0BiRqnnoECc_AAgwSywW8aJ6S0Cl5UWbkw-ygMhGic7YVk0HdZ8-u1x0bbOjiMJSSvqD0OkDe17TzLojBzwToxuBl1-0uKUQTHIxi-nt9Q/s320/password-866977_640.jpg&quot; width=&quot;320&quot;&gt;&lt;/a&gt;Everybody is facing a problem: too many password to remember. If there are too many to store in brian, then its time to store somewhere else. Some people will simply write on a notebook, some will store it in an excel, and some will download a password manager such as KeePass/KeePassX and LastPass. But as a Linux guy I would like to try another tool in command line: Pass (&lt;a href=&quot;http://www.passwordstore.org/&quot; target=&quot;_blank&quot;&gt;http://www.passwordstore.org/&lt;/a&gt;)&lt;br&gt;
&lt;br&gt;
Why need a command line password manager? Having a command line password manager can provide flexibility:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;you use SSH to connect to the Linux so it is secure and you can view a password of a particular account without touching a mouse&lt;/li&gt;
&lt;li&gt;you can write simple script to deal with the passwords. for example, generate a number of account/ password pair, or dump a password list&lt;/li&gt;
&lt;li&gt;This tool is very lightweight. You can store your passwords in a Raspberry Pi !&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
If you visit the website you may find it is not difficult to use. However, there are some tricks&lt;br&gt;
&lt;br&gt;
1. You must setup gpg keyrings before initialising the pass store&lt;br&gt;
2. The name of the pass store is the ID of the gpg key.&lt;br&gt;
&lt;br&gt;
Once you setup the pass store you are good to enjoy this tool.&lt;br&gt;
&lt;br&gt;
The following steps are the example:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2015/08/pass-store-password-manager-in-command.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/2369534958157159686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/2369534958157159686?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2369534958157159686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2369534958157159686'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/08/pass-store-password-manager-in-command.html' title='Pass Store (Password Manager in command line)'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7XepVG1lssN1tTb8zH84SS-UCJoYD-cwLb0BiRqnnoECc_AAgwSywW8aJ6S0Cl5UWbkw-ygMhGic7YVk0HdZ8-u1x0bbOjiMJSSvqD0OkDe17TzLojBzwToxuBl1-0uKUQTHIxi-nt9Q/s72-c/password-866977_640.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-4204973331593089384</id><published>2015-08-25T00:53:00.001+08:00</published><updated>2015-08-25T00:53:36.836+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="N54L"/><title type='text'>HP Gen7 N54L Hardware Upgrade</title><content type='html'>&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;I have a HP Gen7 N54L. Although Gen8 is released but it also makes N54L more attractive. It is a Microserver and it&#39;s worth to get one as a home server. There is a 4 bay enclosure. If you make use of the space of optical drive and the eSata output, the server can serve totally 6 SATA devices which is good enough for a storage server for a SME.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
Originally the configuration is a 4GB ECC memory with a 500GB Black disk. The CPU is&amp;nbsp;AMD Turion(tm) II Neo N54L Dual-Core Processor. It is embedded in the mainboard so there is no way to upgrade it. Also, the main board doesn&#39;t have any USB3.0, which is not acceptable nowadays.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;br clear=&quot;none&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
So what can we do in order to make it more productive? For me, I have purchased the following :&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;ul style=&quot;font-family: gotham, helvetica, arial, sans-serif;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 1.571428em;&quot;&gt;2x 2TB Green disks (with software raid, will explain later)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 1.571428em;&quot;&gt;Add 4GB non-ECC memory (totally 8GB)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 1.571428em;&quot;&gt;Add a USB3.0 pci low profile adapter&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;font-family: gotham, helvetica, arial, sans-serif;&quot;&gt;
I also upgraded the BIOS which can make the harddisks hot pluggable.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: gotham, helvetica, arial, sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: gotham, helvetica, arial, sans-serif;&quot;&gt;
Since I need some time to make a short procedure for the hardware, I just show the result at the moment.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;# free&lt;br clear=&quot;none&quot; /&gt;total used free shared buff/cache available&lt;br clear=&quot;none&quot; /&gt;Mem: 8052260 826372 6648096 14800 577792 6854592&lt;br clear=&quot;none&quot; /&gt;Swap: 0 0 0&lt;br clear=&quot;none&quot; /&gt;# lspci |grep -i USB.3&lt;br clear=&quot;none&quot; /&gt;02:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #383838; font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em; margin: 0px; padding: 0px;&quot;&gt;
Of course I am a Linux guy so it is expected I installed a Linux on it. You can see there are 6GB free right now. And I can even use the USB3.0 ports to connect more hard disks (to backup, for example).&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/4204973331593089384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/4204973331593089384?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/4204973331593089384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/4204973331593089384'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2015/08/hp-gen7-n54l-hardware-upgrade.html' title='HP Gen7 N54L Hardware Upgrade'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-7118820073203640896</id><published>2013-06-28T15:12:00.001+08:00</published><updated>2015-08-15T08:26:05.640+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HP-UX"/><title type='text'>Restore HP-UX from ignite tape (with screen dump)</title><content type='html'>&lt;h3 id=&quot;Restore_HP-UX_from_ignite_tape&quot;&gt;
 Objective&lt;/h3&gt;
&lt;div id=&quot;Restore_HP-UX_from_ignite_tape&quot;&gt;
To restore HP-UX (11i, 11.23 should work) from a backup (make_tape_recovery) &lt;/div&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;&lt;br&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;Login MP console and recycle it &lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;CO&amp;quot; to console &lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Within that &amp;quot;10 seconds&amp;quot;, press any key and see the menu &lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-15&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-16&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-17&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-18&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-19&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-20&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-21&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-22&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-23&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-24&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1&quot;&gt;&lt;/span&gt;---- Main Menu ---------------------------------------------------------------
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;     Command                           Description
&lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;     -------                           -----------
&lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;     BOot [PRI|ALT|&lt;path&gt;]             Boot from specified path
&lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;     PAth [PRI|ALT] [&lt;path&gt;]           Display or modify a path
&lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;     SEArch [DIsplay|IPL] [&lt;path&gt;]     Search for boot devices
&lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;     COnfiguration menu                Displays or sets boot values
&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;     INformation menu                  Displays hardware information
&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;     SERvice menu                      Displays service commands
&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;     DIsplay                           Redisplay the current menu
&lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;     HElp [&lt;menu&gt;|&lt;command&gt;]           Display help for menu or command
&lt;span class=&quot;anchor&quot; id=&quot;line-15&quot;&gt;&lt;/span&gt;     RESET                             Restart the system
&lt;span class=&quot;anchor&quot; id=&quot;line-16&quot;&gt;&lt;/span&gt;----
&lt;span class=&quot;anchor&quot; id=&quot;line-17&quot;&gt;&lt;/span&gt;Main Menu: Enter command or menu &amp;gt; sea&lt;/menu&gt;&lt;/path&gt;&lt;/path&gt;&lt;/path&gt;&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-25&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Insert the tape and run &amp;quot;SEA&amp;quot; to search devices &lt;span class=&quot;anchor&quot; id=&quot;line-26&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-27&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-28&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-29&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-30&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-31&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-32&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-33&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-34&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-35&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-36&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-37&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-38&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-39&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-40&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-41&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-42&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-43&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-44&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-1&quot;&gt;&lt;/span&gt;Main Menu: Enter command or menu &amp;gt; SEA
&lt;span class=&quot;anchor&quot; id=&quot;line-2-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-3-1&quot;&gt;&lt;/span&gt;Searching for potential boot device(s)
&lt;span class=&quot;anchor&quot; id=&quot;line-4-1&quot;&gt;&lt;/span&gt;This may take several minutes.
&lt;span class=&quot;anchor&quot; id=&quot;line-5-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-6-1&quot;&gt;&lt;/span&gt;To discontinue search, press any key (termination may not be immediate).
&lt;span class=&quot;anchor&quot; id=&quot;line-7-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-8-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-9-1&quot;&gt;&lt;/span&gt;                                                                           IODC
&lt;span class=&quot;anchor&quot; id=&quot;line-10-1&quot;&gt;&lt;/span&gt;   Path#  Device Path (dec)  Device Path (mnem)  Device Type               Rev
&lt;span class=&quot;anchor&quot; id=&quot;line-11-1&quot;&gt;&lt;/span&gt;   -----  -----------------  ------------------  -----------               ----
&lt;span class=&quot;anchor&quot; id=&quot;line-12-1&quot;&gt;&lt;/span&gt;   P0     0/0/2/0.0          ide.0               Random access media       1    
&lt;span class=&quot;anchor&quot; id=&quot;line-13-1&quot;&gt;&lt;/span&gt;   P1     0/1/1/0.0          intscsia.0          Random access media       1    
&lt;span class=&quot;anchor&quot; id=&quot;line-14-1&quot;&gt;&lt;/span&gt;   P2     0/1/1/1.4          intscsib.4          Sequential access media   1    
&lt;span class=&quot;anchor&quot; id=&quot;line-15-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-16-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-17-1&quot;&gt;&lt;/span&gt;Main Menu: Enter command or menu &amp;gt;&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-45&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;div class=&quot;line862&quot;&gt;
&amp;quot;P2     0/1/1/1.4          intscsib.4          Sequential access media   1&amp;quot; -&amp;gt; which is the tape drive &lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href=&quot;http://technicaldoc.blogspot.com/2013/06/restore-hp-ux-from-ignite-tape-with.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/7118820073203640896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/7118820073203640896?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7118820073203640896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7118820073203640896'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/06/restore-hp-ux-from-ignite-tape-with.html' title='Restore HP-UX from ignite tape (with screen dump)'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-2758926553699126375</id><published>2013-06-28T15:02:00.000+08:00</published><updated>2013-06-28T15:02:15.422+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="openvpn"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="ras"/><title type='text'>OpenVPN server setup on Raspberry Pi</title><content type='html'>&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h2 id=&quot;Note:_it_is_for_bridge_mode_only&quot;&gt;
Note: it is for bridge mode only&lt;/h2&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line862&quot;&gt;
Ref: &lt;a class=&quot;http&quot; href=&quot;http://openvpn.net/index.php/open-source/documentation/howto.html&quot;&gt;http://openvpn.net/index.php/open-source/documentation/howto.html&lt;/a&gt; &lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;Objective&quot;&gt;
&lt;br&gt;&lt;/div&gt;
&lt;div id=&quot;Objective&quot;&gt;
I found that Raspberry Pi is a good choice for setup OpenVPN server. I can always power on it as the power consumption is low. After setting it up, I can connect VPN to home in office or cafe outside. &lt;/div&gt;
&lt;div id=&quot;Objective&quot;&gt;
&lt;br&gt;&lt;/div&gt;
&lt;div id=&quot;Objective&quot;&gt;
You may think port forwarding by router or via SSH is good enough. However, there are limitations when:&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;there are lots of services you want to connect from outsider, then your port forwarding rules will be massive&lt;/li&gt;
&lt;li&gt;as the OpenVPN client can reconnect automatically, I can have a relative stable connection. Sometimes you would like to have a reserve connect from server to client. My own experience is that in my previous company, I setup OpenVPN client in office and connect to my home, leave the connection alive. Then when I go home I can reconnect to my office PC by remote desktop :) &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;Objective&quot;&gt;
Objective&lt;/h3&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;Internal network: 192.168.28.0/24 &lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Setup
 a OpenVPN server such that client connection will connect to the server
 and assign a 192.168.28.0/24 IP as if it is within the internal network
 &lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;necessary install &lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1&quot;&gt;&lt;/span&gt;apt-get install  bridge-utils openvpn &lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h3 id=&quot;easy_rsa&quot;&gt;
&lt;/h3&gt;&lt;a href=&quot;http://technicaldoc.blogspot.com/2013/06/openvpn-server-setup-on-raspberry-pi.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/2758926553699126375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/2758926553699126375?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2758926553699126375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2758926553699126375'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/06/openvpn-server-setup-on-raspberry-pi.html' title='OpenVPN server setup on Raspberry Pi'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-7817137261655827399</id><published>2013-06-18T12:08:00.002+08:00</published><updated>2013-06-18T12:08:53.649+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="EMC"/><category scheme="http://www.blogger.com/atom/ns#" term="HP-UX"/><category scheme="http://www.blogger.com/atom/ns#" term="Storage"/><title type='text'>Cisco MDS port zoning 101</title><content type='html'>&lt;h2 id=&quot;Objective&quot;&gt;
Objective&lt;/h2&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-4-2&quot;&gt;&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;&lt;div class=&quot;line862&quot;&gt;
There are two FC ports (fd0, fd1) on a hp-ux rp3410 (hostname: rp3410  &lt;img alt=&quot;:)&quot; height=&quot;16&quot; src=&quot;https://wiki.jessed121.us/moin_static197/moniker/img/smile.png&quot; title=&quot;:)&quot; width=&quot;16&quot; /&gt; ) &lt;span class=&quot;anchor&quot; id=&quot;line-5-2&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;The storage is EMC VNX5100, we will use SPA P1/P2 and SPB P1/P2. &lt;span class=&quot;anchor&quot; id=&quot;line-6-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-7-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h3 id=&quot;Physical_connection&quot;&gt;
Physical connection&lt;/h3&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-8-2&quot;&gt;&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;rp3410 fd0 will connect to SW1 port 1/7 &lt;span class=&quot;anchor&quot; id=&quot;line-9-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;rp3410 fd1 will connect to SW2 port 1/7 &lt;span class=&quot;anchor&quot; id=&quot;line-10-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;VNX5100 SPA P1 on SW1 port 1/1 &lt;span class=&quot;anchor&quot; id=&quot;line-11-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;VNX5100 SPB P1 on SW1 port 1/2 &lt;span class=&quot;anchor&quot; id=&quot;line-12-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;VNX5100 SPA P2 on SW2 port 1/1 &lt;span class=&quot;anchor&quot; id=&quot;line-13-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;VNX5100 SPB P2 on SW2 port 1/2 &lt;span class=&quot;anchor&quot; id=&quot;line-14-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-15-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h3 id=&quot;Switch_configuration:&quot;&gt;
Switch configuration:&lt;/h3&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-16-2&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line874&quot;&gt;
We will create 4 zones, 2 on each switch: &lt;span class=&quot;anchor&quot; id=&quot;line-17-2&quot;&gt;&lt;/span&gt;The zoneset is &quot;full-zoneset&quot; &lt;span class=&quot;anchor&quot; id=&quot;line-18-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-19-2&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
SW1 wwn is 20:00:xx:xx:xx:xx:xx:xx&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-20-2&quot;&gt;&lt;/span&gt;SW2 wwn is 20:00:yy:yy:yy:yy:yy:yy &lt;span class=&quot;anchor&quot; id=&quot;line-21-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-22-2&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
The VSAN of SW1 is 201, SW2 is 202 &lt;span class=&quot;anchor&quot; id=&quot;line-23&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-24&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
(it is port zoning, for soft zoning by wwn, it will be ready later) &lt;span class=&quot;anchor&quot; id=&quot;line-25&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-26&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
SW1: &lt;span class=&quot;anchor&quot; id=&quot;line-29&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-30&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-31&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-32&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-33&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-34&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-35&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-36&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-37&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-38&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-39&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-40&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-41&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-42&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-43&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-44&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-45&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-46&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-47&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-48&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-49&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-50&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-51&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-52&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1&quot;&gt;&lt;/span&gt;config t
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;vsan database
&lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;vsan 201 interface 1/7
&lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;interface 1/7
&lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;no shutdown
&lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;switchport mode F
&lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;switchport description &quot;rp3410_fd0&quot;
&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;zone name rp3410_fd0_VNX5100_VNX_SPA1 vsan 201
&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;member interface fc 1/1 swwn 20:00:xx:xx:xx:xx:xx:xx
&lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;member interface fc 1/7 swwn 20:00:xx:xx:xx:xx:xx:xx
&lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-15&quot;&gt;&lt;/span&gt;zone name rp3410_fd0_VNX5100_VNX_SPB1 vsan 201
&lt;span class=&quot;anchor&quot; id=&quot;line-16&quot;&gt;&lt;/span&gt;member interface fc 1/2 swwn 20:00:xx:xx:xx:xx:xx:xx
&lt;span class=&quot;anchor&quot; id=&quot;line-17&quot;&gt;&lt;/span&gt;member interface fc 1/7 swwn 20:00:xx:xx:xx:xx:xx:xx
&lt;span class=&quot;anchor&quot; id=&quot;line-18&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-19&quot;&gt;&lt;/span&gt;zoneset name full-zoneset vsan 201
&lt;span class=&quot;anchor&quot; id=&quot;line-20&quot;&gt;&lt;/span&gt;memeber rp3410_fd0_VNX5100_VNX_SPA1
&lt;span class=&quot;anchor&quot; id=&quot;line-21&quot;&gt;&lt;/span&gt;memeber rp3410_fd0_VNX5100_VNX_SPB1
&lt;span class=&quot;anchor&quot; id=&quot;line-22&quot;&gt;&lt;/span&gt;zoneset activate name full-zoneset&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-53&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-54&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line874&quot;&gt;
SW2 &lt;span class=&quot;anchor&quot; id=&quot;line-55&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-56&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-57&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-58&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-59&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-60&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-61&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-62&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-63&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-64&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-65&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-66&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-67&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-68&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-69&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-70&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-71&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-72&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-73&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-74&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-75&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-76&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-77&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-78&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-1&quot;&gt;&lt;/span&gt;config t
&lt;span class=&quot;anchor&quot; id=&quot;line-2-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-3-1&quot;&gt;&lt;/span&gt;vsan database
&lt;span class=&quot;anchor&quot; id=&quot;line-4-1&quot;&gt;&lt;/span&gt;vsan 202 interface 1/7
&lt;span class=&quot;anchor&quot; id=&quot;line-5-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-6-1&quot;&gt;&lt;/span&gt;interface 1/7
&lt;span class=&quot;anchor&quot; id=&quot;line-7-1&quot;&gt;&lt;/span&gt;no shutdown
&lt;span class=&quot;anchor&quot; id=&quot;line-8-1&quot;&gt;&lt;/span&gt;switchport mode F
&lt;span class=&quot;anchor&quot; id=&quot;line-9-1&quot;&gt;&lt;/span&gt;switchport description &quot;rp3410_fd1&quot;
&lt;span class=&quot;anchor&quot; id=&quot;line-10-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-11-1&quot;&gt;&lt;/span&gt;zone name rp3410_fd1_VNX5100_VNX_SPA2 vsan 202
&lt;span class=&quot;anchor&quot; id=&quot;line-12-1&quot;&gt;&lt;/span&gt;member interface fc 1/1 swwn 20:00:yy:yy:yy:yy:yy:yy
&lt;span class=&quot;anchor&quot; id=&quot;line-13-1&quot;&gt;&lt;/span&gt;member interface fc 1/7 swwn 20:00:yy:yy:yy:yy:yy:yy
&lt;span class=&quot;anchor&quot; id=&quot;line-14-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-15-1&quot;&gt;&lt;/span&gt;zone name rp3410_fd1_VNX5100_VNX_SPB2 vsan 202
&lt;span class=&quot;anchor&quot; id=&quot;line-16-1&quot;&gt;&lt;/span&gt;member interface fc 1/2 swwn 20:00:yy:yy:yy:yy:yy:yy
&lt;span class=&quot;anchor&quot; id=&quot;line-17-1&quot;&gt;&lt;/span&gt;member interface fc 1/7 swwn 20:00:yy:yy:yy:yy:yy:yy
&lt;span class=&quot;anchor&quot; id=&quot;line-18-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-19-1&quot;&gt;&lt;/span&gt;zoneset name full-zoneset vsan 202
&lt;span class=&quot;anchor&quot; id=&quot;line-20-1&quot;&gt;&lt;/span&gt;memeber rp3410_fd1_VNX5100_VNX_SPA2 vsan 202
&lt;span class=&quot;anchor&quot; id=&quot;line-21-1&quot;&gt;&lt;/span&gt;memeber rp3410_fd1_VNX5100_VNX_SPB2 vsan 202
&lt;span class=&quot;anchor&quot; id=&quot;line-22-1&quot;&gt;&lt;/span&gt;zoneset activate name full-zoneset&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/7817137261655827399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/7817137261655827399?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7817137261655827399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/7817137261655827399'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/06/cisco-mds-port-zoning-101.html' title='Cisco MDS port zoning 101'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-5510386294033211588</id><published>2013-05-08T17:31:00.000+08:00</published><updated>2013-05-08T17:31:10.704+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="moinmoin"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Update MoinMoin from 1.9.5 to 1.9.7</title><content type='html'>&lt;h2 id=&quot;This_is_the_sample_for_updating_moinmoin_from_1.9.5_to_1.9.7&quot;&gt;
This is the general steps for updating moinmoin from 1.9.5 to 1.9.7&lt;/h2&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;Stop web server or standalone process &lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;backup wiki instance (eg. mywiki or instance1) &lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;backup moinmoin installation path &lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;if there is customized logo, backup it as well (eg. moinmoin.png) &lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;delete *.pyc or *.pyo &lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line891&quot;&gt;
&lt;tt&gt;find&amp;nbsp;&lt;moinmoin nbsp=&quot;&quot; path=&quot;&quot;&gt;&amp;nbsp;-name&amp;nbsp;*.pyc&amp;nbsp;-exec&amp;nbsp;rm&amp;nbsp;{}&amp;nbsp;\;&amp;nbsp;&lt;/moinmoin&gt;&lt;/tt&gt; &lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;download moinoin1.9.7 and install to existing path &lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line891&quot;&gt;
&lt;tt&gt;python&amp;nbsp;setup.py&amp;nbsp;install&amp;nbsp;--prefix&amp;nbsp;&lt;moinmoin nbsp=&quot;&quot; path=&quot;&quot;&gt;&lt;/moinmoin&gt;&lt;/tt&gt; &lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;replace moinmoin.png if necessary &lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;if using web server, remember to change the static path from &quot;/moin_static195&quot; to &quot;/moin_static197&quot; &lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;start web server or standalone process &lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;div class=&quot;line862&quot;&gt;
double check the version by &lt;tt&gt;http://&lt;yourwiki&gt;/SystemInfo&lt;/yourwiki&gt;&lt;/tt&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/5510386294033211588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/5510386294033211588?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/5510386294033211588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/5510386294033211588'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/05/update-moinmoin-from-195-to-197.html' title='Update MoinMoin from 1.9.5 to 1.9.7'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-2464569069104005454</id><published>2013-02-18T17:23:00.002+08:00</published><updated>2013-02-18T17:23:40.356+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="trac"/><title type='text'>Setup Trac on Raspberry Pi as a Wiki and Issue Tracking Tool</title><content type='html'>&lt;h2 id=&quot;Trac_with_GIT&quot;&gt;
Trac with GIT&lt;/h2&gt;
&lt;div id=&quot;Trac_with_GIT&quot;&gt;
Trac is a wiki and issue tracking tool. There are other choices such as redmind and mantisbt. However, Trac is the most suitable one for running on Raspberry Pi because:&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;it is run by python, which is installed by default for raspbian. (php and ruby are not required)&lt;/li&gt;
&lt;li&gt;it is relatively light weight. It can use sqlite as the database, rather than MySQL or PostgresSQL.&lt;/li&gt;
&lt;li&gt;it can be run in standalone mode, without using apache or lighttpd. (although I will still use lighttpd to &amp;#39;proxy&amp;#39; Trac)&lt;/li&gt;
&lt;li&gt;It supports modern version control tool such as Subversion and GIT. (redmine also supports, but again, it&amp;#39;s not that light weight)&lt;/li&gt;
&lt;li&gt;with making use of virtual environment (virutalenv), you can setup Trac without using a privilege account. &lt;/li&gt;
&lt;li&gt;it is a mature product and many organizations are using it (http://trac.edgewall.org/wiki/TracUsers)&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-2-7&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-3-6&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h3 id=&quot;Install_and_setup_Trac&quot;&gt;
Install and setup Trac&lt;/h3&gt;
&lt;div id=&quot;Install_and_setup_Trac&quot;&gt;
First, make sure virtualenv is already installed. (apt-get install virtualenv) &lt;/div&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2013/02/setup-trac-on-raspberry-pi-as-wiki-and.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/2464569069104005454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/2464569069104005454?isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2464569069104005454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2464569069104005454'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/02/setup-trac-on-raspberry-pi-as-wiki-and.html' title='Setup Trac on Raspberry Pi as a Wiki and Issue Tracking Tool'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-214656657947419945</id><published>2013-02-18T11:24:00.001+08:00</published><updated>2013-02-18T11:24:31.368+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Remove a file completely in GIT</title><content type='html'>GIT is a great version control tool. I was a CVS and SVN users but I think GIT is even more powerful. Perhaps I can write something about GIT but now I want to share an experience: How to remove a file completely from GIT.&lt;br /&gt;
&lt;br /&gt;
There is an internal db in GIT. Once your add and commit codes into the repository, the info will be store and the great thing is that you can check out the file at any version. However, I did an stupid thing - I hard coded some personal information (eg password) in a file and commit it to the repository. It won&#39;t be a problem if you are the only developer of the project.&amp;nbsp; But if you need to share the code by cloning the repository to the others, your information can be retrieved, even you delete it in filesystem.&lt;br /&gt;
&lt;br /&gt;
So I did some quick search and find a solution: just runt the following command to remove the history and file: &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;git filter-branch --index-filter &quot;git rm -rf --cached --ignore-unmatch &lt;your file=&quot;&quot;&gt;&quot; HEAD&lt;/your&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Make sure you make a copy to some places out of the GIT repository. Then you can copy the file back and add it as a &quot;fresh new&quot; file.&lt;br /&gt;
&lt;br /&gt;
PS. As a better practice, don&#39;t hard coded any thing that cannot be shared in a repository !!</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/214656657947419945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/214656657947419945?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/214656657947419945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/214656657947419945'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/02/remove-file-completely-in-git.html' title='Remove a file completely in GIT'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-1529663645912734249</id><published>2013-01-29T15:13:00.002+08:00</published><updated>2013-01-29T15:13:27.906+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HP-UX"/><title type='text'>Getting Serial Number of HP-UX (works on RP5470 -  HP11i PA-RISC)</title><content type='html'>HP-UX 11i is now pretty old but it is surprised that there are still a lot of companies using it. Though it is stable but hardware failure is something unpreventable. Once you found hardware fault, you probably need to call vendors (HP or others) to diagnostics.&lt;br /&gt;
&lt;br /&gt;
A typical question will be &quot;what is your server model? OS? Serial number?&quot; Here is the quick answer:&lt;br /&gt;
&lt;br /&gt;
OS Version: &lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;uname -a&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Model: &lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;model &lt;/span&gt;&lt;/span&gt;(yes, simple?)&lt;br /&gt;
Serial Number: no single command to get it. but the information can be retrieved in cstm:&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;echo &quot;sel path system\ninfolog\nexit&quot;|cstm|grep &quot;System Serial Number&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;eg.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;# uname -a&lt;br /&gt;HP-UX &lt;b&gt;zzzzzzzzz &lt;/b&gt;B.11.11 U 9000/800 106424635 unlimited-user license&lt;br /&gt;# model&lt;br /&gt;9000/800/L3000-8x&lt;br /&gt;# echo &quot;sel path system\ninfolog\nexit&quot;|cstm|grep &quot;System Serial Number&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; System Serial Number...: &lt;b&gt;xxxxxxxxxx&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/1529663645912734249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/1529663645912734249?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1529663645912734249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1529663645912734249'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2013/01/getting-serial-number-of-hp-ux-works-on.html' title='Getting Serial Number of HP-UX (works on RP5470 -  HP11i PA-RISC)'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-6373921735709154819</id><published>2012-11-29T16:10:00.003+08:00</published><updated>2012-11-29T16:10:55.927+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Remote access to your Raspberry Pi with ssl/ssh multiplexer</title><content type='html'>One big advantage of Raspberry Pi is its low power consumption. I can power on it 7x24 and remote it at anytime (of course, assumed your router is also on). SSH from internet to your Pi is simple, by just forwarding port 22 or making the Pi is the default DMZ. However, some places only allows you to visit port 80 or 443, or you have to connect to the internal via a proxy server, which also blocks every ports but 80/443.&lt;br&gt;&lt;br&gt;Since port 443 is an exception, why don&amp;#39;t we set the SSH service to listen to it? Just modify /etc/ssh/sshd_config and add a line &amp;quot;Port 80&amp;quot; or &amp;quot;Port 443&amp;quot;. It does work, but wait, what about if the Pi also serves as a Web Server with SSL enabled? If you choose 443 to serve SSH, then you can&amp;#39;t have your web server to use SSL at 443. So how to solve this situation? Here is one of the possible approach.&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2012/11/remote-access-to-your-raspberry-pi-with.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/6373921735709154819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/6373921735709154819?isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6373921735709154819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6373921735709154819'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/remote-access-to-your-raspberry-pi-with.html' title='Remote access to your Raspberry Pi with ssl/ssh multiplexer'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-2519572042066349880</id><published>2012-11-26T15:52:00.002+08:00</published><updated>2012-11-26T17:14:38.974+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Solaris"/><title type='text'>Create a Soalris 8 zone (32bit) to a container</title><content type='html'>Last time I had successfully created a flar image from an old Solaris 8 server &lt;a href=&quot;http://technicaldoc.blogspot.com/2012/11/failed-to-exclude-directories-when.html&quot; target=&quot;_blank&quot;&gt;(ref)&lt;/a&gt;. Now I have to setup a zone of Solaris 10 container and install the image into it. The overall idea is clear and easy. Normally just create the zone configuration, and install it from a &amp;quot;flar&amp;quot; image.&lt;br&gt;
&lt;br&gt;
1. Create zone configuration&lt;br&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br&gt;root@sol10 # zonecfg -z z_sol8&lt;br&gt;z_sol8: No such zone configured&lt;br&gt;Use &amp;#39;create&amp;#39; to begin configuring a new zone.&lt;br&gt;zonecfg:z_sol8&amp;gt; create -t SUNWsolaris8&lt;br&gt;zonecfg:z_sol8&amp;gt; set zonepath=/pool/zone/sol8&lt;br&gt;zonecfg:z_sol8&amp;gt; set autoboot=false&lt;br&gt;zonecfg:z_sol8&amp;gt; set ip-type=shared&lt;br&gt;zonecfg:z_sol8&amp;gt; add net&lt;br&gt;zonecfg:z_sol8:net&amp;gt; set address=192.168.123.123&lt;br&gt;zonecfg:z_sol8:net&amp;gt; set physical=nxge0&lt;br&gt;zonecfg:z_sol8:net&amp;gt; end&lt;br&gt;zonecfg:z_sol8&amp;gt; verify&lt;br&gt;zonecfg:z_sol8&amp;gt; commit&lt;br&gt;zonecfg:z_sol8&amp;gt; exit&lt;/span&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
Next install the zone from the flar image:        &lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2012/11/create-soalris-8-zone-32bit-to-container.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/2519572042066349880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/2519572042066349880?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2519572042066349880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2519572042066349880'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/create-soalris-8-zone-32bit-to-container.html' title='Create a Soalris 8 zone (32bit) to a container'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-1198749999856594539</id><published>2012-11-22T15:48:00.004+08:00</published><updated>2012-11-22T15:49:20.830+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lighttpd"/><category scheme="http://www.blogger.com/atom/ns#" term="moinmoin"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><category scheme="http://www.blogger.com/atom/ns#" term="wiki"/><title type='text'>Create a Wiki (Moinmoin) on Raspberry</title><content type='html'>&lt;div class=&quot;line862&quot;&gt;
Moinmoin is a very good Wiki application without using a DB. It is very fast, with easy syntax and I recommend to use it as a quick knowledge base for home or SME usage.&lt;/div&gt;
&lt;div class=&quot;line862&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line862&quot;&gt;
&amp;nbsp;This
 guide is to install moinmoin on a Raspberry Pi and make it accessible 
via Lighttpd (using fastcgi). It is assumed a virtual host is available 
for this wiki (eg. &lt;tt&gt;http://wiki.example.com&lt;/tt&gt; ) &lt;span class=&quot;anchor&quot; id=&quot;line-4-3&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-5-3&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line874&quot;&gt;
The
 moinmoin program will be installed at /usr/local/moinmoin_engine while 
the instance will be installed at another place (eg. 
/usr/local/moinmoin_instance1. )&lt;span class=&quot;anchor&quot; id=&quot;line-6-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-7-2&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;&lt;div class=&quot;line862&quot;&gt;
Download the latest source (1.9.5 as of this moment) at &lt;a class=&quot;http&quot; href=&quot;http://moinmo.in/&quot;&gt;http://moinmo.in&lt;/a&gt; &lt;span class=&quot;anchor&quot; id=&quot;line-8-2&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;extract the tar ball to a temp place (eg. /tmp) &lt;span class=&quot;anchor&quot; id=&quot;line-9-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;under the source path, run  &lt;span class=&quot;anchor&quot; id=&quot;line-10-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-11-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-12-2&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1&quot;&gt;&lt;/span&gt;python setup.py install --prefix=/usr/local/moinmoin_engine&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-13-2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;mkdir the instance path  &lt;span class=&quot;anchor&quot; id=&quot;line-14-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-15-2&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-16-2&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-1&quot;&gt;&lt;/span&gt;mkdir /usr/local/moinmoin_instance1&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-17-1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;copy the following directories from &quot;engine&quot; to &quot;instance&quot;, and change the ownership to the lighttpd user: &lt;span class=&quot;anchor&quot; id=&quot;line-18-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-19-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-20-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-21-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-22-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-23-1&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-24-1&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-2&quot;&gt;&lt;/span&gt;cp -r /usr/local/moinmoin_engine/share/moin/data /usr/local/moinmoin_instance1
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;cp -r /usr/local/moinmoin_engine/share/moin/underlay /usr/local/moinmoin_instance1
&lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;cp /usr/local/moinmoin_engine/share/moin/config/wikiconfig.py /usr/local/moinmoin_instance1
&lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;cp /usr/local/moinmoin_engine/share/moin/server/moin.fcgi /usr/local/moinmoin_instance1
&lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;chown -R www-data:www-data /usr/local/moinmoin_instance1&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-25&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;modify the moin.fcgi, locate the following lines: &lt;span class=&quot;anchor&quot; id=&quot;line-26&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-27&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-28&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-29&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-30&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-31&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-32&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-33&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-34&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-35&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-36&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-37&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-38&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-39&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-40&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-41&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-42&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-43&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-44&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-45&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-46&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-47&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-48&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-49&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-50&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-51&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-52&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-53&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-3&quot;&gt;&lt;/span&gt;# a1) Path of the directory where the MoinMoin code package is located.
&lt;span class=&quot;anchor&quot; id=&quot;line-2-1&quot;&gt;&lt;/span&gt;#     Needed if you installed with --prefix=PREFIX or you didn&#39;t use setup.py.
&lt;span class=&quot;anchor&quot; id=&quot;line-3-1&quot;&gt;&lt;/span&gt;#sys.path.insert(0, &#39;PREFIX/lib/python2.3/site-packages&#39;)
&lt;span class=&quot;anchor&quot; id=&quot;line-4-1&quot;&gt;&lt;/span&gt;sys.path.insert(0, &#39;/usr/local/moinmoin_engine/lib/python2.7/site-packages&#39;)
&lt;span class=&quot;anchor&quot; id=&quot;line-5-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
&lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;#     See wiki/config/... for some sample config files.
&lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;#sys.path.insert(0, &#39;/path/to/wikiconfigdir&#39;)
&lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;sys.path.insert(0, &#39;/usr/local/moinmoin_instance1&#39;)
&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;...
&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;## this works around a bug in flup&#39;s CGI autodetection (as of flup 1.0.1):
&lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;#os.environ[&#39;FCGI_FORCE_CGI&#39;] = &#39;Y&#39; # &#39;Y&#39; for (slow) CGI, &#39;N&#39; for FCGI
&lt;span class=&quot;anchor&quot; id=&quot;line-15&quot;&gt;&lt;/span&gt;os.environ[&#39;FCGI_FORCE_CGI&#39;] = &#39;N&#39;
&lt;span class=&quot;anchor&quot; id=&quot;line-16&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-17&quot;&gt;&lt;/span&gt;...
&lt;span class=&quot;anchor&quot; id=&quot;line-18&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-19&quot;&gt;&lt;/span&gt;# Is fixing the script name needed?
&lt;span class=&quot;anchor&quot; id=&quot;line-20&quot;&gt;&lt;/span&gt;# Use None if your url looks like http://domain/wiki/moin.fcgi
&lt;span class=&quot;anchor&quot; id=&quot;line-21&quot;&gt;&lt;/span&gt;# Use &#39;&#39; if you use rewriting to run at http://domain/
&lt;span class=&quot;anchor&quot; id=&quot;line-22&quot;&gt;&lt;/span&gt;# Use &#39;/mywiki&#39; if you use rewriting to run at http://domain/mywiki/
&lt;span class=&quot;anchor&quot; id=&quot;line-23&quot;&gt;&lt;/span&gt;#fix_script_name = None  # &lt;-- adapt=&quot;adapt&quot; as=&quot;as&quot; class=&quot;anchor&quot; here=&quot;here&quot; id=&quot;line-24&quot; needed=&quot;needed&quot; span=&quot;span&quot;&gt;&lt;!------&gt;&lt;/--&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
fix_script_name = &#39;&#39;# &lt;-- adapt=&quot;adapt&quot; as=&quot;as&quot; here=&quot;here&quot; needed=&quot;needed&quot; pre=&quot;pre&quot;&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-54&quot;&gt;&lt;/span&gt;&lt;!------&gt;
&lt;/--&gt;&lt;br /&gt;
&lt;li&gt;Next prepare virtual host by appending the following block /etc/lighttpd/lighttpd.conf: &lt;span class=&quot;anchor&quot; id=&quot;line-55&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-56&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-57&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-58&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-59&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-60&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-61&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-62&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-63&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-64&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-65&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-66&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-67&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-68&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-69&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-70&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-71&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-72&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-73&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-74&quot;&gt;&lt;/span&gt;&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-4&quot;&gt;&lt;/span&gt;$HTTP[&quot;host&quot;] =~ &quot;wiki\.example\.com&quot; {
&lt;span class=&quot;anchor&quot; id=&quot;line-2-2&quot;&gt;&lt;/span&gt;        
&lt;span class=&quot;anchor&quot; id=&quot;line-3-2&quot;&gt;&lt;/span&gt;  fastcgi.server += ( &quot;/&quot; =&amp;gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-4-2&quot;&gt;&lt;/span&gt;      ((
&lt;span class=&quot;anchor&quot; id=&quot;line-5-2&quot;&gt;&lt;/span&gt;        &quot;socket&quot; =&amp;gt; &quot;/tmp/moin.socket&quot;,
&lt;span class=&quot;anchor&quot; id=&quot;line-6-1&quot;&gt;&lt;/span&gt;        &quot;min-procs&quot; =&amp;gt; 1,
&lt;span class=&quot;anchor&quot; id=&quot;line-7-1&quot;&gt;&lt;/span&gt;        &quot;max-procs&quot; =&amp;gt; 2,
&lt;span class=&quot;anchor&quot; id=&quot;line-8-1&quot;&gt;&lt;/span&gt;        &quot;check-local&quot; =&amp;gt; &quot;disable&quot;,
&lt;span class=&quot;anchor&quot; id=&quot;line-9-1&quot;&gt;&lt;/span&gt;        &quot;bin-path&quot; =&amp;gt; &quot;/usr/local/moinmoin_instance1/moin.fcgi&quot;,
&lt;span class=&quot;anchor&quot; id=&quot;line-10-1&quot;&gt;&lt;/span&gt;        &quot;fix-root-scriptname&quot; =&amp;gt; &quot;enable&quot;
&lt;span class=&quot;anchor&quot; id=&quot;line-11-1&quot;&gt;&lt;/span&gt;      ))
&lt;span class=&quot;anchor&quot; id=&quot;line-12-1&quot;&gt;&lt;/span&gt;  )
&lt;span class=&quot;anchor&quot; id=&quot;line-13-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-14-1&quot;&gt;&lt;/span&gt;  alias.url += ( &quot;/moin_static195&quot; =&amp;gt; &quot;/usr/local/moinmoin_engine/lib/python2.7/site-packages/MoinMoin/web/static/htdocs&quot;)
&lt;span class=&quot;anchor&quot; id=&quot;line-15-1&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-16-1&quot;&gt;&lt;/span&gt;}&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-75&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Restart Lighttpd and the your own wiki is just born!&amp;nbsp;&lt;/li&gt;
&lt;br /&gt;
For more information about user and administration guide, please refer the &lt;a href=&quot;https://wiki.jessed121.us/HelpContents&quot;&gt;HelpContents&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
PS: So here is the wiki running on my Raspberry Pi: &lt;a href=&quot;http://wiki.jessed121.us/&quot; target=&quot;_blank&quot;&gt;http://wiki.jessed121.us/&lt;/a&gt; . You can walk around and feel it. </content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/1198749999856594539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/1198749999856594539?isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1198749999856594539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/1198749999856594539'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/create-wiki-moinmoin-on-raspberry.html' title='Create a Wiki (Moinmoin) on Raspberry'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-3331950107439948349</id><published>2012-11-22T15:41:00.002+08:00</published><updated>2012-11-22T15:42:44.471+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lighttpd"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="pi"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry Pi"/><title type='text'>Install Lighttpd, PHP5, MySQL on Raspberry Pi</title><content type='html'>&lt;div id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
To run a &#39;typical&#39; server on Raspberry Pi, a Web server is necessary. If possible, it can run application (by PHP5, Java, Perl, Python, etc...). Apache may be the most famous web server, but here I choose Lighttpd is it is not as big as Apache. In fact, a lightweight server is more suitable. Also, it will use FastCGI to run PHP and Python, I will list out what applications/ services to be run on this server.&lt;/div&gt;
&lt;div id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
Finally Mysql is also a popular DB. At the beginning I don&#39;t want to install it as there may be a huge overhead on the Pi. In fact, some embedded DB such as sqlite would be a better option. However, there are still applications which only official support Mysql, so at last I decide to install it and hopefully can fine-tune it later. &lt;/div&gt;
&lt;div id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
So here is the steps...&lt;/div&gt;
&lt;h3 id=&quot;Install_Lighttpd_and_PHP5&quot;&gt;
Install Lighttpd and PHP5&lt;/h3&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;Login as root  &lt;span class=&quot;anchor&quot; id=&quot;line-3&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;create the user and group &quot;www-data&quot; &lt;span class=&quot;anchor&quot; id=&quot;line-4&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Install the following packages: &lt;span class=&quot;anchor&quot; id=&quot;line-5&quot;&gt;&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;apt-get update (get the latest repository) &lt;span class=&quot;anchor&quot; id=&quot;line-6&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;apt-get install lighttpd php5-cgi &lt;span class=&quot;anchor&quot; id=&quot;line-7&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-8&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;line874&quot;&gt;
After installation, check the /etc/lighttpd/lighttpd.conf &lt;span class=&quot;anchor&quot; id=&quot;line-9&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-10&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-11&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1&quot;&gt;&lt;/span&gt;include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-12&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line874&quot;&gt;
it
 will includes setting under /etc/lighttpd/conf-enabled. Make sure there
 is something like &quot;fastcgi&quot; and &quot;fastcgi-php&quot;. (The settings can be 
fine tuned afterwards) &lt;span class=&quot;anchor&quot; id=&quot;line-13&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-14&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-15&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-16&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-1-1&quot;&gt;&lt;/span&gt;# ls /etc/lighttpd/conf-enabled/
&lt;span class=&quot;anchor&quot; id=&quot;line-2&quot;&gt;&lt;/span&gt;10-fastcgi.conf  15-fastcgi-php.conf&lt;/pre&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-17&quot;&gt;&lt;/span&gt;&lt;span class=&quot;anchor&quot; id=&quot;line-18&quot;&gt;&lt;/span&gt;&lt;div class=&quot;line867&quot;&gt;
&lt;/div&gt;
&lt;h3 id=&quot;Install_Mysql&quot;&gt;
Install Mysql&lt;/h3&gt;
&lt;span class=&quot;anchor&quot; id=&quot;line-19&quot;&gt;&lt;/span&gt;just install the packages &quot;mysql-server&quot;, &quot;php5-mysql&quot; </content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/3331950107439948349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/3331950107439948349?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3331950107439948349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/3331950107439948349'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/install-lighttpd-php5-mysql-on.html' title='Install Lighttpd, PHP5, MySQL on Raspberry Pi'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-2559365095714626457</id><published>2012-11-22T12:26:00.000+08:00</published><updated>2012-11-22T12:27:29.009+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Solaris"/><title type='text'>Failed to exclude directories when running flarcreate on Solaris 8</title><content type='html'>When I tried to prepare a flash archive (flar) from an old Solaris 8 physical machine, I wanted to exclude two directories (say, /one and /two). I checked the syntax from web (and the man page), it should be:&lt;br&gt;
&lt;br&gt;
&lt;i&gt;flarcreate -n &lt;name&gt; -c -S -R / -x /one -x /two &lt;flar file=&quot;file&quot;&gt;&lt;/flar&gt;&lt;/name&gt;&lt;/i&gt;&lt;br&gt;
where -c is enable compression, -S is ignore size stats, -R is the root path&lt;br&gt;
&lt;br&gt;
However, the directories /one and /two are still in the flar !&lt;br&gt;
&lt;br&gt;
After doing some investigation and research from the web, it is believed that there is a bug of this script of the current version. Since it&amp;#39;s too old and I don&amp;#39;t want to apply any patch on it, I&amp;#39;d rather modify the script a bit in order fulfill my requirement:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2012/11/failed-to-exclude-directories-when.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/2559365095714626457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/2559365095714626457?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2559365095714626457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/2559365095714626457'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/failed-to-exclude-directories-when.html' title='Failed to exclude directories when running flarcreate on Solaris 8'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4859509273414434749.post-6098518507638854775</id><published>2012-11-20T10:20:00.000+08:00</published><updated>2012-11-20T10:23:38.197+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="openweathermap"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Weather information from openweathermap.org JSON API by Python</title><content type='html'>The openweathermap.org offers JSON API to query weather information around the world. It is not difficult to use python to call the API, parse the JSON and gather the information.&lt;br&gt;
&lt;br&gt;
Since all the request are from web, it&amp;#39;d better to prepare a simple function to fetch the HTML/JSON from the site:&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;import urllib2, json&lt;br&gt;&lt;br&gt;def fetchHTML(url):&lt;br&gt;    req = urllib2.Request(url)&lt;br&gt;    response=urllib2.urlopen(req)&lt;br&gt;    return response.read()&lt;/span&gt;&lt;/span&gt;&lt;br&gt;
    &lt;br&gt;
Remember it is just for a quick and dirty approach. In real case we should handle exceptions (such as URL unreachable, network not found, etc)&lt;br&gt;
&lt;br&gt;
Now we are ready to call the API. First of all we need to know the &amp;quot;id&amp;quot; of a City. http://openweathermap.org/data/2.1/find/name?q=&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CITY&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;city&gt;&lt;city&gt;&lt;/city&gt;&lt;/city&gt;&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://technicaldoc.blogspot.com/2012/11/weather-information-from.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicaldoc.blogspot.com/feeds/6098518507638854775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4859509273414434749/6098518507638854775?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6098518507638854775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4859509273414434749/posts/default/6098518507638854775'/><link rel='alternate' type='text/html' href='http://technicaldoc.blogspot.com/2012/11/weather-information-from.html' title='Weather information from openweathermap.org JSON API by Python'/><author><name>Poor IT Guy</name><uri>http://www.blogger.com/profile/07000356929927360890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizSwXlfNYvuxvGmAEWliAUmI9AHFJkE9zUbcOWbmAynSheQBUc1i1C-ZN8S59L1izqAZFZ5P-HHf4O5zOsyFOgZ-eTwI-hGmUlsXsSiT9jlyB3t4azH8HeCByZ4N6vD7c/s220/poorityguy2.jpg'/></author><thr:total>0</thr:total></entry></feed>