「こいかの」の逗X

多图杀猫

查看更多

分享到 评论

M

完了,四个都成了黑历史。找出了明显的翻译错误……我说怎么读都读不通……


09-19

学校网络最近总是时好时坏,坏的时候只能顺畅打开百度首页和博客园,其他的126啊Bangumi啊B站啊GH啊全都连接超时。


Python 对新手很不友好,这是它留给我的第一印象,虽然很多人说入门语言应该选 Python。隐式的类型推断(但是执行时是强类型)让智能感知很费劲。

我选用的 IDE 是 PyCharm。想从一个简单的示例入手:

1
2
3
import urllib2
url = "http://www.baidu.com/"
response = urllib2.urlopen(url)

到此为止,都是能从名称中看出来的。但是当我尝试使用 reponse 的时候,敲下“.”却没有任何提示——我根本就不知道它返回的类型是什么。是字符串吗?应该不是,至少要有一个网络错误时的 fallback 吧。如果是一个类,公开了哪些方法呢?看不出。

后来我从网上看到 urllib2 的使用,后面是

1
print response.read()

突然就冒出一个 read() 方法。由此又得想,如果我只需要读取一部分数据呢?如果网络状况不佳导致超时呢?Python 肯定提供了相关的机制,可是根本就看不到。

去看 Python 的 urllib2 文档,关于 urlopen() 方法是这样描述的:

This function returns a file-like object with three additional methods:

  • geturl() — return the URL of the resource retrieved, commonly used to determine if a redirect was followed
  • info() — return the meta-information of the page, such as headers, in the form of an mimetools.Message instance (see Quick Reference to HTTP Headers)
  • getcode() — return the HTTP status code of the response.

这才知道,原来返回的是一个和普通文件类似的 object。那么文件对象有什么成员呢?

1
f = open("")

然后查看 f 的成员,才能看到文件对象的成员。很不幸,如果我要使用的话,必须要记住每个常用类型的成员,如果是函数还加上签名,要不由 urlopen() 返回的东西在 PyCharm 眼中就是白板,根本就不知道怎么用。也就是说,如果我现在要去写 Python,要不智能感知就得做好一点,要不就得抱着整个文档去查。

VS + IronPython 还没有尝试,不过估计会好一些。

VB 和 VB .NET 有着强大的延迟绑定(late binding)能力,后来 C# 4.0 中引入了 dynamic。这功能我总觉得是烫手山芋,因为如果没有目标的文档根本就难以开发和维护。例如:

1
2
3
4
5
Dim o As Object
' VB 语法
Set o = CreateObject("Excel.Application")
' VB .NET 语法
o = CreateObject("Excel.Application")

接下来知道怎么干些什么吗?不知道,因为此时 o 的类型还是普通的 Object,不带具体的成员信息。相比之下,如果引用了类库,强类型化后再操作就好多了:

1
2
3
4
5
6
7
' VB 在工程中添加对 Excel 的类型库引用即可
' VB .NET 在工程中添加对 Excel 的互操作程序集引用之后,在使用其的文件内写上这一行
Imports Microsoft.Office.Interop.Excel

' 使用上是相同的
Dim o As New Excel.Application()
o.Quit()

剩下就好办了。因为类型是契约(contract)的一种(我指的不只是接口意义上的契约),有了明确引导后沟通就方便多了。例如,PHP(PhpStorm 下)和 JavaScript(WebStorm 下)都可以在注释中指定类型来影响智能感知的行为:

1
2
3
4
5
6
7
8
9
10
/**
* @var string $host
* @var string $username
* @var string $password
* @var string $database
* @var int $port
* @var mysqli $mysqli
*/
$mysqli = new mysqli($host, $username, $password, $database, $port);
echo $mysqli->connect_error;

当你输入“$mysqli->”的时候,就会弹出合适的自动完成列表。这样很适合在类型不熟悉的时候帮助探索。

分享到 评论

Bulletproof 20150920 - Pixi.js 初次融合

效率很高,但是部分效果很惊悚。

推送到了 pixi 分支:https://github.com/Hozuki/Bulletproof/tree/pixi。

效果请展开查看。


Visual Studio 2015(自带 IronPython 和 Python Tools for Visual Studio)在上一篇日志中的同一个测试下表现很好。

嗯,不过对于即时的键入,和内置方法的完成有点缺陷。例如同一个示例,如果我在后面新行输入“ur”,PyCharm 会提示输入“url”,但是 VS 没有反应;PyCharm 会内置一些方法数据,如 __INIT__、__ADD__,VS 没有提示。

查看更多

分享到 评论

Bulletproof 20150917-0

9月17日凌晨的脑洞,有可能能优化 Canvas2D 版的实现

查看更多

分享到 评论

再见,CSS Shader (CSS Custom Filter)

按照杨彦君的提议,如果支持 CSS Shader(现名 CSS Custom Filter)的话,应该可以大大减轻绘制的工作强度。

但是实际应用中,上面的文章中的示例根本没有起到效果。查看元素发现,-webkit-filter: custom 被自动禁用了。

有人尝试用 WebGL 计算 CSS Shader,不过很不幸,其中需要用到 html2canvas,而且只能进行静态的渲染(也就是说,渲染是手工控制的,不是应用样式后自动进行的),改变一下 DOM 元素就知道,完全是图像平面的顶点/贴图变换。

话说 CSS Shader 是有安全问题的。一封 WebKit 开发组的邮件表明,Chrome 很久之前就已经不再支持相当部分的 CSS Shader 了。

