什么都不多说,这个神器就如 Chrome 下的 Tampermonkey,有很多神奇的待发现。
更新及 change log: http://forum.xda-developers.com/showthread.php?t=3034811
例如:Nexus 6 CPU芯片是 armv7,选择 arm 即可。 Play Store 上有一个 Hardware Info 的 APP,可以查看 CPU 架构。
然后需要确认手机的 SELinux 设置成 Permissive , 可以使用 SELinuxModeChanger 一款修改 SELinux 的应用。不过 N6 默认是 Permissive 的,也就不用修改了。
准备好apk,和 zip 包,最好也下载好 xposed-uninstaller*.zip ,当刷入 zip 包之后无限启动的时候可以恢复。不过最好的方式还是通过 recovery 整体备份原来的数据 Nandroid backup 。数据是最重要的!!切记。
Android 6.0 的 framework zip 包在 官网 可以下到。 而 APK 在 Xda 论坛可以找到。
通过 recovery 刷入 flash zip 之后进入系统会很长时间,之后启动 Xposed Installer ,enable module 之后需要 soft reboot 。 切记需要点击 Xposed Installer 中的 reboot ,不能自己手工 reboot ,否则无法识别 module,掉进这个坑,重启无数次无效。
经过反复尝试保留下来的一些modules,
屏蔽广告,另外一个可选择的屏蔽广告的 module 叫做 MinMinGuard,还没尝试,效果应该也很好。很多 ROM 集成的 Adaway 似乎也不错。
权限管理,一张图解释所有
模拟地址,但是 XPrivacy 也是可以有相同的功能的。但是最后还是另一个 module 叫做 Xposed Pokemon 好用。
可以定制很多部分,包括状态栏,导航栏,感觉最有用的就是可以定制长按 recent 按钮弹出小的 Launcher。然后自定义快速点击 recent 两次切换最近使用应用也是很有用的。还可以给状态栏加上网速监测。
自用上这个功能感觉已经不在需要刷其他ROM来支持一些特殊功能了,完全原生+Xposed 就已经让我很舒服了。
休眠后台服务,很好的App。
原生 Android 的 Smart Lock 只有根据蓝牙,GPS和侦测随身携带,这个 module 增加了可以根据 WIFI,或者 mac 地址或者 LAC CID 来增加信任的地点,感觉这个更加实用。日常实用 WIFI 的地方一般都是自己熟悉的地方,将那些地方的 WIFI AP name 或者 WIFI Mac 地址加入信任列表,这样就不用总在熟悉的地方解锁解锁解锁了。自己熟悉的地方也总不至于丢手机的吧。
很强大的转发,原先一直想要的转发功能都能搞定了。
微信不撤回
下载 Instagram 的图片,自从 IFTTT 不让我自动下载图片之后就诞生了这种需求。也正是因为这个需求让我发现并使用了 Xposed,然后又间接的找到了很多好玩的 module ,不过后来又找到了自动下载 ins 照片到 Google Drive 的方法。
修改运动记步频率,还挺神奇的。
在导航栏或者状态栏显示音乐波形,太赞了。
使用之后感觉不太需要的 module ,但是很强大的 module
很复杂的但是很强大的权限管理,非常细节,但是对新手不好,使用非常复杂。对权限要求比较高的可以尝试一下。
链接: http://repo.xposed.info/module/biz.bokhorst.xprivacy
高度自定义状态栏
和之前使用的 tint status bar 效果差不多,根据应用颜色改变状态栏和导航栏的颜色
自动改变键盘的颜色,我使用 TouchPal 所以也用不到。
修改系统字体
查看那些服务,禁用服务,省电
所有的 Xposed Module 都可以在 http://repo.xposed.info/module-overview 这里找到。当然 Xda 也有很多更新内容。
什么都不多说,这个神器就如 Chrome 下的 Tampermonkey, 有很多神奇的待发现。一句话概括 Xposed 就是 Android 上一款可以修改任意系统进程模式的框架,包括系统进程。下面介绍的 module 基本上都是 Xposed 框架下的插件,实现了各种神奇的功能,有些功能有被官方收录到应用官方功能中的,比如 Instagram 的图片放大功能,有些功能至今还在和官方捉迷藏的,比如微信抢红包插件,还有些功能增强了系统的扩展性,让整个手机能够高效的完成日常的工作,比如在信任 WIFI 下自动解锁屏幕等等功能。总之 Xposed 框架让整个 Android 系统上升了一个层次。
用 Xposed 的自我介绍来说,就是能够在无感知不接触任何 APK 的情况下修改系统或者应用的行为
Xposed is a framework for modules that can change the behavior of the system and apps without touching any APKs.
Xposed 是由 rovo89 开发和维护的一个项目, 官网地址:http://repo.xposed.info/, 源代码地址在 Github: https://github.com/rovo89/Xposed
更新及 change log 在 xda 论坛: http://forum.xda-developers.com/showthread.php?t=3034811
步骤:
例如:Nexus 6 CPU 芯片是 armv7,选择 arm 即可。 Play Store 上有一个 Hardware Info 的 APP,可以查看 CPU 架构。
然后需要确认手机的 SELinux 设置成 Permissive , 可以使用 SELinuxModeChanger 一款修改 SELinux 的应用。不过 N6 默认是 Permissive 的,也就不用修改了。
准备好 apk,和 zip 包,最好也下载好 xposed-uninstaller*.zip ,当刷入 zip 包之后无限启动的时候可以恢复。不过最好的方式还是通过 recovery 整体备份原来的数据 Nandroid backup 。数据是最重要的!!切记。
Android 6.0 的 framework zip 包在 官网 可以下到。 而 APK 在 Xda 论坛可以找到。
通过 recovery 刷入 flash zip 之后进入系统会很长时间,之后启动 Xposed Installer ,enable module 之后需要 soft reboot 。 切记需要点击 Xposed Installer 中的 reboot ,不能自己手工 reboot ,否则无法识别 module,掉进这个坑,重启无数次无效。
经过反复尝试保留下来的一些 modules,
屏蔽广告,另外一个可选择的屏蔽广告的 module 叫做 MinMinGuard,还没尝试,效果应该也很好。很多 ROM 集成的 Adaway 似乎也不错。
2019 年更新:AdBlocker 已经不再更新,故版本停止在了 1.12
权限管理,一张图解释所有
20190620 更新:不再更新,版本停留在 1.30.3
模拟地址,但是 XPrivacy 也是可以有相同的功能的。但是最后还是另一个 module 叫做 Xposed Pokemon 好用。
可以定制很多部分,包括状态栏,导航栏,感觉最有用的就是可以定制长按 recent 按钮弹出小的 Launcher。然后自定义快速点击 recent 两次切换最近使用应用也是很有用的。还可以给状态栏加上网速监测。
自用上这个功能感觉已经不在需要刷其他 ROM 来支持一些特殊功能了,完全原生 +Xposed 就已经让我很舒服了。
休眠后台服务,很好的 App。
原生 Android 的 Smart Lock 只有根据蓝牙,GPS 和侦测随身携带,这个 module 增加了可以根据 WIFI,或者 mac 地址或者 LAC CID 来增加信任的地点,感觉这个更加实用。日常实用 WIFI 的地方一般都是自己熟悉的地方,将那些地方的 WIFI AP name 或者 WIFI Mac 地址加入信任列表,这样就不用总在熟悉的地方解锁解锁解锁了。自己熟悉的地方也总不至于丢手机的吧。
作者将原本的多个 module 合并为一个,现在集成了抢红包(自定义关键词过滤),阻止撤回,防朋友圈删除,扩展表情限制,筛子随机等等等等功能,非常强大
WechatForwarder
很强大的转发,原先一直想要的转发功能都能搞定了。
WechatUnrecalled
微信不撤回
下载 Instagram 的图片,自从 IFTTT 不让我自动下载图片之后就诞生了这种需求。也正是因为这个需求让我发现并使用了 Xposed,然后又间接的找到了很多好玩的 module ,不过后来又找到了自动下载 ins 照片到 Google Drive 的方法。
修改运动记步频率,还挺神奇的。
在导航栏或者状态栏显示音乐波形,太赞了。
2019 年更新,不再使用,都不用 NavBar 了,显示效果再赞也不顶用啊。
通过信任连接的 WIFI,或者 WIFI MAC 地址来自动解锁屏幕,感觉比 Android 自带的 SmartLock 要好用很多。Smart Lock 中的 Body Detect,还算有用,其他根据 GPS 来自动解锁必须得开着高精度 GPS, 不仅耗电也不精确。
开启 Google 位置报告
音量增强器
网易云音乐插件 解锁网易云音乐的版权锁定。
地址在:https://github.com/bin456789/Unblock163MusicClient-Xposed/releases
云村清洁工
使用之后感觉不太需要的 module ,但是很强大的 module
很复杂的但是很强大的权限管理,非常细节,但是对新手不好,使用非常复杂。对权限要求比较高的可以尝试一下。
链接: http://repo.xposed.info/module/biz.bokhorst.xprivacy
高度自定义状态栏
和之前使用的 tint status bar 效果差不多,根据应用颜色改变状态栏和导航栏的颜色
自动改变键盘的颜色,我使用 TouchPal 所以也用不到。
修改系统字体
查看那些服务,禁用服务,省电
所有的 Xposed Module 都可以在 http://repo.xposed.info/module-overview 这里找到。当然 Xda 也有很多更新内容。
网上流传着一份清单,其中有很多国产应用,但是有部分软件是闭源的,在未审查其代码之前慎重使用。 https://www.lanzous.com/b746243
微信密友 v1.1.6.apk
QQ 净化 -4.6.3.2108-beta.apk
要妳命三千 v8.0.apk
ColorQQ_1.3.6.apk
蚂蚁森林助手 v1.3.91.apk
微 x_v2.3.apk
微大师 v1.0.7.apk
QX 模块 v1.21_6.34.apk
YouTube 去广告 v2.0.0.apk
要妳命三千 v7.0.apk
ColorQQ_v1.3.5.apk
小米净化 v3.2.0.apk
微咖 v2.0.2.apk
对话框取消 v1.7.1-beta5.apk
XMiTools_v1.1.0.apk
抖音大师 v1.0.2.apk
QQ 净化 v4.4.5.2335-beta.apk
app-release-21626-o_1caj5fb9a1a9dv1pf98nf5ncq-uid-441926.apk
应用管理 v5.2.1_b605c.apk
重力工具箱 + P -v9.0.0-beta-11_build_910_e4b90.apk
云村清洁工_v2.7.0-release_67f39.apk
YouTube 去广告 v1.0.0_e49d8.apk
移除原生锁屏遮罩 v1.3_0b32f.apk
X 状态栏农历日期_3e093.apk
指纹支付_3.9.2_3669f.apk
Xposed edge(PRO)v5.4.2_5c1d2.apk
MDWechat_v3.5.0_a1cc1.apk
ad 快消 1.4.5_557ea.apk
CustoMIUIzer 汉化版_v1.5.2_bd2f4.apk
QX 模块 1.21_6.33_70734.apk
阻止运行 v2.6.1_a8eee.apk
运动加速器 v1.6.1_e3c89.apk
QQ 斗图神器_2.0_a47e4.apk
q++1.3.1_52bac.apk
ChiMi-v2.4.17_55a57.apk
运动修改器_2.1.4_e8c30.apk
音量增强器 v0.0.34_12a4c.apk
验证码提取器 v2.0.4_29017.apk
GLTools_v4.01_mod_9b103.apk
Xp 快译 3.1.3_5eca6.apk
小米净化 v2.1.8_2f11e.apk
MIUI10 时钟模块 v1.0.5_3418c.apk
QQ 净化 -4.2.4.1705-beta_3e1a3.apk
v++1.0.6_a2ac4.apk
flyme 净化 v3.2.6_59311.apk
QQHelper1.3.1_3fdc3.apk
color qq_v1.3.4_98de0.apk
要妳命三千 Xposed 模組 v6.0_fbf0b.apk
悟空加速 v1.8.63_68a2b.apk
微群发模块 v7.0.4_0d38e.apk
写完这篇文章已经过去 3 年半,Telegram 还是那个 Telegram,界面没有太大的变化,但是实际上内部已经有很多变化,关注 Telegram 的官方博客 可以看到 Telegram 以非常积极的更新频率再更新,从很早以前的增加群组人数,到最近增加的 Folder 来分类自己的聊天,Telegram 正变得越来越好用。
然而也正是因为 Telegram 的工具属性,当它被用来当作犯罪工具的时候也是极具效率的,最近被揭露的「N 号房事件」把 Telegram 带到了更多人的眼前。这个时候很多人就会疑惑,Telegram 作为重要的犯罪工具有过错吗?我一直的观点便是工具是无罪的。Telegram 不去审查用户的聊天记录本身是没有任何问题,Telegram 要做的只是把这个聊天工具做到极致。一个工具的发明本身并不会带来罪恶,而是用使用这个工具的人需要承担法律和道德责任。更进一步说这一切都建立在互联网的基础上,我们会因为这一件事情而禁止互联网的使用吗?答案当然是不会。
感觉是时候写一篇 Telegram 的安利文了。Telegram 简单介绍就是一款 IM,即时聊天工具。当然其实他远远的超越了一个 IM,却依然保持了作为一个 IM 应有的速度和快捷。
对于基本功能,電腦玩物 Telegram 10 技 已经将 Telegram 的主要功能及使用技巧说得非常明白了,就不再多说了。其中我最喜欢的几点:
以下就是几个非常吸引人的 Point
说了这么多,其实重点想要谈谈他的贴图以及 Bot 系统。首先是贴图,在刚上手 Telegram 的时候,我就被他丰富的表情震撼到了,就像他在 Blog 中所说, Telegram 觉得现存任何一个 IM 的表情系统设置都不是很理想,封闭,收费,并且糟糕透顶,于是 Telegram 大笔一挥自己做了一套系统,这是我迄今为止使用过最赞的表情贴图系统。尤其是在最近迷上 Pokemon Go 之后,更是找到了很多萌萌的小精灵。
从下面两个网站能够找到你想要的绝大多数表情,多到无法想象:
如果这两个网站都无法让你满足,Google,以及官方的 @sticker 机器人都可以帮你找到喜欢的表情。当然如果参与到更多的对话中,就能找到更多的表情。
几个神奇的内置 bot。在使用过程中竟然遇到了“向聊天群中添加 bot 这样的问题”,不过答案也很简单,拥有群管理权限时,直接添加成员,输入 @ + bot
的名字即可。
Bots 能做什么:
寻找 gif bot,使用最简单了,聊天时直接输入 @gif whatever I like
, Telegram 会帮你搜索 whatever I like
字段的内容,点击分享即可。
Markdown bot 格式化输入
输入: @bold this is *bold* , this is _Italic_ , and this is `some code with *bold*`
。即可得到。
@vote 用来创建投票
用来创建 emoji based Like 投票。
发送给这个 bot 表情,他就自动将表情转换成 png 。
inline bot,可以利用这个 bot 将普通的 emoji 转成其他表情贴图。
然后是一些其他好玩的第三方 bot:
网站:
或者通过 bot:
最为人熟知的就是 Telegram 的聊天群了,在一个没有社交关系基础的 Message App 上,最快吸引大众的就是这个 Group 了,通过群组来建立最初的社交基础。而最初的 Group 功能没有那么强大,管理员也只能是创建群的人,后来 Telegram 升级了一次 supergroup ,于是乎 supergroup 就已经拥有了 Message App 该有的功能,管理员权限,置顶消息,消息管理,搜索等等功能,甚至可以再群中添加 bot 来实现一些自定义的功能。
特别值得称道的便是,所有在 Telegram 中分享的内容都保存历史记录,虽然目前中文搜索有些问题,但是跨平台,消息同步已经让我无法离开这个应用了。
最后来记录一些有爱的群组:
频道的功能类似于微信的订阅号了,Channel 能实现一对多的通知,当然可以拿他当广播,但是和微信订阅号不同的时,Channel 是不能接收回复的。
一些值得关注一下的频道:
最后推荐一个第三方 Android Client : Plus Messenger Link。 虽然官方的客户端已经足够完美了,但是因为加入的群比较多,经常无法找到对应的目的地,这个第三方客户端完美的解决了这个问题。
如果你看到了这里,欢迎加入我博客的私有群组。
或者如果你想讨论任何关于 Private Tracker 的信息可以加入这里:
期待这款产品久矣,从开始玩 Ingress 开始,就一直想着这样一款基于地理现实的游戏将如何发展,至少从今天的火热程度看来相信 Niantic 之后的路不会那么坎坷。其实从逻辑上 Pokemon Go 只是在 Ingress 的逻辑上增加了一层皮肤,原先的 Portal 变成了 Pokestop,原先的 8 塔变成了道馆的等级,原先可以 Hack 的到装备,到 Pokemon Go 中依然可以利用 Spin Pokestop 来获取装备。区别在于 Ingress 一切都是从头开始,什么是 XM,什么是欧洲核子中心,这些都是 Niantic 自己的定义,而如今一切都变得熟悉,皮卡丘,精灵球,甚至野外遇见的每一只小精灵,卖萌的同时,一边也唤醒了很多人儿时的记忆。
这些天浸泡在 Telegram 学习了不少,写下作为笔记。今天刚刚知道原来皮卡丘是分雌雄的,尾巴心形开叉的是雌性,尾巴不分叉的是雄性。这让我自愧不如,当年其实也并没有很深入的追宠物小精灵,而如今一些记忆早就风干,唯一剩下的一点也就是主人公的名字—-小智,还有那只非常可爱的皮卡丘了。
以下是参考官方 Help 写下的一点笔记,不是全部内容的翻译,只是有些疑问我自己并不明白,于是就看了一眼 help。
说实话其实并不在乎Fake的玩家,游戏的目的是娱乐自己,而不影响别人,飞机确实影响了游戏性,官方也肯定会采取措施,只是长远来看,那些玩家并不会长期的玩这个游戏,只要我们坚持的更远我们就赢了。正如官方所说,作弊的方法 are limited only by imaginations ,自律自觉吧。
在开始的时候,有些内容其实完全不用讲,怎么移动小人(Avatar)?怎么获取物品?在游戏过程中有着非常详细的引导。也就不值得一说了。下面是一些游戏中会出现的术语(不包括全部,显而易见的就不列了):
From: help
根据 Telegram 红队群中 @girigirigiri Eye 的详细介绍。
如下物品可能会出现:
背包有500容量。
5级以上玩家可以解锁队伍,来大家一定要选红队。
不多说了,道馆的等级由声望决定,等级越高能够容纳的 Pokemon 也越多。当同阵营玩家将Pokemon 放置道馆时,声望提升。地图上显示如下:
每个训练师只能在一个道馆放置一个 Pokemon ,并且这个 Pokemon 不能撤回自己的收集仓,直到它被踢出道馆,所以谨慎选择。
通过打败对方阵营在道馆中的 Pokemon,在战斗中可以使用至多 6 个Pokemon。每一个被打败的 Pokemon 会导致对方阵营声望下降或者等级降低(reduce the Gym’s Prestige and potentially lowers the Gym’s level)。击败对方阵营的首领(Leader) 会显著降低对方道馆的声望(Prestige)。 当对方阵营的道馆声望为0时,可以从对方阵营夺取。道馆可以被多名训练师同时挑战。
在对战中可以有如下三种操作:
每一只 Pokemon 都有 Hit Points (HP) ,在战斗中会消耗 HP,当 HP 消耗殆尽时 Pokemon 会晕倒,当所有的 Pokemon 都晕倒时,战斗结束。
From: pokemon help
每个道馆根据声望可以容纳1至10个 Pokemon。每个玩家只能放置一个 Pokemon。
通过训练 Pokemon 来获取 XP 并且增加友方道馆的声望。通过友方道馆训练,训练越多,友方道馆声望越高。 友方道馆训练Pokemon 和战斗类似,只是在战斗失败时,Pokemon 不会晕倒(faint)。而是以 1 HP 返回到收集仓。
CP 是 Combat Power 缩写, HP 是 Hit Points 缩写。
所有 Pokemon 在捕获时有满的 HP, 但是在战斗中会消耗 HP。
每一个 Pokemon 在捕获时都有不同的 CP,CP 值决定神奇宝贝在战斗中的表现。
当训练师获取更多 XP,等级提升时,遇到的 Pokemon 能够捕获的 Pokemon CP 值也会相应增高。但是有一些 Pokemon 天然的低 CP。
From:Help
Pokemon Go 是一款基于地理现实的手机游戏,由 Niantic,任天堂,The Pokemon Company合作开发发行。
参考:官网
目前为止并没有看见官方文档有任何描述,不过有如下图:
附近的Pokemon 有图鉴可以看到,爪子的数量表示远近。
有一幅图完美的解决:
如图:
如果当你真的看到这里的时候,想要了解更多可以加入 Pokemon Go 红队的 Telegram 群
当然如果依然有不知道的内容,官方文档以及Google都会给你完整的答案。如果真的互联网上不存在你所讨论的问题,那去群里确实也只能是最后一个方法了。
更新一点声明,文中所用图片,部分来自 reddit , 部分来自 Telegram , 有一些来源我确实已经无法找到,如果有任何侵权行为,请联系我。
nl 是 number lines of files, 命令用来在 linux 系统中打印文件中行号。nl 可以将输出的文件内容自动的加上行号,其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
nl 命令将文件内容输出到标准输出,并添加行号。
nl [options] [file]
命令参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w 行号栏位的占用的位数
-p 在逻辑定界符处不重新开始计算
3.命令功能:
nl 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用 -p 标志,nl 命令在每个逻辑页开始的地方重新设置行号。 可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。
nl /etc/passwd
说明:
文件中的空白行,nl 不会加上行号
nl -b a /etc/passwd
-w
参数是 number width 数字宽度,如果指定为 3 则是补齐三位
nl -b a -n rz file.log
nl -b a -n rz -w 3 log2014.log
说明:
nl -b a -n rz
命令行号默认为六位,要调整位数可以加上参数 -w 3 调整为 3 位。
Evernote 最近一次的 Policy 更新 1 真的太人人失望啦。如果说增加功能,增加收费,我完全不反对,我反对的是将现有的免费功能加入到收费功能中。这是对自己曾经的承诺公然的放弃。
一些代替品:
OneNote, Google Keep, WizNote, Simplenote, youdao, Laverna, Joplin
http://alternativeto.net/software/evernote/
我的简单需求:
更新增加了 Joplin 选项。
这一款开源的笔记应用,让我在使用的第一瞬间就爱上了,虽然陆陆续续还在用着 WizNote,但是 Joplin 一直都是后备选项,经过这两年来的不断迭代,越来越好用,越来越方便,以至于可以完美的替换掉 WizNote 了。
WizNote 推出来一个比较好玩的功能,新建一个可以分享的群组之后可以想公众号那样分享内容,但是编辑可简单多了,只要编辑 WizNote 中的内容,就自动同步分享。可以参看如下:
https://note.wiz.cn/pages/manage/biz/payRead.html?kb=8b40bf53-6ce7-4f5e-bbfc-99b2628340f3
在近一个月的寻觅中,依然没有找到好的代替品,于是在年末的时候买了一年的 WizNote 会员,看一年的使用再行选择。
WizNote 发布了服务规则调整, 有如晴天霹雳。
这则消息和 Evernote 反悔,任意更改服务条款的性质是一样的。我在此也更新,不在推荐 WizNote 服务,我会把文末的邀请链接删除,对于这样的更改其实 WizNote 一点优势也没有了。
我觉得一家公司重的信誉,也就是说到能做到的信誉,服务可靠,提供稳定的功能更新,而不是出尔反尔的随意更改之前制定的策略。这一点 Evernote 和 WizNote 给我的感觉已经差不多了。虽然现在各种云服务各种收紧,不仅是国内的网盘业务,而且国外的 Dropbox, Evernote 等等服务都面临着盈利困境,多年的市场经营虽然圈住不少用户,但却仍然无法变现。
现在回头想一想,一款产品在最初期制定规划的时候是需要很慎重的。说着那些永久免费的,多少坚持到现在了,说着无限空间的,大多已经消失。经历了 Evernote , WizNote 事件,还有之前 网易云音乐歌单丢失事件,多少让我对云服务产生了一些畏惧。目前正准备将云存储的内容,本地备份一份。
发生了这些事情之后,在我的需求列表中可能还需要添加一项:
其实倒不是我不愿意付费,WizNote 的这次变更也挺有诚意,在知道消息的第一时间我是准备购买一年两年的,只是现在想想始终觉得不对,你曾经承诺过可以每个月提供那么多流量,对于我这样的用户这本已足够,而仅仅因条款的强行改变而要求我付费,这和一开始就要求付费是完全不同的两个概念。我不反对付费,Play Store 上面我也买了差不多 100 美元的应用了,好用的应用自然有购买支持的理由。 WizNote 不从功能更新上吸引用户,而仅仅是改变原来的规则这是我要谴责的地方,如果不能够提供之前承诺的服务,在推广或者宣传的时候就不应该叫唤得那么响亮,到头来扇了自己一个巴掌。
或许在调整我的使用习惯之后,会支持下 WizNote,毕竟无法离开他 Linux 下的客户端。而如果真如他所宣称的那样能够提高检索效率,说不定买个两三年也说不定。
Wiznote 唯一使用他的理由就是他的跨平台,Linux 支持比 Evernote 好, Evernote 干脆就不支持 Linux,当然他们客服在也官网中直接说明“不支持 Linux,在可见未来也不会支持”。因此在使用过一段时间之后我也就不在使用 Evernote,并转向了 Wiznote。然而这一次 WizNote 这一次策略变更也让我这样一个普通用户无法忍受。最开始知道这个消息的时候还想着年底买一个会员,支持一下这个产品,然而在逛论坛看用户的反馈,其中一条直接让我放弃了购买的打算。
对于网站任意改变政策本就是抱有抵制态度,而最近各种网盘纷纷“倒闭”,那些宣称的“无线空间,永久免费”,还在耳边回荡,而就在一夜之间就宣告倒闭了,幸而那些网盘并没有深入使用,数据也并不是很多。而对于 WizNote 使用时间几乎是每天,而他宣称的免费一个月 500M 的流量对于我只记录些笔记已经完全足够。而这一次强硬的收费,明显就是驱逐免费用户,并且毫无信用的将过去的诺言打破。而对于未来也并没有太多承诺,甚至在用户探讨未来收费策略时用好不负责任的口吻对待用户,很难想象其对待用户数据的态度,也坚决了迁移出 WizNote 的决心。而公司内部对定价策略态度暧昧,即使有耐心支持他们,也很难保证他们之后的策略,因为此次的变化带来的一个显著的印象就是,如果不付费,这个软件几乎是不可用状态,停止同步支持几乎就是无用状态。
很早就在用了,只是当时并不支持多端同步,所以在 Android 崛起之后就渐渐的转到了 Evernote。OneNote 从各个方面来看都完全符合我的要求,并且最近的更新 Chrome 插件也做的非常不错。只是 Android 端实在太烂,让我提不起兴趣的还有微软的名号,以及缺乏 Linux 客户端。
在我看来只适合轻量级的笔记,网页摘录也做的不是很好。
其实之前也一直在使用中,但由于之前 Evernote Chrome Clipper 做的实在太棒了,所以一直没转过来,为知笔记还是很多人推荐的,容量同步 500M/ 月, 30M / 单笔记,相比 Evernote 已经很不错了。笔记分享这款做的并不是很好,但觉得可以一试。并且 WizNote 支持 markdown 这一条还是非常赞的。
虽然很多人推荐,但是没有 Chrome Clipper,并且注册账号登陆看了一眼 Web 版,功能比较简单,并且就是功能比不上 Evernote 的复刻版,并不是太想使用它,哪一天它也变成 Evernote 怎么办
有道云笔记在国内还是很多人使用的,但是登陆一看总共 3G 空间,顿时让我不想用了。并且有道并不提供导出方式,对于一个在国内的云服务不提供是很正常的,然而毕竟数据在自己手上还是比较安全。
这次寻找的过程最让我感到意外的就是这个了,开源,Linux 端,集成 Dropbox 同步,代码高亮, Markdown 格式,简直就是完美的代替品,它的 Github 主页上就光明正大的写着 Evernote alternative。但是在我看来它已经完全超越了 Evernote,除了没有一个公司去运营它,它在功能上已经完全超越了 Evernote。
经过以上的总结,接下来在 WizNote 以及 Laverna 中尝试选择一个当笔记同步使。为知笔记的 Chrome 扩展 ,相对 Evernote 弱了一些,但是也非常不错。 WizNote 当然各个客户端都有,最棒的是 Linux 客户端也有。多人编辑和笔记分享这一点 WizNote 非 VIP 用户无法使用,但是单纯的当做笔记来用已经完全足够了。 最后代码高亮很早就已经支持了的。
剩下的用 Evernote 来共享笔记,和别人协作好了。
Notion 诞生也已经很久了,发现越来越多的人开始推荐起来,Notion 作为一款笔记应用是完全 OK 的。
开源版本的个人知识库,js 写的。
[[TiddlyWiki]] 是另一款 wiki 系统,在支持富媒体上较为欠缺。
一款开源版本的 notion,界面很好看,基于 IPFS,不过目前暂未发布。
主打端到端笔记加密,观望中:
现在已经稳定使用 WizNote 了, Evernote 中的数据基本导出到 WizNote,而目前 WizNote 使用过程中基本没有产生什么问题。现在就做一个 WizNote Review。官方的宣传中突出了如下特点:
多级目录、多级标签、Markdown、无限存贮空间
而这 4 点确实很吸引人,多级目录和标签可以让文件夹更加整洁,原生支持 Markdown 让写作更加便捷,无限空间就让人不用担心。
对于 WizNote 免费用户,单月上传流量 300M,单篇文章限制 30M,附件限制 30M,这个大小和容量,已经完全满足我日常使用。并且在这几个月的使用过程中,除了一次偶然的崩溃,同步,添加附件,甚至保存微信文章,保存邮件文章,都工作正常。
参考 GitHub 或者 官网,都有详细的安装说明。基本上使用如下命令即可。
$ sudo add-apt-repository ppa:wiznote-team
$ sudo apt-get update
$ sudo apt-get install wiznote
WizNote 菜单中能很方便的导入 Evernote 中导出的文件。就不展开细讲了。
查看上 12-09 更新,删除邀请链接,不再推荐 WizNote。
ssh-copy-id
命令可以把本地主机的公钥复制到远程主机的 authorized_keys
文件上。authorized_keys
文件用来验证 client 。使用 ssh-copy-id
命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。
ssh-copy-id
用来将本地公钥复制到远程主机。如果不传入 -i 参数,ssh-copy-id
使用默认 ~/.ssh/identity.pub 作为默认公钥。如果多次运行 ssh-copy-id
,该命令不会检查重复,会在远程主机中多次写入 authorized_keys
。
使用 ssh-copy-id
的主要功能就是免密码登录远程主机。成功运行该命令之后,就可以免去密码登录远程主机。
注意本地 ~/.ssh/id_rsa
的权限,chmod 400 ~/.ssh/id_rsa
,该文件包含用于授权的私钥,如果该文件可以被其他用户访问,ssh 会忽略该私钥。
ssh-copy-id [-i [identity_file]] [user@]machine
选项
-i:指定公钥文件
把本地的 ssh 公钥文件安装到远程主机对应的账户下:
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Mac OS X 下使用 ssh-copy-id 可以使用这个 脚本。
今天查询Android在release下不显示Log信息,偶然间接触到 Timber 这个库。 Android 原生提供了很多调试 Log 的方法,但是如果想要在release情况下禁用所有调试信息,除非在原生 Log 外再嵌套实现一层自己的方法,或者使用 ProGuard 。Android 本身没有提供一种简单的方式实现,幸而有大神提供了这样的一个库。
Android 原生 Logcat 分成 v/d/i/w/e/wtf . 官方推荐的最佳实践就是定义一个 TAG 变量:
private static final String TAG = "EV_TAG_MyActivity";
然后过滤关键字就能找到对应的 Log 信息。大部分的情况下使用 Log.d 即可,但是各个方法都有其适用的情况:
去GitHub 找项目主页 Timber ,在 build.gradle 中加入:
compile 'com.jakewharton.timber:timber:4.1.2'
在 Application 下初始化 Timber
public class ExampleApp extends Application {
@Override public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) {
Timber.plant(new DebugTree());
} else {
Timber.plant(new ReleaseTree());
}
}
}
调用 Timber.plant(new DebugTree())
之后,再使用 Timber 的静态方法,则使用了 DebugTree 中设定。DebugTree 是 Timber 库中默认实现的。
Timber.plant(new Timber.DebugTree(){
@Override
protected String createStackElementTag(StackTraceElement element) {
return super.createStackElementTag(element) + ":" + element.getLineNumber();
}
});
重新实现 createStackElementTag
方法,可以在 Debug 下打印出 Log 所在的行号。
同Android提供的 Log 方法类似 Timber 也有 i/v/d/w/e/wtf 这些方法。 Timber 默认 TAG为文件名。当然可以使用 Timber.tag() 方法来设置一次性 tag 。
Timber.tag("LifeCycles");
Timber.d("Activity Created");
官方的使用教程其实只有两条:
但是 Timber 提供了更多的自定义。可以通过继承 Timber.Tree 来实现。
Timber 可以种树也可以移除一棵树,也可以移走全部的树:
先看看 Timber Tree 实现,这个类是一个抽象类,主要实现管理 TAG,并且提供各个 Log 方法的实现,类中有一个抽象方法
/**
* Write a log message to its destination. Called for all level-specific methods by default.
*
* @param priority Log level. See {@link Log} for constants.
* @param tag Explicit or inferred tag. May be {@code null}.
* @param message Formatted log message. May be {@code null}, but then {@code t} will not be.
* @param t Accompanying exceptions. May be {@code null}, but then {@code message} will not be.
*/
protected abstract void log(int priority, String tag, String message, Throwable t);
DebugTree 实现了 Timber.Tree , 和 log(int priority, String tag, String message, Throwable t)
方法。
@Override protected void log(int priority, String tag, String message, Throwable t) {
if (message.length() < MAX_LOG_LENGTH) {
if (priority == Log.ASSERT) {
Log.wtf(tag, message);
} else {
Log.println(priority, tag, message);
}
return;
}
// Split by line, then ensure each line can fit into Log's maximum length.
for (int i = 0, length = message.length(); i < length; i++) {
int newline = message.indexOf('\n', i);
newline = newline != -1 ? newline : length;
do {
int end = Math.min(newline, i + MAX_LOG_LENGTH);
String part = message.substring(i, end);
if (priority == Log.ASSERT) {
Log.wtf(tag, part);
} else {
Log.println(priority, tag, part);
}
i = end;
} while (i < newline);
}
}
基本上能看到是为了避免打印长度超出 Log 的最大长度而做的设置。
在给出来的 Demo 中,JakeWharton 实现了一个发布版本的 Tree,
private static class CrashReportingTree extends Timber.Tree {
@Override protected void log(int priority, String tag, String message, Throwable t) {
if (priority == Log.VERBOSE || priority == Log.DEBUG) {
return;
}
FakeCrashLibrary.log(priority, tag, message);
if (t != null) {
if (priority == Log.ERROR) {
FakeCrashLibrary.logError(t);
} else if (priority == Log.WARN) {
FakeCrashLibrary.logWarning(t);
}
}
}
}
通过优先级,在 release 下 VERBOSE 和 DEBUG 就不产生 Log 信息了。而 Error 和 WARN 就交给了 FakeCrashLibrary 去处理了。
更多的方法可以参考 文档 。
BeautifulSoup4 能够帮助我们从 HTML 或 XML 文件中提取数据
pip install beautifulsoup4
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
Python 标准库 | BeautifulSoup(markup, “html.parser”) | Python 的内置标准库 执行速度适中 文档容错能力强 | Python 2.7.3 or 3.2.2) 前 的版本中文档容错能力差 |
lxml HTML 解析器 | BeautifulSoup(markup, “lxml”) | 速度快 文档容错能力强 | 需要安装 C 语言库 |
lxml XML 解析器 | BeautifulSoup(markup, “xml”) | 速度快 | 需要安装 C 语言库 |
html5lib | BeautifulSoup(markup, “html5lib”) | 最好的容错性 以浏览器的方式解析文档 生成 HTML5 格式的文档 | 速度慢 不依赖外部扩展 |
加载
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
Beautiful Soup 将复杂 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为 4 种:
find_all()
方法和 select()
方法各有各的优劣,find_all 方法能支持正则,而 select 方法可以使用 CSS 属性选择器。
在 Tag
对象上调用 .string
会返回 NavigableString
类型对象,而 .text
会获取所有子节点内容的组合,.text
返回的是 Unicode 对象。
对于
<td>Some Table Data</td>
<td></td>
在第二个 <td>
标签中 .string
会返回 None,而 .text
会返回空的 unicode 对象
对于 .string
而对于 .text
则简单很多,会返回子标签及所有文本的级联。
比如
<td>some text</td>
<td></td>
<td><p>more text</p></td>
<td>even <p>more text</p></td>
.string
会返回
some text
None
more text
None
.text
会返回
some text
more text
even more text
BeautifulSoup 支持很多种 HTML 解析器,包括 Python 自带标准库,还有其他 lxml 等等第三方模块。
解析器 | 使用方法 | 优点 | 缺点 |
---|---|---|---|
html.parser | BeautifulSoup(markup,”html.parser”) | Python 标准库,速度快,兼容性好(2.7.x 和 3.2.x) | 无法在 2.7.3 之前和 3.2.2 之前版本使用 |
lxml | BeautifulSoup(markup, “lxml”) | 速度快,兼容性好 | 外部依赖 |
lxml’s XML | BeautifulSoup(markup, ‘lxml-xml’) 或者 ‘xml’ | 速度快,支持 XML | 外部依赖 |
html5lib | BeautifulSoup(markup, ‘html5lib’) | 兼容性好,HTML5 合法 | 速度慢,外部依赖 |
个人一般使用 html.parser
但是如果遇到不兼容版本,那也只能 pip install lxml
然后使用了。
在类 Unix 系统中可以使用 top/htop 查看系统资源、进程、内存占用等信息。查看网络状态可以使用 netstat
、nmap
等工具。若要查看实时的网络流量,监控 TCP/IP 连接等,则可以使用 iftop。
iftop
是类似于 top 的实时流量监控工具。
官方网站:http://www.ex-parrot.com/~pdw/iftop/
iftop
可以用来监控网卡的实时流量(可以指定网段)、反向解析 IP、显示端口信息等。
apt-get install iftop
或者使用源码编译安装
Debian 上安装所需依赖包:
apt-get install flex byacc libpcap0.8 libncurses5
下载 iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install
常用的参数:
-i 设定监测的网卡,如:# iftop -i eth1
-B 以 bytes 为单位显示流量(默认是 bits),如:# iftop -B
-n 使 host 信息默认直接都显示 IP,如:# iftop -n
-N 使端口信息默认直接都显示端口号,如:# iftop -N
-F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24 或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的 IP 信息;
-b 使流量图形条默认就显示;
-f 这个暂时还不太会用,过滤计算包用的;
-P 使 host 信息及端口信息默认就都显示;
-m 设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
交互快捷键,进入 iftop
画面后的一些操作命令(注意大小写)
按 h 切换是否显示帮助;
按 n 切换显示本机的 IP 或主机名;
按 s 切换是否显示本机的 host 信息;
按 d 切换是否显示远端目标主机的 host 信息;
按 t 切换显示格式为 2 行 /1 行 / 只显示发送流量 / 只显示接收流量;
按 N 切换显示端口号或端口服务名称;
按 S 切换是否显示本机的端口信息;
按 D 切换是否显示远端目标主机的端口信息;
按 p 切换是否显示端口信息;
按 P 切换暂停 / 继续显示;
按 b 切换是否显示平均流量图形条;
按 B 切换计算 2 秒或 10 秒或 40 秒内的平均流量;
按 T 切换是否显示每个连接的总流量;
按 l 打开屏幕过滤功能,输入要过滤的字符,比如 ip, 按回车后,屏幕就只显示这个 IP 相关的流量信息;
按 L 切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按 j 或按 k 可以向上或向下滚动屏幕显示的连接记录;
按 1 或 2 或 3 可以根据右侧显示的三列流量数据进行排序;
按 `<` 根据左边的本机名或 IP 排序;
按 `>` 根据远端目标主机的主机名或 IP 排序;
按 o 切换是否固定只显示当前的连接;
按 f 可以编辑过滤代码
按!可以使用 shell 命令
按 q 退出监控。
直接运行:
sudo iftop
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>
这两个左右箭头,表示的是流量的方向。需要注意的是默认情况下显示的单位是 bit/s
iftop
到目前时间的总流量先使用 ifconfig
查看当前机器网卡,然后使用 -i
参数
iftop -i eth0
为了可读性,可以使用 -B
来以 MB
mega byte 字节来显示流量:
sudo iftop -B