我使用的 Xposed module

什么都不多说,这个神器就如 Chrome 下的 Tampermonkey,有很多神奇的待发现。

官网地址:http://repo.xposed.info/

更新及 change log: http://forum.xda-developers.com/showthread.php?t=3034811

Xposed Framwork

安装之前

查看设备CPU架构

例如: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

经过反复尝试保留下来的一些modules,

AdBlocker

屏蔽广告,另外一个可选择的屏蔽广告的 module 叫做 MinMinGuard,还没尝试,效果应该也很好。很多 ROM 集成的 Adaway 似乎也不错。

AppOpsXposed

权限管理,一张图解释所有

AppOpsXposed

Xposed Pokemon

模拟地址,但是 XPrivacy 也是可以有相同的功能的。但是最后还是另一个 module 叫做 Xposed Pokemon 好用。

GravityBox MM

可以定制很多部分,包括状态栏,导航栏,感觉最有用的就是可以定制长按 recent 按钮弹出小的 Launcher。然后自定义快速点击 recent 两次切换最近使用应用也是很有用的。还可以给状态栏加上网速监测。

自用上这个功能感觉已经不在需要刷其他ROM来支持一些特殊功能了,完全原生+Xposed 就已经让我很舒服了。

Greenify

休眠后台服务,很好的App。

No Lock Home

原生 Android 的 Smart Lock 只有根据蓝牙,GPS和侦测随身携带,这个 module 增加了可以根据 WIFI,或者 mac 地址或者 LAC CID 来增加信任的地点,感觉这个更加实用。日常实用 WIFI 的地方一般都是自己熟悉的地方,将那些地方的 WIFI AP name 或者 WIFI Mac 地址加入信任列表,这样就不用总在熟悉的地方解锁解锁解锁了。自己熟悉的地方也总不至于丢手机的吧。

WechatForwarder

很强大的转发,原先一直想要的转发功能都能搞定了。

WechatUnrecalled

微信不撤回

XInsta

下载 Instagram 的图片,自从 IFTTT 不让我自动下载图片之后就诞生了这种需求。也正是因为这个需求让我发现并使用了 Xposed,然后又间接的找到了很多好玩的 module ,不过后来又找到了自动下载 ins 照片到 Google Drive 的方法

运动修改器

修改运动记步频率,还挺神奇的。

在导航栏或者状态栏显示音乐波形,太赞了。

不太需要的 module

使用之后感觉不太需要的 module ,但是很强大的 module

XPrivacy

很复杂的但是很强大的权限管理,非常细节,但是对新手不好,使用非常复杂。对权限要求比较高的可以尝试一下。

链接: http://repo.xposed.info/module/biz.bokhorst.xprivacy

Flat Style Bar Indicators

高度自定义状态栏

Flat Style Colored Bars

和之前使用的 tint status bar 效果差不多,根据应用颜色改变状态栏和导航栏的颜色

Flat Style Colored Keyboard

自动改变键盘的颜色,我使用 TouchPal 所以也用不到。

Ifont

修改系统字体

Amplify

查看那些服务,禁用服务,省电

所有的 Xposed Module 都可以在 http://repo.xposed.info/module-overview 这里找到。当然 Xda 也有很多更新内容。


2016-07-15 Android , AndroidDev , Xposed , 整理合集

我使用的 Xposed module

什么都不多说,这个神器就如 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

Xposed Framwork

安装之前

查看设备CPU架构

例如: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

经过反复尝试保留下来的一些modules,

AdBlocker

屏蔽广告,另外一个可选择的屏蔽广告的 module 叫做 MinMinGuard,还没尝试,效果应该也很好。很多 ROM 集成的 Adaway 似乎也不错。

AppOpsXposed

权限管理,一张图解释所有

AppOpsXposed

Xposed Pokemon

模拟地址,但是 XPrivacy 也是可以有相同的功能的。但是最后还是另一个 module 叫做 Xposed Pokemon 好用。

GravityBox MM

可以定制很多部分,包括状态栏,导航栏,感觉最有用的就是可以定制长按 recent 按钮弹出小的 Launcher。然后自定义快速点击 recent 两次切换最近使用应用也是很有用的。还可以给状态栏加上网速监测。

自用上这个功能感觉已经不在需要刷其他ROM来支持一些特殊功能了,完全原生+Xposed 就已经让我很舒服了。

Greenify

休眠后台服务,很好的App。

No Lock Home

原生 Android 的 Smart Lock 只有根据蓝牙,GPS和侦测随身携带,这个 module 增加了可以根据 WIFI,或者 mac 地址或者 LAC CID 来增加信任的地点,感觉这个更加实用。日常实用 WIFI 的地方一般都是自己熟悉的地方,将那些地方的 WIFI AP name 或者 WIFI Mac 地址加入信任列表,这样就不用总在熟悉的地方解锁解锁解锁了。自己熟悉的地方也总不至于丢手机的吧。

20170805 更新 WeXposed

作者将原本的多个module合并为一个,现在集成了抢红包(自定义关键词过滤),阻止撤回,防朋友圈删除,扩展表情限制,筛子随机等等等等功能,非常强大

WechatForwarder
很强大的转发,原先一直想要的转发功能都能搞定了。

WechatUnrecalled
微信不撤回

XInsta

下载 Instagram 的图片,自从 IFTTT 不让我自动下载图片之后就诞生了这种需求。也正是因为这个需求让我发现并使用了 Xposed,然后又间接的找到了很多好玩的 module ,不过后来又找到了自动下载 ins 照片到 Google Drive 的方法

运动修改器

修改运动记步频率,还挺神奇的。

在导航栏或者状态栏显示音乐波形,太赞了。

No Lock Home

通过信任连接的 WIFI,或者 WIFI MAC 地址来自动解锁屏幕,感觉比Android自带的 SmartLock 要好用很多。Smart Lock 中的 Body Detect,还算有用,其他根据 GPS 来自动解锁必须得开着高精度GPS, 不仅耗电也不精确。

LocationReportEnabler

开启 Google 位置报告

网易云音乐插件

解锁网易云音乐的版权锁定。

地址在: https://github.com/bin456789/Unblock163MusicClient-Xposed/releases

不太需要的 module

使用之后感觉不太需要的 module ,但是很强大的 module

XPrivacy

很复杂的但是很强大的权限管理,非常细节,但是对新手不好,使用非常复杂。对权限要求比较高的可以尝试一下。

链接: http://repo.xposed.info/module/biz.bokhorst.xprivacy

Flat Style Bar Indicators

高度自定义状态栏

Flat Style Colored Bars

和之前使用的 tint status bar 效果差不多,根据应用颜色改变状态栏和导航栏的颜色

Flat Style Colored Keyboard

自动改变键盘的颜色,我使用 TouchPal 所以也用不到。

Ifont

修改系统字体

Amplify

查看那些服务,禁用服务,省电

所有的 Xposed Module 都可以在 http://repo.xposed.info/module-overview 这里找到。当然 Xda 也有很多更新内容。


