图床

趁着服务器搬家,打算把死掉很多年的摄影网站,重新恢复起来。把如今流行的自建图库程序看了一圈:piwigo、lychee……仍然没有哪个很靠谱。

其实我在浏览这些程序之前,并没有太多具体的需求,只是期待,快 10 年没看这类东西了,会不会有什么让我惊艳的产品。——并没有。而且,在体验每个程序时,都迅速地发现一些,让我觉得很不爽的点。于是,所谓自己的需求,就是在这个不断吐槽的过程中形成的。

除了最基本的

  • 便捷的上传
  • 并不是难看到很离谱的展示界面

之外,

如果,我要的是一个图床,那么我需要——

照片的 url 和我本地储存的目录结构和文件名是一致的,类似于

https://..../blog/20230909_1.jpg
https://..../blog/20230910_cat.jpg

而不是

https://..../21/27/4c1b46114f8.jpg

这样的东西。前者的文件名,在编辑文章时便于管理。而且,以后迁移图床时,可以统一替换图片 url 的前缀,实现无缝迁移。

如果,我要的是一个摄影作品的展示网站,那么我需要——

!!!不要在网页的任何地方,显示多余的 exif 信息!!!

感觉这十年来,所有的图库程序,都把心思花在,如何去识别各种图片格式的内嵌 exif,然后把它们各种花式归档、搜索、展示……展示在网页边角、在动态的弹出菜单、甚至悬浮在照片上面。——我不需要啊!谁要在摄影作品上,标明照片的 exif 是哪天拍的,甚至是哪天上传的啊!!我连标题都不想展示啊!

