2019年BBC睿思讲座 – 法律的扩张与政治的衰落

终于翻译完了这个系列,的主体部分,问答部分还没有完成,另外也还需要一些注释。

Commentary on Lord Sumption’s Reith Lectures

但是阶段性工作完成,可以稍微总结一下。

讲座一共五个部分,第一部分,法律帝国中的扩张(Law’s Expanding Empire),探讨在公共生活中,法律裁决越来越成为常态,留给个体选择的空间越来越小。主讲人指出,有两个原因导致这种现象:其一是人们在很多问题上寻求法律所产生的一致性;其二是对安全感的需求越来越高,导致人们主动要求立法,让渡自己的自主权。主讲人认为法律已经侵入公共和私人空间太多,对民主造成伤害。

继续阅读2019年BBC睿思讲座 – 法律的扩张与政治的衰落

写在前面的话

上周翻书柜,又翻出这本《From mathematics to generic programming》,再到亚马逊上一搜,果然还没有中文版。我是Alexander Stepanov的粉丝,书一出来我就上美亚买了,就是打算翻译的。

买回来之后尝试翻译了几章,然后找了XX出版社,出版社看了告诉我说他们已经签了版权了,估计6个月中文版就出来了,于是只好撂下了。哪知道如今快两年过去了,中文版也还没影。

这几天我会跟作者联系,看看版权到底是个什么状态,同时会在这里放出以前翻译的草稿,欢迎批评指正。

 

 

Writing Pix4D compatible tags into pictures

If you’re looking for a method to write camera pose information into JPG files so that it can be read by Pix4D, as shown in the below screenshot:

pose_info

Here is how to do it with exiftool:

  • First, you need a configuration file for exiftool. In the configuration file, you need the following content:
%Image::ExifTool::UserDefined = (
    'Image::ExifTool::XMP::Main' => {
        Camera=> {
            SubDirectory => {
                TagTable => 'Image::ExifTool::UserDefined::Camera',
            },
        },
    },
);
%Image::ExifTool::UserDefined::Camera = (
    GROUPS => { 0 => 'XMP', 1 => 'XMP-Camera', 2 => 'Other' },
    NAMESPACE => { 'Camera' => 'http://ns.flyingfishtechs.com/Camera/1.0/' },
    WRITABLE => 'string',
    GPSXYAccuracy=> {},
    GPSZAccuracy => {},
    Pitch => {},
    Roll=>{},
    Yaw => {},
 );
  • Then you can using exiftool to add the information to any JPG file.
exiftool.exe -config config.min.cfg -Pitch="1.02" -Roll="2.03" -Pitch="3.04" original.jpg

If the command outputs: 1 image files updated. Then you’re done. Now the JPG file has the camera pose information encoded in. If you have more than 3 such pictures (only because Pix4D needs at least 3 pictures to work), you can see that Pix4D can get the data from the pictures.

The final twist, Pix4D displays Omega, Phi and Kappa instead of Pitch, Roll and Yaw. Basically, Pitch, Roll and Yaw are angles relative to the horizontal plane – orthogonal to the gravity while Omega, Phi and Kappa are related to earth. That means, with a fixed set of Pitch, Roll and Yaw, if you change your GPS location, you’ll get a different set Omega, Phi and Kappa. Personally I don’t see why should Pix4D use earth as the frame of reference instead of horizontal plane. Maybe just to hide the raw information in the pictures. Anyway, know you know how.

AC-3 support gets back again in VLC for iOS

A year ago, VLC on iOS was forced to remove its support for AC3 codec. I found almost all my videos on iPad were muted.

Since then, I haven’t bothered to check other options. I don’t mind paying a few dollars but I’ve been using VLC since years on all of my computers and mobile phones. There’s simply no other comparable alternatives that works equally well on Windows, Linux, OS X as well as iOS.

Today, I opened VLC on my iPhone again and noticed that I can play my videos with sound again! I checked the official website for sure and got this:

https://forum.videolan.org/viewtopic.php?f=36&t=124115&sid=c0ad097c62e429e8e5fe5f68aa14fc54&start=20#p441786

The link on iTunes also confirmed this. However, nowhere did I find details how did the developers solved the patent issue. Let’s hope it’s fixed for good.

中国古诗文

正在考虑建立一个中国古诗文网站,目的是给孩子看,类似于《唐诗三百首》和《古文观止》,内容也多从其中来。特色在于:

  • 在内容上,以原文为本。不要译文,基本没有注释。
  • 在布局上,以内容为主,去除一切干扰因素。要求干净,大方。
  • 各古诗文名家作者就是blog作者,既直观有趣,又方便组织。

需要做的工作:

  1. 开发批量插入作者的功能——已完成;
  2. 开发批量插入帖子的功能——已完成;
  3. 建立分类目录:需要专业人员帮助。
  4. 开发新的数据结构以存储传统计时方式:朝代,年号,年号纪年,公元纪年,季节,时令,时辰。
  5. 扩展帖子属性,其中帖子发表时间采用新的数据结构。
  6. 扩展作者属性,其中作者生卒时间采用新的数据结构。
  7. 修改界面,使帖子能够显示传统计时(年号,天干地支)。

