要坐长途火车了,想着到zimuzu下载一些美剧在火车上看,在客户端下载里找到了Web远程管理版,适用于linux,下载下来研究了一下。
下载后解压,运行rrshareweb,浏览器打开”localhost:3301”,右上角登录之后,选择批量下载,贴入多行下载链接即可。
这里发现人人客户端下载地址下面没有批量复制链接的按钮,于是自己对着DOM写了个JS函数出来:
1 | //g1 for season 1, g2 for season 2, etc.. |
要坐长途火车了,想着到zimuzu下载一些美剧在火车上看,在客户端下载里找到了Web远程管理版,适用于linux,下载下来研究了一下。
下载后解压,运行rrshareweb,浏览器打开”localhost:3301”,右上角登录之后,选择批量下载,贴入多行下载链接即可。
这里发现人人客户端下载地址下面没有批量复制链接的按钮,于是自己对着DOM写了个JS函数出来:
1 | //g1 for season 1, g2 for season 2, etc.. |
原文: Translation of Lambda Expressions
MethodType 以参数类型与返回值类型的Class对象表示
MethodHandle
- invoke时检查MethodType
- 与反射不同的是,MethodHandle创建时才检查访问权限,之后使用就不再检查权限
函数式接口是一个有非继承自Object的一个方法的接口,例如Runnable,Comparator等,Java库使用这样的接口来表示回调已经很多年了。
编译器生成的用来捕获这些Lambda表达式的代码取决于Lambda表达式自身和它被赋予的函数式接口类型。
翻译需要用到JSR 292中的几个特性,包括invokedynamic,method handles和method handles与method types的增强的LDC字节码形式。因为这些无法表示在Java的源码中,所以我们的例子中将会用一种伪语法来表示这些特性:
Spigot 1.8
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again. Early access to future java features such as val, and much more.
Lombok将我们从频繁书写getter和equals等方法中的麻烦中脱离出来,源码中通过注解标记,搭配各种编辑器、构建工具的相应插件,Lombok将这些注解在编译前转化为对应的方法实现。
初次接触到Lambda calculus是在SICP ex2.6,题中涉及到Church numerals(丘奇数),然后看到了这几篇文章,当时看了几篇,看得不是很懂,搁置了。
我在学习SICP 4 Metalinguistic Abstraction,在做习题4.9的时候遇到一个lambda递归的问题,想到之前看的lambda演算中好像有提到,于是去找了相关论文,从其中选取了一个讲的比较清晰的入门介绍,算是加深了了解。
本篇算是我的笔记啦。
Reference:
1 | whereis idea #找到idea启动脚本的路径 |
实际上是通过设置环境变量XMODIFIERS
和QT_IM_MODULE
来解决这个问题的。
如果是Python写的脚本,那么可以这样写
1 | os.environ["XMODIFIERS"] = "@im=fcitx" |
如果是Bash写的脚本,那么可以这样写
curl http://j.mp/spf13-vim3 -L -o - | sh
安装spf13-vim3
chmod a+x TIM-x86_64.AppImage
更改TIM.AppImage权限设置
这篇文章是SICP一书中第二章的笔记。
文章中用到的图来源Sarabander.github.io/SICP
例子中的;
后的内容表示输出。
1 ;数值
(+ 1 1) ;表达式,+为操作符,1 1为操作数
(define a 2) ;定义变量
(define (f i)
(+ i 1)) ;定义过程
(define f
(lambda (i)
(+ i 1))) ;定义过程 -- 将f与lambda表达式关联
(if (> a 1)
a
1) ;条件结构
(cond ((= a 1) 1)
((> a 1) a)
(else 2)) ;条件结构
数据抽象的基本概念就是构造一个在“抽象数据”上操作的程序,也就是说它是在用复合数据对象。
使用uGet+aria2下载东西的时候,关了运行uGet的终端,然后发现启动不了uGet了,无论是从终端还是从图形界面。
尝试过删除所有uGet的配置文件(Path: ~/.config/uGet
),没用。
然后我就想,是不是aria2还在运行?用pgrep aria2c
命令查了下,果然,kill进程之后再打开uGet就没问题了。
重新添加下载任务后,发现下载进度快跑慢了(之前是40%,现在是98%),所以说刚才我在鼓捣的时候,aria在后台疯狂工作 :)
最大连接数 16,设置之后速度基本能跑满
非正常关闭uGet,再次启动时如果之前aria2的进程没有关闭的话,是无法再继续下载任务的,这个时候可以尝试关闭uGet,然后检查aria2的进程,确认其终止了之后打开uGet就可以正常使用了。
这篇文章是SICP一书中第一章的笔记。
文章中用到的图来源MIT.EDU SICP Full text
原书中例子是用scheme写的,这里用JavaScript改写。
例子中的>
表示输入,<
表示输出。
原始表达式由一个值(字面量)构成,其运算结果也是这个值。
记一次有趣的搜索过程
今天在写CSAPP练习题的时候,用到了printf
这个函数,仅输出结果而没有在最后加上换行\n
,结果ZSH中显示的是输出加上一个高亮的百分号,这让我百思不得其解。
这里先附上当时的代码:
1 | #include <stdio.h> |
然后我就去google了。
阅读时间 2018.2.14-2018.2.27
编码·笔记
2018.2.14-2018.2.27
临睡前,你想着和住在街对面好友交谈一会儿,你会怎么做?
打个电话?那确实挺简单的,那如果让我们回到电话还没有出现的时间呢?
或许你可以通过电筒的闪烁次数来表示一个字母表中的字母,但如果这样,一个句子也太费时费力了。
有没有更省事的方案呢?让我们去找找资料。
查阅资料你会发现有个叫摩尔斯码的东西,其通过将不同的”点”和”划”组合起来表示不同的字母,进而构造出完整的句子。
那么我们可以用手电筒的短闪烁表示”点”,长闪烁表示”划”,这样就可以传递摩尔斯码了,你和你的好友各备一份摩尔斯码对应字母的对照表即可。
(至亲密友 编码与组合 布莱叶盲文与二进制码 手电筒的剖析)