甚至,各路图库程序比拼的重点,已经变成了如何调用外部地图软件,然后把照片根据 GPS 信息显示在地图上。(翻白眼

如果,我要的是一个管理图片的工具,能够便捷地挑出一些照片来展示。那么我需要——

在一个相册里,可以便捷地拖动更改,照片之间的顺序。而不是靠手动修改文件名这种粗糙的排序方式。


没有。能够满足这些需求的哪怕其中之一的,都没有。有一些静态网站生成程序,能够把已经彻底整理好的照片,生成看着还行的展示网站。但与其一个个试过来,再试着根据自己需求去魔改各种瑕疵;我觉得我还是在 wordpress 上慢慢拼吧……

于是又变成了

打算做点啥 → 考察相关的工具 → 做不成,开始吐槽各种工具……


以及,在这些干扰下,想趁此机会整理从前照片的希望,大概又落空了……不仅仅是在一些照片里的人,我不想去回顾。也包括,在翻看以前照片时,仍然能够识别出的,自己当年用摄影的视角,去凝视世界的方式,以及对这种方式本身的思考和改变。——我现在是否适合,把这种方式,重新调用起来?

[php] 将多个 RSS 地址合并成一个

弄了个 php 程序,可以把自己的(or 别人的)多个 blog 的 RSS 订阅地址,合并成一个,供人订阅。例如,现在本站的几个 blog 的统一订阅地址为:

https://feed.fivest.one/

程序基于 DigitalFreelancing 的代码,略作修改,调用了 SimplePie 处理 RSS 的项目库,为每个原始的 RSS 地址生成缓存,避免了频繁读取。我修改后的版本,可以从【这里】下载。

使用说明

  • 配置支持 PHP 的网络服务器,过程略;
  • 下载源文件后,解压到新的 RSS 地址相应的文件夹里;
  • 编辑 index.php,修改如下部分:
$feedlink = "https://feed.fivest.one/"; // 这个新的 RSS 的网址
$feedtitle = "fivestone"; // RSS 名称
$feedhome = "https://fivest.one"; // 你的网站地址(在 RSS 阅读器里点击 Title 可以进入)
$feeddesc = "fivestone's posts aggregation"; // RSS 描述

$feeds = array( // 需要合并的 RSS 网址列表,以引号和逗号分隔
    'https://a.fivest.one/feed',
    'https://b.fivest.one/feed'
);

$time_zone = 'Asia/Taipei'; // RSS 使用的时区
$item_number_limit = 20; // 新的 RSS 显示的文章数上限
$creativeCommons_license = 'https://creativecommons.org/licenses/by-sa/4.0'; // 你选择的知识产权协议(可以自行修改或为空)
  • 根据你的网络服务器的权限配置方式,可能需要把 cache 文件夹设为群组或全部可写
chmod g+w cache 或者 chmod a+w cache
  • 也可以把 index.php 改名,或者复制到其它位置,分别配置,生成多个这样的聚合 RSS。注意要调整文件中的相对路径:
include_once('./simplepie/autoloader.php');

笔记软件 Joplin

Joplin 当作笔记软件很久了,个么正式安利一下。

我用笔记软件基本是为了个人写作、记录想法、以及同步查看一些文本资料。对于富文本编辑、Web Clip、以及团队协作,完全没需求。最初用的是 Evernote,但自从印象笔记分裂那会儿,就基本放弃了。Onenote 这种连 Ctrl a 都不能用的笔记更是看了一眼就放弃。后来用了很长时间的 Simplenote,——这个确实不错,即使现在我也会向人推荐。只是如今对于把数据交给服务商而自己无法控制备份,越来越难以容忍,而且 Joplin 的一些特性确实感觉更舒服一些。

Joplin 的优点:

  • 不依赖于单一的服务器。笔记存储方式包括本机存储(不同步、或者手动用网盘同步),和多种网盘同步:Dropbox、Onedrive、Nextcloud、WebDAV(如墙内的坚果云)。而且同步时是从笔记软件直接访问网盘,不需要专门在电脑上安装网盘的客户端。
  • 各个平台的客户端种类完备:Win、Mac、Linux、Android、iphone……
  • 支持笔记文本加密,防止通过直接访问网盘或本地文件夹看到笔记内容。
  • 支持 markdown,软件界面还算友好,关键是可以调用其它外置编辑器来写作。也有 Web Clip 插件以及支持贴图,但我没用过这方面功能。
  • 支持多个笔记本,笔记本之间支持多层树结构。方便管理,支持 tag。
  • 开源。

缺点:

  • 缺少一个单纯通过 web 浏览器访问笔记的方式。如果没有任何电脑或手机客户端的话,很难通过直接访问网盘,来查看笔记。网盘上的笔记文件通常是加密的,即使不加密,每条笔记的文件名也是编码过的,并不能直观地从文件夹里找到文件。我问过开发组,能不能改成用可识别文本,直观显示文件名,被回复无法做到;虽然我觉得技术上应该是可行的。因为这个缘故,我到现在还同时在用着 Simplenote,以便偶尔在公用电脑上处理一些笔记。
    • Update:经推友推荐,发现已经有人做了通过浏览器访问 Joplin 笔记的服务器程序,基于 Python 开发,也已经有 Docker 的部署版本。但对一般用户而言,自建这种 web 服务器的门槛还是太高了。

新域名:fivest.one

刚刚发现 2015 年出现了 .one 的新的顶级域名,而且常年续费价格比 .com 还要便宜,属于最便宜的一档域名了。于是顺手把 fivestone 的变体 fivest.one 拿下。嗯,我已经羡慕 del.icio.us 很久了(虽然后来他们很没品地改成了 delicious.com 然后就倒闭了……

ExtensionRegistrationRenewal
.cat$6.00$28.50
.com$8.84$8.84
.com.de$4.86$4.86
.info$3.84$11.94
.me$6.78$12.47
.moe$12.99$13.99
.ne$419.99$469.99
.net$9.78$9.78
.one$7.47$7.47
.org$9.72$10.72
.social$5.92$21.98

其实还有个更好的变体 fivesto.ne 但是 .ne 也太贵了吧!一般这种冷门小国家的 .xx 顶级域名都是 $20~50/年,但 Niger 卖四百多也太夸张了。无视之。

然后把 fivest.one 映射到 blog 服务器上,作为 fivestone.info 的别名,二者在使用上没有任何区别。具体效果还要再观察一段时间,总觉得像 photodaily.fivest.one 的网址有些头重脚轻了,看着别扭。

有订阅 RSS 的麻烦换一下地址 feed.fivest.one (不换其实也无所谓……

fivestone.info 暂时也不会放弃,还是会继续注册着,方便搜索引擎和外链过渡。而且这个域名还占着一个 Google G Suite 的免费帐户,可以用 [email protected] 的形式登录 Gmail,——这个服务如今被 Google 收费收到飞起,之前的免费帐户还能用,但是不能换域名,只能添加别名。(据说原先的免费帐户还能倒卖一小笔钱……),所以还是先留着吧。


UPDATE:两年后 fivestone.info 就不再续费,放弃掉了。那个 Gmail 的免费域名帐户,不知从何时起改了规定,免费账户只能网页登录,不能用 pop/smtp 之类的远程客户端(其实就是变着法儿撵人),所以弃掉了也没什么可惜的。

UPDATE:又过了两年(2022),.info 的注册费突然翻了一番,$17.49/年。Gmail 的免费账户,到当年 7 月就不再支持,必须切换到收费版。呵呵。


[wordpress plugin] FS Hide Time

朋友,你是否从牙牙学语的时候,就开始坚持写自己的blog?十年浩劫中,你的服务器是否幸运地未受影响,从而把所有旧时文字都保留下来,并且成功地移植到了wordpress上?然后时隔多年回头看去,会觉得那些文字很傻很天真,傻丫得简直不配和现在的你,共存在同一个blog系统,但就这么删了又有些舍不得?又或者当你被生活已经恶心成另一个人后,就只能坐在电脑前羡慕地翻看着那个鲜活的不是你的你,刹那芳华红颜弹指,至少那些文字中不时流出的和前男友的巫山云雨,总要藏起来只有自己看到才好。
用我的插件吧。
这个插件可以把你指定时间之前的blog文章设成隐藏(private),或者自动把xxx天前的blog文章设成隐藏。
1. 本插件只对【文章(post)】进行操作,【页面(page)】不受影响。
2. 本插件只对类型为【已发布(publish)】和【私有(private)】的文章进行操作,类型为【密码保护】的文章不受影响。
3. 在隐藏以前的文章时,那些之前就已经单独设置为私有类型的文章,本插件会将其记住,确保以后批量取消隐藏时,不会将其一起公开。
4. 本插件是通过把文章设成【私有(private)】来实现隐藏的,因此基本只对单用户blog好用。如果wordpress中存在多个admin用户,或者专门进行了其它的权限设置,则不保证你的私有文章不会被别人看到。
Plugin Name: FS Hide Time
Version: 0.8
Author: fivestone
Requires at least: 2.7
Tested up to: 2.9
[download id=”8″]
== Description ==
This plugin can batch hide the articles posted before some date, or automatically keep hiding the articles posted several days ago.
1. The hide operation only affects on posts, but not on pages.
2. The plugin only changes the posts with the visibility “public” and “private”. It does not touch the “password protected” ones.
3. The plugin can remember the posts which you already set as private before, to make sure they won’t be changed into public when you cancel the hiding plugin.
4. This plugin hides posts by setting them to private visibility. If there were other admin users or some extra permission setting in you wordpress, maybe you private articles are still visible to someone else.
== Installation ==
1. Upload the directory “fs-hide-time” to the “/wp-content/plugins/” directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. In menu “Setting -> FS Hide Time”, generate the digests manually.
== Screenshots ==

[wordpress plugin] FS Twitter Digest

a: 你blog顶上那个状态是怎么弄的啊?
f: twitter-tools,把我发在twitter的状态同步到blog。
a: 。。twitter。。。。如果不用twitter。。你推荐什么呢?
f: 那你打算在哪里写你的状态呢?
a: 我的blog亚。。
f: twitter-tools,你可以在blog后台写了让它发到twitter再同步回来…反正你如今从海外服务器连twitter不用翻墙了。
嗯,恭喜a伉俪网站成功翻墙以及双双告别cn生涯~~ 用twitter-tools显示状态的时候,可以在边栏使用插件自带的widget,也可以编辑后台主题,在你想要显示的地方写上

<?php aktt_latest_tweet(); ?>

话说twitter-tools有个功能,可以自动把你每天/每周发的tweet整理成一篇文章发到blog上。但每天/每周这个频率太夸张了,乃至自己正常的blog文章会完全淹没在这种话痨帖里,所以很多人用了这个功能没几周就受不了又关掉了。后来我把twitter-tools修改了一下,可以指定日期范围手动生成,然后通常每个月来一次
后来这个修改版给过几个人。但我当时是在Twitter-tools 1.0的代码里修改的,如今都2.2了(虽然没觉得添加了什么功能……),一直不方便升级。刚刚又弄了一番,把那段修改的代码拿出来,作为一个独立的插件,和twitter-tools分离开。
用这个插件的前提:
1. 你wordpress所在的服务器可以访问twitter;(如今还有在墙内活着的个人wordpress么?)
2. 你在用Twitter-tools
生成的整理帖,其中的作者、分类、标签,都根据twitter-tools里的设置自动生成。除了题目和日期外,和twitter-tools生成的格式完全没区别。我自己用的时候,把twitter的输出格式稍微改了一下,这个功能也放在插件里了。你可以在程序第61行把调用函数改成fis_gene_digest(),然后到那个函数里去手动改输出格式。
a同学的想法还是要赞一下的。因为我当年开始用twitter,就是之前看到某博客网站有个可以自己写一句话显示在页面顶部的功能,觉得不错,也想在wordpress里写一个,后来研究了一下才决定用twitter来辗转实现的。个么我的twitter主要还是用来写自己的琐碎,对那些号称要多@别人参与讨论的说法,从来都是无视。别人@给我的,其中聊天性质的也不大想re。我的twitter信息同步到了很多其它网站。大家更多的是在friendfeedgoogle buzz上讨论,个人更喜欢friendfeed一些。
Plugin Name: FS Twitter Digest
Version: 0.8
Author: fivestone
Requires at least: 2.7
Tested up to: 2.9
[download id=”7″]
== Description ==
As a patch to Twitter-tools, this plugin help users post the twitter digest bwtween the manual dates.
The digests use catalog and tag info as what you set in Twitter-Tools interface. It’s all the same as the “Create a daily/weekly digest” function in Twitter-tools, except the title and the date.
If you are a coder and wish to customize the format in the digest, you can change the code at Line 61, and design your own output in the function fis_gene_digest().
This patch was tested successfully under the Twitter-tools version 1.0 – 2.2.1
== Installation ==
1. Ensure you are using the Twitter-tools plugin.
2. Upload the directory “fis-twitter-digest” to the “/wp-content/plugins/” directory
3. Activate the plugin through the ‘Plugins’ menu in WordPress
4. In menu “Setting -> FS Twitter Digest”, generate the digests manually.
== Screenshots ==

[wordpress plugin] Disable Comment RSS

Plugin Name: Disable Comment RSS
Plugin URI: http://code.google.com/p/wp-disable-comment-rss/
Blog URI: http://blog.fivest.one/archives/664
Description: Disable RSS of posts or comments separately
Version: 0.8
Author: fivestone
download link
== Description ==
User can choose to disable the RSS for the posts or the comments, or both of them.
Background:
I am using the plugin “Whisper” to make some comments invisible, but they still appear
in the comments RSS. Then I want to disable the comments RSS while keeping the post
RSS valid. There seemed no proper plugin for it, so I write this one.
== Installation ==
1. Upload the directory “disable-comment-rss” to the “/wp-content/plugins/” directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. In menu “Setting -> Disable Comment RSS”, choose the RSS which you want to disable.
== Screenshots ==

—————————————-
第一次写 wordpress 插件,练练手~~
功能很简单:禁用RSS。上次装了留言悄悄话插件后,一直在找有什么插件能把评论的RSS禁掉,但网上能找到的都是连文章RSS一起禁的,手动改代码又不方便自动升级。不能忍了干脆自己写一个玩,可以在菜单里选择你要禁用文章的RSS还是评论的RSS。
Version 0.8 公测。大家试试哈。过几天稳定的话,改成1.0提交到官网去。我一直以为所谓 wordpress 用户就是 wordpress.com 上的用户,原来不是。。。wordpress.org的fivestone居然被人注册掉了,这个是用来定义作者署名的啊呜呜呜。

[教程] 同步twitter到国内微博客

本文受众:用twitter、有自己的php空间、需要把twitter同步到国内的微博客及某些网站。
原来的方案已经不能用了。虽然国内微博客如嘀咕、做啥……长时间被和谐后终于死灰复燃,虽然复燃后丫们仍然号称自己可以同步到buboo、hellotxt(可以通过这些网站中转到twitter),但实际测试从来没成功过。新方案采用中转程序把twitter上的信息直接发送到嘀咕,在从嘀咕同步到其它国内网站。受twitterfeed的限制,每30分钟同步一次,每次最多5条。
原帖来自月光博客和传说中forgotthemilk写的同步程序CustomURL,但月光的介绍不会编程的人实在看不懂,个么在这里介绍得详细一些。并对代码做了些修改:

1、增加了密码验证,以确保程序不会被别人盗用;
2、从twitter获得的RSS,每句前面会出现多余的”username: “字串,月光的方案里专门在twitterfeed之前写了一段程序过滤,我把过滤功能放到了CustomURL里,以避免程序直接访问twitter,从而让墙内的php空间也能够使用。(but…见ps.1)

需要注册的网站:twitter.comping.fmtwitterfeed.comdigu.com
同步的流程为: twitter -> twitterfeed -> ping.fm -> CustomUrl -> 嘀咕 -> 人人、新浪微博……
1、下载源程序,解压
[download id=”5″]
Continue reading

WordPress 的文章收藏插件

某人问起有些blog文章后面那些收藏的按钮怎么弄啊,正好我从上次删掉ShareThis后也一直想再弄个类似的玩玩。网上转了一圈,相关的wordpress插件很多,但大部分(如ShareThis、AddThis、add-to-any、以及我爱水煮鱼的国内精品17fav)都是把主程序建在他们自己的服务器上,在blog里插入一段js,访问它家的服务器,才能中转到进行收藏的网站。
实在搞不懂他们为什么要用这样的架构。每次收藏都访问服务器,大大增加了页面读取的时间,甚至当读者网络不畅(如教育网不能访问ShareThis)以及某些不靠谱的时候,会发生完全不能使用的情况。最不爽的是用户只能在网站提供的那些收藏站点间进行选择,不能自行添加要收藏的地址。而那些插件的提供者也不大可能牛x到要网站们过来给钱求着,才给你添加收藏按钮的程度。个么除了能够享受PR激增的快感外,看不出有这样做的必要。这样的插件,完全可以纯在本机运行。
于是找到了Sociable,完全在本机运行的收藏插件。界面看着也比较清爽,用户可以在列表中选择要显示在页面上的收藏按钮,调整其先后顺序。也可以通过编辑插件的php文件,比较轻松地增加通往新的收藏站点的按钮(如果能在后台界面中管理就更好了)。试着编辑了一下,添加了下列网站的收藏按钮:

Google Reader、豆瓣、九点、校内、开心、嘀咕、饭否、QQ书签、百度搜藏

后面几个服务我从来没用过,甚至觉得显示到它家的收藏按钮会降低本blog的品味 @.@ 但既然是大势所趋,也就无妨顺手加到后台列表里面,大家可以按口味选择。
另外,因为 Google Reader 的Note in Reader功能只能对当前页面的地址起作用,不能在blog首页的文章列表中获取单独某一篇的url,所以专门对此类网站添加了singleonly属性,只有单篇blog页面下,按钮才会显示:

if ( true == $site[‘singleonly’] && !is_single() ) continue;

Google Reader的图标和Google Mark的图标重复了,看着不舒服,大家有什么建议么?
调整了一下显示页面,使title和图标在同一行显示:

// $html .= “<div class=\”sociable_tagline\”>\n”;
$html .= stripslashes($tagline);
// $html .= “\n</div>”;

修改后的插件在这里提供下载:
[download id=”4″]
如果需要新的收藏按钮又自己懒得动手的,可以在留言里提出,我会酌情添加进去。

关于明信片的送达时间

理论上存在三个时间段:
1、从投入邮筒,到邮局开始处理,也就是邮票上销票戳的时间。这个时间在某些边远地区长的恐怖。
2、邮路传输。从销票戳(发送地邮局),到明信片背面落地戳(接受地邮局)上标明的时间。这个时间一般比较稳定,和距离有关。
3、从落地戳到我手上的时间。因为都是京、沪等大城市,这个时间基本可以忽略不计,事实上收信日期我很少记下来,所以等同于落地戳时间。
整理手上的明信片,70多张,很多都是旅行中寄给自己的,落款上都标着寄出时间;但销票戳和落地戳都清晰的就很少。前者长途跋涉,磨损不清;后者在邮政系统中的操作一直就不很正规:淡淡的、印在明信片背面的图案上,很难看清楚(好在我通常用的都是白片),有时干脆就不印。所以真正还能弄清楚送达时间的,也就20张左右。
———————————
目的地:北京
手上的最长记录是”四川康定·新都桥”,46天,其中从寄出到销票长达39天!而且这张片我是投在邮局室内,而不是什么偏僻的邮筒里的。发指
其次是聂拉木,西藏尼泊尔边境的县。23天,其中销票10天,投递13天
投递时间最长的是樟木,15天。其实樟木是隶属于聂拉木的,但因为这里是真正的边境口岸,邮局效率高,销票只用了2天(这个很正常了,大城市也不过如此),总计17天
大城市基本都是当天销票:大同2天、潼关3天、长沙3天、哈尔滨3天、张掖5天….随距离递增
哈尔滨0+3、加格达奇2+4、漠河北极村4+5….投递时间随着交通便利程度递增,但偏僻地区会有更多的销票时间
在川藏线上更明显:成都0+3、犀浦2+4、映秀4+5、新都桥39+7…..
新疆的很多片子销票时间都很长,央塔克11天、叶城10天(这个也是投在邮局里的)、巴音布鲁克7天…..收到的时间认不清了,应该在5~6天左右。
西藏,林芝销票6天、拉孜销票5天、拉萨的戳认不清了
华山销票6天、浙江西天目山销票6天….看来即便是发达省份,如果不是大城市的话,在本地邮局拖上一周,可以当作正常国情接受了 -,-
———————————
尼泊尔,首都Kathmandu,10天(3+7),第二大城市Pokhara,31天(6+25),不过可能和我到Pokhara时叛军开始罢工有关…
印度,Agra(泰姬陵),13天(0+13)
法国,Carcassonne,9天。Thank jaer.
乌兰巴托那张一时找不到了,回头补上。
——————————–
不要让任何一种趣味成为恶趣味。