<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; Chrome</title>
	<atom:link href="https://zohead.com/archives/tag/chrome/feed/" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>Chromebook上使用Zed进行远程编辑</title>
		<link>https://zohead.com/archives/chromebook-zed-remote/</link>
		<comments>https://zohead.com/archives/chromebook-zed-remote/#comments</comments>
		<pubDate>Mon, 24 Oct 2016 17:35:38 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Chromebook]]></category>
		<category><![CDATA[MDwiki]]></category>
		<category><![CDATA[Web服务器]]></category>
		<category><![CDATA[Zed]]></category>
		<category><![CDATA[zedd]]></category>
		<category><![CDATA[zedrem]]></category>
		<category><![CDATA[编辑器]]></category>
		<category><![CDATA[远程]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1287</guid>
		<description><![CDATA[之前我写过一篇文章介绍 Chromebook 上比较强大的 Zed 编辑器 的上手体验，目前主要用于编辑自己的 MDwiki 知识库 目录。不过本地文件编辑完之后需要用 BTSync 之类的工具同步到 VPS 上，因此还是想把 Zed 的远程编辑功能用起来，而且配合 Zed 自带的 Web Server 功能还能直接本地查看 MDwiki 知识库。 Zed 目前支持 zedrem 和 zedd 这两种远程编辑方式，下面分别介绍一下另，另外也说明了如何使用 Zed 自带的 Web Server。 zedrem 远程编辑 zedrem 是用 Go 语言编写的工具，按照 Zed 官网的介绍一条命令就 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>之前我写过一篇文章介绍 Chromebook 上比较强大的 <a href="https://zohead.com/archives/chromebook-zed/">Zed 编辑器</a> 的上手体验，目前主要用于编辑自己的 <a href="https://zohead.com/archives/wikitten-mdwiki/">MDwiki 知识库</a> 目录。不过本地文件编辑完之后需要用 BTSync 之类的工具同步到 VPS 上，因此还是想把 Zed 的远程编辑功能用起来，而且配合 Zed 自带的 Web Server 功能还能直接本地查看 MDwiki 知识库。</p>
<p>Zed 目前支持 <a href="http://zedapp.org/features/edit-remote-files/">zedrem</a> 和 <a href="http://zedapp.org/zedd">zedd</a> 这两种远程编辑方式，下面分别介绍一下另，另外也说明了如何使用 Zed 自带的 Web Server。</p>
<h2 id="zedrem-远程编辑">zedrem 远程编辑</h2>
<p>zedrem 是用 Go 语言编写的工具，按照 Zed 官网的介绍一条命令就可以安装成功，默认情况下在 VPS 上运行 zedrem 命令之后会自动连接 Zed 服务器注册并返回远程编辑地址，Chrome 应用后续的列举文件、打开文件、保存等操作都会通过 Zed 服务器进行中转，这样可以直接绕过防火墙之类的限制。</p>
<p>zedrem 的使用也非常简单，在 VPS 上运行 zedrem 跟上需要编辑的目录路径（不加目录参数则是直接编辑当前目录）：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# ./zedrem wiki-dir
In the Zed application copy and paste following URL to edit:

https://remote.zedapp.org:443/fs/c1e91639eede09e0be43a4cf3f22d036

Press Ctrl-c to quit.
</pre>
<p>看到上面 zedrem 命令给出的地址之后，就可以在 Zed App 的 <strong>选择项目</strong> 界面中选 <strong>Remote Folder</strong>，在出来的 <strong>Open Zedrem Folder</strong> 界面中直接输入上面的地址并点击 <strong>Open</strong> 就可以远程编辑 VPS 上的目录了。</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442981/zedrem-folder.jpg" alt="打开 Zedrem 文件夹" title="打开 Zedrem 文件夹"></p>
<p>如果你对 zedrem 默认通过 Zed 服务器进行中转的工作机制不放心的话，也可以让 Zed Chrome 应用与 VPS 服务器直接连接，首先在 VPS 上让 zedrem 作为转发服务器运行：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# ./zedrem --server
Zedrem server now running on ws://0.0.0.0:7337
</pre>
<p>然后另开一个终端再运行 zedrem 命令并增加 <code>-u</code> 参数指定转发服务器地址，这里可以直接填 VPS 服务器的 IP 地址或者域名：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# ./zedrem -u ws://xxx.xxx.xxx.xxx:7337 wiki-dir
In the Zed application copy and paste following URL to edit:

http://xxx.xxx.xxx.xxx:7337/fs/7d6f781a002875f0a9fb57e095f3ddec

Press Ctrl-c to quit.
</pre>
<p>刚才运行 zedrem 转发服务器的终端上也会显示新的客户端已经连接：</p>
<pre class="prettyprint"><code class=" hljs ">Client 7d6f781a002875f0a9fb57e095f3ddec connected</code></pre>
<p>同样 Zed Chrome 应用也只需要输入上面 zedrem 命令给出的地址就可以进行远程编辑操作了，实际使用中也可以直接把 zedrem 的转发服务器模式放在后台运行的。</p>
<p>当然如果你的 Chromebook 和 VPS 的连接速度比较慢（比如在移动宽带网络下连接我的美国 VPS 可能就会比较慢），也可以在别的主机（例如使用另一台香港 VPS）上运行 zedrem 的转发服务器，并通过 <code>-u</code> 参数指定通过新的主机进行转发，这样也可以加快远程编辑的响应速度。</p>
<h2 id="zedd-远程编辑">zedd 远程编辑</h2>
<h3 id="vps-上安装-zedd">VPS 上安装 zedd</h3>
<p>一般使用 zedrem 就能满足普通用户的基本远程编辑需求了，但如果你想实现远程编辑文件之后运行特定的命令等高级的需求（例如我修改的 MDwiki 系统在新增 Wiki 项目之后需要运行命令生成刷新 Wiki 目录文件），zedrem 对这种情况就无能无力了。</p>
<p>不过还好 Zed 也为我们提供了 Zedd 后台程序，Zedd 支持远程执行命令，而且导出远程文件系统的方式也更加高效，Zedd 远程目录也可以在 Chrome 应用的历史项目中直接显示，比较适合 Chromebook 用户。</p>
<p>Zedd 程序是用 Node.js 编写的，安装步骤相对 zedrem 会稍微复杂一点，其详细说明也可以参考 Zed 官方网站，首先 VPS 上需要安装 Node.js 环境，我的 VPS 使用的是 Debian 7 系统，可以通过下面的命令安装（假设你有 VPS 的 root 访问权限，同时也会自动安装必需的 Node.js 的 npm 包管理工具）：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# curl -sL https://deb.nodesource.com/setup_4.x | bash -
root@zoserver:~# apt-get install -y nodejs
</pre>
<p>安装完成之后就可以通过 npm 命令安装 Zedd 程序：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# npm install -g zedd
</pre>
<h3 id="使用-zedd">使用 zedd</h3>
<p>Zedd 安装好之后可以先看看其运行帮助信息：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# zedd --help
Zedd is the Zed daemon used to edit files either locally or remotely using Zed.
Options can be passed in either as environment variables, JSON config in
~/.zeddrc or as command line arguments prefixed with '--':

   user:       username to use for authentication (default: none)
   pass:       password to use for authentication (default: none)
   remote:     bind to 0.0.0.0, requires auth, and disables
               enable-run by default
   port:       port to bind to (default: 7337)
   root:       root directory to expose (default: $HOME)
   enable-run: enable running of external programs in remote mode
   tls-key:    path to TLS key file (enables https)
   tls-cert:   path to TLS certificate file (enables https)
</pre>
<p>默认如果运行 zedd 程序不加任何参数会导出用户的主目录，而且默认也只有 <code>localhost</code> 本地才能访问，导出地址为：</p>
<pre class="prettyprint"><code class=" hljs cs">http:<span class="hljs-comment">//127.0.0.1:7337/</span></code></pre>
<p>当然对于我们要在 Chromebook 上远程编辑 VPS 上的文件就不能这么做了，根据情况可以在 VPS 服务器上运行 zedd 程序时：</p>
<ul>
<li>增加 <code>--remote</code> 参数可以支持外部连接；</li>
<li>增加 <code>--root</code> 参数指定导出的根目录（默认为 <code>$HOME</code> 用户主目录）；</li>
<li>增加 <code>--enable-run</code> 参数可以允许执行外部命令；</li>
<li>另外可以指定 <code>--user</code> 和 <code>--pass</code> 参数配置访问的用户名和密码。</li>
</ul>
<blockquote>
<p><strong>提示</strong></p>
<p>为了 VPS 上文件的安全性考虑，如果你有可用的 SSL 证书的话建议使用 <code>--tls-key</code> 和 <code>--tls-cert</code> 参数，这样可以使用 https 模式替代默认的 http 模式。</p>
</blockquote>
<p>例如我的 VPS 上可以这样运行 zedd 程序：</p>
<pre class="brush: bash; title: ; notranslate">
root@zoserver:~# zedd --remote --enable-run --root wiki-dir --user zeduser --pass zedpass
Zedd is now listening on http://0.0.0.0:7337
Exposed filesystem : /home/root/wiki-dir
Mode               : remote (externally accessible)
Command execution  : enabled
Authentication     : enabled
</pre>
<p>Chromebook 上要使用 Zedd 远程文件夹也比较简单，在选择项目界面中点击 <strong>Zedd Folder</strong> 进入 <strong>Open Zedd Folder</strong> 界面，该界面中就可以输入远程 Zedd 导出地址和用户名、密码：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442977/zedd-folder.jpg" alt="打开 Zedd 文件夹" title="打开 Zedd 文件夹"></p>
<p>确认之后点击 <strong>Connect</strong> 按钮连接正常的话就可以看到远程的目录树，接着就可以任意选择下面的子目录进行编辑了。</p>
<h3 id="zedd-的外部命令支持">zedd 的外部命令支持</h3>
<p>对于打开的远程 Zedd 文件夹，Zed Chrome 应用是支持运行外部命令的，首先使用 Zed 命令快捷键（默认为 <kbd>Ctrl-Shift-.</kbd>，我的 Chromebook 上改成了 <kbd>Ctrl-Shift-C</kbd>）或者点击 <strong>Tools</strong> -&gt; <strong>Run Command</strong> 菜单项，在弹出的 <strong>Enter command</strong> 中输入 external，Zed 会自动搜索，默认匹配到的两个就是远程执行外部命令用的：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442973/zedd-command.jpg" alt="Zed 执行外部命令" title="Zed 执行外部命令"></p>
<p>一般使用第一个 <strong>Tools:External:Insert Command Output</strong> 命令，选择该命令会让你输入需要在 VPS 主机上执行的命令及参数，并将远程命令的执行结果插入到当前所打开文件的光标位置。</p>
<p>如果你想要执行的命令有输出又担心影响正在打开的文件（Zed 是编辑区内容有改动就实时保存的），那可以直接打开 Zed 保留的 <code>zed::start</code> 只读文件并执行 Insert Command Output 操作，这样既可以看到远程命令的输出结果又不会改动其它文件的内容。</p>
<p>例如我打开远程 MDwiki 目录之后进行编辑之后需要进行刷新 Wiki 目录文件的操作，这就需要执行我写的 <code>generate-index.sh</code> 脚本。我就可以切换到 <code>zed::start</code> 文件并执行 <code>generate-index.sh</code> 远程命令并查看输出结果。当然如果你不关心输出结果，也可以不管当前打开的是什么文件，直接执行命令并附加 <code>&gt;/dev/null</code> 以忽略输出：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442975/zedd-external-program.jpg" alt="忽略外部命令输出" title="忽略外部命令输出"></p>
<p>这样配置之后我就能实现不经远程登录或同步 VPS 就能直接远程编辑 MDwiki 知识库的需求了，而且编辑完成之后直接在 Chromebook 上执行外部命令就能更新 Wiki 目录。</p>
<h2 id="使用-zed-自带-web-server">使用 Zed 自带 Web Server</h2>
<p>由于我的 VPS 上的 MDwiki 目录同时也开启了 BTSync 同步，需要时也可以将远程的 Wiki 目录同步到本地，同步到 Chromebook 之后也可以使用 Zed 自带的 Web Server 功能本地查看 MDwiki 知识库。</p>
<p>Zed 打开 MDwiki 目录之后同样使用命令快捷键运行命令，输入 static server 进行搜索，就会匹配 Zed 自带 Web Server 的几个命令：</p>
<ul>
<li>Tools:Static Server:Stop</li>
<li>Tools:Static Server:Start</li>
<li>Tools:Static Server:Generate Full Site</li>
</ul>
<p>选择第二个 <code>Tools:Static Server:Start</code> 命令启动 Zed 自带静态 Web Server，Zed 会自动打开新 Chrome 标签页显示 MDwiki 知识库，如果当前打开的项目目录下没有 <code>index.html</code> 或者 <code>default.html</code> 等文件则会自动显示文件列表。不再需要查看 Wiki 知识库时选择 <code>Tools:Static Server:Stop</code> 命令停止 Web Server 即可。</p>
<p>不过我在使用 Zed 自带 Web Server 时发现其存在不支持中文等非 ANSI 路径名以及包含特殊符号的文件名的问题，默认的文件列表页显示中文文件名同样不正确，因此我检出了 Zed 官方的 staticserver 包进行了修正，并在 GitHub 上新创建了一个仓库：</p>
<p><a href="https://github.com/zohead/staticserver">https://github.com/zohead/staticserver</a></p>
<p>测试完成之后我也为官方 staticserver 仓库创建了新的 Pull Request，只是目前还没有得到回应。</p>
<p>有使用 Zed 自带 Web Server 需求的朋友可以检出上面我的 staticserver 代码，并替换到 Zed Chrome 应用的 staticserver 包路径：</p>
<pre class="prettyprint"><code class=" hljs ruby">~<span class="hljs-regexp">/Extensions/pfmjnmeipppmcebplngmhfkleiinphhp</span><span class="hljs-regexp">/1.1.0_0/config</span><span class="hljs-regexp">/packages/gh</span><span class="hljs-regexp">/zedapp/staticserver</span></code></pre>
<p>替换之后重新启动 Zed 应用再运行启动 Web Server 的命令应该就可以解决不能正常访问中文路径的问题了。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/chromebook-zed-remote/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>适合Chromebook的Zed编辑器上手</title>
		<link>https://zohead.com/archives/chromebook-zed/</link>
		<comments>https://zohead.com/archives/chromebook-zed/#comments</comments>
		<pubDate>Sun, 19 Jun 2016 16:05:21 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Chromebook]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[Sublime Text]]></category>
		<category><![CDATA[Zed]]></category>
		<category><![CDATA[ZPM]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[快捷键]]></category>
		<category><![CDATA[编辑器]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1242</guid>
		<description><![CDATA[Zed 编辑器 对于很多 Chromebook 用户来说，缺少比较好用的本地编辑器是一个比较普遍的困扰，特别是我这样的程序员用户对于编辑器的要求就更多一些了。有一些同学是直接通过 crouton 安装 Sublime Text、GitHub Atom 等编辑器或者各种 IDE 软件来解决。 之前我介绍过 Caret 这款 Chrome 应用商店里的文本编辑器 App，如果只是用来编辑纯文本之类的文件那 Caret 是能胜任的，如果你需要额外的一些扩展功能，那只能另寻他法了。我还尝试过第三方开发者移植的 Chrome 版 Adobe Brackets 编辑器（和 Atom 有点类似），不过使用起 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="zed-编辑器">Zed 编辑器</h2>
<p>对于很多 Chromebook 用户来说，缺少比较好用的本地编辑器是一个比较普遍的困扰，特别是我这样的程序员用户对于编辑器的要求就更多一些了。有一些同学是直接通过 crouton 安装 Sublime Text、GitHub Atom 等编辑器或者各种 IDE 软件来解决。</p>
<p>之前我介绍过 <a href="https://zohead.com/archives/chromebook-caret/">Caret</a> 这款 Chrome 应用商店里的文本编辑器 App，如果只是用来编辑纯文本之类的文件那 Caret 是能胜任的，如果你需要额外的一些扩展功能，那只能另寻他法了。我还尝试过第三方开发者移植的 Chrome 版 <a href="http://brackets.io/">Adobe Brackets</a> 编辑器（和 Atom 有点类似），不过使用起来还是存在各种问题就作罢了。</p>
<p>还好后来我还是在 Chrome 商店里找到了今天要介绍的 Zed 编辑器，Zed 的使用方式和 Sublime Text 比较类似，其主要功能可以参考官网：</p>
<p><a href="http://zedapp.org/">http://zedapp.org/</a></p>
<p>Zed 编辑器其实是有 Chrome App 版本和 Windows、Mac、Linux 等系统下的 Standalone 版本的，Standalone 版本的功能比 Chrome App 版本要更多（例如可以直接运行本地命令等）。</p>
<p>对于 Chromebook 用户来说虽然默认只能用功能相对少的 Chrome App 版本，但相应的也能得到 Chrome 版本的带来的好处：</p>
<ul>
<li>一处安装多处直接运行；</li>
<li>自动通过 Google Drive 同步 Zed Chrome App 配置；</li>
<li>Zed Chrome App 默认自动从 Chrome 商店更新。</li>
</ul>
<p>而且开发者考虑到日益增长的 Chromebook 用户的需求目前也在不断更新 Chrome App 版本，我们可以从 <a href="https://chrome.google.com/webstore/detail/pfmjnmeipppmcebplngmhfkleiinphhp">Chrome 商店</a> 直接安装。</p>
<h2 id="初步使用">初步使用</h2>
<p>Zed 编辑器启动时会提示你使用哪种界面风格，默认是不带目录树甚至隐藏了菜单栏的风格，打开编辑器会显示选择项目界面：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442978/zed-initial.png" alt="Zed选择项目界面" title="Zed选择项目界面"></p>
<p>点击“Local Folder” 或者“Local File(s)”就可以打开本地的文件夹或文件编辑了，“Zedd Folder”和“Remote Folder”是两种直接编辑远程文件的方式后面单独再做介绍，另外 Zed 还直接支持打开 GitHub 版本库和 Dropbox 这点也比较方便。</p>
<p>打开具体的文件会直接显示文件内容，第一次打开某个项目文件夹的话则默认显示只读的 <code>zed::start</code> 内置使用介绍文件以帮助用户熟悉编辑器的各种快捷键之类的。</p>
<p>Zed 的文件编辑和 Sublime Text 这种类似是直接实时保存用户输入的结果，不需要单独的关闭保存操作。</p>
<p>通常的文件操作可以使用键盘快捷键或者 File 菜单完成：</p>
<ul>
<li><kbd>Ctrl-N</kbd> 键新建文件；</li>
<li><kbd>Ctrl-E</kbd> 键打开文件；</li>
<li><kbd>Alt-T</kbd> 键显示目录树；</li>
<li><kbd>F5</kbd> 键刷新文件夹中的文件列表。</li>
</ul>
<p>新建文件或者打开文件时会显示命令窗口，输入不存在的文件名就可以实现新建文件（当然也就可以直接在命令窗口中输入子目录路径）。</p>
<p>如果你在编辑的过程中需要打开另一个项目文件夹或者文件，那可以按 <kbd>Ctrl-Shift-o</kbd> 键显示最开始的选择项目界面，这样就不用重启 Zed App 了。</p>
<h2 id="zed-配置文件">Zed 配置文件</h2>
<p>这里先说 Zed 的配置文件是因为最常用的调出 Zed 命令窗口的默认快捷键 <kbd>Ctrl-.</kbd> 或 <kbd>Ctrl-Shift-.</kbd> 在 Chromebook 上是不起作用的，当然你也可以鼠标点击 Tools 菜单下的 Run Command 菜单项来实现，不过为了使用方便，我们还是先修改 Zed 配置文件来定制命令快捷键。</p>
<p>打开 Zed 编辑器开始显示的选择项目界面里可以看到 <code>Configuration</code> 项，使用此项就可以打开 Zed 自带的配置项目目录，默认第一次打开还是会显示 <code>zed::start</code> 文件，使用 <kbd>Ctrl-E</kbd> 快捷键或者打开菜单选择 <code>user.json</code> 文件进行编辑，这个就是 Zed 的用户配置文件。</p>
<p>默认的 <code>user.json</code> 用户配置文件可能是这样的（仅供参考）：</p>
<pre class="brush: jscript; title: ; notranslate">
{
    imports: [
        &quot;/default.json&quot;
    ],
    preferences: {},
    modes: {},
    keys: {},
    commands: {},
    handlers: {},
    themes: {},
    packages: [    ]
}
</pre>
<p>我们可以在 <code>keys</code> 中新增一项来修改默认的运行命令快捷键：</p>
<pre class="brush: jscript; title: ; notranslate">
    keys: {
        &quot;Command:Enter Command&quot;: {
            win: &quot;Ctrl-Shift-C&quot;
        }
    },
</pre>
<p>例如改成上面的内容就可以使用 <kbd>Ctrl-Shift-C</kbd> 键调出运行 Zed 命令的窗口了。</p>
<p>当然对于修改主题之类的常用配置，你可以使用 <kbd>Ctrl-,</kbd> 快捷键或者 Configuration - Preferences 菜单项进行图形化的配置，这样也更加方便。</p>
<h2 id="zed-命令">Zed 命令</h2>
<p>Zed 命令的使用方式也是和 Sublime Text 比较相似，经过上面的步骤修改命令快捷键之后就可以体验 Zed 的各项命令了，Zed 的命令窗口支持模糊查找识别的功能。</p>
<p>Zed 相对 Chrome 商店里其它各种编辑器的一大优势就是其支持 Zed Package Manager（简称 ZPM）包管理特性，第三方开发者可以根据需要为 Zed 开发各种扩展功能包，ZPM 的介绍可以参考 Zed <a href="http://zedapp.org/2014/05/zed-package-manager/">官网文章</a>，常用 ZPM 包在这里：</p>
<p><a href="https://github.com/zedapp/zed/wiki/Packages">https://github.com/zedapp/zed/wiki/Packages</a></p>
<p>按快捷键调出运行命令的窗口后，输入 install 就可以看到默认匹配的安装 ZPM 包命令：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442973/zed-command.png" alt="Zed命令窗口" title="Zed命令窗口"></p>
<p>同样输入 installed 就可以看到默认匹配的列出已安装的 ZPM 包命令，还是比较方便的。</p>
<h2 id="markdown-编辑与预览">Markdown 编辑与预览</h2>
<p>Zed 虽然不像 Sublime Text 那样支持多标签页功能，但也可以在一个 Zed 窗口中显示最多 3 个编辑窗口，通过快捷键可以切换：</p>
<ul>
<li><kbd>Ctrl-2</kbd> 将窗口分割为两个编辑窗口；</li>
<li><kbd>Ctrl-3</kbd> 将窗口分割为三个编辑窗口（最好高分屏才这么干哈）；</li>
<li><kbd>Ctrl-1</kbd> 恢复为单编辑窗口；</li>
<li><kbd>Ctrl-0</kbd> 在多个编辑窗口之间切换焦点。</li>
</ul>
<p>Zed 自带 Markdown 预览功能，如果编辑的是 Markdown 文件则可以通过 <kbd>Ctrl-P</kbd> 快捷键显示预览窗口，开启预览之后还可以多次使用 <kbd>Ctrl-P</kbd> 快捷键切换源 Markdown 文件编辑窗口和预览窗口的大小，当然也可以按 <kbd>Ctrl-1</kbd> 键关闭预览窗口。</p>
<p>我使用的 <a href="http://wiki.zohead.com/">Wiki 系统</a> 中的 Markdown 文件预览效果如下：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442978/zed-markdown.png" alt="Zed自带Markdown预览效果" title="Zed自带Markdown预览效果"></p>
<p>你可能从上面的截图可以看出 Zed 的 Markdown 预览功能似乎效果一般，这是因为 Zed 自带的 Markdown 预览模块对 GitHub 格式的 Markdown 文件的支持是不太好的。</p>
<p>不过还好已经有人为 Zed 写了一个支持 GitHub Flavored Markdown 的 ZPM 包，其项目地址如下：</p>
<p><a href="https://github.com/akoenig/zed-gfm-preview">https://github.com/akoenig/zed-gfm-preview</a></p>
<p>按照该项目主页的介绍，调出运行命令窗口，选择 <code>Tools:Zpm:Installed Packages</code> 命令准备安装新的 ZPM 包，包地址中输入 <code>gh:akoenig/zed-gfm-preview</code> 就可以完成安装。</p>
<p>安装完成之后编辑 Markdown 文件时可以通过 <code>GitHub:Markdown:Preview</code> 命令使用 zed-gfm-preview 方式来预览 Markdown，当然还是建议修改 Zed 用户配置文件直接将 zed-gfm-preview 配置为 Zed 默认的 Markdown 预览方式：</p>
<pre class="brush: jscript; title: ; notranslate">
modes: {
    markdown: {
        handlers: {
            preview: [
                &quot;!Tools:Preview&quot;,
                &quot;GitHub:Markdown:Preview&quot;
            ]
        }
    }
}
</pre>
<p>这样还是可以按默认的 <kbd>Ctrl-P</kbd> 快捷键直接预览 Markdown 文件：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442979/zed-markdown-github.png" alt="GitHub Markdown预览效果" title="GitHub Markdown预览效果"></p>
<p>可以看到效果也比 Zed 自带的实现好多了哦，代码块的显示也正确了。</p>
<h2 id="后记">后记</h2>
<p>本文只是对 Zed 编辑器的初步介绍，另外一些 Zed 自带的比较好用的远程编辑文件、自带 Web 服务器等特性后面有空再来写了，大家也可以研究折腾甚至开发自己的 ZPM 包哦。文章中有任何问题还请提出指正，火热的六月仍然祝大家玩的开心呢 ^_^。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/chromebook-zed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>发布360云盘播放助手Chrome扩展</title>
		<link>https://zohead.com/archives/cloud-player-helper/</link>
		<comments>https://zohead.com/archives/cloud-player-helper/#comments</comments>
		<pubDate>Fri, 08 Apr 2016 14:50:04 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[360]]></category>
		<category><![CDATA[VXG Media Player]]></category>
		<category><![CDATA[云盘]]></category>
		<category><![CDATA[助手]]></category>
		<category><![CDATA[扩展]]></category>
		<category><![CDATA[播放]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1207</guid>
		<description><![CDATA[最近一段时间以来由于我的个人电脑终端已经基本从 Windows PC 转向 Chromebook，自然之前的一些需求也要看看如何在 Chromebook 上实现。其中一个比较多的需求就是各种云盘中的在线视频播放问题（毕竟我也已经很久没有直接下载视频播放了，基本都是用云盘的离线下载）。 我目前使用的 360 云盘虽然有 Android 和 Windows 下的在线视频播放客户端，但是 Web 端的视频播放功能相对还是弱了一点，云盘里基本上只有标准 H.264 编码的 mp4 格式的视频才能直接用 Chromebook 进行在线播放。 这里还是提一下 360 云盘 Web 版的一个优点就是标准 H [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近一段时间以来由于我的个人电脑终端已经基本从 Windows PC 转向 Chromebook，自然之前的一些需求也要看看如何在 Chromebook 上实现。其中一个比较多的需求就是各种云盘中的在线视频播放问题（毕竟我也已经很久没有直接下载视频播放了，基本都是用云盘的离线下载）。</p>
<p>我目前使用的 360 云盘虽然有 Android 和 Windows 下的在线视频播放客户端，但是 Web 端的视频播放功能相对还是弱了一点，云盘里基本上只有标准 H.264 编码的 mp4 格式的视频才能直接用 Chromebook 进行在线播放。</p>
<blockquote>
<p>这里还是提一下 360 云盘 Web 版的一个优点就是标准 H.264 编码的 mp4 格式视频竟然还是以 html5 方式直接播放的。</p>
</blockquote>
<p>其它诸如 avi、wmv、mkv、rmvb 等很常见的视频文件都不能直接在线播放，点击时会直接提示用户下载视频到本地。</p>
<blockquote>
<p><strong>解释</strong></p>
<p>Chrome 浏览器默认只支持播放 H.264 和 WebM 编码的视频,而且 Chrome 45 以上的版本已经不支持不太安全的 NPAPI 形式的插件了（对于 Chromebook 这种终端使用 NPAPI 插件也不现实哦）。</p>
</blockquote>
<p>考虑到 360 云盘的 Android App 目前看起来通过 Chrome ARC 环境也不能正常运行，因此我就稍微花了几天时间写了一个针对 360 云盘的视频播放助手 Chrome 扩展，建议直接从 Chrome 应用商店中安装本扩展：</p>
<p><a href="https://chrome.google.com/webstore/detail/klomjfcgakppceibbbgkbdklmhiiidkl">https://chrome.google.com/webstore/detail/klomjfcgakppceibbbgkbdklmhiiidkl</a></p>
<p>本播放助手扩展主要对 360 云盘的 Web 版做了一些改进：</p>
<ul>
<li>360 云盘的文件列表界面中点击非 mp4(webm) 的视频文件也可以弹出视频播放网页；</li>
<li>视频分类界面中点击视频文件也能达到同样的效果；</li>
<li>视频播放网页上方增加播放助手图标，并显示 <code>[转码视频]</code> 和 <code>[原画视频]</code> 链接，点击可以直接播放，右键也可以复制视频链接地址到其它播放器中播放。</li>
</ul>
<p>特别需要说明的是虽然 Chrome 浏览器本身只支持播放 H.264 和 WebM 编码的视频,不过还好国外的 Video Experts Group 推出了适用于 Chrome 浏览器的 NaCl（PNaCl） 形式的视频播放插件 <code>VXG Media Player Plug-in</code>，此插件可以提升 Chrome 浏览器的视频播放能力，而且相比 NPAPI 插件也更加安全。</p>
<p>有关 <code>VXG Media Player</code> 视频播放器插件的详细介绍可以参考其官网：</p>
<p><a href="http://www.videoexpertsgroup.com/chrome-media-player-plug-in/">http://www.videoexpertsgroup.com/chrome-media-player-plug-in/</a></p>
<p><code>VXG Media Player</code> 插件的基本特性包括：</p>
<ul>
<li>支持 RTSP, RTP, UDP, RTMP, MMS， HLS 等各种常见的媒体协议；</li>
<li>支持 H.264, MPEG-4, MPEG-2 等众多的视频编码；</li>
<li>支持 AAC, PCM, G711, MP3 等音频编码格式；</li>
<li>视频解码支持硬件加速；</li>
<li>由于是 NaCl（PNaCl） 形式的插件，在不同硬件平台上兼容性比较好。</li>
</ul>
<p>安装 <code>VXG Media Player</code> 插件并经过基本测试之后发现该插件虽然也有一些问题，但也算能满足 Chromebook 上网页直接播放视频的需求了。因此经过研究 <code>VXG Media Player</code> 插件的 API 之后决定在我的云盘播放助手扩展中使用此插件以实现更加全面的视频播放支持，最终的使用方式就是：</p>
<ul>
<li>mp4(webm) 视频： <br />
直接使用 360 云盘自带的 html5 视频播放功能，效果最好；</li>
<li>avi、wmv、mkv、rmvb 等视频： <br />
调用 <code>VXG Media Player</code> 插件接口让这些格式的视频也能在云盘视频播放界面中直接播放。</li>
</ul>
<p>安装 <code>VXG Media Player</code> 插件请移步 Chrome 商店：</p>
<p><a href="https://chrome.google.com/webstore/detail/hncknjnnbahamgpjoafdebabmoamcnni">https://chrome.google.com/webstore/detail/hncknjnnbahamgpjoafdebabmoamcnni</a></p>
<p>这里贴上我的云盘播放助手扩展运行效果截图：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737370806/cloud-player-helper.png" alt="云盘播放助手扩展" title="云盘播放助手扩展"></p>
<p>从上面的截图可以看到本扩展在 360 云盘播放界面增加的图标和两个链接，本扩展不会修改云盘播放界面上的默认播放效果（不管是使用 html5 视频播放或者 360 云盘的 Flash 视频播放器），只有点击增加的链接之后才会切换播放方式。</p>
<blockquote>
<p><strong>提示</strong></p>
<p>对于 mp4(webm) 格式的视频文件，由于 360 云盘已经支持比较好的 html5 视频播放效果，本扩展就没有提供使用 <code>VXG Media Player</code> 插件进行播放的功能。</p>
</blockquote>
<p>上面截图展示的就是点击 <code>[转码视频]</code> 链接之后使用 <code>VXG Media Player</code> 插件播放 mkv 视频的效果；当然你也可以在增加的 <code>[转码视频]</code> 和 <code>[原画视频]</code> 链接上点右键复制视频地址在其它播放器中播放（强烈建议 Chromebook 用户安装 Chrome 商店中的 VLC 播放器应用）。</p>
<p>如果你的 Chrome 浏览器没有安装 <code>VXG Media Player</code> 插件，那么在点击 <code>[转码视频]</code> 和 <code>[原画视频]</code> 链接时会自动提示你转到 Chrome 商店安装该媒体播放器插件：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371494/install-vxg-player.png" alt="提示安装 VXG Media Player 插件" title="提示安装 VXG Media Player 插件"></p>
<p>当然还是要说下本云盘播放助手扩展目前存在的问题：</p>
<ul>
<li><code>VXG Media Player</code> 插件的控制条暂时不支持拖动、快放、慢放、暂停操作，看起来是有些不足，视频插件更新之后应该会有改善；</li>
<li>mkv 等格式的高清视频效果没有外部 VLC 播放器的效果好；</li>
<li>360 云盘自动转码的 m3u8 HLS 视频某些情况下会出现播放速度过快的问题，还是 <code>VXG Media Player</code> 插件的锅，只能等后续更新了；</li>
<li>从上面的截图可以看到播放时会显示 <code>VXG Media Player</code> 插件的 logo 和评估版本的提醒，这个由于是个人使用也不好去掉咯。</li>
</ul>
<p>因此如果你发现 <code>VXG Media Player</code> 插件的播放效果不给力，也大可以使用其它播放器播放，本扩展并没有捆绑依赖 <code>VXG Media Player</code> 插件。</p>
<p>本扩展的源代码已经发布到 GitHub 上：</p>
<p><a href="https://github.com/zohead/cloud-disk-player-helper">https://github.com/zohead/cloud-disk-player-helper</a></p>
<p>如果你在使用云盘播放助手扩展的过程中发现任何问题，欢迎在本扩展的 Chrome 商店页面、GitHub 项目支持页面、本博客文章下提交 issue 或者留言，最后祝玩的开心～～～</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/cloud-player-helper/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>基于Chrome Socket的XMLHttpRequest</title>
		<link>https://zohead.com/archives/chrome-xhr/</link>
		<comments>https://zohead.com/archives/chrome-xhr/#comments</comments>
		<pubDate>Sat, 18 Jul 2015 16:49:35 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[chrome.sockets.tcp]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[XMLHttpRequest]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=999</guid>
		<description><![CDATA[之前在开发 Chrome OS 系统下的快盘文件系统时发现使用 Chrome 自带的 XMLHttpRequest 存在一些限制： 使用 jQuery 实现的 XHR 碰到 HTTP 302 redirect 等特殊的请求时浏览器会自动处理（例如：自动重定向），在 Chrome App 模式下会被限制，如果需要得到重定向的地址就不好实现，此时可以考虑用 Chrome Socket 来实现完整的 HTTP 协议请求。 有关 Chrome Socket 即 chrome.sockets.tcp 的说明可以参考这里： https://developer.chrome.com/apps/sockets [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>之前在开发 Chrome OS 系统下的快盘文件系统时发现使用 Chrome 自带的 XMLHttpRequest 存在一些限制：</p>
<p>使用 jQuery 实现的 XHR 碰到 HTTP 302 redirect 等特殊的请求时浏览器会自动处理（例如：自动重定向），在 Chrome App 模式下会被限制，如果需要得到重定向的地址就不好实现，此时可以考虑用 Chrome Socket 来实现完整的 HTTP 协议请求。</p>
<p>有关 Chrome Socket 即 chrome.sockets.tcp 的说明可以参考这里：</p>
<p><a href="https://developer.chrome.com/apps/sockets_tcp" target="_blank">https://developer.chrome.com/apps/sockets_tcp</a></p>
<p>后来发现网上已经有人实现了一个还算完整的基于 Chrome Socket 的 XMLHttpRequest：</p>
<p><a href="https://github.com/ahmadnassri/chrome.sockets.tcp.xhr" target="_blank">https://github.com/ahmadnassri/chrome.sockets.tcp.xhr</a></p>
<p>经过实际使用之后发现这个 XHR 类确实实现了基本的 HTTP 协议，但实际使用时还是有点问题，因此我在此项目基础上做了一些改进：</p>
<ul>
<li>原 chrome.sockets.tcp.xhr 不支持获取完整的 HTTP 响应内容，只能得到第一次接收到的数据，这样对于需要返回大量数据的下载等操作是不能接受的；</li>
<li>增加重定向判断，支持直接返回 HTTP 302 重定向的目标地址；</li>
<li>支持设置第一次接收到数据的超时；</li>
<li>支持所有接收的数据通过 ArrayBuffer 返回。</li>
</ul>
<p>修改过的基于 Chrome Socket 的 XMLHttpRequest 代码我放在这里了：</p>
<p><a href="https://github.com/zohead/chrome.sockets.tcp.xhr" target="_blank">https://github.com/zohead/chrome.sockets.tcp.xhr</a></p>
<p>chrome.sockets.tcp.xhr 的使用文档可以参考这里：</p>
<p><a href="http://chromesocketstcpxhr.readthedocs.org/en/latest/" target="_blank">http://chromesocketstcpxhr.readthedocs.org/en/latest/</a></p>
<p>修改之后的使用方法与这个文档里的基本一致，增加的部分例如可以通过 recvTimeout 属性指定第一次接受到数据的超时：</p>
<pre class="brush: jscript; title: ; notranslate">
var xhr = new chrome.sockets.tcp.xhr();
xhr.recvTimeout = 3500;
xhr.open('GET', 'http://google.com:80');
xhr.setRequestHeader('X-Requested-With', 'chrome.sockets.tcp.xhr');
xhr.send(null);
</pre>
<p>上面的代码就表示连接成功之后如果 3.5 秒之内没有接收到数据就认为超时断开连接。</p>
<p>由于此 chrome.sockets.tcp.xhr 项目功能实现的还不是特别完整，如果此项目使用中发现有什么问题欢迎提出并 fork 修改哦～～～</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/chrome-xhr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>发布Chrome OS快盘文件系统</title>
		<link>https://zohead.com/archives/kuaipan-chromeos/</link>
		<comments>https://zohead.com/archives/kuaipan-chromeos/#comments</comments>
		<pubDate>Wed, 01 Jul 2015 17:40:32 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[Chromebook]]></category>
		<category><![CDATA[fileSystemProvider]]></category>
		<category><![CDATA[云存储]]></category>
		<category><![CDATA[快盘]]></category>
		<category><![CDATA[文件系统]]></category>
		<category><![CDATA[缩略图]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=982</guid>
		<description><![CDATA[今年早些时候购入了三星 ARM Chromebook，一直有感于 Chromebook 上只能使用 Google Drive 的不爽（必须翻墙，虽然我一直都开着 ShadowSocks 之类的），后来看到来自日本的开发者 Yoichiro Tanaka 为 Chrome OS 开发了 SFTP Dropbox OneDrive 等文件系统，才发现 Chrome OS 从 40.0 版本开始提供了 fileSystemProvider API，开发者可以使用此 API 开发 Chrome OS 专用的第三方文件系统，这样所有 Chrome OS App 都可以读写文件系统。 想到平时经常用的快盘 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>今年早些时候购入了三星 ARM Chromebook，一直有感于 Chromebook 上只能使用 Google Drive 的不爽（必须翻墙，虽然我一直都开着 ShadowSocks 之类的），后来看到来自日本的开发者 Yoichiro Tanaka 为 Chrome OS 开发了 SFTP Dropbox OneDrive 等文件系统，才发现 Chrome OS 从 40.0 版本开始提供了 <a href="https://developer.chrome.com/apps/fileSystemProvider" target="_blank">fileSystemProvider API</a>，开发者可以使用此 API 开发 Chrome OS 专用的第三方文件系统，这样所有 Chrome OS App 都可以读写文件系统。</p>
<p>想到平时经常用的快盘（原金山，现已被迅雷收购）云存储，因此最近参考了快盘 API 和 Chrome OS 相关文档之后花费了些时间使用纯 JavaScript 开发了一款 Chrome OS 下的快盘文件系统。</p>
<h2 id="-">下载安装</h2>
<p>建议直接从 Google Chrome 应用商店安装本应用，这样以后可以自动升级 App：</p>
<p><a href="https://chrome.google.com/webstore/detail/kkjodkkaeoeogphajdfbgcbmohpkemjd" target="_blank">https://chrome.google.com/webstore/detail/kkjodkkaeoeogphajdfbgcbmohpkemjd</a></p>
<blockquote><p>此 Chrome 应用只支持 Chrome OS 或者 Chromium OS 操作系统，例如 Chromebook 笔记本、Chromebox、Chromebase 一体机等设备，不支持 Windows 等普通桌面或移动操作系统上的 Chrome 浏览器。</p>
<p>安装运行的 Chrome OS 系统版本需要至少 40.0 版本以上，为达到更好的使用效果，建议始终更新至最新版本，下面将详细说明。</p></blockquote>
<p>如果您不能方便的访问 Google Chrome 应用商店，那也可以直接访问此项目的 GitHub 主页并检出代码本地安装（本地安装步骤这里就不详述了）：</p>
<p><a href="https://github.com/zohead/kuaipan-chromeos/" target="_blank">https://github.com/zohead/kuaipan-chromeos/</a></p>
<h2 id="-">使用介绍</h2>
<p>安装成功之后在 Chrome OS 应用程序启动器或者扩展程序界面中启动快盘文件系统就会出现下面的主界面：</p>
<p><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737371734/kpcos-mount.png" target="_blank"><img alt="Chrome OS 快盘界面" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371734/kpcos-mount.png" width="640" height="400" /></a></p>
<p>界面非常简单，只有 挂载快盘、断开快盘 两个操作，点击 “挂载快盘” 按钮稍等片刻就会弹出快盘官方网站授权快盘应用的界面，输入您的用户名和密码登录并授权给 快盘 for Chrome OS 应用即可。</p>
<p>挂载完成之后主界面会自动隐藏并弹出 Chrome OS 文件管理器应用，自动显示快盘的文件列表：</p>
<p><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737371721/kpcos-files.png" target="_blank"><img alt="快盘文件列表" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371721/kpcos-files.png" width="640" height="400" /></a></p>
<p>当前初始发布的 0.1.1 版本实现了基本的文件操作功能，文件和文件夹的创建、删除、重命名、下载、上传都支持，不支持文件共享、协助等 Chrome OS 本身并不支持的功能。</p>
<p>挂载完成之后快盘里存储的图片、PDF、Office 文档等 Chrome OS 系统直接就支持的文件可以直接在文件管理器 App 中双击打开，H264 等标准格式的视频也可以在文件 App 中直接双击打开实现在线播放效果：</p>
<p><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737371891/kpcos-video.png" target="_blank"><img alt="快盘视频在线播放" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371891/kpcos-video.png" width="562" height="505" /></a></p>
<h2 id="-">使用限制</h2>
<p>需要注意的是由于快盘开放 API 的限制，此 App 当前存在以下限制：</p>
<ul>
<li>暂时支持上传最大 300MB 的文件；</li>
<li>不支持从非 0 的位置写文件或者将文件 truncate 为非 0 大小（快盘未开放续传上传 API，对正常使用影响不大，除非某些 Chrome App 需要从非 0 位置写文件）；</li>
<li>同样由于快盘未开放续传上传 API，文件上传的实际写入操作只能在关闭文件的时候（即上传完成时）进行，这将导致写完成之后要等一会才能真正上传完成；</li>
<li>如果上传的文件比较大那需要额外等待一段时间，中间会出现上面视频播放图片中的超出预期时间的提示框，此时不要点取消按钮，直接不用管它，等上传实际完成即可，如果上传失败会报错；</li>
<li>其它快盘用户共享给您的协作文件夹不会在文件列表中显示；</li>
<li>不支持查看文件历史版本功能，需要在网页端或者 PC 客户端中查看。</li>
</ul>
<blockquote><p>据说快盘 API 有每天 5000 次的调用次数限制，我自己测试没有达到这个限制，如果有其它用户使用此 App 真的导致用不了了我会尝试联系快盘调大 API 调用次数限制。</p></blockquote>
<h2 id="-">缩略图问题</h2>
<p>Chrome OS 文件 App 中显示文件列表时支持以缩略图形式显示，这个对于照片文件夹特别有用，但是 Chrome OS 44.0 以下版本的文件 App 存在 Bug，低版本对于图片文件夹并没有请求缩略图信息，而是直接读取文件夹中每个图片文件完整数据并显示为缩略图，这样会导致访问照片文件夹速度比较慢（有时会出现上面在线视频播放中的超时提示）。这个问题由于是文件 App 的问题，无法直接解决只能更新 Chrome OS 版本。</p>
<p>这个是以缩略图形式显示存储在快盘里的照片文件夹效果：</p>
<p><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737371890/kpcos-tb.png" target="_blank"><img alt="快盘照片文件夹" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371890/kpcos-tb.png" width="640" height="400" /></a></p>
<h2 id="-">其它</h2>
<p>如果在使用中发现什么问题欢迎在我的 GitHub 项目主页上提交 issue，出现的 Bug 我会尽量解决：</p>
<p><a href="https://github.com/zohead/kuaipan-chromeos/issues" target="_blank">https://github.com/zohead/kuaipan-chromeos/issues</a></p>
<p><strong><em> 祝玩的开心 ^_^ </em></strong></p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/kuaipan-chromeos/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>解决三星Chromebook上Caret工作异常</title>
		<link>https://zohead.com/archives/chromebook-caret/</link>
		<comments>https://zohead.com/archives/chromebook-caret/#comments</comments>
		<pubDate>Mon, 04 May 2015 16:33:21 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[ACE]]></category>
		<category><![CDATA[Caret]]></category>
		<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[Chromebook]]></category>
		<category><![CDATA[Zed]]></category>
		<category><![CDATA[三星]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[光标]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=935</guid>
		<description><![CDATA[最近入的三星 Chromebook 在使用时有个小遗憾：一直感觉没有一款比较好的离线文本编辑器 App，之前用的 Google 官方出的 Text 编辑器 App，确实是比较小巧耐用的，就是功能确实还是太简单了，难道还让我用 Chrome OS Shell 里的 vim? 后来看到国外有人推荐了好几款 Chrome OS 下的编辑器 App，例如 Zed 之类的，最后综合比较之后还是决定用 Caret 编辑器，在 Windows Chrome 上安装 Caret App 之后用起来确实是非常不错的，但比较意外的是在三星 Chromebook 上使用时却发现有两个比较严重的问题： 1、键盘输入的 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近入的三星 Chromebook 在使用时有个小遗憾：一直感觉没有一款比较好的离线文本编辑器 App，之前用的 Google 官方出的 <a href="https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg" target="_blank">Text</a> 编辑器 App，确实是比较小巧耐用的，就是功能确实还是太简单了，难道还让我用 Chrome OS Shell 里的 vim?</p>
<p>后来看到国外有人推荐了好几款 Chrome OS 下的编辑器 App，例如 Zed 之类的，最后综合比较之后还是决定用 <a href="https://chrome.google.com/webstore/detail/caret/fljalecfjciodhpcledpamjachpmelml" target="_blank">Caret</a> 编辑器，在 Windows Chrome 上安装 Caret App 之后用起来确实是非常不错的，但比较意外的是在三星 Chromebook 上使用时却发现有两个比较严重的问题：</p>
<p>1、键盘输入的时候光标位置不对，输入的字符越多光标就越向后偏移，这样造成在 Caret 下根本无法选择文字，查找替换之类的也很麻烦；</p>
<p>2、使用 Chromebook 自带的中文输入法输入中文的时候会出现选择候选词之后候选词的最后一个字总会被截掉的问题，例如输入“中文”这两个汉字组成的词，选择候选词之后就只有一个“中”字了，如果只输入一个汉字就会出现死活都显示不出来的诡异现象。</p>
<p>出现这两个问题之后我尝试过在 Caret 的 GitHub 网页上提交新的 issue，但作者只是说应该是 Caret 用的 ACE 编辑器处理的问题，作者无力解决。</p>
<p>经过一番查找尝试，光标显示的问题才找到办法解决。Caret 用的 ACE 编辑器只支持等宽字体，而 Chromebook 上默认用的 Noto Sans 也是等宽字体，无奈我在 Caret 中修改用户配置把字体修改为各种其它 Chromebook 自带的等宽字体（monospace 等等）都不起作用，最后多番尝试才发现 Chrome OS 早期使用的 Cousine 字体没有这个问题，在 Caret 的 “设置” - “用户偏好” 中修改为：</p>
<pre><strong>"fontFamily": "Cousine"</strong></pre>
<p>这样就可以了，保存之后无需重启程序 Caret 会自动使用新配置。</p>
<p>后来再经过尝试之后发现把 Windows 系统上的宋体这一经典的等宽字体拷贝安装到 Chromebook 上之后并指定使用 SimSun 宋体也不会出现这个问题，如果想显示成宋体的效果可以手工安装字体的（不过这需要启用 Chrome OS 的开发模式才行的哦）。</p>
<p>另外一个输入中文被截掉的问题，所幸在 ACE 编辑器的 issue 里看到了有中国用户报了类似的问题（虽然体现和解决方式不太一样），这个需要修改 Caret App 里的 ACE JavaScript 编辑器代码才行。</p>
<p>这里还是需要启用 Chrome OS 的开发模式，启用之后按 Ctrl + Alt + T 键打开 Chrome OS 的 Shell，进入这个目录（1.5.4_0 是 Caret 插件的实际版本，实际替换下就行）：</p>
<pre><strong>~/Extensions/fljalecfjciodhpcledpamjachpmelml/1.5.4_0/js/ace</strong></pre>
<p>用 vi 之类的其它编辑器打开该目录下的 <strong>ace.js</strong> 文件，找到下面这一段 JavaScript 代码：</p>
<pre class="brush: jscript; highlight: [2,3,4,5]; title: ace.js; notranslate">
        } else if (data == PLACEHOLDER.charAt(0)) {
            /*if (afterContextMenu)
                host.execCommand(&quot;del&quot;, {source: &quot;ace&quot;});
            else // some versions of android do not fire keydown when pressing backspace
                host.execCommand(&quot;backspace&quot;, {source: &quot;ace&quot;});*/
        } else {
</pre>
<p>直接注释掉上面高亮显示的第 2 - 5 行（就是这个 else if 代码块里的所有代码咯）。</p>
<p>ace.js 文件修改完成之后保存退出，然后重新打开 Caret App 就会发现中文输入问题也解决了。</p>
<p>另外需要说的是光标位置显示的问题在 Zed 等其他几个 Chrome 下的编辑器 App 里也是存在的，估计都是由于用的 ACE 编辑器引起的，但这个问题似乎在其它 x86 Chromebook 上好像也没出现过。如果本文中有任何问题还请提出指正哦，祝 Chromebook 用的开心 ^_^。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/chromebook-caret/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>使用Chrome Redirector扩展解决网站访问问题</title>
		<link>https://zohead.com/archives/chrome-redirector/</link>
		<comments>https://zohead.com/archives/chrome-redirector/#comments</comments>
		<pubDate>Wed, 15 Apr 2015 18:02:40 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[chinaunix]]></category>
		<category><![CDATA[diigo]]></category>
		<category><![CDATA[Redirector]]></category>
		<category><![CDATA[v2ex]]></category>
		<category><![CDATA[哔哩哔哩]]></category>
		<category><![CDATA[扩展]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=899</guid>
		<description><![CDATA[最近常去的 v2ex 网站被封，后来发现在大陆只能用 https 方式访问了，本来想在 Chrome 上安装类似 HTTPS Everywhere 这种扩展实现强制 https 访问 v2ex，后来考虑到还有其它网站地址需要在访问时修改的，因此找到了 Redirector 这个通用的地址替换扩展来实现需求。 Redirector 扩展可以让用户以正则表达式形式添加需要替换的地址，并输入新的地址。新地址中可以使用源地址中正则表达式查找到的子串，查找到的子串按顺序从 $1、$2、$3 开始排列。 下面列出我实际使用的几个替换规则举例说明： v2ex https 访问： 源： ^http://(.* [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近常去的 v2ex 网站被封，后来发现在大陆只能用 https 方式访问了，本来想在 Chrome 上安装类似 HTTPS Everywhere 这种扩展实现强制 https 访问 v2ex，后来考虑到还有其它网站地址需要在访问时修改的，因此找到了 Redirector 这个通用的地址替换扩展来实现需求。</p>
<p><a href="https://chrome.google.com/webstore/detail/redirector/pajiegeliagebegjdhebejdlknciafen" target="_blank">Redirector</a> 扩展可以让用户以正则表达式形式添加需要替换的地址，并输入新的地址。新地址中可以使用源地址中正则表达式查找到的子串，查找到的子串按顺序从 $1、$2、$3 开始排列。</p>
<p>下面列出我实际使用的几个替换规则举例说明：</p>
<ul>
<li><strong>v2ex https 访问：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://(.*?)\.v2ex\.com/(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>https://$1.v2ex.com/$2</strong></span><br />
说明：<br />
将 v2ex.com 域名的所有请求都替换为 https 形式，$1 就是二级域名部分，$2 就是需要保留域名后面的所有 URL。</p>
<ul>
<li><strong>mobile01.com 访问：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://(.*?)\.mobile01\.com/(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>http://$1.5i01.cn/$2</strong></span><br />
说明：<br />
<span style="line-height: 1.5;">台湾的 mobile01.com IT 网站由于某些原因在大陆被和谐不能访问了，但他们弄了个 5i01.cn 的镜像，这个域名在大陆是可以正常访问的。</span></p>
<ul>
<li><strong>userscripts 代码网站：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://(.*?)userscripts\.org/(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>http://$1userscripts-mirror.org/$2</strong></span><br />
说明：<br />
userscripts.org 这个提供 Chrome、Firefox 等浏览器 user 脚本的网站挂掉了，还好 userscripts-mirror.org 提供了所有镜像备份数据。</p>
<ul>
<li><strong>chinaunix 博客地址替换：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://blog\.chinaunix\.net/space\.php\?uid=([^&amp;]*)&amp;*[^&amp;]*&amp;id=(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>http://blog.chinaunix.net/uid-$1-id-$2.html</strong></span><br />
说明：<br />
这个就是由于 chinaunix.net 网站比较坑了，系统更新之后原来的博客文章地址都不能使用了，这个规则可以将老的地址替换成现在能用的地址（从老地址里过滤出用户 ID 和文章 ID），这样可以避免原来网络上的一些 chinaunix.net 文章链接失效了。</p>
<ul>
<li><strong>B 站 html5 视频播放：</strong></li>
</ul>
<p>源 1：<br />
<span style="color: #000080;"><strong>^http://www\.bilibili\.com/video/([^/]*)</strong></span><br />
目标 1：<br />
<span style="color: #000080;"><strong>http://www.bilibili.com/mobile/video/$1.html</strong></span><br />
源 2：<br />
<span style="color: #000080;"><strong>^http://www\.bilibili\.com/video/([^/]*)/index_([^\.]*)\.html</strong></span><br />
目标 2：<br />
<span style="color: #000080;"><strong>http://www.bilibili.com/mobile/video/$1.html#page=$2</strong></span><br />
说明：<br />
B 站的 Flash 播放器实在有点不能忍，问题比较多，这里需要添加两条规则，分别对应视频播放网页和分页播放的网页，这样可以自动将播放的网页转到移动版 html5 视频播放界面。</p>
<ul>
<li><strong>易信网易新闻评论：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://3g\.163\.com/ntes/special/([^/]*)/wechat_article\.html\?docid=([^&amp;]*)&amp;.*</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>http://3g.163.com/touch/article.html?docid=$2</strong></span><br />
说明：<br />
易信客户端的网易新闻帐号中打开的新闻网页里不能看完整评论，需要安装网易新闻客户端，这个就比较流氓了，不过还好也可以使用这个规则自动转向普通移动网页版的新闻界面，这样就可以正常查看评论了。</p>
<p>例如易信里打开的新闻地址是这样：<br />
<em>http://3g.163.com/ntes/special/0034073A/wechat_article.html?docid=AK0RCP7S00031H2L&amp;from=index&amp;from=timeline&amp;isappinstalled=1</em></p>
<p>我们需要替换成这种形式：<br />
<em>http://3g.163.com/touch/article.html?docid=AK0RCP7S00031H2L</em></p>
<ul>
<li><strong>diigo https 访问：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^http://(.*?)\.diigo\.com/(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>https://$1.diigo.com/$2</strong></span><br />
说明：<br />
效果和 v2ex 网站是一样的，原因也是此网站很早就被和谐了。</p>
<ul>
<li><strong>Google 字体：</strong></li>
</ul>
<p>源：<br />
<span style="color: #000080;"><strong>^[^:]*://fonts\.googleapis\.com/(.*)</strong></span><br />
目标：<br />
<span style="color: #000080;"><strong>http://fonts.useso.com/$1</strong></span><br />
说明：<br />
由于 WordPress 等博客程序中使用了 Google 字体，在大陆还是不能正常访问，这里直接使用了 360 CDN 缓存的 Google 字体，目测还是比较好用的。</p>
<p>以上为本人个人使用的一些网址替换规则，有什么问题欢迎提出指正哦，后续有新的加入还会继续更新的。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/chrome-redirector/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>为ARM Chromium增加Flash和Netflix支持</title>
		<link>https://zohead.com/archives/arm-chrome-flash/</link>
		<comments>https://zohead.com/archives/arm-chrome-flash/#comments</comments>
		<pubDate>Tue, 20 Jan 2015 14:57:10 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[armhf]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Chromium]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Netflix]]></category>
		<category><![CDATA[PPAPI]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=840</guid>
		<description><![CDATA[最近在 Android 4.4 上通过 Linux Deploy 运行了 armhf 版本的 Ubuntu 14.04 系统，使用 Android XServer XSDL 作为 X11 服务器跑 LXDE 的效果还是可以的。在 Ubuntu 系统上安装了最新 Chromium 浏览器之后一般的使用看起来也没有什么问题了，但感觉 ARM 上的 Chromium 浏览器缺少 Flash 播放器支持还是有点遗憾的。 由于 Adobe 对 Linux 上的 Flash Player 不上心，x86 Linux 版本的 Flash Player 也只更新到 11.2 版本就不更新了，更郁闷的还是 Ad [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近在 Android 4.4 上通过 Linux Deploy 运行了 armhf 版本的 Ubuntu 14.04 系统，使用 Android XServer XSDL 作为 X11 服务器跑 LXDE 的效果还是可以的。在 Ubuntu 系统上安装了最新 Chromium 浏览器之后一般的使用看起来也没有什么问题了，但感觉 ARM 上的 Chromium 浏览器缺少 Flash 播放器支持还是有点遗憾的。</p>
<p>由于 Adobe 对 Linux 上的 Flash Player 不上心，x86 Linux 版本的 Flash Player 也只更新到 11.2 版本就不更新了，更郁闷的还是 Adobe 根本就没正式释放出 armhf 版本的 libflashplayer.so。还好 Google 为新的 Chrome 浏览器默认提供 PPAPI 形式的 Flash 替代老的 NPAPI 形式插件，并不断在继续更新，PPAPI 模式的 Flash 外挂插件也放到沙盒里运行保证浏览器安全性。</p>
<p>Google 虽然没有直接提供 armhf Linux 系统的 Flash 插件，但其力推的 ChromeOS 系统中却直接集成了 PPAPI Flash 插件，我们从 ARM 版本的 Chromebook 系统中导出对应的 libpepflashplayer.so 应该就可以在普通 armhf Linux 系统中使用。</p>
<p>首先从这个网址下载 ARM Chromebook 中导出的 PPAPI Flash 插件：</p>
<p><a href="http://odroidxu.leeharris.me.uk/PepperFlash-12.0.0.77-armv7h.tar.gz" target="_blank">http://odroidxu.leeharris.me.uk/PepperFlash-12.0.0.77-armv7h.tar.gz</a></p>
<p>这个网站同时提供了 <a href="http://odroidxu.leeharris.me.uk/PepperFlash-15.0.0.152.r2-armv7h.tar.gz" target="_blank">15.0.0.152</a> 版本的 PPAPI Flash 插件，只是此版本的 Flash 插件需要 GLIBCXX_3.4.20 支持，Ubuntu 14.04 系统的版本才是 GLIBCXX_3.4.19 而无法使用，如果你使用的是更新版本的 Linux 系统可以直接下载使用 15.0.0.152 版本。</p>
<p>下载之后可以看到里面有 libpepflashplayer.so 文件，另外还有 ChromeOS 中同时增加的 libnetflixhelper.so 插件（提供 Netflix 媒体支持）。为方便起见，这里准备将 Flash 和 Netflix 支持同时在 ARM Linux 系统中开启。</p>
<p>首先切换为 root 账户将 libpepflashplayer.so 和 libnetflixhelper.so 文件放到 /usr/lib/chromium-browser/pepper 目录（没有则可以手工创建此目录）中，然后修改 <strong>/etc/chromium-browser/default</strong> 配置文件使 Chromium 浏览器在启动时自动加载对应的 PPAPI 插件：</p>
<pre class="brush: bash; title: /etc/chromium-browser/default; notranslate">
# Options to pass to chromium-browser
IFS=&quot;	&quot;
CHROMIUM_FLAGS=&quot;--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so	--ppapi-flash-version=12.0.0.77	--register-pepper-plugins=/usr/lib/chromium-browser/pepper/libnetflixhelper.so#Netflix Helper#Helper plugin for the Netflix application#1.0.3;application/x-ppapi-netflixhelper&quot;
</pre>
<p>需要特别注意的是上面的 Chromium 浏览器参数中含有空格（Netflix 插件名称等），会导致 Chromium 启动脚本解析出错，所以这里需要修改 IFS 分隔符为 TAB 键，CHROMIUM_FLAGS 变量中多个参数也必须以实际的 TAB 键（不可使用空格）隔开的，否则 Chromium 启动运行时会出现参数错误的问题。</p>
<p>另外由于 Flash 插件默认就已经在 Chromium 浏览器的 PPAPI 插件白名单中，因此不需要通过特殊参数注册 PPAPI 插件，直接使用 <strong>--ppapi-flash-path</strong> 参数指定 PPAPI Flash 插件文件路径就可以使用了。Netflix 插件则不在白名单中（推测 ChromeOS 浏览器的白名单中已经默认包含 Netflix 了），必须使用 <strong>--register-pepper-plugins</strong> 参数注册插件才可以正常使用。</p>
<p>配置文件修改完成之后，没有什么问题的话以非 root 账户身份重启 Chromium 浏览器，在地址栏中输入：<strong>chrome://plugins</strong> 就可以看到当前加载的插件列表了。</p>
<div style="width: 568px" class="wp-caption alignnone"><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737370805/chrome-ppapi-plugin.jpg" target="_blank"><img alt="Chromium插件列表" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737370805/chrome-ppapi-plugin.jpg" width="558" height="449" /></a><p class="wp-caption-text">Chromium插件列表</p></div>
<p>如意料中 Flash 和 Neflix 插件已经加载成功了，下面直接找个 Flash 游戏网页测试下就可以了，Flash 视频的播放效果虽然在 armhf 系统下不咋地，但也是可以用起来了，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/arm-chrome-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
