choicky 发布于 03月11, 2017

火麒麟Firekylin博客程序

简介:

Firekylin(火麒麟)是国人开发的、基于ThinkJS的博客程序。

ThinkJS是360前端团队奇舞团开发的NodeJS框架。Firekylin也出自该成员之手。

项目地址

特点

  • 基于NodeJS (ThinkJS本身就是NodeJS框架)

  • 速度较快

  • 功能比较完善

国人的程序作品,整体上是比较完善的,尽量能够开箱即用。 例如,如需要第三方的评论,从第三方评论提供方那边复制代码,然后直接在Firekylin后台粘贴即可。统计代码也类似。

阅读全文 »

choicky 发布于 11月27, 2016

安装基于git与MarkDown的Wiki:gollum

人生不息,折腾不止。

安装

https://github.com/gollum/gollum/wiki/Installation

中文支持

gem install gollum-rugged_adapter

基于gollum的wiki搭建 说,使用 rugged 这个adapter 代替自带的grit,就能支持中文。

运行

在Github创建 repository 并在Wiki。

将 wiki clone 到本地。如 repository 地址为 git@github.com:choicky/cnlaw.club.git,则相应的wiki地址为 git@github.com:choicky/cnlaw.club.wiki.git

git clone git@github.com:choicky/cnlaw.club.wiki.git cnlaw.club

这样就把wiki clone到 cnlaw.club 文件夹了。

通过 cd cnlaw.club 切换到文件夹,然后运行 gollum --adapter rugged 即可。

nginx 反代

server {
    listen 80;
    server_name cnlaw.club www.cnlaw.club;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
       proxy_pass         http://127.0.0.1:4567;
    }
}

阅读全文 »

choicky 发布于 11月27, 2016

折腾基于NodeJS与git的Wiki程序Jingo

人生不息,折腾不止。

通过PPA安装比较新的node和npm

根据 DigitalOcean 的How To Install Node.js on Ubuntu 16.04 来安装:

cd ~
curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt-get install nodejs
sudo apt-get install build-essential

通过npm安装jingo

sudo npm install -g jingo

配置

生成配置文件

jingo -s > config.yaml

根据 Configuration options reference的说明配置

指定 Wiki 的文件夹

可以 mkdir wiki 创建一个创建一个新文件夹,并在文件夹内进行git的初始化。

git init

然后运行 jingo -c /path/to/config.yaml就正常运行 jingo 了。

nginx 的反代

server {
listen 80;
server_name example.com;

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:6067;
}

}

同步到 github

在github创建一个rep,假设网址是 https://github.com/joeuser/jingorepo.git

wiki文件夹运行git remote add origin https://github.com/joeuser/jingorepo.git'

上面的配置文件中,remote: "origin"

使用 supervisor 监控

sudo apt install supervisor
sudo nano -w /etc/supervisor/conf.d/jingo.conf

jingo.conf内容如下:

[program:jingo]
command = jingo -c /home/choicky/www/jingo.config.yaml
directory = /home/choicky/www/
user = choicky
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/jingo.log
stderr_logfile = /var/log/supervisor/jingo_err.log

阅读全文 »

choicky 发布于 11月26, 2016

安装基于node.js的wiki程序Raneto

背景

DokuWiki

我用了很多年的DokuWiki。这是一个基于PHP的Wiki程序,不需要数据库,并且对中文支持很好,该有的功能都有了,例如文件夹(namespace)、tag(插件实现)、一键更新等。

唯一的缺点就是不支持MarkDown语言了。

其他 Wiki 程序

网上搜了一下,支持 MarkDown 的Wiki程序有很多,例如Github家的gollum、受gollum启发的jingo、年轻且不太知名的OpenKB等。但是,这些WiKi都有一些缺点,例如gollum强行把页面地址的中文转为拼音,jingo不支持分类/自文件夹等。

Raneto 支持 MarkDown,支持文件夹、支持页面地址为中文。看上去与 DokuWiki 比较接近。但Raneto的theme比Dokuwiki贫瘠多了,目前还不支持plugin。

安装与基本配置

安装

git clone https://github.com/gilbitron/Raneto.git (下载Raneto到本地Raneto文件夹)
cd Raneto
npm install (耗时几分钟)

如果没有红色的Error,就表示安装好了。

运行

在刚才提到的Raneto文件夹,运行

npm start

正常情况,会输出:

raneto Express HTTP server listening on port 3000

这表示 Raneto 已经成功运行在 3000 的端口上。浏览器访问 http://IP地址:3000理论上能看到网站在运行了。

配置数据文件夹

