about 2 years ago

Head

嘻嘻,记一下昨天(20150221)练钢琴的 log.
工具是手机的秒表,以及小本子:

  • 练习和计时同时开始;
  • 每练完一个阶段(或开始下一个阶段(这里的「或」是 exclusive 的,即「要么 p 真 q 假,要么 p 假 q 真」))时,点一下 lap(记圈儿),然后在小本子上记一下该阶段干了什么。
  • (窝不喜欢写「计划下一阶段要干什么」,因为经常偏离主题,神游物外)

Body

21 点多开始。

阶段(「圈数」) 事项 时长
1 哈农("1312 1312 1656 4534") 01:54
2 哈农("3423 1345 6565 6543") 01:50
3 12 个大调音阶练习 06:55
6 自编的手指练习("3454 5343", 仅用 3-4-5 指, 3 遍) 05:07
7 哈农("1878 6858 4838", 2 遍) 04:08
8 La valse d'Amélie 复习到「自己满意」 14:45
9 某 QM(1~20 小节, 高声部复习) 05:57
11 某 QM(21~47 小节, 高声部右手基本满意, 左手 TODO) 01:16:59
12 某 QM(1~47 小节, 高声部串一遍) 04:05
13 Comptine d'un autre été 复习 03:16
14 One Man's Dream 熟悉 3 遍 07:45

有些「圈数」漏掉,是因为误触了秒表的 lap 键。
秒表显示总时长 2:14:43.35。23 点多结束。
青年小李表示从来没有弹过这么久。
哦不,是在家没弹过这么久。大一大二大三混进宏福珍贵琴房的时候,是一定要弹到时间不允许或生理上受不了的。sigh

Script

NEXT(

  • 要事为先……
  • 练习要更模块化。先单手,放慢 -.-
  • E♭ 音阶的指法看一看……
  • 秒表数据导出 + convert to markdown
  • 「事项」列拆分,列名语义化

)

写作用的 领域符号整理 给自己看的

练习 熟悉 复习 演奏
正确化 感情化
曲目(演奏参数列表) 遵循编程习惯用半角括号逗号引号
曲目编号 太local太private
3-4-5 // 哈农记法

Side Note

昨天还:

  • 练了两小时台球(炸裂!八球桌原价 ¥35/h,美团上 ¥19.9/2h),享受摆球服务w
  • 学习了炒菜花 -。- 试图优化刷锅洗碗流程
  • 开始玩 Jubeat(iOS)
  • 在去打球的路上(15 min)胡思乱想道:

一个工作流程
如果太复杂
窝就不会去用它

一个工作流程
如果不去用它
它就屁用没有

 
over 2 years ago

编辑历史

20141231 init
20150103 merge q 同学的补充,在文末

正文

Stephen Wolfram 博士,2014 年 12 月 29 日在北京师范大学京师学堂第七会议室举行了讲座,主题是 "The Future of Computation & Knowledge".

Stephen Wolfram 是 Wolfram Research 公司的创始人和 CEO。他和他的公司创造了 Mathematica, Wolfram|Alpha 和 Wolfram Language. 他的著作 "A New Kind of Science" 记述了他的基于元胞自动机的系统理论.

这场在北师大的讲座是 Stephen Wolfram 跨年访华之行的第一站,也是他第一次来中国。接下来的行程是 12 月 30 日清华大学,1 月 3 日西安理工大学,1 月 5 日上海交通大学。详见 http://weibo.com/p/100808501780651d8ccbd49a83dd7545ef383e

(啊!这阮一峰先生式的开头……)

好吧,这篇文字的主要目的是,整理我听讲座时的记录,在一定程度上复原讲座现场的 replay,以便让没能到场的 Mathematica / Wolfram|Alpha / Wolfram Language(这三个不妨记作 "w-系列") / NKS 爱好者减少遗憾。(于是,本文的目标读者是对 w-系列 有一定了解的同学。)

由于我词汇量、听力以及相关知识的不足,加上当时记录方式仓促且业余,下文一定有疏漏和错误。将来宣传上有了问题,我是要负责的。
如果有当时在场的同学发现文中有错,或者有要补充的地方,请一定联系我 :)

