? Editing: Post:21.body Save Delete Cancel
Content changed Sign & Publish new content

妖禍子日記

发或者不发一些有的没的


空澄砂夜 | 传送门

Follow in NewsfeedFollowing

Latest comments:

ZeroGreeter:可配置的标签化首页

on Aug 26, 2017 · less than 1 min read ·
14 comments

最近几天对 ZeroHello 信息流的混杂,以及站点列表的冗长感到有些不满,试着制作了一个替代品:ZeroGreeter。看起来大概是这个样子的(/・ω・)/

greeter.png (961x773)

不同于默认首页,ZeroGreeter 可以为每个站点设置标签,并根据这些标签分类显示站点列表和信息流。这样,即便添加了较多站点,也可以方便地获取重要的信息流,或找到需求的站点。初始视图中的 vivace 就是一个这样的例子:在传统的 ZeroHello 布局上方,额外添加了博客和论坛的列表,以及单独的提及信息流。这些过滤器的数量、性质和位置,均可以由用户自行配置,以完成最适合自己的首页布局。

除去手动设置,ZeroGreeter 还可以为符合一定条件的站点自动设置标签,例如从 ZeroBlog、ZeroTalk 等特定网站克隆得来的站点,或是被合并的站点。若有收录于使用 Kaffiene Search 格式的索引的站点,也可以从索引中获取标签。这样,即使不经过任何配置,也可以相对有效地使用。不过,如果熟悉一下 local/conf 下的配置文件,或许可以得到更加合适的体验也说不定。配置文件的文档已经嵌入在站点中:点击页面最上方的“Greetings ZeroNet_”并选择 docs 视图即可浏览。

需要注意的是,在使用第三方首页时,必须给予其 ADMIN 权限,以允许查询站点列表和信息流。这是一个非常宽泛的权限,隐含着相当高的信任,不适合随意地给出。因此,ZeroGreeter 鼓励用户查看它的源代码(处在数据文件夹的 src 下),并自行构建私人使用的版本。这很重要,因为即使确信了当前版本的无害,也无法确信同一地址上未来的更新一定是无害的。你应当自行确认并构建每个更新版本。事实上,若你没有将自己设置为站点的所有者,ZeroGreeter 将不会允许你的使用。若你决定使用它,这意味着你以自由心证,确信了内容的无害,并将自己承担这一行为带来的一切风险。

如果能够派上用场的话就太好了!

Read more

ZeroNet 数据库描述文件的配置细节

on Jul 30, 2017 · 6 min read ·
4 comments

在编写动态站点时,经常需要收集分散在各个 JSON 文件中的数据。为了方便应用,ZeroNet 提供了由描述文件 dbschema.json 控制的数据库机制,但在文档方面,则只有一份代码样例。尽管代码样例经过注释,但许多细节仍未说明,需要阅读源码。现在我把发现写在这里,这样你就不需要费事啦(≧∇≦)b

这篇文章是关于 ZeroNet 0.5.7 master 分支 rev2169 的分析,可能不适用于其他版本。

Read more

ZeroNet 中用户数据权限的判断机制

on Jul 24, 2017 ·
7 comments