本来这个草案是由 Adobe、Apple 等联合提议的。Adobe 还专门有介绍提议的文章和介绍 CSS FilterLab 的文章(CSS FilerLab 是 Adobe 用于测试开发 CSS Shader 的网页工具)。CSS FilterLab 里面的工具链接早已跳转到其 GitHub 页面。而这个项目的状态看起来不管是代码更新还是 issue 都停留在了两年前。

真是悲惨。想到还是得用 Three.js 我汗毛都立起来了。

分享到 评论

新闻:MSBuild 要开始跨平台移植了(旧闻)

今天被学校的一个小工具折腾得不行,想自己写一个(毕竟都知道原理了)。打开 Visual Studio,映入眼帘的是刷新的新闻。9月3日发布,过了快两周我才看到……

MSBuild 三月开放了 GitHub repo,现在已经得到了大量的社区支持。下一步 MSBuild 就要开始跟着 .NET Core 跨平台了。由元数据(metadata)驱动(毕竟 CLR),MSBulid 本来就有良好的依赖管理能力(不用像 CMake 那样手工写一堆),而且充分利用多核处理器(这个或许 CMake 有,我没关注过)。微软计划将为其添加云构建的支持——很令人兴奋,如果和 .NET Native 技术结合的话对于应用而言编译就成了轻松快捷的事情——虽然我在想应用到大型软件上效果也会不错的。

很久以来微软都被开源社区(主要是某些 hardcore 的 geeks)称为 M,博导也一直叫我“不要被M,博导也一直叫我“不要被M控制,快跳到 Linux”。自从 .NET Core 和 BCL 宣布开源之后,微软给人的印象是越来越好了。

叫嚣“M$”的人,否定了他人的选择权利。你用 C++ 和 Python,我偏爱 C#;你喜欢命令行,我认为 GUI 比较便利(又不是不能用 CLI)。有错吗?为什么要歧视呢?就和几乎被所有人鄙视的 Visual Basic(我指的是 VB .NET 之前的 VB),都其实能做一些很漂亮的 hack,只不过异常晦涩难懂罢了。CLR 上的语言照样可以写操作系统。

Mono Project 的苦战也好,微软在趋势冲击下的拥抱开源策略也好,都是值得称赞的。

分享到 评论

Bulletproof 20150914 - SVG-Canvas 融合测试不那么尽如人意

Bulletproof 的 SVG-Canvas 融合测试不那么尽如人意,测试分支在 https://github.com/Hozuki/Bulletproof/tree/deprecated-svg-canvas。

查看更多

分享到 评论

POH

查看更多

分享到 评论

Bulletproof 20150913-1

晚上开了一下脑洞,从最基础的 JavaScript Image Processing 开始找起,发现了有趣的东西。性能瓶颈有可能可以突破。具体等待明天(今天?)实验,然后将过程与结果记录下来。

分享到 评论

Bulletproof 20150913 - VS Code 尝试,与代码重整背后的 TypeScript 编译

VS Code 尝试,与代码重构(算得上么)时发生各种事情,追根溯源看的 TypeScript 编译

查看更多

分享到 评论

杂事2:Three.js 试水和其他小事情

Three.js 尝试修改两个示例,翻译黑历史

查看更多

分享到 评论

杂事

歌词翻译通过后又发现囧事(新黑历史决定),尝试 Unity 5.2

查看更多

分享到 评论

Bulletproof - 20150909

推了三个小更新。

试验品肯定要先拿《干杯》的神字幕开刀。

上次不是说过我忘记测试字幕(那个绿坝娘)来自哪里吗?百度,百度,百度,但是就是找不到。(关键词:bilibili 2012 拜年祭 干杯)翻 ABPH5 和 CCL 的附带页面也找不到。思路还是回到kanoha,翻评论,仔细翻。终于找到了,av411358。这里是弹幕本体。费了好大劲之后发现,我以前保存过,不过没附AV号……

准备转向测试新方案。


另外,为什么网易那边的歌词还没审核通过……难道歌词和翻译是两部分人负责?我的翻译稿是要配合有时间轴、正确断句(配合句意&歌曲)的歌词才行的……

分享到 评论

Bulletproof - 20150908-2

滤镜在 Bulletproof 中的应用,算法选用

查看更多

分享到 评论

Bulletproof - 20150908-1

代码已推送。

小圆脸的示例请展开查看。

查看更多

分享到 评论

Bulletproof - 20150908

即将完成的发光、模糊滤镜与灵感来源

查看更多

分享到 评论

奈亚子的各种捏他

奈亚子(动画)出现的各种捏他

查看更多

分享到 评论

Haaaaaah

下午翻译了三首歌。现在 Girls, Be Ambitions. 的翻译已经通过了。另外两个正在审核原文歌词(我把能看出来的一些问题改了),通过后再上传翻译稿。

好累。

查看更多

分享到 评论

Bulletproof - 20150906-2

睡前来一发,写了简单的 MotionGroup(忽略了 easing 函数,暂时只实现线性——其他的其实在函数库有了,处理再说吧,反正要睡觉了)。

于是可以流畅运行小圆脸和绿坝娘的demo了。

效果(GIF)请展开阅读。

查看更多

分享到 评论

Bulletproof - 20150906-1

解决了之前重绘重影、效率低的问题;对 VS+NTVS vs. WebStorm 的评论

查看更多

分享到 评论