符号约定

下文的一些简写:mma := Mathematica, alpha := Wolfram|Alpha, wLang := Wolfram Language, NKS := A New Kind of Science, sw := Stephen Wolfram.

Replay

开始的时候

  • 会议室人满为患。容量约 100 人,到场约 150 人。绝大多数是学生模样。

  • sw 问有谁用过 alpha,举手者大半;问有谁用过 mma,举手者小半。sw 说 thank you.

演示 alpha

  • sw 开始演示 alpha 的功能。


  • 速度稍有些慢呢。sw 解释到,计算请求发到美国服务器,再传回来,所以比较慢。

  • 有的计算结果半天都出不来。组织方工作人员解释说,访问国外网络会受到些阻碍,同学们会心笑。

  • 太机智了!sw 在讲座之前缓存了一些计算结果,以保存网页的形式。

演示 mma

  • 计算 1+2. 计算三位数^三位数。计算三位数^四位数。计算结果充满一屏,观众 "wow~"。 Plot[]+Sin[] 画图像. Plot[]+Sin[]+Manipulate[] 画可用滑块调参数的图像. 观众 "wow~"。

  • 使用 CurrentImage[] 开启摄像头自拍。用 EdgeDetect[] 边缘检测,配合 Dynamic[] 对摄像头捕捉内容动态边缘检测。

  • 用 ImagePartition[] 切割,配合 Manipulate[] 和 Rotate[] 旋转切开的小图。

演示 wLang

  • sw 打开本地应用 Wolfram Desktop. 然后似乎去开了一个 VPN……

  • 用一个 Movie 什么的函数找到 top 多少的电影。用 DominantColor[] 找出这些电影的海报里的主要颜色。

  • GeoGraphics[], 展示以埃菲尔铁塔为圆心的、不同半径的区域能覆盖地图上的什么范围。

  • DictionaryLookup[], 以及英语单词长度的分布直方图。

  • 用 Import[] 获取联合国官网的首页多国文字,用 StringSplit[] 按行划分,用 Classify[] 识别出每行是什么语言。

  • 用 CloudDeploy[] 和 FormFunction[],光速且 one-line 地部署了一个 “输入猫的品种名,找出猫的图片” 的网页应用。

  • 打开网页版的 Wolfram Cloud,连接顺利,可喜可贺。sw 指出 Wolfram Desktop 和 Wolfram Cloud 是 wLang 的两个前端,用来在不同的使用场景做类似的事情。

  • sw 又指出,wLang 会很重视自然语言处理(NLP)。似乎 alpha 还没支持中文自然语言搜索吧。不过 sw 展示了 Wolfram Desktop(还是 mma?忘了)的某种意义上的中文支持:开启某个选项之后,Notebook 里的部分代码旁边会标注中文翻译,譬如把 Sin 加一个“正弦”的标注。sw 似乎说,这表明对中文 NLP 的支持正在进行中。

