Browse Category

Note

迁移至 ohhere.xyz & WordPress 域名迁移教程

趁着 Uniregistry 促销 .xyz 域名,0.5 刀入了 ohhere.xyz,今天决定迁移到新域名。

首先,使用 acme.sh 获取 SSL 证书,见 这里,在 nginx 的配置文件中替换域名

sed -i 's|ohhere\.cf|ohhere.xyz|g' *.conf

接着,替换 WordPress 数据库中的域名,和网页上的域名,值得注意的是,需要关注https,以及数据库前缀可能是wordpress而不是wp

UPDATE wordpress_options SET option_value = replace( option_value, 'http://ohhere.cf', 'http://ohhere.xyz' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wordpress_posts SET post_content = replace( post_content, 'http://ohhere.cf', 'http://ohhere.xyz' ) ;
UPDATE wordpress_posts SET guid = replace( guid, 'http://ohhere.cf', 'http://ohhere.xyz' ) ;
UPDATE wordpress_options SET option_value = replace( option_value, 'https://ohhere.cf', 'https://ohhere.xyz' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wordpress_posts SET post_content = replace( post_content, 'https://ohhere.cf', 'https://ohhere.xyz' ) ;
UPDATE wordpress_posts SET guid = replace( guid, 'https://ohhere.cf', 'https://ohhere.xyz' ) ;

然后,替换 zmirror 配置文件 zmirror/config.py 中的域名

sed -i 's|ohhere\.cf|ohhere.xyz|g' config.py

接着 301 重定向原域名至新域名,规则类似于:

if ($host = 'ohhere.cf'){
    rewrite ^/(.*)$ https://ohhere.xyz/$1 permanent;
}

但是因为子域名实在太多,于是有了这样的脚本:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

domains = ("ohhere", "www.ohhere", "kod.ohhere")
for domain in domains:
	print("if ($host = '%s.cf'){\n    rewrite ^/(.*)$ https://%s.xyz/$1 permanent;\n}\n" % (domain, domain))

重启 nginx 和 zmirror 即可生效

然后,到 Google Search Console 和 Bing Search Console 添加新域名,添加 sitemap.xml,并将旧域名转移至新域名,迁移完成

杨辉三角生成器

原题在 http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000

我写的的:

# -*- coding: utf-8 -*-

def triangles():
    ori = [[1],[1,1]]
    i = 1
    while True:
        yield ori[i-1]
        if i > 1:
            ori.append([1] + [ori[i-1][n]+ori[i-1][n+1] for n in range(i-1)] + [1])
        i = i + 1

n = 0
for t in triangles():
    print(t)
    n = n + 1
    if n == 10:
        break

别人写的,用了 zip 函数:

# -*- coding: utf-8 -*-

def triangles():
    a = [1]
    while True:
        yield a
        a = [sum(i) for i in zip([0] + a, a + [0])]

n = 0
for t in triangles():
    print(t)
    n = n + 1
    if n == 10:
        break

 

另一种方法,和我的差不多:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#第一种方法:triangles函数定义的时候无输入参量指定循环次数,即一直循环,需要在调用函数(利用for函数)中为添置一个中断条件
def triangles():
    N = [1]
    while True:
        yield N
        N.append(0)
        N = [N[i-1] + N[i] for i in range(len(N))] 
n = 0
for t in triangles():
    print(t)
    n=n+1
    if n == 10:
        break

 

Android 手机分区教程

概述:将 /sdcard 分区>【1】(内置SD卡分区)和 /system 分区分一部分给 /data。
准备:手机装有带U盘模式的 recovery, Android Debug Bridge 工具包、驱动(device+recovery+fastboot)
步骤:
  1. 重启至 recovery ,数据线连电脑
  2. 可选:手机端格式化 /system, /data 和内置 SD 卡分区
  3. cmd 输入 adb shell  ——出现 #
  4. fdisk -l /dev/block/mmcblk0  ——分区表>【2】
  5. 截图保存分区表,备份
  6. fdisk /dev/block/mmcblk0  ——开始修改
  7. d   回车  ——进入删除分区命令
  8. 19   回车  ——删除内置 SD 卡分区
  9. d   回车  ——进入删除分区命令
  10. 18   回车  ——删除 /data 分区
  11. d   回车  ——进入删除分区命令
  12. 17   回车  ——删除 /system 分区
  13. n   回车  ——进入新建分区命令
  14. 60419  ——第 16 分区末尾字节加 1 至 2 ,即第 17 分区从第 60419 位开始
  15. 118019  ——即第 17 分区在第 118019 位结束>【3】
  16. n   回车  ——进入新建分区命令
  17. 118020  ——第 17 分区末尾字节加 1 至 2 ,即第 18 分区从第 118020 位开始
  18. 434600  ——即第 18 分区在第 434600 位结束
  19. n   回车  ——进入新建分区命令
  20. 434602  ——第 18 分区末尾字节加 1 至 2 ,即第 19 分区从第 434602 位开始
  21. 477183  ——即第 19 分区在第 477183 位结束
  22. p  ——查看修改后的分区表,检查无误后继续,否则重来
  23. w  ——将数据导入手机
  24. reboot recovery   或者手动重启至 recovery
  25. 在 recovery 中格式化 /data 分区和 /system 分区,选择 U 盘模式,在电脑中格式化内置 SD 卡分区
  26. 刷机、重启至系统
  27. adb shell 下输入 df 检查分区情况
注释:
【0】:仅限 Huawei C8815 使用(其他手机分区表不一样)
【1】:内置 SD 卡不一定是 /sdcard 分区
【2】:数据从左至右依次代表:分区序列 起始位 终止位 容量 分区类型( ID ) 分区类型
【3】:a(分区大小,M)=b(终止位-起始位)/128 = c(容量)/1024
附件:
1.分区表:
o

牧羊少年的奇幻之旅·摘录

  1. 在人生的某个时候,我们失去了对自己生活的掌控,命运主宰了我们的人生。这就是世上最大的谎言
  2. 在这个星球上,存在一个伟大的真理:无论你是谁,无论你做什么,当你渴望得到某种东西时,最终一定能够得到,因为这愿望来自宇宙的灵魂。那就是你在世间的使命。
  3. 万物皆为一物。
  4. 当你想要得到某种东西时,整个宇宙会合力助你实现愿望。
  5. 如果东西还没有到手,你就先许诺于人,那你就不会积极去争取了。
  6. 上帝为每个人预示了因走的道路,你只需看懂上帝给你的预示就行了。
  7. 幸福的秘密就在于,既要看到世上的奇珍异宝,又要永远不忘记勺里的那两滴油。
  8. 马克图布。(命中注定)
  9. 一个人越是接近梦想,天命就越成为他存在下去的理由。
  10. 在生活中,事情有时会在一瞬间发生变化,人们根本来不及去适应这种变化。
  11. 我永远尽全力保住手中所有,哪怕是很少的一点,无法将整个世界揽在怀里。
  12. 这不是陌生的世界,这是个崭新的世界。
  13. 永远不要放弃你的梦想,要遵循预兆行事。——撒冷王
  14. 一旦做出决定,实际上便坠入了一股巨大的洪流之中,这洪流会把人带到一个你做决定时从来没有想到的地方去。
  15. 一个人越是接近梦想,天命就越成为他生存下去的真正理由。
  16. 预告就是灵魂飞快地投入生命的洪流当中,世上所有人的经历都在这洪流中联系在一起。我们因此能无所不知,无所不晓,因为一切均已命中注定。
  17. 生命的历程和世界的历程都是由同一之手写就。
  18. 提炼金属的结果就是净化了他们自身。
  19. 当我吃东西时,就只管吃;当我走路时,就只管走;如果必须去打仗,今天死还是明天死对我都一样。因为我既不生活在过去,也不生活在未来,我只有现在,它才是我感兴趣的。如果你能永远停留在现在,你将是最幸福的人。
  20. 害怕遭受痛苦比遭受痛苦本身还要糟糕。
  21. 幸福可以在沙漠里的一粒普通沙子里找到,因为一粒沙子也需要创造。
  22. 在实现一个梦想之前,世界之魂永远都会对追梦者途中所学到的一切进行检验。这种做法并无恶意,仅仅是为了不让我们远离梦想,并让我们获得寻梦过程中学到的经验教训。这是我们大多数人可能放弃寻梦的一个时刻。用沙漠的语言,我们称之为“渴死在椰枣树出现在地平线上的时刻”。每个人的寻梦过程都是以“新手的运气”为开端,又总以“对远征者的考验”收尾。
  23. 夜色之浓,莫过于黎明前的黑暗。
  24. 当巨大的财富就在我们眼前时,我们却从来察觉不到。

阻止运行和闭源 Xposed 模块

从酷市场看到的,记录一下。

阻止运行 (me.piebridge.forcestopgb) 从 2.3.2 版起,开发者由 @liudongmiao 换成“深圳某工作室”,并且不再开源。新版加入无关功能,且有安全风险。

 

以及其他没有开源的小众 Xposed 模块:

  • Download Redirect
  • WeChatUI
  • 应用变量

没有开源的知名 Xposed 模块

  • Greenify
  • Lucky Patcher

换域名了,记录一下

最早的域名早就到期了,又一直没有找到满意的,就找了一个将就着用用。今天正式换成新域名 OhHere.cf ,依然是个免费域名,但是顺眼多了。

第一步,找 Let’s encrypt 要证书

./certbot-auto certonly

接着替换 nginx 配置文件里的域名

perl -p -i -e "s/ohmydish/ohhere/g" /usr/local/nginx/conf/vhost/*.conf

然后更改文件名

rename 's/ohmydish/ohhere/' *.conf

再更新 SQL

UPDATE wordpress_options SET option_value = replace( option_value, 'https://ohmydish.cf', 'https://ohhere.xyz' ) WHERE option_name = 'home' OR option_name = 'siteurl'
UPDATE wordpress_posts SET post_content = replace( post_content, 'http://ohmydish.cf', 'http://ohhere.xyz' )
UPDATE wordpress_posts SET guid = replace( guid, 'http://ohmydish.cf', 'http://ohhere.xyz' )

重启 nginx

nginx -s reload

Done ~