2016-07-15 Android , AndroidDev , Xposed , 整理合集

Telegram 技巧

感觉是时候写一篇 Telegram 的安利文了。Telegram 简单介绍就是一款 IM, 及时聊天工具。当然其实他远远的超越了一个IM,却依然保持了作为一个IM应有的速度和快捷。

对于基本功能,電腦玩物 Telegram 10技 已经将 Telegram 的主要功能及使用技巧说得非常明白了,就不再多说了。其中我最喜欢的几点:

  • 跨平台,这也正是我一直坚持 Hangout 的原因之一,我不喜欢整天抱着手机,我在电脑前的时间可比拿手机的时间长,我也不希望我坐下之后需要花很长的时间,打开一个客户端输入密码,然后还要花一段时间同步消息,关键有些客户端之间还不能同步消息记录。而 Telegram 给我的体验就和 Hangout 一致,多个平台,多个设备几乎能够在同一时间受到消息,我也能够在任何一个客户端回复,并且所有客户端的消息都是同步的。
  • Bot ,聊天机器人,很久之前的 Gtalk 也是支持机器人的,对那个自动翻译的机器人还是略有记忆,只是后来就没有后来了。而 Telegram 正是将聊天机器人这个命题重新书写了。开放的Bot系统,让 Telegram 成为了一个全能的平台,他是一个 IM ,他也可以是一个翻译工具,只需要一个翻译bot,他也可以是一个RSS阅读器,只需要一个RSS订阅bot,他也可以是一个Tinder,只需要一个约会bot…… Telegram 可以变成想要的任何工具,更不说官方集成的 @gif, @bold,@sticker 等等 bot
  • 开放,作为一个 IM,应该能够包容万千也能够开放的分享,这就提到了 Telegram 支持的媒体内容,文字,链接,音频,视频,gif,表情贴图,能够想到的几乎所有内容都可以兼容,甚至有人直接 Telegram 来当音乐播放器。并且 Telegram 在图片以及 Gif 分享的时候做了很多的优化处理,我在日常使用中几乎没有感受到任何卡顿,甚至流量的消耗也在我可接受的范围。

以下就是几个非常吸引人的Point:

Sticker

说了这么多,其实重点想要谈谈他的贴图以及 Bot 系统。首先是贴图,在刚上手 Telegram 的时候,我就被他丰富的表情震撼到了,就像他在 Blog 中所说, Telegram 觉得现存任何一个 IM 的表情系统设置都不是很理想,封闭,收费,并且糟糕透顶,于是 Telegram 大笔一挥自己做了一套系统,这是我迄今为止使用过最赞的表情贴图系统。尤其是在最近迷上 Pokemon Go 之后,更是找到了很多萌萌的小精灵。

pokemon sticker

从下面两个网站能够找到你想要的绝大多数表情,多到无法想象:

如果这两个网站都无法让你满足,Google,以及官方的 @sticker 机器人都可以帮你找到喜欢的表情。当然如果参与到更多的对话中,就能找到更多的表情。

Bots

几个神奇的内置 bot。在使用过程中竟然遇到了“向聊天群中添加 bot 这样的问题”,不过答案也很简单,拥有群管理权限时,直接添加成员,输入 @ + bot 的名字即可。

@gif

寻找 gif bot,使用最简单了,聊天时直接输入 @gif whatever I like , Telegram 会帮你搜索 whatever I like 字段的内容,点击分享即可。

@bold

Markdown bot 格式化输入

输入: @bold this is *bold* , this is _Italic_ , and this is `some code with *bold*` 。即可得到。

Telegram bold bot

@vote

@vote 用来创建投票

@like

用来创建 emoji based Like 投票。

@Stickerdownloadbot

发送给这个 bot 表情,他就自动将表情转换成 png 。

@sticker

inline bot,可以利用这个 bot 将普通的 emoji 转成其他表情贴图。

然后是一些其他好玩的第三方 bot:

  • @GroupButler_bot 用来管理群组的bot,可以设置 rules , 管理垃圾消息等等
  • @storebot 用来发现其他 bot 的 bot
  • @utubebot 下载 YouTube 视频
  • @Instasave_bot 用来下载 instagram 的 bot

SuperGroup

最为人熟知的就是 Telegram 的聊天群了,在一个没有社交关系基础的 Message App 上,最快吸引大众的就是这个 Group 了,通过群组来建立最初的社交基础。而最初的 Group 功能没有那么强大,管理员也只能是创建群的人,后来 Telegram 升级了一次 supergroup ,于是乎 supergroup 就已经拥有了 Message App 该有的功能,管理员权限,置顶消息,消息管理,搜索等等功能,甚至可以再群中添加 bot 来实现一些自定义的功能。

特别值得称道的便是,所有在 Telegram 中分享的内容都保存历史记录,虽然目前中文搜索有些问题,但是跨平台,消息同步已经让我无法离开这个应用了。

最后来记录一些有爱的群组:

Channel

频道的功能类似于微信的订阅号了,Channel 能实现一对多的通知,当然可以拿他当广播,但是和微信订阅号不同的时,Channel 是不能接收回复的。

一些值得关注一下的频道:

Client

最后推荐一个第三方 Android Client : Plus Messenger Link。 虽然官方的客户端已经足够完美了,但是因为加入的群比较多,经常无法找到对应的目的地,这个第三方客户端完美的解决了这个问题。


2016-07-14 Telegram , IM

Pokemon Go 简介

期待这款产品久矣,从开始玩 Ingress 开始,就一直想着这样一款基于地理现实的游戏将如何发展,至少从今天的火热程度看来相信 Niantic 之后的路不会那么坎坷。其实从逻辑上 Pokemon Go 只是在 Ingress 的逻辑上增加了一层皮肤,原先的 Portal 变成了 Pokestop,原先的 8 塔变成了道馆的等级,原先可以 Hack 的到装备,到 Pokemon Go 中依然可以利用 Spin Pokestop 来获取装备。区别在于 Ingress 一切都是从头开始,什么是 XM,什么是欧洲核子中心,这些都是 Niantic 自己的定义,而如今一切都变得熟悉,皮卡丘,精灵球,甚至野外遇见的每一只小精灵,卖萌的同时,一边也唤醒了很多人儿时的记忆。

这些天浸泡在 Telegram 学习了不少,写下作为笔记。今天刚刚知道原来皮卡丘是分雌雄的,尾巴心形开叉的是雌性,尾巴不分叉的是雄性。这让我自愧不如,当年其实也并没有很深入的追宠物小精灵,而如今一些记忆早就风干,唯一剩下的一点也就是主人公的名字—-小智,还有那只非常可爱的皮卡丘了。

以下是参考官方 Help 写下的一点笔记,不是全部内容的翻译,只是有些疑问我自己并不明白,于是就看了一眼 help。