由于 ZeroNet 文档 (clearnet) 中有关用户数据权限的部分语焉不详,不得不阅读 ZeroNet 本身的源码。我把发现写在这里,这样你就不需要费事啦(*´▽`*)

如果你想要在自己的站点配置用户权限规则的话,会有用处也说不定!


permission_rules 直接相关的代码段 (clearnet) 并不难以寻找:

# src/Content/ContentManager.py#L411
for permission_pattern, permission_rules in user_contents["permission_rules"].items():  # Regexp rules
    if not SafeRe.match(permission_pattern, user_urn):
        continue  # Rule is not valid for user
    # Update rules if its better than current recorded ones
    for key, val in permission_rules.iteritems():
        if key not in rules:
            if type(val) is list:
                rules[key] = val[:]  # Make copy
            else:
                rules[key] = val
        elif type(val) is int:  # Int, update if larger
            if val > rules[key]:
                rules[key] = val
        elif hasattr(val, "startswith"):  # String, update if longer
            if len(val) > len(rules[key]):
                rules[key] = val
        elif type(val) is list:  # List, append
            rules[key] += val

根据这段代码,当用户的 ID 符合正则表达式时,ZeroNet 将这样确定用户的权限:

  • 若对应值为整数,取所有值中的最大值。
  • 若对应值为字符串,取所有值中最长的一个。
  • 若对应值为数组,按照规则匹配的顺序进行连接
  • 若对应值为其他类型,取匹配的第一个规则的值,并丢弃之后的所有值

从以上规则中可见,有两项是与遍历顺序相关的。由于 JSON Object 本身在规范中没有被定义顺序,而遍历顺序取决于 JSON 分析器的具体实现,这里就需要寻找读取 JSON 文件的位置:

# src/Site/SiteStorage.py#L4
import json
# src/Site/SiteStorage.py#L252
def loadJson(self, inner_path):
    with self.open(inner_path) as file:
    return json.load(file)

可以看到,ZeroNet 使用了 Python 2 标准库中的 json.load 方法,并没有提供文件名之外的参数。根据 Python 2 文档 (clearnet),可知在没有提供 object_hook 时,JSON Object 被解析为 dict 对象。由于前面的代码中调用了 dict.iteritems 方法,由文档 (clearnet) 进一步得知遍历顺序没有被定义,而且在 CPython 中是“任意但非随机的”。

根据前面的信息,现在可以得到如下结论:

  • 权限的确定类似白名单机制。应该将更高的权限设置在匹配范围更小的正则表达式下。
  • 对于整数类型的权限,取所有值中的最大值。
  • 对于字符串类型的权限,取所有匹配的值中最长的一个。为了保证权限的完整性,更高权限的值应当包含所有更低权限的值。
  • 对于数组类型的权限,取所有匹配的值连接的结果,但顺序不确定。为了避免重复,更高权限的值不应当包含更低权限的值。
  • 对于所有其他类型的权限,只应在匹配范围最广的规则下设置一次,否则执行结果不可预测。

就是这样!

Read more

2:3

on Jul 22, 2017 ·
8 comments

值得纪念的第七天!ヾ(。>﹏<。)ノ゙

不过,虽然经过了七天,这里好像还是一直只有关于 0-Gallery 的内容。虽然今天也有一点更新,不过为了避免无聊,今天还是说些其他的事情吧!

毕竟无聊可是人类的敌人。

本季的来自深渊是部有趣的动画。有些仿佛草莓棉花糖的可爱人设,和相比之下庞大地似乎有点不相称的世界观,两者的搭配有足够的新鲜感。加上原作展开十分正经的传言,可能会成为本季最有看点的一部吧!

为了避免无聊,不一直接触新的信息就不行。失去了信息的渠道,人会变成什么样子呢。即便不想考虑,似乎也不行了。

虽然雷古的声优也在演唱主题歌,不过果然还是女性的声音啊。这样说的话雷古其实是女孩子的可能性是不是也……在微粒子层面上存在着?!

Read more

在 0-Gallery 上展示你的图库

on Jul 18, 2017 · 1 min read ·
11 comments

作为刚刚的更新的一部分,SayoGalleryHub 可以克隆啦!现在任何人都可以(大概还算是)方便地在 0-Gallery 上添加图库了。尽管如此,一个几乎空白的总览页面可能还是会让你感到有些困惑——别担心,援军来了(/・ω・)/

7 月 21 日更新:现在可以直接在你拥有的 GalleryHub 网页上添加图库了!如果你的页面上还没有“上传向导”,试试在 ZeroHello 中更新代码吧。不过,手工添加仍然将提供最高图片质量。

Read more

0-Gallery 的一天

on Jul 17, 2017 ·
2 comments

0-Gallery 是一个图库浏览器。它可以从多个来源查询和展示图库。尽管现在还有些孤单,不过有趣的事就是好事!

在过去的一天里,0-Gallery 发生了这些变化:

  • 增加了查询功能,可以用标签和标题来寻找图库了。
  • 增加了中文本地化,可以依据浏览器设置选择语言了。
  • 增加了缓存开关,点一下就可以开始缓存并帮助分发图库内容。
  • 提升了一点界面可用性。

接下来可能会做也可能不会做的事情:

  • 让图库来源站变得好看一点,并制作方便复制新 Hub 的模板。
  • 写一些文档来协助新来源的创建。
  • 继续寻找分发源码的方式。

……嗯,我就是没有什么可写的事情也要刷一下存在感(/_;)

Read more

0-Gallery: The 0 Makes It Sound Kewl

on Jul 16, 2017 ·
4 comments

与语焉不详的文档和人间蒸发的 dbschema 报错信息作战许久,总算写出了一个还算是能用的 Merger Demo。

0-Gallery

ヾ(。>﹏<。)ノ゙✧*。

嗯……就是这样一个非常原始的……本子站。不过这个地址本身并不包含内容,而是像 ZeroMe 一样,可以聚集多个内容来源。既然是在分布式网络上,不废除中心化的权限管理怎么行呢!(≧∇≦)/

当然,现在这里还非常孤单,所以我放了一个(同样非常原始的)内容来源,好让图库有点事做:SayoGalleryHub

暂时就是这样啦!

不知道 ZeroNet 上怎样分发源码比较好呢……

Read more

21:6

on Jul 16, 2017 ·
1 comment

经过一晚折腾终于做好了给站点做种的准备。于是先复制一个 Blog 试试吧。

简略地看过一点文档,感到 ZeroNet 有些有趣的地方。今后或许会做一点实验也说不定。

也可能什么都不会做。

竭尽所能抵抗无聊吧(≧∇≦)/

Read more
Add new post

Title

21 hours ago · 2 min read ·
3 comments
Body
Read more

Not found

Title

21 hours ago · 2 min read

0 Comments:

user_name1 day ago
Reply
Body
This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More