Dell TB15 拓展坞 Diy 风扇散热(多图)

Dell TB15 拓展坞用了一周多, 先简单说下自己发现的优缺点:

缺点:

  1. 必须破解才能使用
  2. 散热有问题, 似乎是官方召回的产品, 持续使用时外壳40℃+ 稳定性不明
  3. 有时 USB、Lan口 会没反应, 需要重启Dock

优点:

  1. 可以给 15’ mbp 充电, 58W. 之前用绿*的 HUB 和官方充电器只能到 52W, 时不时会提示不在充电.
  2. DP/mini-DP 支持 4K 60Hz
  3. 千兆 Lan
  4. 便宜. *宝上洋垃圾 + 180w 电源适配器 500+大洋

下面开始 DIY

▲带电测试几分钟, 红框内的芯片触摸温度50℃+

Read More

CrossWalk Chromium Jar 修改指南

CrossWalk 是由 Intel 主导, 基于 Chromium 的 WebView 实现. 旨在为不同平台提供高效并且一致的 Web 体验.
关于项目简介、优劣对比、控件的使用, 建议参考官方文档.
本文主要从Java层 以修改最新 Stable 22.52.561.4 介绍如何下载源码修改Jar

1. 源码下载

官方提供的下载方式与 Chromium 一样,需要使用 gclient 下载. 但是代码仓库较大, 国内网络环境下基本无望.

另外一个方式可以直接从 GitHub 上下载:
https://github.com/crosswalk-project/crosswalk
https://github.com/crosswalk-project/chromium-crosswalk
下载完大概8GB

1
2
3
4
5
6
7
8
9
10
$ cd crosswalk
$ git branch -av
remotes/origin/crosswalk-21 c8e322d Bump version to 21.51.546.7
remotes/origin/crosswalk-22 67b33ab Bump version to 22.52.561.4
remotes/origin/crosswalk-23 8ba6a38 Bump version to 23.53.589.4
# Crosswalk-22 正好是需要的版本
$ git checkout crosswalk-22
#在 DEPS.xwalk 中可以找到对应 Chromium_Crosswalk 仓库对应 Commit
# chromium_crosswalk_rev = 'cbf42ea903acd7510548806a99efd200da37d492'
1
2
3
4
5
$ cd chromium-crosswalk
$ git branch -av
remotes/origin/crosswalk-22/52.0.2743.116 cbf42ea Merge pull request ...
# 找到对应的 Commit
$ git checkout crosswalk-22/52.0.2743.116

Read More

不要使用 cnpm 安装 F8App, react-native.js:120 ...require('React'), SyntaxError: Unexpected token ...

不要使用 cnpm install 安装,不然运行时会报错。
开始被这个帖子误导浪费半天时间……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ react-native run-android
/f8app/node_modules/.npminstall/react-native/0.23.1/react-native/Libraries/react-native/react-native.js:120
...require('React'),
^^^
SyntaxError: Unexpected token ...
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:414:25)
at Module._extensions..js (module.js:442:10)
at Object.require.extensions.(anonymous function) [as .js] (/f8app/node_modules/.npminstall/babel-register/6.7.2/babel-register/lib/node.js:134:7)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at /f8app/node_modules/.npminstall/babel-core/6.7.7/babel-core/lib/transformation/file/options/option-manager.js:368:22
at Array.map (native)

Android 播放加密视频的一个思路

基本思路

Android 播放加密视频的基本思路就是:本地启动一个HTTP服务作为代理,解密之后给播放器播放
这样的好处就是可以自定义加密方案,更重要的是 加密/解密模块 可以和视频播放模块解耦

处理HTTP头

这里使用的 NanoHTTPD , 一个纯Java实现的微型WEB服务器,代码开源。
代码实现起来很简单,只要继承然后重写两个方法就可以。
稍微复杂的是怎样处理从视频播放器过来的请求。

通过 Charles 代理就能发现简单的规律。
VideoView播放在线视频的时候,发出的GET请求。第一次是一个普通的请求,务器返回200;之后的则全是分段请求,服务器返回206。

第一次请求 和 结果


第二次请求 和 结果

两次Request的区别是 后面的有Range字段
两次Response的区别是:

  1. 第一次 返回HTTP200 第二次 返回HTTP206
  2. 第一次 Content-Length是文件的整体大小; 第二次Content-Lenght是剩余的大小
  3. 第二次 返回Content-Range

有了区别之后就简单了,剩下要做的就是: 根据Req的不同,返回不同的 HTTP头 和数据

Read More