观众提问

  • 这时开始了第一轮观众提问。在下的听力完全不够用辣……

  • Q1: 怎么看 IPython?

  • A1: 大概意思是说,那玩意还 too simple;Python 是模块化的通用语言,IPython 是借鉴了 mma notebook 思想的 Python+科学计算库 的前端;而 Wolfram Language 的目标是高度集成的知识引擎,两者目标截然不同。

  • Q2: alpha 的功能这么复杂,bla bla,Can't imagine 它的后端会有多复杂。

  • A2: 我忘掉 sw 说什么了 (`・ω・)

  • Q3: 怎么保证 alpha 给出结果的正确性?

  • A3: sw 先明确了一下,对 mma / alpha 这种系统,有两种正确性要保障:正确计算三位数^四位数的那种正确性,以及正确查找纽约市人口数的那种正确性。

    • 对第一种正确性,因为很多系统都依赖 mma 的计算内核,所以会严格测试 bla bla。
    • 对第二种正确性,sw 指出:他们尽量从官方源找数据;多个消息源是好的,但很多情况下确实只有一个源;多个源还有 choose from 的工作量;等等。(基本上听懂了这些……
  • Q4: Wolfram Language 和其他语言的互通?

  • A4: sw 先强行插入了一些对 symbolic 特性的介绍……

    • 介绍了 EmbedCode[], 似乎是生成一段其他语言(python,java 什么的)代码,使得能在以这些语言做服务器后端的网页中嵌入已经 CloudDeploy[] 好的应用…
    • 介绍了 InstallJava[]。我没用过,投影上帮助文档字又小,所以不知道干嘛的…

介绍 NKS

  • 介绍刚才漏掉的 Wolfram Connected Devices Project.

  • (同去的 q 同学:物联网相关的协议出现得蛮早的

  • 开始讲 A New Kind of Science 了!sw 说,这对他很重要。

  • sw 提到,他为了研究物理而制造了 mma,一造就是若干年。他觉得,后来还能用自己的工具研究若干年物理,是很幸运的。

  • sw 似乎说,若干(二三十?)年前,基于数学公式的自然科学模型式微,基于计算机程序的模型兴起。

  • 元胞自动机,图灵机,bla bla。我没看过 NKS 所以完全不明白……(这部分的 presentation 是“已经懂了的人才能懂”的节奏哇……

又一轮观众提问

  • Q5: 用 mma 科学计算,太慢怎么办?提问者是北师大物院搞暗物质的,长发帅哥,说他天天用 mma 计算,但是有时确实慢,经常一算一天什么的。

  • A5: 我又忘了 sw 回答了啥了,或许是根本没听懂=。= 但是由此引发了非常有意义的事情:

    • 和我同去的 q 同学跟我说,mma:
    • 1. 缺少迭代器的机制,总是要整个列表展开算,有时为了内存不爆掉不得不写For[]。
    • 2. 有些(全部?)尾递归不能优化掉
    • 3. 惰性求值机制有时成了对第一点的弥补(?)
    • 散会之后,q 和该物理小哥交流,小哥说很多时候确实要写 For 提高效率。另外,小哥有一次用 mma 做矩阵的某种运算实在等不及,自己怒用 C 写一天写了出来。
    • 前面三点,窝会再和 q 交流一下… 窝作为新闻工作者还需要学习一个(`・ω・)
  • Q6: mma 的中国市场政策?提问的观众看起来不是学生。

  • A6: sw 说,中国的 mma 销售份额(不懂术语…)很小。比芬兰大一些。bla bla。sw 说这次中国之行也有商业推广意图。

最后

  • 不得了的东西!(^o^)ノ “钨狼”,这是 Wolfram Lanuage 的吉祥物中文名首发吗?

  • (q 同学:像刘看山呢。)


  • (w-系列 的粉丝,以后会叫“钨丝”吗?ww

  • q 同学帮照的合影…… Thank q!

真最后

还是开头说的那样:如果有哪位(特别是当时在场的观众)发现文中有错,或者有要补充的地方,请一定联系我~

新年快乐 :)

图床 powered by 七牛云存储。

事后的补充

  • q 同学:wolfram language(在我看来),简单来说就是 NLP->ML->可视化,从头 hot 到尾。=-=
 
over 2 years ago
  1. 如果你对 Java Annotation (就是形如 @Xxx, 但并不写在注释块里的语法结构) 熟悉的话, 也许你已经知道, Java 标准库内置了四种用于修饰自定义的 Annotation 的 Meta Annotation:

