Saturday, November 29, 2014

Error occurred while loading visualforce page.错误:加载 Visualforce 页面时出现错误


problem现象:
While using the visa interview appointment system (cgifederal.secure.force.com),
keep running into "Error occurred while loading visualforce page." after the time window selection page.
And the error page shows up no matter what OS/browser you use.

在使用签证面试预约系统(cgifederal.secure.force.com)时,
总是在选择完时间的页面之后遇到"错误:加载 Visualforce 页面时出现错误"的报错页面。
而且不管切换到什么操作系统活着浏览器都无法解决。


cause原因:
Someone added you as their dependent(family member who're going to take the interview together) in their unfinished appointment.
可能有人在另外一份没有完成的预约草稿中将你添加为了一起通行签证的人(家庭成员可以一起面签).


fix搞定:
- Delete you from that(theirs) unfinished appointment draft at step 6.
- Come back to your appointment, you may find many fields in your form are reseted.
- Finish your appointment, you will see appointment confirmation and appointment invoice after the time window selection page.
先从那一份没有完成的(别人的)面签预约程序的第六步中将你删除。回到你自己的面签程序中,选择完要面签的时间窗口,你会看到面签确认页和已缴费的条形码。

Samsung S5 can not get new Gmail or Hangout message while using mobile data

Problem description: In Mobile network(3G/4G data), you cannot receive "server pushed message", applications such as Gmail, Google hangouts whose who heavily relay on this "server push" technology(Google Cloud Message) can not work properly, no new message can be received.
- but, you can manually pull email by "refresh" button in Gmail app.
- after switch to Wi-Fi, no no problem at all.


Fix: Settings -> Data usage -> upper right corner(a 3-dotted button) ->
- make sure the "restrict background data" is unchecked,
- if it's already unchecked when you seen it, check it, then uncheck it. (UI and underneath setting may mismatched)

Wednesday, November 19, 2014

private docker registry push issue: Invalid registry endpoint

I ran into the problem during pushing an image to my private docker registry. It's the first time pushing after I upgrade my docker client to v1.3.1

2014/11/19 15:55:06 Error: Invalid registry endpoint https://docker.xxx.com/v1/: Get https://docker.xxx.com/v1/_ping: dial tcp 184.xx.xxx.xxx:443: i/o timeout. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry docker.xxx.com` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/docker.xxx.com/ca.crt

Since I'm running docker via boot2docker, docker instance actually is managed by boot2docker. I have to add parameter --insecure-registry to somewhere in the boot2docker virtual machine.

Here's the official solution: (https://github.com/boot2docker/boot2docker#insecure-registry)

Insecure Registry
As of Docker version 1.3.1, if your registry doesn't support HTTPS, you must add it as an insecure registry.
$ boot2docker init
$ boot2docker up
$ boot2docker ssh
$ echo 'EXTRA_ARGS="--insecure-registry <YOUR INSECURE HOST>"' | sudo tee -a /var/lib/boot2docker/profile
$ sudo /etc/init.d/docker restart



--- update 1: ---

To add HTTPS support for your private docker hub,
1, install nginx
apt-get install nginx

2,
rm  /etc/nginx/sites-enabled/default 

3, add nginx profile `docker` under /etc/nginx/sites-enabled/
suppose your docker hub application listening on 80
server {
    listen 443 ssl;
    ssl on;
    ssl_certificate YOURCERT.crt;
    ssl_certificate_key YOUR_PRIVATE_KEY.pem;

    client_max_body_size 0;
    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect http:// https://;
    }
}
make sure you added
client_max_body_size 0;
, this setting will allow you to upload images(POST data) >1M.

4, restart nginx
service restart nginx


5, try to browse your docker hub by both HTTP and HTTPS. No error or warning should be seen.


--- update 2: still see certificate warning ---
you're probably using intermediate CA, you need to put root CA and intermediate CA together(concat them) in the .crt file.

~~~~


Wednesday, November 5, 2014

USCIS case monitoring app

I created an USCIS case tracking application on Google App Engine recently.

http://case-monitoring.appspot.com/

For those who are waiting for their USCIS case decisions, whatever it's a visa case or an immigration case, the application can track it as well.

Due to the resource quota on Google App Engine, the tracking app refreshes your case status every 6 hours and each user is able to track up to 2 cases.
Once your case got an update, you will get an Email notification.

You will be asked to login with Google account, no private data will be stored except your email address which is used for notification purpose.

Wish all your USCIS cases get approved ASAP

Tuesday, April 8, 2014

patch for openssl heartbleed bug on Ubuntu

Install update


apt-get update
apt-get install openssl libssl1.0.0

Check libssl version

root@hydrausdev:~# dpkg -l|grep libssl
ii libssl-dev 1.0.1-4ubuntu5.12 SSL development libraries, header files and documentation
ii libssl-doc 1.0.1-4ubuntu5.11 SSL development documentation documentation
ii libssl1.0.0 1.0.1-4ubuntu5.12 SSL shared libraries

Restart Nginx/Apache



Verify

by online tool: http://filippo.io/Heartbleed/

Friday, March 28, 2014

Install MySQL library for python on MacOS

Both clang and gcc in latest xcode command line tool have some problem while compiling MySQL-python
An error say "unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]"

Here's the problematic gcc and clang version
ffmb13:~ fanfei$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

ffmb13:~ fanfei$ clang -v
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

To work around the issue, we can set environment variable ARCHFLAGS during the compiling.
brew install mysql
su
export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"
pip install MySQL-python

Wednesday, January 8, 2014

form label missing in Django 1.6?

You may used the monkey patch to add attrs during the form rendering.

e.g. add attribute "class" for all form labels, as this article said.
http://ask.make-money-article.com/que/2028404
def add_control_label(f):
    def control_label_tag(self, contents=None, attrs=None):
        if attrs is None: attrs = {}
        attrs['class'] = 'control-label'
        return f(self, contents, attrs)
    return control_label_tag

BoundField.label_tag = add_control_label(BoundField.label_tag)
If you had used this "solution" in your application, you may find the field names(control labels) are missed in admin site since Django 1.6, a form without label.



This is because the function .label_tag you hooked had been changed! Now, it receives an additional parameter label_suffix

Django 1.5
https://github.com/django/django/blob/1.5.5/django/forms/forms.py#L498
def label_tag(self, contents=None, attrs=None):
Django 1.6
https://github.com/django/django/blob/1.6/django/forms/forms.py#L515
def label_tag(self, contents=None, attrs=None, label_suffix=None):
So, you have to either add label_suffix in control_label_tag or use variable arguments like following slice.
def add_control_label(f):
    def control_label_tag(self, contents=None, attrs=None, *args, **kwargs):
        if attrs is None: attrs = {}
        attrs['class'] = 'control-label'
        return f(self, contents, attrs, *args, **kwargs)
    return control_label_tag

BoundField.label_tag = add_control_label(BoundField.label_tag)