写在开始之前

  • Respect the community.
  • Be respectful.
  • Respect privacy.
    • 尊重隐私
  • Adhere to the rules of the human world.
    • 不要进入未经允许不可进入的区域,即使那里出现了珍奇神奇宝贝
  • Avoid inappropriate content.
  • No cheating.
    • Methods of cheating, unfortunately, are limited only by cheaters’ imaginations, but include at a minimum the following: using modified or unofficial software; playing with multiple accounts (one account per player, please); sharing accounts; using tools or techniques to alter or falsify your location; or selling/trading accounts.
    • 不要使用修改过或者非官方的App;多账户;共享账户;使用工具伪造位置;售卖账户

Pokemon Go guidelines

说实话其实并不在乎Fake的玩家,游戏的目的是娱乐自己,而不影响别人,飞机确实影响了游戏性,官方也肯定会采取措施,只是长远来看,那些玩家并不会长期的玩这个游戏,只要我们坚持的更远我们就赢了。正如官方所说,作弊的方法 are limited only by imaginations ,自律自觉吧。

Getting Started

在开始的时候,有些内容其实完全不用讲,怎么移动小人(Avatar)?怎么获取物品?在游戏过程中有着非常详细的引导。也就不值得一说了。下面是一些游戏中会出现的术语(不包括全部,显而易见的就不列了):

Glossary

  • Candy 可以在捕获 Pokemon ,孵化宝宝,或者将 Pokemon 送给教授时获得。Candy 可以用来进化或者增强 Pokemon。
    • 抓怪获取 3 个
    • 送给教授 1 个
    • 孵蛋 10-20 个
  • Incense 蚊香,熏香?用来吸引 Pokemon。
  • Lure Module 短时间内可以吸引 Pokemon 到 Pokestop。
  • Defender Bonus 防御奖励,防御道馆可以按时领金币和 Stardust。
  • Potions 药水,恢复 Pokemon 的 HP。
  • Stardust 可以在抓取 Pokemon ,孵化宝宝 (Egg) ,或者在 Defender Bonus 的时候获取。
    • 抓怪 100
    • 孵蛋 600-800
    • 占领道馆 500/个 * 20h
  • Razz Berry 在遭遇野外 Pokemon 时,喂它们吃可以更容易抓取。

From: help

根据 Telegram 红队群@girigirigiri Eye 的详细介绍。

背包中物品

如下物品可能会出现:

  • Poke Ball, 精灵球,用来抓捕 Pokemon ,随着等级提升,有更加厉害的精灵球
  • Potions,药水,用来恢复受伤的 Pokemon
  • Berries,浆果,等级提升之后可能获得

背包有500容量。

pokeball

道馆与战斗

5级以上玩家可以解锁队伍,来大家一定要选红队。

Team Red

道馆

不多说了,道馆的等级由声望决定,等级越高能够容纳的 Pokemon 也越多。当同阵营玩家将Pokemon 放置道馆时,声望提升。地图上显示如下:

占有道馆

每个训练师只能在一个道馆放置一个 Pokemon ,并且这个 Pokemon 不能撤回自己的收集仓,直到它被踢出道馆,所以谨慎选择。

从对方阵营夺取道馆

通过打败对方阵营在道馆中的 Pokemon,在战斗中可以使用至多 6 个Pokemon。每一个被打败的 Pokemon 会导致对方阵营声望下降或者等级降低(reduce the Gym’s Prestige and potentially lowers the Gym’s level)。击败对方阵营的首领(Leader) 会显著降低对方道馆的声望(Prestige)。 当对方阵营的道馆声望为0时,可以从对方阵营夺取。道馆可以被多名训练师同时挑战。

在对战中可以有如下三种操作:

  • Fast Attack 快速攻击
    • 点击自己的 Pokemon 来进行快速攻击
    • 快速攻击补充特殊攻击条读数
  • Dodge attacks 闪躲攻击
    • 左右滑动来闪躲
  • Special Attack 特殊攻击
    • 当特殊攻击条读数充满时,长按 Pokemon 来进行特殊攻击
    • 特殊攻击可以导致较大伤害

每一只 Pokemon 都有 Hit Points (HP) ,在战斗中会消耗 HP,当 HP 消耗殆尽时 Pokemon 会晕倒,当所有的 Pokemon 都晕倒时,战斗结束。

From: pokemon help

增援队友道馆

每个道馆根据声望可以容纳1至10个 Pokemon。每个玩家只能放置一个 Pokemon。

从友方道馆训练 Pokemon

通过训练 Pokemon 来获取 XP 并且增加友方道馆的声望。通过友方道馆训练,训练越多,友方道馆声望越高。 友方道馆训练Pokemon 和战斗类似,只是在战斗失败时,Pokemon 不会晕倒(faint)。而是以 1 HP 返回到收集仓。

CP and HP

CP 是 Combat Power 缩写, HP 是 Hit Points 缩写。
所有 Pokemon 在捕获时有满的 HP, 但是在战斗中会消耗 HP。
每一个 Pokemon 在捕获时都有不同的 CP,CP 值决定神奇宝贝在战斗中的表现。
当训练师获取更多 XP,等级提升时,遇到的 Pokemon 能够捕获的 Pokemon CP 值也会相应增高。但是有一些 Pokemon 天然的低 CP。

From:Help

Q & A

什么是 Pokemon Go

Pokemon Go 是一款基于地理现实的手机游戏,由 Niantic,任天堂,The Pokemon Company合作开发发行。

参考:官网

等级的上限?

目前为止并没有看见官方文档有任何描述,不过有如下图:

level

如何快速的定位周围的 Pokemon?

附近的Pokemon 有图鉴可以看到,爪子的数量表示远近。

Pokemon nearby

关于 Pokemon 的稀有程度?

有一幅图完美的解决:

Pokemon where can see

能够孵化的小精灵?

如图:

孵化的小精灵

More

如果当你真的看到这里的时候,想要了解更多可以加入 Pokemon Go 红队的 Telegram

当然如果依然有不知道的内容,官方文档以及Google都会给你完整的答案。如果真的互联网上不存在你所讨论的问题,那去群里确实也只能是最后一个方法了。

更新一点声明,文中所用图片,部分来自 reddit , 部分来自 Telegram , 有一些来源我确实已经无法找到,如果有任何侵权行为,请联系我。


2016-07-10 产品体验 , Ingress , AR , Game , Niantic , Pokemon , PokemonGo

Evernote 代替品

Evernote 最近一次的 Policy 更新1 真的太人人失望啦。如果说增加功能,增加收费,我完全不反对,我反对的是将现有的免费功能加入到收费功能中。这是对自己曾经的承诺公然的放弃。

一些代替品:

OneNote, Google Keep, WizNote, Simplenote, youdao, Laverna

http://alternativeto.net/software/evernote/

我的简单需求:

  1. 多平台同步(Mac, Windows, Linux) + web + Android online and offline
  2. 好用的 clip Chrome 插件
  3. 最好支持多人编辑
  4. 支持笔记分享
  5. 支持代码高亮,其实这一点 Evernote 也做不到

2017-02-13