默认自带的文档,放在 Raneto/example/ 文件夹里面。有强迫症的,可以创建一个专用的wiki-data文件夹:

cp -a example wiki-data

编辑Raneto根目录下的package.json,把其中的:

"start": "DEBUG=raneto node example/server.js"
"start_win": "set DEBUG=raneto&&node example/server.js"

改为

"start": "DEBUG=raneto node wiki-data/server.js"
"start_win": "set DEBUG=raneto&&node wiki-data/server.js"

如此,就指示Raneto程序读取 wiki-data 下面的数据。

修改管理员密码

wiki-data下面,有一个config.default.js,将里面的

credentials    : [
{
  username : 'admin',
  password : 'password'
},

的用户名admin与密码password改为自己想要的。

增强

中文搜索支持

node.js的程序,大部分使用lunr执行搜索,而这货不支持中文。

https://github.com/codepiano/lunr.js 这里是增强版,需要使用这里的 lunr.jslunr.min.js来替换 Raneto 自带的,带支持中文搜索。替换之前,先备份原来的

使用 supervisor 保证 Raneto 的运行

先安装 supervisor,然后创建/etc/supervisor/conf.d/raneto.conf,内容为:

[program:raneto]
command = node /$path to Raneto/wiki-data/server.js DEBUG=raneto
directory = /$path to Raneto/
user = xxxx (有权访问Raneto的用户名)
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/raneto.log
stderr_logfile = /var/log/supervisor/raneto_err.log

然后sudo service supervisor reload来运行,通过sudo supervisorctl status raneto查看是否成功运行了。

使用 nginx 作为网站的服务器

我目前启用的域名是wiki.cnlaw.club,在/etc/nginx/sites-available/下面创建文件wiki.cnlaw.club,内容为:

server {
    listen 80;
    server_name wiki.cnlaw.club;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:3000;
    }
}

启用该配置:

sudo ln -s /etc/nginx/sites-available/wiki.cnlaw.club /etc/nginx/sites-enabled/wiki.cnlaw.club

sudo nginx -t测试没问题之后,sudo service nginx reload来正式加载。

这样,访问 http://wiki.cnlaw.club 就能看到网站了,不需要访问之前的 http://IP地址:3000 了。

阅读全文 »

choicky 发布于 09月30, 2016

小米5s入手一天体验

昨天睡觉前,发现小米手机5s已经开始抢购20分钟了,就顺手在京东抢购一个。抢购之后,京东提示抢购失败,让我再抢一次。我没管,就睡了。早上醒来,发现手机已经快送到我办公室了。

外观

小米5s轮廓与小米5无明显差异。但5s使用了3D touch屏,不知机身厚度是否因此增加一点。

我之前买过黑色的小米5,不觉得喜欢。这次,我买的小米5s是银白色的。我觉得银白色的颜值比黑色高,并且,金属材质就应该是银白色嘛。

亮屏之后,屏幕四周有黑边框。我觉得,小米官方公布的图,对黑边框进行了一点瘦身处理。

小米5和小米5s,后背的两侧都做了大角度的圆弧过渡。我不喜欢这样,因为显得后盖与前面板形成了刀刃。从握持舒适性而言,iPhone 6s的对称弧边处理是最好的。

速度与发热

我觉得速度方面与iPhone 6s没有明显差异。

正常使用时没有明显发热,与iPhone 6s没有明显差异。

正常充电时,明显发热。

声波指纹识别与3D touch

小米5s用了高大上的超声波指纹识别,5s plus却不用。也许,小米觉得,不能把鸡蛋都放在一个篮子里,5s和5s plus总有一款指纹识别能用吧。

5s的指纹识别速度与iPhone 6s没有明显差异。

识别成功率不是100%,但已经比iPhone 6s好很多。不管你们信不信,反正我在6s上指纹识别失败的次数挺多的。

屏幕的3D touch与6s没有什么差异。但我6s的3D touch都很少用。

操作流畅性与可靠性

流畅性与6s没有明显差异。

但,操作的可靠性,真的只能用很安卓来形容了。

不管是系统自带的,还是自己安装的app,偶尔(但不常遇到)会有退出或点击没反应的情况。例如,在这几个小时的使用过程中,我遇到1次点击Home没反应,重启手机后正常;遇到2次系统设置异常退出,重新点击后正常。

谷歌套件

用谷歌安装器安装了谷歌服务、日历同步、通信录同步等组件。然后发现没有同步日历与同步通讯录的选项。

以后选用的谷歌安装器不对,换了一种,问题一样。