(

2016-04-24 补丁:

原先写的时候不知道. 其实从 Java 8 开始, java.lang.annotation 包中加入了 @Native@Repeatable.

  • @Repeatable 是个 "Meta Annotation" (即 @Target(value=ANNOTATION_TYPE)).
  • @Native 不是. 它 @Target(value=FIELD).

)

  • @Documented (功能 = "若 @Documented 修饰 Annotation A, 则 @A 将在生成的 Javadoc 中出现, 就像 Javadoc 内置的 @return 什么的.")

  • @Inherited (功能 = "若 @Inherited 修饰 Annotation A; 而 @A 又修饰类 C1 或修饰{类 C2 的方法 M}; 且 CC1 继承 C1, CC2 继承 C2, 则 @A 将影响 CC1 或 {CC2 中未被 override 的方法 M}. 否则 @A 不影响子类或其中的方法.")
    ( ref http://wangyu.iteye.com/blog/210818 )

  • @Retention (功能 = "决定 @Retention 所修饰的 Annotation 是仅存在于代码中 (但不参与编译), 还是保持到编译后的 class 文件 (但不被 JVM 解释), 还是保持到运行时 (被 JVM 解释; 能被反射获取)."

  • @Target (功能 = "约束 @Target 所修饰的 Annotation 能修饰哪些语法结构, 如 PACKAGE, ANNOTATION_TYPE, etc.")

它们被定义在 java.lang.annotation 包里. 前几天学 Annotation 的时候, 我的 Meta-欲勃发, 想到 "Meta annotation 也是 annotation, 也会被 meta annotation 修饰"...
于是看了一下它们的定义. 四个写在一起是这样的:

package java.lang.annotation;

# @Target

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

# @Retention

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    RetentionPolicy value();
}

# @Documented

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

# @Inherited

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}

OK! 得到一个结论...
四个 Meta Annotation 都被修饰成:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)

用简写 (譬如 R 表示 @Retention(RetentionPolicy.RUNTIME)) 和箭头表示四个 Meta Annotation 的依赖关系, 形如下图:

      ↙↖
      ↘↗
       D
    ↗ ↑ ↖
  ↗   │ ↘ ↖  ↙↖
I←----┼----→R  |
  ↘   ↓ ↗ ↙  ↘↗
     ↘│ ↙
       T
      ↙↖
      ↘↗
#ASCII Crap

第一节完...

To be continued...

 
over 2 years ago

7 月 28 号周一入职. 环球金融中心 ( WFC ) .
阿里云 OS 事业部, 云安全, 服务器端.

Mon

签协议, 听培训, 见主管, 逛办公室, 领电脑.
六点多吃饭, 吃完回来呆一会就跟少将走了.

Tue

早上从 WFC 旁边的金台夕照站走着去办工资卡. CBD 银行林立, 很方便.
主管跟我讲了讲 near future 要干的事情.
team 有 6 个人.

主管给了我一份放在 Git 仓库里的某服务器端工程的 Wiki 页里的 API 文档看.
仓库用 Gitlab 搭建. 文档是 ( Gitlab flavored ) markdown 写的.

又给我 assign 了一位嗯... mentor. 他在写实现这些 API 的服务端代码.
API 是 RESTful 的.

下午跟 team 里其他人去 ( 旁 ) 听了 ODPS 小培训.
ODPS 是那个 飞天 分布式系统的一部分.
主讲人指出 Hadoop 仅是软件, 而飞天是包括软件, 硬件, 管理流程的一套数据处理系统.
主管说我们 team 做的东西暂时用不到 ODPS.

Wed

一边看文档一边改些格式错误, 并标注一些 inconsisitent 的地方...
Atom Editor 的 Markdown 实时预览真不错.
mentor 让我部署服务端代码.

工程管理用 Maven; 架构技术是 SpringMVC; IDE 用 Intellij IDEA; 应用服务器本地开发用 Tomcat 不知道线上用什么; 数据库直接连数据中心 (?) 的远程数据库, 因为端口是 3306 所以大概是 MySQL; 单元测试用 JUnit.
( 好些只听说过的东西要真的去用了吗...( ゚∀。) )
因为 Maven 版本以及 Tomcat 版本的原因耽误很长一会.

少将去另一个厂区培训了今天.

Thr

想仔细学 SpringMVC, Maven 甚至 Java Annotation 的基础=.=
mentor 说不用这么干, Spring 知道流程就行...
mentor 给我用断点大法演示了:
接收 Request - 根据 url 匹配到不同 Controller - 解析 json 格式的 parameter - 根据 parameter 来调用不同的业务层里的处理类. ( 貌似是"策略模式". )
的流程.
Intellij IDEA 的调试挺好用.

第一次用 Navicat 连接非本地的数据库.

Fri