WizNote 推出来一个比较好玩的功能,新建一个可以分享的群组之后可以想公众号那样分享内容,但是编辑可简单多了,只要编辑 WizNote 中的内容,就自动同步分享。可以参看如下:

https://note.wiz.cn/pages/manage/biz/payRead.html?kb=8b40bf53-6ce7-4f5e-bbfc-99b2628340f3

2017-01-05

在近一个月的寻觅中,依然没有找到好的代替品,于是在年末的时候买了一年的 WizNote 会员,看一年的使用再行选择。

2016-12-09 重要更新

WizNote 发布了服务规则调整, 有如晴天霹雳。

  • 免费个人用户只提供 100 天试用,到期之后新建,修改笔记无法上传服务器
  • 个人 VIP 下调为 6元/月, 60元/年

这则消息和 Evernote 反悔,任意更改服务条款的性质是一样的。我在此也更新,不在推荐 WizNote 服务,我会把文末的邀请链接删除,对于这样的更改其实 WizNote 一点优势也没有了。

我觉得一家公司重的信誉,也就是说到能做到的信誉,服务可靠,提供稳定的功能更新,而不是出尔反尔的随意更改之前制定的策略。这一点 Evernote 和 WizNote 给我的感觉已经差不多了。虽然现在各种云服务各种收紧,不仅是国内的网盘业务,而且国外的Dropbox, Evernote 等等服务都面临着盈利困境,多年的市场经营虽然圈住不少用户,但却仍然无法变现。

现在回头想一想,一款产品在最初期制定规划的时候是需要很慎重的。说着那些永久免费的,多少坚持到现在了,说着无限空间的,大多已经消失。经历了 Evernote , WizNote 事件,还有之前 网易云音乐歌单丢失事件,多少让我对云服务产生了一些畏惧。目前正准备将云存储的内容,本地备份一份。

发生了这些事情之后,在我的需求列表中可能还需要添加一项:

  • 服务的数据本地可见,并且能够提供导出服务,比如 Dropbox 至少有一个本地备份,比如 WizNote 本地是文件存储的

其实倒不是我不愿意付费,WizNote 的这次变更也挺有诚意,在知道消息的第一时间我是准备购买一年两年的,只是现在想想始终觉得不对,你曾经承诺过可以每个月提供那么多流量,对于我这样的用户这本已足够,而仅仅因条款的强行改变而要求我付费,这和一开始就要求付费是完全不同的两个概念。我不反对付费,Play Store 上面我也买了差不多 100 美元的应用了,好用的应用自然有购买支持的理由。 WizNote 不从功能更新上吸引用户,而仅仅是改变原来的规则这是我要谴责的地方,如果不能够提供之前承诺的服务,在推广或者宣传的时候就不应该叫唤得那么响亮,到头来扇了自己一个巴掌。

或许在调整我的使用习惯之后,会支持下 WizNote,毕竟无法离开他 Linux 下的客户端。而如果真如他所宣称的那样能够提高检索效率,说不定买个两三年也说不定。

Wiznote 唯一使用他的理由就是他的跨平台,Linux 支持比 Evernote 好, Evernote 干脆就不支持 Linux,当然他们客服在也官网中直接说明“不支持Linux,在可见未来也不会支持”。因此在使用过一段时间之后我也就不在使用 Evernote,并转向了 Wiznote。然而这一次 WizNote 这一次策略变更也让我这样一个普通用户无法忍受。最开始知道这个消息的时候还想着年底买一个会员,支持一下这个产品,然而在逛论坛看用户的反馈,其中一条直接让我放弃了购买的打算。

wiznote purchase

对于网站任意改变政策本就是抱有抵制态度,而最近各种网盘纷纷“倒闭”,那些宣称的“无线空间,永久免费”,还在耳边回荡,而就在一夜之间就宣告倒闭了,幸而那些网盘并没有深入使用,数据也并不是很多。而对于WizNote 使用时间几乎是每天,而他宣称的免费一个月500M的流量对于我只记录些笔记已经完全足够。而这一次强硬的收费,明显就是驱逐免费用户,并且毫无信用的将过去的诺言打破。而对于未来也并没有太多承诺,甚至在用户探讨未来收费策略时用好不负责任的口吻对待用户,很难想象其对待用户数据的态度,也坚决了迁移出 WizNote 的决心。而公司内部对定价策略态度暧昧,即使有耐心支持他们,也很难保证他们之后的策略,因为此次的变化带来的一个显著的印象就是,如果不付费,这个软件几乎是不可用状态,停止同步支持几乎就是无用状态。

OneNote

很早就在用了,只是当时并不支持多端同步,所以在 Android 崛起之后就渐渐的转到了 Evernote。OneNote 从各个方面来看都完全符合我的要求,并且最近的更新 Chrome 插件也做的非常不错。只是 Android 端实在太烂,让我提不起兴趣的还有微软的名号,以及缺乏 Linux 客户端。

Google Keep

在我看来只适合轻量级的笔记,网页摘录也做的不是很好。

WizNote

其实之前也一直在使用中,但由于之前 Evernote Chrome Clipper 做的实在太棒了,所以一直没转过来,为知笔记还是很多人推荐的,容量同步 500M/月, 30M / 单笔记,相比 Evernote 已经很不错了。笔记分享这款做的并不是很好,但觉得可以一试。并且 WizNote 支持 markdown 这一条还是非常赞的。

Simplenote

虽然很多人推荐,但是没有 Chrome Clipper,并且注册账号登陆看了一眼 Web 版,功能比较简单,并且就是功能比不上 Evernote 的复刻版,并不是太想使用它,哪一天它也变成 Evernote 怎么办

youdao

有道云笔记在国内还是很多人使用的,但是登陆一看总共3G 空间,顿时让我不想用了。并且有道并不提供导出方式,对于一个在国内的云服务不提供是很正常的,然而毕竟数据在自己手上还是比较安全。

Laverna

这次寻找的过程最让我感到意外的就是这个了,开源,Linux端,集成 Dropbox 同步,代码高亮, Markdown 格式,简直就是完美的代替品,它的 Github 主页上就光明正大的写着 Evernote alternative。但是在我看来它已经完全超越了 Evernote,除了没有一个公司去运营它,它在功能上已经完全超越了 Evernote。

https://laverna.cc

经过以上的总结,接下来在 WizNote 以及 Laverna 中尝试选择一个当笔记同步使。为知笔记的Chrome 扩展 ,相对 Evernote 弱了一些,但是也非常不错。 WizNote 当然各个客户端都有,最棒的是 Linux 客户端也有。多人编辑和笔记分享这一点 WizNote 非 VIP 用户无法使用,但是单纯的当做笔记来用已经完全足够了。 最后代码高亮很早就已经支持了的。

剩下的用 Evernote 来共享笔记,和别人协作好了。

两个月之后更新

现在已经稳定使用 WizNote 了, Evernote 中的数据基本导出到 WizNote,而目前 WizNote 使用过程中基本没有产生什么问题。现在就做一个 WizNote Review。官方的宣传中突出了如下特点:

