ZeroNet Blogs

Static ZeroNet blogs mirror

GoodNight,zeronet。

- Posted in CXG2014 by with comments

zn上的观点碰撞,对于我来说实在是浪费时间,我也是深深的感到心累了。

目前手上自动化部署系统项目还没完成,数百个单元测试基本看运气,通过一半就算好。。从接收的erlang一路添砖加瓦删删改改到现在的python+nodejs,中间有太多地方没有做规范,自己的修行也耽误了下来。。

索性,离开这里一段时间,专心于自己的工作和生活。

晚安,zeronet,后会有期。

一点牢骚

- Posted in CXG2014 by with comments

今天在zeronet上见到无脑喷了。 zerome截图 一图胜千言。 孔子和他的言语“君君、臣臣、父父、子子。”不知道有什么不对的地方,以至于要被这位仁兄这样开喷。一个古文水平没过高中,连译文都懒得去搜,事实都懒得去了解的人就可以无故去开喷,我也是醉了。

心中无比凄凉,没想到上了零网还会碰上这样的人因此而生气。。其不知,也无罪罢。“人不知而不愠,不亦君子乎?”唾面自干,也是得要有的啊。。

好久没更新博客,而且最近一直都有其他的事情在忙,今天闲下来更新一篇,说说我在开发中遇到的那二三事。 Python中若要动态加载某目录下的子模块。。一直都没找到什么好的解决方法,一开始自己写的代码是这样的: main.py

mod_list = {}

for filename in os.listdir('mod'):
    if filename.endswith('py'):
        for line in open(os.path.join('mod',filename)):
            eval(line)
# do something behind

mod/md.py

markdown_template = '"# %(title)s
Author: %(author)s
Create Date: %(created_time)s
Last Update: %(updated_time)s

%(content)s
"'


def markdown(self):
    return markdown_template % self


mod_list ['md'] = markdown

期望是能够在mian中do something 之后能够在class内通过mod_list.get('md')()来运行markdown函数,然而,运行失败。。

于是我到处找其他解决方法,除了静态和硬替换以及加入注册函数之外没能找到更好方法,因此在回过头来思考为什么出错。 通过日志能够发现在eval读取到的mod文件的第一行就出错了,再一查eval只能执行一行表达式,于是将main.py中的eval换成能执行多行的exec,成功运行。

错就错在方法和经验式上了,js的eval是js的,不是python的,python的exec才等于js的eval。

首先,到站点all.js里找到ZeroBlog.prototype.pageLoaded函数,在return this.cmd("innerLoaded", true);一句前插入setTimeout("Page.SetBGM()", 1000),然后在ZeroBlog.prototype.onOpenWebsocket底下插入

        this.cmd("wrapperGetLocalStorage", [], (function(_this) {
        return function(res) {
          if (res == null) {
            res = {};
          }
          return _this.local_storage = res;
        };
      })(this));

之后在类里插入以下函数

    ZeroBlog.prototype.SetBGM = function(){
        bgAudio=document.getElementById("bgAudio");
        BGM_volume = Page.local_storage["BGM_volume"];
        BGM_ctime  = Page.local_storage["BGM_ctime"];
        BGM_muted  = Page.local_storage["BGM_muted"];
        BGM_paused = Page.local_storage["BGM_paused"];
        console.log({"volume":BGM_volume,"ctime":BGM_ctime,"muted":BGM_muted,"paused":BGM_paused})
        if (BGM_volume!=null && BGM_volume!=""){
            bgAudio.volume = BGM_volume;
            } else {
                bgAudio.volume = 0.3;
                Page.local_storage["BGM_volume"]=0.3;
                Page.cmd("wrapperSetLocalStorage", Page.local_storage);
        }
        if (BGM_ctime!=null && BGM_ctime!=""){
            bgAudio.currentTime = BGM_ctime;
        }
        if (BGM_muted!=null && BGM_muted!=""){
            bgAudio.muted = BGM_muted;
        }
        if (BGM_paused!=null && BGM_paused!=""){
            if (BGM_paused=true){
                $("#bgAudio").attr("autoplay","")
                bgAudio.pause();
            }else{
                bgAudio.play();
            }
        }
        setInterval("Page.audioAC()",1000);
    }

    ZeroBlog.prototype.audioAC = function(){
        bgAudio=document.getElementById("bgAudio");
        Page.local_storage["BGM_volume"] = bgAudio.volume;
        Page.local_storage["BGM_ctime"] = bgAudio.currentTime+2;
        Page.local_storage["BGM_muted"] = bgAudio.muted;
        Page.local_storage["BGM_paused"] = bgAudio.paused;
        Page.cmd("wrapperSetLocalStorage", Page.local_storage);
    }