折腾了好久,想着,如果搞不定的话,就一定退货的。后来发现外国网友说,要去应用权限管理里面,赋予谷歌的日历同步、通信录同步的相应权限。哦,原来小米默认禁用了谷歌的日历同步、通信录同步的相应权限。

折腾了一番,通讯录能正常同步了。但是,依然没看到日历同步的启用选项。

好吧,如搞不定日历同步,我依然会退货。

自带第三方app

大概自带了30多个第三方的app。

幸好,可以在小米应用商店里面批量全选然后一键删除。

拍照

没空研究。

但扫描二维码之类的,与6s无差异,能快速地自动对焦、识别。

小结

5s高配版搭配4G内存以及高通阉割版cpu 821,算比较正常了,不像小米5的3G内存那么坑。

感觉小米5s对小米的帮助,会大于小米5。

如果锤子能否生存靠T3,那么,小米2016年能否止住颓势就靠5s了。

感觉小米的胜算还是大于锤子。

阅读全文 »

choicky 发布于 08月24, 2016

侵权产品的收货地的法院究竟有没有管辖权?

很多习以为常的做法,细究之后,是经不起推敲的。

例如,很多人都觉得,在知识产权侵权纠纷中,尤其是专利侵权纠纷中,侵权产品的收货地的法院具有管辖权,理由是:侵权结果地的法院具有管辖权;收货地属于侵权结果地。

真的如此吗?

未必。

1、最基础的依据

《民事诉讼法》第二十八条规定:

因侵权行为提起的诉讼,由侵权行为地或者被告住所地人民法院管辖。

2、什么是“侵权行为地”

《民事诉讼法》解释第二十四条作出了解释:

民事诉讼法第二十八条规定的侵权行为地,包括侵权行为实施地侵权结果发生地

3、什么是“侵权结果发生地”

最高人民法院的观点是:

侵权结果发生地应当理解为侵权行为直接产生的结果的发生地,不能简单地以原告受到损害就认定原告住所地是侵权结果发生地。

并且,最高院还强调“侵权结果发生地”不是“侵权结果地”,也不是“侵权结果到达地”。

总之,最高院说了跟没说一个样。

4、“收货地”究竟属于什么?

绕了半天,依然无法确认“收货地”属于什么。所以,无法确切地知道,“收货地”的法院是否一定具有管辖权。

实践中,各个法院也理解不一。

4.1 “收货地”属于“侵权行为实施地”

据说,江苏省高院在(2014)苏知民辖终字第0026号裁定书)中,把收货地认定为是“侵权行为实施地”。 但我没找到裁定书全文。

赞同此观点的人,主要依据是《民事诉讼法》解释第二十条:

以信息网络方式订立的买卖合同,通过信息网络交付标的的,以买受人住所地为合同履行地;通过其他方式交付标的的,收货地为合同履行地。合同对履行地有约定的,从其约定。

通俗地说,就是网络购物的情形下,如果没有约定履行地,且不是通过信息网络交货的,收货地就是合同履行地。然后把合同履行地偷换概念为侵权行为实施地

所以,当然有人不服,包括其他法院。

4.2 收货地属于“侵权结果发生地”

2015年1月份,广东省高院在(2015)粤高法立民终字第127、128号中,认为收货地属于“侵权结果发生地”。

但是,我觉得不能孤立地看待这个观点。在本案中,原告的地方与收货地相同,即,收货地与原告存在关联性。

4.3 收货地不属于“侵权结果发生地”

同样是2015年1月份,广州知识产权法院在(2015)粤知法立民初字第8号中,秉持着与广东省高院不同的观点,认为:

在知识产权侵权纠纷案件中,侵权结果发生地应当理解为侵权行为直接产生的结果发生地,而不能以起诉人指定的产品收取地作为侵权结果发生地,若非如此,起诉人将能以中国大陆内任一具有专利管辖权的法院作为诉讼法院,致使管辖制度形同虚设,失去其应有之意。鉴于被起诉人的住所地不在本院辖区内,且起诉人没有证据证实被诉侵权行为实施地和侵权结果发生地在本院辖区内,故本院依法对本案无管辖权。

4.4 收货地属于“侵权行为地”,但是我就不告诉你究竟是“侵权行为实施地”还是“侵权结果发生地”

有趣的是,某被告把4.3中广州知识产权法院的观点搬到上海高院,间接导致广州知识产权法院被上海高院打脸。

上海高院(2016)沪73民辖终154号中认为:

根据民事诉讼法司法解释第二十条有关以信息网络方式订立买卖合同,未约定履行地,非通过信息网络交付标的的,收货地为合同履行地,而销售被控侵权商品的合同履行地可视为被控侵权行为地。

上海高院认为收货地属于侵权行为地

但是,上海高院并没有明确收货地究竟属于侵权行为地中的侵权行为实施地还是侵权结果发生地

我觉得是上海高院心虚。——PS,广州中院也干过类似的事。广州中院在某判决书认定被告侵权原告的著作权。但实际上著作权是很笼统的概念,著作权法中把著作权的有限的种类都列举完了,正常情况下,法院应当明确侵权的是哪一个种类的著作权。

对了,上海高院的依据也就是上面4.1提到的《民事诉讼法》解释第二十条。

也就是说,对于同一个法条,位阶相同的上海高院、江苏省高院在打架。

总之,一个简单的问题,绕了一天也没有定论,感觉很无语。

但是,这也是法律、法院、律师存在的意义:每一个定论都是无数人、无数利益在很长时间内均衡后的结果。

阅读全文 »

choicky 发布于 08月04, 2016

无损地将硬盘从MBR分区表转换为GPT分区表

最近买块硬盘备份数据。

鉴于2T、3T容量的硬盘的差价也就100块钱左右,所以买了块3T容量的。

我把硬盘装到电脑里面之后,对硬盘进行分区时发现只能管理2T的容量。

我以为32位的Windows系统只能支持2T容量。但在卡森的指点下,我才知道,这个跟操作系统32位还是64位无关,与硬盘分区表的格式有关:

MBR分区表最大支持2T左右的硬盘,而GPT分区表就支持上百T的硬盘。

于是,问题来了,如何在不损坏数据的前提下把硬盘从MBR分区表转换为GPT分区表?

MiniTool 家的 Partition Wizard 就可以。这工具有免费版、付费版等。个人使用的话,免费版就可以了。

当然,对硬盘进行操作之前,依然应当备份好数据,有备无患嘛。

阅读全文 »

choicky 发布于 08月02, 2016

剪切->删除->粘贴之后,会如何?

经过实践,是粘贴没有结果。这是一舍友试验过的:

今天他新装了一个高版本的QQ,然后打算把旧聊天记录剪切过去。结果,他先剪切,然后删除,再粘贴–唉,他玩了几年的电脑,居然犯了这个低级错误–聊天记录是文件不是文字,删除了怎么可能还能粘贴?!

唉,也不能说他白玩了几年电脑,因为他删除的时候偷懒,于是用了“shift+del”这个组合键来删除,唉,彻底阿。

现在不知道恢复了没有?但愿吧,呵呵

阅读全文 »

choicky 发布于 08月02, 2016

成功恢复一个硬盘的数据

同窗由于安装多系统出现失误,结果所有的分区变成一个分区了 系统无法启动

今晚把硬盘拆了下来,挂到另外的电脑上;系统发现了新硬件并且正确显示 当时硬盘号G.文件系统raw.无法读取

后来尝试了finaldata — 无法读取,再后来尝试easyrecover–可以读取。 高兴噢~!!

剩下的就是时间问题了:扫描文件系统,分析,显示,建立目录树……

等洗完澡,洗完衣服,呵呵,终于看到久违了的资料了,乐死了。 特纪之。

阅读全文 »

choicky 发布于 08月02, 2016

天津市大港区归来

这几天到了天津的一个区–大港区。终于在天津看到了一个规划的还可以的城市——甚至规划到了“红顶白墙绿地”的程度。城市布局完整,道路清洁,绿草如茵,更难得的是没有人闯红灯(在天津市区,行人经常像蚂蚁一样从警察的眼皮底下横闯马路)。

在空气上,也明显比天津市区好多了。在市区,有时候,空中的飘尘可以在一瞬间把学校600米外400多米高的天塔隐藏起来。(然而,当我在离市区18公里的地方,却可以清清楚楚地看到天塔。)

后来去了海边,海水比黄河的稍微清澈一点。

还去了学术上闻名的“天津鸟类自然保护区”–其实叫大港水库。这个水库跟玉林的没有多大区别,除了面积大点,芦苇多点之外。由于去的不是时候,所以鸟没有看到多少,倒是鸟屎很多

由于心惊胆战的惦记着英语四级成绩的查询,所以在14号打道回府了。由于13号在海边的海滨浴场游泳弄伤了一点点脚底–真想不到那么出名的一个海边游泳池水底有东西扎我。

幸好没大碍,于是回来的时候也仅仅3个小时的自行车:)

心惊胆战之后,发现英语过了,高兴得要死;在后来发现敖行可以上了,又高兴了一回;再发现李盈盈到了国外,又高兴了一回==在此祝福她。

不太高兴的就是,英语四级成绩很衰–总之,不够70

阅读全文 »