多级目录、多级标签、Markdown、无限存贮空间

而这4点确实很吸引人,多级目录和标签可以让文件夹更加整洁,原生支持 Markdown 让写作更加便捷,无限空间就让人不用担心。

对于 WizNote 免费用户,单月上传流量 300M,单篇文章限制 30M,附件限制 30M,这个大小和容量,已经完全满足我日常使用。并且在这几个月的使用过程中,除了一次偶然的崩溃,同步,添加附件,甚至保存微信文章,保存邮件文章,都工作正常。

Linux Mint 安装

参考 GitHub 或者 官网,都有详细的安装说明。基本上使用如下命令即可。

$ sudo add-apt-repository ppa:wiznote-team
$ sudo apt-get update
$ sudo apt-get install wiznote

Evennote 迁移 WizNote

WizNote 菜单中能很方便的导入 Evernote 中导出的文件。就不展开细讲了。

扩展工具

邀请

查看上12-09更新,删除邀请链接,不再推荐 WizNote。


2016-07-01 Evernote

Android lib Timber

今天查询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 即可,但是各个方法都有其适用的情况:

  • Log.e : 错误输出,用在 catch 语句下,你知道有可能有错误发生,因此打印出 Error
  • Log.w : 警告,用来输出不可判断的错误出现的情况,如果出现了,需要查看
  • Log.i : 信息,用来打印有用的信息,比如连接服务器成功,一般用来报告成功事件
  • Log.d: 用来调试,只在 debug 下出现
  • Log.v:各种小调试信息
  • Log.wtf: 非常严重的错误发生时打 Log

设置Timber

去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 所在的行号。

using Timber

同Android提供的 Log 方法类似 Timber 也有 i/v/d/w/e/wtf 这些方法。 Timber 默认 TAG为文件名。当然可以使用 Timber.tag() 方法来设置一次性 tag 。

Timber.tag("LifeCycles");
Timber.d("Activity Created");

官方的使用教程其实只有两条:

  1. 在 application class 下 plant Tree
  2. 然后调用 Timber 的静态方法即可。

但是 Timber 提供了更多的自定义。可以通过继承 Timber.Tree 来实现。

Timber 可以种树也可以移除一棵树,也可以移走全部的树:

  • plant(Tree)
  • uproot(Tree)
  • uprootAll()

Timber Tree

先看看 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 的最大长度而做的设置。

release logging

在给出来的 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 去处理了。

更多的方法可以参考 文档

reference


2016-06-24 Android , AndroidDev , 学习

Kindle tips

整理 Evernote 笔记的时候偶然看到这篇文章,总结自己使用 Kindle 一年来的小小经验,以及一些 Tips。

注册 Kindle 邮箱

这个功能非常实用,不然能够节省连接数据线的时间,更重要的是这个活用这个邮箱能够自动化完成很多事情,可是遗憾的事,很多人并不知道这个福利。所以建议在拿到手之后的第一件事情就是查看这个邮箱,设置中 Send-to-KindleE-mail 中查看。

Kindle可以享受的两个最容易被忽略的功能是:

  • 在线文档存储,亚马逊为每位用户提供至少5G的云存储空间
  • 在线文档格式转换,支持格式包括

    • Microsoft Word (.DOC, .DOCX)
    • HTML (.HTML, .HTM)
    • RTF (.RTF)
    • JPEG (.JPEG, .JPG)
    • Kindle Format (.MOBI, .AZW)
    • GIF (.GIF)
    • PNG (.PNG)
    • BMP (.BMP)
    • PDF (.PDF)
    • 附件大小不超过50MB(压缩之前)
    • 附件中文档个数在25个以内
    • Kindle.com收件人个数不得超过15个
    • 文档默认会保存在云端
    • 如果60天用户都没有下载,则会删除上传文件

如果有 WiFi 或3G的话,注册 Kindle 可以在Kindle设备上完成,打开 WiFi(Home-> Menu -> Turn Wireless On),然后在Home -> Menu -> Settings-> Registration中,按照提示完成即可。没有WiFi或3G的话,则享受不了这两个服务。

