It was my first time to see a hacker is close to me.
I was flooded with notification emails from Google Adsense subjected “Your AdSense Publisher Policy Violation Report” from yesterday afternoon. I immediately tried to visit either blog.goods-pro.com or goods-pro.com to see what was going on. I got a scary warning message saying either site contains malware by Chrome and Firefox (on desktop. Chrome for Android does not do safe browsing check. I don’t know if Firefox does so.)
It took me a while to find out which site contains malware. As blog.goods-pro.com was using AdSense but goods-pro.com wasn’t, at first I thought it was blog.goods-pro.com that were hacked. blog.goods-pro.com was powered by WordPress, so I went through all the plugins and compared with my other WordPress sites, I didn’t find a suspicious plugin.
Then I started to look into the main domain site goods-pro.com, which was installed with Magento. It took me quite a while for me to know there was a good tool from https://sitecheck.sucuri.net/ to check what malware was on the site.
Then it took me another while to find out how the hacker did it. Basically the hacker compromised one of admin’s (not mine) password, and add the following code in three places (design/footer/copyright, design/head/includes, design/footer/absolute_footer) in Magento System >> Configuration.
hersosx2sk.tk and mytokeasn2s.ru are malware sites. And if a site links to them, it is regarded as malware site as well.
When I disabled access of compromised admin accounts (without removing the injected code), I found Chrome and Firefox stopped giving that scary warnings, and visits to hersosx2sk.tk or mytokeasn2s.ru are redirected to Google. I don’t understand how Google can take control of these domains so quick, but anyway, it is not my business.
At last I removed all malware codes and requested AdSense a review of blog.goods-pro.com.
I have tried almost every VOIP soft phone app on Google Play. Before I found GS Wave, I reckoned Zoiper app was the best soft phone, thus I paid for its premium version to get its premium feature of video call.
However I never got this feature working. I wanted to see the video from my video door phone on my mobile with Zoiper. My video door phone supports H264 video codec but Zoiper supports VP8 unless I pay Zoiper again just for H264 codec . Unlike audio codec while a VOIP server can translate audio codec between clients, video codec is said to be P2P. (There may be a way of video codec translation, but I don’t know how.)
I had video calls working between my video door phone and desktop SIP phones which are “hard phones” with H264 built in. And I had audio calls working on all devices. So I was not desperate for video on Zoiper.
Zoiper has a major defect. It cannot stay online 24/7 on latest Android version (I tested on two Huawei Mate 8 and one P9) or iOS. Many times status bar shows it is online but actually it is not reachable. Zoiper was reliable on Android 4.x.x. I guess Zoiper “forgets” to re-register itself when OS goes into sleep. For above reasons I am reluctant to pay Zoiper any more money.
Recently I visited Fanvil website and discovered Fanvil had developed a soft phone called “Vdroid” for free download. To my surprise, Vdroid integrated G729 audio codec and H264 video codec. They are premium codec as on Zoiper. (Later on I learnt G729 patent expired on 1st Jan, 2017 but Zoiper is still selling G729 for money. I knew nothing about H264.) However Vdroid has too many bugs and is not a mature software.
Then I thought other VOIP device manufacturers might have their own soft phones for public. I checked Grandstream, Yealink and Cisco but only found Grandstream generously offering GS Wave. GS Wave has both Android and iOS version, and both works reliably, and both has G729 and H264 built in for free! I cannot wait any longer to recommend GS Wave to everyone. Google Play is overwhelmed by other apps for search results of “sip” or “voip”, and GS Wave is nowhere in the ranking. But trust me, it is the best one.
贯穿楼层我只铺了一根馈线，当发现 AP 的双频是分路输出后，我开始寻找双频合路的元器件。可是这么专业的东西不好找啊，万能的淘宝确实有卖，但只有一家，似乎卖家已黄了，总不在线。百度百科上说功分器就是合路器，我就尝试反用了腔体功分器将双频合路，激动地发现这么廉价的元器件和简单的方法也能成功合路传输双频信号。于是感慨三件事：百度也有靠谱的时候、便宜也有好货、实践出真知。前二者未必总是为真，但第三者永远正确。
正嗟叹中，朋友告诉我，华为应用商店里就有 Google 框架下载，安装好就能像国际版一样用 Google 服务了。有这等好事？我想起之前 Grandstream 也是如此迂回战术，但没想到华为也会。我赶紧上华为应用商店看，还真有一个叫”谷歌框架安装神器”的应用。我拿老妈的一个国行手机试了试，很顺利地装上了 Google 框架。我又拿它来给 Fanvil D900 Android IP Phone 安装 Google 框架，也很顺利安装成功（安装之前要 root D900）。D900 买了两年，一直觉得是鸡肋，就是因为它无法用 Google 服务，当时我频繁联系了 Fanvil 技术支持，他们给我发了好几个 firmware 去更新，都没有成功装上 Google 框架，后来我自行放弃。如今被华为的”谷歌框架安装神器”一举解决，我怎能不兴奋。（不过今天后来我在 Fanvil 官网上下了最新的 D900 firmware，更新后发现此次的 firmware 已带有 Google 框架，只是 Google Play 未安装，但在根目录下存了一个 Google Play 的 apk，安装一下就好了，也无需 root。）
总之，华为能提供 Google 框架，让我对入手国行华为手机再无顾虑。顺便我看了看小米应用商店，没有提供 Google 框架，那就多劝人不要买小米呗。
我发现在 Windows 下我无法上传文件到 Google Drive。我用的是 FireFox，提示的错误信息是 “Server rejected”。一开始我以为是 Google Server 停摆了，但转用 Fedora 下的 FireFox，一切正常。我不信邪，又在 Windows 下尝试上传各种后缀的文件，.jpg, .doc, .pdf 都试过了，全部失败。
我很少在 Windows 下操作，也不知道这个问题存在多久了。难道是 Google 跟 Microsoft 叫劲，给 Windows 用户一点颜色看看？我觉得 Google 不至于干损人不利己的事，但我不确定。于是我试图改变 Windows 下 FireFox 的 User Agent，在 about:config 里新建了一个名为 general.useragent.override 的字串，值为 Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0。
这样 FireFox for Windows 看上去象 FireFox for Linux 了。
可是，Google Drive 依然是 “Server rejected”。证实 Google 并没有区别对待 Windows 用户。
接着，我继续研究了一下 FireFox 无法上传文件的原因，看来是多账户登录 Google 后的偶然结果。有人说是无法上传至默认账户以外的账户，但我亲自试了一下，这个说法也不准确。看来不要在这个问题上过于纠结，清空一下浏览器历史，一切都正常了。
I took several pictures when I visited University of Brighton a while ago. I did not mean to make them into a panoramic scene at that time. I just stood by the road and took several random pictures. And today, when I am looking through my Google+ photos, I find this picture. Google+ automatically made a panoramic picture for me.
Looking at this picture, I am shocked, because I can not find the seam. I have tried to make panoramic pictures before via different methods: integrated function of a camera, a software, a smartphone with 3-axis geomagnetic sensor. None of them came up such a good result even when I shot photos with a tripod.
So I am wondering if this is a viable approach for a even better result:
Shot photos with a SLR camera on a tripod.
Transfer the photos to an Android phone.
Will Android upload the photos and Google+ make a panoramic picture?