mirror of
https://github.com/Mabbs/mabbs.github.io
synced 2025-10-24 08:17:20 +09:00
Compare commits
9 Commits
ebe45018f5
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
1b5efb8edd | ||
|
971641b3dd | ||
|
c71a48263e | ||
|
21eaed132b | ||
|
5098b24ce6 | ||
|
ae6a6d3029 | ||
|
2803a0773a | ||
|
da59fa1a9f | ||
|
d7c957b68a |
@@ -201,9 +201,11 @@ if (!norunFlag) {
|
||||
eventFlag = true;
|
||||
}
|
||||
var data = JSON.parse(event.data);
|
||||
if (data.response) {
|
||||
outputContainer.textContent += data.response;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$('.message').html(text);
|
||||
}
|
||||
|
@@ -12,10 +12,11 @@ Sinofine,https://sinofine.me/,https://sinofine.me/atom.xml,
|
||||
花生莲子粥,https://blog.hslzz.cn/,https://blog.hslzz.cn/atom.xml,与世无争,不染于泥
|
||||
Vullfin的博客,https://blog.vull.top/,https://blog.vull.top/atom.xml,Vullfin's Home Page
|
||||
阿涛の小破站,https://emohe.cn/,https://emohe.cn/rss.xml,Docker技术分享
|
||||
記緒漂流,https://ttio.cc/,https://ttio.cc/feed/,于记忆之川,泛思绪之舟。
|
||||
記緒漂流,https://ttio.cc/,https://ttio.cc/feed.xml,于记忆之川,泛思绪之舟。
|
||||
陈陈菌博客,https://blog.glumi.cn/,https://blog.glumi.cn/rss.xml,计算机业余爱好者。
|
||||
彬红茶日记,https://note.redcha.cn/,https://note.redcha.cn/rss.xml,我的个人日记!
|
||||
Lanke's blog,https://www.blueke.top/,https://www.blueke.top/rss.xml,请为一切不真实之物骄傲,因为我们高于这个世界!
|
||||
Lanke's blog,https://blog.blueke.top/,https://blog.blueke.top/rss.xml,请为一切不真实之物骄傲,因为我们高于这个世界!
|
||||
时光流·言,https://www.hansjack.com/,https://www.hansjack.com/feed/,个人博客,持续分享网站部署实战经验、精选书评解读和生活观察手记。 这里提供可复用的技术教程、深度阅读指南和真实生活洞察,与技术爱好者一起进步......
|
||||
Pinpe 的云端,https://pinpe.top/,https://pinpe.top/rss.xml,一个属于自己的云朵。
|
||||
Chise Hachiroku,https://chise.hachiroku.com/,https://chise.hachiroku.com/zh/feed/,向明日的辉迹,干杯!
|
||||
映屿,https://www.glowisle.me/,https://www.glowisle.me/atom.xml,关于互联网、书籍、生活琐事以及那些一闪而过的念头
|
||||
|
|
@@ -25,7 +25,6 @@ https://git.goolink.org/mayx/blog
|
||||
https://git.octava.cool/mayx/blog
|
||||
https://git.haowuan.top/mayx/blog
|
||||
https://git.esc-plus.com/mayx/blog
|
||||
https://gogs.tankernn.eu/mayx/blog
|
||||
http://101.132.73.14:3000/mayx/blog
|
||||
http://117.72.78.89:3000/mayx/blog
|
||||
https://gitea.stormyhome.net/mayx/blog
|
||||
@@ -37,7 +36,6 @@ https://git.dpark.io/mayx/blog
|
||||
https://git.ykonkov.com/mayx/blog
|
||||
http://116.62.245.34:3000/mayx/blog
|
||||
https://git.johann-brauer.de/mayx/blog
|
||||
https://git.barneo-tech.com/mayx/blog
|
||||
https://git.shaunmcpeck.com/mayx/blog
|
||||
http://1.6.141.109:3000/mayx/blog
|
||||
http://52.28.156.42/mayx/blog
|
||||
@@ -57,10 +55,8 @@ https://git.emanuelemiani.it/mayx/blog
|
||||
https://git.dehemi.com/mayx/blog
|
||||
https://git.traband.ovh/mayx/blog
|
||||
https://git.ngcr.de/mayx/blog
|
||||
https://www.gittttttttt.top/mayx/blog
|
||||
http://101.66.229.132:61088/mayx/blog
|
||||
http://118.26.39.39:3000/mayx/blog
|
||||
https://gitea.severmed.com/mayx/blog
|
||||
http://150.109.95.245/mayx/blog
|
||||
https://git.pcgf.io/mayx/blog
|
||||
https://nucleation.fusion.bref.cool/mayx/blog
|
||||
@@ -79,21 +75,17 @@ https://codes.tools.asitavsen.com/mayx/blog
|
||||
https://gitea.kursatessiz.com/mayx/blog
|
||||
https://git.siin.space/mayx/blog
|
||||
http://47.117.26.49:3000/mayx/blog
|
||||
https://giteaismyownrepository.nosv.org/mayx/blog
|
||||
http://122.116.190.233:3001/mayx/blog
|
||||
http://101.200.127.15:3000/mayx/blog
|
||||
http://50.19.111.193:3000/mayx/blog
|
||||
https://git-test.zcy.dev/mayx/blog
|
||||
https://git.nothamor.com/mayx/blog
|
||||
https://git.appkraft.ru/mayx/blog
|
||||
https://git.terrainknowledge.com/mayx/blog
|
||||
https://gitea.pickalurv.com/mayx/blog
|
||||
http://183.239.197.12:10803/mayx/blog
|
||||
https://git.zeroplay.io/mayx/blog
|
||||
https://vpgs.pro/mayx/blog
|
||||
https://git.successkaoyan.com/mayx/blog
|
||||
https://git.veydlin.com/mayx/blog
|
||||
https://git.dcircus.com/mayx/blog
|
||||
https://gitea.bitshift.us/mayx/blog
|
||||
http://114.55.134.197:3000/mayx/blog
|
||||
http://139.129.25.251:3000/mayx/blog
|
||||
@@ -103,7 +95,6 @@ http://162.19.95.94:3000/mayx/blog
|
||||
https://git.rankenste.in/mayx/blog
|
||||
https://git.ghostpacket.org/mayx/blog
|
||||
https://git.catswords.net/mayx/blog
|
||||
https://gitea.dilap.ru/mayx/blog
|
||||
http://168.126.28.36:3000/mayx/blog
|
||||
https://git.cloud.leonclassroom.com/mayx/blog
|
||||
https://git.noxxxx.com/mayx/blog
|
||||
@@ -118,7 +109,6 @@ https://git.duplanet.ovh/mayx/blog
|
||||
http://Shiningon.top/mayx/blog
|
||||
http://wsygitea.top/mayx/blog
|
||||
https://git.ofdl.tools/mayx/blog
|
||||
http://precious.harpy.faith/mayx/blog
|
||||
https://git.yardtech.ru/mayx/blog
|
||||
http://69.62.77.234:8888/mayx/blog
|
||||
https://gitea.bake.systems/mayx/blog
|
||||
@@ -131,7 +121,6 @@ http://8.134.32.42:3000/mayx/blog
|
||||
https://git.rootfinlay.co.uk/mayx/blog
|
||||
https://repo.beithing.com/mayx/blog
|
||||
https://git.tinker.infamous.games/mayx/blog
|
||||
http://45.197.2.58:3029/mayx/blog
|
||||
https://git.yi-guanjia.com/mayx/blog
|
||||
http://106.14.174.241:3000/mayx/blog
|
||||
https://git.datdanguy.com/mayx/blog
|
||||
@@ -168,15 +157,11 @@ https://git.Apture.io/mayx/blog
|
||||
https://git.dbfmp.cn/mayx/blog
|
||||
http://103.231.8.120/mayx/blog
|
||||
https://gitea.jasonstolle.com/mayx/blog
|
||||
https://gitea.dokm.xyz/mayx/blog
|
||||
https://nemoserver.iict.bas.bg/mayx/blog
|
||||
https://git.istsoft.ru/mayx/blog
|
||||
http://8.134.61.107:3000/mayx/blog
|
||||
http://47.107.88.161:3000/mayx/blog
|
||||
https://git.ktk-pc.de/mayx/blog
|
||||
http://git.open-dev.ru/mayx/blog
|
||||
https://git.kaizer.cloud/mayx/blog
|
||||
http://git.gpsix.com:3000/mayx/blog
|
||||
http://101.132.113.255:3000/mayx/blog
|
||||
https://gitea.zybc.online/mayx/blog
|
||||
https://git.votava.org/mayx/blog
|
||||
@@ -191,16 +176,13 @@ https://git.vce.de/mayx/blog
|
||||
https://gitea.carmon.co.kr/mayx/blog
|
||||
http://142.171.47.170:3000/mayx/blog
|
||||
https://git.aion.bi/mayx/blog
|
||||
https://git.skillmad.ru/mayx/blog
|
||||
https://git.werkraum-karlsruhe.org/mayx/blog
|
||||
http://111.231.146.230:8418/mayx/blog
|
||||
https://git.winscloud.net/mayx/blog
|
||||
https://git.pwaapp.cc/mayx/blog
|
||||
http://188.245.99.186:3000/mayx/blog
|
||||
https://sources.krechet.tech/mayx/blog
|
||||
http://119.28.73.80:5000/mayx/blog
|
||||
http://194.60.231.252:3000/mayx/blog
|
||||
https://git.brele.net/mayx/blog
|
||||
https://git.sleepingforest.co.uk/mayx/blog
|
||||
https://git.chinamario.ru/mayx/blog
|
||||
https://gitea.wangyige.cn/mayx/blog
|
||||
@@ -214,10 +196,7 @@ https://git.reinoud.cloud/mayx/blog
|
||||
https://gitea.chenxu2233.com/mayx/blog
|
||||
http://106.15.78.64:3000/mayx/blog
|
||||
http://hoenking.cn:3000/mayx/blog
|
||||
https://git.harddays.dev/mayx/blog
|
||||
https://git.hantify.ru/mayx/blog
|
||||
https://GIT.Agri-Sys.com/mayx/blog
|
||||
http://8.156.68.150:3008/mayx/blog
|
||||
http://47.113.96.20:3000/mayx/blog
|
||||
https://gitea.anessen.xyz/mayx/blog
|
||||
https://sengit.us/mayx/blog
|
||||
@@ -230,7 +209,6 @@ http://8.138.91.73:3000/mayx/blog
|
||||
https://git.wisder.net/mayx/blog
|
||||
http://8.138.187.97:3000/mayx/blog
|
||||
https://gitea.potatox.net/mayx/blog
|
||||
https://git.martin.md/mayx/blog
|
||||
https://git2.ujin.tech/mayx/blog
|
||||
http://git.joypetsisland.com/mayx/blog
|
||||
http://111.119.244.185:3000/mayx/blog
|
||||
@@ -239,9 +217,7 @@ http://115.187.22.75:3000/mayx/blog
|
||||
http://163.223.13.95:3000/mayx/blog
|
||||
https://git.chrisbeckstrom.com/mayx/blog
|
||||
https://dev.zaphar.net/mayx/blog
|
||||
http://git.tinycio.com/mayx/blog
|
||||
https://git.moonwoou.com/mayx/blog
|
||||
https://git.stupidpz.com/mayx/blog
|
||||
https://git.tomlab.dev/mayx/blog
|
||||
http://182.92.109.202:8070/mayx/blog
|
||||
https://helx-artifacts-git.apps.renci.org/mayx/blog
|
||||
@@ -270,8 +246,6 @@ https://git.influxfin.com/mayx/blog
|
||||
http://47.100.177.77:3000/mayx/blog
|
||||
https://gitea.beonx.com/mayx/blog
|
||||
https://git.programar.io/mayx/blog
|
||||
https://git.doitcan.com/mayx/blog
|
||||
http://202.181.26.150:3000/mayx/blog
|
||||
http://219.157.255.213:25311/mayx/blog
|
||||
https://git.melvincarvalho.com/mayx/blog
|
||||
https://gitea.aerwen.net/mayx/blog
|
||||
@@ -288,11 +262,9 @@ https://git.powerdata.dk/mayx/blog
|
||||
https://git.ods-company.ru/mayx/blog
|
||||
http://109.228.48.121:8000/mayx/blog
|
||||
https://git.libx.ir/mayx/blog
|
||||
https://code.autumnsky.jp/mayx/blog
|
||||
https://git.u2.nu/mayx/blog
|
||||
https://bk-house.synology.me:3081/mayx/blog
|
||||
http://123.57.95.66:9000/mayx/blog
|
||||
https://git.the-archive.xyz/mayx/blog
|
||||
http://git.yjmt191314.com/mayx/blog
|
||||
https://git.sparrowcomm.com/mayx/blog
|
||||
https://gitea.chaos-it.pl/mayx/blog
|
||||
@@ -302,8 +274,6 @@ https://git.hubhoo.com/mayx/blog
|
||||
https://git.ultra.pub/mayx/blog
|
||||
https://git.cloud13.de/mayx/blog
|
||||
https://gitea.visoftware.com.co/mayx/blog
|
||||
https://git.erg.school/mayx/blog
|
||||
http://20.249.208.89:3000/mayx/blog
|
||||
http://121.199.172.238:3000/mayx/blog
|
||||
http://27.124.12.222:3000/mayx/blog
|
||||
https://wzpmc.cn:3000/mayx/blog
|
||||
@@ -322,7 +292,6 @@ https://git.saintdoggie.org/mayx/blog
|
||||
http://blackobelisk.xyz:3000/mayx/blog
|
||||
https://git.dushes.keenetic.pro/mayx/blog
|
||||
https://git.go-chat.ru/mayx/blog
|
||||
https://gitt.vireoapp.com/mayx/blog
|
||||
http://47.129.22.53:22345/mayx/blog
|
||||
https://git.tech.troyrc.com/mayx/blog
|
||||
http://git.zkyspace.top/mayx/blog
|
||||
@@ -337,7 +306,6 @@ http://8.137.38.60:8201/mayx/blog
|
||||
https://git.emoscape.org/mayx/blog
|
||||
http://112.74.106.216:3000/mayx/blog
|
||||
http://77.223.118.106:8081/mayx/blog
|
||||
http://frp-old.com:41879/mayx/blog
|
||||
https://git.the-kn.com/mayx/blog
|
||||
https://git.campfiregg.ru/mayx/blog
|
||||
https://gitea.net50.ne.jp/mayx/blog
|
||||
@@ -346,18 +314,15 @@ http://sinzero.xyz:3000/mayx/blog
|
||||
http://69.10.53.202:3000/mayx/blog
|
||||
https://gitea.b54.co/mayx/blog
|
||||
https://git.matevi.sh/mayx/blog
|
||||
http://gitea-ui.shiba-server.fr:19000/mayx/blog
|
||||
http://www.pcaidiy.cn:3000/mayx/blog
|
||||
https://code.tiantongsl.com/mayx/blog
|
||||
http://213.35.118.215:60001/mayx/blog
|
||||
https://git.jasonpittman.com/mayx/blog
|
||||
https://git.elmukoding.com/mayx/blog
|
||||
https://gitea.shirom.me/mayx/blog
|
||||
https://git.pasarex.com/mayx/blog
|
||||
http://1.95.221.174:3000/mayx/blog
|
||||
https://git.wangxinlei.cn/mayx/blog
|
||||
http://101.200.74.121:3000/mayx/blog
|
||||
https://potokobox-releases.prodduction.ru/mayx/blog
|
||||
http://123.56.193.182:3000/mayx/blog
|
||||
https://git.akarpov.ru/mayx/blog
|
||||
http://60.204.131.99:3000/mayx/blog
|
||||
@@ -369,10 +334,7 @@ http://167.172.7.198:8081/mayx/blog
|
||||
https://gitea.meetgu.ru/mayx/blog
|
||||
http://8.134.253.108:3000/mayx/blog
|
||||
https://git.patrich.se/mayx/blog
|
||||
https://gitea.orlife.ru/mayx/blog
|
||||
http://47.251.18.130:3000/mayx/blog
|
||||
http://116.236.50.103:8789/mayx/blog
|
||||
https://git.dracodev.net/mayx/blog
|
||||
https://gitnto.innovationcampus.ru/mayx/blog
|
||||
https://git.paulll.cc/mayx/blog
|
||||
https://gitea.alaindee.net/mayx/blog
|
||||
@@ -384,7 +346,6 @@ https://git.geobretagne.fr/mayx/blog
|
||||
https://gitea.ultrasoft.cm/mayx/blog
|
||||
http://94.224.160.69:7990/mayx/blog
|
||||
http://8.134.144.137:3000/mayx/blog
|
||||
https://git.bodu.ro/mayx/blog
|
||||
https://git.hxps.ru/mayx/blog
|
||||
https://gitea.ekjeong.synology.me/mayx/blog
|
||||
https://git.d4m13n.dev/mayx/blog
|
||||
@@ -394,7 +355,6 @@ https://git.4lcap.com/mayx/blog
|
||||
https://gitea.bastiqui.com/mayx/blog
|
||||
https://git.stit.tech/mayx/blog
|
||||
https://git.wun.im/mayx/blog
|
||||
https://git.lichx.top/mayx/blog
|
||||
https://www.9miao.fun:6839/mayx/blog
|
||||
https://git.ssktv.vip/mayx/blog
|
||||
https://git.autotion.net/mayx/blog
|
||||
@@ -419,3 +379,221 @@ https://git.kimcblog.com/mayx/blog
|
||||
http://www.mygamework.com:3000/mayx/blog
|
||||
https://gogs.m14xa.ru/mayx/blog
|
||||
https://git.minaev.su/mayx/blog
|
||||
https://git.0fs.ru/mayx/blog
|
||||
https://git.bremauer.cc/mayx/blog
|
||||
https://git.itbcode.com/mayx/blog
|
||||
http://119.3.29.177:3000/mayx/blog
|
||||
http://47.110.224.240:13000/mayx/blog
|
||||
https://Git.Getmind.cn/mayx/blog
|
||||
http://dev.icrosswalk.ru:46300/mayx/blog
|
||||
http://8.134.206.4:9001/mayx/blog
|
||||
https://git.huwhy.cn/mayx/blog
|
||||
http://194.67.86.160:3100/mayx/blog
|
||||
http://47.101.58.33:3000/mayx/blog
|
||||
https://git.johnen.biz/mayx/blog
|
||||
https://git.unitsoft.io/mayx/blog
|
||||
https://gitea.synapsetec.cn/mayx/blog
|
||||
http://124.222.211.253:3000/mayx/blog
|
||||
http://47.121.207.193:3000/mayx/blog
|
||||
http://git.pushecommerce.com/mayx/blog
|
||||
http://220.132.16.87:3000/mayx/blog
|
||||
https://git.tintinger.org/mayx/blog
|
||||
http://gitea.yunshanghub.com:8081/mayx/blog
|
||||
http://47.111.136.200:3000/mayx/blog
|
||||
https://repo.c-software.id/mayx/blog
|
||||
http://113.177.27.200:2033/mayx/blog
|
||||
http://152.69.204.151:3000/mayx/blog
|
||||
http://207.180.229.193:3001/mayx/blog
|
||||
https://g2.m8il.in/mayx/blog
|
||||
http://8.129.84.221:10800/mayx/blog
|
||||
http://122.51.51.35:3000/mayx/blog
|
||||
http://34.81.52.16/mayx/blog
|
||||
https://git.aopcloud.com/mayx/blog
|
||||
https://gitea.zerova.com/mayx/blog
|
||||
http://120.78.74.94:3000/mayx/blog
|
||||
https://git.genowisdom.cn/mayx/blog
|
||||
http://120.26.116.243:3000/mayx/blog
|
||||
http://120.26.46.180:3000/mayx/blog
|
||||
http://8.222.156.46:3000/mayx/blog
|
||||
http://123.57.16.111:3000/mayx/blog
|
||||
https://git.andy.lgbt/mayx/blog
|
||||
http://115.159.107.117:3000/mayx/blog
|
||||
http://47.99.98.98:9000/mayx/blog
|
||||
http://116.62.115.84:3000/mayx/blog
|
||||
https://Cagit.Cacode.net/mayx/blog
|
||||
https://gitea.rodaw.net/mayx/blog
|
||||
https://gitea.lightchen.info/mayx/blog
|
||||
http://45.55.138.82:3000/mayx/blog
|
||||
http://wingsing.net:3000/mayx/blog
|
||||
http://hgngit.ipdz.me/mayx/blog
|
||||
http://185.163.116.39:49153/mayx/blog
|
||||
https://gitea.onfing.ir/mayx/blog
|
||||
https://lius.familyds.org:3000/mayx/blog
|
||||
https://git.morozoff.pro/mayx/blog
|
||||
https://gitea.questline.coop/mayx/blog
|
||||
https://gitea.mpc-web.jp/mayx/blog
|
||||
https://git.poggerer.xyz/mayx/blog
|
||||
https://git.wisptales.org/mayx/blog
|
||||
https://git.peaksscrm.com/mayx/blog
|
||||
http://git.chaojing-film.com:3000/mayx/blog
|
||||
http://8.142.81.167:1080/mayx/blog
|
||||
https://git.nusaerp.com/mayx/blog
|
||||
http://39.100.245.231:40030/mayx/blog
|
||||
http://35.207.205.18:3000/mayx/blog
|
||||
http://git.zjsciot.com:3000/mayx/blog
|
||||
https://gitea.ontoast.uk/mayx/blog
|
||||
http://112.124.40.88:5510/mayx/blog
|
||||
https://got.joshuakatz.me/mayx/blog
|
||||
https://git-web.phomecoming.com/mayx/blog
|
||||
http://121.36.37.70:15501/mayx/blog
|
||||
http://187.216.152.151:9999/mayx/blog
|
||||
https://coderepos.mticas.com/mayx/blog
|
||||
http://116.63.173.179:8001/mayx/blog
|
||||
https://git.iop.plus/mayx/blog
|
||||
http://47.114.82.162:3000/mayx/blog
|
||||
http://114.116.79.196/mayx/blog
|
||||
https://gitea.cybs.io/mayx/blog
|
||||
https://gitea.fcliu.net/mayx/blog
|
||||
http://git.yinas.cn/mayx/blog
|
||||
http://git.chilidoginteractive.com:3000/mayx/blog
|
||||
http://121.40.40.177:3000/mayx/blog
|
||||
http://118.31.223.224:3000/mayx/blog
|
||||
http://47.109.67.128:3000/mayx/blog
|
||||
https://git.enwatmon.de/mayx/blog
|
||||
http://voicebot.digitalakademie-bw.de:3000/mayx/blog
|
||||
https://gitea.services.gsd-srv.com/mayx/blog
|
||||
https://repo.divisilabs.com/mayx/blog
|
||||
http://178.254.35.219:3000/mayx/blog
|
||||
http://114.215.207.150:3000/mayx/blog
|
||||
http://2.59.132.109:3001/mayx/blog
|
||||
http://newslabx.csie.ntu.edu.tw:3000/mayx/blog
|
||||
http://81.71.148.57:8080/mayx/blog
|
||||
https://git.ides.club/mayx/blog
|
||||
https://git.lmskaran.com/mayx/blog
|
||||
http://sdgit.zfmgr.top/mayx/blog
|
||||
http://47.122.26.54:3000/mayx/blog
|
||||
http://154.86.0.30:3000/mayx/blog
|
||||
http://139.224.196.148:3000/mayx/blog
|
||||
http://47.95.167.249:3000/mayx/blog
|
||||
https://www.enginx.dev/mayx/blog
|
||||
http://gitea.dctpay.com/mayx/blog
|
||||
https://omegat.dmu-medical.de/mayx/blog
|
||||
http://52.23.128.62:3000/mayx/blog
|
||||
http://85.214.41.219:49153/mayx/blog
|
||||
http://6068688.xyz:3000/mayx/blog
|
||||
http://8.137.105.8:5530/mayx/blog
|
||||
https://git.881221.xyz/mayx/blog
|
||||
http://47.93.219.55:20080/mayx/blog
|
||||
http://120.46.222.128:10021/mayx/blog
|
||||
http://39.106.86.127:3000/mayx/blog
|
||||
https://git.techspec.pro/mayx/blog
|
||||
http://47.92.23.211:3000/mayx/blog
|
||||
http://120.26.108.239:9188/mayx/blog
|
||||
http://felicitiz.fr/mayx/blog
|
||||
https://git.van-peeren.de/mayx/blog
|
||||
http://gitea.msadb.cn/mayx/blog
|
||||
https://git.changenhealth.cn/mayx/blog
|
||||
http://git.gkcorp.com.vn:16000/mayx/blog
|
||||
http://47.111.17.177:3000/mayx/blog
|
||||
http://git.hnits360.com/mayx/blog
|
||||
https://git.bag-ltd.ru/mayx/blog
|
||||
https://k0ki-dev.com/mayx/blog
|
||||
http://110.42.45.89:2052/mayx/blog
|
||||
https://git.furcom.org/mayx/blog
|
||||
http://47.109.95.73:3000/mayx/blog
|
||||
http://47.104.196.63:8418/mayx/blog
|
||||
https://git.mkubiak.com/mayx/blog
|
||||
http://38.22.90.74:3000/mayx/blog
|
||||
https://git.asdf.cafe/mayx/blog
|
||||
http://8.133.240.249:3456/mayx/blog
|
||||
https://git.mista.ru/mayx/blog
|
||||
http://34.102.70.200:3000/mayx/blog
|
||||
https://vcs.int.feuerwehr-ziemetshausen.de/mayx/blog
|
||||
http://175.178.219.170:3000/mayx/blog
|
||||
https://git.camus.cat/mayx/blog
|
||||
https://code.miraclezhb.com/mayx/blog
|
||||
http://blueroses.top:8888/mayx/blog
|
||||
https://git.cnml.de/mayx/blog
|
||||
https://giteas.fullmooncyberworks.com/mayx/blog
|
||||
http://47.112.118.149:10082/mayx/blog
|
||||
https://gitea.jobiglo.com/mayx/blog
|
||||
https://gitea.rpg-librarium.de/mayx/blog
|
||||
https://git.pheros.es/mayx/blog
|
||||
https://git.juici.ly/mayx/blog
|
||||
https://git.lkwplus.com/mayx/blog
|
||||
http://begild.top:8418/mayx/blog
|
||||
http://58.221.13.198:30010/mayx/blog
|
||||
https://gitea.kaz62.ru/mayx/blog
|
||||
https://git.tbaer.de/mayx/blog
|
||||
http://74.48.174.77:3000/mayx/blog
|
||||
https://git.atggroup.vn/mayx/blog
|
||||
https://git.d-popov.com/mayx/blog
|
||||
https://git.liliyamol.cn/mayx/blog
|
||||
https://git.srblerp.com/mayx/blog
|
||||
http://8.138.90.28:3000/mayx/blog
|
||||
https://git.hotolab.win/mayx/blog
|
||||
https://home.zhupei.me:3000/mayx/blog
|
||||
https://gitea.theaken.com/mayx/blog
|
||||
https://git.ja-schwarz.de/mayx/blog
|
||||
https://git.obicloud.net/mayx/blog
|
||||
https://shanewan.cn:30000/mayx/blog
|
||||
https://git.xemo-net.de/mayx/blog
|
||||
https://git.bigtravelchat.com/mayx/blog
|
||||
https://git.23cm.cn/mayx/blog
|
||||
https://gitea.oio.cat/mayx/blog
|
||||
https://git.rokiy.com/mayx/blog
|
||||
https://git.w2tj.net/mayx/blog
|
||||
http://59.110.17.86:3000/mayx/blog
|
||||
https://git.karma-riuk.com/mayx/blog
|
||||
https://git.saidomar.fr/mayx/blog
|
||||
https://gitea.pnkx.top:8/mayx/blog
|
||||
http://gitea.fcunb.cn:10083/mayx/blog
|
||||
http://mengshang.xyz:8418/mayx/blog
|
||||
http://47.107.152.87:3000/mayx/blog
|
||||
https://git.ligmatiktok.com/mayx/blog
|
||||
http://106.15.58.155:3333/mayx/blog
|
||||
https://git.sduonline.cn/mayx/blog
|
||||
https://git.7o9o.net/mayx/blog
|
||||
https://gitea.adminakademia.pl/mayx/blog
|
||||
https://dev.init.zone/mayx/blog
|
||||
https://git.baneynet.net/mayx/blog
|
||||
http://43.143.224.106:2000/mayx/blog
|
||||
http://47.97.225.73:3000/mayx/blog
|
||||
http://1.15.11.52:13000/mayx/blog
|
||||
https://git.gupaoedu.cn/mayx/blog
|
||||
http://60.205.233.184:3010/mayx/blog
|
||||
http://121.43.49.226/mayx/blog
|
||||
https://git.ricecakecat.com/mayx/blog
|
||||
https://git.mahaines.com/mayx/blog
|
||||
http://gitee.mrsang.cfd/mayx/blog
|
||||
https://gittea.biveki.ru/mayx/blog
|
||||
https://git.7milch.com/mayx/blog
|
||||
https://gitea.marvinronk.com/mayx/blog
|
||||
https://gitea.zmanplex.com/mayx/blog
|
||||
https://git.hexdive.com/mayx/blog
|
||||
http://139.224.250.209:3000/mayx/blog
|
||||
https://vcc808.site/mayx/blog
|
||||
https://battitech.net/mayx/blog
|
||||
https://git.sitenevis.com/mayx/blog
|
||||
https://git.nightime.org/mayx/blog
|
||||
https://dreamplacesai.de/mayx/blog
|
||||
http://repo.bpo.technology/mayx/blog
|
||||
https://git.soy.dog/mayx/blog
|
||||
https://bachner.synology.me:10002/mayx/blog
|
||||
https://git.cool2645.com/mayx/blog
|
||||
https://gitea.codedbycaleb.com/mayx/blog
|
||||
https://gitea.jludwig.net/mayx/blog
|
||||
https://git.z1.mk/mayx/blog
|
||||
http://185.87.111.46:3000/mayx/blog
|
||||
http://suncheng.asia:14200/mayx/blog
|
||||
https://git.sorogon.eu/mayx/blog
|
||||
http://1.94.13.224:9080/mayx/blog
|
||||
https://git.manabo.org/mayx/blog
|
||||
https://auric-org.org/mayx/blog
|
||||
https://git.git-happens.de/mayx/blog
|
||||
https://gitea.seanomad.ru/mayx/blog
|
||||
http://47.104.241.192:19999/mayx/blog
|
||||
http://47.105.61.58:3000/mayx/blog
|
||||
https://git.memosnag.com/mayx/blog
|
||||
http://tdss.website:801/mayx/blog
|
||||
https://gitea.wenpang.asia/mayx/blog
|
||||
|
|
@@ -60,9 +60,10 @@ print 0
|
||||
在这篇论文中,里面简述了之前Russ Cox写的内容,也提到了59字节的限制,于是作者对原有的结构进行了一些改动,让操作码可以超出5字节的限制,具体可以看论文的表6,从而解决了只能包含59字节额外数据的限制。但由于DEFLATE压缩格式本身的约束(16位存储块长度以及32KiB回溯窗口),即使能够添加文件,最多也只能额外容纳32763字节的数据(其中包括压缩包所需的文件头)……显然这点空间完全存不下我的博客😭,看来我只能打消这个想法了。但既然都研究了半天,也不一定要存我的博客嘛,可以看看还有没有别的东西可以存?在这之前先继续阅读论文,看完再说吧。
|
||||
## 制作一个嵌套循环的ZIP Quine
|
||||
在实现了常规的ZIP Quine之后,接下来就是作者的创新点了(如果光是解决存储限制这点创新点估计还不够发论文吧😂)。作者接下来制作了一种循环压缩文件,在压缩包内包含文件A和压缩包A,而压缩包A中则包含文件B和最初的压缩包,从而形成一个循环递归的结构。看论文的描述所说如果把外层的压缩包和内层的压缩包的开头和结尾按照一定的规则交替混合,就可以看作是一个整体,然后按照之前做ZIP Quine那样处理就可以……具体实现的细节得看论文的表10。只不过既然是把两个压缩包看作一个整体的话,按照上面的限制,自然每个压缩包能容纳的数据量就更小了,每个最多只能容纳16376字节的数据……
|
||||
另外既然这里面有两个压缩包,那么每个压缩包还有自己的CRC32校验和,理论上如果要爆破的话计算难度得是原来的平方,这样难度就太大了。不过作者发现如果把数据的CRC32值取反(即与“0xFFFFFFFF”取异或)然后和原始数据拼到一起,整个数据的CRC32校验和就会被重置为一个固定的值“0xFFFFFFFF”,看起来挺有意思,正常的哈希算法可没有这种特性。因此原本计算难度很大的爆破计算现在就可以和之前一样了……话说为什么不让两层的CRC32都这样计算(包括之前单层的ZIP Quine)?这样就不需要爆破了……貌似是因为在普通的ZIP Quine中满足条件的CRC32需要出现两次,所以不能用这个方案吧?
|
||||
另外既然这里面有两个压缩包,那么每个压缩包还有自己的CRC32校验和,理论上如果要爆破的话计算难度得是原来的平方,这样难度就太大了。不过作者发现如果把数据的CRC32值取反(即与“0xFFFFFFFF”取异或)然后和原始数据拼到一起,整个数据的CRC32校验和就会被重置为一个固定的值“0xFFFFFFFF”,看起来挺有意思,正常的哈希算法可没有这种特性。因此原本计算难度很大的爆破计算现在就可以和之前一样了…… ~~话说为什么不让两层的CRC32都这样计算(包括之前单层的ZIP Quine)?这样就不需要爆破了……貌似是因为在普通的ZIP Quine中满足条件的CRC32需要出现两次,所以不能用这个方案吧?~~
|
||||
现在所有的理论都足够了,我需要挑一个文件来做这样嵌套循环的ZIP Quine,既然博客的大小不可以……要不然我就用我写过的第一个大项目——[Mabbs](https://github.com/Mabbs/Mabbs.Project)吧,这个项目的主程序是22KiB,看起来似乎超出了嵌套循环ZIP Quine的限制?其实没有,它的限制指的是压缩后的大小,我这个程序压缩之后是8KiB左右,所以完全没问题。
|
||||
接下来就该使用论文中提到的生成工具:[zip-quine-generator](https://github.com/ruvmello/zip-quine-generator),这是一个Kotlin编写的程序,从发布中可以下载预构建的程序,接下来只要按照README中的描述使用“`--loop`”参数就可以用这个程序创建嵌套循环的ZIP Quine了。不过它原本的代码不能修改里面生成的压缩包的名字,另外[压缩后的文件属性是隐藏文件](https://github.com/ruvmello/zip-quine-generator/blob/3b8cf977e7a93bb956ad966d5e3b4d503f410529/src/main/kotlin/zip/ZIPArchiver.kt#L845),还有[生成的压缩包中文件的创建时间总是当前时间](https://github.com/ruvmello/zip-quine-generator/blob/3b8cf977e7a93bb956ad966d5e3b4d503f410529/src/main/kotlin/zip/ZIPArchiver.kt#L29),以及[给文件内填充额外数据的代码里面填的是作者的声明](https://github.com/ruvmello/zip-quine-generator/blob/3b8cf977e7a93bb956ad966d5e3b4d503f410529/src/main/kotlin/zip/ZIPArchiver.kt#L30),表示文件是由他论文的所写的生成器生成的……这些情况让我感觉有点不爽,还是希望这些部分能自定义一下,所以我就小改了一下他的代码。顺便一说,Kotlin编译起来还挺简单,直接一句`kotlinc src/main/kotlin -include-runtime -d output.jar`就可以了,也不需要折腾Maven之类乱七八糟的东西。最终我修改并编译完程序之后就把文件丢到服务器上开始给我爆破CRC32了,花了10个小时就算出来了,倒是比想象中快😂。
|
||||
(2025.09.26更新)在2025年9月15日的时候,[Nate Choe](https://github.com/NateChoe1)给zip-quine-generator做了个[重大贡献](https://github.com/ruvmello/zip-quine-generator/pull/3),他通过[数学的方式](https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm)让CRC32的值可以不需要通过爆破的方式算出来,现在想要再制作这样的压缩包就可以瞬间生成了……要是我再晚点做这个压缩包就不需要花那么长时间了吧🤣。
|
||||
最终我给我的[Mabbs](https://github.com/Mabbs/Mabbs.Project)项目创建了[Infinite Mabbs](https://github.com/Mabbs/Mabbs.Project/releases/tag/Final-version)这个发布,生成的文件也可以在[这里](/assets/Mabbs.zip)下载,这也算是不枉我研究半天这个论文了😆。
|
||||
|
||||
# 自产生程序的探索
|
||||
@@ -88,9 +89,10 @@ Hello, world!
|
||||
## Quine Relay的探索
|
||||
还有一个更加复杂的Quine变种是“Quine接力”(Quine Relay),即一个程序输出另一个程序的源代码,另一个程序又输出下一个程序的源代码,最后回到原始程序,就和之前所说的嵌套循环ZIP Quine有点类似。最著名的例子是[Yusuke Endoh](https://github.com/mame)(这位还是[IOCCC](https://www.ioccc.org/)的冠军之一)创建的[quine-relay](https://github.com/mame/quine-relay)项目,它包含了128种编程语言的循环。
|
||||
这种程序写起来会更复杂一些,不过原理都差不多,通常除了当前运行的部分是可执行代码外,其他的代码都需要以额外包含的数据形式(如字符串)存储在变量中。如果想自己做个类似简单的Quine Relay,除了去看[维基百科](https://en.wikipedia.org/wiki/Quine_(computing)#Ouroboros_programs)之外,前段时间我还看到过一个不错的[文章](https://blog.mistivia.com/posts/2024-09-21-quine/),里面就讲了如何用“笨办法”编写Quine和Quine Relay,通过把变量中的内容编码为16进制来避免不同语言可能存在的特殊字符转译问题,思路不错,对于理解如何编写这类程序的问题很有帮助。当然这只是个**简单**的方案,仅适用于一些常规的编程语言,像上面那个[quine-relay](https://github.com/mame/quine-relay)项目中甚至还包含Brainfuck之类的esolang,这种估计得要想办法让相对高级一些的语言通过“生成”的方式得到输出下一种代码的代码,而不是简单的赋值了,所以只靠这点知识想去完全理解大佬的作品还是想多了😆。
|
||||
顺便一说,quine-relay并不是那位大佬唯一的Quine作品,他还做过[有冗余的Quine](https://github.com/mame/radiation-hardened-quine)以及[动态的Quine](https://mamememo.blogspot.com/2010/09/qlobe.html),真的是相当的厉害……
|
||||
## Polyglot Quine的探索
|
||||
除了Quine Relay之外还有一种很复杂的Quine,叫做[Polyglot](https://en.wikipedia.org/wiki/Polyglot_(computing)) Quine,与Quine Relay需要在程序执行后才能切换到其他语言接力不同,Polyglot Quine的源代码本身即可同时属于多种语言,而且用这些语言的解释器每个执行后的输出全都一样,都与源代码完全一致。由于不同的编程语言的格式既有些相同之处,也有很多不同之处,所以让同一份代码表示不同语言就会很容易产生歧义,这时候就只能想办法通过一些特别的方式(比如将可能会对当前语言产生干扰的代码看作是注释的方式)来规避语言之间的差异。
|
||||
Quine本身就已经很困难了,再加上这些限制就变得更加复杂了,所以制作Polyglot Quine的编程语言基本上都得精挑细选,而且通常只有两种语言,比如[这段代码](https://github.com/TrAyZeN/polyglot-quine/blob/master/main.c)就是C和Python的Polyglot Quine,它巧妙利用了C预处理器指令在Python中可视为注释的特性,使两种语言互不干扰,非常有趣。更令人惊叹的则是[PyZipQuine](https://github.com/d0sboots/PyZipQuine)项目,它既可以被当作压缩包,也可以作为Python2.7代码,而且二者都是Quine,实在令人赞叹。
|
||||
Quine本身就已经很困难了,再加上这些限制就变得更加复杂了,所以制作Polyglot Quine的编程语言基本上都得精挑细选,而且通常只有两种语言,比如[这段代码](https://github.com/TrAyZeN/polyglot-quine/blob/master/main.c)就是C和Python的Polyglot Quine,它巧妙利用了C预处理器指令在Python中可视为注释的特性,使两种语言互不干扰,非常有趣。当然并不是说只能是两种语言,像[这个](https://github.com/2KAbhishek/polyquine)项目甚至使用了五种语言(C、Perl、PHP、Python、Ruby),可以说是相当厉害了。除此之外更令人惊叹的则是[PyZipQuine](https://github.com/d0sboots/PyZipQuine)项目,在这其中LZ77编码也可以作为一种语言,所以既可以被当作压缩包,也可以作为Python2.7代码,而且二者都是Quine,实在是令人赞叹。
|
||||
|
||||
# 感想
|
||||
虽然这次探索最终没能完成让包含博客所有内容的压缩包自包含,但是在探索的过程中我还是收获了不少,尤其是Ruben Van Mello制作的ZIP Quine生成工具,实在是太棒了。很久以前我见到droste.zip这个压缩包的时候,就想整一个属于自己的ZIP Quine,现在我不仅用那个生成工具做了一个,还是对我来说很有意义的第一个项目——Mabbs,而且更关键的还是生成的是比普通的ZIP Quine更高级的嵌套循环ZIP Quine,也算是圆了小时候的心愿了。
|
||||
|
29
_posts/2025-10-12-recover.md
Normal file
29
_posts/2025-10-12-recover.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
layout: post
|
||||
title: 一次找回GitHub上被删除仓库的经历
|
||||
tags: [GitHub, Git, 代码恢复, 软件存档]
|
||||
---
|
||||
|
||||
在GitHub中寻找踪迹也许是非常简单的事情……<!--more-->
|
||||
|
||||
# 起因
|
||||
前段时间,有人和我聊天的时候提到了[Brainfuck](https://esolangs.org/wiki/Brainfuck)语言,让我回想起了高中时写的[演讲稿](/%E6%BC%94%E8%AE%B2%E7%A8%BF/2018/06/20/Coding.html)。那时候我在演讲时也介绍了Brainfuck语言。对于Brainfuck的解释器,[各种语言都可以实现](https://rosettacode.org/wiki/RCBF),不过我当时为了方便理解用了一个在GitHub Pages上的网站,用可视化的方式演示了它的运行过程,效果很不错。现在既然聊到了,自然就想分享一下这个[演示的网站](https://fatiherikli.github.io/brainfuck-visualizer/),但我正想打开时,发现网站已经404了😰。
|
||||
在GitHub Pages上的网站都有对应的仓库,现在不仅原仓库消失了,连作者的[首页](https://github.com/fatiherikli)都打不开,看样子是完全退出GitHub了……那么我想找到这个网站的想法就无法实现了吗?不过GitHub有些有意思的特性也许能帮助我找回这个网站。
|
||||
|
||||
# GitHub的特性
|
||||
在GitHub中,一个普通的仓库可能没有什么特别的,也许就是服务器上的一个文件夹。但是当仓库被其他人Fork的时候就不一样了,在执行Fork时,显然GitHub不会完整复制整个仓库。否则,同一个仓库在服务器上会占用双倍空间,这显然不合理。另外,想想Git的结构:它由提交对象和分支指针构成,每次提交都有唯一的Hash值且不会冲突。因此可以推测,GitHub在实现Fork时,所有被Fork的仓库可能共享同一个对象库,而每个用户仓库只保存指针,这样所有仓库只会占用增量空间,而不会存储重复内容。
|
||||
但这样也会带来一个问题,首先因为很多人可能要共用一部分对象,所以也很难确认对象的所有权,而且也因为这个原因所有的对象要能被所有人访问。因此在整个Fork网络中,只要有一个仓库存在,GitHub就必须保留所有的对象,而且每个仓库都能访问这个网络中所有的对象。为了验证这一点,我们可以用最知名的[Linux内核仓库](https://github.com/torvalds/linux)做个示例。
|
||||
首先对Linux仓库进行Fork,然后我们可以随便做一些改动,比如在README中写“Linux已经被我占领了😆”之类的内容,提交到自己的仓库,并且记下提交的Hash值,接下来就可以把自己的仓库删掉了。如果上面的猜想是正确的,那么在这个Fork网络中的任何一个仓库查看我刚刚的提交应该都可以,于是我直接在主仓库拼上了[提交的Hash值](https://github.com/torvalds/linux/tree/78e1d0446b94012da8639aa2b157d4f2dee481ce)(顺便一说只要值唯一,和其他的提交不冲突,[短的Hash值](https://github.com/torvalds/linux/tree/78e1d044)也可以),果不其然能找到刚刚修改的内容,这样一来,只要GitHub和任意一个Linux仓库的Fork还存在,这个提交就永远存在了😝。
|
||||
|
||||
# 找回仓库
|
||||
那么接下来找回之前网站的方案就很简单了,我只要找到网站仓库的任意一个Fork,然后只要知道最新的提交Hash,我就可以还原最新的仓库了。Fork倒是好找,随便搜一下[就能找到一个](https://github.com/ashupk/brainfuck-visualizer)。这个Fork的最新提交是2016年,但要想找到我当年演讲的版本至少到2018年之后。不过这个Hash值也不太好找,虽然理论上爆破短Hash值也可以,但是感觉太麻烦了,没有那个必要,所以我干脆直接去互联网档案馆看看能找到的[最新的仓库页面](https://web.archive.org/web/20201229125043/https://github.com/fatiherikli/brainfuck-visualizer/)吧,这样我就能找到它的Hash值了,然后我再把Fork仓库的地址和Hash拼到一起,就看得到最新代码了。
|
||||
当然,仅仅看到代码还不够。我想Fork这个项目并在自己的GitHub Pages上部署一份。有没有什么好办法可以将我仓库的HEAD指针指向最新的提交呢?其实很简单,首先我要Fork这个Fork仓库,然后Clone我的仓库到本地。不过,此时Clone下来的仓库并不包含GitHub上完整的对象库,因此直接checkout或reset是不行的。这时Hash值就派上用场了,通过fetch拉取对应提交后,就可以进行上述操作。具体命令如下:
|
||||
```bash
|
||||
git fetch origin <commit-hash>
|
||||
git reset --hard <commit-hash>
|
||||
git push origin master
|
||||
```
|
||||
最终我就获得了包含[最新代码](https://github.com/Mabbs/brainfuck-visualizer)的[Brainfuck可视化演示](https://mabbs.github.io/brainfuck-visualizer/)了🎉。
|
||||
|
||||
# 结局
|
||||
后来我才知道,原来有一个专门的组织[Software Heritage](https://archive.softwareheritage.org)会保存所有代码,根本没必要搞这些花里胡哨的操作😂,像这个仓库也是能很轻易在[上面](https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://github.com/fatiherikli/brainfuck-visualizer)找到,这下以后知道了,再遇到类似情况就可以直接去Software Heritage查找,而不必在互联网档案馆上找线索瞎折腾了🤣。
|
@@ -67,6 +67,7 @@ image: https://screenshot.mayx.eu.org/
|
||||
<p>
|
||||
<a href="/service.html">Mayx的公开服务</a><br />
|
||||
凯露&危险生存( <a href="{% unless site.github %}https://mabbs.github.io{% endunless %}/karyl-yabaival/?cn">CHS</a> | <a href="{% unless site.github %}https://mabbs.github.io{% endunless %}/karyl-yabaival/">JA</a> | <a href="{% unless site.github %}https://mabbs.github.io{% endunless %}/karyl-yabaival/?kr">KO</a> )<br />
|
||||
<a href="{% unless site.github %}https://mabbs.github.io{% endunless %}/brainfuck-visualizer/">Brainfuck可视化演示</a><br />
|
||||
<a href="/message.html">留言板</a><br />
|
||||
<a href="/links.html">Links</a><br />
|
||||
<a href="/proxylist.html">代理列表</a><br />
|
||||
|
Reference in New Issue
Block a user