当前状态见这里:http://gushiwen.genglinxiao.com/

中国地图坐标(GCJ-02)偏移算法破解小史

2006年,Google开始与AutoNavi合作使用后者所提供的中国地图。这应该是外企首次接触到这个问题。

从2009年开始,中国地图的坐标偏移开始为外界所知。Garmin的用户发现在美国购买的GPS到了中国几乎无法使用,而在中国购买的Garmin产品则没有问题。Google Maps API的使用者发现兴趣点无法被准确标注在中国地图上。更有意思的是,有用户反复就此报告bug给Google,却从未得到任何回应。类似的,Garmin也声称自己没有解决方案,建议客户在需要的情况下在中国境内购买GPS设备。

于此同时,各路豪杰开始尝试破解这种偏移算法。其中有两条路径值得注意:

2010年1月,网友wuyongzheng发现:

I accidentally found the Chinese version of Google Map ditu.google.com to be able to correlate satellite image with map, and it gives the amount of deviation for any location in China. This URL queries the deviation of 34.29273N,108.94695E (Xi’an): http://ditu.google.com/maps/vp?spn=0.001,0.001&t=h&z=18&vp=$34.29273,108.94695 (seems it’ doesn’t work now)

有了足够的数据,wuyongzheng建议使用回归算法来逼近这个偏移算法:https://wuyongzheng.wordpress.com/2010/01/22/china-map-deviation-as-a-regression-problem/

在此之前的尝试都是零星的,针对个别城市的。wuongzheng的这个建议算是在全面系统地解决这个问题上迈出了第一步。

2013年5月,Maxime Guilbot根据这个建议得到4-5米精度的逼近:

https://github.com/maxime/ChinaMapDeviation

2013年10月,wuyongzheng自己进行了回归,得到如下结果:

http://wuyongzheng.github.io/china-map-deviation/paper.html

Maxime Guibot和wuyongzheng的回归结果基本代表了在黑暗中摸索的最佳结果,因此得到了广泛的注意和应用。

在另一条路径上,2010年4月,emq project增加了一个文件,Converter.java:

http://emq.googlecode.com/svn/emq/src/Algorithm/Coords/Converter.java

这段代码可以以很高的精度把WGS-84坐标转换到GCJ-02坐标。

2013年2月,这段代码被网友coolypf注意到,整理后用到了他自己的项目中:

https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936

其中的关键代码值得贴在这里:

        const double pi = 3.14159265358979324;

        //
        // Krasovsky 1940
        //
        // a = 6378245.0, 1/f = 298.3
        // b = a * (1 - f)
        // ee = (a^2 - b^2) / a^2;
        const double a = 6378245.0;
        const double ee = 0.00669342162296594323;

        //
        // World Geodetic System ==> Mars Geodetic System
        public static void transform(double wgLat, double wgLon, out double mgLat, out double mgLon)
        {
            if (outOfChina(wgLat, wgLon))
            {
                mgLat = wgLat;
                mgLon = wgLon;
                return;
            }
            double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
            double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
            double radLat = wgLat / 180.0 * pi;
            double magic = Math.Sin(radLat);
            magic = 1 - ee * magic * magic;
            double sqrtMagic = Math.Sqrt(magic);
            dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
            dLon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);
            mgLat = wgLat + dLat;
            mgLon = wgLon + dLon;
        }

2013年3月,coolypf在自己的博客中介绍了这一段代码:

http://blog.csdn.net/coolypf/article/details/8686588

2014年9月,wuyongzheng注意到了coolypf的项目。至此,两条路径合流,坐标偏移问题基本得到了完美解决。

从上面的代码可以看出,相对于WGS-84,GCJ-02一方面采用了不同的参考椭球体(SK-42, Krasovsky。应该属于前苏联影响的遗留),另一方面引入了高频非线性偏移。

笔记

搜索神经网络的最新进展,看到wiki上说:

Between 2009 and 2012, the recurrent neural networks and deep feedforward neural networks developed in the research group of Jürgen Schmidhuber at the Swiss AI Lab IDSIA have won eight international competitions in pattern recognition and machine learning.[12][13] For example, the bi-directional and multi-dimensional long short term memory (LSTM)[14][15][16][17] of Alex Graves et al. won three competitions in connected handwriting recognition at the 2009 International Conference on Document Analysis and Recognition (ICDAR), without any prior knowledge about the three different languages to be learned.

http://en.wikipedia.org/wiki/Artificial_neural_network#Improvements_since_2006

赶快搜索了Jürgen Schmidhuber,然后看了一些视频,居然又联系到了Kolmogorov complexity,深度学习,可计算宇宙,智能,创造力,以及Gödel。。。。现在脑子还是一团浆糊,不过隐隐感觉到Jürgen可能会改变历史。。。。至少他的演讲很有趣: