alwaystest

Results 88 issues of alwaystest

https://github.com/rime/plum > Lastly, it's also possible to install other author's Rime configuration from a *-packages.conf file hosted on GitHub. For example: ``` bash rime-install https://github.com/lotem/rime-forge/raw/master/lotem-packages.conf # or in short form:...

help wanted

可以通过 HomeBrew 安装 GerritJarvis 啦。 目前是通过添加一个私有 Tap 的方式来实现的。有必要的话你可以 fork 过来自己维护。

# adb shell termux htop 标签(空格分隔): shell android --- 玩了一下termux这个软件,记录一下经验。 首先,要在`adb shell`中调用termux,需要按照https://github.com/termux/termux-app/issues/77 给出的方案。 `adb shell`连接成功之后,我们希望在环境变量包含的PATH中直接就有一个脚本可以帮我们打开termux的bash。 所以用到`mount -o rw,remount /system` 重新挂载 system 为可写,然后在 xbin 文件夹下面写一个 shell脚本,一样是从Github上找到的(我的Linux基础还是比较差啊,鸟哥的书大略过了一遍还是不够的): ``` #!/system/bin/sh su $(stat -c...

# Android ShadowSocks VPN模式 标签(空格分隔): ShadowSocks --- 虽然之前一直使用Android手机,使用Google这么好的搜索服务,但是对于ShadowSocks底层实现还不是很清楚,也没有一个完善的文档说明这个软件怎么用,所以有时候用着会比较懵,不知道各个选项是什么效果。于是今天大概翻了翻源码,对VPN模式的工作原理有了一点了解。 本来之前ShadowSocks的Android版本使用的是NAT模式,原理有些类似于我之前在树莓派上搭建的网关代理,但是这里使用的并不是`ss-redir`方式,而是使用`ss-local`+`ss-tunnel`方式结合,提供socks代理和UDP转发。NAT模式最关键的一点是利用Android基于Linux内核的特性,通过配置IPTables规则达到效果,而Android设置IPTables需要使用ROOT权限,给软件的使用造成不方便,另一方面根据软件开发者的说法,NAT模式不支持IPV6的代理,还有许多缺点,所以弃用了这个特性,采用了新的VPN模式。 新的VPN模式没有见过详细说明,我一直以为VPN模式是使用ShadowSocks搞了一个类似于PPTP的VPN,然后手机连上去,所有流量都是走VPS的。我还纳闷,这样子的话SS界面上的好多特性都没用了。扫了一眼源码以后,才发现,**我的想法是错误的。** VPN模式还是使用`ss-tunnel`的方式,然后利用Android 4.0 以上提供的VPN Service,实现VPN对接到本地的`ss-tunnel`提供的Socks端口,其中的黑科技可以参考下面的文章,我也是在写博客的过程中查阅资料才发现这些文章的,这也说明了写博客的重要性。VPN模式下指定代理范围(全局,非中国,非中国+非局域网,非局域网)是通过`ss-tunnel`的`--acl`参数指定的,对特定APP进行代理是在`startVPN`中`builder.addAllowedApplication`这里,暂时没有看懂这里的写法是调用了Android的实现还是自己实现。留坑以后补。 结论: Android设备使用ShadowSocks可以放心的使用VPN模式,下方的选项对于VPN模式也是可用的。 --- ### 参考 [shadowsocks-android源码解析](http://ct2wj.com/2016/02/28/shadowsocks-android-source-code-analysis/) [socks代理转VPN](http://feed.hjue.me/articles/detail/2013-05-28/62244/VPN-%E6%9C%8D%E5%8A%A1%E5%99%A8-Android)

# 梅林V7.2 KoolShare之SS V3.1.2 DNS解析方式分析 标签(空格分隔): ShadowSocks Merlin KoolShare --- 6300V2上的Merlin系统好久没折腾过了,折腾路由器的时候发现SS上使用的某些技术已经看不懂了,浅探一番之后在这里记录一下。 ### ShadowSocks 这个版本的SS已经集成了KcpTun,所以直接装SS即可,没有必要再装KcpTun。简单来说呢KcpTun和TCPSpeed,FinalSpeed,锐速是类似的,都是用来加快网络传输速度的,可以改善差网络条件下的代理速度。服务端可以使用Docker快速搭建。客户端有编译好的二进制文件可以直接使用。由于KcpTun有Go语言版本,效率高,占用内存少,很适合在路由器这种配置不是很强劲的平台上运行。 ### Chromecast Chromecast功能的实现就是在路由器的iptables规则列表里面添加一条把目标端口是53的udp请求重定向到路由器的DNS解析代理。对于防止DNS投毒攻击来说是很有效的,但是如果网络条件不稳定,DNS代理请求不能及时返回的话,轻则导致网络访问速度下降,重则导致网络不可用。 ### 路由器的DNS代理方式 我目前采用的方式是pdnsd。由下到上是这样的: - 最底层使用KcpTun做加速处理。 - ss-local 在路由器搭建一个本地socks代理,通过KcpTun转发请求到远端服务器。 - dns2socks 把DNS请求交给ss-local转发。 - pdnsd...

ProxyCommand是 OpenSSH 的特性。 使用 `man ssh_config` 来查看文档说明。实际上,完整版的命令应该是 `man 5 ssh_config`。为啥有那个 5,请使用 `man man` 来查看。 打开文档之后可以发现 ssh_config 的描述是 OpenSSH SSH client 的配置文件描述文档。 ProxyCommand 是其中的一个配置项。作用是指定连接到 Server 的时候要执行的命令。这个命令会接收 TOKENS 章节中描述的参数,并将其展开替换为对应的值。 ProxyCommand 后面可以执行任何命令。这个命令需要满足以下要求: 从标准输入流中读取数据,写入到标准输出流中。...

# IJKPlayer Concat 标签(空格分隔): Android IJKPlayer --- 网上搜索IJKPlayer的相关资料,发现很难找到Android上的IJKPlayer完整的集成文档,连Github的Repo中都找不到详细的描述,大家都说用法和MediaPlayer相似,直接上手用就可以了。然后就花了好多时间来研究这个Lib。 首先,IJKPlayer和ExoPlayer简单对比一下,IJKPlayer基于FFmpeg,ExoPlayer依赖的是Android中的Low Level Media APIs(API Level 16+)。两个Lib都提供了简单的Demo介绍使用方法。ExoPlayer提供的文档信息更为详细一些,还有API Docs提供,ExoPlayer的API使用我个人感觉更为方便简单。 粗略了瞄了一下ExoPlayer的代码,看起来是蛮简单易懂的,但是如果要实现Customize,还是有点难度,比如我不想用他提供的`ConcatenatingMediaSource`,想自己实现一个的时候,就感到有困难了,主要是我水平姿势不够,里面有`DataSource`,`MediaSource`,`TrackSelector`,`LoadControl`各种概念要想搞明白还是需要精读代码的。 ExoPlayer的源码解析文章好多都是基于1.x版本的,目前ExoPlayer已经到了2.x版本,感觉用的人不是很多的样子,国内使用的开源方案大部分还是IJKPlayer,但是文档什么的,真的是噩梦一样啊。 说一说IJKPlayer使用FFmpeg的concat功能。 首先[ffmpeg.org](https://ffmpeg.org/ffmpeg-formats.html#concat-1)给出了使用concat功能的一些知识点,首先,我们需要知道 > ‘ffconcat’ Generate an ffconcat file for the created segments. The...

# 关于理财和延迟满足 标签(空格分隔): 未分类 --- 想财富自由吗?那么本文可能对你没有任何帮助,因为写这篇文章的人还没有财富自由。 理财是每个有财富自由梦想的人都需要具备的知识,并且越早越好。 我大约从 2016 年开始正式的记账。之前断断续续也记过一段时间,但是由于基础设施不完善,导致经常漏记,所以就中断到 2016 年才算正式开始记账。 ## 蛮荒年代 在基础设施不完善的时代,我曾经使用过随手记和卡牛。 卡牛可以通过读取短信来达到自动记账的目的,问题在于不是每张银行卡都开通了短信提示,大部分银行的短信消费提示都是需要额外花钱购买的,加上读取短信实在是一个比较敏感的权限,所以后来就不用卡牛了。 使用随手记的过程中遇到了另外一个问题,当时微信支付和支付宝并没有像现在这么流行,出门还是需要携带现金,记账粒度就成了一个烦恼,每消费一笔就记一次,太麻烦了,偶尔还是会有漏掉的。把现金和银行卡看作一个一个的账户,隔一段时间就统计一次,很多花销没有办法进行归类。久而久之,记账也就失去了动力。 ## 现在 从 2016 年开始,微信和支付宝越来越频繁的出现在各个支付场景中,由于数字化货币的优势,花销可以精确到小数点后而不用攒那么多钢镚,每一笔花销都在账单中可以追溯,此时的记账已经是水到渠成的事情。虽然说支付宝提供了记账功能,但是由于花销并不是全部走支付宝的渠道,而且支付宝实在太过臃肿,在一些比较老的手机上打开会很慢,在 Android 机器上还有连锁唤醒更是恶化了用户体验。 幸运的是,当时发现了一款小而美的个人开发者开发的记账软件--简洁记账。于是,记账开始成为一项日常。 我目前的记账逻辑: 支付尽量使用微信或支付宝,这样可以留下支付记录,方便后期追溯。 第二天上班路上把前一天的账单转录到简洁记账中。 遇到周末玩的比较欢的情况,可能会有那么一两天没有记账也没有关系,记录一直在,工作日补录即可。 记账过程中遇到的一些问题:...

# Dagger2 Scope Dagger2 使用注解处理器在运行时生成代码完成依赖注入的功能。 ## Key Concept - Module 真正生成依赖对象的方法,类似于 Factory. - Component Dagger2 对外暴露的接口,通过生成一个实现对应 Component 接口的类,实现依赖注入的功能。 ## Process 利用 Annotation Processor Tool 在编译时处理 `@Component` 注解的 Interface。 Annotation 就是一个携带信息的标记,在处理注解时,可以通过读取...

# 开发工具们 标签(空格分隔): 工具 Tools --- ## 代码检索 一般来讲 grep 会附带在 Linux 发行版中。 ### ack 用 Perl 写的,看他的官网域名就知道定位了 [beyondgrep.com](https://beyondgrep.com/) 更快更好用 ### The Silver Searcher 又叫 Ag 借鉴了 ack。专注于提高搜索速度。 > Grep...