十点多 team 开例会. 总结近期工作, 展望下一步工作.
生产率蛮高的啊...

单步调试慢慢看, 记下不懂的 Annotation ( Spring 用得那些 ) 然后去查...

涉及 json object - java bean 转化的时候, 不可避免地要 "根据类名找类", 以及 "根据字段名赋值". 这时候反射就一片一片的...

看到项目里有一些 util 类, 我问主管和 mentor 公司里有没有通用类库的共享和管理机制.
他们说现在阿里以小 team 作业为主, 通用类库の仓库有一些, 但很多无人维护.
有些做得好的开源出来了, 比如 fastjson, 以及改造过的 nginx.
fastjson 库据说是最快的 json 解析库. https://github.com/alibaba/fastjson/
tengine 是改造过的 nginx. https://github.com/alibaba/tengine

看到 DAO 层的时候, 注意到 sql 查询语句写在 sqlmap*.xml 里...
在 Controller 的 execute 返回之后, 蛋疼地单步跟踪, 看 Spring 框架那部分的函数调用一个一个退出.

team 里的同事好认真好负责的说=.=
六点下班, 基本上七点半都不走, 当然我是吃完免费晚餐后在休闲区玩到七点多才走.
认识了一些打台球和乒乓球的=.=

logdown

卧槽! 自动生成标题的翻译作为 url! Amazing...
谢 qiukun 大神( ゚∀。)

 
almost 3 years ago

ver 2, 20140607

治疗前

治疗后

0.

写一篇文章就像写一段代码.

1.

在写作的时候, 我的脑子里是有一坨"全局变量"的. 这些全局变量是我已掌握的知识.

在阅读的时候, 读者脑子里全局变量跟我的不一定一样(或者说, 一定不一样), 所以[很]可能出现这两种情况:

1.1. 有个全局变量在读者那里没有, 于是ta不知道我在说啥.

譬如, 如果我不解释 "这些全局变量是我已掌握的知识" 这一句, non-programmer 们就不知道我在说啥.

如果我不解释 "non-programmer" 是什么, non-programmer 们中英语不好且不爱搜索的家伙就不知道我在说啥.

1.2. 有个全局变量在读者和我那里的含义不同, 于是我俩的后续理解就岔开了.

譬如, "代数几何". 初中生会理解为代数和几何; 高中生脑洞大一点会理解为解析几何, 还有一群人会理解成 R.Hartshorne 的《代数几何》.

我在从网上看到过以上三者的对比图, 但是找不到了. 有人留下那图了吗?

1.3. 哦对了, "从网"这个名字, 如果读者没有在全局变量里把它绑定到 "renren.com" 这个对象的话, 在试图理解这句话的时候, 很可能就把 "我在从网上看到过" 自动纠错, 变成 "我从网上看到过".

还好这个歧义不是很严重. 或者说作者和读者在这句话上的语义距离 (我瞎编的概念) 不太远.

这是一种类似 "数组越界, 访问到不该访问的内存" 的情形...

2.

所以啊, 所以, 在写作的时候也应该定义一些"局部变量".

也就是说, 把文章中用到的, 且可能引起歧义的概念一一列出("声明"), 一一解释("初始化"), 让读者的理解接近作者的理解, 从而达到一定程度上的歧义消除.

局部变量法还可以防止这种情形:

2.1. 在定义一个概念之前, 使用一个概念.

李文生老师的《编译原理与技术》里犯了很多这种问题. 去年我整了一个该书的buglist, 但是太懒没有完成, 也没不吝指教地提交给他...

如果我们使用一个概念的时候总是显示地列出("声明")和解释("初始化"), 就可以发展一种自然语言的编译器来对文章进行检查, 找出未列出或未解释就使用的概念.

哦, 顺便向 non-programmer 读者解释一句, 在编程语言中,局部变量是拥有局部作用域的变量。这样的变量只能由声明它的函数或块中访问。(via: http://zh.wikipedia.org/wiki/局部变量)

  • (这是一个笑话,因为引入了更多未列出和未解释的概念。嘻嘻嘻嘻。)
    • (这两句是后来补的。标点使用习惯都变了。)

(正文完)