<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on</title><link>https://blog.han.life/posts/</link><description>Recent content in Posts on</description><generator>Hugo -- 0.156.0</generator><language>en-au</language><lastBuildDate>Thu, 09 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.han.life/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>CloudFront Anycast IP</title><link>https://blog.han.life/posts/2025/2025-10-09-cloudfront-anycastp-ip/</link><pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2025/2025-10-09-cloudfront-anycastp-ip/</guid><description>What is CloudFront Anycast IP really?</description></item><item><title>Australian SMS OTP Burner</title><link>https://blog.han.life/posts/2025/2025-07-04-australian-sms-otp-burner/</link><pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2025/2025-07-04-australian-sms-otp-burner/</guid><description>Free Australian mobile numbers for receiving SMS OTPs.</description></item><item><title>WireGuard Setup</title><link>https://blog.han.life/posts/2025/2025-03-14-wireguard-setup/</link><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2025/2025-03-14-wireguard-setup/</guid><description>WireGuard Setup Instructions</description></item><item><title>Australian Tax Invoice Generator</title><link>https://blog.han.life/posts/2025/2025-02-24-australian-tax-invoice-generator/</link><pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2025/2025-02-24-australian-tax-invoice-generator/</guid><description>A free Australian Tax Invoice Generator that creates PDF tax invoices.</description></item><item><title>CloudFront Functions with Dynamic Origin Pointing to Another CloudFront</title><link>https://blog.han.life/posts/2025/2025-02-05-cf-function-dynamic-origin/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2025/2025-02-05-cf-function-dynamic-origin/</guid><description>Using CloudFront Functions to dynamically change the origin to another CloudFront distribution via updateRequestOrigin.</description></item><item><title>Home Assistant with DSM7</title><link>https://blog.han.life/posts/2024/2024-01-04-dsm7-hassio/</link><pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2024/2024-01-04-dsm7-hassio/</guid><description>Install Home Assistant Supervisord with DSM7</description></item><item><title>Run a debug prob in a kubernetes cluster with gatekeeper</title><link>https://blog.han.life/posts/2023/2023-10-27-k8s-debug-probe/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2023/2023-10-27-k8s-debug-probe/</guid><description>Workaround when kubectl debug command is blocked</description></item><item><title>Capture bash command error in file</title><link>https://blog.han.life/posts/2022/2022-10-12-bash-error-capture/</link><pubDate>Wed, 12 Oct 2022 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2022/2022-10-12-bash-error-capture/</guid><description>Run a bash command and capture the error in a text file as well as store the exit code</description></item><item><title>Lookup CMK for a test in CDK</title><link>https://blog.han.life/posts/2022/2022-09-06-cdk-cmk-test/</link><pubDate>Tue, 06 Sep 2022 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2022/2022-09-06-cdk-cmk-test/</guid><description>How to lookup dynamic CMK resource name in TS CDK</description></item><item><title>Extract TLD from string by bash</title><link>https://blog.han.life/posts/2021/2021-06-25-extract-tld-by-bash/</link><pubDate>Fri, 25 Jun 2021 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2021/2021-06-25-extract-tld-by-bash/</guid><description>extract TLD when .com &amp;amp; .co.uk are mixed</description></item><item><title>Old Twitter Deleter</title><link>https://blog.han.life/posts/2021/2021-06-24-old-twitter-deleter/</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2021/2021-06-24-old-twitter-deleter/</guid><description>App delete old tweets</description></item><item><title>Add HTTP auth username into envoy proxy logging</title><link>https://blog.han.life/posts/2021/2021-06-01-envoy-proxy-log-auth-user/</link><pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2021/2021-06-01-envoy-proxy-log-auth-user/</guid><description>Dodgy way to extract username from Authorization http header</description></item><item><title>Sony WH-1000XM4 noise issue</title><link>https://blog.han.life/posts/2021/2021-04-08-sony-wh-1000xm4-noise-issue/</link><pubDate>Thu, 08 Apr 2021 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2021/2021-04-08-sony-wh-1000xm4-noise-issue/</guid><description>Strange wind noise coming from nearly new Sony WH-1000XM4</description></item><item><title>fargate container healthcheck</title><link>https://blog.han.life/posts/2021/2021-01-18-fargate-healthcheck/</link><pubDate>Mon, 18 Jan 2021 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2021/2021-01-18-fargate-healthcheck/</guid><description>configuring healthcheck in a fargate task definition</description></item><item><title>Exclude a Kotlin subproject from Gradle Jacoco</title><link>https://blog.han.life/posts/2020/2020-12-21-jacoco-exclusion/</link><pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-12-21-jacoco-exclusion/</guid><description>When a sub-project doesn&amp;#39;t support Jacoco</description></item><item><title>TrueImage DS918+</title><link>https://blog.han.life/posts/2020/2020-06-29-trueimage-ds918/</link><pubDate>Mon, 29 Jun 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-06-29-trueimage-ds918/</guid><description>Install TrueImage on unsupported Synology NAS model</description></item><item><title>[BASH] Repeat Build Step</title><link>https://blog.han.life/posts/2020/2020-06-22-bash-repeat-build-step/</link><pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-06-22-bash-repeat-build-step/</guid><description>&lt;p&gt;When you need to print out YAML build step for multiple environments.&lt;/p&gt;</description></item><item><title>CloudFlare Log Search</title><link>https://blog.han.life/posts/2020/2020-06-19-cloudflare-log-search/</link><pubDate>Fri, 19 Jun 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-06-19-cloudflare-log-search/</guid><description>Cloudflare log search via log API</description></item><item><title>AWS TGW VPN using Unify UDM</title><link>https://blog.han.life/posts/2020/2020-06-13-aws-tgw-vpn-using-unify-udm/</link><pubDate>Sat, 13 Jun 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-06-13-aws-tgw-vpn-using-unify-udm/</guid><description>Connect AWS TGW with Unify UDM</description></item><item><title>Amazon SES with Postfix in Ubuntu</title><link>https://blog.han.life/posts/2020/2020-05-15-amazon-ses-with-postfix-in-ubuntu/</link><pubDate>Fri, 15 May 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-05-15-amazon-ses-with-postfix-in-ubuntu/</guid><description>HOWTO Setup AWS SES in Ubuntu</description></item><item><title>Selenoid Parallel CI testing</title><link>https://blog.han.life/posts/2020/2020-05-12-selenoid-parallel-ci-testing/</link><pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2020/2020-05-12-selenoid-parallel-ci-testing/</guid><description>Selenium testing with built-in video recorder</description></item><item><title>Salesforce CLI with Docker in AWS</title><link>https://blog.han.life/posts/2019/2019-06-28-salesforce-cli-with-docker-in-aws/</link><pubDate>Fri, 28 Jun 2019 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2019/2019-06-28-salesforce-cli-with-docker-in-aws/</guid><description>&lt;p&gt;Auth was the tricky part as the normal auth requires a browser session rather than taking it from the CLI prompt.&lt;/p&gt;</description></item><item><title>Pooq Proxy</title><link>https://blog.han.life/posts/2018/2018-01-14-pooq/</link><pubDate>Sun, 14 Jan 2018 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2018/2018-01-14-pooq/</guid><description>&lt;p&gt;This is my current setup for watching Pooq in Australia for anyone interested. With local proxy, below 4k streaming (UHD) seems alright with NBN via AussieBB. TPG might have better throughput as they have &lt;a href="https://en.wikipedia.org/wiki/Pipe_Pacific_Cable"&gt;PPC-1&lt;/a&gt; submarine cable.&lt;/p&gt;</description></item><item><title>Generate custom x509 certificate in Okta</title><link>https://blog.han.life/posts/2017/2017-11-19-generate-custom-x509-certificate-in-okta/</link><pubDate>Sun, 19 Nov 2017 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2017/2017-11-19-generate-custom-x509-certificate-in-okta/</guid><description>&lt;p&gt;* Requires API key with admin access, least for the target app&lt;/p&gt;</description></item><item><title>Selenium test with docker-compose</title><link>https://blog.han.life/posts/2017/2017-05-23-selenium-test-with-docker-compopse/</link><pubDate>Tue, 23 May 2017 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2017/2017-05-23-selenium-test-with-docker-compopse/</guid><description>&lt;p&gt;Sample config file when using selenium standalone during test.&lt;/p&gt;
&lt;p&gt;docker-compose YAML&lt;/p&gt;</description></item><item><title>AWS KMS - two liners</title><link>https://blog.han.life/posts/2017/2017-05-18-aws-kms-two-liners/</link><pubDate>Thu, 18 May 2017 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2017/2017-05-18-aws-kms-two-liners/</guid><description>&lt;p&gt;For binary encrypted output:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws kms encrypt --region ap-southeast-2 --key-id alias/blah --plaintext fileb://blah --output text --query CiphertextBlob &lt;span class="p"&gt;|&lt;/span&gt; base64 --decode &amp;gt; blah.enc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws kms decrypt --ciphertext-blob fileb://blah.enc --output text --query Plaintext &lt;span class="p"&gt;|&lt;/span&gt; base64 --decode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For base64 encrypted output:&lt;/p&gt;</description></item><item><title>User Profile Service failed the logon. User profile cannot be loaded.</title><link>https://blog.han.life/posts/2017/2017-01-15-user-profile-service-failed-the-logon-user-profile-cannot-be-loaded/</link><pubDate>Sun, 15 Jan 2017 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2017/2017-01-15-user-profile-service-failed-the-logon-user-profile-cannot-be-loaded/</guid><description>&lt;p&gt;&lt;a href="https://support.microsoft.com/en-us/contact/menu/software/windows/ts/"&gt;https://support.microsoft.com/en-us/contact/menu/software/windows/ts/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://support.microsoft.com/en-au/help/947215/you-receive-a-the-user-profile-service-failed-the-logon-error-message"&gt;https://support.microsoft.com/en-au/help/947215/you-receive-a-the-user-profile-service-failed-the-logon-error-message&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Had to contact Microsoft support to receive default file. &lt;a href="https://blog.han.life/wp-content/uploads/2017/01/Default.zip"&gt;Download&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Curl net performance test</title><link>https://blog.han.life/posts/2016/2016-12-15-test-cloudfront-performance-for-support-test/</link><pubDate>Thu, 15 Dec 2016 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2016/2016-12-15-test-cloudfront-performance-for-support-test/</guid><description>&lt;p&gt;Print out CloudFront X-Amz-Cf-Id when response time is slower than set threshold.&lt;/p&gt;</description></item><item><title>Replace Mercedes-Benz B250 cabin(pollen) filter replacement DIY</title><link>https://blog.han.life/posts/2016/2016-11-21-replace-mercedes-benz-b250-cabinpollen-filter-replacement-diy/</link><pubDate>Mon, 21 Nov 2016 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2016/2016-11-21-replace-mercedes-benz-b250-cabinpollen-filter-replacement-diy/</guid><description>&lt;p&gt;Quoted $300+ from dealer shop which I know a serious rip-off price for mere carbon filter.&lt;/p&gt;</description></item><item><title>MongoDB to DynamoDB</title><link>https://blog.han.life/posts/2016/2016-06-08-mongodb-to-dynamodb/</link><pubDate>Wed, 08 Jun 2016 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2016/2016-06-08-mongodb-to-dynamodb/</guid><description>&lt;p&gt;Attempted to convert rather large mongo dump to dynamo.&lt;/p&gt;
&lt;p&gt;Seems like AWS data pipeline is most elegant way to do this if one can workaround with dynamo non-standard json format issue.&lt;/p&gt;</description></item><item><title>Europe Travel 2016</title><link>https://blog.han.life/posts/2016/2016-04-28-europe-travel-2016/</link><pubDate>Thu, 28 Apr 2016 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2016/2016-04-28-europe-travel-2016/</guid><description>&lt;p&gt;&lt;strong&gt;Turkey - Istanbul&lt;/strong&gt; Good: Nice people and food Bad: Syrian refugees(=security risks), bit too excessive street sales&lt;/p&gt;</description></item><item><title>Lets Encrypt nginx SSL certificate renewal via cron</title><link>https://blog.han.life/posts/2015/2015-11-18-lets-encrypt-certificate-renewal-via-cron/</link><pubDate>Wed, 18 Nov 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-11-18-lets-encrypt-certificate-renewal-via-cron/</guid><description>&lt;p&gt;Add below as a cron entry.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/path/letsencrypt/letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory --renew-by-default -a webroot --webroot-path /webroot/ --email youremail --text --agree-tos --agree-dev-preview -d 7979.us -d www.7979.us auth
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/etc/init.d/nginx reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then configure nginx SSL like below.&lt;/p&gt;</description></item><item><title>F5 AAM Cache for app generated pages</title><link>https://blog.han.life/posts/2015/2015-11-16-f5-aam-cache-for-app-generated-pages/</link><pubDate>Mon, 16 Nov 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-11-16-f5-aam-cache-for-app-generated-pages/</guid><description>&lt;p&gt;Dynamic content requires cache-control(max-age) and/or expires header to be cached.&lt;/p&gt;</description></item><item><title>Run HTTP POST request from chrome developer tools</title><link>https://blog.han.life/posts/2015/2015-11-11-run-http-post-request-from-chrome-developer-tools/</link><pubDate>Wed, 11 Nov 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-11-11-run-http-post-request-from-chrome-developer-tools/</guid><description>&lt;p&gt;Do this from developer mode console.&lt;/p&gt;
&lt;p&gt;May need to load a page from the same domain to avoid cross domain validation failure.&lt;/p&gt;</description></item><item><title>Had a car accident in Victoria? Well, too bad.</title><link>https://blog.han.life/posts/2015/2015-09-02-had-a-car-accident-in-victoria-well-too-bad/</link><pubDate>Wed, 02 Sep 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-09-02-had-a-car-accident-in-victoria-well-too-bad/</guid><description>&lt;p&gt;I assume everyone reading this well aware about how the car insurance works and maybe made a few claims in past for minor scratches and parking mistakes. That covers the vehicle damages then any injuries and losses caused to human will be taken care by TAC. Until I recently had my first major car crush in my life, that was all I know about TAC and no question asked for past decade for paying extra dollars for it.&lt;/p&gt;</description></item><item><title>Contract position</title><link>https://blog.han.life/posts/2015/2015-05-13-contract-position/</link><pubDate>Wed, 13 May 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-05-13-contract-position/</guid><description>&lt;p&gt;pros: Market standard is 30% extra compare to similar perm position, pro-rata basis. Can claim expense for pretty much all the things, if there&amp;rsquo;s any.&lt;/p&gt;</description></item><item><title>Unlock Optus ZTE F286</title><link>https://blog.han.life/posts/2015/2015-05-09-unlock-optus-zte-f286/</link><pubDate>Sat, 09 May 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-05-09-unlock-optus-zte-f286/</guid><description>&lt;p&gt;Looks like this phone is getting remarkably popular with Optus Netflix deal.&lt;/p&gt;</description></item><item><title>rpmlib(FileDigests) / rpmlib(PayloadIsXz) is needed</title><link>https://blog.han.life/posts/2015/2015-05-06-rpmlibfiledigests-rpmlibpayloadisxz-is-needed/</link><pubDate>Wed, 06 May 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-05-06-rpmlibfiledigests-rpmlibpayloadisxz-is-needed/</guid><description>&lt;p&gt;This means you are attemping to install a RPM created in CentOS6+ from CentOS5.&lt;/p&gt;</description></item><item><title>gnu parallel</title><link>https://blog.han.life/posts/2015/2015-04-29-gnu-parallel/</link><pubDate>Wed, 29 Apr 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-04-29-gnu-parallel/</guid><description>&lt;p&gt;So I was testing this today and this is the message I saw when I ran it:&lt;/p&gt;</description></item><item><title>Ports for WDS</title><link>https://blog.han.life/posts/2015/2015-03-31-ports-for-wds/</link><pubDate>Tue, 31 Mar 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-03-31-ports-for-wds/</guid><description>&lt;p&gt;Ports for WDS&lt;/p&gt;
&lt;p&gt;Google search said &amp;lsquo;The following TCP ports need to be open for WDS to work across a firewall: 135 and 5040 for RPC and 137 thru 139 for SMB.&amp;rsquo;&lt;/p&gt;</description></item><item><title>Query of the century</title><link>https://blog.han.life/posts/2015/2015-02-05-query-of-the-century/</link><pubDate>Thu, 05 Feb 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-02-05-query-of-the-century/</guid><description>&lt;p&gt;My co-worker showed me this today and it&amp;rsquo;s just gorgeous.&lt;/p&gt;</description></item><item><title>Hue with LDAP doesn't start up after Cloudera Manager upgrade</title><link>https://blog.han.life/posts/2015/2015-02-03-hue-with-ldap-doesnt-start-up-after-cloudera-manager-upgrade/</link><pubDate>Tue, 03 Feb 2015 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2015/2015-02-03-hue-with-ldap-doesnt-start-up-after-cloudera-manager-upgrade/</guid><description>&lt;p&gt;Latest Cloudera Manager omit ldap_username_pattern entry from hue.ini build process.&lt;/p&gt;</description></item><item><title>How to get free credit reports in Australia</title><link>https://blog.han.life/posts/2014/2014-12-11-how-to-get-free-credit-reports-in-australia/</link><pubDate>Thu, 11 Dec 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-12-11-how-to-get-free-credit-reports-in-australia/</guid><description>&lt;p&gt;Generally takes 10 business days.&lt;/p&gt;
&lt;p&gt;1. Experian Drop an email to &lt;a href="mailto:creditreport@au.experian.com"&gt;creditreport@au.experian.com&lt;/a&gt; Attach scanned copy of your driver&amp;rsquo;s license and medicare&lt;/p&gt;</description></item><item><title>Merging multiple avro files into single file using python</title><link>https://blog.han.life/posts/2014/2014-12-02-merging-avro-files-using-python/</link><pubDate>Tue, 02 Dec 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-12-02-merging-avro-files-using-python/</guid><description>&lt;p&gt;Couldn&amp;rsquo;t find any good example from Web so made one by myself.&lt;/p&gt;</description></item><item><title>Catches novated lease company never tell you</title><link>https://blog.han.life/posts/2014/2014-11-07-novated-lease/</link><pubDate>Fri, 07 Nov 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-11-07-novated-lease/</guid><description>&lt;p&gt;Some knowledges I have accuqired from using novated lease for last 2+ years.&lt;/p&gt;</description></item><item><title>CDH 5.2.0 spark history server issue</title><link>https://blog.han.life/posts/2014/2014-10-17-cdh-5-2-0-spark-history-server-issue/</link><pubDate>Fri, 17 Oct 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-10-17-cdh-5-2-0-spark-history-server-issue/</guid><description>&lt;p&gt;5.2.0-1.cdh5.2.0.p0.36 has been released couple of days ago.&lt;/p&gt;
&lt;p&gt;It has a small bug with its spark bit, which make unable to start spark history server.&lt;/p&gt;</description></item><item><title>Simple pull to refresh</title><link>https://blog.han.life/posts/2014/2014-09-30-simple-pull-to-refresh/</link><pubDate>Tue, 30 Sep 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-09-30-simple-pull-to-refresh/</guid><description>&lt;p&gt;1. Get stuffs from &lt;a href="https://github.com/zippy1978/jquery.scrollz"&gt;https://github.com/zippy1978/jquery.scrollz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Add below in head section.&lt;/p&gt;</description></item><item><title>Foreman + Puppet autosign.conf doesn't work</title><link>https://blog.han.life/posts/2014/2014-09-08-foreman-puppet-autosign-conf-doesnt-work/</link><pubDate>Mon, 08 Sep 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-09-08-foreman-puppet-autosign-conf-doesnt-work/</guid><description>&lt;p&gt;Issue: 1. Foreman generates auto sign entry when /provision called first time. (boot loader hit) 2. Once OS is done and call puppet agent run, CSR doesn&amp;rsquo;t get auto-signed. - stays in &amp;lsquo;pending&amp;rsquo; status forever&lt;/p&gt;</description></item><item><title>Log compression for Cloudera Manager Hadoop</title><link>https://blog.han.life/posts/2014/2014-07-04-log-compression-cloudera-manager-hadoop/</link><pubDate>Fri, 04 Jul 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-07-04-log-compression-cloudera-manager-hadoop/</guid><description>&lt;p&gt;Cloudera manager uses standard log4j which doesn&amp;rsquo;t support compression by itself.&lt;/p&gt;</description></item><item><title>Puppet Dell iDRAC control</title><link>https://blog.han.life/posts/2014/2014-07-04-puppet-dell-idrac-control/</link><pubDate>Fri, 04 Jul 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-07-04-puppet-dell-idrac-control/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vg"&gt;$:&lt;/span&gt;&lt;span class="ss"&gt;:manufacturer&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Dell Inc.&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Disable DRAC SNMP&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;racadm config -g cfgOobSnmp -o cfgOobSnmpAgentEnable 0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/opt/dell/srvadmin/sbin:/bin&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;onlyif&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/usr/bin/test `/opt/dell/srvadmin/sbin/racadm getconfig -g cfgOobSnmp -o cfgOobSnmpAgentEnable` -eq 1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Yea, I think onlyif bit is not nice.&lt;/p&gt;</description></item><item><title>Generate Bacula client cert/key pair via Puppet</title><link>https://blog.han.life/posts/2014/2014-05-28-generate-bacula-client-certkey-pair-via-puppet/</link><pubDate>Wed, 28 May 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-05-28-generate-bacula-client-certkey-pair-via-puppet/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec {&amp;#39;generate client key file&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;command =&amp;gt; &amp;#39;/usr/bin/openssl genrsa -out /bacula/bacula-client.key 2048;chmod 600 /bacula/bacula-client.key&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;creates =&amp;gt; &amp;#39;/bacula/bacula-client.key&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;require =&amp;gt; Package[&amp;#39;bacula-fd&amp;#39;],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec {&amp;#39;generate client cert file&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;command =&amp;gt; &amp;#39;/usr/bin/openssl req -new -key /bacula/bacula-client.key -x509 -subj &amp;#34;/C=AU/ST=somewhere/L=somewhere/O=something/CN=something&amp;#34; -out /bacula/bacula-client.cert&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;creates =&amp;gt; &amp;#39;/bacula/bacula-client.cert&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;require =&amp;gt; [ Package[&amp;#39;bacula-fd&amp;#39;], Exec[&amp;#39;generate client key file&amp;#39;], ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec {&amp;#39;combine client key and cert files&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;notify =&amp;gt; Service[&amp;#34;bacula-fd&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;command =&amp;gt; &amp;#39;/bin/cat /bacula/bacula-client.key /bacula/bacula-client.cert &amp;gt; /bacula/bacula-client.pem;chmod 600 /bacula/bacula-client.pem&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;creates =&amp;gt; &amp;#39;/bacula/bacula-client.pem&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;require =&amp;gt; [ Package[&amp;#39;bacula-fd&amp;#39;], Exec[&amp;#39;generate client key file&amp;#39;], Exec[&amp;#39;generate client cert file&amp;#39;], ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Would be nicer if I can send them to backup location but doesn&amp;rsquo;t really matter as there&amp;rsquo;s master key.&lt;/p&gt;</description></item><item><title>Convert .xva to .qcow2 (or raw)</title><link>https://blog.han.life/posts/2014/2014-01-23-convert-xva-qcow2-raw/</link><pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-01-23-convert-xva-qcow2-raw/</guid><description>&lt;p&gt;Figured out while running below work.&lt;/p&gt;
&lt;p&gt;Got the hint from: http://jolokianetworks.com/70Knowledge/Virtualization/Converting_from_Citrix_XenServer_to_Xen_open_source/Xenmigrate.py And got modded .py from: http://pastebin.com/MK5Da8CB&lt;/p&gt;</description></item><item><title>Run Citrix NetScaler VPX from KVM</title><link>https://blog.han.life/posts/2014/2014-01-23-run-citrix-netscaler-vpx-kvm/</link><pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-01-23-run-citrix-netscaler-vpx-kvm/</guid><description>&lt;p&gt;1. Download Hyper-V image and extract .vhd&lt;/p&gt;
&lt;p&gt;2. Covert it via running: qemu-img convert -O qcow2 NSVPX-ESX-10.1-119.7_nc-disk1.vhd NSVPX-XEN-10.1-119.7_nc.qcow2&lt;/p&gt;</description></item><item><title>Bacula daily (or weekly) email report for postgres DB</title><link>https://blog.han.life/posts/2014/2014-01-21-bacula-daily-weekly-email-report-postgres-db/</link><pubDate>Tue, 21 Jan 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-01-21-bacula-daily-weekly-email-report-postgres-db/</guid><description>&lt;p&gt;This now moved to: &lt;a href="https://github.com/logan-han/sysadmin_stuffs/blob/master/bacula_report.sh"&gt;https://github.com/logan-han/sysadmin_stuffs/blob/master/bacula_report.sh&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Dell Chat Support</title><link>https://blog.han.life/posts/2014/2014-01-06-dell-chat-support/</link><pubDate>Mon, 06 Jan 2014 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2014/2014-01-06-dell-chat-support/</guid><description>&lt;p&gt;Sick of telling phonetic code over the phone?&lt;/p&gt;
&lt;p&gt;Try dell chat support here: &lt;a href="http://www.dell.com/support/incidents/us/en/555/chat/tagchange"&gt;http://www.dell.com/support/incidents/us/en/555/chat/tagchange&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Disable msi with minimal interruption</title><link>https://blog.han.life/posts/2013/2013-10-14-disable-msi-minimal-interruption/</link><pubDate>Mon, 14 Oct 2013 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2013/2013-10-14-disable-msi-minimal-interruption/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ifconfig eth0 down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmmod bnx2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;modprobe bnx2 disable_msi=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ifconfig eth0 up
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;route add -net default netmask 0.0.0.0 gw [default gw here] eth0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For bonding interface:&lt;/p&gt;</description></item><item><title>3TB partition support in Linux</title><link>https://blog.han.life/posts/2012/2012-07-31-3tb-partition-support-in-linux/</link><pubDate>Tue, 31 Jul 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-07-31-3tb-partition-support-in-linux/</guid><description>&lt;p&gt;Make a GPT partition:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mklabel gpt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;unit TB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkpart primary &lt;span class="m"&gt;0&lt;/span&gt; -0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;quit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Format with 1% root reservation:&lt;/p&gt;</description></item><item><title>How to increase VM disk size without re-deploy the machine</title><link>https://blog.han.life/posts/2012/2012-07-13-how-to-increase-vm-disk-size-without-re-deploy-the-machine/</link><pubDate>Fri, 13 Jul 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-07-13-how-to-increase-vm-disk-size-without-re-deploy-the-machine/</guid><description>&lt;p&gt;Ref: &lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&amp;amp;docType=kc&amp;amp;docTypeID=DT"&gt;http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&amp;amp;docType=kc&amp;amp;docTypeID=DT&lt;/a&gt;_KB_1_1&amp;amp;externalId=1006371&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[root@demo ~]# fdisk /dev/sda&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;-Create a primary partition-&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# fdisk -l&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Device Boot Start End Blocks Id System
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sda1 * &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="m"&gt;64&lt;/span&gt; &lt;span class="m"&gt;512000&lt;/span&gt; &lt;span class="m"&gt;83&lt;/span&gt; Linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Partition &lt;span class="m"&gt;1&lt;/span&gt; does not end on cylinder boundary.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sda2 &lt;span class="m"&gt;64&lt;/span&gt; &lt;span class="m"&gt;1306&lt;/span&gt; &lt;span class="m"&gt;9972736&lt;/span&gt; 8e Linux LVM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sda3 &lt;span class="m"&gt;1306&lt;/span&gt; &lt;span class="m"&gt;6527&lt;/span&gt; 41942367+ &lt;span class="m"&gt;83&lt;/span&gt; Linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# pvcreate /dev/sda3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# vgextend vg_demo /dev/sda3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# vgdisplay vg_demo | grep Free&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Free PE / Size &lt;span class="m"&gt;10239&lt;/span&gt; / 40.00 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# lvextend -L+40.00G /dev/vg_demo/lv_root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@demo ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# resize2fs /dev/vg_demo/lv_root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Note: I wouldn&amp;rsquo;t do this for any production system as it looks pretty inefficient way to extend volume size.&lt;/p&gt;</description></item><item><title>L2L VPN with ASA - Connection established but no packet coming from one side</title><link>https://blog.han.life/posts/2012/2012-07-05-l2l-vpn-with-asa-connection-established-but-no-packet-coming-from-one-side/</link><pubDate>Thu, 05 Jul 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-07-05-l2l-vpn-with-asa-connection-established-but-no-packet-coming-from-one-side/</guid><description>&lt;p&gt;Symtom:&lt;/p&gt;
&lt;p&gt;1. Connection established.&lt;/p&gt;
&lt;p&gt;2. 0 en/decapsulated packet from one side.&lt;/p&gt;</description></item><item><title>Fix Hadoop leap second bug without rebooting</title><link>https://blog.han.life/posts/2012/2012-07-03-hadoop-leap-second-bug-without-rebooting/</link><pubDate>Tue, 03 Jul 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-07-03-hadoop-leap-second-bug-without-rebooting/</guid><description>&lt;p&gt;Source: http://blog.wpkg.org/2012/07/01/java-leap-second-bug-30-june-1-july-2012-fix/&lt;/p&gt;
&lt;p&gt;Applied our hadoop node having CPU usage issue. (CentOS)&lt;/p&gt;</description></item><item><title>Change iMessage &amp; Facetime phone number in case of verification failure</title><link>https://blog.han.life/posts/2012/2012-06-24-change-imessage-facetime-phone-number-in-case-of-verification-failure/</link><pubDate>Sun, 24 Jun 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-06-24-change-imessage-facetime-phone-number-in-case-of-verification-failure/</guid><description>&lt;p&gt;Happened me after carrier change. Keep picking up SIM build-in number rather than my old number ported in later.&lt;/p&gt;</description></item><item><title>Device credential for Cisco license lookup and transfer</title><link>https://blog.han.life/posts/2012/2012-05-16-device-credential-for-cisco-license-lookup-and-transfer/</link><pubDate>Wed, 16 May 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-05-16-device-credential-for-cisco-license-lookup-and-transfer/</guid><description>&lt;p&gt;&lt;a href="https://tools.cisco.com/SWIFT/LicensingUI/LicenseAdminServlet/licenseLookup"&gt;https://tools.cisco.com/SWIFT/LicensingUI/LicenseAdminServlet/licenseLookup&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;in CLI:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;license save credential flash0:/credentials.lic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;more flash0:/credentials.lic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Try SSH if you can&amp;rsquo;t get full strings from serial connection.&lt;/p&gt;</description></item><item><title>ZeroMQ - PHP client &amp; Python server with multi part message example</title><link>https://blog.han.life/posts/2012/2012-05-02-zeromq-php-client-python-server-with-multi-part-message-example/</link><pubDate>Wed, 02 May 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-05-02-zeromq-php-client-python-server-with-multi-part-message-example/</guid><description>&lt;p&gt;Using pyobj or php data serialisation is not an option in this case..&lt;/p&gt;</description></item><item><title>hubot pandora bot adapter</title><link>https://blog.han.life/posts/2012/2012-04-30-hubot-pandora-bot-adapter/</link><pubDate>Mon, 30 Apr 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-04-30-hubot-pandora-bot-adapter/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Chat&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;pandora&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;anything&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;–&lt;/span&gt; &lt;span class="nx"&gt;PANDORA&lt;/span&gt; &lt;span class="nx"&gt;AI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;QS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;querystring&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;xml2js&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;xml2js&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;robot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;robot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;respond&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;botid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;meh&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;xml2js&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Parser&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;explicitArray&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//www.pandorabots.com/pandora/talk-xml”)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;botid&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;botid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;custid&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parseString&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;that&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>cloudmailin hipchat hubot script</title><link>https://blog.han.life/posts/2012/2012-04-20-cloudmailin-hipchat-hubot-script/</link><pubDate>Fri, 20 Apr 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-04-20-cloudmailin-hipchat-hubot-script/</guid><description>&lt;p&gt;Took really long time to deduce workaround&amp;hellip;  :S&lt;br&gt;
Set cloudmailin as&lt;br&gt;
&lt;a href="http://blah.herokuapp.com/hubot/cloudmailin/room"&gt;http://blah.herokuapp.com/hubot/cloudmailin/room&lt;/a&gt;_id&lt;/p&gt;</description></item><item><title>Python - write compressed log file into HDFS for hadoop hive mapreduce</title><link>https://blog.han.life/posts/2012/2012-03-01-python-write-compressed-log-file-into-hdfs-for-hadoop-hive-mapreduce/</link><pubDate>Thu, 01 Mar 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-03-01-python-write-compressed-log-file-into-hdfs-for-hadoop-hive-mapreduce/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pyhdfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;cStringIO&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StringIO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;binascii&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;snip&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Set hdfs connection info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hdfsaddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;namenode&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hdfsport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12345&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hdfsfn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#gzip compression level&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;clevel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;snip&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Writing&lt;/span&gt; &lt;span class="n"&gt;compressed&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="err"&gt;”&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hdfsfn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#open hdfs file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pyhdfs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hdfs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hdfsfn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#compress the data and store it in compressed_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;buf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;StringIO&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gzip&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GzipFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="n"&gt;wb&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;compresslevel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;clevel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fileobj&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;concatlog&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;compressed_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getvalue&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#write compressed data into hdfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pyhdfs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hdfs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;compressed_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#close hdfs file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Writing&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="n"&gt;finished&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pyhdfs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hdfs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;snip&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Facebook scribe with hdfs</title><link>https://blog.han.life/posts/2012/2012-02-17-facebook-scribe-with-hdfs/</link><pubDate>Fri, 17 Feb 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-02-17-facebook-scribe-with-hdfs/</guid><description>&lt;p&gt;packages:&lt;br&gt;
libevent&lt;br&gt;
hadoop-0.20-libhdfs&lt;br&gt;
JDK for hdfs support&lt;/p&gt;
&lt;p&gt;Boost&lt;br&gt;
&lt;a href="http://sourceforge.net/projects/boost/"&gt;http://sourceforge.net/projects/boost/&lt;/a&gt;&lt;br&gt;
./bootstrap.sh&lt;br&gt;
./bjam&lt;br&gt;
./bjam install&lt;/p&gt;</description></item><item><title>Flume DFO local storage usage check</title><link>https://blog.han.life/posts/2012/2012-01-30-flume-dfo-local-storage-usage-check/</link><pubDate>Mon, 30 Jan 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-01-30-flume-dfo-local-storage-usage-check/</guid><description>&lt;p&gt;It might be useful when flume driver failed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-perl" data-lang="perl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;perl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Check flume DFO directory size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;sub&lt;/span&gt; &lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;($);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;warnings&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$exit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sb"&gt;`du -s flume | awk {‘print \$1’}`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;########################### Usage of the plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;check_flume_backlog&lt;/span&gt; &lt;span class="n"&gt;critical_size&lt;/span&gt; &lt;span class="n"&gt;warning_size&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;######################### Case 1 if State is Critical&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Critical:&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;######################## Case 2 if State is Warning&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Warning:&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;######################## Case 3 if State is OK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$backlog_size&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;OK:&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$backlog_size&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;sub&lt;/span&gt; &lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;($)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$string&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="sr"&gt;s/^\s+//&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$string&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="sr"&gt;s/\s+$//&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;And for centralised monitoring..&lt;/p&gt;</description></item><item><title>Default fixed version value when creating an issue in JIRA</title><link>https://blog.han.life/posts/2012/2012-01-24-default-fixed-version-value-when-creating-an-issue/</link><pubDate>Tue, 24 Jan 2012 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2012/2012-01-24-default-fixed-version-value-when-creating-an-issue/</guid><description>&lt;p&gt;You can try to add some JavaScript code to the field that will perform required operation for you, in this case it should be &amp;lsquo;Fix Version&amp;rsquo; field. You can refer to this documentation as a guideline:&lt;br&gt;
&lt;a href="http://confluence.atlassian.com/display/JIRACOM/Using+JavaScript+to+Set+Custom+Field+Values"&gt;http://confluence.atlassian.com/display/JIRACOM/Using+JavaScript+to+Set+Custom+Field+Values&lt;/a&gt;&lt;/p&gt;</description></item><item><title>delete mplayerx history</title><link>https://blog.han.life/posts/2011/2011-12-30-delete-mplayerx-history/</link><pubDate>Fri, 30 Dec 2011 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2011/2011-12-30-delete-mplayerx-history/</guid><description>&lt;p&gt;&lt;a href="http://code.google.com/p/mplayerx/issues/detail?id=517"&gt;http://code.google.com/p/mplayerx/issues/detail?id=517&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;launch Terminal, and use the command to clear the history - tested.&lt;/p&gt;</description></item><item><title>Atlassian crowd authentication directory address force update</title><link>https://blog.han.life/posts/2011/2011-12-28-atlassian-crowd-authentication-directory-address-force-update/</link><pubDate>Wed, 28 Dec 2011 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2011/2011-12-28-atlassian-crowd-authentication-directory-address-force-update/</guid><description>&lt;p&gt;When you migrate atlassian product (confluence, jira etc etc) to somewhere else, your backup file includes fixed crowd address which is not gonna work for some cases.&lt;/p&gt;</description></item><item><title>Cisco Router config for ACME PACKET</title><link>https://blog.han.life/posts/2011/2011-12-21-cisco-router-config-for-acme-packet/</link><pubDate>Wed, 21 Dec 2011 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2011/2011-12-21-cisco-router-config-for-acme-packet/</guid><description>&lt;p&gt;&lt;code&gt;sip-ua&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;authentication username&lt;/code&gt; &lt;code&gt;-snip-&lt;/code&gt; &lt;code&gt;password&lt;/code&gt; &lt;code&gt;7&lt;/code&gt; &lt;code&gt;-snip-&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;registrar dns:realm.domain expires&lt;/code&gt; &lt;code&gt;3600&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Using additional public ip address over pppoe nat with cisco router</title><link>https://blog.han.life/posts/2011/2011-09-30-using-additional-public-ip-address-over-pppoe-nat-with-cisco-router/</link><pubDate>Fri, 30 Sep 2011 00:00:00 +0000</pubDate><guid>https://blog.han.life/posts/2011/2011-09-30-using-additional-public-ip-address-over-pppoe-nat-with-cisco-router/</guid><description>&lt;p&gt;To allocate router a non-NAT IP (for AWS VPC etc etc)&lt;/p&gt;</description></item></channel></rss>