要使用这两个服务,需要两步。首先,要知道自己的Kindle邮件地址(姓名@Kindle.com),可以在 Home-> Menu-> Settings的第二页里看到,在Send-to-KindleE-mail选项里面。但是,为了保护用户的私有空间不被别人用垃圾填满,亚马逊还要求使用已经被用户许可的邮箱地址发往此邮箱,否则就会拒绝接收。许可邮箱的方法是:

  • 先到[管理Kinlde](https://www.amazon.com/myk}页面,需要使用注册Kindle的账号登陆
  • 在左侧导航栏里单击Personal Document Settings
  • 在右侧 Approved Personal Document E-mail List 标题的最后单击 Add a new approvede-mail address
  • 输入email地址后单击Add Address即可,可以添加多个邮箱

完成以上操作后,就可以享受这两个服务了,使用添加到许可列表的邮箱,以附件形式发送文档到自己的Kindle邮件地址(姓名@Kindle.com),就可以把文档存储到云端。Kindle在线时就会自动下载云端文件。如果想将文档转换为Kindle内置格式(mobi),需要在邮件标题内注明convert(即邮件标题写“convert”即可),亚马逊就会为您转换为Kindle内置文档格式并发送到你的Kindle设备,阅读非常方便。转换过程可能会比较慢。

单击左侧导航栏内的 Personal Documents 可以管理云端文件。

找书技巧

Kindle 使用官方市场必然是件很不错的选择,但是其实有些方式来的更加方便,并且也能弥补官方市场书记不全的弊端。

Kindle10000

微信书籍推送:Kindle10000

自用上这个服务,Kindle 就活了起来,想起想看的书名,找到公众号,搜索推送,即使 Kindle 不在身边,下一次联网再同步即可。这个公众号在他们的简洁上这么写着:“一个被书籍改变命运的程序员领着志愿者做的免费项目”。而他的使用也非常简单,绑定Kindle 邮箱之后,在聊天框输入书名查找,然后找到想要的书,点一下推送搞定,资源丰富。这个比我之前在一些Kindle资源网站上找或者百度搜方便多了。

Kindle 伴侣

地址:http://Kindlefere.com Kindle伴侣,这是我至今也还一直订阅的少数 Kindle 相关网站之一,它的《每周一书》坚持更新也是很值得称赞的。

Kindle 饭

地址:http://www.Kindlefan.cn/ Kindle饭,有很多Kindle 使用的文章,技巧,相关工具,很棒的网站,建议订阅。

160604 更新,这个网站竟然不存在了,我只能从 Web Archive 找找他们存在的痕迹,但真的感谢他们曾经的文字。

漫画

地址:http://www.pixvol.com/ 推送漫画到 Kindle,还是非常全的

一下都是一些资源网站:

  • http://readfree.me/ 一个图书分享网站
  • https://www.mlook.mobi/ 精校电子书,资源下载
  • http://zaoshu.so/ 枣书,付费电子书价格对比,可以获取各大网站提供的免费公共电子书
  • https://www.cnepub.com/ epub掌上书苑
  • http://www.jiumodiary.com/ 搜索电子书
  • http://readcolor.com/ 读远,电子书库
  • http://blah.me/ Google+ 郁也风整理的书籍
  • https://www.dogear.cn/ 狗耳朵 全文 RSS 和微信公众号推送

如果使用 InoReader 可以订阅下面我制作的 bundle , 我订阅了一些 Kindle 相关的文章。

地址:http://www.inoreader.com/bundle/0014cd6370e9

笔记

使用过程中,读书最重要的就是记录了,阅读永远是别人的东西,如果没有经过大脑转变成自己的内容,那永远只是存在书本上。而 Kindle 上做笔记也是非常容易的,并且数字化让一切都能够被检索并标注,Kindle 让这个过程更加方便了。在 Kindle 中长按文字选中之后会弹出标注,笔记等几个选项,而所有这些操作的内容都会被保存到 Kindle 设备上”documents”里名叫“My Clippings.txt” 的文件中。这个文件以一定的格式记录所有的笔记内容,直接查看非常不方便,于是就有人做了这样的一个工具。

地址:https://www.clippings.io/

将笔记,标注导出的网站。从 Kindle 中找到 clippings 文件之后上传到该网站,就能够非常直观的查看所有笔记。

关闭 Kindle 屏保和主页界面的特惠信息

因为我使用的是美亚账号,自动出现的特惠信息大多数是我并不关心的,因此

> 设置 -> 设备选项 -> 个性化您的 Kindle -> 高级选项 -> 特惠

关闭即可。如果无法关闭,我记得当时我就是联系了亚马逊客服才关闭的:

联系亚马逊客服:https://www.amazon.cn/gp/help/customer/contact-us

使用过程中遇到的问题

Kindle 无法连接 WiFi

Kindle 不能连接 WiFi 的三个原因,虽然在没办法的情况下以下三个方法或许有用,但是大部分的情况其实就是 GFW 屏蔽了 Kindle 联网验证的地址,其实和 Android 在检测 WiFi 时屏蔽了 Google 服务器出现的感叹号一样,系统向一个 URL 请求,没有收到回复自然认为没有成功连接到互联网,于是就报错,所以在尝试以下三种方式之前,请确保翻墙状态。

1、路由器频段问题

这个问题实际上手机也有。有一阵子我手机也连不上我哥家的 WiFi,后来通过网络搜索才知道频段问题。那时候是说频段超过11手机就无法连接WiFi,后来我把频段改小之后就解决问题了。而一般能用手机连接WiFi,Kindle不能连接的一般不会是这个问题。

如何改变频段,Google之。基本现在这个年代,看一下无线路由器的说明书就会设置的。

技术资料见:

http://en.wikipedia.org/wiki/List_of_WLAN_channels

In the USA, 802.11 operation in the channels 12 and 13 is actually allowed under low powered conditions. The 2.4 GHz Part 15 band in the US allows spread-spectrum operation as long as the 50-dB bandwidth of the signal is within the range of 2400–2483.5 MHz which wholly encompasses both channels 12 and 13. A Federal Communications Commission (FCC) document clarifies that only channel 14 is forbidden and furthermore low-power transmitters with low-gain antennas may legally operate in channels 12 and 13.However, channels 12 and 13 are not normally used in order to avoid any potential interference in the adjacent restricted frequency band, 2483.5–2500 MHz, which is subject to strict emission limits set out in 47 CFR §15.205.

问题也许就是这样产生的:你笔记本所能搜到的WIFI信号来自正工作于12/13/14频段的路由器,因此你的Kindle搜不到无线信号。

为什么路由器工作于12/13/14频段呢?基于抗干扰的理由,人为指定的可能性很小,然而在无线路由器的设置中(至少是家用),频段这一项可以设为“自动选择”,这样每次路由器重启都回按照自己的算法随意选择一个频段,也许刚好就选在了“12/13/14”上。

这或许也是WIFI连网不稳定现象的根源,某些Kindle连不上无线网络,而折腾下路由器重启后,Kindle又可以连网了。

经GOOGLE搜索,发现欧洲人也有类似的问题。见http://www.mobileread.com/forums/showthread.php?t=100081

由此对 Kindle 连网问题做个小小的推测,如果真的能解决问题,请大家多转给需要的人 :)

2、DHCP服务器地址池问题

听闻DHCP服务器是让路由器可以自动分配ip的东西,但是把地址池[个人理解为分配的ip的范围]如果在192.168.1.100以上,Kindle就不能连接WiFi[当然这是Kindle的问题,因为手机电脑都可以连接的,不过我不知道Kindle自身要怎么改,或许不能改,又或许可以通过在Kindle上设置静态IP?]