再到index.html里合适的地方插入播放器代码

<audio controls="controls" autoplay="autoplay" loop="loop" id="bgAudio">
  <source src="ogg格式音乐文件路径.ogg" type="audio/ogg">
  <source src="MP3格式音乐文件路径.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>

刷新页面,搞定

另外,写在后面,悄悄PS. 七牛云存储貌似对127.0.0.1是排除在外不计流量的,因此可以用七牛云存储来做站点音频CDN。话说zeronet的10MB限制真是太麻烦了。

欢迎互换友链

- Posted in CXG2014 by with comments

要互相友链的可以在评论区回复,看到后会尽快添加~ Thanks~

使用Chrome浏览器的用户若未把浏览器更新到最新版本会出现很多bug,部分涉及到zeronet框架无法做兼容,因此在这里向大家说声抱歉。在更新浏览器之后所有的显示效果都会正常,若是翻墙有困难的同学可以尝试从这一个非官方chrome独立安装包分发地址下载:ChromeStandaloneSetup下载地址 下载完之后双击自动安装就成~

话说,zeroblog可以为博文添加tag吗?。。难道这也要自己动手?。。。

ZeroNet网站私钥找回教程

- Posted in CXG2014 by with comments

本文WordPress地址:ZeroNet网站私钥找回教程

前些天自己在ZeroNet上建了个blog并绑定了cxg2014.bit这个域名,结果一不小心点了delete删掉了自己的网站,开始重新clone了一个,但是当我想要到namecoin客户端里去更改域名记录时却发现更改记录还需要支付域名币。。没办法,只能手动恢复原来的站点私钥来取回站点控制权。

在GFW Talk上看到了@p2p老大的主题ZeroNet私钥需要像比特币钱包那样定期备份吗?ZeroNet私钥体系初探一文,在阅读相关代码之后便开始动手了。

  1. 用ZeroNet访问你丢失的站点,然后退出zeronet。
  2. 打开ZeroBundle/ZeroNet/data/你的站点地址/content.json,找到"address_index"一项,把属性值记下来备用。
  3. 打开ZeroBundle/ZeroNet/data/users.json,找到"master_seed"一项,把属性值记下来备用。
  4. 打开ZeroBundle/ZeroNet/src/main.py,然后到131行插入以下代码并保存。
        logging.info("--------------------Recovery Begin--------------------")
        from Crypt import CryptBitcoin
        logging.info(CryptBitcoin.hdPrivatekey("你的master_seed", 站点的address_index))
        logging.info("-------------------Recovery Finished--------------------")

注意,你的master_seed一项因为字符串型参数,应以"包含起来, 站点的address_index因为是整数型参数,故不用。最终修改效果如下。 代码修改效果

  1. 启动ZeroNet,在输出里便能看到您的站点私钥。 控制台截图 将其拷贝出来之后退出ZeroNet,并删除刚才插入到ZeroBundle/ZeroNet/src/main.py文件里的代码。
  2. 打开ZeroBundle/ZeroNet/data/users.json,找到自己的站点节点并添加以下属性和属性值。
"privatekey": 您刚才拷贝出来的站点私钥

保存。 7. 打开ZeroBundle/ZeroNet/data/site.json找到自己的站点节点并把"own"属性属性值修改为true并保存。 8. 启动ZeroNet。

就酱站点就完美找回可以和以前一样使用了。推荐各位还是备份一下自己的users.json还有site.json两个文件,若是自己的"master_seed"丢失、站点地址遗忘,那可就怎么也找不回来了。

转载请注明出处:来自Zite:https://www.zerogate.tk/cxg2014.bit/?Post:3:ZeroNet网站私钥找回教程