其实解决这个问题有个更方便的方法,既然Kindle改不了,咱们就改下路由器的DHCP服务器地址池呗,把开始地址改为192.168.1.2,结束地址改成192.168.1.99[其实也不用固定这样,只要最后一个在1-100之间就可以了!

3、接下来就是运营商问题了

前两个问题我都解决后,我发现还是有时候会连接不上WiFi,于是在又查了查,发现了一个方法,为什么这个方法能解决我不知道为什么,但是真的有效!!!!

在pc上新建一个新文件,名为WiFi_NO_NET_PROBE,同时把后缀名删掉,让它变成一个无格式文件。Kindle 连接pc,把新建的文件放进kindke的根目录,断开Kindle之后重启Kindle。

充电

充电方法:Kindle可以用数据线连接电脑充电。也可以用数据线连接充电头,在插座上充电。Kindle电量不足时,灯是橙黄色的,充满以后灯会变成绿色。 充电时长:每次充电时间大约是2-3小时。首次充电充满即可,不需要充很长时间,有人充了一个晚上,十几个小时,然后就不能开机了,送修说主板电路烧了。平时使用时Kindle还剩差不多百分之二十的时候开始充电,对Kindle最好。因为Kindle很长时间不用不充电,可能会出现缺电现象,造成机器假死。充电的时候最好不要看书,不要使用kindle,不然kindle电池不耐用。

截屏方法

Kindle 的截屏方法,不同 Kindle 不同,我只有 Paperwhite,所以:Kindle Paperwhite 截屏:先点上面出菜单,再同时左上+右下。 截下来的图片会保持在documents这个文件夹里面,可以连接电脑拷贝出来。

以下未验证: Kindle3、Kindle DXG,截屏是同时按住:Alt+Shift+G。屏幕会闪一下,截屏就成功了。 Kindle4、Kindle5截屏:同时按住键盘键和菜单键,屏幕会闪一下,截屏就成功了。 Kindle touch截屏:按住home键,点屏幕,等几秒,反正5秒肯定可以了,松开Home。

电子书格式

mobi, azw

mobi和azw格式的推手主要是Amazon,这两种电子书格式的发展很大程度上依靠Amazon这个巨大的内容提供商及其电子书阅读器Kindle的流行普及。它们同属亚马逊的私有格式,没有本质的区别,可以简单的这样理解,mobi是比较老的一种格式,而azw只是mobi的另一种形式而已,也可以理解为mobi加了个壳,亚马逊利用它对电子书做DRM版权保护。

目前市面上的mobi文件大部分是来自两种途径:epub、pdf或者txt转换成的mobi,从Amazon商店流出来的mobi。前者没什么好说的,后者要么是Amazon官方制作,要么就是自出版作者通过KDP (Kindle Direct Publishing,作者可以绕过出版社直接在Amazon上发售电子书 )平台发布,通过KDP平台发布时,作者只需要上传Word文档,其他的事情也是Amazon官方来做,从而保证了,mobi文件的规范程度。

azw3

azw3的本质是KF8,是随着2011年Amazon推出Kindle Fire平板时一起推出的。它填补了Mobi对于复杂排版支持的缺陷,支持很多HTML5(目前尚不支持 HTML5 的视频和音频标签)和CSS3的语法,这就大大改善了原来mobi或azw内容排版上的一些缺陷,单纯从读者的角度来讲,是不输epub格式的。目前从Amazon购买的书,大部分已经是azw3格式了,而以前主流的mobi格式则越来越少,它正逐渐取代mobi成为Kindle电子书的主流格式。

epub

下面是维基百科对epub的一段定义:

EPUB(Electronic Publication的缩写,电子出版)是一种电子图书标准,由国际数字出版论坛(IDPF)提出;其中包括3种文件格式标准(文件的附文件名为.epub),这个格式已取代了先前的Open eBook开放电子书标准。

epub格式对于复杂的排版,图表,公式等元素的兼容性比mobi格式好很多,在脚本,公式,矢量图形的支持方面也强过mobi格式,现阶段epub格式的优势体现在图文混排、图片嵌入字体等,未来可预测的优势是epub格式对于声音,影像等多媒体内容互动的支持上。

epub格式是开放标准,所以在开发工具上也会有更大的选择,像Sigil、Calibre、Jutoh等软件都可以让用户自助制作epub格式电子书,但因为良莠不齐的制作也导致一个问题:大量的epub文件其实是不符合标准,无法保证在所有支持epub的硬件和软件上都可以顺利阅读,这就和iOS系统和Android系统的区别有些相似。

reference


2016-06-04 Kindle , Book , 阅读

gnome do 技巧

自 Mint 开始才接触到 Gnome-do 这样一个神器,一句话介绍他的功能就是启动器,完全键盘操作的启动器。当然在启动应用之外还有很多扩展的功能,自开始使用 Gnome-do 开始几乎已经很少使用菜单开应用了。正如这篇 文章所讲使用了 Gnome-do 之后就会让 Windows 和 OS X 下的用户嫉妒不已。 不过 OS X 下貌似也有 Alfred 这样的神器。

安装与启动

Mint 下直接从软件管理里面搜索安装吧,如果想使用命令行,下面的也可以:

sudo apt-get install gnome-do

忘记了初始设置的启动快捷键是什么了,我自己一直使用 Alt + Space .

启动应用

最基本的功能就是启动应用, Alt + Space 之后,输入 “Chrome” ,找到 Chrome 之后回车就直接开启 Chrome。当然与此同时 Gnome-do 也回去搜索本地,查找相关的目录寻找与 Chrome 相关的内容,不关心跳过就行。用同样的方法可以开启本地的任何应用,当然要保证这些应用都在 Gnome-do 的搜索路径下。Gnome-do 会自动学习使用习惯,现在基本我输入 c 就能够找到 Chrome。

开启URL

打开 Gnome-do,输入网址 google.com 然后第一次可能需要使用 Tab 选择 Action: Open URL。然后回车, Gnome-do 会自动开启默认浏览器加载网页。

Plugin

以下插件都可以在 Preference 中找到,并启用,一些插件默认已经启用。

Alias

给应用程序或者其他命令重命名

Files and Folders

搜索本地文件及目录

GNOME Session Management

重启或者关机

Twitter

并不怎么用 Twitter ,不过可以实现 Twitter 发消息。

总结

大部分的情况都是启动应用,URL 或者搜索打开文件,其他的一些功能并不常用。


2016-05-20 Linux , gnome-do

snapseed 中的一些参数

照片编辑一些参数,了解一个 App 就能知道所有图像处理类 App 原理,比如 VSCO,泼辣修图,大到 Photoshop 等等。

Tools

Snapseed 中的常用调整工具

Tune Image

调整图像最常见的操作基本都能在这个 section 中找到。比如亮度、对比度、饱和度等等,细节部分可以单独调整暗部,或者亮部,还有图片整体色调。

Brightness

亮度,很容易理解的概念

Contrast

对比度,黑色像素和白色像素的对比度。利用S曲线的功能也能够实现,不过直接调节Contrast参数倒是来的更加直接。

Saturation

饱和度,色彩的饱和程度。往右为图像色彩变浓重,左反之。也称为色度色彩的三属性之一,广义讲,黑白灰的 色度=0 。

Ambiance

Ambiance 直译是 环境,气氛的意思,这边应该是调整环境的色彩。

Shadows

暗部,调整暗部,单独针对暗部调整往右为暗部更亮,往左为暗部更黑。

Highlights

高光,调整高光部分,更亮或者高光部分调整暗。

Warmth

色调,调整图片的色调,暖色或者是冷色,往右为暖色,往左为冷色。

Details

图片细节部分调整,基本上是图片锐度的调整。

Structure

图片纹理会变得清晰

Sharpening

色彩更加锐利。

Crop

裁剪比例,其实最喜欢的还是 1:1

Available crop aspect ratios:

Free - the aspect ratio can be set freely, without constraint

Original - the aspect ratio will be set based on the original image

1:1 - to create a square image

DIN - to set the aspect ratio according to European page aspect ratios (such as A4, A3, A2, etc.)

3:2 - to set the aspect ratio to what is typically found on D-SLRs

4:3 - to set the aspect ratio to what is typically found on DSCs

5:4 - to set the aspect ratio to what is found on many typical US page sizes (8×10, 16×20, etc.)

7:5 - to set the aspect ratio for 5×7 prints

16:9 - to set the aspect ratio to the aspect ratio of most HDTVs

其中值得一提的就是 DIN ,貌似是欧洲标准的 A4 纸张比例。

Rotate

这个比较好理解,就是旋转照片

Transform

变形,这是一个很棒的功能, VSCO Android 版有这个功能时间也不长,利用空间的变形可以将原本侧面拍摄导致的图片变形给纠正回来。

  • VerticalPerspective 垂直方向变形
  • Horizontal Perspective 水平方向变形
  • Rotation 旋转

Brush

笔刷

Dodge & Burn

完全不知道怎么翻译,感觉涂抹会产生红色像素

Exposure

调整曝光的画笔

Temperature

色温画笔

Saturation

饱和度画笔

Selective

选择点,单独对某个局部进行调整. 可以增加选择点,每个选择点可以使用单击,进行”剪切”,”复制”,”删除”和”撤销该选择点所有操作”.

而每个选择点则有”B”: Brightness, “S”:Saturation, “C”:Contrast . 这样三个可选操作.

而双指则可以选择该点影响的范围.

长按拖动则可以移动选择点.

Healing

修复,好像 PS 中的修复图章,只是这边只要轻轻一涂抹, Snapseed 将自动修复涂抹的区域.

Vignette

直译的话, Vignette 是装饰图案,小图案之类的意思. 而这边应该是指针对图片增加暗角,或者调高角落亮度的操作. 这里面又分为 “Outer Brightness”, 和 “Inner Brightness” 两种操作. 分别对应着暗角,和亮角。

Filters

一些滤镜,和工具不同的是,下面的内容都是在原有图片的基础上增加内容,而不是针对原始图片进行修改。

Lens Blur

这个词我也不知道怎么描述,似乎一直都是以英文描述。用官方的说法,就是增加镜头虚化效果,让注意力都集中到核心物体上。这个工具中又分成线性“linear”和椭圆”elliptical“两种模糊工具。

利用里面另外一个功能也可以定义虚化的图形,不单纯可以是圆形。

Blur Strength

模糊程度,更加模糊。向右滑动增加模糊的程度

Transition

增加周围虚化和中心物体的距离,让过度更加自然。

Vignette Strength

暗角强度,类似工具中的暗角工具。

Glamour Glow

光晕效果,直译过来就是”富有魅力的光晕“。其中每一种滤镜又可以单独调整。

Glow

光晕效果

Saturation

光晕效果色彩饱和度

Warmth

光晕效果色调冷暖。

Tonal Contrast

对比度

High Tones

增加高光部分对比度

Mid Tones

增加中间色对比

Low Tones

增加暗部色彩对比

Protect Shadows

防止暗部因为对比度的增加而损失细节

Protect Highlights

防止高光部分因为对比度增加而损失细节。

HDR Scape

High Dynamic Range 高动态范围成像

  • Filter Strength 滤镜的效果
  • Brightness 亮度
  • Saturation 饱和度

Drama

戏剧风格

  • Filter Strength 滤镜的效果
  • Saturation 饱和度

Grunge

色彩和纹理, 平行的线图标为纹理,交叉箭头为随机纹理与色彩。

  • Style 选择1500种不同的纹理
  • Brightness 亮度
  • Contrast 对比度
  • Texture Strength 纹理强度,0表示没有强度,等于没有增加纹理
  • Saturation 饱和度

Grainy Film

木纹理

  • Grain 自然的颗粒感
  • Style Strength 风格强度

Vintage

带来50,60,70年代的胶片感觉。

  • Brightness 亮度
  • Saturation 饱和度
  • Style Strength 风格强度

Vignette Strength

暗角的强度

Retrolux

创造复古,怀旧,有历史痕迹的胶片感觉

  • Brightness 亮度
  • Saturation 饱和度
  • Contrast 对比度
  • Style Strength 风格强度
  • Scrathches 划痕,value为0依然有效果
  • Light Leaks 漏光,alue为0依然有效果

Noir

Create moody, cinematic black and white images with darkroom-inspired toning and wash effects. 对胶片工业不是很了解,很不好翻译啊,总之就是模拟胶片在暗室中冲洗的效果。

  • Brightness 亮度
  • Wash 模拟darkroom 中over-processing
  • Grain 颗粒感,0为没有颗粒感
  • Filter Strength 滤镜强度

Black & White

黑白效果

  • Brightness 亮度
  • Contrast 对比度
  • Grain 颗粒感,0为没有颗粒感

Frames

调整设置不同边框,滑动调整边框的宽度。边框被应用之后就不能再对图片大小进行调整,所以调整图片大小之后添加边框。

其他可能用到的参数

HSL

HSL是色相、饱和度、明度的简称:

  • 色相是一种颜色区分于另外一种颜色的首要标准,例如红色与黄色。
  • 饱和度是衡量一种颜色鲜艳程度的标准。
  • 明度是衡量一种颜色明亮程度的标准。

曲线:

提亮 & 压暗曲线:提升或降低画面亮度。

左侧曲线可以调整图像中暗色区域,右侧则是高光部分

亮的地方更加亮,暗的地方更加暗一些,提高对比度. S曲线.

Reference


2016-05-19 Snapseed , PhotoEditing , Anroid , VSCO

gunicorn 部署 web.py 应用

整理文档之,部署 web.py 应用

之前有一个项目使用了 web.py 作为 web server,必然遇到的一个问题就是完成代码之后的部署,网上简单的搜索了一下就确定使用 gunicorn ,比较简单的 wsgi, web server gateway interface。

gunicorn

Gunicorn ‘Green Unicorn’ 是一个 Python WSGI HTTP Server for UNIX. Gunicorn 兼容众多 Python Web 框架,能轻松集成,并且消耗资源少,速度快。

安装

pip install gunicorn

具体可以参考官网,官网推荐使用 virtualenv 来安装。

#  ...
app = web.application(urls, globals())
#  在这里加入下面这句,即可
application = app.wsgifunc()

然后使用如下命令运行:

gunicorn code:application

其中code就是指code.py,application就是那个wsgifunc的名字。 这样运行的话, gunicorn 默认作为一个监听 127.0.0.1:8000 的web server,可以在本机通过: http://127.0.0.1:8000 访问。

gunicorn -b 192.168.0.123:8080 code:application

Nginx 反向代理

Gunicorn 是 WSGI HTTP 服务,通常将其放到 Nginx 服务器后

server {
	listen 80;
	server_name example.org;
	access_log  /var/log/nginx/example.log;
	location / {
		proxy_pass http://127.0.0.1:8000;
		proxy_set_header Host $host;

		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

停止 gunicorn

使用如下命令停止 gunicorn

pkill gunicorn

reference


2016-05-11 Python , Gunicorn , webpy , web

Google+

最近文章

  • vim presentation 大纲
  • Vim 寄存器 Vim 的寄存器可以看成 Vim 中额外用来存储信息的区域,虽然看不见,但是如果使用 x, s, y, p 等等命令的时候都无意识的使用到了 Vim 的寄存器(register).
  • vim normal 命令 替换::%s/^/#/g visual block:ggI# 注释第一行后用.重复执行每一行 我们可以在第三种方法之上用normal命令实现上述需求,步骤:
  • Vim 中的宏命令 Vim 的设计哲学中有这样一句话:”if you write a thing once, it is okay. However if you’re writing it twice or more times, then you should find a better way to do it”.
  • headless chrome puppeteer Headless 最早的时候在 PhantomJS 听说过这个概念,后来在 GitHub 各种项目中总有人不断提起这个概念,而最新看到的新闻便是 Chrome 开始支持 Headless,也正激起了我了解的欲望。