summaryrefslogtreecommitdiff
path: root/blog
diff options
context:
space:
mode:
Diffstat (limited to 'blog')
-rw-r--r--blog/data/applefan.json526
-rw-r--r--blog/data/poll.js171
-rw-r--r--blog/list/.htaccess2
-rw-r--r--blog/list/0.html91
-rw-r--r--blog/list/1.html91
-rw-r--r--blog/list/10.html91
-rw-r--r--blog/list/11.html71
-rw-r--r--blog/list/2.html91
-rw-r--r--blog/list/3.html91
-rw-r--r--blog/list/4.html91
-rw-r--r--blog/list/5.html91
-rw-r--r--blog/list/6.html91
-rw-r--r--blog/list/7.html91
-rw-r--r--blog/list/8.html91
-rw-r--r--blog/list/9.html91
-rw-r--r--blog/list/acmicpc/0.html86
l---------blog/list/acmicpc/index.html1
-rw-r--r--blog/list/c++/0.html71
l---------blog/list/c++/index.html1
-rw-r--r--blog/list/computer-repairing/0.html81
l---------blog/list/computer-repairing/index.html1
-rw-r--r--blog/list/contest/0.html81
l---------blog/list/contest/index.html1
-rw-r--r--blog/list/daily-life/0.html91
-rw-r--r--blog/list/daily-life/1.html71
l---------blog/list/daily-life/index.html1
-rw-r--r--blog/list/design/0.html71
l---------blog/list/design/index.html1
-rw-r--r--blog/list/devel/0.html91
-rw-r--r--blog/list/devel/1.html91
l---------blog/list/devel/index.html1
-rw-r--r--blog/list/device-review/0.html91
-rw-r--r--blog/list/device-review/1.html91
l---------blog/list/device-review/index.html1
-rw-r--r--blog/list/electronics/0.html76
l---------blog/list/electronics/index.html1
-rw-r--r--blog/list/fiction/0.html71
l---------blog/list/fiction/index.html1
-rw-r--r--blog/list/garbage/0.html91
-rw-r--r--blog/list/garbage/1.html91
-rw-r--r--blog/list/garbage/2.html91
-rw-r--r--blog/list/garbage/3.html91
-rw-r--r--blog/list/garbage/4.html76
l---------blog/list/garbage/index.html1
-rw-r--r--blog/list/hands-on/0.html86
l---------blog/list/hands-on/index.html1
l---------blog/list/index.html1
-rw-r--r--blog/list/interactive/0.html71
l---------blog/list/interactive/index.html1
-rw-r--r--blog/list/js/0.html76
l---------blog/list/js/index.html1
-rw-r--r--blog/list/linux/0.html71
l---------blog/list/linux/index.html1
-rw-r--r--blog/list/midi/0.html91
l---------blog/list/midi/index.html1
-rw-r--r--blog/list/music/0.html91
-rw-r--r--blog/list/music/1.html76
l---------blog/list/music/index.html1
-rw-r--r--blog/list/opengl/0.html71
l---------blog/list/opengl/index.html1
-rw-r--r--blog/list/qmidiplayer/0.html91
l---------blog/list/qmidiplayer/index.html1
-rw-r--r--blog/list/qt/0.html71
l---------blog/list/qt/index.html1
-rw-r--r--blog/list/random-xp/0.html86
l---------blog/list/random-xp/index.html1
-rw-r--r--blog/list/sophistry/0.html91
-rw-r--r--blog/list/sophistry/1.html76
l---------blog/list/sophistry/index.html1
-rw-r--r--blog/list/special-page/0.html71
l---------blog/list/special-page/index.html1
-rw-r--r--blog/list/web/0.html91
l---------blog/list/web/index.html1
-rw-r--r--blog/list/webgl/0.html71
l---------blog/list/webgl/index.html1
-rw-r--r--blog/post/.htaccess1
-rw-r--r--blog/post/2014-11-14.html143
-rw-r--r--blog/post/2015-10-29.html100
-rw-r--r--blog/post/2015-10-30.html168
-rw-r--r--blog/post/2015-10-31.html142
-rw-r--r--blog/post/2015-11-01.html135
-rw-r--r--blog/post/2015-11-22.html146
-rw-r--r--blog/post/2015-12-20.html106
-rw-r--r--blog/post/2015-12-23.html97
-rw-r--r--blog/post/2015-12-27.html97
-rw-r--r--blog/post/2016-01-03.html117
-rw-r--r--blog/post/2016-01-16.html109
-rw-r--r--blog/post/2016-01-25.html164
-rw-r--r--blog/post/2016-02-14.html96
-rw-r--r--blog/post/2016-02-18.html113
-rw-r--r--blog/post/2016-03-26.html121
-rw-r--r--blog/post/2016-04-09.html156
-rw-r--r--blog/post/2016-05-12.html376
-rw-r--r--blog/post/2016-06-21.html673
-rw-r--r--blog/post/2016-09-24.html200
-rw-r--r--blog/post/2017-01-09.html213
-rw-r--r--blog/post/2017-01-18.html479
-rw-r--r--blog/post/2017-02-13.html618
-rw-r--r--blog/post/2017-04-11.html131
-rw-r--r--blog/post/2017-05-08.html377
-rw-r--r--blog/post/2017-06-09.html224
-rw-r--r--blog/post/2017-06-29.html668
-rw-r--r--blog/post/2017-11-25.html178
-rw-r--r--blog/post/2017-12-21.html964
-rw-r--r--blog/post/2018-01-05.html154
-rw-r--r--blog/post/2018-01-07.html414
-rw-r--r--blog/post/2018-02-05.html235
-rw-r--r--blog/post/2018-03-17.html142
-rw-r--r--blog/post/2018-04-17.html184
-rw-r--r--blog/post/2018-04-22.html158
-rw-r--r--blog/post/2018-05-03.html154
-rw-r--r--blog/post/2018-05-08.html302
-rw-r--r--blog/post/2018-05-18.html307
-rw-r--r--blog/post/2018-06-05.html186
-rw-r--r--blog/post/2018-06-07.html230
-rw-r--r--blog/post/2018-10-11.html119
-rw-r--r--blog/post/2018-12-06.html323
-rw-r--r--blog/post/2019-02-13.html205
-rw-r--r--blog/post/2019-04-25.html1468
-rw-r--r--blog/post/2019-06-24.html473
-rw-r--r--blog/post/2019-09-04.html127
-rw-r--r--blog/post/2020-11-20.html2522
-rw-r--r--blog/post/2021-06-03.html119
-rw-r--r--blog/post/2021-10-10.html972
-rw-r--r--blog/post/2022-07-23.html503
-rw-r--r--blog/post/2022-11-27.html661
-rw-r--r--blog/post/2023-11-13.html471
-rw-r--r--blog/post/2024-02-02.html612
-rw-r--r--blog/post/2024-02-04.html600
-rw-r--r--blog/post/2024-02-29.html165
-rw-r--r--blog/post/2024-03-02.html394
-rw-r--r--blog/post/Privacy.html162
-rw-r--r--blog/post/TOP.html223
-rw-r--r--blog/post/rbus-adat-m.html533
134 files changed, 0 insertions, 24811 deletions
diff --git a/blog/data/applefan.json b/blog/data/applefan.json
deleted file mode 100644
index e8e09f9..0000000
--- a/blog/data/applefan.json
+++ /dev/null
@@ -1,526 +0,0 @@
-{
- "title":"Are you an Apple fanboy/fangirl?",
- "question":[
- {
- "initialization":[
- {
- "c":"",
- "s":"have_ios = + 0"
- },
- {
- "c":"",
- "s":"have_iph = + 0"
- },
- {
- "c":"",
- "s":"airpods_sane = + 0"
- }
- ],
- "precond":"",
- "type":"multi",
- "caption":"I have an/a...",
- "choice":[
- {
- "caption":"iPod (original/Photo/Classic)/iPod mini/iPod Nano (1G~5G)/iPod Shuffle",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iPod Nano (6G, 7G)/iPod touch",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1.5"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iPhone",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1.5"
- },
- {
- "c":"",
- "s":"have_ios = + 1"
- },
- {
- "c":"",
- "s":"have_iph = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iPhone X",
- "setp":[
- {
- "c":"| have_iph gt 0",
- "s":"score = + score + 2"
- },
- {
- "c":"| have_iph lt 1",
- "s":"score = + score + 3.5"
- },
- {
- "c":"",
- "s":"have_ios = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iPad original/Mini/Air",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2"
- },
- {
- "c":"",
- "s":"have_ios = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iPad Pro",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2.5"
- },
- {
- "c":"",
- "s":"have_ios = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"Apple Watch",
- "setp":[
- {
- "c":"| have_ios gt 0",
- "s":"score = + score + 5"
- },
- {
- "c":"| have_ios lt 1",
- "s":"score = + score + 105"
- },
- {
- "c":"",
- "s":"airpods_sane = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"Macintosh before 1998",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 2"
- }
- ],
- "setn":[]
- },
- {
- "caption":"PowerBook or Power Mac",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- },
- {
- "caption":"MacBook",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2"
- },
- {
- "c":"",
- "s":"airpods_sane = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"MacBook Air/Pro",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1.5"
- },
- {
- "c":"",
- "s":"airpods_sane = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"iMac",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2"
- },
- {
- "c":"",
- "s":"airpods_sane = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"Mac Pro",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2.5"
- },
- {
- "c":"",
- "s":"airpods_sane = + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"Air Pods",
- "setp":[
- {
- "c":"| airpods_sane gt 0",
- "s":"score = + score + 10"
- },
- {
- "c":"| airpods_sane lt 1",
- "s":"score = + score + 110"
- }
- ],
- "setn":[]
- },
- {
- "caption":"HomePod",
- "setp":[
- {
- "c":"| have_ios gt 0",
- "s":"score = + score + 7"
- },
- {
- "c":"| have_ios lt 1",
- "s":"score = + score + 107"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I use Apple products because I am so dumb that I don't know how to use products from other vendors",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 10"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I use Apple products because they are far more superior than any other vendors' products",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 8"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I think Apple's products are worth all that money",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 5"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 1"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"Apple products suck, I have to use them for my work however",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 7.5"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I think Apple respects my freedom and privacy",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 10"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 2"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I bought refurbished Apple products because...",
- "choice":[
- {
- "caption":"I can't afford a normal Apple product but I really want one",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2"
- }
- ],
- "setn":[]
- },
- {
- "caption":"Finally there's an Apple product that falls into my affordable range. I took it into consideration.",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 2"
- }
- ],
- "setn":[]
- },
- {
- "caption":"I do not.",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"Keyboard on a MacBook (late 2016 and onward) is reliable and satisfying",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"I've never tried that",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 0"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I think that Apple products are more secure and resistant to malware attacks.",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 2"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 2"
- }
- ],
- "setn":[]
- }
- ]
- },
- {
- "initialization":[],
- "precond":"",
- "type":"single",
- "caption":"I am an Apple fanboy/fangirl.",
- "choice":[
- {
- "caption":"yes",
- "setp":[
- {
- "c":"",
- "s":"score = + score + 1"
- }
- ],
- "setn":[]
- },
- {
- "caption":"no",
- "setp":[
- {
- "c":"",
- "s":"score = + score - 1"
- }
- ],
- "setn":[]
- }
- ]
- }
- ],
- "verdict":[
- {
- "caption":"<h2>Apple Hater.</h2><p>This world needs more sanity like you.</p>",
- "precond":"| score lt -4"
- },
- {
- "caption":"<h2>What Apple?</h2><p>Just stay this way.</p>",
- "precond":"| score geq -4 & score lt 4"
- },
- {
- "caption":"<h2>Apple Adorer.</h2><p>No.</p>",
- "precond":"| score geq 4 & score lt 7"
- },
- {
- "caption":"<h2>Apple Fan.</h2><p>Stop it. Get some help.</p><p><a href=\"https://youtu.be/fkkDvKGcNSo?t=1081\">https://youtu.be/fkkDvKGcNSo?t=1081</a></p>",
- "precond":"| score geq 7 & score lt 20"
- },
- {
- "caption":"<h2>Incurable Apple Fan.</h2><p>Fuck off. Nothing will help.</p>",
- "precond":"| score geq 20"
- }
- ]
-}
diff --git a/blog/data/poll.js b/blog/data/poll.js
deleted file mode 100644
index 55b4e22..0000000
--- a/blog/data/poll.js
+++ /dev/null
@@ -1,171 +0,0 @@
-//By Chris Xiong, 2018
-//License: Expat
-let p=null;
-let Caption;
-let Choices;
-let Score;
-let Next;
-let values=[];
-let curq;
-function evalexpr(e)
-{
- let ret=0;
- let op=function(a,o,b){
- switch(o){
- case '+':return a+b;
- case '-':return a-b;
- case '*':return a*b;
- case '/':return a/b;
- }
- };
- for(let p=e.match(/[+\-*\/]/);p;p=e.match(/[+\-*\/]/))
- {
- let vp=e.match(/[A-Za-z]\w*/);
- if(vp)
- {
- const v=vp[0];
- if(values[v]===undefined)throw 'shit';
- ret=op(ret,p[0],values[v]);
- e=e.substr(vp.index+vp[0].length);
- }
- else
- {
- let np=e.match(/\d+(.\d*)?/);
- if(np)
- {
- const n=Number(np[0]);
- ret=op(ret,p[0],n);
- e=e.substr(np.index+np[0].length);
- }else throw 'shit';
- }
- }
- return ret;
-}
-function evalsetexpr(e)
-{
- const s=e.split('=');
- if(s.length<2)throw 'shit';
- values[s[0].trim()]=evalexpr(s[1]);
-}
-function evaltestexpr(e)
-{
- const m=e.match(/([A-Za-z]\w*)\s*(leq|geq|lt|gt)\s*([A-Za-z0-9.]*)/);
- if(!m)throw 'shit';
- const v=m[1],op=m[2],vr=m[3];
- const vv=values[v];
- const vvr=isNaN(Number(vr))?values[vr]:Number(vr);
- if(vv===undefined||vvr===undefined)throw 'shit';
- switch(op.trim())
- {
- case 'leq':return vv<=vvr;
- case 'geq':return vv>=vvr;
- case 'lt':return vv<vvr;
- case 'gt':return vv>vvr;
- }
- throw 'shit';
-}
-function evalcondexpr(e)
-{
- if(!e.trim().length)return true;
- let ret=false;
- let op=function(a,o,b){
- switch(o){
- case '|':return a||b;
- case '&':return a&&b;
- }
- };
- for(let p=e.search(/[|&]/);p!=-1;p=e.search(/[|&]/))
- {
- let np=e.substr(p+1).search(/[|&]/);
- let n=e.substr(p+1,np!=-1?np-1:undefined);
- ret=op(ret,e[p],evaltestexpr(n.trim()));
- e=np?e.substr(np):"";
- }
- return ret;
-}
-function initq()
-{
- const q=p.question[curq];
- for(let i=0;i<q.initialization.length;++i)
- {
- if(evalcondexpr(q.initialization[i].c))
- evalsetexpr(q.initialization[i].s);
- }
- if(!evalcondexpr(q.precond)){++curq;if(curq<p.question.length)initq();else finalize();}
-}
-function evalq()
-{
- if(curq>=p.question.length)return;
- const q=p.question[curq];
- let seln=0;
- for(let i=0;i<q.choice.length;++i)
- {
- const e=document.getElementById(`choice${i}`);
- if(e.checked)++seln;
- if(e.checked)
- {
- for(let j=0;j<q.choice[i].setp.length;++j)
- if(evalcondexpr(q.choice[i].setp[j].c))
- evalsetexpr(q.choice[i].setp[j].s);
- }
- else
- {
- for(let j=0;j<q.choice[i].setn.length;++j)
- if(evalcondexpr(q.choice[i].setn[j].c))
- evalsetexpr(q.choice[i].setn[j].s);
- }
- }
- if(!seln&&q.type=='single'){alert('Wanna cheat?...');return;}
- ++curq;
- if(curq==p.question.length)finalize();else{showq();initq();}
-}
-function showq()
-{
- const q=p.question[curq];
- Caption.innerHTML=q.caption;
- while(Choices.firstChild)Choices.removeChild(Choices.firstChild);
- for(let i=0;i<q.choice.length;++i)
- {
- const d=document.createElement('div');
- const e=document.createElement('input');
- e.type=q.type=='multi'?'checkbox':'radio';
- e.innerHTML=q.choice[i].caption;
- e.qid=i;e.id=`choice${i}`;
- e.setAttribute('name','choice');
- e.classList.add('check');
- const l=document.createElement('label');
- l.innerHTML=q.choice[i].caption;
- l.setAttribute('for',e.id);
- d.appendChild(e);
- d.appendChild(l);
- Choices.appendChild(d);
- }
- Score.innerHTML=`${values['score']}, Question ${curq+1}/${p.question.length}`;
-}
-function _init()
-{
- Caption=document.getElementById('qcaption');
- Choices=document.getElementById('qchoices');
- Score=document.getElementById('score');
- Next=document.getElementById('nextbtn');
- curq=0;values['score']=0;
- initq();showq();
-}
-async function init()
-{
- const resp=await fetch(new Request('/blog/data/applefan.json'));
- r=await resp.text();
- p=JSON.parse(r);
- _init();
-}
-function finalize()
-{
- Next.style.color='#888';
- Score.innerHTML=`${values['score']}, Question ${p.question.length}/${p.question.length}`;
- Caption.innerHTML='';
- Choices.innerHTML='';
- for(let i=0;i<p.verdict.length;++i)
- if(evalcondexpr(p.verdict[i].precond))
- Caption.innerHTML+=p.verdict[i].caption;
-}
-init();
diff --git a/blog/list/.htaccess b/blog/list/.htaccess
deleted file mode 100644
index 49e93ae..0000000
--- a/blog/list/.htaccess
+++ /dev/null
@@ -1,2 +0,0 @@
-Options +FollowSymlinks
-Header set Cache-Control no-cache
diff --git a/blog/list/0.html b/blog/list/0.html
deleted file mode 100644
index b2c321d..0000000
--- a/blog/list/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/TOP.html">Readme_en</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2016-02-13/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/Privacy.html">Privacy Policy &amp; Terms</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#special-page</span>
- <span class="right" id="">2019-09-03/2019-09-03</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-03-02.html">The Station of Elyssima</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#fiction #garbage</span>
- <span class="right" id="">2024-03-02/2024-03-08</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-29.html">2024 Site Update</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2024-02-29/2024-02-29</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-04.html">RBUS-ADAT devlog</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-04/2024-02-17</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/1.html b/blog/list/1.html
deleted file mode 100644
index dbffe2a..0000000
--- a/blog/list/1.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-02.html">R-BUS Technical Information</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-02/2024-02-18</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2023-11-13.html">Framework Laptop: Repasting &amp; Two Year Report</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #computer-repairing</span>
- <span class="right" id="">2023-11-13/2023-11-28</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-11-27.html">(Not really) Musical Answers &amp; Rants</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #midi</span>
- <span class="right" id="">2022-11-27/2022-12-02</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-07-23.html">Framework Laptop: The next thing in the laptop world?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on #computer-repairing</span>
- <span class="right" id="">2022-07-23/2023-11-14</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-10-10.html">EDIROL SD-20: the Crumbling of the Canvas?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2021-10-10/2022-07-01</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/2.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/10.html b/blog/list/10.html
deleted file mode 100644
index ddd50e3..0000000
--- a/blog/list/10.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-20.html">忙</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span>
- <span class="right" id="">2015-12-20/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#hands-on #device-review</span>
- <span class="right" id="">2015-11-22/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-01.html">Hackathon 2015乱搞记</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span>
- <span class="right" id="">2015-11-01/2015-11-22</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-31.html">大学入学两个月了……</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2015-10-31/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-30.html">First CCPC sightseeing tour</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest</span>
- <span class="right" id="">2015-10-30/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/9.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">11/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/11.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/11.html b/blog/list/11.html
deleted file mode 100644
index 637551e..0000000
--- a/blog/list/11.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-29.html">noname01.pas</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2015-10-29/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/10.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">12/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/2.html b/blog/list/2.html
deleted file mode 100644
index 1d321d2..0000000
--- a/blog/list/2.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-06-03.html">No, I'm not dead</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2021-06-03/2021-06-02</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-11-20.html">EDIROL SD-80: The Adventure Continues</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2020-11-20/2024-02-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-09-04.html">September 2019 Site Update</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web</span>
- <span class="right" id="">2019-09-04/2019-11-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-06-24.html">Working as an intern for "the spyware corporation"</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #sophistry</span>
- <span class="right" id="">2019-06-24/2024-02-17</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2022-06-30</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/1.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">3/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/3.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/3.html b/blog/list/3.html
deleted file mode 100644
index 6c3c834..0000000
--- a/blog/list/3.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span>
- <span class="right" id="">2019-02-13/2019-07-24</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span>
- <span class="right" id="">2018-12-06/2021-01-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span>
- <span class="right" id="">2018-10-11/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-06-07/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-05.html">Software Project Management in the Free Software World</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span>
- <span class="right" id="">2018-06-05/2018-10-16</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/2.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">4/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/4.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/4.html b/blog/list/4.html
deleted file mode 100644
index af290dd..0000000
--- a/blog/list/4.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-18.html">Ideology vs Pragmatism &amp;c.</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-05-18/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span>
- <span class="right" id="">2018-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span>
- <span class="right" id="">2018-05-03/2019-02-09</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span>
- <span class="right" id="">2018-04-22/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span>
- <span class="right" id="">2018-04-17/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/3.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">5/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/5.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/5.html b/blog/list/5.html
deleted file mode 100644
index 09ff9a1..0000000
--- a/blog/list/5.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-03-17.html">Some rants on SMELT, QMidiPlayer and Virtools</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #opengl</span>
- <span class="right" id="">2018-03-17/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-02-05.html">Does gaming make me merrier &amp; more relaxed or the opposite?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2018-02-05/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-07.html">Trash dump for the fifth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2018-01-07/2018-10-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span>
- <span class="right" id="">2018-01-05/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span>
- <span class="right" id="">2017-12-21/2019-02-12</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/4.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">6/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/6.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/6.html b/blog/list/6.html
deleted file mode 100644
index 1d562a6..0000000
--- a/blog/list/6.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span>
- <span class="right" id="">2017-11-25/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-06-29.html">Trash dump for the fourth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-06-29/2021-06-26</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-06-09.html">Fuck Windows et cetera</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span>
- <span class="right" id="">2017-06-08/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2017-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-04-11.html">SBS 2.0 is now the default blog browser</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #web</span>
- <span class="right" id="">2017-04-11/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/5.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">7/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/7.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/7.html b/blog/list/7.html
deleted file mode 100644
index 5b8d1cc..0000000
--- a/blog/list/7.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-02-13.html">[多大图警告]ls /dev</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span>
- <span class="right" id="">2017-02-13/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-18.html">Trash dump for the third semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-01-09/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span>
- <span class="right" id="">2017-01-09/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span>
- <span class="right" id="">2016-09-24/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2016-06-21/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/6.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">8/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/8.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/8.html b/blog/list/8.html
deleted file mode 100644
index 643fa40..0000000
--- a/blog/list/8.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-05-12.html">ThinkPad X1 Yoga初体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span>
- <span class="right" id="">2016-05-12/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #midi</span>
- <span class="right" id="">2016-04-09/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-03-26.html">ACM校赛水题组酱油记</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2016-03-26/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span>
- <span class="right" id="">2016-02-18/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-14.html">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span>
- <span class="right" id="">2016-02-14/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/7.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">9/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/9.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/9.html b/blog/list/9.html
deleted file mode 100644
index 0c7c39c..0000000
--- a/blog/list/9.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-25.html">放假...</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span>
- <span class="right" id="">2016-01-25/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-16.html">QMidiPlayer Progress-2016-01-16</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2016-01-16/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-03.html">The Design and The Real Product</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #design</span>
- <span class="right" id="">2016-01-03/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-27.html">QMidiPlayer got its repo</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2015-12-27/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-23.html">Chris' First Development Blog</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel</span>
- <span class="right" id="">2015-12-23/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/8.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">10/12</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/10.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/acmicpc/0.html b/blog/list/acmicpc/0.html
deleted file mode 100644
index 209d887..0000000
--- a/blog/list/acmicpc/0.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a class="active" href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span>
- <span class="right" id="">2018-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span>
- <span class="right" id="">2018-04-22/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2017-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-03-26.html">ACM校赛水题组酱油记</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2016-03-26/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/acmicpc/index.html b/blog/list/acmicpc/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/acmicpc/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/c++/0.html b/blog/list/c++/0.html
deleted file mode 100644
index eb021a6..0000000
--- a/blog/list/c++/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a class="active" href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span>
- <span class="right" id="">2016-09-24/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/c++/index.html b/blog/list/c++/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/c++/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/computer-repairing/0.html b/blog/list/computer-repairing/0.html
deleted file mode 100644
index 614d234..0000000
--- a/blog/list/computer-repairing/0.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a class="active" href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2023-11-13.html">Framework Laptop: Repasting &amp; Two Year Report</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #computer-repairing</span>
- <span class="right" id="">2023-11-13/2023-11-28</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-07-23.html">Framework Laptop: The next thing in the laptop world?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on #computer-repairing</span>
- <span class="right" id="">2022-07-23/2023-11-14</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span>
- <span class="right" id="">2017-01-09/2019-02-12</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/computer-repairing/index.html b/blog/list/computer-repairing/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/computer-repairing/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/contest/0.html b/blog/list/contest/0.html
deleted file mode 100644
index a5c3702..0000000
--- a/blog/list/contest/0.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a class="active" href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2017-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-03-26.html">ACM校赛水题组酱油记</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span>
- <span class="right" id="">2016-03-26/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-30.html">First CCPC sightseeing tour</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest</span>
- <span class="right" id="">2015-10-30/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/contest/index.html b/blog/list/contest/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/contest/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/daily-life/0.html b/blog/list/daily-life/0.html
deleted file mode 100644
index 713cfa4..0000000
--- a/blog/list/daily-life/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a class="active" href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-07.html">Trash dump for the fifth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2018-01-07/2018-10-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-06-29.html">Trash dump for the fourth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-06-29/2021-06-26</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-06-09.html">Fuck Windows et cetera</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span>
- <span class="right" id="">2017-06-08/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-18.html">Trash dump for the third semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-01-09/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2016-06-21/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/daily-life/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/daily-life/1.html b/blog/list/daily-life/1.html
deleted file mode 100644
index 37ba1a9..0000000
--- a/blog/list/daily-life/1.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a class="active" href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-25.html">放假...</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span>
- <span class="right" id="">2016-01-25/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/daily-life/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/daily-life/index.html b/blog/list/daily-life/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/daily-life/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/design/0.html b/blog/list/design/0.html
deleted file mode 100644
index 16458cf..0000000
--- a/blog/list/design/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a class="active" href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-03.html">The Design and The Real Product</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #design</span>
- <span class="right" id="">2016-01-03/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/design/index.html b/blog/list/design/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/design/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/devel/0.html b/blog/list/devel/0.html
deleted file mode 100644
index 71570b2..0000000
--- a/blog/list/devel/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a class="active" href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span>
- <span class="right" id="">2018-10-11/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-03-17.html">Some rants on SMELT, QMidiPlayer and Virtools</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #opengl</span>
- <span class="right" id="">2018-03-17/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-04-11.html">SBS 2.0 is now the default blog browser</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #web</span>
- <span class="right" id="">2017-04-11/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span>
- <span class="right" id="">2016-09-24/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #midi</span>
- <span class="right" id="">2016-04-09/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/devel/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/devel/1.html b/blog/list/devel/1.html
deleted file mode 100644
index b647777..0000000
--- a/blog/list/devel/1.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a class="active" href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span>
- <span class="right" id="">2016-02-18/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-16.html">QMidiPlayer Progress-2016-01-16</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2016-01-16/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-03.html">The Design and The Real Product</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #design</span>
- <span class="right" id="">2016-01-03/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-27.html">QMidiPlayer got its repo</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2015-12-27/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-23.html">Chris' First Development Blog</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel</span>
- <span class="right" id="">2015-12-23/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/devel/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/devel/index.html b/blog/list/devel/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/devel/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/device-review/0.html b/blog/list/device-review/0.html
deleted file mode 100644
index f899df6..0000000
--- a/blog/list/device-review/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a class="active" href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2023-11-13.html">Framework Laptop: Repasting &amp; Two Year Report</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #computer-repairing</span>
- <span class="right" id="">2023-11-13/2023-11-28</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-07-23.html">Framework Laptop: The next thing in the laptop world?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on #computer-repairing</span>
- <span class="right" id="">2022-07-23/2023-11-14</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-10-10.html">EDIROL SD-20: the Crumbling of the Canvas?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2021-10-10/2022-07-01</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-11-20.html">EDIROL SD-80: The Adventure Continues</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2020-11-20/2024-02-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2022-06-30</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/device-review/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/device-review/1.html b/blog/list/device-review/1.html
deleted file mode 100644
index ef30e52..0000000
--- a/blog/list/device-review/1.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a class="active" href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span>
- <span class="right" id="">2018-12-06/2021-01-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span>
- <span class="right" id="">2017-12-21/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-02-13.html">[多大图警告]ls /dev</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span>
- <span class="right" id="">2017-02-13/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-05-12.html">ThinkPad X1 Yoga初体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span>
- <span class="right" id="">2016-05-12/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#hands-on #device-review</span>
- <span class="right" id="">2015-11-22/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/device-review/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/device-review/index.html b/blog/list/device-review/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/device-review/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/electronics/0.html b/blog/list/electronics/0.html
deleted file mode 100644
index 03ee299..0000000
--- a/blog/list/electronics/0.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a class="active" href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-04.html">RBUS-ADAT devlog</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-04/2024-02-17</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-02.html">R-BUS Technical Information</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-02/2024-02-18</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/electronics/index.html b/blog/list/electronics/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/electronics/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/fiction/0.html b/blog/list/fiction/0.html
deleted file mode 100644
index bb8099b..0000000
--- a/blog/list/fiction/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a class="active" href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-03-02.html">The Station of Elyssima</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#fiction #garbage</span>
- <span class="right" id="">2024-03-02/2024-03-08</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/fiction/index.html b/blog/list/fiction/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/fiction/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/garbage/0.html b/blog/list/garbage/0.html
deleted file mode 100644
index 443c0d7..0000000
--- a/blog/list/garbage/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a class="active" href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/TOP.html">Readme_en</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2016-02-13/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-03-02.html">The Station of Elyssima</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#fiction #garbage</span>
- <span class="right" id="">2024-03-02/2024-03-08</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-29.html">2024 Site Update</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2024-02-29/2024-02-29</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-06-03.html">No, I'm not dead</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2021-06-03/2021-06-02</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-06-24.html">Working as an intern for "the spyware corporation"</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #sophistry</span>
- <span class="right" id="">2019-06-24/2024-02-17</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/5</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/garbage/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/garbage/1.html b/blog/list/garbage/1.html
deleted file mode 100644
index b491fe8..0000000
--- a/blog/list/garbage/1.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a class="active" href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span>
- <span class="right" id="">2019-02-13/2019-07-24</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-06-07/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-18.html">Ideology vs Pragmatism &amp;c.</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-05-18/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span>
- <span class="right" id="">2018-05-08/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span>
- <span class="right" id="">2018-05-03/2019-02-09</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/garbage/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/5</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/garbage/2.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/garbage/2.html b/blog/list/garbage/2.html
deleted file mode 100644
index 60053ab..0000000
--- a/blog/list/garbage/2.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a class="active" href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span>
- <span class="right" id="">2018-04-22/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span>
- <span class="right" id="">2018-04-17/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-02-05.html">Does gaming make me merrier &amp; more relaxed or the opposite?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2018-02-05/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-07.html">Trash dump for the fifth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2018-01-07/2018-10-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span>
- <span class="right" id="">2017-12-21/2019-02-12</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/garbage/1.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">3/5</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/garbage/3.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/garbage/3.html b/blog/list/garbage/3.html
deleted file mode 100644
index 2adfd75..0000000
--- a/blog/list/garbage/3.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a class="active" href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span>
- <span class="right" id="">2017-11-25/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-06-29.html">Trash dump for the fourth semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-06-29/2021-06-26</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-18.html">Trash dump for the third semester</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2017-01-09/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span>
- <span class="right" id="">2017-01-09/2019-02-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span>
- <span class="right" id="">2016-06-21/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/garbage/2.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">4/5</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/garbage/4.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/garbage/4.html b/blog/list/garbage/4.html
deleted file mode 100644
index 470f1bd..0000000
--- a/blog/list/garbage/4.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a class="active" href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-31.html">大学入学两个月了……</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2015-10-31/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-29.html">noname01.pas</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
- <span class="right" id="">2015-10-29/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/garbage/3.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">5/5</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/garbage/index.html b/blog/list/garbage/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/garbage/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/hands-on/0.html b/blog/list/hands-on/0.html
deleted file mode 100644
index 993d061..0000000
--- a/blog/list/hands-on/0.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a class="active" href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-07-23.html">Framework Laptop: The next thing in the laptop world?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on #computer-repairing</span>
- <span class="right" id="">2022-07-23/2023-11-14</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2022-06-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span>
- <span class="right" id="">2018-12-06/2021-01-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#hands-on #device-review</span>
- <span class="right" id="">2015-11-22/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/hands-on/index.html b/blog/list/hands-on/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/hands-on/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/index.html b/blog/list/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/interactive/0.html b/blog/list/interactive/0.html
deleted file mode 100644
index 69aacf5..0000000
--- a/blog/list/interactive/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a class="active" href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span>
- <span class="right" id="">2018-05-03/2019-02-09</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/interactive/index.html b/blog/list/interactive/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/interactive/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/js/0.html b/blog/list/js/0.html
deleted file mode 100644
index 9441179..0000000
--- a/blog/list/js/0.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a class="active" href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span>
- <span class="right" id="">2018-10-11/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span>
- <span class="right" id="">2016-02-18/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/js/index.html b/blog/list/js/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/js/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/linux/0.html b/blog/list/linux/0.html
deleted file mode 100644
index 40547b3..0000000
--- a/blog/list/linux/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a class="active" href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span>
- <span class="right" id="">2018-04-17/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/linux/index.html b/blog/list/linux/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/linux/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/midi/0.html b/blog/list/midi/0.html
deleted file mode 100644
index 01f556d..0000000
--- a/blog/list/midi/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a class="active" href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-11-27.html">(Not really) Musical Answers &amp; Rants</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #midi</span>
- <span class="right" id="">2022-11-27/2022-12-02</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-10-10.html">EDIROL SD-20: the Crumbling of the Canvas?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2021-10-10/2022-07-01</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-11-20.html">EDIROL SD-80: The Adventure Continues</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2020-11-20/2024-02-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2022-06-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #midi</span>
- <span class="right" id="">2016-04-09/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/midi/index.html b/blog/list/midi/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/midi/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/music/0.html b/blog/list/music/0.html
deleted file mode 100644
index aa99d50..0000000
--- a/blog/list/music/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a class="active" href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-04.html">RBUS-ADAT devlog</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-04/2024-02-17</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2024-02-02.html">R-BUS Technical Information</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #electronics</span>
- <span class="right" id="">2024-02-02/2024-02-18</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2022-11-27.html">(Not really) Musical Answers &amp; Rants</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #midi</span>
- <span class="right" id="">2022-11-27/2022-12-02</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2021-10-10.html">EDIROL SD-20: the Crumbling of the Canvas?</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2021-10-10/2022-07-01</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-11-20.html">EDIROL SD-80: The Adventure Continues</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music</span>
- <span class="right" id="">2020-11-20/2024-02-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/music/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/music/1.html b/blog/list/music/1.html
deleted file mode 100644
index 9641efc..0000000
--- a/blog/list/music/1.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a class="active" href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2022-06-30</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span>
- <span class="right" id="">2017-11-25/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/music/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/music/index.html b/blog/list/music/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/music/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/opengl/0.html b/blog/list/opengl/0.html
deleted file mode 100644
index 8dd582e..0000000
--- a/blog/list/opengl/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a class="active" href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-03-17.html">Some rants on SMELT, QMidiPlayer and Virtools</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #opengl</span>
- <span class="right" id="">2018-03-17/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/opengl/index.html b/blog/list/opengl/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/opengl/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/qmidiplayer/0.html b/blog/list/qmidiplayer/0.html
deleted file mode 100644
index 5c2931a..0000000
--- a/blog/list/qmidiplayer/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a class="active" href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-03-17.html">Some rants on SMELT, QMidiPlayer and Virtools</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #opengl</span>
- <span class="right" id="">2018-03-17/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span>
- <span class="right" id="">2016-09-24/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #midi</span>
- <span class="right" id="">2016-04-09/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-16.html">QMidiPlayer Progress-2016-01-16</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2016-01-16/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-27.html">QMidiPlayer got its repo</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span>
- <span class="right" id="">2015-12-27/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/qmidiplayer/index.html b/blog/list/qmidiplayer/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/qmidiplayer/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/qt/0.html b/blog/list/qt/0.html
deleted file mode 100644
index 17f74b0..0000000
--- a/blog/list/qt/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a class="active" href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span>
- <span class="right" id="">2016-09-24/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/qt/index.html b/blog/list/qt/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/qt/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/random-xp/0.html b/blog/list/random-xp/0.html
deleted file mode 100644
index 7028113..0000000
--- a/blog/list/random-xp/0.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a class="active" href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span>
- <span class="right" id="">2019-02-13/2019-07-24</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span>
- <span class="right" id="">2018-01-05/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-20.html">忙</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span>
- <span class="right" id="">2015-12-20/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-01.html">Hackathon 2015乱搞记</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span>
- <span class="right" id="">2015-11-01/2015-11-22</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/random-xp/index.html b/blog/list/random-xp/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/random-xp/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/sophistry/0.html b/blog/list/sophistry/0.html
deleted file mode 100644
index d87d80f..0000000
--- a/blog/list/sophistry/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a class="active" href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-06-24.html">Working as an intern for "the spyware corporation"</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #sophistry</span>
- <span class="right" id="">2019-06-24/2024-02-17</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-06-07/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-05.html">Software Project Management in the Free Software World</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span>
- <span class="right" id="">2018-06-05/2018-10-16</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-18.html">Ideology vs Pragmatism &amp;c.</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
- <span class="right" id="">2018-05-18/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span>
- <span class="right" id="">2018-05-08/2019-02-12</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/sophistry/1.html">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/sophistry/1.html b/blog/list/sophistry/1.html
deleted file mode 100644
index 29274af..0000000
--- a/blog/list/sophistry/1.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a class="active" href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span>
- <span class="right" id="">2018-04-17/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-14.html">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span>
- <span class="right" id="">2016-02-14/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="/blog/list/sophistry/0.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">2/2</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/sophistry/index.html b/blog/list/sophistry/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/sophistry/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/special-page/0.html b/blog/list/special-page/0.html
deleted file mode 100644
index 09c3d10..0000000
--- a/blog/list/special-page/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a class="active" href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/Privacy.html">Privacy Policy &amp; Terms</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#special-page</span>
- <span class="right" id="">2019-09-03/2019-09-03</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/special-page/index.html b/blog/list/special-page/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/special-page/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/web/0.html b/blog/list/web/0.html
deleted file mode 100644
index 3386bb0..0000000
--- a/blog/list/web/0.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a class="active" href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-09-04.html">September 2019 Site Update</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web</span>
- <span class="right" id="">2019-09-04/2019-11-12</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span>
- <span class="right" id="">2019-02-13/2019-07-24</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span>
- <span class="right" id="">2018-10-11/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span>
- <span class="right" id="">2018-01-05/2018-10-11</span></div>
- </div><div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-04-11.html">SBS 2.0 is now the default blog browser</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #web</span>
- <span class="right" id="">2017-04-11/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/web/index.html b/blog/list/web/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/web/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/list/webgl/0.html b/blog/list/webgl/0.html
deleted file mode 100644
index 66c6da9..0000000
--- a/blog/list/webgl/0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog</title>
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><span>Tags filter</span>
- <ul id="tagslist">
-
-
- <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/electronics">electronics</a></li><li id=""><a href="/blog/list/fiction">fiction</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/special-page">special-page</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a class="active" href="/blog/list/webgl">webgl</a></li></ul>
- </li>
- </ul>
- </div>
- <div id="content">
- <div id="postslist">
-
- <div class="block TText" id="" style="display:block;">
- <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3>
- <br>
- <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span>
- <span class="right" id="">2016-02-18/2018-10-11</span></div>
- </div></div>
- <div id="insanch" style="height:5em;"></div>
- <div id="footer">
- <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;">
- <span style="display:table-cell;"><a id="prepage" href="#">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">1/1</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
- </div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0.
- </div>
- </div>
- </div>
-
-
-</body></html> \ No newline at end of file
diff --git a/blog/list/webgl/index.html b/blog/list/webgl/index.html
deleted file mode 120000
index 359ee56..0000000
--- a/blog/list/webgl/index.html
+++ /dev/null
@@ -1 +0,0 @@
-0.html \ No newline at end of file
diff --git a/blog/post/.htaccess b/blog/post/.htaccess
deleted file mode 100644
index 2651228..0000000
--- a/blog/post/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-Header set Cache-Control no-cache
diff --git a/blog/post/2014-11-14.html b/blog/post/2014-11-14.html
deleted file mode 100644
index af49c2f..0000000
--- a/blog/post/2014-11-14.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"喷当代中国大陆的“考场作文”制度 (校注版)")</title>
-<meta name="description" content="«喷当代中国大陆的“考场作文”制度 (校注版)» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">喷当代中国大陆的“考场作文”制度 (校注版)</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">转写前言</a></li><li><a class="toctarg" href="#tocanch1">正文</a></li><li><a class="toctarg" href="#tocanch2">转写后记</a></li></ul>
- </li>
-
-
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">喷当代中国大陆的“考场作文”制度 (校注版)</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2014-11-14<br>#garbage</div>
- <hr><div id="article" class="TText"><article>
-<h2 id="tocanch0" class="tvis">转写前言</h2>
-<p>看到此篇日期比这个博客系统诞生还早的文章的你请不要恐慌。这是我高中三年级写的一篇沙雕文章。原文以我的除自己之外无人可以辨认的手写体记录于高中考试时所发的草稿纸上。今天(2021年6月26日)转写出来,供世人鄙视。</p>
-<p>(为了免去各位识别我的手写体的痛苦,在此不会发布扫描版。请相信我的转写是
-100% 准确的)</p>
-<h2 id="tocanch1" class="tvis">正文</h2>
-<p>喷当代中国大陆的“考场作文”制度</p>
-<p>浅显的中国历史我们都学过。教科书上说什么“八股取士”是一种怎么怎么样的做法(诸如钳制思想,阻碍人类发展之类,我早就还给我可亲可敬的历史老师了)。那么,现在我的观点是:现代中国大陆的考场作文制度毒害人的程度,比八股取士什么玩意儿的深十倍乃至百倍!</p>
-<p>写得一手好文章,原是一件好事,在许多方面都有用的。但是,对于像我这样的,编一篇考场作文比便秘拉不出
-(bi——)
-还困难的人来说,写那种东西基本就是对我们的残害了。拿到作文题目,搜肠刮肚完还不知道如何去作的时候,已经十分惆怅了。然而,还有人追在你屁股后面,要你拉出来的
-(bi——)!(这个比喻一点儿也不失当,因为这样憋出来的作文往往跟 (bi——)
-一样臭)。便秘了还要逼人家拉出来,这是一种多么不人道的行为!肠在这种摧残之下,尚有发生直肠癌的可能性,而我们的榆木脑袋……</p>
-<p>好好好!你说写这种东西对我们有好处,那我们来看看到底有什么好处!我们来随便看几篇“考场佳作”的题目:什么“熄灭蜡烛,莫惊扰美”,什么“心有猛虎,细嗅蔷薇”,什么“纸梯”,超浓的“文学气息”,一看就不是实用的文章。(我不是故意挑的——因为那本书上可以找到的题目全都这样…)那么,这种题目,善于写作的人写出来,叫“美文”;我这号人写出来,必然就是
-(bi——)
-了。将来,善于写作的人从办公室里出来,可以写上两篇作为娱乐,陶冶身心。而我扫完大街回窝之后还要玩上一次便秘?!别开玩笑了!我不是
-masochist (受虐狂)!再者,我还要为我仅剩的一点大脑负责呢!</p>
-<p>那么又有人说话了(我妈就是其中的一位):“这对你将来写论文还有用处哩!”我对此实在无话可说。那么假设有万分之一的可能性,我高中毕业没去扫大街,还考上了名校——石油大学,我该写论文了。然后我的论文落笔一个“人生如梦,年华似雪”,抬笔又是“自然而缓慢的优雅的成长”……
-(bi————————)! Pardon my French
-(对不起我爆粗了)!便秘的事就不用提了,因为光想象一下论文里要出现这种东西就得让我恶心上一个小时!</p>
-<p>如果你同意以上我的观点,你现在应该同意考场作文对我这样的废物一点儿好处也没有了。(如果你认为我还有救,那一定是因为你没救了。)那么为什么我要说这东西对普天下都有害呢?下面我就要喷喷这制度了。</p>
-<p>警告:以下内容有一定的政治倾向。共产主义的<ruby>拥护者<rp>(</rp><rt>sǐ
-dǎng</rt><rp>)</rp></ruby>们,为了保持你们高贵的贞操,以及确保你们不被当作政治犯处理掉,我建议你们立即停止阅读并重新读一遍《共产党宣言》或《毛选》。(其实我的政治倾向还是很温和的,我既不认为共产主义阻碍人类发展,也不认为“西方国家”就是一肚子坏水。我只是不想被跨省而已……不要来抓我啊!)</p>
-<p>首先,最为可恨的一点,是每道作文题目必有的“自定立意”。第一次我看到这四个字,欣喜若狂,以为就可以把自己扫遍全天下大街大志表达出来了。殊不知有人已经在背后把立意分了三六九等,而我这个恰好处在下下等,发下来一看,20分!</p>
-<p>那么我是这玩意儿的受害者,有没有受益者呢?有!有些极度狡猾圆润的人,敏锐地捕捉到了一个事实:出题人和批卷人似乎总是坚定的共产党员。于是他们想尽一切办法讨好党。再加上最近时事紧张,他们更有的可写了:把日本和德国拿出来对比,或者“西方国家鼓吹‘中国威胁论’”,预计不久之后还会有一批宣传社会主义核心价值观的。这是什么玩意儿?潜伏在身边的地下党员么?!另外,马克思的“高考”作文题目是“青年在选择职业时的考虑”,他们的觉悟已经超越马克思啦!这
-(bi——)
-深藏功与名啊!(顺便,我听说老金一家三个都在这个年纪写过很高端的东西……)</p>
-<p>与此相比,英语作文就开明得多(或许是考虑到我们英语水平太低的缘故)。要写“十年后的我”,我就写我十年后扫大街,居无定所,饥一顿饱一顿,这还得了
-80%
-的分。这种东西上了语文考场作文,估计直接就零分啦!可今年某省的高考作文还要人大谈“大学的门与路”。故意歧视我们这些没学上的学渣是不是!这种出题人,就该让他们在全省乃至全国学渣的口水中淹死!</p>
-<p>嘛,我差不多喷完了。在此我特地公布一下前段时间我做的一个调查的结果。问题是:“你认为现在所写的语文考场作文,对你的将来……”调查的对象是本校本年级学生45名,其中不乏作文常被当作范文的。没有人选择“非常有用”或“不知道”,而选择“有一定用处”和“完全没用”的人数比大约为1:2——和我的预测基本相同。从此我们至少可以看出一点问题。但我们伟大的出题人们还在命这种题:“贴近社会生活,有人文气息,让考生有话说”。这种题,让我这种学渣有什么话说!</p>
-<p>*注:本文引用的“考场佳作”,均来自《步步高大一轮复习讲义语文新课标》及万能的一中语文组所编的《语文天地》。</p>
-<p>Chris Xiong</p>
-<p>2014.11.14</p>
-<h2 id="tocanch2" class="tvis">转写后记</h2>
-<p>文中提到的英语作文一事,是确有其事的。某种程度上是为写本文故意做的一次试验。</p>
-<p>文中提到的调查是存在的。不过调查对象全都是理科生(文科生当时和我们不在同一座教学楼里),结果自然是自动偏向对我的结论有利的。</p>
-<p>文中充满着我高中时代典型的自嘲。如果你看了本文的纸质版,你会感到(当时的)我对这种考场作文的痛恨从纸上渗出来(转写到屏幕上之后这种效果虽然有所减弱,但从标点符号和语言的使用上还是能看出一些来的——虽然什么东西从屏幕上渗出来听起来有些奇怪)。这种痛恨是如此的强烈,以至于我高中几乎没有写过一篇严肃的考场作文。大部分写出来的,都是用来气老师的。如此一来即使我不写作文作业,或者模拟考试答题纸作文面直接空白,老师也不会找我的麻烦——既免去我写作文的痛苦,又免去老师读我写的东西的折磨,真是两全其美。</p>
-<p>要是说高中从不练习写作如今有没有什么后悔之处,那么我 GRE
-的作文不过关可以说勉强算是一点。但 GRE
-作文不像高考英语,CET或者托福英语。后者考的是语言使用能力,而 GRE
-考查的是思辨能力。所以从这个角度讲,就算我的高中语文考场作文次次满分,
-GRE 作文估计也达不到一半人的水平,那么也没有什么可后悔的地方了。</p>
-<p>举个随便编的例子来说, GRE
-的作文题目可能是这样的:当地政府人员宣布了一项计划,计划在本地的河上建造一座水库。并且声称由于甲、乙、丙原因,水库建造后当地的居民人均寿命可以翻
-10 倍。要求答题者分析政府的主张是否存在漏洞(当然是有的)。</p>
-<p>而中国的高考作文考的是什么?似乎首要是学生的政治“觉悟”,其次是使用华丽词句的能力。前者加上近年来越来越红的作文题目(见我2018年与山东考生一起写的高考作文(<a href="/blog/post/2018-06-07.html">链接</a>)),让人不得不怀疑考场作文成了灌输特定价值观的工具。至于使用华丽词句的能力,我想也许不是所有人都需要的吧。朴实无华的文字,只要传递了作者想要表达的信息,也就达到了目的;华丽的辞藻,反倒可能提高阅读的门槛,即便要表达的思想是如何卓越,也许也无法为大众所接受。</p>
-<p>思辨(或者称为批判性思维)能力,至少让人在与人争论时能够发现对方是否存在逻辑上的漏洞和谬误,并且可以帮助自己避免类似的错误。而对固定价值观的灌输,则恰恰相反:让人不问一切地接受得到的信息,成为容易上当受骗的天真幼稚之人。这两种教育方式,高下立判。</p>
-<p>如果你认为我在对我的“美国主子”表忠心,那你就错了。请不要忘记 GRE
-是研究生水平的考试。在研究生考试考如此水平的思辨,还是太晚了。不然的话美国也不会有如此大数量的疫苗反对者
-(anti-vaxxer) 或者地平说支持者 (flat
-earther)。我认为基本的思辨能力应该放在基础教育阶段。那样至少可以减少一些所谓保健品的诈骗案的数量。</p>
-<p>阁下看到这里,心里的感觉若是“哇这人他写了些什么我怎么什么都看不懂”,那确实怪不得阁下。表达能力低下大概是我另一个略微后悔高中从不写作文的地方。这种表达能力的低下,是跨越语言的——可能有人读到我的英文博客文章,感觉还相对通顺,但并不知道背后是经过我自己好多遍审阅改写才成为最终版本的。很多时候脑中根本无法组织用来描述我的想法的语言,这时才后悔年轻的时候没有练习写作;但一想到当时练习写作就意味要着写违心的或者毫无营养文字,这种后悔就直接烟消云散了。</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-10-29.html b/blog/post/2015-10-29.html
deleted file mode 100644
index b46f207..0000000
--- a/blog/post/2015-10-29.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"noname01.pas")</title>
-<meta name="description" content="«noname01.pas» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">noname01.pas</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2014-11-14.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-10-30.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">noname01.pas</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-10-29<br>#garbage</div>
- <hr><div id="article" class="TText">
-<article>
-(这么怀旧的标题是不是会有些人看起来相当有感触呢……)<br>
-花了半个多小时的时间把这个极其简陋的blog系统搭起来了。<br>
-45分钟前这个东西其实还不存在呢……<br>
-<br>
-这大约是我第四次尝试养成不定时写东西的习惯……<br>
-总之希望这次能够坚持下去……<br>
-明天先把CCPC和Hackathon的事情po上来…嗯…就先这样。<br>
-End of the first blog post
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-10-30.html b/blog/post/2015-10-30.html
deleted file mode 100644
index 24d857b..0000000
--- a/blog/post/2015-10-30.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"First CCPC sightseeing tour")</title>
-<meta name="description" content="«First CCPC sightseeing tour» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">First CCPC sightseeing tour</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/contest/">contest</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">流水账</a></li><li><a class="toctarg" href="#tocanch1">非流水账部分</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">关于这次比赛</a></li><li><a class="toctarg" href="#tocanch3">关于ACM和OI的联系</a></li><li><a class="toctarg" href="#tocanch4">「撕逼」和SDU对ACM的态度</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-10-29.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-10-31.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">First CCPC sightseeing tour</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-10-30<br>#contest</div>
- <hr><div id="article" class="TText">
-<article>
-<reduced>本文讲述的是发生于2015-10-15~2015-10-20的事情。</reduced><br>
-<reduced>如果您不愿意看流水账,请直接跳到「非流水账」部分</reduced><br>
-<h2 id="tocanch0" class="tvis">流水账</h2>
-  其实还得从军训期间的某一天说起……<br>
-  那天计算机的辅导员把「有过信息学竞赛经验」的同学叫到一起开了个会,大致就是说有这么一个比赛,
-今年刚开始办。虽然是国赛但是因为「没名气」<a id="n1" href="#note1" class="note">[1]</a>
-,所以学校并不是十分重视<a id="n2" href="#note2" class="note">[2]</a>
-,于是就要从大一里面选出一个队来参加。<br>
-  选拔赛之前我在教学楼里迷路了(没找到3区的入口……),迟到了半个小时,最后竟然还迷迷糊糊地拿了Rank2……
-(题目都是超级大水题……),然后就被抓去参加CCPC了……<br>
-  我知道我所在的一个「神秘组织」(BKT)中有两个搞ACM的,FDU的jjy神犇没得到参赛机会(有点可惜),
-然而「神秘的裙主」BL也要来CCPC<a id="n3" href="#note3" class="note">[3]</a>
-,我就抱着一种「爆零也要面基」的想法确认参赛了。<br>
-  作为一个懒蛋,选拔赛之后到比赛之前我根本没有去过ACM实验室,也没有好好刷过题什么的,
-只是简单地找了找之前写代码的感觉……稀里糊涂地就混到了10月15号。。。<br>
-  在火车上我才遇到了我队的队友——两只泰山学堂的大爷(然而他们两个并没有准备模板)。
-学长还教了我们一种神奇的纸牌——UNO。。。(据说是一种坑队友的游戏,确实是这样<a id="n4" href="#note4" class="note">[4]</a>……)
-然后在火车上我也没怎么休息,一直在偷听学长们的谈话……(关于对谈话内容的思考,请看非流水账部分)<br>
-  颠了13小时之后终于到了南阳。第一届CCPC的承办学校是被誉为「二本中的小清华」<a id="n5" href="#note5" class="note">[5]</a>
-的南阳理工学院——额,似乎比我们的中心校区要大(现在的二本学校就是这么厉害……)。<br>
-  然后就是一串程序化流程了——领胸牌什么的。非常有趣的是本次比赛选手的队服是粉色的,<b>粉色的</b>!
-同时我也看到了参赛队员名单。队名有不少非常奇葩的:什么「问我资磁不资磁」/「黑化肥发灰会挥发」之类……
-名单里面除了上面提到的BL之外,我还发现了一位高中的学长,于是面基名单又加长了……<br>
-  第一天(15号)晚上到第二天全天(16号)没有任何安排,于是就颓废了一天。为了获得一种「我们有模板!」
-的安慰,16号晚上我手抄了8份模板……<br>
-  十七号的热身赛,只有三道题目。第一题是道水二分,一开始是那位莱芜的爷爷写的,但是他调了十来分钟没过样例,
-于是就找我来写……然后我用了十分钟多一点就A掉了。。。中间我们浪费了很多时间去想第三题,然而其实根本不会……
-(虽然大致知道是dp+数学)第二题说是暴力,但是需要记忆化,由于我太2b就写了个L^3的裸暴力,
-还以为能卡时过,结果就T了。。。然后加记忆化,还没加完3个小时就过去了……(jjy提醒的测测先返回T还是先返回WA也没测……)
-结束后一看榜,发现好像卡线有铜牌,于是我们就天真地以为明天加强一下合作就真的能拿铜牌了……<br>
-  一直到热身赛结束之前都没能见成BL。那位高中学长倒是见了一次,还是像两三年以前一样的受QAQ……
-由于能自由支配的时间基本都过去了,面基似乎就要不了了之了,于是热身赛后的晚饭结束后,
-跟队友扔下一句「在食堂楼下等我」就去找BL了。因为从前通过一个叫「左一是BL.png」的文件已经见过BL了,
-而BL(包括BKT的其他成员)还从来没有见过我(现在的样子),所以我就按着BL给的坐标和左一是BL.png去找BL了……
-当我接近BL的位置时,已经可以看出BL的激动程度爆表了……我十分清楚地记得BL说了一句「你就是……?」,
-我的回应则是傻傻地把脖子上挂的胸牌翻过来给BL看……<a id="n6" href="#note6" class="note">[6]</a><br>
-  晚上去围观泰山学堂大爷,发现那位来自莱芜的爷爷实在是太神了,<i><b>太!神!了!</b></i>
-简单地讲就是<b>√编程 √Linux √编曲 √绘画 √有钱</b>(人家用的是<i>wacom平板电脑</i>……而且玩的东西普遍超极高端……)。<br>
-  八点左右,BL来消息问能不能来我们宾馆再见一面,这么好的机会怎么能随意扔掉!于是我就(无视了晚上还要洗澡的事情)
-同意了。过了十来分钟,BL到了。<strike>(BL真的是<b>太!萌!了!</b>)</strike>
-我们愉♂悦地洽♂谈了一个多小时(BL语)。话题有很多,从BL的WP到学校搞ACM的情况都聊过。
-嗯……我相信BL看到了一个真实世界的Chris,这也是我通过这次面基想要达到的……<a id="n7" href="#note7" class="note">[7]</a><br>
-  第二天正式比赛,然而晚上还是没有好好睡一觉(标准结局),第二天就那么进了赛场……我们按照一般的思路开始浏览题目,
-看完A题我就发现其实就是转转转,然后就开始写,写了不到一半,一只泰山学堂爷就跟我说「L题就是读入n输出2n+1!」这是我瞟了一眼
-board,发现L题已经绿了一排了……于是就火速写掉了L题。然后A题也很快A掉了。H题就是4×4数独,一开始由我来写,结果dfs写的过于丑陋然后还WA了,
-找了半天找不到错在哪,队友把我的dfs重写了一遍就A掉了……G题也是相当暴力的floodfill,我们队是莱芜的学堂爷
-写的这道题,活生生写了200多行代码(他说他懒得写循环就把许多循环展开写了……),到最后我们都完全看不懂了。结果还WA了。。。
-然后发现题目少读了一块,于是这位爷爷就把代码变成了300行然后A掉了这道题……D题是一道加了一点点额外的规定的背包,其实我们应该是写对了,
-结果最后不知道是什么原因还是WA掉了。C题也是dp。标算是N^2的,我当时给写成了N^3的(没错,是我这个dp白痴写的),T掉了。
-结果我们到最后还是没有人知道他们是如何优化成N^2的<a id="n8" href="#note8" class="note">[8]</a>。其他题我们根本没有尝试,
-但是知道E题是缩点,K题和I题都是dp(到底有多少dp……),仅此而已……<br>
-  以上大概就是我们这个临时组起来的队<a id="n9" href="#note9" class="note">[9]</a>的比赛历程。其实这次比赛还有一些比较有趣的事情,
-比如:
-<ul>
-<li>我们前2.5h A了四道题,后2.5h A了零道题。</li>
-<li>我们的学长在封榜之前一直被我们碾压,然而最后一小时A掉了两道题所以还是把我们虐了。</li>
-<li>山东大学威海分校碾压了山东大学。</li>
-<li>上海交大AK了。</li>
-</ul>
-  最后的结果就是我们差三四名铜牌(嗯,这次是卡线没铜牌),而我们的学长拿到了铜牌。其实也挺可惜的,我们当时以为没什么希望了就开始乱交G题H题,
-结果最后竟然都A掉了……然后罚时就无法直视了2333333<br>
-<h2 id="tocanch1" class="tvis">非流水账部分</h2>
-<h4 id="tocanch2" class="tvis">关于这次比赛</h4>
-  其实这次比赛基本就是来人家学校观光+刷经验(误)的,毕竟我们的ACM历程甚至还没有正式开始(因为我们还不是ACM实验室的成员)。<br>
-  以前对ACM比赛的认识基本局限于「一道题不是全对就是全错」上。甚至连可以带模板都不了解。我问我的队友有没有准备模板的时候有一个还问我
-「卧槽可以带模板?!」然后我们一个个比赛前又都没有刷题……各种直接或间接的原因就导致了后半场比赛一题也没做出来这样的惨状……
-<h4 id="tocanch3" class="tvis">关于ACM和OI的联系</h4>
-  这方面持经验论的人好像不少……甚至有「没搞过OI就不要搞ACM了」这样的言论。但是我对这种经验论是坚决反对的。<br>
-  首先我承认我的OI搞的算是十分惨的了(如果不惨哪里还回来SDU这种学校)。我依然可以回忆起高中的时候一位位「零基础」大爷水平纷纷超过我的情景……<br>
-  然后要拿出来的是一个在我们高中要被用烂的例子——某零基础选手一年拿NOI金牌的故事,长话短说——他的水平基本可以吊打山东所有往届选手。<br>
-  有经验固然是好的,但是我认为主要还是看个人学习的欲望吧——有多少前OI选手大学之后根本没有去打ACM,而World Final赛场里面又有多少是有OI经验的选手呢?
-<h4 id="tocanch4" class="tvis">「撕逼」和SDU对ACM的态度</h4>
-  在火车上「偷听」到学长的谈话,似乎最近ACM实验室发生了什么「撕逼」事件。大致就是中心校区那边有两个大神从来不来这边训练,但是最后组队赛做的非常好,
-然后辅导员说平时没来训练不准去比赛,最后演化成的一场撕逼大战……好像双方都闹得十分不愉快的样子。<br>
-  其实这里面能折射出SDU对ACM的态度——其实SDU根本就不重视ACM。如果他们能够把各个校区的大神聚集起来,那么SDU绝对不是一个只进过两次WF的弱校。<br>
-  然而领导层看重的是什么?请自行了解「山大博科本升专事件」……
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 大概是不会有公司认然后增加就业率这样的吧……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 其实SDU本来就不重视ACM……<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: <a href="http://blog.blumia.net/2015/10/21/%E9%9D%A2%E5%9F%BA%E8%B5%9B%E8%B5%9B%E5%90%8E%E6%9C%89%E6%84%9F/">友情链接</a><br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 有一次我一下子被加了16张牌。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 来自某南阳同学。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 从这里大概可以看出当时是有多基♂动……<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 同时这次面基还产生了「左一是BL右一是Chris.jpg」。<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 我们好弱……<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 我们在到火车站前都没有见过面说过话,感受一下。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-10-31.html b/blog/post/2015-10-31.html
deleted file mode 100644
index c15e5d6..0000000
--- a/blog/post/2015-10-31.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"大学入学两个月了……")</title>
-<meta name="description" content="«大学入学两个月了……» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">大学入学两个月了……</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">军训</a></li><li><a class="toctarg" href="#tocanch1">习惯新生活</a></li><li><a class="toctarg" href="#tocanch2">为各种人解决各种问题</a></li><li><a class="toctarg" href="#tocanch3">个人事务</a></li><li><a class="toctarg" href="#tocanch4">关于「零基础学软件专业」的讨论</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-10-30.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-11-01.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">大学入学两个月了……</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-10-31<br>#garbage</div>
- <hr><div id="article" class="TText">
-<article>
-  大学入学两个月了。据我所知,THU刚刚考完线性代数。而我们学校才正式上课一个月。这就是差距……<br>
-  好吧……这两个月我干了些什么?
-<h2 id="tocanch0" class="tvis">军训</h2>
-  SDU的军训长是出了名的。三周的军训,估计也就是军/警校的军训比我们长了。<br>
-  由于高中逃掉了军训,所以我一开始甚至怀疑我能否撑下这三周来……尤其是第一天就被教官因为我喊不出声干之后。
-但是后来我发现似乎没有想象中的那么坏。<s>由于智力不够,</s>军训到了10天以后我就开始天天练习坐姿了。
-我们教官似乎是我们这一片最好的(事实证明确实是这样,我们的休息总是最多的……),以至于最后我跟我们排教官成了深♂交的好友。
-军训的时候他照顾我,军训完了还带我去参加Hackathon 2015,我认为我十分有感谢他的必要。<br>
-  军训完被晒黑了QAQ,尤其是某些部位那种黑一块白一块的……现在正努力恢复中……<br>
-<h2 id="tocanch1" class="tvis">习惯新生活</h2>
-  其实没什么好习惯的,初中和高中出去夏令营好几次了,就当是超长的夏令营就是了。<br>
-  SDU的要求也不像其他某些学校那么严,没什么强制自习之类的规定,再加上宿舍网还不错,于是我就没去自习过几次……
-<a id="n1" href="#note1" class="note">[1]</a>(美中不足是冬天晚上会停电……)<br>
-  宿舍里有个话唠+游戏狂的结果就是:他不打游戏的时候一直在bb,打游戏的时候就自带解说……<br>
-<h2 id="tocanch2" class="tvis">为各种人解决各种问题</h2>
-  有些东西是藏不住的。过来没多久人人都知道我曾经接触过编程这方面的东西了。然后就有各种奇奇怪怪的请求,
-比如有个人军训的时候让我给他讲了一个下午的C++,到最近有人要我给他装Linux虚拟机,甚至还有让我帮他搞他的Android App作业的……<br>
-  其实这方面跟我的预想是有不小差距的。开学前我竟然天真地以为软件专业的有很多有过经验的,
-然而来了之后却发现零基础的同学占了绝大多数<a id="n2" href="#note2" class="note">[2]</a>。
-关于这方面的事情我会在本文后面做更多的描述。
-<h2 id="tocanch3" class="tvis">个人事务</h2>
-  这个范围太广了。从日常的学习,到<s>吃饭睡觉打电脑</s>都包括了。随便挑几条列一列好了:
-<ul>
-<li>BLR3的开发。</li>
-<li>英文Java书刷出去~60%(~500页)。(然而我还是不会Java,<s>我写出来的还是C++</s>)</li>
-<li>乱搞自己的小站点(地址?127.0.0.1...)。</li>
-<li>高数。总有一种高数要挂的感觉……</li>
-<li>英语。有模糊出国意愿的我开始学托福了……</li>
-<li>几次比赛。请参阅最近的其他文章。</li>
-</ul>
-<h2 id="tocanch4" class="tvis">关于「零基础学软件专业」的讨论</h2>
-  很多人问我「我什么都不会该怎么学这个啊」这样的问题。这个问题我实在难以回答。我刚开始学的时候不也是零基础吗?
-而且我当时年纪还更小呢……<br>
-  最近有不少人跟我说「类」这个东西难以理解,我想这个锅得甩给学院一种奇特的急于求成的心态。据我了解,
-上来就教Java的软件学院除了SDU其他都是专科学校(或者其他类似等级的东西)……<a id="n3" href="#note3" class="note">[3]</a>
-其他正常一点的学校都是从C语言(一种<i>比较</i>类似Java但没有「类」这个概念的编程语言)教起的。我刚学编程的时候,
-哪里知道「类」是个什么东西啊?都是以后慢慢才理解的。对于学院的这种策略我实在表示不解……<br>
-  接下来我要试图对「我什么都不会该怎么学这个啊」做出正面的回答了。<br><br>
-  如果问这个问题的人对做开发者感兴趣,那么「学会」的最大障碍基本就清除了。接下来的任务<i>我认为主要</i>是:
-<ul>
-<li>找一些质量比较高的代码,一个字一个字地敲到IDE里面。对初学者来讲教科书上的代码就算高质量代码了。</li>
-<li>(确定你敲的能够准确无误地运行之后)开始在原来的框架上对你敲进去的代码进行增改。比如原本有个计算a+b的程序,
-你可以把它改成能够计算a+b a-b a*b a/b a%b等等。</li>
-<li>在你觉得自己获得了一些经验之后,开始尝试写自己的代码。</li>
-</ul>
-  以上其实就是我学习这些东西的过程。如果你以后打算学习一个新的库的用法,也可以使用类似的方法。
-<s>(我自认为是比较有效的)</s><br><br>
-  如果很不幸,你对做一个开发者并没有任何兴趣……<br>
-  那么我的建议是:转专业。<br>
-  毕竟SDU是提供这么一个机会的。不转白不转。学了四年自己不感兴趣的东西是什么样的一种体验……
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 有一种要呆在宿舍里发霉的感觉……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 毕竟是学费高得要死没人报的专业,其实有很多人是调剂过来的……<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: <s>所以SDU软件学院也是辣鸡专科学校</s><br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-11-01.html b/blog/post/2015-11-01.html
deleted file mode 100644
index 15adf27..0000000
--- a/blog/post/2015-11-01.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Hackathon 2015乱搞记")</title>
-<meta name="description" content="«Hackathon 2015乱搞记» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Hackathon 2015乱搞记</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/random-xp/">random-xp</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">这是一次什么性质的比赛</a></li><li><a class="toctarg" href="#tocanch1">???</a></li><li><a class="toctarg" href="#tocanch2">后续</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-10-31.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-11-22.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Hackathon 2015乱搞记</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-11-01<br>#random-xp</div>
- <hr><div id="article" class="TText">
-<article>
-填坑日期:2015-11-22<br>
-比赛日期:2015-10-24~2015-10-25(正好是我生日那天开始的……)<br>
-<h2 id="tocanch0" class="tvis">这是一次什么性质的比赛</h2>
-  实话讲我是第一次参加这种类型的比赛。大概就是几个人一队,给一个泛泛的话题然后爱做什么就做什么那样的比赛……
-这个比赛在全国有好几个赛区,济南大概是奖项最坑的一个……然后发现参赛的很多(~70%)都是SDU的学生……
-另一些则是附近某些软件企业的员工。<a id="n1" href="#note1" class="note">[1]</a><br>
-  带我来参加这次比赛的是军训时带我的排长,「阳哥」。没有他的帮助我认为我……甚至连有这个比赛都不知道。
-<h2 id="tocanch1" class="tvis">???</h2>
-  由于之前对这类比赛一无所知,所以比赛前感到很虚。本来打算找一找往年的题目的,结果又因为懒而取消了……<br>
-  比赛给的话题是「技术改变生活」。题目后面举了一些「改变了生活的技术」的例子,包括什么全系投影之类的。
-这么高大上的东西我们怎么可能会啊。于是就开始「埋头苦想」做个什么好……<br>
-  就那么沉默了一段时间之后,阳哥问我之前有没有什么做完的东西。我说我最近做的东西不是完成度太低就是完全不符合题目要求。
-然后我给他看了一眼BLR2。他认为这个可以交。(但是我不这么认为!)后来我又想了想……想到了WHG3D。<br>
-  WHG3D是一个我的早已停滞的工程。最早公开发布的版本是在2011年10月4日(4年了……)。这个工程大概活跃了1年多吧……
-然后今年4月移动硬盘报废,所有WHG3D的源程序数据全部丢失了。再加上发布的版本里面都用了Hide script(当时我还不是
-「开源的狂热追随者」),所以这个工程活过来的可能性已经是几乎没有了。然而最后一个发布出去的版本其实还是可以用的。
-折腾了一番,把最后的版本从onedrive上拖了下来,稍微演示了一下。然后阳哥决定就交这个了……<br>
-  然而我想,就交这么一个之前的东西,不太好吧……于是就开始想再做个什么东西。结果在上厕所的时候想起了核逸飞<a id="n2" href="#note2" class="note">[2]</a><br>
-写的metro版程序员老黄历丢了,我就打算用Qt重写一个……<br>
-  作品提交完毕之后据说会有一次初筛。出人意料的是我们提交的两个东西竟然都通过了……<a id="n3" href="#note3" class="note">[3]</a><br>
-于是就得上去展示。WHG3D的展示基本都是阳哥一人包办的,我只是负责在旁边玩游戏(以及说这游戏坑)。老黄历的展示就是我自己了。
-虽然没怎么感觉紧张,但是最后还是忘记了安利自己的github……(噗……)<br>
-  然后就是颁奖。当我们第一次听到我们队的名字的时候还没怎么感到惊讶(毕竟有我一个大一的,搞个最佳新人奖也不是什么出人意料的)。
-但是第二次听到我们队的名字的时候就感觉有点可怕了。结果后来又第三次听到了我们队的名字。等我们领完第三个奖,主持人说「我觉得你们可以留步了,
-因为下一个奖还是你们的」,跟你讲我当时就是这个表情:<br>
-<div align="center"><img src="//filestorage.chrisoft.org/blog/img/e1.gif" decoding="async"></div>
-  于是最后我们就拿了四个奖:最佳新人奖,最佳创意奖,最佳技术奖,二等奖……<a id="n4" href="#note4" class="note">[4]</a><br>
-  有理由相信这四个奖除了第一个都是WHG3D赚到的。因为 1.WHG3D更吸引人(尤其是来自游戏厂商的评委)…… 2.展示做的相对比较好……<br>
-  奖发完之后有好多人来要我的联系方式的……由于才大一,不想被「那些」东西打搅太多,就统一只留了个gmail。后来甚至那个游戏厂商的评委来找我们聊天,
-说「对游戏制作有热情很好」之类的话。<a id="n5" href="#note5" class="note">[5]</a><br>
-  我们的作品其实很渣……以下是给我留下深刻印象、感觉真正能拿奖的作品:
-<ul>
-<li>一个难以关掉的闹钟(对于我这种跟粘在床上的人可能比较有用)</li>
-<li>一个分享旧书的系统(虽然好像已经有人做过了,但是感觉想法不错)</li>
-<li>etc...</li>
-</ul>
-<h2 id="tocanch2" class="tvis">后续</h2>
-  我很清楚地知道<a id="n6" href="#note6" class="note">[6]</a>这些奖是公司试图得到廉价苦力的方式之一。过了几天我的gmail里果然
-收到了「想跟你合作一个项目」这样的邮件。以下是我的回信:<br>
-  「抱歉,我现在还只是一名大一的本科新生,时间安排比较紧张,可能无法和您合作。非常抱歉。」<br>
-  在一个有deadline的环境下工作其实不是我理想的工作方式。我希望有一张更加「自由」的时间表,比如我甚至曾经yy过以后去当中小学老师(……),
-然后空余事件写写代码这样的。这样似乎更接近我内在的风格。<br>
-  BLR工程结束之前我不会轻易开别的坑的。BLR会结束吗?(喂别这么早立flag啊……)<br>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 这些人中有一部分来的目的是「为了找回自己想写什么就写什么的感觉」。<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 化名。slyz核能的掌控者。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 后来发现所有提交的作品都通过了……<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 一共拿了9k奖金……<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 其实他不知道我现在的热情其实不在游戏制作上而是在……乱搞上。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: "I know darn well"<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-11-22.html b/blog/post/2015-11-22.html
deleted file mode 100644
index 830231e..0000000
--- a/blog/post/2015-11-22.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Raspberry Pi2 初体验")</title>
-<meta name="description" content="«Raspberry Pi2 初体验» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Raspberry Pi2 初体验</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/hands-on/">hands-on</a></li><li><a href="/blog/list/device-review/">device-review</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-11-01.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-12-20.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Raspberry Pi2 初体验</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-11-22<br>#hands-on #device-review</div>
- <hr><div id="article" class="TText">
-<article>
-  前几天(11月8号)<s>陪伴了</s>我<s>3年</s>的Galaxy S3从床上摔下来坏掉了。外屏连裂缝都没有,内屏完全废掉了,
-只有一部分屏幕能显示出颜色不对的画面。网上一查S3没有单独卖的屏幕,而换掉整个前面板需要花掉450(真·450)。<a id="n1" href="#note1" class="note">[1]</a>于是我开始考虑买一台新的设备……
-浏览了一些手机的价格,发现都跟抢钱一样贵。后来突然想到了一直想要一块树莓派,于是就跟我妈「谈了个条件」:买了这个之后两年内不买手机。<a id="n2" href="#note2" class="note">[2]</a>
-然后就把树莓派买下来了……(RPi+屏幕+usb wifi=~600RMB)<br>
-  树莓派可以说是我等得最焦急的一个快递。在快递来之前我已经把Raspbian镜像下好了。然而我在拿到这块大英帝国设计,
-天朝制造的板子之后还是有点不知所措<a id="n3" href="#note3" class="note">[3]</a>。上来先往SD卡写系统。然而dd完毕之后卡住不退出了。
-我看似乎4.3G的镜像已经完整地写入进去了。于是试着拿它启动树莓派,结果启动的时候一开始应该看见一个彩色的方块,那个方块却被奇特地拉长了。
-方块消失之后屏幕上就变成了无法理解的东西。我以为是dd爆炸的原因,于是就重新写了好几遍SD卡。然而每次都卡在最后。由于屏幕上显示的东西实在无法看清,
-我就试着拿ssh连接它,结果成功了。我才知道这个跟SD卡没关系。然而屏幕是在电脑上试过,没问题的。
-后来才知道这其实是config.txt里面显示屏分辨率的问题……(1024x600的非标准分辨率需要用特殊的方式设定)于是在config.txt里设置了正确的分辨率,
-终于见到了正常的终端和图形界面。<br>
-  Class 4的SD卡实在是太慢了。于是我把系统移到了U盘,启动速度有了质的提升。现在我的文件系统分配是这样的:<br>
-<pre>  mmcblk0p1 /boot 60M
-  mmcblk0p2 /home ~16G
-  sda2 / ~8G
-</pre>
-  为了实现体验Gnome3的触屏体验的愿望,我把系统滚到了testing(stretch),然后装了Gnome 3.18。然而不幸的是,即使是2代的Raspberry Pi,
-带动Gnome3这个超重量级桌面环境还是相当有压力。然而压力却全在CPU上而不在RAM上——1G RAM仅使用了200MB,
-gnome-shell的CPU占用在登陆几分钟之后就一直在20%以上。不过,Gnome3的触屏体验还是不错的(在不卡的前提下)。
-为了获得一个实用性较强的桌面环境,我还是回到了LXDE……<br>
-  各项功能基本都调试完毕之后,我开始了解关于板上GPIO的知识。GPIO这东西还是很神奇的……很久之前我有一种模糊的用什么设备实现一个自动弹钢琴的机器的想法,
-现在发现GPIO真的可以直接实现……<br>
-  昨天晚上用装快递的盒子给它做了个简陋的壳子。感觉还是可以的……(图见下)<br>
-  现在差不多就研究到这里……开始学习python并研究RPi的其他用途……!<br>
-<table style="max-width:90%;margin:auto;">
-<tbody><tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/rpi_1.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_1.jpg" width="50%" decoding="async"></a><br>
-Gnome3.18 on Raspberry Pi 2<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/rpi_2.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_2.jpg" width="50%" decoding="async"></a><br>
-Browsing the web with Iceweasel<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/rpi_3.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_3.jpg" width="50%" decoding="async"></a><br>
-The simple box<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/rpi_4.png"><img src="//filestorage.chrisoft.org/blog/img/rpi_4.png" width="50%" decoding="async"></a><br>
-LXDE Desktop<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/rpi_5.png"><img src="//filestorage.chrisoft.org/blog/img/rpi_5.png" width="50%" decoding="async"></a><br>
-screenfetch<br>
-</td>
-</tr>
-</tbody></table>
-
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 2016-02-21补记:现在那台S3已经满血复活了……
-大概是一亲戚有台闲置的手机问我要不要,我一看是台S3……然后就把外屏换了。<s>(于是就这么白赚了一台树莓派)</s><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: <s>其实现在有点后悔这个条件……</s><br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 以至于手上被板子划了个口子……<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-12-20.html b/blog/post/2015-12-20.html
deleted file mode 100644
index e7d9aac..0000000
--- a/blog/post/2015-12-20.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"忙")</title>
-<meta name="description" content="«忙» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">忙</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/random-xp/">random-xp</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-11-22.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-12-23.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">忙</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-12-20<br>#random-xp</div>
- <hr><div id="article" class="TText">
-
-最近突然感到前所未有的忙。是因为之前太颓废了吗?<br>
-下面随便列一下
-<ul>
-<li>数学英语网课</li>
-<li>数学作业卷 29号前补完</li>
-<li>英语两个Presentation(作为组长的我还没开始准备。。。)</li>
-<li>java实验报告一堆</li>
-<li>...</li>
-</ul>
-。。。做完这些就没事了吗?我突然想起军训的时候听到的一句话「更苦的永远在明天」。。。<br>
-不知所措的Chris在手机上ssh连接电脑睡前临时所记 於2015-12-20凌晨<br>
-<hr>
-2016-01-04 补<br>
-然后到现在我才做了上面事情的一件半。。。
-<article>
-</article></div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-12-23.html b/blog/post/2015-12-23.html
deleted file mode 100644
index a2bb577..0000000
--- a/blog/post/2015-12-23.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Chris' First Development Blog")</title>
-<meta name="description" content="«Chris' First Development Blog» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Chris' First Development Blog</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-12-20.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2015-12-27.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Chris' First Development Blog</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-12-23<br>#devel</div>
- <hr><div id="article" class="TText">
-<article>
-The development blog was established today... Cheers!<br>
-A 99% bug-free <a href="//filestorage.chrisoft.org/blog/data/midiread.c">midiread.c</a> was completed. The one I wrote in 2012 was a total disaster...<br>
-Perhaps a new project is going to start soon...<br><br>
-
-P.S.: I haven't pushed anything to my github repos for a fairly long time...
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2015-12-27.html b/blog/post/2015-12-27.html
deleted file mode 100644
index 16db4e0..0000000
--- a/blog/post/2015-12-27.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"QMidiPlayer got its repo")</title>
-<meta name="description" content="«QMidiPlayer got its repo» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">QMidiPlayer got its repo</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/qmidiplayer/">qmidiplayer</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-12-23.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-01-03.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">QMidiPlayer got its repo</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2015-12-27<br>#devel #qmidiplayer</div>
- <hr><div id="article" class="TText">
-<article>
-A new project has started.<br>
-<a href="https://github.com/chirs241097/QMidiPlayer">QMidiPlayer</a><br>
-Motived by the fact that there's no suitable midi player for linux and
-based on my recented work, this project started as my minimal contribution to
-the opensource community...
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-01-03.html b/blog/post/2016-01-03.html
deleted file mode 100644
index ab0ff93..0000000
--- a/blog/post/2016-01-03.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"The Design and The Real Product")</title>
-<meta name="description" content="«The Design and The Real Product» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">The Design and The Real Product</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/design/">design</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2015-12-27.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-01-16.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">The Design and The Real Product</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-01-03<br>#devel #design</div>
- <hr><div id="article" class="TText">
-<article>
-&nbsp;&nbsp;Well, QMidiPlayer is now in active development. Now it is in its
-alpha stage. Comparing the original design and the real product resulted in
-a great surprise to me.
-<table style="max-width:90%;margin:auto;text-align:center;">
-<tbody><tr><td>
-<img src="//filestorage.chrisoft.org/blog/img/design.jpg" alt="design" width="50%" decoding="async"><br>
-The design
-</td></tr>
-<tr><td>
-<img src="//filestorage.chrisoft.org/blog/img/real.png" alt="real" width="70%" decoding="async"><br>
-The real product
-</td></tr>
-</tbody></table>
-&nbsp;&nbsp;For the main window, the real thing is almost identical to the design.
-Other windows also strongly resemble their design.<br>
-&nbsp;&nbsp;So what's the point?<br>
-<table style="max-width:90%;margin:auto;text-align:center;">
-<tbody><tr><td>
-<i>A good design, not necessary to be opulent, wants to be realized.</i>
-</td></tr>
-<tr><td>
-<i>A good programmer, not necessary to be brilliant, should be faithful to the design.</i>
-</td></tr>
-</tbody></table>
-But if you are a designer <i>and</i> programmer...
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-01-16.html b/blog/post/2016-01-16.html
deleted file mode 100644
index b733594..0000000
--- a/blog/post/2016-01-16.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"QMidiPlayer Progress-2016-01-16")</title>
-<meta name="description" content="«QMidiPlayer Progress-2016-01-16» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">QMidiPlayer Progress-2016-01-16</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/qmidiplayer/">qmidiplayer</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-01-03.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-01-25.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">QMidiPlayer Progress-2016-01-16</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-01-16<br>#devel #qmidiplayer</div>
- <hr><div id="article" class="TText">
-<article>
-&nbsp;&nbsp;QMidiPlayer 0.6.2-2 beta is out! Find more about it
-<a href="http://chrisoft.org/QMidiPlayer/">here</a>.<br>
-&nbsp;&nbsp;This version has reached a fairly stable stage (in Linux) and has
-experimental Windows support. It has been the default midi player on my Debian
-sid for a few days.<br>
-&nbsp;&nbsp;So the next big feature is visualization. It's progressing, too.
-Have a look at the picture below.<br>
-<table style="max-width:90%;margin:auto;text-align:center;">
-<tbody><tr><td>
-<img src="//filestorage.chrisoft.org/blog/img/visualtest.png" width="90%" decoding="async">
-Primitive 3D MIDI visualization test
-</td></tr>
-</tbody></table>
-&nbsp;&nbsp;It's still primitive, but it already has everything required to
-go mature -- tight timing, time stamp synchronization, etc.<br>
-&nbsp;&nbsp;Well, I still hope that this tiny project can get into the official
-Debian repository... Is it a vain hope?
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-01-25.html b/blog/post/2016-01-25.html
deleted file mode 100644
index 8fdfcde..0000000
--- a/blog/post/2016-01-25.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"放假...")</title>
-<meta name="description" content="«放假...» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">放假...</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-01-16.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-02-14.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">放假...</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-01-25<br>#daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-  嘛……大一上学期就这么结束了。(其实按说是21号考完java就结束了)<br>
-  这个学期……似乎什么都没有做呢。哦不对……似乎又做了很多……<br>
-<hr>
-  正如上篇「忙」所记,最后那几天事情确实非常多。然而还好都在各自的deadline前完成了。其实我大概就是那种
-「非得等到快结束才下决心去做」的人……(通俗地讲,拖延症)
-<ul>
-<li>英语网课我是在deadline前一天完成的</li>
-<li>数学作业卷稍早一些……deadline 2天前</li>
-<li>Presentation都是在还有10小时就要上台的时候定的稿……(苦了我们组另外三位(女性)组员了(呸))</li>
-<li>7篇java实验报告是一晚上刷完的(其中有4篇由于做实验时根本没写或者写完扔机房电脑上了是现写的代码……)</li>
-</ul>
-  最终Presentation的效果还是很不错的,java也拿了个不错的分数。这也许是我应对强制性工作的方式?
-(我在自己要做的事情上是很少拖延的……)<br>
-  最可怕的其实在于todo队列里东西很多和很少的时候都不知道该做什么。<br>
-<hr>
-  个人没有建立全方面的TODO列表的习惯(最多也就是在一个project里列一个很小的TODO列表),
-因为感觉立了flag不收非常不爽……<br>
-  然而,这个样子的坏处就是过段时间回过头来看的时候容易有一种「这么长时间我究竟做了什么?」的感觉。<br>
-  不过多亏了曾经的Google Code和现在的GitHub,这一年我做过的事情大多数还是可以追溯的……<br>
-<hr>
-  正如开头所说,大学第一个学期过去了。混完这一个学期,明显感到大学生活经验严重不足……<br>
-  这个学期去自习的次数……如果算上脚趾的话应该可以叫屈指可数了。不知道出于什么原因,我们宿舍的学习热情似乎十分低迷。
-其中有2人甚至整个学期没有去过一次自习室(跟我们对门的宿舍一比简直是天壤之别)。周末的生活经常就是完全在宿舍度过的……
-一下课就全体冲回宿舍该干嘛干嘛了:打游戏(包括QQ农场),跟女友聊天,看动画片/电影,等等。也许全宿舍在平时写过代码的只有我一个。<br>
-  值得一提的是,不知何时LOL这个游戏突然在临近的宿舍之间流行了起来。本来我们宿舍是只有一个人打过LOL的(到11月的时候还因为
-「不想继续坑队友」删除了游戏)。12月左右LOL在我们宿舍的普及率瞬间就达到了4/6。对门宿舍则全军覆没(然而似乎并没有影响到人家的自习频率……)。
-此后就经常听见在一些人在午夜因为自己或者队友被干掉发出的鬼哭狼嚎。由于我高中偷偷体验过类似游戏(感受到了强烈的智商碾压),
-并且十分厌恶打游戏时大喊大叫,所以对该游戏的态度不可避免地变得比较糟糕。当然,不可否认这款游戏相当成功。<br>
-  由于参加CCPC错过了所谓的「百团大战」,其他什么组织也没有加入过。所以这学期空余的时间是实实在在的「我自己的时间」。
-然而,这些时间里被睡过去的占了20%(事实上,就在我打出这几行字的时候还是困)。其他时间,大概就是敲敲自己的代码,在wikipedia上乱逛,
-然后玩些诸如扫雷、纸牌之类的小游戏……<br>
-  反观一些去了神校的高中同学,比如PKU的xtt,人家现在有工作。其他也无需多说了(简直就是人生赢家啊啊啊……)。<br>
-  似乎只有在进行现实与理想的比较,或者人与人的比较的时候才能意识到自己是多么的sb。<br>
-  这学期好像也没涨多少经验。<br>
-<hr>
-  说到理想与现实的比较……可能要提到一个「人」。了解相关情况的人可能已经知道我要提到的「人」是谁了。<br>
-  简而言之,<br>
-<ul>
-<li>我反对草率地开坑。并且更加反对草率地开坑后轻易弃坑的行为。</li>
-<li>我反对仅仅是为了「装B」或者是通过什么答辩而造轮子的行为。</li>
-</ul>
-  首先我承认我在刚上高中的时候做出过开坑后弃坑的行为。当时也许还可以把锅扔给「年少轻狂」。然而,作为大学生,
-尤其是还没有确认自己是否有填坑能力的时候,再把锅扔给「年少轻狂」,恐怕有些不合适。其次,开坑不填,
-牺牲的是自己或者团队的信用。作为大学生,不应该不清楚诚信的作用。至于我期待这人的作品很久最后等到的却是已弃坑的消息的时候沮丧的心情,
-应该不用再描述太多了。<br>
-  对于第二条,如果拆开来看,造轮子有正面和反面两种解释<a id="n1" href="#note1" class="note">[1]</a>,
-而用来装B的话……多半只能适用用反面解释了。<br>
-  「你们看我这个东西完全没有用别人的库诶我好牛逼啊。」<br>
-  如果是为了通过什么答辩,则我认为此行为更加不可理解。在这种开发时间有限的情况下,不光造出来的轮子质量无法保证,
-就连软件能按时作成都是相当困难的。几个心血来潮的大学生一年开发出来的库的质量跟一群人6年开发出来的库的质量相比,结果可想而知。<br>
-  当然,关于这里提到的「那个人」,事情还有很多。我似乎无法找到能让此人完全接受不同观点的方法
-(此人「似乎是看到有和自己想法不一样的地方就拒绝接受了」(BL语))。<br>
-  「我不听我不听我不听我不听我不听」<br>
-  「好好好我听不就是了么」<br>
-  (以上是BL对此人的高还原度模仿)<br>
-  (虽然到最后其实还是没听)<a id="n2" href="#note2" class="note">[2]</a><br>
-<hr>
-  这是另一个跟上面提到的那个「人」有关系的部分。<br>
-  「分身」这个词,上次使用应该是在高中搞OI没退役的时候。当时只是一个开玩笑用的词语而已。<br>
-  于是现在我终于见到对自己有分身深信不疑的人了。不仅如此,此人也相信别人也有「分身」。<br>
-  在此我不想在这一方面做过深的探讨,但是总的来说……我认为这是一种人格分裂。<br>
-  虽然很多人在网上的说话风格跟平常说话的风格大不相同(包括我),但是认同自己不同情况下完全不是同一个人的
-人,似乎不多。<br>
-  关于这点,可能既能天天见面,又能经常通过网络聊天的朋友的发言权更大吧。<br>
-  总之,不管在哪里,我都坚持同一套原则。如果有人试图破坏我的原则,那我以后只好对他敬而远之咯。<br>
-<hr>
-  写到最后,感觉好像还有什么要写的东西没有表达出来……<br>
-  这个学期的成绩还算能看……不过如果真的说到出国的话,托福好像还没看多少呢……<br>
-  最近在网上乱逛的时候突然有一种感叹:博士好多啊……<a id="n3" href="#note3" class="note">[3]</a><br>
-  虽然我不是非常在意这个,但是我的学位能爬到多高呢?<br>
-  爬得越高 摔得越惨<br>
-  (齐鲁软件学院不是大专啊喂……)
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 其实关于reinventing the wheel,还有几种变体。如果以后我在这方面还有想说的东西的话可能会专门写一篇东西……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 毕竟人家已经说过了,不稀罕我这个「用户」,那我还是用「随他去吧」的态度来对待此人吧。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: KDE论坛的一个管理员是生物学领域的博士……还有cello作者,etc.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-02-14.html b/blog/post/2016-02-14.html
deleted file mode 100644
index a9a530f..0000000
--- a/blog/post/2016-02-14.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Why Do I Prefer a Computer over a Girlfriend/&amp;lt;s&amp;gt;(Boyfriend)&amp;lt;/s&amp;gt;")</title>
-<meta name="description" content="«Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s>» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/sophistry/">sophistry</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-01-25.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-02-18.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-02-14<br>#sophistry</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-Let's start with a picture.
-</p>
-<img src="//filestorage.chrisoft.org/blog/img/gf2.png" alt="" style="display:block;margin:auto;" decoding="async">
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-02-18.html b/blog/post/2016-02-18.html
deleted file mode 100644
index aad9320..0000000
--- a/blog/post/2016-02-18.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Cross Noodles Recooked")</title>
-<meta name="description" content="«Cross Noodles Recooked» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Cross Noodles Recooked</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/js/">js</a></li><li><a href="/blog/list/webgl/">webgl</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-02-14.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-03-26.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Cross Noodles Recooked</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-02-18<br>#devel #js #webgl</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-It's a pure coincidence. Miss Sixty-one made a request for the original Virtools version of "Cross Noodles" yesterday
-but I couldn't find it. However I decided to make a replica because I am fiddling with html5 and javascript these days
-and I am really interested in WebGL. So here is the result:
-</p>
-<a href="//filestorage.chrisoft.org/blog/img/crossnoodlesjs.png">
-<img src="//filestorage.chrisoft.org/blog/img/crossnoodlesjs.png" alt="Cross Noodles JS screenshot" width="50%" style="display:block;margin:auto;" decoding="async">
-</a>
-<span style="display:block;text-align:center;">Cross Noodles JS screenshot</span>
-<p>
-It's pretty awesome, huh? And it runs on mobile platforms, too.
-</p>
-<a href="//filestorage.chrisoft.org/blog/img/cnjsmobile.png">
-<img src="//filestorage.chrisoft.org/blog/img/cnjsmobile.png" alt="Cross Noodles JS screenshot on Galaxy S3" width="50%" style="display:block;margin:auto;" decoding="async">
-</a>
-<span style="display:block;text-align:center;">Cross Noodles JS screenshot on Galaxy S3</span>
-<p>
-Despite being a replica, there are new things in it. Two new modes are added and the game is made more balanced. The new
-version has higher efficiency, wider browser support and improved playability.
-</p>
-<a href="/CrossNoodlesJS">Try it now!
-</a></article><a href="/CrossNoodlesJS">
-</a></div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-03-26.html b/blog/post/2016-03-26.html
deleted file mode 100644
index 5c07896..0000000
--- a/blog/post/2016-03-26.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"ACM校赛水题组酱油记")</title>
-<meta name="description" content="«ACM校赛水题组酱油记» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">ACM校赛水题组酱油记</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/contest/">contest</a></li><li><a href="/blog/list/acmicpc/">acmicpc</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-02-18.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-04-09.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">ACM校赛水题组酱油记</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-03-26<br>#contest #acmicpc</div>
- <hr><div id="article" class="TText">
-<article>
-<p>废话少说直接上图(...)</p>
-<img src="//filestorage.chrisoft.org/blog/img/resultnew.png" alt="" width="72%" style="display:block;margin:auto;" decoding="async">
-<p>什么?我在哪个队里?当然是那个没有楼上的队了……(都怪我们队的大神(tui)yxz要取这么一个队名)</p>
-<p>总之,水过去了……</p>
-<p>
-简单写一下题目思路……
-</p><ul>
- <li>A: 嗯这是个好题(呸)……注意good morningood morning的情况就好了。</li>
- <li>B: 暴搜(yxz神犇要写非常厉害的状态存储方式……)</li>
- <li>C: 语文题 模拟……(全场就我们一个队过了这题也是非常奇怪的事情)</li>
- <li>D: 暴力会T……然后我们很容易能发现加起来的一串数是有周期的 T=lcm(a,b)</li>
- <li>E: 博弈论 这题应该算是瞎猫撞上死耗子了……puts(!(n&amp;1)&amp;&amp;!(m&amp;1)?"A...":"D...")</li>
- <li>F: 又是一道语文题 然而其实还是暴力……(Naive的我还以为这题会因为浮点数操作太多而T掉QAQ)</li>
- <li>G: 这题跟SDTSC 2014 R2某题几乎一样,不过数据比较水,所以也不用什么加了特技的高斯消元,搞出矩阵然后暴力高斯消元就好了(然而最后高斯消元没打出来………瞬间感觉渣爆了)</li>
- <li>H: 新生组就是这么多暴力题……</li>
- <li>I: 多边形面积……从一个点切成一堆三角形然后叉积。嗯好高中的东西大概还没忘光</li>
- <li>J: 这题的关系网其实是一棵树 然后就是类似dp的东西……(然而由于当时意识模糊WA掉了。。。)</li>
- <li>K: 找a/b的最大值……每次最后一题都一定是水题吗。。。</li>
-</ul>
-<p></p>
-<p><s>听说有学长放言如果有队伍AK就直播日狗,没能满足他的愿望,真是抱歉(……)</s></p>
-<p>
-然后最近其实有点忙,再加上等新笔记本<s>(借口)</s>,所以感觉有些方面还是努力不够……
-</p>
-<p>
-<reduced><s>
-(于是看新笔记本到了之后我又会编出什么新的借口)
-</s></reduced>
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-04-09.html b/blog/post/2016-04-09.html
deleted file mode 100644
index 6d3c468..0000000
--- a/blog/post/2016-04-09.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"The MIDI File Format Specification and MIDI Implementation in QMidiPlayer")</title>
-<meta name="description" content="«The MIDI File Format Specification and MIDI Implementation in QMidiPlayer» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style><style scoped="">
-ul{list-style-type:none;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/qmidiplayer/">qmidiplayer</a></li><li><a href="/blog/list/midi/">midi</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Abstract</a></li><li><a class="toctarg" href="#tocanch1"></a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-03-26.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-05-12.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-04-09<br>#devel #qmidiplayer #midi</div>
- <hr><div id="article" class="TText">
-<article>
-
-
-<h2 id="tocanch0" class="tvis">Abstract</h2>
-<p>
-This article is intended to be a reliable MIDI file format and implementation reference.
-It takes QMidiPlayer as an example to illustrate how a basic software-based MIDI implementation works.
-For the Chinese version, please visit &lt;Chinese version link here&gt;.
-</p>
-
-<div style="padding:7px;border:1px solid #aaa;display:table;">
-<div style="text-align:center;">
-<b>Contents</b> [<a href="#" onclick="var e=document.getElementById(&quot;toc&quot;);if(e.style.display==&quot;block&quot;){e.style.display=&quot;none&quot;;this.innerHTML=&quot;show&quot;;}else {e.style.display=&quot;block&quot;;this.innerHTML=&quot;hide&quot;;}">hide</a>]
-</div>
-
-<ul style="font-size:0.9em;display:block;" id="toc">
- <li>1 Data Representations
- <ul>
- <li>1.1 Binary values</li>
- <li>1.2 Variable length values</li>
- </ul>
- </li>
- <li>2 Chunks
- <ul>
- <li>2.1 Header chunk</li>
- <li>2.2 Track chunks</li>
- </ul>
- </li>
- <li>3 Events
- <ul>
- <li>3.1 MIDI events
- <ul>
- <li>3.1.1 Running status</li>
- </ul>
- </li>
- <li>3.2 Meta events</li>
- <li>3.3 SysEx events</li>
- </ul>
- </li>
- <li>4 Common MIDI Implementations
- <ul>
- <li>4.1 Pre-GM</li>
- <li>4.2 GM</li>
- <li>4.3 GS</li>
- <li>4.4 XG</li>
- <li>4.5 GM2</li>
- </ul>
- </li>
- <li>5 Implementation details in QMidiPlayer</li>
- <li>6 Appendix
- <ul>
- <li>6.1 List of known SysEx's</li>
- <li>6.2 Instrument list</li>
- <li>6.3 MIDI Effects</li>
- </ul>
- </li>
- <li>7 References</li>
-</ul>
-</div>
-
-<h2 id="tocanch1" class="tvis"></h2>
-<article>
-</article></article></div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-05-12.html b/blog/post/2016-05-12.html
deleted file mode 100644
index 51bb65a..0000000
--- a/blog/post/2016-05-12.html
+++ /dev/null
@@ -1,376 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"ThinkPad X1 Yoga初体验")</title>
-<meta name="description" content="«ThinkPad X1 Yoga初体验» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">ThinkPad X1 Yoga初体验</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">我为什么选择X1 Yoga</a></li><li><a class="toctarg" href="#tocanch1">我拿到的机型的配置</a></li><li><a class="toctarg" href="#tocanch2">初次见面</a></li><li><a class="toctarg" href="#tocanch3">安装Arch Linux</a></li><li><a class="toctarg" href="#tocanch4">Random comments on this laptop</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-04-09.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-06-21.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">ThinkPad X1 Yoga初体验</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-05-12<br>#device-review</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-4天前,期望已久的ThinkPad终于拿到手了。说起这个大件,其实是2月份就看中了。
-然后3月初联系了在美国的亲戚购买,到5月8号拿到手。中间还经历了N次立「马上就能拿到新机了!」
-的flag然后秒收的事情。不过最后总算还是拿到了。。。
-</p>
-
-<h3 id="tocanch0" class="tvis">我为什么选择X1 Yoga</h3>
-<p>
-2016年寒假开始之前我有一种比较模糊的想(从美国)买新笔记本的想法。当时预选的机型是ThinkPad
-X1 Carbon和ThinkPad P50(虽然更早的时候有考虑过Mac Book Pro,但是后来感觉用不起……)。
-后来放弃了P50,因为感觉自己可能需要一台更侧重便携性的机型。然后就剩下X1 Carbon了。这时,
-第一代X1 Yoga出现在了我的视野中。看到加个100刀就能买到一台带笔的2 in 1我当时也是相当心动的。
-再加上后来联想迟迟不在美国发售搭载skylake CPU的第四代X1 Carbon而同样搭载6代core i CPU的X1
-Yoga已经开卖,我就<s>一狠心</s>购买了2000刀的顶配X1 Yoga。后来一看X1
-Carbon在美国上市的时候发现前代有的触摸屏被砍掉了,我感觉我做的选择还是正确的。
-</p>
-至于为什么选择联想/ThinkPad,我想这大概属于信仰问题的范畴,这里就不再多说了。
-
-<h3 id="tocanch1" class="tvis">我拿到的机型的配置</h3>
-<ul>
- <li>CPU: i7-6600U</li>
- <li>GPU: intel HD 520</li>
- <li>RAM: Samsung 16GB (2x8GB) DDR3 1867MHz</li>
- <li>SSD: Samsung NVMe 512GB</li>
- <li>Input: Wacom touchscreen/digitizer, UltraNav, Synaptics(Validity) fingerprint reader</li>
- <li>Display: 14' WQHD 2560x1440</li>
- <li>OS: Windows 10 Pro</li>
-</ul>
-<p>
- 比较遗憾的是这台机器没有使用搭载Intel Iris Graphics 540的i7-6660U或者i7-6650U。
-(从intel ark来看,它们的价格只比i7-6600U高22美元。。。<s>某想:学霸机用什么iris显卡</s>)
-</p>
-<p>
- 因为基本是一开卖就订的货,当时并没有配备移动数据模块。所以后面的那个SIM卡槽目前就只能当摆设了。。。
-</p>
-<p>
- 顺带一提,国内没有这个配置的卖(联想在国内似乎不提供网页上的定制服务)。国内的低一档的版本要
-12999元(i7-6500U, 8G RAM, 256G SATA SSD, W10 Home)。在美国购买上面的配置税后价格2100美元。
-此时的汇率大概在1:6.49左右。
-</p>
-
-<h3 id="tocanch2" class="tvis">初次见面</h3>
-<p>
-X1 Yoga的包装盒可以称得上是简洁而精美。大概是有一种机器被两片纸板盖住,
-然后掀起纸板机器自动升起的结构,看起来感觉很厉害的样子。盒子里面只有三样东西:机器本体,
-电源适配器和一张纸(设置指南+保修信息+安全提示)。不出意料的是这些东西全部来自中国。
-</p>
-
-<p>
-开机经过简单的设置之后就看到了既熟悉又陌生的Windows 10的界面(因为我在微软发布Windows 10
-之前就将日常工作完全迁移到了linux下进行了)。用惯了debian的我一时间竟然不知道这系统能做什么事情了。
-打开设备管理器然后在里面随便乱看了看,然后找了个测SSD速度的软件测了下速。发现连续读取居然达到了
-2.4GB/s。(果然时代不同了...) 512GB的硬盘Windows下显示可用475.69GB,Windows吃掉24GB之后
-还有450GB左右,还算可以吧(Windows的体积越来越大了。。。)。
-</p>
-
-<p>
-因为不知道做什么所以后面就开始感受windows 10的触屏体验了。虽然我经常说windows是辣鸡操作系统,
-但是讲道理的话windows 10的触屏体验还是极佳的。毕竟<s>老板</s>微软还是向里面倾注了相当多的心血的。
-</p>
-
-<p>
-系统默认的缩放比例是200%。像我这个第一次碰非手持式高分辨率设备的怎么能忍受高分屏被这样地浪费掉,
-于是我把缩放比例调到了150%。(大概默认的200%是考虑到触摸操作情况下字大些比较好)
-</p>
-
-<h3 id="tocanch3" class="tvis">安装Arch Linux</h3>
-<p>
-大概是因为机器太新,我在这台机器上安装Arch Linux的时候遇到了不少麻烦……
-</p>
-<p>
-本来以为在这台机器上安装Arch Linux就跟在老机器上一样简单。于是就用道听途说的方法关闭了<s>Restricted</s> Secure boot,dd出来一张arch启动盘然后插上去从那张盘启动。
-结果选择arch linux dual iso之后直接黑屏,CPU风扇狂转……
-</p>
-<p>
-后来我换了Debian live的镜像,发现可以启动起来。于是我就想先把系统bootstrap起来好了。
-所以就开始在debian里面bootstrap Arch Linux。但是由于Debian live是从BIOS模式启动起来的,所以GRUB安装失败了。
-然后我就又搞了一张支持UEFI启动的ubuntu live来安装GRUB。整个过程看起来似乎非常成功。结果启动进GRUB之后屏幕只有以下这几行:
-</p><pre>Welcome to GRUB!
-error: disk `' not found
-Entering rescue mode...
-grub rescue&gt; _
-</pre>
-ls的结果有一个(hd0),ls (hd0)的结果是unknown file system。UEFI经验几乎为零的我只好又向google求救。
-结果是Arch Linux里面的GRUB版本还不支持NVMe的SSD。于是我就不得不选择通过EFIStub来直接引导内核了。
-于是装了一个EFI Shell,开始试验如何科学地引导内核。只加root=和initrd=直接跪掉了,现象和arch安装盘无法引导的现象一模一样。
-遂上google搜索解决方案。搜到最多的结果是关闭acpi(acpi=off)和关闭Kernel mode setting (nomodeset i915.modeset=0)。
-然而这两个内核选项都没起到什么作用(acpi=off能让内核启动起来但是在加载intel hd audio驱动时会出一个Kernel Oops然后就卡住了,
-而nomodeset完全没有作用)。于是我就不得不试着搜一下在同机型上安装Linux的经验,然后就搜到了<a href="https://wiki.archlinux.org/index.php/Lenovo_Thinkpad_Yoga_260">这个</a>——
-使用同代CPU,配置几乎相同的ThinkPad Yoga 260。这里面说要想启动需要加这个内核参数:intel_pstate=no_hwp。
-于是我就「抱着试一试的心态」试了一发。结果果然启动成功了……<a id="n1" href="#note1" class="note">[1]</a>
-<p></p>
-<p>
-现在内核启动成功了,大概就可以开始试图添加efi启动项了。bcfg添加启动项成功,添加内核参数却总是失败(原因不明的Invalid arguments)。
-然后又试了试换到arch里面用efibootmgr添加efi项,结果发现不管怎么弄添加出来的项目的磁盘UUID都是0。
-(大概跟<a href="https://github.com/rhinstaller/efibootmgr/issues/4">一个efibootmgr中和NVMe硬盘的bug</a>有关,然而这个bug已经是两年之前的了,也许不是同一个bug)。后来我还试了bcfg添加启动项,efibootmgr添加内核参数,但是总是不成功。
-这是时间已经到了凌晨00:30,此时我却突发奇想要试一下ubuntu里面的efibootmgr。结果是ubuntu里面的efibootmgr添加成功了!
-白费了我试各种添加启动项方法的一个半小时……
-</p>
-<p>
-进入系统之后发现触摸屏和笔无法使用,其他常用功能都基本正常。于是又去google这个问题。查到的临时解决方案是刷一个触摸屏固件然后reset一发。
-长期方案是使用4.6-RC4以上的内核和0.32以上的wacom x11驱动。照做之后,一切正常。
-</p>
-<p>
-然后可以谈谈Linux下的使用体验了。
-</p>
-<p>
-首先先提一句,读完这里你有可能以为我在运行桌面环境期间没遇到什么大问题。但事实恰恰相反:我<s>身经百战</s>已经习惯一天不崩溃就不正常的Debian sid里面的KDE Plasma5,所以说<s>见得多</s>不会对那些日常崩溃大惊小怪了而已。。。
-</p>
-<p>
-因为我长期以来认为GNOME3是专门为触摸体验优化过的桌面环境,所以我先安装了GNOME3。
-GNOME3现在是一个特技非常多,但可调整的选项相对较少的桌面环境。虽然触摸体验当然不如Windows10强,但是也是相当不错的。顺带提一句,
-我在桌面电脑上使用GNOME3的时候习惯使用两个GNOME3的扩展:Dash to dock和Hide top bar。事实证明这两个扩展并不是非常适合触屏环境
-(无法使用触摸手势调出隐藏的顶栏或者dock)。<br>
-比较尴尬的是GNOME3的缩放比例只能是整数而且在GUI里面只能调成1或者2……<br>
-而Qt5(Plasma 5)的情况则比较惨烈。大部分界面(其实就是用传统Qt Widgets实现的部分)完全不支持反方向滚动和多点触控不说,高DPI缩放还只放大文字不放大图标。
-QML的部分则还好。然而现在用QML的做界面的Qt程序还是太少了。<br>
-补:现在我又把plasma5作为了我的主要桌面环境。然后还是发现了一坨问题:
-</p><ul>
-<li>有些Gtk+ 2程序能够正常缩放(比如geany),有些则不能(GIMP)。</li>
-<li>Qt4太惨了,不说了(缩放按钮文字不缩放按钮是什么情况?)。</li>
-<li>当时版本的Chrome需要打开Material design in the browser's top chrome这个选项才能变得对触屏友好,现在似乎不需要了。</li>
-</ul>
-<p></p>
-<h3 id="tocanch4" class="tvis">Random comments on this laptop</h3>
-由于联想众所周知的坑爹特性,各位实际拿到机器质量参差不齐。我算是运气比较好每次拿到的都不是次品的,所以以下内容仅供参考。<br>
-另外,下面主要是负面评价。正面评价的话联想官网上面已经吹的够多了就不用我再说了。。。
-<ul>
-<li>
-Yoga系列的转轴仍然是个问题<br>
-从外观上看,X1 Yoga 1st Gen.仍然采用的是类似初代Ideapad Yoga的转轴。虽然可靠性暂时没有什么可质疑的,但是在所谓的「站立模式」
-下,一戳屏幕就会晃,令人不爽。Yoga 900换了类似表链的转轴,不知道这方面有没有改进。
-</li>
-<li>
-屏幕<br>
-X1 Yoga似乎是第一台有采用OLED屏幕型号的笔记本。然而又是因为买的太早,我拿到的是用IPS屏的版本。
-这个屏幕在室内用调到最高亮度有点太亮,室外的话又看不太清……这个就比较尴尬了。另外光线传感器在Linux下不可用(或者是我没找到可以让它工作的正确姿势)。
-</li>
-<li>
-外壳<br>
-碳纤维的外壳是完美的指纹收集器。然后对像我这样的强迫症患者来说这简直就是灾难。
-当然黑色外壳上如果落了任何灰都是十分明显的。所以说……
-</li>
-<li>
-小红点/指点杆<br>
-其实我买ThinkPad有一部分原因是朝着这个小红点来的。毕竟是个几乎不用动手就能让鼠标跑遍全屏的指点设备。
-再加上几年老ThinkPad R52的使用经历,我用小红点可以说是相当习惯了。然而X1 Yoga上的小红点默认速度出奇得慢。另外就是小红点太容易脏了。。。
-</li>
-<li>
-指纹识别<br>
-2016年发布的ThinkPad几乎全部使用了与旧代ThinkPad不同的指纹识别模块,其更接近于现在手机上的指纹识别模块。
-然而,带来的问题是linux下并不能使用指纹识别。<br>
-lsusb结果如下:
-<pre>Bus 001 Device 005: ID 138a:0090 Validity Sensors, Inc.
-</pre>
-<a href="https://bugs.freedesktop.org/show_bug.cgi?id=94536">libfprint上对应的bug report</a><br>
-在Windows下用的感觉是识别率还可以。然而手上有水的时候识别率就会大幅度下降,这对我这种手汗多的用户来说无疑是一个坏消息。。。<br>
-UPD 2016-10-11: 似乎到现在联想内部的人除了问了一下synaptics他们有没有Linux驱动并回答「否」之外,并没有对解决这个问题作出任何贡献……然而根据小道消息
-synaptics正在开发一个Linux用的闭源驱动程序。。。虽然没有ETA但是总比没有驱动强。
-</li>
-<li>
-温度、散热和性能<br>
-我的这台X1 Yoga非常完美地继承了上台ThinkPad R52散热辣鸡的特性。当时编译内核的时候(那时用的还是电池,单线程编译),温度直逼70℃。<br>
-另外,奇葩的散热孔位置导致使用「站立模式」和「平板模式」时不能进行负载大的工作,否则热风直接吹到手上……(图见下)<br>
-平常时一般40℃~45℃左右(额……环境温度是四大火炉之一济南夏天的温度,所以还说得过去)。<br>
-然后在下面的图中还可以看到令人感动的铜管和风扇。(感觉这个铜管跟风扇省得简直可以跟某船早期产品媲美,当然我这是低压U,人家那却是高压四核i7,不烧才怪。)<br>
-至于性能嘛……因为是一颗低压U,也就不用期望太高了是吧。四线程编译Linux 4.3用时302秒。作为对比,旧笔记本上的未超频i7-2960XM八线程编译用了117秒。即使后者也用四线程来编译,差距还是有的。
-如果拿实际应用情形来说的话,i7-6600U的性能还勉强够用。开DAW堆个30来个合成器还是带得动的。(就是混音的时候温度会很高,能到70℃以上)<br>
-至于显卡,本来没报多大希望,因为是HD 520。然而装上我的魔改版Compiz之后却发现这显卡还是可以的,2k屏Compiz打开各种常用功能还能稳60fps,i7-2960XM上的HD 3000到1080P屏幕上就开始卡了……(HD 3000都是多老的东西了....)
-</li>
-<li>
-电池<br>
-联想官方声称电池能用11个小时。然而我还没有能达到过这个数字。目前把电量用到最低的时候就一次:某次切比赛4个半小时高强度工作<s>(打表)</s>用到27%。
-不过那次是在Windows下。在Linux下的时候就算把它满电放在那也从来没有显示过电池剩余10小时以上过,甚至是不开X只用tty的时候。(我的旧笔记本去年这时候电池损耗显示50%在tty下还能撑7个小时呢……)
-</li>
-<li><s>联想的新logo太丑啦</s></li>
-</ul>
-下面给出几个可供同型号/类似型号机型参考的链接:
-<ul>
-<li><a href="https://www.reddit.com/r/thinkpad/comments/45fbv5/comments_on_ubuntu_on_the_x1_yoga/">A Reddit thread about the X1 Yoga</a></li>
-<li><a href="https://wiki.archlinux.org/index.php/Lenovo_Thinkpad_Yoga_260">ThinkPad Yoga 260 on Arch Wiki</a></li>
-<li><a href="https://blog.phoenixlzx.com/2015/12/28/returning-to-archlinux-with-thinkpad-x1-carbon-2015/">某触关于X1 Carbon 3rd Gen.的文章</a> X1 Carbon 3rd Gen.跟X1 Carbon 4th Gen./X1 Yoga 1st Gen.还是有些差别的,所以仅供参考。</li>
-<li><a href="https://bugzilla.kernel.org/show_bug.cgi?id=110941">关于Linux内核中跟hwp有关bug的信息</a></li>
-</ul>
-<p>
-补记于20160713: jx老板要买笔记本问清洁工有没有什么建议,在调查了Dell XPS, ThinkPad X1 Carbon, Surface Pro, hp Spectre之后跟老板提了ThinkPad X1 yoga。然后就把本来无触屏/笔需求的老板骗上了ThinkPad X1 yoga的不归路。老板已于昨日剁手。清洁工获得精英阶级机友*1。
-</p>
-<p>
-UPD: 20161011: 8月底还是没忍住剁了一片WWAN卡(因为没钱所以买的是华为ME906s)。然后在新学期开学时装作新生办了张联通28元套餐卡。
-测速结果还是相当感人的(Rx ~100Mbps Tx 50+Mbps然而不知道为什么上传测试总是无法完成,最后平均速度不断往下掉)。尴尬的是在Linux下只能收发短信,
-无法用(或者我没搞成)NetworkManager+ModemManager联网……于是这个功能又变成Windows only的了。。。
-</p>
-下面是各种图片
-<table style="max-width:90%;margin:auto;">
-<tbody><tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_1.jpg"></a><br>
-包装盒外部<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_2.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_2.jpg"></a><br>
-包装盒拿掉顶盖<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_3.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_3.jpg"></a><br>
-还是包装盒……<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_4.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_4.jpg"></a><br>
-<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_5.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_5.jpg"></a><br>
-稍微侧过来一点……<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_6.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_6.jpg"></a><br>
-「帐幕模式」<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_7.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_7.jpg"></a><br>
-平板模式<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_8.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_8.jpg"></a><br>
-奇葩的出风口位置<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_9.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_9.jpg"></a><br>
-一侧的接口<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1_10.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_10.jpg"></a><br>
-另一侧的接口<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch0.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaarch0.png"></a><br>
-Arch Linux GNOME3截图
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaarch.png"></a><br>
-Arch Linux Plasma5的截图
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogaw10.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaw10.png"></a><br>
-Windows 10下的截图
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogaopened.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogaopened.jpg"></a><br>
-拆机图——背面概览
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogathermal.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogathermal.jpg"></a><br>
-铜管、风扇和CPU
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1yogassd.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogassd.jpg"></a><br>
-Samsung PCIe NVMe SSD
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/x1ltespeedtest.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1ltespeedtest.png"></a><br>
-ME906s LTE模块速度测试
-</td>
-<td>
-&nbsp;
-</td>
-</tr>
-</tbody></table>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 该bug在linux 4.6 RC-2中已经得到了修复。现在在skylake平台CPU上不再需要intel_pstate=no_hwp这个参数了。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-06-21.html b/blog/post/2016-06-21.html
deleted file mode 100644
index 1eb54c3..0000000
--- a/blog/post/2016-06-21.html
+++ /dev/null
@@ -1,673 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Trash dump for the first academic year")</title>
-<meta name="description" content="«Trash dump for the first academic year» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Trash dump for the first academic year</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">课程相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">关于这学期的「高级程序设计语言」</a></li></ul></li><li><a class="toctarg" href="#tocanch2">ACM相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch3">省赛</a></li><li><a class="toctarg" href="#tocanch4">暑期集训</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch5">Codeforces</a></li><li><a class="toctarg" href="#tocanch6">多校联合</a></li><li><a class="toctarg" href="#tocanch7">自己的能力有何长进?</a></li></ul></li></ul></li><li><a class="toctarg" href="#tocanch8">其他乱七八糟的事情</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch9">关于我的兴趣爱好</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch10">有关游戏</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch11">Portal 1&amp;2</a></li><li><a class="toctarg" href="#tocanch12">「真正的」解谜类游戏</a></li><li><a class="toctarg" href="#tocanch13">平台类游戏</a></li><li><a class="toctarg" href="#tocanch14">STG</a></li></ul></li></ul></li><li><a class="toctarg" href="#tocanch15">关于几个坑(第一类)</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch16">QMP</a></li><li><a class="toctarg" href="#tocanch17">BLR</a></li><li><a class="toctarg" href="#tocanch18">SMELT</a></li><li><a class="toctarg" href="#tocanch19">chrisoft.org</a></li><li><a class="toctarg" href="#tocanch20">OJ</a></li></ul></li><li><a class="toctarg" href="#tocanch21">关于几个坑(第二类)</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch22">钢琴以及其他有关音乐的东西</a></li><li><a class="toctarg" href="#tocanch23">東方project</a></li><li><a class="toctarg" href="#tocanch24">绘画?</a></li><li><a class="toctarg" href="#tocanch25">第三门语言?</a></li></ul></li><li><a class="toctarg" href="#tocanch26">神秘组织「BKT」</a></li><li><a class="toctarg" href="#tocanch27">一些非常奇怪的东西</a></li><li><a class="toctarg" href="#tocanch28">宿舍和宿舍风气</a></li><li><a class="toctarg" href="#tocanch29">钱</a></li><li><a class="toctarg" href="#tocanch30">关于我自己的健康状况</a></li><li><a class="toctarg" href="#tocanch31">技能树</a></li><li><a class="toctarg" href="#tocanch32">未来?</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch33">出国?</a></li><li><a class="toctarg" href="#tocanch34">靠ACM吃饭?</a></li><li><a class="toctarg" href="#tocanch35">考研/保研?</a></li><li><a class="toctarg" href="#tocanch36">直接工作?</a></li><li><a class="toctarg" href="#tocanch37">「自由职业」?</a></li><li><a class="toctarg" href="#tocanch38">曾经考虑过的「最佳选项」?</a></li><li><a class="toctarg" href="#tocanch39">结论</a></li></ul></li><li><a class="toctarg" href="#tocanch40">其他生活垃圾</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch41">校园改造</a></li><li><a class="toctarg" href="#tocanch42">天气</a></li><li><a class="toctarg" href="#tocanch43">假期的宿舍环境</a></li></ul></li><li><a class="toctarg" href="#tocanch44">后记</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-05-12.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2016-09-24.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Trash dump for the first academic year</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-06-21<br>#garbage #daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-本文是垃圾桶系列的第一篇。<br>
-至于为什么要叫「垃圾桶系列」...也许您已经注意到了Nonsense Blog文章列表头部的内容:<br>
-<pre>WARNING: You've entered the dangerous zone.
-I occasionally empty the trash in my brain here...
-Browse with care!
-Most posts are in Chinese...
-</pre>
-(也许等到时间充裕的时候我会翻修一遍我的主页,如果这事能成的话以后blog可能就不分Development Blog和Nonsense Blog了。)<br>
-在正式开始倒垃圾之前,我想我有可能有必要对这个「垃圾桶系列」作出更多解释:
-<ul>
- <li>逻辑可能非常混乱。</li>
- <li>可能包含只适用于某些特定环境/地区、无法被圈外人士理解的用语。</li>
- <li>请自行识别玩笑话和非玩笑话。</li>
- <li>这些内容可能会引起您的不适。</li>
-</ul>
-好了,现在开始倒垃圾!<br>
-...突然又没有头绪了...<br>
-几天前规划这个系列的时候不是还想了好多要写的东西的来着吗……<br>
-<a id="n1" href="#note1" class="note">[1]</a>
-<a id="n2" href="#note2" class="note">[2]</a>
-<div style="padding:7px;border:1px solid #aaa;display:table;">
-<div style="text-align:center;">
-<b>Contents</b> [<a href="javascript:void(0);" onclick="var e=document.getElementById(&quot;toc&quot;);if(e.style.display==&quot;block&quot;){e.style.display=&quot;none&quot;;this.innerHTML=&quot;show&quot;;}else {e.style.display=&quot;block&quot;;this.innerHTML=&quot;hide&quot;;}">hide</a>]
-</div>
-<ul class="headless" style="font-size:0.9em;display:block;list-style-type:none;" id="toc">
- <li>课程相关</li>
- <li>ACM相关
- <ul class="headless">
- <li>省赛</li>
- <li>暑期集训</li>
- </ul>
- </li>
- <li>其他乱七八糟的事情
- <ul class="headless">
- <li>关于我的兴趣爱好</li>
- <li>关于几个坑(第一类)
- <ul class="headless">
- <li>QMP</li>
- <li>BLR</li>
- <li>SMELT</li>
- <li>chrisoft.org</li>
- <li>OJ</li>
- </ul>
- </li>
- <li>关于几个坑(第二类)
- <ul class="headless">
- <li>钢琴以及其他有关音乐的东西</li>
- <li>東方project</li>
- <li>绘画?</li>
- <li>第三门语言?</li>
- </ul>
- </li>
- <li>「神秘组织」BKT</li>
- <li>一些非常奇怪的东西</li>
- <li>宿舍和宿舍风气</li>
- <li>钱</li>
- <li>关于我自己的健康状况</li>
- <li>「技能树」</li>
- <li>「回滚」</li>
- <li>未来?</li>
- <li>其他生活垃圾
- <ul class="headless">
- <li>校园改造</li>
- <li>天气</li>
- <li>假期的宿舍环境</li>
-
- </ul>
- </li>
-</ul>
-</li></ul></div>
-
-<h2 id="tocanch0" class="tvis">课程相关</h2>
-<p>
- 这个学期在我以为它还没开始多久的时候就要结束了。于是现在我来随便看看这学期都学了些什么……
-</p>
-<ul>
- <li>高等数学(微积分):一脸懵b。上学期的东西好像还没全搞懂呢……</li>
- <li>英语:吔屎啦学术英语!(希望还能像上学期一样预习一天混到第三)</li>
- <li>高级(<s>搞基</s>)程序设计语言:课程设计。交QMP水过。这课很奇怪。详情后述。</li>
- <li>离散数学:这是一门我平常认真听课完成作业结果分数没不听课天天打游戏作业全靠抄我的的同学分数高的课。纯粹的玄学。另外考试题里根本没考重点好吧……</li>
- <li>线性代数:乱搞OpenGL的时候接触过一些。然后课也好好听了作业也每次都100分,然而到最后考试的时候依然是一脸懵b。</li>
- <li>中国近代史纲要:<s>社会主义好 社会主义好 社会主义国家人民地位高</s></li>
- <li>形势(<s>式</s>)与政策:同上。</li>
- <li>体育:<s>这科估计又要挂</s>。</li>
-</ul>
-好的上面是出分之前写的。现在出分了……
-<ul>
- <li>高等数学(微积分):谢天谢地我及格了……(没那么惨)</li>
- <li>英语:希望实现了。</li>
- <li>高级(<s>搞基</s>)程序设计语言:时至今日这门课成绩还没出。很奇怪。</li>
- <li>离散数学:任何人应该都能看出来写上面的部分时候其实这科已经出成绩了。</li>
- <li>线性代数:分数出乎意料的高。</li>
- <li>中国近代史纲要:及格就好</li>
- <li>形势(<s>式</s>)与政策:同上。</li>
- <li>体育:同上。</li>
-</ul>
-<p>
- 另外这学期考了个四级。裸考。这种东西对于我来说应该是不起眼到可以忽略的工作才对……<br>
-</p>
-<p>
- <s>这学期真是收货颇丰啊</s>
-</p>
-<p>
- 然而真正的战斗才刚刚开始。看了下学期的课表之后发现多了好多高(ke)大(yi)上(qiao)的课。
-所以说下学期可能会十分有趣……
-</p>
-<h3 id="tocanch1" class="tvis">关于这学期的「高级程序设计语言」</h3>
-<p>
-这课特别扯蛋。
-</p>
-<p>
-第一节课:我们这学期这课就是做课设。你们就做这个xxx、xxx和xxx,或者xxxxxx就行了。<br>
-第二、三节课:给什么都不懂的同学们拆了一个短信加密的安卓应用。同学们全程懵b。跟同学们透露「我是搞信息安全的,此前对安卓开发一无所知,我也是刚开始学安卓的」。讲怎么装Android Studio。<br>
-第四节课:批判在他自己开放的ssh服务器里搞破坏的未知人士。点评课设方案。讲怎么装Android Studio。<br>
-第五节课:讲怎么装Android Studio。<br>
-第六节课:告诉同学如果还是装不上Android Studio,就去群共享里面下一个虚拟机的硬盘。然后演示如何使用这个文件。<br>
-第七节课:讲怎么装Android Studio。这次甚至做了一遍现场演示:从0开始到生成一个可用的hello world安卓程序包……<br>
-隔了七八周之后上了第八节课(最后一节课):说「我会尽力阻止那些想要不及格的同学的!」。<br>
-第八节课之后又过几个星期:在群里通知说最终文档下学期再交也可以……<br>
-</p>
-<p>
-好啊,合着你就讲了大半学期如何安装Android Studio<s>,甚至没讲如何启动</s>!
-</p>
-<p>
-另外难道我们学校就真的是专科学校,学生这么多节课都不会装一个Android Studio?还是门外的墙在搞鬼?
-</p>
-<h2 id="tocanch2" class="tvis">ACM相关</h2>
-<p>
- 一句话概括:<s>玩得挺爽</s>。
-</p>
-<p>
- 托队友的福,我们队在校赛的新生组和高年级组中分别拿到了第一名和第二名。
- 有关新生组我已经记了在<a href="https://chrisoft.org/blog/blogreader.php?p=2016-03-26">该文章</a>中记录了相关的内容。
-而高年级组就懒得记了,反正是挂星队……(嗯……挂星第二。)
-</p>
-<p>
- 然后提一下我们校赛的赞助商——「计蒜客」。先不考虑它还赞助了什么,光看奖品:第一名是他们的文化衫,一等奖便签笔记本,二等奖鼠标垫,
-三等奖一元包邮的usb灯。。。这tm是在逗我?至于其他地方,除了比赛时使用的印着他们logo的气球和题目清单上他们的logo之外,我就不清楚他们还赞助了什么了……
-</p>
-<h3 id="tocanch3" class="tvis">省赛</h3>
-<p>
- 其实感觉这个没什么好写的,<s>无非又是一次酱油而已</s>。不过不得不提的是……由于一些原因,山大大概要连续几年丢省赛冠军了。
-</p>
-<p>
- 省赛之后我们“迷之小队”也差不多成型了。虽然省赛当时分组有些许不同,但是「主力队员」都在(我竟然把自己当成主力队员 我竟然说我们队的那位女性队员不是主力队员,kerh!)。
-希望这个小队能一路走到最后。
-</p>
-<p><s>奖品不错,有了人生第一条200元以上的耳机。给浪潮一个好评。</s></p>
-<h3 id="tocanch4" class="tvis">暑期集训</h3>
-<p>
- 这个比较令人头疼,因为没办法回家。其实没办法回家还是次要的,主要是学校环境有点太……
-</p>
-<p>
- 然后就是集训期间有些奇奇怪怪的限制。另外我还曾经根据以往的经验怀疑这种集训是否真正有效。不过作为一个声称过要洗心革面、重新做人的小辈来说,
-我还是shut up and do my job吧...
-</p>
-<p>
- 上次宿舍停电之后就把主要的设备都搬到实验室去了。于是似乎提前进入了暑假集训的生活模式。不过根据这几天收集到的数据来看,貌似颓废的有点多了,而且颇有
-「越到期末我越浪」的意味……<s>注意及时刹车。</s>
-</p>
-<p>希望暑假集训过去之后自己能取得一点长进。</p>
-<p>(听说一个特别厉害的上学年因为特殊原因休学的学长马上要回归了,鸭梨大...)</p>
-<hr>
-<p>
-所以我在7月9号坐着从家到济南的小火车过来之后,暑假集训也就正式拉开了序幕……<br>
-学校里面没有放假之前想象的那么坏。除了食堂关了一个之外其他常用部门基本都是维持全速运转的(对我来说除了食堂之外还有什么「常用部门」……)。
-暑假留校的学生也有很多,正午食堂的拥挤程度跟上学期间几乎没有差别……<br>
-</p>
-<p>
-上面提到的那个学长也回来了……感觉就像那种什么都懂的那种。。很厉害。然后看起来每天比我们这种咸鱼忙多了。最近似乎在研究数论。<br>
-</p>
-<hr>
-<a id="n3" href="#note3" class="note">[3]</a>
-<h4 id="tocanch5" class="tvis">Codeforces</h4>
-<p>
-由于现在不怎么能熬过整场午夜场cf,所以说没怎么打。到写这段的时间才打了两场。第一场小涨74。第二场好不容易遇到了现在万年不遇的夜晚黄金时段场,结果却很搞笑,
-AB题由于被std::vector坑最后测试全掉了。本以为掉分已经是板上钉钉的事……最后发现rating变化竟然为0。所以也算是守住了没掉分吧。(苦笑)
-</p>
-<p>
-<s>看着队友马上就要创造三个月橙名的记录。。在为他感到高兴的同时也为自己的智障感到有点心酸……</s>
-</p>
-<h4 id="tocanch6" class="tvis">多校联合</h4>
-<p>
-难度约等于区域赛的比赛。由于被<s>错误地</s>划入了「水平较高的新生」里面,我被要求跟学长们一起打。
-</p>
-<p>
-然后这些比赛真是除了那么几个签到题之外什么都不会啊!……所以已经打过去的两场,我都只是「做了一点微小的工作,很惭愧」。比赛的后面的三个多小时基本就是对着某道题乱搞,到最后还一直过不了。
-虽然题目过不了,但是精力已经砸在上面了。。所以最近几天感觉身体被掏空……
-</p>
-<h4 id="tocanch7" class="tvis">自己的能力有何长进?</h4>
-<a id="n4" href="#note4" class="note">[4]</a>
-<p>
-暑假结束,2015级的队伍也都差不多已经定型。我们队的组合还是……相当有趣的吧。我搞大模拟和计算几何<a id="n5" href="#note5" class="note">[5]</a>,fy专门推数学题,<s>剩下的统统推给yxz</s>
-<a id="n6" href="#note6" class="note">[6]</a>。。。
-</p>
-<p>
-所以方向既然已经确定,剩下要做什么也就自然不用说了。
-</p>
-<p>
-<s>最近几次练习的计算几何最后都被我怼出来了好开心 虽然也有搞出过奇奇怪怪的可持久化数据结构和dp</s>
-</p>
-<p>所以我初中和高中到底都干了些啥?</p>
-<p>另外我还发现了一件事情<a id="n7" href="#note7" class="note">[7]</a></p>
-<h2 id="tocanch8" class="tvis">其他乱七八糟的事情</h2>
-<h3 id="tocanch9" class="tvis">关于我的兴趣爱好</h3>
-<p>
- 说实话这东西要是真写可能要写一篇,说不定还得分上中下……所以这里就简单记一点。。跟最近关系密切一些的。
-</p>
-<p>
- 为了写这部分专门回忆了一下我的兴趣爱好的变化。结果发现内容似乎并没有什么变化——至少从我有记忆以来。用一个词来概括的话当然就是高中说的「颓废」咯。
-这个「颓废」对我来说,大致包含以下几个方面:
-</p>
-<ul>
- <li>写代码。是的你没看错,<b>写代码</b>。一般限定于填自己挖的坑这一方面。</li>
- <li>打游戏。</li>
- <li>在视频网站上瞎逛或者看电视。</li>
- <li>听音乐或者自己乱搞音乐。</li>
-</ul>
-<p>
- 虽然内容几乎没变,但是组成比例还是发生了翻天覆地的变化。从高一下学期开始,我已经将写代码当成了我的主要「娱乐活动」。所以这以后其他项目的时间占用比例被大大压缩了。
-然而高二之后,乱搞音乐的时间又有所上升。另外一个就是这几件事情有个共同点:对我来说有一定中毒性——一旦开始就根本停不下来的那种……
-</p>
-<h4 id="tocanch10" class="tvis">有关游戏</h4>
-<p>
- 游戏是人类的天性之一。显然我也不例外。虽说父母极力反对我玩(电脑)游戏<a id="n8" href="#note8" class="note">[8]</a>并且我也尽量满足他们的意愿
-<a id="n9" href="#note9" class="note">[9]</a>。前段时间我在某群里声称自己几乎不玩游戏了然后被人说all work and mo play makes chris a dull boy,其实这话只对了一半。
-实际情况是是我玩的东西人家都觉得太low看不上……
-</p>
-现在我仍然时常玩而且玩的时候会有「根本停不下来」效果的游戏只有以下五类:
-<ul>
- <li>Minecraft 最近买了正版(Java版) (不知道为什么目前这个游戏普遍被认为是小学生的标志...)</li>
- <li>Beat Hazard (我打通这首曲子就不玩了!)</li>
- <li>塔防 尤其是BTD系列...最近有些中毒……</li>
- <li>各种规则的纸牌 (维基百科说这是解谜类游戏,然而人家都认为这只是休闲益智小游戏...)</li>
- <li>扫雷...</li>
-</ul>
-后来人家看我净玩些这种弱智小游戏,也有向我安利一些游戏的...
-<h5 id="tocanch11" class="tvis">Portal 1&amp;2</h5>
-<p>
- 当时别人告诉我这两个加起来只要¥16时,我一时冲动,就买了。也正是这时候我有了自己的steam账号……
-</p>
-<p>
- 实话讲,这是一对不错的游戏。不过玩的时候的感觉是自己不仅手残而且智障……虽然通关之后回过来一看:诶,才砸了4.6个小时(数据获取于2016-07-21 0:31:50)在Portal 1上,还没某些人一天
-砸在LOL上的时间多呢……<br>
-</p>
-<p>
- 最近没什么时间,Portal 2估计是暂时不会去玩的。
-</p>
-<h5 id="tocanch12" class="tvis">「真正的」解谜类游戏</h5>
-<p>
-三个字:真jb难。(诶这好像是四个字……)大概也不是难……但是总觉得不适合我。。。
-</p>
-<p>
-一个例子说明一切问题:一段时间前BLBLB很热情地安利了Snakebird并发了一份共产版。第一次打开我就见识到了「别人所说的解谜游戏」的威力——lv3就卡关了……
-<a id="n10" href="#note10" class="note">[10]</a>然后乱按了接近一个小时之后没有任何进展。。于是就去找BLBLB要答案了……
-经过BLBLB的指点之后得到了200%智力加成并顺便过掉了lv4。然后又卡在了lv5。lv5我两天开了n次游戏,结果发现一直在重复同样的情况<a id="n11" href="#note11" class="note">[11]</a>。
-于是这次就删游戏了……从此这个例子成为了我自己津津乐道的自黑话题……
-</p>
-<p>
-好吧……也许我并不太喜欢玩这类游戏的原因不止是自己智商低。。也许还有一点自己太急于求成的原因在里面<a id="n12" href="#note12" class="note">[12]</a>。
-这种容易一关卡几天的游戏对我来说简直就是灾难……所以说即使我智力没这么低下,那种对我来说有些难度的解谜游戏在我这里最终都脱离不了被删除的命运吧。
-</p>
-<h5 id="tocanch13" class="tvis">平台类游戏</h5>
-<p>
-这个说来也是比较可笑……因为我一看之前收藏的那一堆flash游戏里面,超过一半都是平台类游戏<a id="n13" href="#note13" class="note">[13]</a>。
-不过,这一大坨平台类游戏里面,我通关的不超过1/3。虽然里面并没有I wanna be这样的虐手游戏……但是还是有那种需要不断尝试才能通过的部分。基于前面提到的对短时间无法看到任何进展这种情况的反感,
-现在这种游戏我也不怎么玩了。
-</p>
-<h5 id="tocanch14" class="tvis">STG</h5>
-<p>
-那么这个类别对我来说就是纯粹的虐手了。我接触的第一个STG是当时家里第一台电脑上预装的联想OEM游戏「烈焰战机」。也忘了打了多少次通关的了
-<a id="n14" href="#note14" class="note">[14]</a>,总之打了很多很多把(当时的我比现在有耐心。。)。后来熟悉套路了就基本能把把通了。
-即使到现在还是基本能把把通。所以说我当然相信这方面熟能生巧。然而现在我没有那么多耐心了。于是像东方project这样的需要非常多练习才能成为大触的STG我大概只能当个娱乐玩家打打easy和normal吧。。。
-</p>
-<h3 id="tocanch15" class="tvis">关于几个坑(第一类)</h3>
-<p>
-先写几句总结性的话。。。<br>
-客观地讲,这个学年这些坑还是有一些进度的。然而,大多都集中在上学期。下学期开始之后,ACM实验室里面的事情逐渐多了起来。起初还有机会每天挤出时间写「每日开发任务」。
-后来接近期末了,空余时间也就更少了,「每日开发任务」的内容开始变得越来越水最后直接消失了……更多详细内容见下。
-</p>
-<h4 id="tocanch16" class="tvis">QMP</h4>
-<p>
-这是个新坑。大概是上学期快要接近期末的时候开起来的。开坑标志大致就是某天心血来潮想起了那个一直爆炸的midi读取器然后想要重写。
-于是就1天写完了文件读取1天写完了CLI版播放程序1天套上了Qt GUI壳。然后就给自己挖了这么巨大的一个坑。
-</p>
-<p>
-<i>似乎</i>我开这个坑还跟Zumn的那个「高级可视化MIDI播放器」有一些联系,后来有次好像还制造了相当紧张的气氛。但是鉴于QQ智障的消息同步机制现在我也无从查证。而且作为一个非常标准的INT*,
-其实我在说话的当时是很少考虑自己和别人的感受的……<a id="n15" href="#note15" class="note">[15]</a>
-所以现在也都忘记当时是什么情况了。<a id="n16" href="#note16" class="note">[16]</a>
-不过作为目标不同的两个工程。。还是不要做什么比较的好。
-</p>
-<p>
-说到目标……当时一度扯着要进Debian官方源。BLBLB也一直那么说(虽然不知道是不是开玩笑)。现在不再抱有那种幻想了。更为实际的目标大概就是提供一个稳定的可供日常使用的MIDI播放器吧。
-</p>
-<p>
-<s>这个坑好像是影响BLR进度的罪魁祸首。另外它好像莫名其妙地抢走了当前的开发焦点。</s>
-</p>
-<h4 id="tocanch17" class="tvis">BLR</h4>
-<p>
-这坑坑了……
-</p>
-<p>
-「BLR3 coming this summer」的目标是不可能完成了。。。能什么时候开始继续搞还不知道呢……
-</p>
-<p>
-实话说……BLR2到BLR3的跨度对像我这样的个人开发者来说,实在是有点太大了。从一个完全由写死的C++代码堆起来的游戏到一个由脚本和扩展驱动的引擎,还要内置什么调试支持和命令行……
-现在感觉想想都有点可怕。而且伪ASM写关卡有点过于蛋疼了……
-</p>
-<p>
-有时间再搞。(有时间不知道要等到什么时候了……)
-</p>
-<h4 id="tocanch18" class="tvis">SMELT</h4>
-<p>
-SMELT其实最初是作为给BLR3用的一个hge的替代品出现的。也算是我造的众多轮子中的一个吧……<a id="n17" href="#note17" class="note">[17]</a>
-用OpenGL 2.0的版本差不多也就那样了。DirectX(9)版还没怎么动。另外有打算折腾一个用OpenGL ES 2的版本。不过没有计划搞用DirectX10+或者Vulkan的版本……
-另外那段时间瞎搞CrossNoodlesJS的时候曾经扬言要搞smelt.js,现在从时间的角度来看……大概也就是玩笑而已。
-</p>
-<p>
-值得一提的是在QMP的可视化的开发过程中,SMELT的API也获得了一定的扩充。一部分现在写在QMP里面的辅助功能将会在以后合并到SMELT的扩展中。
-</p>
-<h4 id="tocanch19" class="tvis">chrisoft.org</h4>
-<p>
-这个可能不能算一个坑。因为大概就是闲得没事的时候来乱搞一下而已……
-</p>
-<p>
-要说变化……当然也是不小的。这个学年几乎翻修了整个站点,获得了域名,新增了blog和library模块。<a id="n18" href="#note18" class="note">[18]</a>
-</p>
-<p>
-说到博客。。这里面还有几个寒假开的大坑没填呢……<a id="n19" href="#note19" class="note">[19]</a>
-</p>
-<h4 id="tocanch20" class="tvis">OJ</h4>
-<p>
-这是个还没开的坑。前几天发现所谓的SDUOJ上线了。看现在这个状况。。。完成度还是unusable。<a id="n20" href="#note20" class="note">[20]</a>
-再加上最近了解到cgi这种东西居然如此方便……就有了用C/C++写OJ的想法。但是现在对于这种比较复杂的网站开发还没什么经验。。估计开发的时候得请教BLBLB吧。
-</p>
-<p>
-目前的计划是分三个部分:页面生成器,评测任务分发与结果汇总程序和评测端。更详细的路线图等真正开坑再说吧。。
-</p>
-<h3 id="tocanch21" class="tvis">关于几个坑(第二类)</h3>
-<h4 id="tocanch22" class="tvis">钢琴以及其他有关音乐的东西</h4>
-<p>
-先谈谈钢琴。。。这个本来我是有计划在暑假期间试图拾起来一部分的,结先谈谈钢琴。。。这个本来我是有计划在暑假期间试图拾起来一部分的,结果现在暑假几乎没了,计划也差不多泡汤了。
-今年五一和暑假前这两次回家各摸了一次琴,发现……忘得没有像想象中的那样彻底。
-很多当时能够演奏的曲目现在几乎弹不出来了。(于是这个锅我也可以甩给没有时间吗……)
-</p>
-<p>
-其他跟音乐有关的东西,则玩的不少。Steam春节特惠期间一狠心剁了SONAR Pro<a id="n21" href="#note21" class="note">[21]</a>。虽说只花了~330大洋,算是DAW里的顶级白菜价,然而还是肉疼。
-大部分时间都用在乱搞别人的曲目上了,自己编的曲目可以说是少之又少而且大部分现在仍然处于烂尾状态。总之根据「开心就好」的宗旨(什么时候有这种宗旨了?)。。玩得还是比较开心的。
-</p>
-<p>
-认识的人里面不少都拥有了MIDI键盘。然而我的那台10多年的PSR-275估计是没法带到学校的……一是61键太大,运输相当困难。二是家里人反对(或者至少是不支持)我玩音乐这方面的东西,
-所以我要是说要把这货带到学校肯定又要被打了。。。所以我先将就着用其他输入方式吧……
-</p>
-<h4 id="tocanch23" class="tvis">東方project</h4>
-<a id="n22" href="#note22" class="note">[22]</a>
-<p>
-其实吧……我也不知道这个坑我到底算入了还是没入。说入了吧……其实主要也就是能记住个人物设定听个音乐什么的,游戏本身打的并不多而且水平也十分糟糕;说没入吧。。。反正看有段时间的中毒情况也不能说没入。
-这就比较尴尬了……
-</p>
-<p>
-如果要说起源的话。。这坑我是从音乐真正入起来的。<a id="n23" href="#note23" class="note">[23]</a>毕竟东方系列的音乐知名度也不算低,而且其音乐也经常渗透到圈外。所以说对于我这种当时(高中以后)比较喜欢看鬼畜的来说,
-听到几首出自东方的bgm也算正常。但是真正知道这些bgm出自哪里是在听了某群<a id="n24" href="#note24" class="note">[24]</a>群共享里面的两个MIDI
-(「琪露诺.mid」和「蕾米莉亚.mid」)之后(大概是2012年12月?)。当时就觉得挺好听……然后很巧的是文件名正好是这两个bgm所有者的名字。。然后我就去搜了一下。大概就是这么莫名其妙地入坑了。
-</p>
-<p>
-当然,作为一个INT*、一个相当标准的thinker,我还没达到能作出「此生无悔入东方 来世愿生幻想乡」这种决定的程度……(而且好像这句话会引起争议……贴吧那些破事咱不懂)
-在下面会提到的「回滚」完成之后,我算是向爬出这个坑迈出了一步吧……
-</p>
-<p>
-至于最近……废了一个下午通了th15无欠easy...然后其他就是听听bgm或者丢到DAW里乱搞一番了(th06/07的原曲快被我毁的差不多了……)。
-</p>
-<p>
-至今玩通的作有th04e th05n th06n th08n th09n th10n th15e无欠。(th06 extra借着旧版本wine的自带减速通过一次……全程&lt;10fps我现在也是很佩服我当时的耐心。。)
-</p>
-<h4 id="tocanch24" class="tvis">绘画?</h4>
-<p>
-首先声明……本人手残一枚。某些人曾经看到过的那几张图都是我高三的时候自习课无聊把纸按在打印出来的图上描的。。。。
-</p>
-<p>
-其实如果去翻影像资料的话……可以发现我<i>曾经</i>还是会过画画的……但是不知道什么时候退化成了只会画基本几何图形的水平。然后设计也是一团糟,当时设计的图标被别人评价是一坨来着……
-<a id="n25" href="#note25" class="note">[25]</a>
-</p>
-<p>
-本以为X1 yoga来了之后可以拿这货的数位屏玩一玩,但是到现在还都是只用来写字……
-</p>
-<p>
-所以现在我很好奇那些大触是无师自通还是从什么地方学的……如果是学的话又是从哪里如何学到的。。当然如果是无师自通的话我只好自认倒霉了。
-</p>
-<h4 id="tocanch25" class="tvis">第三门语言?</h4>
-<p>
-初中毕业的时候就有过这种打算,高中以后这种想法更是没有消失过。与大多数跟我在同一圈内的人不同,我一直是想学法语的,而他们大部分都出于一种圈内众所周知的原因学了一种圈内众所周知的语言
-(那门语言我也就是刚刚认全它的字母表的程度)。。。法语的话……现在也就是只能看懂一点点句子,懂一点点语法的程度。要是自己写的话,估计一句都写不出来……主要还是词汇量严重不足。
-然而买参考书的事情已经拖到了现在。。。
-</p>
-<p>
-不过话说回来,我现在英语也就是个「半吊子」水平呢,学什么法语啊……以后会去法国吗?<a id="n26" href="#note26" class="note">[26]</a>
-</p>
-<h3 id="tocanch26" class="tvis">神秘组织「BKT」</h3>
-<a id="n27" href="#note27" class="note">[27]</a>
-<br><encrypted hint="The full name of BKT <br>with space stripped and <br>all letters in lowercase?" hash="454d2df9d1048b3fdd0d5c6799b834921432fce94b500ba16d057c10b0feea66" encont="wxRvK+JITL32f91nW2uAKEO7HAisS5NCx8XeBj83wta6AhZi1I4K5fgN22a892ay7uc6W+GUr+j0HpJol3rmqk/zt/SJMxqNkVLgPJ2mEodsMPyrPD03wd6d7pB/WA/vWtQYvExbyS6IDSlxOnluy2lIdMiZTniaSZL0/UdLWvXwW3iQv/zOQ70DY3oB3ncSkWTUBwg23NBsxDW8koyt+TyfloU5oCa/y1aOQ9y2oh7ObfrvB5kAoyZ241dAo0L2w0ETFc+Ve0K7zTRkGItMTDeVyxwjL4l3niJmbfZr5uXA49qJQ23+Hk69brwf7aH+uOmhnSf39/sx5pjt2lMhKQU3K/t0qsSxP/Iu+hJBhyJ14ARTs7dWDa8xpqiPGLx0+VRTW17pDrQA3SLIZzPiTH+o2RnEszwYLhKbb4BrQjcPQ3mfYBcSW+I+22Pu0g3OGLdm9pL/xnTc5yDve5eKK455feV7lorp79LK4VRyY7DB8Jt3wuPynY5N29no9BxCCL4rk90oMTPMKjt202g16WDRJnX8l7tScFvb2PLvZXQeMo129jd+NU4WSPEDM5xZavDRsYkVrF9ltKE3P3o64gsH9vOoHmAVhU/h/jCZIZPR4TSW7thO/x9pRYCqwcwgf7PmSVB6g1qKxQcYMpqnZS49UmHpwWI6dLzM+QKe+9VEfs2+O7If2GB4+H1SW/6Fp0Pnc2l/P0QdDlBxTIomTgYLXJxFbYQswxCgVz++QQEnKdOwwm5Fr8l2MR1pU+mf7JPqt+qToe6NTcygdT0HwdpQxpl0UCGZ/MNDNSFJ/XU1TndBxs5iQXL1vI2ukCi4dMhpQxwY6q7Qpf6Q6pYcB+2BXYjkuBX8HhPgq9or+jlbLSNdgMjSHVSTkd/wHO6hCE/3dYGBoRlCp/bQ1psWWev1hy6nTrvlASv+PO1eCuJ91wtpTZESSe0Ku81uvtSAkv5RWyQh5/gw6lYvyvJ8X8iCWo0bH6LgCGxWGiavqdLCDXb4+KNnOUrRwuWUEChVlcSmvsqZRjT1bwKx13GFf+jY1bhhT4DFHTbbQQkIDPSPORjE6NX3Yd6gLP/8c0/ETIFZHRbGvA2zlUxS4txC58zcr3BHwtQr52oNj2T37KmIq1TGUa9JnJvHBJQkZPnjPwCRVvHaBn912HDsJ3r2gx/SQ+d+aklHSj/fMRm/UPPpzP33LmWrm1NiGl++vEsmbj7GFEKkBfbtTrZfAa/yT05PpBEI4dSvkXFrcUaWjwZADjYvXYI6AtGO6QRy8Sdzq6rHuFrjaXariLxea3sQjIDLlp7zaECVZ+vqVljQyuOCUZpoojaio54LWnJfshR5hrkzk/t3uyUHcMvrUf1h7tG3mZACV0vWPWH6cZ4YuMPnksavqZ8HLNOx2O6e8CIMv9ixMSr2OJXEkSVi6GXYG4VPxqAfkXt1fS7Z8y/lZGhWAh71dQsmQ5KHJ+9zdlA3Jtjdf0k5lPAjZAg0C7SMIQ6QpSo0yfr+besnjhYzd26i42VUmC48xKW5vItO9YIeqU5ZCVeDv3gyF7Goe/DtjaTrWpyGnhbKNyH9OfLmru9tDDDOvHEJ+pNB2LqWM2yjWFrMQkIr/pErrBvVtwN250EUY7gnZpBmv+xZub9V7uZH0xuVpZ/TIHCwH6R9g78WNHCNjJP25zwdLtlze1RC+BhsifZsmngbrEb8HL88BfvSccKQawLYCwlp3GVXZ9y50+aKSoKlYnIJVz+fe3OhqoJokJ50nZmTnyefnVcX6aWb6MCg1KqnBadASEySiy+c5w/SGJptauc18wj/oh3CDTOpO6GAUIIhqacn7UaV77SFGjrYIaHEmk+fEz0tTauWfeXYF0rYhfmplqcCeu2zDTALd7j+MUDs8kV/ajDxa0xB4YWH3Zf2MRyBd5LQuB3McNH8CEbzn8XkCZer/MT2mqjQ9zeQIrOUUOrxZPVsJNdJ8wimn+EnpZe0xJNErIOxhFXzXLxpw8dDRzetXixzLlBAJHeGdGByvfEZjLXeeh/5eI2chjCEsbUcpZ/n9uNvisTZZ6DC2ZC3PlX1S2tMVHJjto/MF6z4XydKRwkCgC7992fTfVWgxci4DNUm+wVKdh4zGPm0Y0GMxA7srbjh1/Mwf3PdelTukDRR75WaS1iINeymR0VE7ELr7KE8qetbpSwtX3AmZhB8WbJ797HAXzinc0wo0v3QC3MeMwoFH0U5r+9X9DsuAjXQCfDkAQx2mll25z/oyYAWl6uSPFJURFvUjdW99501k0WjOj9hs++UIKoA06KIdR3v4vOmMlJ757Gd7bUrPrpKTm47K3RJhqxOrKaQ8mBRXBrPMkuz/hgR8k2UhVTuThEuBE36u4yESB8qC8L8ymYBk69VO2CoAfxdbRdKsXb/MNtgrdekR1iXRI90FJtM+veWw+t6/2ht/pVi0it+iZ5Y6Dsd6NzWyrnHG1iFwGo4NYAxGNuQIZ6GyQypqRxoeh5bmSUfbMo7povlBV7lX17E21nb2e648fH4BEyLBU3Ec5yOz9mYk3hc92VOnXVkVa90jlKgaB6m8pTBBu+83xNvuoYEPWEl0Il6ix21EsVAv2pmHcGj3cxo1pwd2T1AMPK+KX3gYBQALl0EhWgNwChZoLMXDZCKzsDfjCaxdGoi0uGFz5bM49ARs3tjov/xWJOxx+Z2xoA774UJKKzWGTE4IVlV0P9c77MHjk3GDD8+iZTLLHSln5xb8Fmm4eWhAfJeVldgfjbzClfQsLsW0vscLIPRRwKYH7Gy0jlafpSQRBwxTZNggOqT2KxLVF9elOBi9tTlWdsPQhRW1p2YICrvPAdiB2F5IozVuWitNzXN9fMnAiybOZo2Yd/vV26T0aKBCT3bwf9wiuEz01lZ5DfVEt9Zu04nmL292vDs7be/3J8ETzUOjyzY6q8oi7bIQ1g7q4MVui4VQskIxhpblIT5AxjjyYEeB4CwzJmY8XEgabCMiGgS8f+mJ1U83k+1goT39nyxM/G5eGuDlXiKyYckj0rpYlJJbFguFS6qNwCxFpjuJ+RcqZklgnWI/AtWGtEZZxczk3QgbclJfx3pcGH4CSpd30436/IB9FQbdqy8TwjB87P/mKsmH/3L7ScQ0zO6bU9aolfJuzIZRpDHnyN7Elfd5Y8nxQ4YIcYVxczgN9QB7GTpOxzHHhbWVd93uNVebZjA4a5ekGtle0NL+H/zwZnPO/ZDIma3KSsPqVjmVQX7zAoJMI8hbq9428ndPqn87hfXr1R2FhGTw+7dJ4NXN1YZ3Sr2auwP3HX4/7HJwfOVq0UoQ4Q8hxYUOsbE1Zgjy81oG2EW52ZHgMsDW2PQxpms9J32pvrPacbyRWm7SotRbQQ/qQphkZWEsuqf+ZmDvMH/LlrV1Lw2clQBDeBs2mkTOW81Du1OZ968KsowD2es4nuNGJxOBMb2BYRuxkTbEh50OHwU5ltfB4ZU2zKMeJ8Ch6cOeA8ekv/bGRsvKC0v0v1/m+qNRGDq1dM9EuhBlNxpt4mPQgeCkBFNSY2fwOLXVcbsvUjBndHvV9ehGL2uyOOmmp8ZY52SzsWc1e9p1qDyKTkZ4lbnuWsENlI6MD3dWgcKby654aeVhYS3e5f3HPBrM6Iak08fyLoFZNtKyRKZP4Eju5876A23fHfDSpnpI6hXrUxnCVtwsWFF7QeBpaBHxZT+r6tXXG+l9+oi7kC37j1eHSlqcjsuMD84uvm8xpyU5dlr5V0mqtLyoifYd87V/i41KutTqjE2qPrKESrUjkKCqqHuK0vRjEKB5CwYv+m68WZfYcyn0erSaUcPpjreTJjOKglT2ruuQc98IMuwJCjtQhbxsG9N1czJjSq+JS1Pr0NpQf1qvIGGWiCsDtD3g7Wqzm5PguCt+yXOirMWNr1ji1H+6Ea615vCUhG3bUw1TfdcPOV4wsMFuUhiuNzGZIeJe/GuPYqewIZmNfc0fmKJlpqr1o7fZ/8Q6R3oKtfUtYMBg7WSC7nE7zddIIb0NmuoWJbPE0/UMlY2xa2+DJeQZkkFKjILFSsdfF9yrJU1xCEZmumjGKbKXerF+7HEKrUuvrMcW9+IP6z/ZXn92TbDDKHbNAtJZRaA3dhLpYKYjkqRwNP5Q9nt25sOPO+C6RC/E7vXAmPmtwfoJB5NXugan3lWlQmIxeslBfe57YSlcfyCts74CAMjoVyqBaVdVWHcXiK1XA28Ahfl9w9/kcmaH6qeQy77KZTQS6IUznKNqmOGfjHjZ0CaUmwmKrOjWHMB1y+zKp1L4oGaLsQQKFHTggxQmxr4y+yhVtDltC45rg0vgY2AinXZcJCO3KTNGW+dgG3a+zYSeYbHBMOj+fJIxcGc0yBgtoTOnWrrLZZZ4txhc5bG+RTbZJFLogMSlRfRaEmUtintfLWJjxEHvDMQYE/cPwcbDmWvFrhpiRqqgh0fGaCWBd+GaZGv1yqCu+1zgeeTBCiSv1k9UQpSvOKWLVBfrejQHIQnyFkv0fz87x/o0D+edwa0U49Su6K5Jp+32f3eXvXZtojhmXBskqE3wyRiYlAg5LnlURbeVv6j2eoG9ItQjU8SMr84ovw6SKCk9YPb40MTJv0EpfpuiE3lRB9nRYz1foxBHuha7isIx5VYmX2E+BGnsJ8RrN4/0KR7F4v3UDAa9mz+A08QHt2Tq2njIXi+RB8vFMwIC1/1iq6MUBtw0rbupM+EebhJOl5RQTZZQhkVW4NUkgB+Q/vEMH9WPxGiziUatLEmi5InbYrbSmSHBGvUymvsDqkwqRy4MgLjomM28BQFBPyFLasVIyIIQ0pD8VhJY5jTAK6nPCgMl/dRflWnIG6h1HHaUDRjjLS67OO7UKniR0btm+o9gxl8/o9X0KBLACv2EVGkIykbqoSA1z880CZZ9f8475ErnkaBRia9ai6QPieEyS6Mn+p5Qjb2gtq9r8s7HHlYoLv06sB3CFEyPPcivtuB8tg4k/pNAbODazCQXlwBlbv+t34qbkFeWxm1fzxRyzban9o97l5LpWmzW3lV+hOeJtrzUmrME+MLORvnam0L1p80u65rJ7gJ2O0WXsRzfp4VWAegv/6bV3jTtzH7blAm3euqwMUQpkuaDEuCqA0Eiabjih0cHldNhaIusiawDWHocSL1LVW+Ivl6Z5hUXvsZg4ZiVuDxQcw9iNE6Mg1ifjbhnWklvepg+Ts1/BV9onbGreXjwzTDU/SjdmdPy2UUxKN998Iv9YvJxPxqs+LEBvJPBVgqpofgMXn27pKvsF2Q4Bc9KVFgseMJVPZdj3QSG2QzREamr75m8QdaUrbPHeQE73bUm2ndUw9UgxePI5UI2zQ6bEYaVlYDut14fUPFbslrPZDHQtA+H4UadMETu8AR5wTmwNGxCSip4SQ2ghIZ+wm/4WzPi1QCtbNJk9vzXvE7m+wK7+1jG0RRO07A/AVQBfXiMnPI6NQsFGtIJbFTCdKePrPXF4+riWZdCosby6UnPZp/ltaTFsQsOubHXA2MtNZaQMloacpHd0JJ2+CElcbEqbIyENiJYg2zeC3xzC+O9uhVHvRpH2o8kBmcT6EfKXS7+Rp+L9LFJZL/yf41PEGac6QiK3akHlCp2X+gPBnDUsC1aL8L0f0gLW60fhCAWyH5fXFBqnBSc9bQkeenfhupkFb+paN2vPiLFVskVdKb107AanAVVMQRMvxYh0uLbcAIWeIaZJuEyazHmk3RHnseW3tTMG9VlitzFbNKv7uqJ92VHn0PGTKntAqDp+yqTJuEGugC0inP0h/1ih0DF0mne3CB6yRh4seK8IYsj/MGzdDN9m42btW5Bw6EDavvWQIBZyLxdZxY3a54beHFsWiN7uhIXYZoSCVaesA6twKb0oqxo30/jJur6btbbhzD/n43ZKyLDeKnmsebKFBei8qVvzVlagHGqMNfaaDdvETWPwe2tGDA1wVa8Nc2y/YNOXrl12Lpok5OCAxXmyL6D1BTtaz+wYzJj5KQMncsjDJUlCZpfn0Um1TtNHxQQ42zSfwHsDFRHtNgGAM121xLwg1PBbhsniiIAeUdmkEQApUP3uSAASxMYJ6Bd4c8sFbIP1qBR2o2CiygnLrzx/d+LH4r0Upe3jNPmP22Ivnjeo6sYxLYPcBHVeljR+24FJdNvqAVQCnQJyuZdTGJswX6agCujQQrdJ442BmhS/cNUQpa2Ewhj/9rXzHzNB/8U+JPP8U34lawOxl5bVe1SriTr2/Ru8gmN5uOFeGkxUvLOanj57NcCEA09R5vFjhZoKOargWkElbeOSznhkptm6RCQBOJQE+wgTwiUsRohZuYeVcAQuPJe5wuQmqytcGyln8Cz9FCoQYkFVnH2Bj1MnmLMkH7OTzDE8YB+mzqLsQh5fPMYEwK" enid="0">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(0)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted><br>
-一些额外的话
-<a id="n28" href="#note28" class="note">[28]</a>
-<h3 id="tocanch27" class="tvis">一些非常奇怪的东西</h3>
-<s>(好吧……我忘记当时在目录里写下这个项目的时候想着这部分要写什么的了……)</s><br>
-<p>
-(现在大概又想起来了……所以说这部分大概就写一下。。。)<br>
-某女装的zumn<br>
-和<br>
-某出柜的jngsas<br>
-吧(
-</p>
-<p>
-对于第一个我想可以用一张图概括。。。<br>
-<img src="//filestorage.chrisoft.org/blog/img/tsz.png" width="20%" decoding="async"><br>
-——你说你当年多硬朗的汉子怎么就玩起了女装呢<br>
-</p>
-<p>
-上面这段聊天记录采自我们的主角第一次在某群po出他的女装照的时候……然后现在的情况是。。这位玩的越来越欢了(<a href="//filestorage.chrisoft.org/blog/img/tsf.png">边立flag边收</a>(
-</p>
-<p>
-虽然并不是要把这位姥爷拉出来批判一番或者以任何形式表示反对其他人异装……但是现在的我应该最好还是跟这种做法划清界限。。。<br>
-(现在的我?)
-</p>
-<p>
-<s>卧槽好像又立了一个flag 吓得我赶紧把桌布换成了ThinkPad的默认黑壁纸(</s>
-</p>
-<s>不要点这个脚注</s>
-<a id="n29" href="#note29" class="note">[29]</a><br>
-<hr>
-<p>
-好现在来看第二个……
-</p>
-其实这块重点不是jngsas,而是为了声明……<br><br>
-<em>我的性取向是null</em>
-<br><br>
-……然后祝他们幸福。<a id="n30" href="#note30" class="note">[30]</a>
-<h3 id="tocanch28" class="tvis">宿舍和宿舍风气</h3>
-<encrypted hint="请用基本拉丁字母输入我的<br>一个含一个希腊字母的网名" hash="39932de669f3e48d5fe22219188e19a02d45352fae101df1761e4014607566ae" encont="KbCGqDTHT60NMSID4x69k+IzgpqdCkuH9x/YrpkdwQGAU4khkegSBsfhdHS2uRh25HtdYch3UM/NUKPKgypxpOIflGfUsrwVS7pwHSwqqoD57P4epGWmJcVhWL8thi5WMkkfJkE27YwMyuXEFkHB9omNDLCih/4bV3YqLow3xed60b1/EajUIacPtXXluL9Yfc3hZpc3EzQ0L7gz4eQxzG4B2ZJLCzb0hdnHu442BkmunrvJPsOUfjrlmt7wK9lSye9O5m8bQJ6x4XH7lIxtZQ85qEVJxyXKBIbaBG2PesfBPcsBy7IHF7a++ejvMM5dw59btJyKMp2SSx6xeog+BuXqEaViMSMTWz1NWhj54OcUCn67jupu0zGt9FslnqtrO6U675o6jbZEDAQEpd8L3nqi4iWh5s+kvUidchNgFSIhy+ja5b4ziy2CifBHXulk0lBWnkbBO7ScFAQw5iKar9yUT+b2z0Ir8D8bNH1nuaf0n+gkooiWf+Gtxy7gm3TC95CRHwdDOQYO3iYBde+LUqAZaWsZ0rAbBpiiveLHPMPcyFmIvHz1qRMoGMnWwSeZfv1hVIpYprK275tnUTyEdJGVcI587qj4R9sdbjbTv+fUgxRDm5Hj4uUQ33CngrWSNQrf0T8Y4Dm4AhJiVAes/ORLbgCAcjxseJ2Qt66rEEY9yRNTWS5MdOUbQUSlmtNtJUt5ekh5rmzv94q0z83s6VTL++j/eT6zE4du0ptGLDz8Sl8e2dCWsbj0ouUy6w9FI4uuvEh751Sowon8TEpSR98Isaoka0zxvt9uXjb9UV7zBB82afqfvHrk2EgslMbm13VgjyzdKR5Bp4xO8gCu0zI1+AnTllnWguuFiGN36RNRTab5Q31FpUdDNaNJZPS8KkX4MkS/HY1nGDGGBscEojUN0zE0ImGyag5Lt2HMyRhRHJZLeyeiA18G/DNN4fATZ0B0gytQ1xWcvX8BqZr3jeZIX1WCYx/mKtLkSCLpg4kTjSKP9VV/CwBvFYdN5M9gkrJkjxRFINgScq/gdPEWN9sxhqIJXzIuUMHbU06zdBraen7ATizVmlVtfQTgd1STte4wmmEGZY6iKCCAbm8cmAyxePjo7SOYw/oFLBpcSBDtPPfjqEfc3hxmN6/1FKLSOOPvC7Df9IMbgrbQ1l2Fi01g/CxB4GSnNJWESnG9IIj+Wha26Aud8H2HPqW0XvP2suh5cbSJsH2o89Vc3wFcyOHyp3f8gjK+4pJP9ZDn8Wa3xTkrATbexACfxbR96LPEiGHW3tHYsK1f0BnNeJS+Q9RnTeT0W9jUQ17Alm1bQSVuQQNB0q9+bov8UHrxq7RE0b6okT10y8fIf92HHi9yGY+GhQKQ1pc8c1hmmnm3pIdB7WmrX5vdVG7naNS3jYcyLC5wFZMberZbpmEOehSrLvpVV3QRQHzkCJwC4qoKnerNwuGFVCjclmJVVpAXkO+0fumi0yU4eJwynUQFo3gyrh4keHp0uHFon/4zYMnS4CtVz/+3UMbsauF2yp5B5kHa0Z8HMZyB2sGRaPnjpWTvLrmdN27l8VoU4PqJX3/RxuFDRfn4CakmNWUqKyS0mzw0snx7IdyRCpjAALIeLHVgnBBbYAu6iTuXW2iwSnCXrVyF9OgCbeuuAYhncdoiqaHRQZy7xDkkg/ANXlEQvSd0FUj46N22Xax0B9g4iq97uzRT4FOdLvPIXWrXjPN0T+wT46xvnH8xKNSD+GrwZ6+JkLeErECZYpQUqdKAU9AAJ9p//+KS6Gt9GG9btgAL4ZTlwWOOyDhB3f7ki28dpRYoXRV21f+62InpdybiCSOFrH/dAAP1ey0idtml+bCdoiqJC9+WcK10TVh9m9nMx9rghvOT9PEceIPPtGJFillOKj16f2TQ4yhpUDJEhYlKX4pfkol6ECT4C8GaWWziDqzH1JjARdaw9/za5HYwe3SSM10utWke+gCztenhCHLmdTpUcP1OQGTJ1SYN3cJsA3SuqvaljkQPi8ha3QFBByZI/zOt0dPvskEUJCqc2hlCqW2pL0hfQeKMqqbl35qOmuYTPYFuU+mQX40zVPtxUoH3" enid="1">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(1)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<h3 id="tocanch29" class="tvis">钱</h3>
-<p>
-日常生活方面,我几乎毫无疑问的是全班最节俭的了——一不出去浪二没有各种买买买,三在食堂一顿从未花到过10元以上。这些因素综合起来的结果是本学年下半学期我总共只花掉了不到1600元。
-第一学期的数字甚至比这还要小。
-</p>
-<p>
-然而在电子设备方面……我花钱可是真不含糊的。。一台X1 yoga就把上学期赚的9k全甩走了<s>(还倒赔了不少)</s>。然后又把旧笔记本升级改造成「台式机」花掉5k,买各种各样的板子(树莓派,ipc主板,WWAN卡)又花掉小1k。。。
-还有1k3的SONAR Platinum。。<s>我真败家……</s>
-</p>
-<p>
-当然我感觉这些钱应该也算花在该花的地方了吧。
-</p>
-<h3 id="tocanch30" class="tvis">关于我自己的健康状况</h3>
-<encrypted hint="php?" hash="2cfe798301e9d0db91f3c012440cb773831244877ae799f260a69741ed1569f8" encont="CHv1MdArGv1KBpayI1G+8bYIYX6pSZL94SIpCNJ2W8Y8TsaHo8B169uUUDotjug7DGdtikLMLEX8DrB8hhe3O09rA4d1UNxhfh1rhr4D3af51tqxyAntUQWxIzfDgBoaNHE+SUBHXbkaiYpcgwb0bXroq0+cZtTm5oNfsdCwz/4YQUMhTs7gUHJmiiJMSxC7v7lVAc+71iosZJjTNkCIFZOTTYnECmCVGqZuP8JMec/zDBFvL0sSzQRpx5FZbZYjnFSjvFsbGZu4gcQCPlbXVumEF5fYPpCpgUQKJVZ71LXrwUpeUPUbhTvXiYp/WLNVA0T/OlnxASZasmGVeTTbM2A5lgZjtWqPmYEHE/wCw2TYPrY7/T/yIqTgUgUmW+Nu+fQJ7Qnh4azHBMP1T8U26/XFVzj026nTAeRUPR6zp6AnurE11/v+L7gFFeD/ejfRDUYjQKRGqB1gfDGvzy/Eaeiql7T0pV03e2EeEdnWi1yJSk89n/zUzbPoZiY57J3cuqMlxxS34DnOk6IYkO/aczPng4weO3xNiG/PAKdzaH6OmaVj9Z22u+3KcfTQvKvCnsId8kGiivP0cI4iUp/Z2iGNE3TBFFTGRsII/eF4KlmgQKTQmsctSTILNQhSoAWwbHaFyOccN5Rp5Ocaaz+PRSkKxeEueyvlEUH4ESo4QwGc/GFKAZqu0j86972zfgir087hiaMouMs+uFNTra8AkeWfFDFy6uRroBFFa1qUjv9dF3oDx2ZI/udF51NgfeFsQF/kGR/dkdRvlllFIymqtgxzuAuXwPhLRwwdOm+fQzl3XcD9bigHkKxlP/VWcgEZ4/oU5cwIYx8agUq88H1mxsXVbHqNNtMngLEZFik3tr4doFau8ADXTMJCqP+Al4msI5ugwpQH3NbM0fQ6992t9HKDfLrIBE7dqq0Bbzu+uMJg6Th+N4kIADCyt9t1/pCIYqyiRRgnkm5XzH2+5NXtR0/Oab3pJZI388XAQLQphw+i8Y9rTMU+LFI63wspRjLAqugJv5JxJdoM7Ig5DmnN3OsBcTJzc1PFQknpCeYxZnfPuuc61qGeX5WO+PVHbn1UaxkX+Vqn8jWItExg2mcwpxsNB+ZkT0XPnBaEMLSqz75D+HjqvWc3Py9auonsWb3VJCutpVbvmksON7rX9KoUQZpTWSfRrpgZ20mlnCwoD65FCguV2oiSkBPRAqRWY3xoqdp9lC1ofvWBcDCvv7SycAg8mvu7Q2ANtVifIhRuIJ2uCqtW6MLqG816LDJyPdYtuPV61veVKWcVNYg9mdjP8zMIhZUWaY1Dsl4PrKvPBU2FseDzvlkHaNPfPE7cTU/IaAh0X1Unwd63stllwkIh8qJsD/edQJLJNle0W2vIVeeYN8/zKzdEHNvM7eAzHqE9WueMPotaEb9zU0XYt2Xw6TNkhWHcISaVBxLQoyDciNq/RVNbSDjHW+Fdr6I26HzMV4VJIFtKli158yrVRH9i119gOnaUpp6umW4+XnlpHnWPywccqktWi4ngG2mjM79uV3qVCe6GBnENIS5L6QYigajedOu7ITDwlPajI4STFPU1htmr+cT7gfFDFQ/qJHJJAMIgzoBKr5LTc5VJ3L2egXQMvaK6ZZwk/VJAgk64oqXPU53hHftbPVm8t5Eo7NVHWisEuaFLP8XwY3iYlvPoRTjmwsP6R4DFm8p0NPM0Ju73nHrNkVqK6srEddpKhkLdiv2qr//okUc9zSo16PCubmPd/KORaIuUyasUogtwsajs1TlLUdkNaMHZYywLjIjTuotPKGI/C9ATxMBv0pEABzjyCzlHuCq/ubFMqusr/BH5+YoczKSmFgWAKyGv5r+vfzsdG3C25gGMpiPlDb/pEpF6dMR8wyfZ6PO9s3RlJXvtTayYMysEic+boD9u50xIU1+8qon9GhmIvnVjGuIc+xyJM57P5xKX8g+1RS0MehiFKehflW6imIbkxqh1KhaUGUE5+ySmSh0b8zAeQEkF2L+efrM2FeIlc7NaKPvWOkMpfP6MiDzBwoeWmE6r9TyXk5qarWomOVeiqfRI5S3cpg/4VdMbpm5R0vDkPKt5H3rFjPafa+apkLXP964HWILBaaP853lmhucaCKis5usSkI4AsbRCgBMQyWt2Xc9RRtLlJzy9SSA8/kkmkfd8fp795WiWsnc418KHA3RkMsCq8hxOQ3fk+iGQvecitVyCQkMVqZLd1hfBZiMJj9WLBcH3iFFdr+dwOPfuhNKDS5ev25TZ13Ljx6sH" enid="2">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(2)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<h3 id="tocanch31" class="tvis">技能树</h3>
-<p>
-作为一个一向「不务正业」的人,不可缺少的一点就是「在技能树上乱点」(语出BLBLB),虽然我的技能树可能没前面提到的那位的枝叶繁茂。。。
-</p>
-<p>
-那么下面简单列一下这学年我都点了些什么技能……<a id="n31" href="#note31" class="note">[31]</a>
-</p><ul>
-<li>C/C++:QMP/BLR/SMELT:4</li>
-<li>OpenGL 2.0-:SMELT/Compiz:3</li>
-<li>OpenGL 3.0+:CrossNoodlesJS/Compiz:5</li>
-<li>HTML:chrisoft.org:3</li>
-<li>CSS:chrisoft.org:1</li>
-<li>JavaScript:chrisoft.org:5</li>
-<li>PHP:chrisoft.org:3</li>
-<li>Algorithm/DataStructure:ACM:6</li>
-<li>Python:ACM/乱搞:7</li>
-<li>Bash:乱搞:4</li>
-<li>SONAR/composing:乱搞:1</li>
-<li>Electronics:乱搞:5</li>
-</ul>
-<p></p>
-<p>
-因为垃圾桶不是个立flag的好地方,而且写下这段文字的时候,已经距创建本文档有快半年的时间了……所以就不立什么flag了。
-</p>
-<p>
-<s>顺便提一句,你一定要问我对乱点技能树资磁不资磁……年轻人就是要努力提高志己的姿势水平嘛……我怎么能不支持呢?</s>
-</p>
-<h3 id="tocanch32" class="tvis">未来?</h3>
-<p>
-也许对一个刚刚大一结束的我来说,谈未来有点为时尚早。但是在我发现大学一年来我没有取得什么「全新突破性」的进展之后,
-深切感到了一种「自己不会四年下来就这样了吧」的危机。所以打算找个目标为自己提供动力……
-</p>
-<h5 id="tocanch33" class="tvis">出国?</h5>
-<p>
-如果是去说英语的国家的话,那么语言应该不是什么大问题。然而看到国外强校的要求和自己有点尴尬的GPA,还有某仍未解决的挂掉的体育,
-感觉这条路黯淡了不少……
-</p>
-<p>
-如果要走这条路的话,可能真的得「苦练硬气功」吧<a id="n32" href="#note32" class="note">[32]</a>。。。
-</p>
-<h5 id="tocanch34" class="tvis">靠ACM吃饭?</h5>
-<p>
-也许是目前看来最有希望的一条路。如果搞出大新闻可以有很多可供选择的选项呢……
-</p>
-<p>
-然而想要搞出大新闻必须改变现在处于半抱大腿状态的现状……好像还是得苦练硬气功。。。
-</p>
-<h5 id="tocanch35" class="tvis">考研/保研?</h5>
-<p>
-体育挂了你还想保研?
-</p>
-<p>
-研究生考试考政治你还敢去玩?
-</p>
-<h5 id="tocanch36" class="tvis">直接工作?</h5>
-<p>……去奇怪的公司当苦力?</p>
-<h5 id="tocanch37" class="tvis">「自由职业」?</h5>
-<p>=啃老?</p>
-<h5 id="tocanch38" class="tvis">曾经考虑过的「最佳选项」?</h5>
-<a id="n33" href="#note33" class="note">[33]</a>
-<p>
-这种工作真的好找?
-</p>
-<p>
-真的会有自由时间?
-</p>
-<p>
-想搞什么?
-</p>
-<h4 id="tocanch39" class="tvis">结论</h4>
-<p>看来还是得苦练硬气功……</p>
-<h3 id="tocanch40" class="tvis">其他生活垃圾</h3>
-<h4 id="tocanch41" class="tvis">校园改造</h4>
-<p>
-都说一图胜千言,这里有好几张图。
-</p>
-<a href="//filestorage.chrisoft.org/blog/img/p1.jpg">破碎的道路</a><br>
-<a href="//filestorage.chrisoft.org/blog/img/p2.jpg">几天后上图中的路的景象</a><br>
-<a href="//filestorage.chrisoft.org/blog/img/p3.jpg">宿舍楼走廊</a><br>
-<a href="//filestorage.chrisoft.org/blog/img/p4.jpg">满是泥巴的路</a><br>
-<a href="//filestorage.chrisoft.org/blog/img/p5.jpg">教学楼内</a><br>
-<a href="//filestorage.chrisoft.org/blog/img/p6.jpg">刚刚经历了世界末日的宿舍楼</a>
-<p>
-——来自一所一放假就施工的高校。
-</p>
-<h4 id="tocanch42" class="tvis">天气</h4>
-<p>
-虽然济南是否能上榜四大火炉一直是一个有争论的话题,但是对于一个家在海边,没见过几次40度高温的我来说,济南还是让我开了眼。
-加上宿舍楼还没有空调<a id="n34" href="#note34" class="note">[34]</a>,所以如何在这种环境中存活下来,也变成了一个相当具有挑战性的话题。
-当时因为没有属于自己的床,所以没好意思在有空调的实验室睡。于是就只能在宿舍里面想办法苟。一次偶然的机会,
-我发现某室友在宿舍中留下的密封袋,在里面灌上水之后枕着非常爽。<a id="n35" href="#note35" class="note">[35]</a>
-于是买了个注水枕(冰枕),配合上扇子等等传统的消暑工具,苟过了我在济南度过的第一个夏天。
-</p>
-<h4 id="tocanch43" class="tvis">假期的宿舍环境</h4>
-<p>
-放了假,宿舍楼的公共区域清扫的频率也降低了。于是垃圾桶溢出这种事情就变成了常事。有时还经常见到硕鼠的光顾。宿舍里则是小强泛滥。
-基于一种大多数人都有的、来历不明的对小强的恶心,我一开始拿他们并无办法。到后来眼看小强数量马上就要达到环境承载量、
-开门的时候可能会有小强直接掉下来的时候,我直接祭出了最后手段:生化武器。你别说这东西倒还真管用。
-第二天早上宿舍就遍地都是小强的尸体,清扫出去之后,此后相当长的一段时间再也没有见到过小强。
-</p>
-<p>
-后来在自己贮存在宿舍的棉棒里发现了小强的卵鞘……一包几乎没用过的棉签就这么丢掉了。。。
-</p>
-<h3 id="tocanch44" class="tvis">后记</h3>
-<p>
-自6月21日开始写这篇「垃圾桶」到今天基本完成,已过去了半年零三天。这段时间里,除了少量的那么几天,自己实在是怠惰得不得了。
-再也找不到高三的那种为一个明确的目标奋斗的那种感觉了呢。
-</p>
-<p>
-<s>啥?我高三奋斗过?</s>
-</p>
-<p style="text-align:right;">
-2016-12-24
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 本文的标题于20160713由Trash dump for June 2016改为了Trash dump for the first academic year……(大概是读了BLBLB的什么东西受到了某种刺激..)于是这篇文章的完成显得更加遥遥无期了。。。<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>:
-@160721002529<br>
-诶呀我果然还是太懒了呀……看起来这个垃圾桶的坑是越来越大感觉要填不完了。。。<br>
-不过最近也挺忙的……被多校联合虐完又去切cf然后差点掉分……感觉身体被掏空。(算是给自己找个借口。。)
-<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 补记於2016-07-24 01:06 地狱般的宿舍<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 嗯……此部分为2016/11/04补记<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: <s>大概是把写游戏的时候积累的经验搬过来</s><br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 其实大概是我跟他谁会谁写...<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 来自强省强校、校内相对较弱的yxz还是直接秒杀来自弱省强校的渣渣我<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 比较传统的父母一般都会持有像「玩物丧志」、「不许说脏话」这样的观点。<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 在他们能管到的时候。希望他们看不到这篇博客!<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: 这游戏关卡是从0开始计数的所以其实是第四关。。诶我好像还在为我的低智商辩解...<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 人类总是在重复同样的悲剧<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: 一般一局纸牌类游戏我不会玩10分钟以上,有难度的规则的不会玩30分钟以上<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: 这里面还有一半是超过仿Super Mario World的游戏……<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 通关大概是2004年左右的事情。当时大概是我爸先通了然后不久之后我也通了……<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: 大概是……只管把自己当时想说的吐出来,根本不在意别人或自己的感受(这也是为什么我是--T-而不是--F-)<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: 虽然不知道是不是INT*都是这样,但是我个人是基本上不计前嫌的——只要现在没有什么问题的话<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: INTP就喜欢造轮子2333。
-<a href="https://www.16personalities.com/intp-strengths-and-weaknesses">reference</a>(@Loathe Rules and Guidelines)<br></span><span class="TText"><a id="note18" href="#n18">[18]</a>: 具体的变更可以在<a href="https://chrisoft.org/History">这里</a>看到。<br></span><span class="TText"><a id="note19" href="#n19">[19]</a>: 由于可以归咎于性格的表达困难和懒。<br></span><span class="TText"><a id="note20" href="#n20">[20]</a>: 这跟去年学长说的完全不一样啊喂……<br></span><span class="TText"><a id="note21" href="#n21">[21]</a>: 在家里人不知情的情况下。<br></span><span class="TText"><a id="note22" href="#n22">[22]</a>: 这个部分可能会脱离「本学年」的namespace。<br></span><span class="TText"><a id="note23" href="#n23">[23]</a>: 知道東方project这个东西的存在则可以回到2010年。当时看见pz在打th08。我从他那里拷了一份,
-后来还专门从网上下了bgm播放器来听bgm……不过当时听了并没有什么感觉……<br></span><span class="TText"><a id="note24" href="#n24">[24]</a>: 忘记是哪个群了……有可能是BKT也可能是某当时只有3人的小群。<br></span><span class="TText"><a id="note25" href="#n25">[25]</a>: 不过我就是喜欢那种风格……想要图?没有!。。<br></span><span class="TText"><a id="note26" href="#n26">[26]</a>: 最近那真乱。<br></span><span class="TText"><a id="note27" href="#n27">[27]</a>: WARNING: 这个部分的内容是我试图在理解自己……所以说可能会比较奇怪。<br></span><span class="TText"><a id="note28" href="#n28">[28]</a>:
-仅仅是能互相开玩笑的,不能算什么朋友。我认为真正的朋友无需互相隐藏什么,更不用以谎言互相欺骗。这么来看的话,我的身边大概从来没有过「真正的朋友」吧。2016-07-27 3:52:19
-<br></span><span class="TText"><a id="note29" href="#n29">[29]</a>:
-然而我当年也不是什么「多硬朗的汉子」(现在也不是(
-<br></span><span class="TText"><a id="note30" href="#n30">[30]</a>: md我的毒奶真是……果然就分了。不过这大约是个必然事件吧。<br></span><span class="TText"><a id="note31" href="#n31">[31]</a>: 格式:技能:来历:点数,点数大致对应about页面skills里面的打分<br></span><span class="TText"><a id="note32" href="#n32">[32]</a>: watch?v=a0nbfIRycco<br></span><span class="TText"><a id="note33" href="#n33">[33]</a>: 如果你不知道最佳选项是什么:找个在中学教计算机课的工作,自由时间搞自己想搞的东西。<br></span><span class="TText"><a id="note34" href="#n34">[34]</a>: 正在安装。<br></span><span class="TText"><a id="note35" href="#n35">[35]</a>: 然而那个密封袋在后来换水的时候炸掉了……<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2016-09-24.html b/blog/post/2016-09-24.html
deleted file mode 100644
index f3c95b2..0000000
--- a/blog/post/2016-09-24.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"2-in-1")</title>
-<meta name="description" content="«2-in-1» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">2-in-1</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/qmidiplayer/">qmidiplayer</a></li><li><a href="/blog/list/c++/">c++</a></li><li><a href="/blog/list/qt/">qt</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">UPD 2016-10-28</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">BUT THAT'S NOT THE END OF THE STORY.</a></li></ul></li><li><a class="toctarg" href="#tocanch2">UPD@2016-12-28</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-06-21.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-01-09.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">2-in-1</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-09-24<br>#devel #qmidiplayer #c++ #qt</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-The visualization plugin for QMidiPlayer in Linux has suffered from a dbus-related bug for a long time:
-after you have opened the visualization window, close it and try to bring it up again, it will either
-result in several lines of dbus warning which suggests there's a bug in the program (on Debian sid),
-or simply a crash (on Arch Linux).
-</p>
-<p>
-Well, I have to admit the design of QMidiPlayer's visualization architecture is pretty weird:
-the visualization plugin spawns its own thread and do almost everything in it. After doing some
-research on the Internet, I realized that everyone suggests that Qt and SDL <i>shouldn't</i> be
-used together, "use QtOpenGL instead". However I thought that will hang the main UI thread and
-I just don't believe in the myth.
-</p>
-<p>
-So I started my investigation in early May. I even opened an related issue on github. Unfortunately nobody
-offered help. So I had to solve the issue myself. First I had a look into the dbus warnings:
-</p><pre style="white-space: pre-wrap;">process &lt;PID&gt;: arguments to dbus_connection_unref() were incorrect, assertion "connection-&gt;generation == _dbus_current_generation" failed in file ../../dbus/dbus-connection.c line 2822.
-This is normally a bug in some application using the D-Bus library.
-</pre>
-<p></p>
-<p>
-Qt definitely uses dbus. After spitting these into stderr, QMidiPlayer crashes instantly in the
-QDBusConnection thread. Googling the warning turned out nothing. Then I came across with this blog post
-from a KDE developer:<br>
-<a href="https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0">https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0</a>
-</p>
-<p>
-Unfortunately, after applying the "fix", the bug didn't change even a little bit. So I had to move on.
-</p>
-<h3 id="tocanch0" class="tvis">UPD 2016-10-28</h3>
-<p>
-After several months' idleness of the investigation due to the lack of idea, I suddenly decided to have
-a look at all dbus calls when QMidiPlayer crashes. Then I found the following dbus call:
-</p><pre style="white-space: pre-wrap;">path=/org/freedesktop/ScreenSaver; interface=org.freedesktop.ScreenSaver; method=Inhibit;
-string "My SDL application"
-string "Playing a game"
-</pre>
-<p></p>
-<p>
-Apparently SDL is also using dbus to do some dirty work -- disabling the screen saver! So I appended
-SDL_EnableScreenSaver in SMELT's init function. Unfortunately, nothing happened again. However I've
-guessed out the cause to the problem: <b>both Qt and SDL try to initialize a dbus connection in <i>one</i>
-process, which is not allowed. So I have to get rid of either one of them.</b>
-</p>
-<p>
-Therefore I began to port the SMELT engine to GLFW. After two days of work, the port was finished and it worked
-like a charm -- I have solved the problem!
-</p>
-<h4 id="tocanch1" class="tvis">BUT THAT'S NOT THE END OF THE STORY.</h4>
-<p>
-Driven by the unstoppable merriness after fixing a long-existed bug, I started to build GLFW version of
-SMELT for Windows. The process was painful but finally I managed to do it successfully. After that
-it's time to compile the visualization library. A beautiful DLL file, sized 1096192 bytes, was produced.
-This build is almost 4x smaller than the previous failed mingw build and I regarded this as a omen of
-fortune.
-</p>
-<p>
-I put the DLL file into the plugin folder of QMidiPlayer and launched the application. No errors occured
-as the mingw build once caused and the plugin showed up correctly in the plugin manager. I was so excited
-that I turned on the plugin immediately and I couldn't wait to announce the result to my friends. However
-when I hit the visualization I was greeted by a déjà vu scene.
-</p>
-<img src="//filestorage.chrisoft.org/blog/img/qmpcrash.png" alt="" width="70%" decoding="async">
-<p>
-And this nasty little dialog from the Windows 2000 era.
-</p>
-<img src="//filestorage.chrisoft.org/blog/img/couldntbewritten.png" alt="" width="40%" decoding="async">
-<p>
-So another tale of a battle between a fierce bug and me is due to happen. <s>Stay tuned and watch the fight!</s>
-</p>
-<a id="n1" href="#note1" class="note">[1]</a>
-<h3 id="tocanch2" class="tvis">UPD@2016-12-28</h3>
-<p>
-So the bug has been (mostly) fixed by the following two commits!<br>
-<a href="https://github.com/chirs241097/QMidiPlayer/commit/b79c4b7e3cab3711e87ba9e28fa8423a84ea7efa">b79c4b7e3cab3711e87ba9e28fa8423a84ea7efa@QMidiPlayer</a><br>
-<a href="https://github.com/BearKidsTeam/SMELT/commit/b13f72857af93489f535b84d62882f681dc84a73">b13f72857af93489f535b84d62882f681dc84a73@SMELT</a><br>
-</p>
-<p>
-Basically the most tough part to debug is caused by the stupidest typo...
-</p><pre style="padding-left:20px;border:1px white solid;">@@ -62,7 +62,7 @@ bool SMELT_IMPL::smInit()
- else if(i==0x80000004)
- memcpy(cpuName+32, CPUInfo, sizeof(CPUInfo));
- }
- - while(*cpuName=' ')++cpuName;
- + while(*cpuName==' ')++cpuName;
- smLog("%s:" SLINE ": CPU: %s\n", SYS_SDL_SRCFN,cpuName);
- free(loced);
-</pre>
-<p></p>
-<p>
-This naïve mistake screwed up the memory and this should be the cause that made the debugger report different stack traces in different build modes...
-(that reminds me of the experience of screwing up the call stack, in which the backtrace was filled up by "0x0000000000000000 in ??()"...)
-</p>
-<p>
-After having fixed this, it was much easier to debug the application. Soon afterwards the first working visualization plugin for QMP on Windows
-came out.
-</p>
-<p>
-Finally I have to make more complaints about the develop environment for a cross-platform C++ application developer in Microsoft Windows.
-It's bloated, complicated and confusing. I wonder whether Microsoft is deliberately making it difficult in order to force more developers
-to migrate to C#/.Net. What a big ambition Microsoft is bearing!
-</p>
-<article>
-</article></article></div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>:
- Current status of the bug in Windows:<br>
- Release build QMidiPlayer+Release build plugin=crash at somewhere in visualization.dll.<br>
- Release build QMidiPlayer+Debug build plugin=crash at somewhere in Qt5Core.dll.<br>
- Debug build QMidiPlayer+Debug build plugin=crash instantly on launch at plugin initialization.<br>
-I have totally no idea about what to do next.
-<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-01-09.html b/blog/post/2017-01-09.html
deleted file mode 100644
index 10cc606..0000000
--- a/blog/post/2017-01-09.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"[多大图警告]终究还是改不了修电脑的命")</title>
-<meta name="description" content="«[多大图警告]终究还是改不了修电脑的命» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">[多大图警告]终究还是改不了修电脑的命</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/computer-repairing/">computer-repairing</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2016-09-24.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-01-18.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">[多大图警告]终究还是改不了修电脑的命</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-01-09<br>#computer-repairing #garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<blockquote class="twitter-tweet" data-lang="en"><p lang="zh" dir="ltr">一张贴膜引发的血案</p>— Chris Xiong (@chirs241097) <a href="https://twitter.com/chirs241097/status/817406091004739585">January 6, 2017</a></blockquote>
-<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-
-<p>
-于是又是一顿折腾。
-</p>
-<p>
-一月六日购得X1 yoga用贴膜一张。到货后决定撕除原来的防眩膜,把新到的膜直接贴在屏幕上。撕膜时过于暴力已经起开了屏幕顶端的几个卡扣。
-贴膜的时候却又发现这张新膜真的是「天衣无缝」——宽度恰好与屏幕等同,稍有偏差便无法贴合。于是无数次尝试之后终于似乎找到了正确的位置。
-后来在排气泡的时候发现有个气泡十分倔强,丝毫没有往外跑的意思。接下来就开始上手……然后就听到了清脆的一声响。
-</p>
-<p>
-「咔」
-</p>
-<p>
-起初我以为只是外面的一层玻璃断了,没什么大碍,然后我很快发现情况比这要复杂一些……
-</p>
-<p>
-——Wacom的所有东西都不能用了啊啊啊!!!
-</p>
-<p>
-然后我就慌了。。也不管什么贴膜了,先修屏幕啊。于是开始寻找附近的联想服务提供商,突然想到我这种海外购买而且还是「蓄意损坏」的大概与保修无缘……
-就开始考虑自己动手的事情了。
-</p>
-<p>
-X宝上一通乱搜之后找到几家卖对应型号屏幕的店。X1 yoga的屏幕并不分内外屏而是只有一个屏幕总成——这也就意味着在更换的时候需要带着下面并没有损坏的、
-那块2560x1440的高分屏一起换掉……这价格要上天啊!!不管了,救电脑要紧。。。没有Wacom的X1 yoga跟咸鱼X1 carbon有什么区别……于是随便找了家店谈妥之后,
-950大洋瞬间甩走了……
-</p>
-<p>
-等到货的同时就开始拆电脑。联想有一个好,几乎所有型号机器的维修指南都可以在<a href="www.lenovoservicetraining.com">这里</a>找到。
-下载了所有X1 yoga的教程之后就开始学习……然后就瞬间感觉自己成为专业的维修人士了。。
-</p>
-<p>
-拆机过程还是比较顺利的,<s>毕竟小时候拆了家里的那么多东西,</s><span style="position:relative;">虽然后来装起来而且仍然能正常工作的没有几个。<span style="position:absolute;left:0;right:0;top:45%;bottom:35%;border-top:1px solid #FFF;border-bottom:1px solid #FFF;"></span></span>
-</p>
-<p>
-装起来就有些困难了。虽然对于教学视频里面的专业人士来说都相当简单,但是对我来说还是……嗯一开始还打算把LTE模块的天线塞进屏幕壳,后来走线时似乎不小心走到了本来应该是卡扣所在的地方,
-于是就糊掉了两个卡扣,这也直接导致了后来组装起来之后屏幕关不紧而且侧面有些许漏光这些后果。不过,总算还是装起来了……而上面那个问题,也许只有502之类的东西能解决了。。。
-</p>
-<p>
-总结一下,现在所有功能都能正常使用,除了因为上述原因导致的屏幕翻折时屏幕一角会稍稍翘起以及侧面漏光之外,没有太大问题。差不多就写这么多<reduced><s>后天还要考离散数学</s></reduced>,下面是放图时间(图片排列按照时间顺序)。
-</p>
-<table style="max-width:90%;margin:auto;">
-<tbody><tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183057.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_183057.jpg"></a><br>
-刚拆下主板<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183300.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_183300.jpg"></a><br>
-取下屏幕后<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_185104.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_185104.jpg"></a><br>
-LCD面板分离<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214649.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214649.jpg"></a><br>
-感人的风扇<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214705.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214705.jpg"></a><br>
-<s>铜!!</s><br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214726.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214726.jpg"></a><br>
-照相机、麦克风以及传感器们<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_220652_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_220652_1.jpg"></a><br>
-上:i7-2670QM,下:i7-6600U。6600U迷一般的封装。<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223551.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223551.jpg"></a><br>
-这次可以把它拿出来拍了。<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223605.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223605.jpg"></a><br>
-背面应该是为1TB的型号留的空间。<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223727.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223727.jpg"></a><br>
-WLAN网卡和一只扬声器。<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224008.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224008.jpg"></a><br>
-主板背面<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224141.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224141.jpg"></a><br>
-主板正面<br>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_092341.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170109_092341.jpg"></a><br>
-<s>挖矿卡</s><br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_230933.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170109_230933.jpg"></a><br>
-<s>尸体纪念</s><br>
-</td>
-</tr>
-</tbody></table>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224932.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224932.jpg"></a></div>
-<p>
-最后奉劝大家不要像我一样暴力地使用或者对待电脑,<s>否则「世界阻止虐待电脑协会」的人会找上门来的!</s>
-</p>
-<blockquote class="twitter-tweet" data-lang="en"><p lang="zh" dir="ltr">自己动手修好了电脑然而耐久度下降了999点(所以世间最不幸的事情都无过于做一台属于我的电脑这话果然是真的啊( <a href="https://t.co/kuL5c5tXrs">pic.twitter.com/kuL5c5tXrs</a></p>— Chris Xiong (@chirs241097) <a href="https://twitter.com/chirs241097/status/818447177374572544">January 9, 2017</a></blockquote>
-<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-01-18.html b/blog/post/2017-01-18.html
deleted file mode 100644
index 5d7538e..0000000
--- a/blog/post/2017-01-18.html
+++ /dev/null
@@ -1,479 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Trash dump for the third semester")</title>
-<meta name="description" content="«Trash dump for the third semester» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Trash dump for the third semester</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">课程相关</a></li><li><a class="toctarg" href="#tocanch1">ACM相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">多校联合&amp;网络赛</a></li><li><a class="toctarg" href="#tocanch3">区域赛</a></li><li><a class="toctarg" href="#tocanch4">CCPC</a></li><li><a class="toctarg" href="#tocanch5">实验室纳新</a></li></ul></li><li><a class="toctarg" href="#tocanch6">其他乱七八糟的事情</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch7">课余时间</a></li><li><a class="toctarg" href="#tocanch8">有进度的坑</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch9">QMP</a></li><li><a class="toctarg" href="#tocanch10">SMELT</a></li><li><a class="toctarg" href="#tocanch11">chrisoft.org</a></li><li><a class="toctarg" href="#tocanch12">Compiz</a></li></ul></li><li><a class="toctarg" href="#tocanch13">无进度的坑</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch14">BLR</a></li><li><a class="toctarg" href="#tocanch15">OJ</a></li></ul></li><li><a class="toctarg" href="#tocanch16">第二类坑</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch17">绘画</a></li><li><a class="toctarg" href="#tocanch18">钢琴以及其他音乐相关</a></li></ul></li></ul></li><li><a class="toctarg" href="#tocanch19">上次就在这里的东西</a></li><li><a class="toctarg" href="#tocanch20">婊一婊辣鸡专科学校</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch21">20170201补</a></li></ul></li><li><a class="toctarg" href="#tocanch22">神秘内容</a></li><li><a class="toctarg" href="#tocanch23">「技能树」</a></li><li><a class="toctarg" href="#tocanch24">生活垃圾</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch25">造电脑</a></li><li><a class="toctarg" href="#tocanch26">修电脑</a></li></ul></li><li><a class="toctarg" href="#tocanch27">后记</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-01-09.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-02-13.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Trash dump for the third semester</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-01-09<br>#garbage #daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-从本学期开始,垃圾桶改为每学期一期。(目录消失啦,看左边吧。)
-</p>
-
-<h2 id="tocanch0" class="tvis">课程相关</h2>
-<p>
-都说文化课最重要……<a id="n1" href="#note1" class="note">[1]</a>
-</p>
-<ul>
- <li>概率论与数理统计:一开始听起来都是高中内容,后来出去比了个赛回来就啥都听不懂了……成绩混到了中间。</li>
- <li>离散数学:一个班没有两个相同答案的组合分析和得分全靠rand()的代数系统。竟然混到了前1/5。</li>
- <li>数据结构:非常幸运没被逐<a id="n2" href="#note2" class="note">[2]</a>。也许是本学期唯一一门能A+的课……</li>
- <li>计算机组成原理:大概是吃着老本混到了1/4处。讲Cache的时候出去比赛然后回来又是一脸智障……</li>
- <li>软件开发环境:考试的时候周围都在拿着手机抄的一门课……大概跟软件工程那课有一定交集。最后要求交一个C#做的工程,于是我就用1天用现成的库拼了一个C# IRC server/client...混到了前1/5。</li>
- <li>高级程序设计语言(C++):不知道是不是教这课的那货看了我的About-skills,竟然给了跟我更新得分之前一样的分数。自然我是不信我在<em>他的</em>那份试题上只能得那个分数的。对于此结果我保留使用任何手段处置的权利。</li>
-</ul>
-<p>
-考了CET6,如果能给用户评论的话肯定是差评。<s>因为用户体验竟然跟CET4几乎无任何差别。</s>
-</p>
-<p>
-最后再插一句,实验室一位学习靠前的学长的Web技术课程被给了68分,查证之后发现是分数输入反了。后面的婊一婊辣鸡专科学校部分有更多精彩内容。
-</p>
-<h2 id="tocanch1" class="tvis">ACM相关</h2>
-<p>
-这学期的比赛比较多……尽管并非作为学校的一队,我们队还是得到了不少出去比赛的机会。
-</p>
-<h3 id="tocanch2" class="tvis">多校联合&amp;网络赛</h3>
-<p>
-这些比赛当中主力队还是学长的队伍。我们队虽然被要求跟着一起打但是工作无非就是打打酱油,帮学长们快速搞定水题而已。期间也有几次靠队内力量搞定了几道银牌题但是数量自然还是太少。
-绝大多数的情况还是搞完水题就开始强怼某一个「看起来能做」的题,结果到比赛结束还怼不出来。最终靠着<s>(单切的中立)</s>学长拿到了所有区域赛的名额。嗯……一想到下回区域赛切名额的任务有很大概率要落到自己队头上就感到后背发凉。。。
-</p>
-<h3 id="tocanch3" class="tvis">区域赛</h3>
-<p>
-当时被问到要去北京/沈阳还是去青岛的时候,我个人几乎是瞬间选择了队伍数极多的青岛——因为队伍多获奖名额也多。而且青岛赛区时间和北京赛区时间冲突,北京的神校既然到了哪里都是虐场,为何不在家门口虐呢?
-事实证明他们就是不想在家门口虐场:看到参赛队伍名单之后发现几乎所有学校的一队就选择了青岛——大概是有同样的想法吧。。。
-</p>
-<p>
-到青岛之后感觉就来到了甘谷县<a id="n3" href="#note3" class="note">[3]</a>。A题水过,B题又是魔方自然就交给了我们的宇宙首领<a id="n4" href="#note4" class="note">[4]</a>,
-C是什么鬼高数题到最后我们也没搞出来,更智障的是连规律都没发现。F题看着很长其实是辣鸡模拟,我写了个乱搞水了过去,然后就是全场9个队中第二个AC的(要不是一开始静态分配内存炸了应该能抢到一血……)。
-宇宙首领很快就看出G是一道费用流,然而浮点数的流量再加上我那个智障的费用流模板导致比赛时不是T就是WA,最后ABF3题侥幸没打铁。。。值得一提的是K题这道K-d树的题有好多队排两遍序水了过去……包括我校拿银的队伍。
-</p>
-<p>
-最后的总结就是……大概是天要亡我吧。。。当然作为被这场比赛的出题人出的省选题虐过的我还是对这家伙有点怨念的:为什么要出这种一大堆浮点数结果的题啊。。。
-</p>
-<h3 id="tocanch4" class="tvis">CCPC</h3>
-<p>
-中立他们队在CCPC的分赛区中切到了决赛的名额然后决定把这个名额让给我们队。。
-</p>
-<p>
-江南的冬天真是太冷了……整个人都冻成了智障。。。
-</p>
-<p>
-总之最后宇宙首领搞出了3道比较厉害的题,我搞了两道题(没记错好像是HJ?嗯……H和J题都不是1A应该就是我搞的了)混到了铜。当时因为智障连如何搞最小环都不知道了,以及大概到现在都还没完全理解B题为什么那样正着来一次反着来一次就行……
-</p>
-<p>
-于是两场全国级的现场赛过后,自己的2016「赛季」就以全是铜牌的结果结束了。大致回忆一下,这学期似乎也就只有比赛前那段经常在Virtual Judge上做虚拟赛的时间真正在努力吧。随着学长的最后一个真正出成绩的学期结束,
-自己要出成绩的一年也正式开始了。<s>希望自己到时候不会因为切不到名额而被殴打(</s>
-</p>
-<p>
-顺带提一下cf(三亿码农的枪战梦想)。
-</p>
-<p>
-因为时间的原因,这学期只打了5场cf,大致坐稳了蓝名的rating还获得了成就「第一次掉分」。<s>收获颇丰啊。</s>
-</p>
-<p>
-寒假大概会virtual participate几场错过了的而且看起来质量不错的比赛。
-</p>
-<h3 id="tocanch5" class="tvis">实验室纳新</h3>
-<p>
-新学年开始,又到了纳新的季节……我主动背了新生赛命题的锅并确定<s>钦点</s>了题目<a id="n5" href="#note5" class="note">[5]</a>。
-最后的榜单虽然看起来相当正常但是还是有点出乎意料——可能是题目真的偏难了一点的原因。
-</p>
-<p>
-至于后来面试的事情,则与我没什么关系了。唯一要提到的大概是一位来自潍坊的女性选手,经历在某种程度上与我有些相似吧。
-当然好像她不是我这种的乱搞型选手。
-</p>
-<p>
-不得不感叹的是今年软件学院真的比计算机学院弱了好多,大部分有基础的dalao都去了远在青岛的计算机学院。而到明年的某个时刻,我所在的队也会因为同样的原因而被拆散……希望这并不能真正拆散我们。
-</p>
-<p>
-纳新结束之后竟然也有了当时学长们的那种「进final就靠你们了」的那种感觉呢。
-</p>
-<h2 id="tocanch6" class="tvis">其他乱七八糟的事情</h2>
-<h3 id="tocanch7" class="tvis">课余时间</h3>
-<p>
-这学期依旧常驻实验室。所以课余时间无非还是写代码乱搞音乐打游戏。然而最近<s>在我的带领下</s>听朝鲜神曲成了实验室的一种新的娱乐方式,而且直接导致现在实验室部分成员可以直接使用来自朝鲜歌曲空耳的词汇交流。。。
-</p>
-<p>
-总体来说,实验室的生活自然比每天呆在宿舍看剧有趣得多,还可以围观其他人搞事情<s>(比如制作烤树莓派啊什么的)</s>。第一次在实验室通宵打cf应该也是一次十分有趣的经历吧。
-</p>
-<p>
-<s>好像自己的课余时间不是在实验室乱搞就是在宿舍睡觉?</s>
-</p>
-<h3 id="tocanch8" class="tvis">有进度的坑</h3>
-<h4 id="tocanch9" class="tvis">QMP</h4>
-<p>
-本学期仅有9次commit。但对于我这种一次commit不只做一件事的人来说,这并不代表做的事情不多。可能由于修复了两个玄学的<a id="n6" href="#note6" class="note">[6]</a>bug的原因<a id="n7" href="#note7" class="note">[7]</a>,
-甚至有一种改进很大的错觉……
-</p>
-<p>
-寒假把文件格式API搞完然后上0.9吧。
-<s>一学期才从0.8.2 alpha变成0.8.3 alpha你搞个毛线啊</s>
-</p>
-<p>
-使用QtQuick的版本已经好久没有动静了。。。
-</p>
-<p>
-播放器核心代码已经快跟主窗口代码粘成一坨啦!。。。
-</p>
-<p>
-SonarQube说你的代码可靠性和安全性都是D呢!。。。
-</p>
-<h4 id="tocanch10" class="tvis">SMELT</h4>
-<p>
-最大的新闻应该就是为了修复QMP的玄学bug之一而诞生的GLFW移植版了。然而内部仍然在使用OpenGL 2.0。使用OpenGL 3.1的版本虽然开了个头但是此后就再也没有动过了……
-</p>
-<p>
-<s>到头来还不过是一个只有我自己会用的引擎</s>
-</p>
-<h4 id="tocanch11" class="tvis">chrisoft.org</h4>
-<p>
-简单实现了一下留言,搞了个简单的使用cf API的cf rating比较器,改了改online music player,允许使用异或加密来加密博客内容。大概没什么别的了。
-</p>
-<p>
-昨天刚被61小姐黑了我那「html5+表格布局,全球首创」的主页。该抽出点时间稍微改改了……<a id="n8" href="#note8" class="note">[8]</a>
-</p>
-<h4 id="tocanch12" class="tvis">Compiz</h4>
-<p>
-本来打算在dev blog里单独写一篇关于这个的文章……然而又感觉没什么好写的于是丢到垃圾桶里来了。
-</p>
-<p>
-Compiz是Ubuntu Unity桌面环境的默认窗口管理器。作为我使用的第一个日常使用的发行版,当时还是基本没什么经验。于是整日瞎搞,
-后来就有了这两篇(<a href="//filestorage.chrisoft.org/blog/img/ubuntucompiz.png">1</a>, <a href="//filestorage.chrisoft.org/blog/img/ubuntucompiz1.png">2</a>)QQ空间日志……
-<a id="n9" href="#note9" class="note">[9]</a>
-</p>
-<p>
-大概是出于自己有一部分「源码级用户」属性的原因,Compiz将使用的OpenGL版本迁移到新版后,我就一直在寻找一种把compiz原来的插件带回到系统中来的方法。
-因为当时甚至不知道OpenGL各个版本之间有什么不同,最后我选择了直接fork掉了最后一个使用旧版OpenGL API的版本——于是就有了Compiz 0.9.7.99。
-大致做的一些工作就是将旧的"unsupported"分类里面和一部分只存在于Compiz的git repo而从未进过包的插件移植到了0.9.7的API下并整合了进来。
-稍稍优化了一下内部的OpenGL调用,将几个后来版本的新功能移植了回来。同时还自己增加了几个自用的功能,比如自定义expo插件的显示布局,
-以及一种新的窗口切换高亮方式等等。嗯……其实也没做太多工作。
-</p>
-<p>
-Compiz大概是我使用OpenGL的开端——尽管我所fork的Compiz版本中使用了大量过时的OpenGL API并且直接或者间接导致我后来写的一些OpenGL代码都有一股「Compiz味」,
-但是也为我后来学习新版OpenGL打下了基础。
-</p>
-<p>
-这里再写一下Compiz的现状。自gtk3和qt5、以及两大DE,GNOME和KDE全面开始支持wayland以来,Compiz的开发就没有再像之前一样受到重视了。
-Canonical自己雇来的、专门维护Compiz的Sam Spilsbury也离开了Canonical并且曾经声明不会再继续开发Compiz。<a id="n10" href="#note10" class="note">[10]</a>
-此后compiz的repo一直是处于一年没几次commit的半死不活状态。然而去年中旬,Sam Spilsbury回来了,并且接连搞了好几个大新闻(blur以及animationsplus被移植到了新OpenGL API上)。
-于是我也稍微起了兴致,准备试图寻找开发者合并我的expo插件自定义布局的功能(因为想着如果加入这个功能我就可以直接使用aur中的compiz包了)。然而可能是因为姿势有误,
-这个提议因为长时间无人理会,已经从问题列表中消失了。后来我试图在Arch Linux上编译最新的compiz源代码,发现blur插件并不能正常工作——模糊方式一旦选择高斯模糊compiz就会立刻崩溃。
-这无疑相当于给我浇了一盆冷水。而我自己的fork最近也只是尽力让它仍然能够编译而已,并且那个版本与KDE还出现了某些程度的不相容。再看到lp:compiz中依然半死不活的repo……sigh。
-</p>
-<p>
-顺便一提,为了解决compiz和kde的不相容,今天上午我迁移到了kwin。然而在此之前我都是在KDE中使用compiz的。希望有一天我还能用上compiz。
-</p>
-<h3 id="tocanch13" class="tvis">无进度的坑</h3>
-<h4 id="tocanch14" class="tvis">BLR</h4>
-<p>
-<s>这鸽子已经死了大伙散了吧</s>
-</p>
-<p>
-<s>不不不,大概还有一口气……</s>
-</p>
-<p>
-总体来说感觉自己当时的设想有点过大了……还要搞什么插件系统、js关卡文件的。写了QMP的插件系统我才真正搞有了动态库的经验……
-</p>
-<p>
-<s>类似汇编的关卡文件大概可以去死了</s>
-</p>
-<h4 id="tocanch15" class="tvis">OJ</h4>
-<p>
-和某不断开OJ坑但是鸽掉的dalao不同,我是根本还没有开坑。不过架构倒是确定了一点。当时写完cf rating比较器就感觉「哇前后端分离真是太好了」。
-于是就决定用C++(cgi)写后端,用户端js负责生成页面了……
-</p>
-<p>
-然后还大致决定通过在UML(User Mode Linux,不是Universal Modeling Language...)内运行评测程序的方法来实行隔离。
-</p>
-<p>
-<s>最后的决定是:接着鸽下去吧</s>
-</p>
-<h3 id="tocanch16" class="tvis">第二类坑</h3>
-<h4 id="tocanch17" class="tvis">绘画</h4>
-<p>
-曾经一直说自己不会画画<s>(不对啊不是本来就不会吗)</s>,但是却买了一台带数位屏的笔记本。于是一直在试图寻找它的用武之地。半年来一直没什么发现,
-直到我看到了<a href="http://www.spi-inc.org/projects/osunix/">这个页面</a>……
-</p>
-<p>
-这是啥?OSUNIX?<s>跟osu!有什么关系?</s>banner怎么能这么萌?怎么看都不像操作系统的banner啊……
-</p>
-<p>
-这张图大概是为数不多的我刚看到就有描一张的冲动的图之一吧。后来想找全图当头像,然而发现OSUNIX这个项目其实已经消失好久了,仿佛在互联网上已经几乎完全消失了一般。
-在web.archive.org上能找到的为数不多的相关信息中的图也全都挂了,能找到的唯一一张相关图片是一个16px的favicon……于是我就有了把这张图补全的计划。
-</p>
-<p>
-画了大约一天时间照着原图描完之后,大概就开始补了。因为之前从未有自行绘制任务的经验,所以最后很多部分都是靠别人的意见和自己枚举确定的。。。
-于是有了<a href="/data/osunix-logo_sq_thicken.png">这张图</a>。
-</p>
-<p>
-后来把这张图丢到了我所在的群里,得到的反馈有点出乎意料——竟然有一群人要我开始上色,还莫名带起了一波群内改名片的节奏<a id="n11" href="#note11" class="note">[11]</a>。
-在我声明完整的线稿完成之前不会上色之后,有两位dalao等不及了(<s>控制不住自己的触手</s>)<a id="n12" href="#note12" class="note">[12]</a>。
-至于后来发生的事情,就是我的笔记本碎屏了……
-</p>
-<p>
-现在笔记本屏修好了但是画下去的兴致也消了一半。当时刚乱涂完脑袋之后兴致勃勃地带着图发了一条推:「不会只是懒得学习的借口」。这话是没错,但是现在你就真的已经会了吗?
-</p>
-<p>
-<s>🍍曾经说等我完成就开始画自己的设定图,我要尽早让他实现这个愿望。</s>
-</p>
-<h4 id="tocanch18" class="tvis">钢琴以及其他音乐相关</h4>
-<p>
-大概搞出了th06~08的bgm remix。说是remix其实大概只是让原版OST有一种近几作OST的风味而已了。然后还搞出了th07 remix版bgm包。th08的remix版bgm包最近也可能着手搞一搞。
-</p>
-<p>
-自己的作品则因为在学校没有合适的输入设备还依旧鸽着……
-</p>
-<p>
-学期末的时候突然对ragtime中毒了起来。后来打印了The Entertainer和Maple Leaf Rag的谱子准备寒假回家拾一下放下很久的钢琴……
-(不过The Entertainer我之前是练过的呢……)
-</p>
-<p>
-暂时没有再学一种乐器的想法。
-</p>
-<h2 id="tocanch19" class="tvis">上次就在这里的东西</h2>
-<p>
-那个东西指的是「神秘组织」BKT。
-</p>
-<encrypted hint="和上次密码一样" hash="5ce53fdbcc6a1f7b63d9e104e9073ae213daac41ea86f4ec4462584322c51afe" encont="wxRvK+JFVpn1d9VmR2aNEX+1KwahSIhD/fbRMyY94My/DABlyIAL68ID53qw9l+xwsI5fMSYktv0P7hmnl3kmm3yutCHGz2GpGnlE5BKggn6h2Vy8IPVndTjtIz71cQMXu8Su3dXxRORARFpOFh3wGxKdO+HT3eCSpPB8XtuVMfJWlKatuD1Qq8RbGYP3lwolETv66i1SFXoHtgnceq2nWig7PAt2HacrBuzCIq2y3r0CprhZP00/0pchStWzArmvRwUSaGiLi+hvXp4fdJWLWq5mUA9TNpf5FpiHaxrlIndoIaV/e0J3t9UuyzAXaLBu+uOgSfx/foc+pnI7VA4HAgIKvd5hMW3O/Is/BFsiyhB6gtmqrpMFawTiK+1PmnAGdOKpdYb3zmIuHv0/D/nU36A1B/+pd6LpIYd6Fin5tt3cQbvQlh1Q45n+R2x6GmdMvE4+eW25w6m30aRRfb0FMsAeYgvtduQ6aqq3y4PaeWp3Nsg65asrOMR476U53Y6MNdzuYNkKluaHUsQxjZQ4zeMHAmQvt4AZROBxLO0Tx5CLO4r9UwvGS5ifJRxEfg4YZqFjttJrxGJdCDVVxg+jXMbvoqHbzwM4xXpmGuzRj1KKvw0DEGBJa0CK5/rk+hVEq2GFmkT23j3myVuboTEqsirsfF/GJ+5iGZEJ/Cf4MNEcd68LJMY6Fd/42ux/W8XGe85g/F/59Hj1sLi2TuDQzUHUqtMb6QpwxKXVByMTRcYLsm9w29louBpPyZzVsS+4Jb4utGEruilTs+ddQACzOBgxYh5VgW8/+puOzpb8FQ0TVJBx9JvQ2Lnvb2fkzmJd+JQQysC6q7Qo/aU6YYKDdmQUq35uxPyHQfAqN0K+R9PIjdwg9fdHnmskdjPHuWjCG7Gz2BUoDFgpPXu1po+WcPIiTeLTpvSAxr+P/xhCuJ91jh+T5sxSe0KV6Bk9ruM8INaGHgNpaUEoigTk5ZKtgtgH+8WUeXJXyRcSXKX2WRhKDqgnfBjaS9CClKbAjhRjc2hmsstp+L1fzyy4WuEWMDb8Ltgf6zKIg3dZDLmil0ar6McIXsZPPPUbNCLFEqsD4EZexWx4hv031wQqN0lmfGw8XI9v8FymGpqyH6SkK3b4HCkFoca+peKbKJnFcqvXib6O+WIW1QJolOASnOJ3jyKLNnOoquewNs/u/Fyh35ZChBrwOJbQeDbxPEzbtS1uWPOeSqhniSxV+cULdavaiEIl1RO5q/xjgYNchn0pmYcCVVJTeNVKaDx6FYCxUo3pP+itSSQTCnJs+YWWB5KnwoRJWcq+cgD10TnSH/e+d44qVdqqCyng6UIeHtQhR95poo8o+9wgS4PVsMEDeIbjNrPw4RLOGGtW3SZN7tnxsK06vfK+6Rtc9DbpfPMqzRg2dzFbC+IRb+Tzi0xq3SXTKYpdyfTYcea2v4DQXORRgM1D3yKYWh+TfvaL5EuZwxYHLSufyVYsK9FWXVjOt/1DHb5iVRK0aubf6d3rWZ1ZCXO8AkMqFVaytnEg+gRychGriU4KBr7gS1eK8bHR4qUkciYff3dhmqrFkmpIJZt3KdRUnHi7B0njNtvk8aPcBWTABfMBAUEkfkx9WfE8WNMhxo+Bi22oU/1UGCYYS0didAuLOcL/pK5UGnRdpgi3b5obnjn/KO/hSVqTNsEHW0upTwI4cYF8V9j9USBQY5RWd6sG+DGPzK+Qz4IslM/PtrWu9PIHazoLUhHDgX0AX/J8Y8BTHzk+LDKwj3//3VNl4fytsPDnK/0SborL0v07grXtSKsZIUFGctfkDKV0BCIeCDBS6jxHLvl7RbHuj6sr/2tdHLcSdzn3DG0eXcJI96xLJjwXyzSHvuakKsGRO2yITYzUbzQIqxHa9zW1OoJxKM10NHn1ciOD1P8WNKIk0OfUIGjLCWUo6OBP/7q9oS0ocaJ0WXnMdnTYJazbacXFrot/23fh6xWovDb/c4bi+Tlmz6cZewT8IUlRkT3VX8jGz8YKiH5dSEtu51as8CJY3q2c+biu0rypPd6uxw+QjO3LVxAzhPA2py2FFD2RkBJSVVtsrnALab7aRdJdwAPox7470TQfnWh0u68MvwhwypLUQQxPN+5f3qD/gbuj5Ht+/c9W3TfYEvpqj5W1bOYRlmID/SlY2VC8Gfl3b0xpuVamiAoQm3LGh0aJ5g7kL6+CxrmC1x7iuykYkx0VjllTUVdy/QckhttcB6NbcuMSwEQ6VcUlgOWkKNLw6jvYns9H1u91e/8tqNS7Xz/YwMG18X8cIFju4vuPDauttzapvKxKw9ydWejujaVooXmoRAil8oVvubj7QgZVF+VCA7R8lpOzjbHrgqQeVZFDjamtvv7SkBwF6yX5jJOgsrFWhSKaKV3B2VN6R/OQqR7yJe6KRiJKfJUffhqmpG4t6xWviNLq85hR/H8WkfIUK2/adHm2Lr9HVSg9GgKNoEgKmFH9DpFoXKWW52hnRdrlyYYcMo5rS46+V3lflHu0VTj1O666PnfME2jCUzuaJe50tyQj3NY1WR7sXp5ezmpdNrpXVre7fi5A4n50H8ym9t7MSJCyu0vv3LhJF5PsHdqD/Ks7dtj0pAS0gRAF825E0vicwMDH1YFj3INwzNYl5ISNaWL3MvQozy0fUoo6OiL96PP0tUTk01mut39ZJNeu+87jbJSi7N7dZydQDVPekolruwsjJhi8Gy4UD18w52jZ1DJwKoNlU3bnPHLddw1F08NITqUbUeh17xpjc5nQJCKHRDuTavrjhsRIJvlBylaKYEM5sn/pbIpM0A019IbruaqMeadQBRO1b+xKhnrPAR6B2ZAIaD9ukyYNCbm99UZBjaTNLsPYOTNXFGF0KWgDxLgI6Zu/LkHthVBnHXvRqNM1iINyNuqlbHXrdaondYIOUc980TleXe/TThNzYPsRVqF2EMBF6o0lVBS6en3cET+ldsNQMKDhsaajiAbCcW17zcdlG8e7ZmIM9hqUzKSk1Hlb+X1J3Tw4F3cnIFw8H+OKG4cGEVLdizNeTngdpijS88D4phA7nnNoz85c/5OPTpl7lpZAekVOxyGFmuMdBIWg0lzseZdq2ZHLazVExpwJSNtX0r1iA8rfNjmQP5Vb294D6MbCF0nwJHeviNeI1TJ3I0H6gwSKsU+/s7RJtEy9WbkHhHdKhHuWN1HgthHWZHp3aNxpWlVfk1m3HPl6pXIMfVkC2mPBisbslrKVgHhxAA4HGF6XPky+pW5CdyB8UqvpjkJOEPz07SYLeMPKC5Y0kWUXIhq/iag+feo0pDBmDlDVMZYgXpMGae74PpZwo44Ly5x6T06haFdRQmvxPfK7jgsAQdD6l8ovrZtw9IOQn50q0YwnPbRo67x3Mf3o6GXFwqIzf5qbzNnF7Ix9xV7MgN0DKkkWJLEK4llNSjS3BjpOPoTE7OMGto22yWzKV0lBzFr1DjpbPF8FZp0pjVjgcBmWnZBhLOeGHF+IXtQzYAejKDWbj+V7KhnO4gZtb0Or+T6QHTgg3szbvrr7o+IUbS1pByeh5+AXLTcPfDL9LXcndRDQ9n045bH0V29Rl18jbfBNIUxMgdoEh9uKVCAalxTRm7t08bCnuXTfc+kPaY0LMp2gihw8tFrSIIFz13lM/R/hehU5WHlQh+qUPKWKNU+rTklMTkogCkdz03tj+odytqKiPYffyzgwpVF9s5uXeHRtZq54cJI6o8=" enid="0">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(0)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<h2 id="tocanch20" class="tvis">婊一婊辣鸡专科学校</h2>
-<p>
-对于大部分大学生来说,一般不会允许外界人随意抹黑自己的学校的……然而当你看到以下这段话的时候,也许就明白我为什么要写这一段了。
-</p>
-<p style="margin-left:4em;margin-right:4em;border:1px white solid;">
-山大一到教育厅,所有招生的人便都看着他笑,有的叫道:“山大,你明年又要多省断档了!”他不回答,对柜里说:“温两碗酒,要一碟茴香豆。”
-便排出一叠学费。他们又高声嚷道:“你一定又偷了人家的东西了!”山大睁大眼睛说:“你怎么这样凭空污人清白……”“什么清白?
-我前天亲眼看见你收了孩子的钱,没办好事,吊着打。”山大已便涨红了脸,额上青筋条条绽出,争辩道:“收钱不能算偷……收学费!
-……读书人的事,能算偷么?”接连便是难懂的话,什么“学费座谈会”,什么“软件园博科培训机构”之类,引得众人都哄笑起来。
-</p>
-<p>
-所以这里就着重婊一下辣鸡专科学校出租校内资源给社会组织的行为。
-</p>
-<p>
-我入学的第一个学期,上面段子中的「软件园博科培训机构」风波刚刚平息。进入ACM实验室不久,我就开始好奇我们实验室楼上几层是什么实验室。
-后来根据很长时间的观察,发现2楼门牌是「IBM实验室」的房间从未开过门。后来一问学长,得到的是一个无比简短的回答:「租出去了」。在我试图追问之前,
-他先反问了一句「卧槽,你竟然不知道?三区上面几层楼好几个房间里面都不是我们学校的人啊」。这是我对辣鸡专科学校「出租校区换钱」的最初认识。
-</p>
-<p>
-好几个月过去,这件事也逐渐被淡忘了。直到一天早上,我像往常一样在实验室里面做我自己的事情,突然闯进来一群人——学长说除了管教学楼钥匙的一人之外他们都不认识,
-开始在我们实验室中四处拍照——好似买房人看新房一般。然后这群人就说着笑着出去了。
-</p>
-<p>
-晚上,传来了我们实验室被在全校范围内通报批评的消息。于是我们恍然大悟——怪不得不认识呢啊,原来是校级领导啊。但是让人感觉很奇怪的是与我们相邻的有些实验室,
-情况比我们实验室还要糟糕,却没有被通报。这让我们实验室成员不禁有了「实验室要被压榨」的感觉……大致是这样的:(选自聊天记录,为帮助读者理解上下文稍有改动)
-</p>
-<div style="margin-left:4em;margin-right:4em;border:1px white solid;">
-<p>
-——哈哈哈 当时博科那事情是一个老师和某导员串通外面的什么机构搞的
-</p>
-<p>
-——后来算是被压住了
-</p>
-<p>
-——然而现在学校里带人来搞事情
-</p>
-<p>
-——很强
-</p>
-<p>
-——后台挺硬
-</p>
-<p>
-——看我们占着教学楼主门对着的大房间不爽了吧
-</p>
-<p>
-——「这种黄金地段怎么能让你们这种不赚钱的辣鸡实验室占着」
-</p>
-<p>
-——反正我们现在知道的情况是 我们实验室所在的教学楼三区的4-6层 很多房间里面都不是我们学校内部的人
-</p>
-<p>
-——终于要对其他楼层下手了呢
-</p>
-</div>
-<p>
-后来的事情大概是,在实验室负责人也就是计算机学院2015级的辅导员的求情下,并作出了一系列「保证」之后,我们实验室苟活了下来。
-当然,可以预料到的是这一系列保证让我们这个本身就几乎没有任何经费的实验室的生存空间更小了一些。
-</p>
-<p>
-虽然不是很清楚学校为什么会这么做,但是我不得不说,依我的角度看,把一个租来的校区里的房间租出去赚钱是一种很蠢的行为。
-另外学校怎么会缺钱呢?<s>软件学院学生的学费都交到哪里去了?</s>
-</p>
-<p>
-当然,辣鸡专科学校一向不缺槽点。还有「翻脸不认人」的老师以及「瞎几把给分」之类的事情,这里由于各种原因就不再多写了。
-</p>
-<h3 id="tocanch21" class="tvis">20170201补</h3>
-<p>
-昨日听闻<a href="//filestorage.chrisoft.org/blog/img/ljzkxx.png">一事</a>
-(<a href="https://mp.weixin.qq.com/s?__biz=MjM5NzMxOTQ1Ng==&amp;mid=2649504416&amp;idx=1&amp;sn=d7e8cb3d8d85ec14b8539f0532ac11e3&amp;chksm=bec35cef89b4d5f98ca7e48f75ce833c1f4b000e0c9b09a9ef71efd9202952f84a6fee473414&amp;scene=21#wechat_redirect">原文链接</a>),
-深感辣鸡专科学校大去之势不远矣。呜乎哀哉!
-</p>
-<p>
-这大概是入学以来我第一次后悔来到这里。
-</p>
-<h2 id="tocanch22" class="tvis">神秘内容</h2>
-<encrypted hint="b******phi" hash="5be136371f1b6925c4ac672a7f31c9c327a3bededdc935d785c7004478053a47" encont="X2LfQVVOwrIk0N8tzSzj3tz5+HFF0n/Z/kdDllYhJpcK9MeOE3/X0EqOkbsRhIWPI4FM8dsp49eU6Gxh4iZoTAnXh89ziCVpBj/fC9Ip+BgEWNpKIZRH2ZUS7JyroKe7rjLF6ylB3R/WiONI4erdlxlw7hli15jd4hFmGhLm5xs9ql7a16MXzAiRKYlMNi/ecCoI/k6c6/zont2igKo4VNwhwIvQCwq7E+W1P72vy+RS1YyAQRlwcdj3qw0huEv2i/v2pZD0cf2F9+hvCBobcmH+0N9bDZDANedgy0NIlcW3GVIOFCWRqiJZePPscycl/AlsuXLerTez49xEfPxCysOwY+4FDFPNiSraS48pzAro140fD3wyDXlb/ZeXdMZ8uNm3O/+0iJAE6VhrrXxGlztPFSznYgeLgbilQiVjWp0wy9c98VVcmqCEUMlTBnCElh83P0IMcJY1tv3ATgA7iglEC+WE1Ce3HQiBERWriyOc9P+615wHfOeJiGWpSu3jqMAalv3X1QCT9ke9yVWf+OOJ8bSCecrjpqzACr9v5LETRfxyDKEh3+uhnH1/UdVbBiJl0Jj+c8RPf8ll7z6tkAB0su2ZMbmdYTmq9u0rgAnuIHvstNICDaV31ZEr3jlm3xyHCi6Ixuf3C376vnkapZaUe7rMk06SCpk4+K6WR8fipdfSrSdVRTWM3ZJG0dJhg8Y17EQYq1Af+qp7MDLpnYyv+xpARCxGQ2Xa4NRHg3b3m0HhWds/w1Ge1NiNUGT/1Te9VyQnELvdimA4jLlbFehnTyz9BUQYB5WmPh/QJ9n54sXx7h4Jkh277R9rhpc9OPbb7tuXSO5FlGDYhS8hlB4YlF/kfEVBngjy3T9Q5eIcmYNvq+7EdxjTiq6LDwu5qF2TbrZ88vp813p2KBxP" enid="1">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(1)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<h2 id="tocanch23" class="tvis">「技能树」</h2>
-<p>
-到了大二才发现自己的技能树既不深又不广,还有救吗?
-</p>
-<ul>
-<li>node.js是什么?节点 点 鸡丝?<s>后端居然能用C/C++以外的语言写?</s>
-<a id="n13" href="#note13" class="note">[13]</a></li>
-<li>shift-and竟然是字符串匹配算法?</li>
-<li>用个vim还要看小抄?</li>
-<li>OpenGL|ES版的SMELT写过了?<s>不对好像连OpenGL|ES版的三角都还没画</s></li>
-<li>Maple Leaf Rag弹哪里去了?</li>
-<li>说好的学法语呢?</li>
-<li><s>Linux竟然能跑在硬盘主控上?</s></li>
-<li>……</li>
-</ul>
-<p>
-所以最后得出的结论还是:
-</p>
-<p>人比人,气死人。</p>
-<h2 id="tocanch24" class="tvis">生活垃圾</h2>
-<h3 id="tocanch25" class="tvis">造电脑</h3>
-<p>
-没错我造了台配置奇葩的电脑,而且很可能就是现在提供你所阅读的页面的那一台。
-<a id="n14" href="#note14" class="note">[14]</a>
-</p>
-<p>
-如果你发现了我的主页上About部分的隐藏内容,应该已经知道这台机器的配置了。
-<s>好像一不小心泄露了什么秘密?</s>考虑到还有人没有发现,在此重新列一遍。
-</p>
-<ul>
-<li>CPU: Intel Core i7-2960XM</li>
-<li>RAM: 16GB (2x 8GB) DDR3L-1600 Samsung RAM</li>
-<li>Motherboard: Supermicro X9SCV-QV4</li>
-<li>Graphics card: NVIDIA GTX960 by ZOTAC</li>
-<li>Display: 1280x720@10.1in with 10 point multitouch</li>
-<li>/dev/sda: Crucial M4-CT256M4SSD2 (256GiB)</li>
-<li>/dev/sdb: HGST HTS721010A9E630 (1TiB)</li>
-<li>/dev/sdc: Hitachi HTS725032A9A364 (320GiB)</li>
-<li>OS: Debian GNU/Linux sid (unstable) amd64</li>
-<li>PSU: Cooler Master 500W ATX</li>
-</ul>
-<p>
-当然你要问我为什么造了这么一台配置不平衡的电脑,我也不好回答。主要是……为了重复利用已有的零件吧。
-总体来说,只有主板和显卡是新组件。显卡是为了玩CUDA买的。大概就是这样。
-</p>
-<p>
-主板是基于QM67平台,给1U服务器用的。然而很显然插上显卡之后是没有1U机箱可以塞下这个奇形怪状的东西的。
-于是……它就常年裸露着板卡工作。(图可以在一篇相对较新的文章「ls /dev」中看到)
-</p>
-<p>
-因为装的是Debian sid所以一般每个月会滚一次系统顺便做些小维护然后重启一次。所以作为一台服务器,
-它的uptime并不算长。最长的记录也就45d左右。
-</p>
-<h3 id="tocanch26" class="tvis">修电脑</h3>
-<p>
-另一篇文章「终究还是改不了修电脑的命」已经描述了整个事件的大致经过。这里要说的是后续。
-</p>
-<p>
-后续还是比较惨的。因为x宝的屏幕装上之后,发现对触摸不灵敏而且笔会在悬停高度相对较高时跑到某个固定的线上。
-所以决定去找客服。然后就发现联保服务(对于国外购置的机型)需要提供税单。然后一查价格,2k1。
-</p>
-<p>
-这下好!当时偷掉的税差不多都回来了……
-</p>
-<p>
-然而修完之后,原来的问题依然存在(虽然变得十分轻微)。
-</p>
-<p>
-大概是一辈子也不敢再撕防眩膜了。
-</p>
-<h2 id="tocanch27" class="tvis">后记</h2>
-<p>
-这次的垃圾桶从1月9日开坑到6月10日最终完成总共用了……5月零1天!<s>比起上次来讲真是不小的进步呢!</s>
-</p>
-<p>
-然后就发现又快要开新的垃圾桶了。那我们下篇垃圾桶再见(
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <s>所以这就是你把这条放在第一位然后上课天天玩手机的理由?</s><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 实验室学长曾经半开玩笑地说谁数据结构低于90就立刻逐出实验室。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: https://youtu.be/ecVZLfeaPj0?t=103<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: https://youtu.be/Gbo6AEH9GmI?t=22<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 虽然中间进行了类似投票选题的环节但是因为大家命题热情并不高所以不得不硬点。题目与结果等位于<a href="https://chrisoft.org/labselectionround/">https://chrisoft.org/labselectionround/</a>。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: <s>曾经有人认为只有女装debug才能修好的</s><br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: <a href="https://chrisoft.org/blog/dblogreader.php?p=2016-09-24">这篇文章</a>里有更多关于它们的信息。<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 已于1月20日完成。<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 嗯,我的QQ空间已经被关闭,所以不需要亲自去看了。另外这两篇文章均为直接存档。写作时其中包含一些错误,未予纠正。<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: https://answers.launchpad.net/compiz/+question/235670<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 虽然不知道他们到底是为了刻意刁难我还是……<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: <a href="https://twitter.com/BLumiaW/status/806914034289119233">dalao 1</a>和<a href="https://twitter.com/oioga/status/807871221345886209">dalao 2</a><br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: 嗯……我的网站上曾经有一个bash写的后端脚本<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 截至2017上半年<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-02-13.html b/blog/post/2017-02-13.html
deleted file mode 100644
index 8961059..0000000
--- a/blog/post/2017-02-13.html
+++ /dev/null
@@ -1,618 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"[多大图警告]ls /dev")</title>
-<meta name="description" content="«[多大图警告]ls /dev» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">[多大图警告]ls /dev</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Overview</a></li><li><a class="toctarg" href="#tocanch1">Actively used devices</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">/dev/computer/srv0 -&gt; ../comp7</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch3">Gallery</a></li></ul></li><li><a class="toctarg" href="#tocanch4">/dev/computer/tio0 -&gt; ../comp6</a></li><li><a class="toctarg" href="#tocanch5">/dev/mobi/mob0 -&gt; ../mobi7</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch6">UPD 2017-03-12</a></li></ul></li><li><a class="toctarg" href="#tocanch7">/dev/mobi/mob0 -&gt; ../mobi8</a></li><li><a class="toctarg" href="#tocanch8">/dev/mobi/ipod0 -&gt; ../ipod0</a></li><li><a class="toctarg" href="#tocanch9">/dev/arm/rpi0 -&gt; ../rpi0</a></li><li><a class="toctarg" href="#tocanch10">/dev/printer/lp0 -&gt; ../lp0</a></li><li><a class="toctarg" href="#tocanch11">/dev/input/kb0 -&gt; ../uhid0</a></li></ul></li><li><a class="toctarg" href="#tocanch12">Deprecated/Inactive devices</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch13">/dev/comp0../dev/comp4</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch14">/dev/comp0</a></li><li><a class="toctarg" href="#tocanch15">/dev/comp1</a></li><li><a class="toctarg" href="#tocanch16">/dev/comp2</a></li><li><a class="toctarg" href="#tocanch17">/dev/comp3</a></li><li><a class="toctarg" href="#tocanch18">/dev/comp4</a></li><li><a class="toctarg" href="#tocanch19">/dev/comp5</a></li></ul></li><li><a class="toctarg" href="#tocanch20">/dev/mobi0../dev/mobi6</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch21">/dev/mobi0</a></li><li><a class="toctarg" href="#tocanch22">/dev/mobi1</a></li><li><a class="toctarg" href="#tocanch23">/dev/mobi2</a></li><li><a class="toctarg" href="#tocanch24">/dev/mobi3</a></li><li><a class="toctarg" href="#tocanch25">/dev/mobi4</a></li><li><a class="toctarg" href="#tocanch26">/dev/mobi5</a></li><li><a class="toctarg" href="#tocanch27">/dev/mobi6</a></li></ul></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-01-18.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-04-11.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">[多大图警告]ls /dev</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-02-13<br>#device-review</div>
- <hr><div id="article" class="TText">
-<p>
-有人跟我说:「对你来说你的电脑就像你的老婆一样!」。当然我是不肯承认这句话的了。
-</p>
-<p>
-但是每次提到自己的那些绝大多数都相当寒酸设备还是会像如数家珍一般……
-</p>
-<p>
-于是就有了这篇用来「数家珍」的文章。
-</p>
-<h2 id="tocanch0" class="tvis">Overview</h2>
-<p>
-因为没有专门拍合照,所以临时找了张不知道什么时候随便拍的「工作状态」的桌面做概览。
-</p>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20161026162018.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20161026162018.jpg"></a></div>
-<p>
-图中可见我的最常用的几样设备(如果算上拍照的时候拿在手里的小米MAX的话):
-</p>
-<ul>
-<li>/dev/comp6</li>
-<li>/dev/comp7</li>
-<li>/dev/rpi0</li>
-</ul>
-<p>
-……以及我的平时超乱的机位……
-</p>
-<h2 id="tocanch1" class="tvis">Actively used devices</h2>
-<h3 id="tocanch2" class="tvis">/dev/computer/srv0 -&gt; ../comp7</h3>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174538_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170120_174538_1.jpg"></a>
-<br><reduced>寒假最后一次离开实验室之前所摄</reduced></div>
-<p>
-嗯……这是台很有来头的组装机。它大概继承了/dev/comp4的几乎全部血统……
-</p>
-<ul>
-<li>CPU: Intel Core i7-2960XM</li>
-<li>RAM: 16GB (2x 8GB) DDR3L-1600 Samsung RAM</li>
-<li>Motherboard: Supermicro X9SCV-QV4</li>
-<li>Graphics card: NVIDIA GTX960 by ZOTAC</li>
-<li>Display: 1280x720@10.1in with 10 point multitouch</li>
-<li>/dev/sda: Crucial M4-CT256M4SSD2 (256GiB)</li>
-<li>/dev/sdb: HGST HTS721010A9E630 (1TiB)</li>
-<li>/dev/sdc: Hitachi HTS725032A9A364 (320GiB)</li>
-<li>OS: Debian GNU/Linux sid (unstable) amd64</li>
-<li>PSU: Cooler Master 500W ATX</li>
-</ul>
-<p>
-该机於2016-08-17初步组装完成,2016-08-21加装独立显卡后定型。走线混乱不堪,板卡全部裸露在外,<s>大概是实验室最大的安全隐患</s>。
-</p>
-<p>
-此机器作为我的<s>宏伟的</s>「(伪)c/s结构」
-<a id="n1" href="#note1" class="note">[1]</a>
-的一部分,乃是计划之初提供计算力的一台机器。结果等到美梦成真、计划开始执行之日,
-这台机器却变成了www服务器+ssh服务器+文件服务器+备用机+……剩余算力出租。
-现在上面跑着chrisoft.org的www服务器;ssh服务对内部开放,同时通过ssh进行文件共享。两台VirtualBox虚拟机常年跑着
-(BLOJserver, jxserver)当作「出租」<a id="n2" href="#note2" class="note">[2]</a>的剩余算力。不时在上面做一些编译软件包之类的事情。
-又因为显卡的原因,有时在上面跑waifu2x服务器,玩玩torch(CUDA啥都不会),渲染(网上下载的或者自己乱搞的、根本不能看的)blender文件,
-或者<s>颓废</s><a id="n3" href="#note3" class="note">[3]</a>。
-</p>
-<p>
-当然这台机器的配置也是相当奇葩的了——移动平台的CPU配了块中级桌面显卡,还有那块500W的电源……
-</p>
-<p>
-虽然在2017年,i7-2960XM这颗5年多前发布的CPU并没有出众的性能——其在某些跑分上甚至被skylake的最初级四核i7(i7-6700HQ)随意碾压,
-但是这也确实是我用过的最快的一颗CPU了。再加上没有了外壳的束缚,散热得以改善,这颗CPU在Timed Linux Kernel Compilation v4.3测试中跑到了134.506s的结果。
-这个结果甚至接近了被Intel列做「高端桌面处理器」的i7-3820的134.27s。嗯……虽然一个linux内核编译时长并不能说明其在所有应用场景下的性能表现...
-</p>
-<p>
-这台机器还有一个「致命」的缺陷——没有USB3.0接口。这只能责怪Cougar Point这个最后一代全USB 2.0的PCH了。唯一的PCIe接口又被用于显卡。
-但是,它还有一个空闲的SATA 3.0和两个空闲的SATA 2.0。<s>所以还需要什么USB 3.0呢</s>
-</p><p>
-即便如此,它也曾经是一台万能的机器。它可以通过wine近乎完美地运行SONAR Producer X2并使用所有我常用的VST/DirectX插件(所以它也曾是我的数字音乐工作站)、
-可以双开虚拟机不影响日常工作、可以开着Ultra级别的shader在60fps下运行Minecraft(当然。。分辨率只有1280x720)。
-然而最后还是因为屏幕太小外加懒得在两个设备之间切换彻底沦为了服务器+备用机。
-</p>
-<p>
-<s>最近发现在某些单线程应用场景下,发现i7-6600U的性能超过了这台机器的i7-2960XM。</s>
-</p>
-<p>
-Wait... i7-2960<i>XM</i>, paired with a GTX960 on a desktop machine??? Are you kidding?
-</p>
-<p>
-Well, the cause of the strange collocation is actually the shortage of money. The 2960XM, which was purchased in 2016 for
-only 1500CNY was a real bargin and I want to reuse it. However I just can't bear the performance of HD3000 Graphics. So
-the motherboard used here is a mini-ITX one with a rPGA 988B socket, which is used by some relatively older Intel core i
-series CPUs, and a PCI-e 2.0 x16 slot. The spec of the mother board can be found
-<a href="https://www.supermicro.com/products/motherboard/xeon/qm67/x9scv-qv4.cfm">here</a>.
-</p>
-<h4 id="tocanch3" class="tvis">Gallery</h4>
-<table style="max-width:90%;margin:auto;">
-<tbody><tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174709_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170120_174709_1.jpg"></a><br>
-混乱<br>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/IMG20160930125925.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20160930125925.jpg"></a><br>
-主板<br>
-</td>
-</tr>
-</tbody></table>
-<h3 id="tocanch4" class="tvis">/dev/computer/tio0 -&gt; ../comp6</h3>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161231_210242.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20161231_210242.jpg"></a>
-<br>烧水的/dev/comp6</div>
-<p>
-<a href="https://chrisoft.org/blog/blogreader.php?p=2016-05-12">先前写过的体验文</a>
-</p>
-<p>
-X1 yoga 2nd gen在CES 2017上亮相之后大概我这种1st gen顶配用户就要开始咒骂渣想为何不在1st gen上用Iris集显了。
-<s>不过不也就是一个15w TDP CPU的集显吗,不就是多了一倍的EU吗,反正都是辣鸡i卡性能能好到哪里去(我如是自我安慰道)</s>
-</p>
-<p>
-<s>不对人家2nd gen上都有thunderbolt和USB type-C了你说说你当时就不能再等一年吗</s>
-</p>
-<p>
-好吧上面都是玩笑话。<s>(毕竟把现在这台刚用了半年多点的机器出掉再麻烦人家从美帝带一台2nd gen也不是什么实际的想法)</s>
-但是X1 yoga 2nd gen确实不错地确解决了当时我在体验文中写道的痛点。
-</p>
-<p>
-视线回到我自己的这台上来。
-</p>
-<ul>
-<li>CPU: Intel Core i7-6600U</li>
-<li>RAM: 16GB DDR3L-1866 Samsung</li>
-<li>Graphics card: Intel HD Graphics 520</li>
-<li>/dev/nvme0: Samsung 512GB MZ-VKV5120</li>
-<li>OS1: Windows 10 Insider Pro x64</li>
-<li>OS2: Arch Linux x86-64</li>
-</ul>
-<p>
-这台彻头彻尾的学霸机被我用成了移动工作站。现在它是我的数字音频工作站,数字图像工作站——当然也是我用来生产辣鸡代码的设备。
-虽然我曾经瞧不上低电压处理器的性能,但是skylake-U的性能还是改变了我对(一部分)低电压CPU的看法(因为4.5w TDP的*-Y实在是……)。
-至少无论是从参数还是从日常表现来看,i7-6600U可以力压i5-4200H这种用在入门游戏本上的标压CPU<s>(但是人家有独显呀)</s>。
-</p>
-<p>
-当然显卡是个蛋疼之处。<s>集显就是集显,HD系列就是进化到HD1020也没用。</s><a id="n4" href="#note4" class="note">[4]</a>
-虽然HD520与我曾经忍受过的HD3000有显著的提升,但是大概还没达到能让Intel的GT2级别集显摆脱它的恶名的程度。
-</p>
-<p>
-碎屏事件发生过后,换上的屏幕有一点轻微的问题。大概是笔悬停较高的时候指针有一定概率乱跑。<s>但是因为自己不会画画而且问题只出现悬停在最高限度时,
-所以无伤大雅</s>。后来问了一下同机型的jx说是也有类似问题。难道这是Wacom AES屏的通病?
-</p>
-<p>
-至于系统,也是烦人之处之一。习惯了Linux下的工作方式然而SONAR steam最新版又无法正常在wine中运行,再加上堪忧的触屏支持,
-于是不得不保留自带的Windows 10 Pro系统。而WSL的完成度也是众人皆知。二者无法相互替代,虚拟机的集成度又无法令人满意,所以不得不选择双系统。
-后来<s>为了追求活在边缘上的刺激</s>进了insider fast ring,没为微软的测试做什么贡献倒是有这么两点感受:
-1. Insider fast比arch linux这种滚动发行版还能炸,2. <s>大概微软是真抠门到不给测试部门发工资了</s>。
-</p>
-<p>
-<s>我也是当时购机时加了$30升上Windows 10 Pro的用户啊,微软你就不能解决一下用户的问题吗(</s>
-</p>
-<h3 id="tocanch5" class="tvis"><s>/dev/mobi/mob0 -&gt; </s>../mobi7</h3>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/20160926_164023.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1156x1156_20160926_164023.jpg"></a>
-<br>遍体鳞伤的/dev/mobi7 GT-I9300(/dev/mobi5)摄
-</div>
-<p>
-如果你想知道前面那些质量差到不行的照片是什么设备拍摄的,那么答案来了,就是上图里的这台小米MAX。
-</p>
-<p>
-如果要问我对这台手机有什么评价,回答大概是这样的:
-</p>
-<p>
-小米辣鸡 <span style="font-size:141%">小米辣鸡</span> <span style="font-size:200%">小米辣鸡</span>
-</p>
-<p>
-要说这台辣鸡,啊不,小米,的身世,倒也是奇特无比。2016年暑假前一段时间,我爸突然要求换手机而且指明了要这款小米MAX。基于以往对廉价产品的偏见我试图说服他换一款买,
-但最终还是拗不过,买了。谁知道到货之后他说原来手机上东西太多不想移了……所以准备让我用这台小米MAX。……好像我原来手机里的东西不多似的!
-但是考虑到自己还在用4年多前的一台连LTE网络都不支持的Galaxy S3,我还是换上了这台小米MAX。
-</p>
-<p>
-于是我用上了这台当时让我有过能改变我对小米看法幻想的小米MAX。事实证明,这确实是个幻想。首先遇到的,就是辣鸡系统MIUI。握日,这系统真的能用?刷掉!
-然后就发现小米MAX锁了bootloader。解锁申请里我留下了愤怒的几个字:「刷机!!!」。一天不太到的时间过去,批了(效率值得称赞)。刷上CyanogenMod 13.1,一切又变得熟悉了起来。
-我也在一段时间内忘了这是一台廉价的小米……直到——
-</p>
-<p>
-啪!一天中午在实验室起身吃饭的时候它因为其巨大的体型从裤兜里滑了出来,摔在了瓷砖地面上。然后屏幕就……变成了上图里的那样。此后它还拥有了一项特殊属性:
-可以徒手拆机。哇,这可真是「可靠的品质」呢。
-</p>
-<p>
-这个样子还能用?于是在奸商那里花了200来大洋换了屏幕(在js竟然也只要200大洋……这是什么辣鸡屏?),奸商还非常贴心地贴了钢化膜。这下我想这东西大概再还能撑个两年再报废吧。
-然而,抛开中间屏幕上再次莫名其妙地出现裂纹一事,最近又一次事件可以说彻底打消了这个念头。
-</p>
-<p>
-实际上这只是一次普通的误拖电源线致使手机坠落事件。我的Galaxy S3遇到过不止一次,但这台小米MAX连一次都经受不住。现在屏幕又碎了——不过这不是重点。
-重点是后面的Micro USB几乎变成了「Zero Insertion Force」接口(literally),插拔时几乎无任何阻力。于是我现在想通了,大概这东西设计寿命应该也就一年吧。
-毕竟小米还要让他们的米粉购买新品。
-</p>
-<p>
-作为曾经的CyanogenMod的忠实用户,现在的系统当然是Lineage OS 14.1。至少用着它的时候能让我暂时忘记手里的手机是辣鸡小米。
-</p>
-<p>
-一个同学的红米note用了一年不到出现了电源键难以按下的情况。后来那位同学购入了小米5。我问他为何仍然选择小米的时候他的回答不出意料——「因为性价比高啊!」
-于是我想知道一部能用4年以上3k左右的手机,和一部只能苟活一年的千元机,到底哪个更合算。
-</p>
-<p>
-<s>最后希望那位同学的小米5能活过一年(毕竟小米5是1.5k+)</s>
-</p>
-<h4 id="tocanch6" class="tvis">UPD 2017-03-12</h4>
-<p>
-RIP小米MAX。它的使命结束于它从小米官网消失的同一天。
-</p>
-<p>
-大概从两周前开始,这部手机开始出现无故自动重启或者关机的现象。有时可能我刚放下它,再拿起来的时候就关机了……有时还会陷入重启循环。
-后来这种情况的发生频率变到了一天十多次。这显然是让人无法接受的。为了排除是软件原因导致的故障,我甚至刷回了原版的MIUI系统,
-但情况未有任何改善。于是我就购入了/dev/mobi8,到货之后这台小米MAX就光荣<s>牺牲</s>退役了。
-</p>
-<h3 id="tocanch7" class="tvis">/dev/mobi/mob0 -&gt; ../mobi8</h3>
-<p>
-新设备。1568元购入,3月8日到手。因为时间仓促(那段时间因为辣鸡小米整天重启去了,所以很多时间段都是基本处于失联状态,不得不迅速购入新机)
-而又没有预算,就随便买了这台SM-N9100(trlteduoszc)。可能这个选择也有点Galaxy S III时代对三星的好感在里边。说到这里就想到一些非常有趣的事情:
-因为最近的地区局势的原因,出现了很多「买xx的就是傻逼」这样的言论。还好我周围的人都比较宽容,没有因为这个说我是傻逼的。
-</p>
-<p>
-大概是因为都在清仓,所以很幸运地没有买到假货或者翻新品。然而因为是中国专供机型所以也不好找第三方ROM。
-<a id="n5" href="#note5" class="note">[5]</a>
-</p>
-<p>
-<s>发现这东西的性能还是比现在某些所谓的千元旗舰强的,所以大概以后没钱的话还是会遵从这种购机策略吧。</s>
-</p>
-<blockquote class="twitter-tweet" data-lang="en"><p lang="zh" dir="ltr">庆祝逃离辣鸡小米 <a href="https://t.co/kYGXSkRNjW">pic.twitter.com/kYGXSkRNjW</a></p>— Chris Xiong (@chirs241097) <a href="https://twitter.com/chirs241097/status/839623511098347520">March 8, 2017</a></blockquote>
-<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-<h3 id="tocanch8" class="tvis">/dev/mobi/ipod0 -&gt; ../ipod0</h3>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20160919212614.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20160919212614.jpg"></a>
-</div>
-<p>
-特别经典的iPod,经典到它的名字就叫iPod Classic。
-</p>
-<ul>
-<li>Original iPod 6th gen 1st rev</li>
-<li>Replaced with rev 2 logic board</li>
-<li>120GB kingspec SSD</li>
-</ul>
-<p>
-这是我唯一的一台苹果设备。因为是亲戚所送的港行,所以当时自家并没有花一分钱。后来升级SSD、换电池和更换主板花掉了800大洋……
-<s>现在处于外壳S/N与机器显示不匹配的状态</s>。
-</p>
-<p>
-几乎陪伴了我高三的每个晚上。现在却被冷落了。
-</p>
-<h3 id="tocanch9" class="tvis">/dev/arm/rpi0 -&gt; ../rpi0</h3>
-<p>
-<a href="https://chrisoft.org/blog/blogreader.php?p=2015-11-22">初体验</a>
-</p>
-<p>
-吃灰专业户。买的时候是被一种奇葩的「代替智能手机的智能部分」思路指导的。
-<a id="n6" href="#note6" class="note">[6]</a>
-因为没钱就只买了一块板和一块屏。到货之后才发现没有合适的电源。
-那就先用电脑的USB输出苟着吧……于是用是能用,
-但是频率只能设定为700MHz,否则根本看不到红灯亮(供电不足)。
-也没有class 10的SD卡,那就随便拿一个class 4的插上用吧。
-之后还因为实在无法忍受class 4 SD卡的速度把除了内核以外的系统全都迁移到了U盘上。
-</p>
-<p>
-有天发现移动电源的2A输出能为rpi提供足够的电流。于是我的rpi就真的试图开始
-用它来完成某些智能手机上的「智能功能」<s>(比如浏览网页,在上面安装KDE等等)</s>。
-再后来开始将其作为移动代码设备……直到我获得了/dev/mobi6,/dev/rpi0再次被打入冷宫。
-在供电不足的rpi2上跑KDE真是作死啊。
-</p>
-<p>
-吃了一段时间的灰之后,它又被拿出来挂了一段时间www服务器。后来又被我拿来研究<s>(玩)</s>
-MAX7219芯片。本来想写个小库方便操作7219控制的显示屏的,后来懒了就只写了几个娱乐用的小程序。
-</p>
-<p>
-偶然发现rpi的Experimental OpenGL Driver进入raspbian testing之后,果断打开之,
-发现SMELT OpenGL版可以运行在这个驱动上。(嗯……此时SMELT还只有OpenGL 2.0版)
-激动万分的我立刻在上面编译了QMidiPlayer并发现包括可视化在内的功能全都正常正常工作。
-感到一丝莫名的欣慰之后就发现使用rpi原生OpenGL驱动的程序,比如minecraft-pi,无法使用了。
-不过我在minecraft-pi里面做过的事情也就是写了个python脚本到处乱放TNT吧……
-</p>
-<p>
-以后说不定会有/dev/rpi1../dev/rpi3组成集群来搞事情。
-</p>
-<h3 id="tocanch10" class="tvis">/dev/printer/lp0 -&gt; ../lp0</h3>
-<p>
-一台EPSON L360墨仓式多功能一体机。廉价产品。打印效果尚可。
-曾经两次因为长时间不使用导致打印出来的稿件缺色。于是现在放在实验室当作公用打印机。
-但是好像因为驱动原因大家都在用旁边的HP LaserJet 1020Plus(公物)。
-</p>
-<p>
-<s>曾经拿它的扫描仪扫描过一些自己不堪入目的手稿。</s>
-</p>
-<h3 id="tocanch11" class="tvis">/dev/input/kb0 -&gt; ../uhid0</h3>
-<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161218_094943.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20161218_094943.jpg"></a>
-<br>Cherry MX Board 2.0 - black keyswitches (不要在意键盘布局)
-</div>
-<p>
-大概是价格最亲民的Cherry键盘。因为不想买花哨且过于廉价的国内某些奇怪厂商的产品选择了这把Cherry。
-也许是因为外形太低调刚拿到时甚至被身边「不识货」的人当作了普通的薄膜键盘。
-</p>
-<p>
-<s>对我来说还是硬一点黑轴爽,比红青茶什么的不知道高到那里去了</s>
-</p>
-<h2 id="tocanch12" class="tvis">Deprecated/Inactive devices</h2>
-<h3 id="tocanch13" class="tvis">/dev/comp0../dev/comp4</h3>
-<h4 id="tocanch14" class="tvis">/dev/comp0</h4>
-<p>
-家里的第一台计算机是这台2003年8k大洋购入的联想1+1电脑。由于年代久远且其尸体早已不见踪影,现在只能回忆起如下的大致配置:
-</p>
-<ul>
-<li>CPU: Pentium 4 2.0GHz</li>
-<li>RAM: 512MiB, upgraded from 256MiB</li>
-<li>Graphics card: GeForce2 MX400</li>
-<li>HDD: 80GiB, upgraded from 40GiB</li>
-<li>Display: 17in flat CRT 1024x768</li>
-<li>Modem: 56kbps</li>
-<li>OS: Windows XP</li>
-</ul>
-<p>
- 大概当时用这个价买到这种配置的电脑应该还算值了吧……毕竟在此不久之前还是一个Windows98品牌机随便上8k的时代。
-当然大概受于当时那个时代的限制,这台电脑的配置还是相当感人的——尤其是这块GeForce2 MX400辣鸡显卡。。。
-大概只能玩自带的「联想幸福之家」中的VB写的、使用DX7.0的烈焰战机这样的游戏了。
-</p>
-<h4 id="tocanch15" class="tvis">/dev/comp1</h4>
-<p>
-ASUS A8M
-</p>
-<ul>
- <li>CPU: Mobile AMD Sempron 3200+</li>
- <li>RAM: 3GiB, upgraded from 512MiB</li>
- <li>Chipset/Graphics adapter: Geforce Go 6100</li>
- <li>HDD: None, formerly 320GiB upgraded from 80GiB</li>
- <li>Display: 14in 1280x800</li>
- <li>Connectivity: Realtek Ethernet &amp; Motorola 56K modem, empty WLAN card slot</li>
- <li>OS: None. formerly Windows 7 x64, Debian amd64, Windows XP and DOS(stock OS).</li>
-</ul>
-<p>
-公物。它的配置单上简直清楚地写着「千万别用我做办公以外的事情」。原装的80GiB硬盘坏掉了。后来临时插上自己的一块320GiB的硬盘顶着。
-这台电脑闲置之后就没有把硬盘继续给它用的理由了。
-</p>
-<p>
-大概就是这台电脑给我留下了「AMD是辣鸡」的印象。Windows Vista x64装上直接蓝屏,Windows 7 x64好一些,只会在全屏看视频的时候蓝屏。
-<a id="n7" href="#note7" class="note">[7]</a>
-Debian amd64则在安装的时候直接kernel panic(后来加了点内核参数,解决了kernel panic然后安装成功了,然而XFCE都卡到不能用……)。
-</p>
-<p>
-由于自己的疏忽,它经历过一次任何笔记本都无法承受的沉重打击:从屋的一端飞到另一端然后砸在墙上。不过对于磐石来说,这大概不是什么太大的问题——
-造成的损失也就只有转轴断裂、屏幕与机身脱离而已(嗯……排线还连着)。当时被吓成智障的我用颤抖的双手将它从地上拿起后,试探性地按了一下电源键。
-看到Windows 7的开机动画之后我的心情是无法用语言描述的。
-</p>
-<p>
-不过也有很多关于这台机器的美好的回忆呢(<a id="n8" href="#note8" class="note">[8]</a>
-</p>
-<h4 id="tocanch16" class="tvis">/dev/comp2</h4>
-<p>
-ThinkPad R52
-</p>
-<ul>
- <li>CPU: Intel Pentium M 725(?) 1.6GHz</li>
- <li>RAM: 1.25GiB, upgraded from 256MiB</li>
- <li>Chipset/Graphics adapter: ATI Mobility Radeon X300 64MB</li>
- <li>HDD: Toshiba 40GiB PATA</li>
- <li>Display: 14in 1024x768</li>
- <li>Connectivity: Broadcom Gigabit Ethernet &amp; Intel 802.11 a/b/g</li>
- <li>OS: Windows XP Home</li>
-</ul>
-<p>
-还是公物。虽然各种小毛病不算少,但是它的各方面的设计还是培养起了我对ThinkPad的好感。
-</p>
-<p>
-作为标准的商务机,配置自然是比较尴尬的了。尤其是升级后1.25GiB的内存,看着就令人不爽。
-拿到这台机器的时候电池应该已经有了数百次的充放电循环,用电池只能撑半个小时左右。
-另外一点就是PATA硬盘速率实在是太感人了。真是怀念那个分辨率1024x768就觉得高的时代啊。
-</p>
-<p>
-带我入了Ballance/Virtools还有Beat Hazard的坑。所以到底是该感谢它呢,还是……
-</p>
-<h4 id="tocanch17" class="tvis">/dev/comp3</h4>
-<p>
-Lenovo IdeaCentre K300
-</p>
-<ul>
- <li>CPU: Intel Core 2 Quad Q8300 2.5GHz</li>
- <li>RAM: 4GiB -&gt; 8GiB -&gt; 4GiB</li>
- <li>Graphics adapter: NVIDIA Geforce GT320/li&gt;
- </li><li>HDD: 128GiB M4 SSD+500GiB Hitachi HDD</li>
- <li>Display: 22in 1920x1080</li>
- <li>OS: Windows 7 Ultimate/Debian sid</li>
-</ul>
-<p>
-家里目前的的台式机。2009年春节花费8k大洋购入(辣鸡联想真坑爹)。入门级CPU,辣鸡显卡。自带两条三星2GiB DDR3-1033 RAM,
-后加装了两条Kingston 2GiB DDR3-1033 RAM。至于后来RAM容量为何又缩回了4GiB,原因其实是里面的两条「三星原装内存」坏掉了,
-一旦插上进Windows就各种蓝屏,进Linux就不断Kernel Panic...
-</p>
-<p>
-<s>虽然现在看来是如此不济的一台电脑,原来也有同时跑8台虚拟机的辉煌历史。</s>除WHG3D外,我的大部分Virtools作品都是在这台电脑上完成的。
-</p>
-<h4 id="tocanch18" class="tvis">/dev/comp4</h4>
-<p>
-Lenovo IdeaPad Y570, disassembled
-</p>
-<ul>
- <li>CPU: Intel Core i7-2670QM -&gt; Intel Core i7-2960XM</li>
- <li>RAM: 4GiB -&gt; 8GiB -&gt; 12GiB -&gt; 16GiB</li>
- <li>Graphics adapter: Intel HD 3000/NVIDIA Geforce GT555M</li>
- <li>HDD: 750GB Hitachi HDD -&gt; 256GiB M4 SSD</li>
- <li>Display: 15in 1366x768</li>
- <li>OS: Windows 7 Ultimate -&gt; Windows 8 Pro/Ubuntu (12.04 -&gt; 12.10) -&gt; Windows 8.1 Pro/Ubuntu dev branch -&gt; Windows 10 Pro/Debian sid</li>
-</ul>
-<p>
-把这台机器称作是<code>/dev/comp7</code>它爹也不为过。因为那台机器的CPU、内存条、硬盘都来自这台机器。而这台机器的零件现在静静地躺在实验室的某个纸箱里。
-</p>
-<p>
-该机于2012年7月购入。中间经过几次升级终于成为了最后的配置。即使从现在的需求上来看,这台机器的配置依然能够满足我的要求。只不过最后一次升级CPU的时候把转轴处的螺丝口弄断了3根……
-于是后来就彻底下定决心把它改装成了一台「台式机」了。
-</p>
-<p>
-大概也是一台很有故事的机器吧。陪我度过了高中搞OI的两个多春秋,领我进入了神妙的Linux/FOSS世界,带我认识了许多素未谋面的人,在上面编写了我的第一个工程……
-</p>
-<p>
-然后就再也不是那个1024x768分辨率都觉得大的时代了。
-</p>
-<p>
-<s>啊……不说了。再说就要开始怀古伤今了(呸</s>
-</p>
-<h4 id="tocanch19" class="tvis">/dev/comp5</h4>
-<p>
-Dell inspiron 14-5458
-</p>
-<ul>
- <li>CPU: Intel Core i7-5500U</li>
- <li>RAM: 4GiB</li>
- <li>Graphics adapter: Intel HD 5500/NVIDIA Geforce GT920M</li>
- <li>HDD: 1TiB HDD</li>
- <li>Display: 14in 1366x768</li>
- <li>OS: Windows 10</li>
-</ul>
-<p>
-亲戚的电脑,借给家里人用的。
-</p>
-<p>
-实际情况是当初想送给我当大学用的机器,但是看到这个极不平衡的配置<s>(以及因为戒不掉的SSD毒)</s>,我决定还是继续用我自己的机器。
-</p>
-<p>
-<s>都哪年了还出1366x768@14的电脑,辣鸡傻多戴。</s>
-</p>
-<h3 id="tocanch20" class="tvis">/dev/mobi0../dev/mobi6</h3>
-<h4 id="tocanch21" class="tvis">/dev/mobi0</h4>
-<p>
-Unknown MTK cellphone
-</p>
-<p>
-2008年购入。当年典型的采用MTK解决方案的山寨机。在那个诺基亚仍然是手机行业霸主的时代,它依然是众多山寨手机厂商的山寨对象。
-这台手机的LOGO就是NOKI∧。从主屏幕到菜单都仿的相当神似。然而深入到各个应用内部就十分粗糙了。
-</p>
-<p>
-这部具有翻盖+触屏+全键盘的神奇机器的最终命运是相当悲惨的:偷看小说时被母上大人夺去,摔了个粉身碎骨。从此再也没有在移动设备上阅读过小说。
-</p>
-<h4 id="tocanch22" class="tvis">/dev/mobi1</h4>
-<p>
-LG T310 (<a href="http://www.gsmarena.com/lg_cookie_style_t310-3458.php">gsmarena</a>)
-</p>
-<p>
-2010年OI夏令营前购入。从外观到UI上讲都是小孩子用的手机。
-</p>
-<p>
-现在触摸屏报废,躺在卧室的抽屉里。
-</p>
-<h4 id="tocanch23" class="tvis">/dev/mobi2</h4>
-<p>
-NOKIA C5-03 (<a href="http://www.gsmarena.com/nokia_c5_03-3578.php">gsmarena</a>)
-</p>
-<p>
-2011年春购入。家里第一台智能手机。
-</p>
-<p>
-成功搭上了s60v5的末班车。这也是第一台使我家路由器的WLAN不再形同虚设的设备。
-这台机器大概塑造了我的很多使用习惯,这些习惯一直延续至今。<s>包括拿手机听收音机。</s>
-</p>
-<p>
-存活到了现在。中间摔过无数次还曾掉到过热水里。后来触摸屏失效过一次,x宝上花15元购入零件后自己动手搞定。现在仍是一台备用机。
-</p>
-<h4 id="tocanch24" class="tvis">/dev/mobi3</h4>
-<p>
-NOKIA 500 (<a href="http://www.gsmarena.com/nokia_500-4085.php">gsmarena</a>)
-</p>
-<p>
-2012年春购入。当时Symbian已步入末年。本着体验WP的心态走进NOKIA体验店,得出WP是辣鸡的结论后,花了800大洋收了这部基于
-Symbian^3的入门级手机。
-</p>
-<p>
-从硬件上要说这台机器是C5-03的马甲一点也不过分。维基百科上都说C5-03的Successor就是NOKIA 500。
-不过从系统上来说用户体验的进步还是显而易见的。
-</p>
-<p>
-依然存活。大一的时候做过一段时间主力机。<s>你看人家诺基亚800元的机器质量都这么好,辣鸡小米。</s>
-</p>
-<h4 id="tocanch25" class="tvis">/dev/mobi4</h4>
-<p>
-Blackberry curve 8900 (<a href="http://www.gsmarena.com/blackberry_curve_8900-2604.php">gsmarena</a>)
-</p>
-<p>
-2014年获得的亲戚淘汰下来的黑莓。虽然从未做过自己的主力机,但是在高三的时候,有很长一段时间被我藏在课桌里用来消磨时间。
-<s>怀念那个在教室电脑上偷插网卡用来共享WiFi和把手机藏在教室电脑主机上充电的时代。</s>
-</p>
-<p>
-也算让我体验了手机的另一种交互方式吧。现仍然存活,只是电池不太能苟了。
-</p>
-<h4 id="tocanch26" class="tvis">/dev/mobi5</h4>
-<p>
-Samsung Galaxy S3 (<a href="http://www.gsmarena.com/samsung_i9300_galaxy_s_iii-4238.php">gsmarena</a>)
-</p>
-<p>
-2012年底以4kRMB购入。至今仍是我使用过的最贵的手机。
-</p>
-<p>
-陪我度过了无聊高三的另一半。上语文课我这个语文倒数和全班语文第一联机打MCPE就是用的它(语文老师则对我们两个直接选择视而不见,
-当然原因是不同的)。半夜用Root Explorer自带的编辑器写MCPE的JavaScript Mod(当时用的还是BlockLauncher)到四点的也是它。
-大一时从上铺掉下来,外屏毫发无伤内屏却坏了<a id="n9" href="#note9" class="note">[9]</a>
-的也是它。
-</p>
-<p>
-发布接近5年了,在LineageOS活跃用户数排行中它依然位居第二
-<a id="n10" href="#note10" class="note">[10]</a>。
-现在它仍然每天为我接收消息。
-</p>
-<h4 id="tocanch27" class="tvis">/dev/mobi6</h4>
-<p>
-</p><div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/
-IMG00034-20150826-1529.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/
-IMG00034-20150826-1529.jpg"></a><br>
-<reduced>/dev/mobi5与/dev/mobi6的合照,/dev/mobi4所摄<reduced>
-</reduced></reduced></div>
-Samsung Galaxy Tab 2 7.0 (<a href="http://www.gsmarena.com/samsung_galaxy_tab_2_7_0_p3100-4543.php">gsmarena</a>)
-<p></p>
-<p>
-又是一台亲戚淘汰的产品。2014年获得。严格来讲这是一台平板,而不是手机。然而它在/dev/mobi5屏幕报废的这段时间内,确实是作为主力机的身份存在的。
-</p>
-<p>
-不过这个系列当年的定位也决定了它现在只能吃灰的命运。
-</p>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 大致是购置ThinkPad X1 yoga前提出的构想:一台固定机器提供较高的计算性能,另一台轻便机器提供便携性。<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 其实都是免费的啦……<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: =打游戏<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 我怎么觉得这会成为一个flag……<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 虽然自己编译LineageOS从过程上来讲不算太复杂,但是毕竟没那个时间,主力设备也折腾不起,万一砖了那就是严重事故了。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 当时正值唯一一部安卓手机/dev/mobi5阵亡<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 这大概也脱离不了它用的辣鸡nVIDIA集显的原因。<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 比如小学半夜跟我爸俩人在上面打暴力摩托什么的<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 见<a href="https://chrisoft.org/blog/post/2015-11-22">这篇文章</a><br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: 数据来自<a href="https://stats.lineageos.org/">stats.lineageos.org</a><br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-04-11.html b/blog/post/2017-04-11.html
deleted file mode 100644
index 9774983..0000000
--- a/blog/post/2017-04-11.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"SBS 2.0 is now the default blog browser")</title>
-<meta name="description" content="«SBS 2.0 is now the default blog browser» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">SBS 2.0 is now the default blog browser</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/web/">web</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-02-13.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-05-08.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">SBS 2.0 is now the default blog browser</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-04-11<br>#devel #web</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-As you may have noticed, the blog system has been fully revamped. The new system
--- the Stupid Blogging System 2.0 -- uses the same design as the new home page
-and assemblies the page dynamically in the browser using AJAX. The backend is
-written in C++ with a snake oil "cgilib" and its source code can be found
-<a href="/blog/cgi-src">here</a>. All frontend and backend code is licensed
-under the Expat (MIT) license (possibly because the code is way too useless for
-general-purpose web application development).
-</p>
-<p>
-One of the biggest changes brought to the visitors by SBS2.0 is the tags
-support. Now you can filter the posts through a single tag of your choice. By
-far the filter only accepts a single tag. Although adding support of multi-tags
-filter is fairly easy, I haven't found the reason to implement it yet.
-</p>
-<p>
-Obviously this won't work if you disable JS in your browser. Also, due to the
-usage of some ES6 features, it requires an ES6-enabled browser. The frontend is
-developed with the help of Chrome 56 and Firefox 52. Microsoft Edge doesn't like
-my code. I don't have any Apple iOS/macOS devices so I didn't test it in Safari.
-Sorry to Microsoft and Apple fanboys and fangirls!
-</p>
-<p>
-SBS2.0 is still shit compared to any other blogging systems.
-</p>
-<table>
-<tbody><tr>
-<td>Backend: </td>
-<td>cgi programs written in pure C++</td>
-</tr>
-<tr>
-<td>Frontend: </td>
-<td>Vanilla JS(ES5+some ES6 features)+HTML5+CSS3</td>
-</tr>
-<tr>
-<td>Officially supported browsers: </td>
-<td>Chrome 56+ &amp; Firefox 51+</td>
-</tr>
-</tbody></table>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-05-08.html b/blog/post/2017-05-08.html
deleted file mode 100644
index e85bc79..0000000
--- a/blog/post/2017-05-08.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"2017省赛流水帐")</title>
-<meta name="description" content="«2017省赛流水帐» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">2017省赛流水帐</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/contest/">contest</a></li><li><a href="/blog/list/acmicpc/">acmicpc</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">「一句话题解」和其他</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-04-11.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-06-09.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">2017省赛流水帐</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-05-08<br>#contest #acmicpc</div>
- <hr><div id="article" class="TText">
-<article>
-<script async="" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML" charset="utf-8"></script>
-提要:
-<ul>
- <li><s>虽然又双叒丢了冠军但是大概是大学打的最刺激的一场比赛</s>(单从比赛本身来讲)</li>
- <li><s>到底是7个赞助商辣鸡还是主办方太抠</s></li>
- <li><s>裁判组垃圾</s></li>
- <li><s>我太辣鸡,还是队友new bee</s></li>
- <li>为Pz默哀</li>
-</ul>
-<p>
-对于我这种五一假期早早就翘了OS课实验跑回家拒绝训练的咸鱼来说,好像根本没把这种级别的比赛当回事
-<s>(原因自然是因为我有队友的大腿可抱啦)</s>。所以赛前的一切事务也没怎么上心……
-包括<enlarged>起队名</enlarged>这种「重要事务」。因为某种所谓的「传统」,
-辣鸡专科学校的队伍在省赛的时候总想用队名搞事情,
-<a id="n1" href="#note1" class="note">[1]</a>
-征集搞事所用「系列」时我随手发了个「宇宙××」系列,然后就莫名其妙得票最高了。
-可是某个可恶的宇宙××,竟然违背汹涌的民意搞「暗箱操作」。于是我们被钦定了这么一个队名……
-</p>
-<div style="text-align:center;">
- <img width="40%" src="//filestorage.chrisoft.org/blog/img/csc.png" decoding="async">
-</div>
-<p>
-嗯这是我们实验室的某个真·linguist在比赛结束后偷偷告诉我的。二?<s>所以#2的命运应该是从这时确定的……</s>
-</p>
-<p>后来几人为了抗议队名钦定发生了下图中的事件……</p>
-<div style="text-align:center;">
- <img width="40%" src="//filestorage.chrisoft.org/blog/img/20170508_144329.jpg" decoding="async">
- <br>
- <reduced>图中所示为宇宙××的机位……</reduced>
-</div>
-<p>
-好吧下面开始进入正题……坐着辣鸡专科学校的校车颠了5个多小时到了青岛,然后发现司机不知道路……
-后来历尽曲折,顺着某条羊肠小道准备接近目的地的时候却发现需要爬一个我们的辣鸡校车爬不上去的坡……
-于是就被逐下车了。
-</p>
-<p>
-青岛的气候不知道比济南高到那里去了(虽然午间太阳下当然还是晒)。
-办入住手续的时候看到了大概是跟他的gf在一起的Pz。想跟他说几句话的时候这家伙却说要上厕所然后走开了。
-嗯……大概是嫌我太弱不要我了。然后就开过来一辆客货两用车,后备箱掀开一看,里面居然满满的都是盒饭,
-也就是我们的午饭……主办方印象分-- 当然原谅色选手服之类的事情就不用说了。网上都说烂了。<s>我再帮他说一遍,
-我等于……我也等于……我也有责任吧?</s>
-</p>
-<p>
-正午时分终于进了入住的房间,感觉环境还不错。<s>就是电视太辣鸡了,啥都没有的安卓系统+只有模拟信号。</s>
-然而我们却没有时间享受一下床的温暖,因为<enlarged>12:40就要集合去参加开幕式和热身赛</enlarged>?!?
-而且房间只有一把椅子,所以我只能看着先抢走椅子的队友兼室友宇宙××吃盒饭……
-然后他就连续不断地吃到了十二点半……于是我不得不缩在床边用一种奇怪的姿势吃盒饭。。。还好最后没有出事。
-</p>
-<p>
-开幕式上讲的东西都是老生常谈,当然除了一个浪潮某领导所说的「青岛离山东太远」之外。
-<s>可以看出这个家伙肯定是青岛直辖的坚定支持者。</s>热身赛则是三个中文大水题。1h不到AK后开始乱搞。
-测了测机器性能发现i5-6600竟然比不上i7-6600U……然后发现用的是对skylake超不友好的4.4版本的kernel。
-赛场布局十分紧凑,各种用料也是相当节省(这当然不是夸主办方的话)。
-键盘也是十分古老的布局,用宇宙××的话来讲「1/4的时间在用来删除打错的字符」……然而最后还是只能认栽。
-弃疗之后准备离场,却被告知不可离场。于是开始寻找有没有什么可以玩的东西,然后就发现了扫雷。
-结果一局都没玩完就被通知可以走了,也是相当的尴尬。
-</p>
-<p>
-晚上回去之后以为官方提供的晚饭也是辣鸡盒饭,所以我们队三人果断点了外卖。
-后来发现虽然官方晚餐实际上并不是盒饭,但也是转一圈下来就没什么可吃的东西了的那种。
-后来的时间就变得十分无聊。宇宙××看着电视上播放的一部叫做《产科医生》的电视剧入迷,我则在……不好,
-因为当时太困所以什么都想不起来了……后来发生的事情就是躺在床上一闭眼就丧失了对外界的感知……
-</p>
-<p>
-关于比赛过程,请见下方的『「一句话题解」与其他』段。
-</p>
-<p>
-闭幕式,三大段广告之后开始揭榜。主办方将4:3的内容伸长到一块分辨率超低的竖长条形屏幕上,
-他们这是生怕有人能看清吗……揭榜主持人是令人吃惊的不专业
-<a id="n2" href="#note2" class="note">[2]</a>,
-滚榜程序也是错误百出(乱来的颜色等等)。
-</p>
-<p>
-最后因为61分钟的用时被SKD-1864踩,rank 2。Pz则比较惨。作为老同学我表示心情还是十分复杂的。
-当然了,到了区域赛难度的比赛,如果我们还是现在这个水平,他肯定还是可以随意虐爆我们。
-</p>
-<p>
-还有我真是太辣鸡了所有签到题都要错几次(
-</p>
-<h2 id="tocanch0" class="tvis">「一句话题解」和其他</h2>
-<p>
-正如你看到的这里是一句话题解区域其实这里不仅包含题解还包含一句话题目描述和解题时的心路历程之类题目出场顺序按照解题顺序排列
-</p>
-<ul>
-<li>
- Y:
- <p class="nospace">
- <span>问键盘上某个字母键的左边或右边是什么键。</span><br>
- <span>当我看到宇宙××坐在键盘前写下<code>#include&lt;map&gt;</code>的一刻我就知道大事不好了</span>
- <span>因为我已经隐约看到了屏幕上即将出现的类似<code>m['Q']='W';m['W']='E';</code>之类的语句</span>
- <span>于是果断抢走机位用不到10行秒掉了这道题。</span>
- </p>
-</li>
-<li>
- Z:
- <p class="nospace">
- <span>给定两个字符串判断第二个是否可能为由第一个交换两个不同位置的元素得来。</span><br>
- <span>因为字符串长度1000所以打算冒个险试试STL瞎搞然后就TLE了后来用聪明的方法重写了一遍AC</span>
- <span>聪明的方法是计算两个字符串有多少个位置字符不同若为2个则一定可</span>
- <span>若为0个且有元素在串中出现超过一次则也可</span>
- <span>因为题目只要求交换的元素所处位置不同并未要求交换的元素不同</span>
- <span>其他情况则不可。</span>
- </p>
-</li>
-<li>
- X:
- <p class="nospace">
- <span>佳佳的魔法药水原题。</span><br>
- <span>首先更正一下这题大概是某古代OI网站上的一次模拟赛题目</span>
- <span>然后就是宇宙××说这道题他已经做烂了所以就让他再施展一次吧</span>
- <span>其实还不就是个最短路</span>
- <span>当年写树形DP写到炸。</span>
- </p>
-</li>
-<li>
- I:
- <p class="nospace">
- <span>求fib(x)%2的值。</span><br>
- <span>若x%3不为0则为1否则为0</span>
- <span>虽然x可以有1000位但是被3整除的数的规律应该是小学知识吧</span>
- <span>然后我就因为把<code>while(~scanf())</code>写成<code>while(scanf())</code></span>
- <span>结果TLE了一发。</span>
- </p>
-</li>
-<li>
- F:
- <p class="nospace">
- <span>对于给定abc问以下命题是否成立对于任意x若a*x^2+b*x+c=0则x是整数。</span><br>
- <span>一眼看上去是初中数学对吧</span>
- <span>但是它其实是高中数学因为题目中并没有限定x是实数</span>
- <span>虽然我在写第一版代码的时候还只有初中知识水平但是WA了数发之后瞬间具有了高中知识水平</span>
- <span>到最后发现其实我连小学文化都没有因为我以为a=b=c=0时x可以取任何数于是我就认为任何数等于任何整数</span>
- <span>改正之后发现仍然WA于是不得不认为出题人没有高中文化水平改掉了Δ&lt;0的特判</span>
- <span>事实证明出题人就是没有高中文化水平。</span>
- </p>
-</li>
-<li>
- G:
- <p class="nospace">
- <span>给定nm求sum(i^m%(10^?+7),1,n)。</span><br>
- <span>宇宙××乍一看卧槽矩阵快速幂然后就开始推</span>
- <span>结果发现m在[0,10]内于是宇宙××果断开始写暴力</span>
- <span>然而为什么一句话描述中10的指数是问号呢因为题目上写的是8</span>
- <span>而第一次提交的大佬队也是最后的rank1队写的8WA了改成9就A了于是他们非常愤怒</span>
- <span>而因为这支大佬队就在我们左前方所以我们很幸运。</span>
- </p>
-</li>
-<li>
- J:
- <p class="nospace">
- <span>有N种商品每种有c<sub>i</sub>个每个的基础价值为v<sub>i</sub>且可以为负</span>
- <span>在第j天你要售出一种商品得到j*v<sub>i</sub>的价值</span>
- <span>你可以选择从某天之后不再出售任何商品或者直到所有商品售完为止</span>
- <span>确定一种出售商品的顺序以获得的最大价值。</span><br>
- <span>贪心价值为正的货物一定售出且基础价值越高的越晚售出</span>
- <span>此后按剩余物品价值递减的顺序在首部添加价值为负数的商品直到总价值开始减少为止</span>
- <span>伟大的宇宙××很快就1A了这道题。</span>
- </p>
-</li>
-<li>
- C:
- <p class="nospace">
- <span>数轴上有N个点第i个点位于p<sub>i</sub>处对于每个点每秒会分裂为两个并分别移动到原位置正负一处</span>
- <span>问T秒后w位置有多少个点。</span><br>
- <span>组合数学乱搞这种东西当然不是我做的啦</span>
- <span>我也不知道他们第一发发生了什么。</span>
- </p>
-</li>
-<li>
- D:
- <p class="nospace">
- <span>一个六边形地图可以向左下右下或者正下方走问从某起点走到另一点有多少种方案。</span><br>
- <span>递推式是很明显的但是N<sup>2</sup>的复杂度在10<sup>5</sup>的数据下肯定炸</span>
- <span>于是就开始试图化简或者找规律然而都没卵用</span>
- <span>最后听了伟大的宇宙××的建议把坐标系换成平面直角系然后枚举斜向走的步数和位置</span>
- <span>虽然我一开始也这么想了但是感觉坐标变换会比较食屎于是就没搞</span>
- <span>但是听宇宙××这么一说不表示一下也不好于是就假装算了一下结果发现特别简单</span>
- <span>然后就去打代码这次我的代码竟然1A了真是不容易啊哦不还是因为伟大的宇宙××英明可惜就是不知道错。</span>
- </p>
-</li>
-<li>
- K:
- <p class="nospace">
- <span>你有T分钟解N道题第i道题在第m分钟解出得到的分数是a<sub>i</sub>-d<sub>i</sub>*m</span>
- <span>第i题需要c<sub>i</sub>分钟解出</span>
- <span>你不能同时解多道题问在最优策略下你能得到多少分。</span><br>
- <span>看上去非常dp的一道题于是自然就交给宇宙××了</span>
- <span>但是N可以到2000所以根本没法表示状态</span>
- <span>突然宇宙××灵光一现想起了他之前知道的某种全序关系</span>
- <span>对于两个题目若其中某个在另一个之前解出这两题的总分更高则在最后顺序中这两题的顺序与此时相同</span>
- <span>然后这道题就转换成了一个普通的背包了</span>
- <span>伟大的宇宙××就把它1A了。</span>
- </p>
-</li>
-<li>
- A:
- <p class="nospace">
- <span>变种Nim在产生一堆空堆前选手可以选择一种额外的操作让所有石子堆中的石子个数减少K</span>
- <span>已知初始时石子堆数n为质数给定初始状态问何方必胜。</span><br>
- <span>不怎么会博弈的我只能打酱油</span>
- <span>显然要分n=2和其他情况讨论</span>
- <span>专注数学题100年的队友推出了结论然后WA了</span>
- <span>于是开始对n&gt;3尝试打表不过发现与结论无异</span>
- <span>后来又尝试各种更改仍然都是WA</span>
- <span>然而我们三个zz一直没有发现n=2其实就是wythoff问题</span>
- <span>到比赛结束前20分钟左右宇宙××拯救了世界大呼eureka</span>
- <span>于是到283分钟6发过掉了这道题。</span>
- </p>
-</li>
-<li>
- B:
- <p class="nospace">
- <span>对于给定的Nd求存在多少长度为N位的允许有前导零的数满足</span>
- <span>它的平方的最后N位的每一位与原数中对应位差距不超过d</span>
- <span>数字之间的差是循环的且N&lt;=18。</span><br>
- <span>虽然我一开始以为这道题不可做但是最后被我们戏剧性地搞了出来</span>
- <span>题目给出了提示d=0时可能的序列只有4种</span>
- <span>所以我认为d&gt;0的序列可以由这四个序列衍生出来</span>
- <span>但题目未给出序列足够位数的内容所以我想出了在序列前枚举添加数字并验证性质的扩展方式</span>
- <span>然而我觉得并没有什么卵用所以我也没告诉队友</span>
- <span>然而宇宙××这时告诉我可以用这种方法推出任意d的情况而且他认为这就是正解</span>
- <span>不过我感觉这样肯定无法解出因为按照我的想法结果的规模是指数级增长的</span>
- <span>但是宇宙××坚持我写一发试试而且还强迫我手写了高精度</span>
- <span>写完之后发现对于一个d可以由N=18推出其他任何情况的答案于是计划打表</span>
- <span>然而发现答案规模真的是按位增长的跑了好久得出了d=1 N=17时的结果大约为1.8*10^8左右</span>
- <span>然后这时候电脑就开始卡起来了一看内存已经几乎占满交换空间也用了80%以上了</span>
- <span>这时候我一看打出来的那一部分表</span>
- <span>我草这怎么都是乘以3啊</span>
- <span>我草这怎么都这么多0啊</span>
- <span>我草这不是乘以5吗</span>
- <span>于是就发现了规律</span>
- <span>然后就过了</span>
- <span>后就过了</span>
- <span>就过了</span>
- <span>过了</span>
- <span>了。</span>
- </p><div>
-\[ ans =
-\begin{cases}
-4 &amp;\text{if } d=0
-\\
-4\times 3^{n-1} &amp; \text{if } d=1
-\\
-8\times 5^{n-1} &amp; \text{if } d=2
-\\
-8\times 7^{n-1} &amp; \text{if } d=3
-\end{cases}
-\]
- </div>
- <p></p>
-</li>
-</ul>
-<p>
-所以上面就是所有的「一句话题解」了。E和H都没做所以当然没有。然而值得注意的是出题人还是不太用心,
-不仅没有高中文化水平不知道复数,把10^9+7打成10^8+7,还把E题题意写错了(H%lim应为a[e[i]]%lim否则样例错误)。
-大概是主办方没有请出题人亲临现场,裁判组也不知道错。(虽然我们给威海校赛出题的时候也发生了类似的事故……
-但是这是省赛啊,ICPC官网上比赛名录中有的比赛啊 <s>而且我当时也知道错了</s>)
-像主办方太抠这样的事情倒是次要的,中间提交长时间不返回结果也不太重要,
-但我希望以后的省赛不要出现题目出错裁判组不负责任的情况了。
-</p>
-<p>
-所以,连续第三年,山大又丢了冠军。于是明年继续努力吧。不过依今年的情况看,明年我们大概就不是主力队了……
-</p>
-<p>
-外部链接
-</p>
-<ul>
-<li><a href="https://www.zhihu.com/question/59433867">相关知乎问题</a></li>
-<li><a href="http://acm.qust.edu.cn/ranklist/"><s>最终榜单(已失效)</s></a> <a href="//filestorage.chrisoft.org/blog/data/sdcpc2017ranklist.html">镜像</a></li>
-</ul>
-<p>
-最后放几张旅游照片
-</p>
-<div style="text-align:center;">
- <a href="//filestorage.chrisoft.org/blog/img/20170506_101422.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170506_101422.jpg"></a>
- <br>
- <a href="//filestorage.chrisoft.org/blog/img/20170507_080324.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_080324.jpg"></a>
- <a href="//filestorage.chrisoft.org/blog/img/20170507_080334.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_080334.jpg"></a>
- <br>
- <a href="//filestorage.chrisoft.org/blog/img/20170507_144512.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_144512.jpg"></a>
- <br>
- <a href="//filestorage.chrisoft.org/blog/img/20170508_074642.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170508_074642.jpg"></a>
- <br>
- <a href="//filestorage.chrisoft.org/blog/img/20170508_074729.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170508_074729.jpg"></a>
-</div>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 好吧其实我个人不喜欢这种搞事……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 表现为因没有排练导致的对ACM系列比赛揭榜的基本规则的完全不了解<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-06-09.html b/blog/post/2017-06-09.html
deleted file mode 100644
index 50312b5..0000000
--- a/blog/post/2017-06-09.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Fuck Windows et cetera")</title>
-<meta name="description" content="«Fuck Windows et cetera» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Fuck Windows et cetera</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Fuck Windows...</a></li><li><a class="toctarg" href="#tocanch1">...和其他</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">a</a></li><li><a class="toctarg" href="#tocanch3">b</a></li><li><a class="toctarg" href="#tocanch4">c</a></li><li><a class="toctarg" href="#tocanch5">d</a></li><li><a class="toctarg" href="#tocanch6">z</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-05-08.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-06-29.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Fuck Windows et cetera</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-06-08<br>#daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-<b>警告:本文某些部分有很重的戾气。小心阅读。</b>
-<h2 id="tocanch0" class="tvis">Fuck Windows...</h2>
-<p>
-两个月前,我的X1 yoga上的Windows 10 Pro Insider (16170)爆炸了。
-具体表现为一旦试图安装新的Insider版本就会在第二次重启后进度达到60%左右(具体数值是浮动的)
-时绿屏(图可见我于5月16日发出的tweet)。由于完全无法查出原因(错误信息过于模糊而且无法找到内存转储),
-一直没修好。一直拖到16170过期(开始每几个小时重启一次)之后,我对它依然束手无策。
-于是5月16日一气之下就重置了Windows安装。此后的几天,除了从零开始配置环境
-(最大的东西是SONAR以及它的各种外围软件,其次是各种开发环境)可以把人累死之外,还算是风平浪静的。
-</p>
-<p>
-今天闲来无事装了个rEFInd,终于改变了这台机器买来之后开机F12选择系统的情况。然后进了一趟Windows
-(此时是16199),发现M$推送了16215,于是就点了安装睡午觉去了。醒来一看,为什么还是16199?
-难道以前相同的惨剧又在我的电脑上发生了一次?于是在我的监督下,我又让它安装了一次。
-发现这次的现象倒与上次不同了:这次会在安装进行到7%处时卡很久然后突然重启。众所周知,
-正常情况下第一次重启应该在30%附近。重启之后它就……它就回滚了。
-</p>
-<p>
-不过幸好16199大概是slow ring的更新,过期时间在12月。不然我大概最近又要Reset Windows了……
-</p>
-<p>
-所以微软这几年下来,换了CEO,依然在变得越来越艹蛋。虽然新CEO声称"M$ &lt;3 Linux"
-<a id="n1" href="#note1" class="note">[1]</a>,
-但作出的事情却更像在挤压Linux的生存空间<a id="n2" href="#note2" class="note">[2]</a>。然而他们自己的系统,
-即使抛开「自由」不谈,也在变得越来越不值得信任。
-比如最近在16199上一个我经常使用的小程序竟然会炸掉GDI并因此导致屏幕上所有元素闪烁/错位。
-</p>
-<p>
-于是现在有点后悔当时为什么没有坚持自己的「方针」,拒绝购买预装Windows的电脑了。
-当然如果购买Mac的话,只是将自己从一个泥潭中拉进另一个泥潭而已。所以,我似乎并没有太多选择……
-</p>
-<p>
-现在我保留Windows仅有的目的是为了使用SONAR和编译一部分项目的Windows版。
-如果这个平台继续如此令人失望下去的话,我不得不考虑放弃这两项活动或者寻求替代方案了。
-</p>
-<p>
-哦,还有一点。我在Feedback Hub里写的所有反馈都如同石沉大海。大概实际上并没有微软的员工去读它们吧。
-</p>
-<h2 id="tocanch1" class="tvis">...和其他</h2>
-<h3 id="tocanch2" class="tvis">a</h3>
-<p>
-陕西邀请赛跪了。
-</p>
-<p>
-总之,只能怪自己太弱。继续努力吧。
-</p>
-<p>
-(回来之后还因为「铺张浪费」<s>、「公然违反中央八项规定」</s>被批判了一番。)
-</p>
-<h3 id="tocanch3" class="tvis">b</h3>
-<p>
-ACM队里的队友耍起了朋友。他来实验室的频率显著降低以及日常行为的微妙变化暴露了他
-<a id="n3" href="#note3" class="note">[3]</a>。
-</p>
-<p>
-虽然,都大学了,谈恋爱大概也是很多人todo list上的一件事,但我希望这并不会影响我们队的正常学习和交流。
-</p>
-<p>
-最后,作为一个asexual个体,一个彻底的旁观者,祝他们幸福<a id="n4" href="#note4" class="note">[4]</a>。
-</p>
-<h3 id="tocanch4" class="tvis">c</h3>
-<p>
-说一说校赛的事情。从校赛的组织来看实验室的目前状况。
-</p>
-<p>
-关于此事,本来是想写一篇独立的文章的。最后……懒。
-</p>
-<p>
-作为校赛组织方中出题组核心成员和一名重度拖延症患者,不到最后一刻我是不会提供题目的终稿的。
-最后也因为这些,在题目上出了一些问题。主要责任在我……大概太不会甩锅而且过于放任实验室其他队伍了吧。
-因为并不信任实验室其他成员的英语水平<a id="n5" href="#note5" class="note">[5]</a>,
-从题目描述到最后的LaTeX文档,都是我一人包办的。最后累趴了才赶完终稿……
-</p>
-<p>
-大概还要怪自己对别人太宽松<s>(心太软)</s>了吧。我下达测题任务时,分了3个等级:
-</p>
-<ol>
-<li>写出6道题的代码</li>
-<li>写出7道题的思路</li>
-<li>写出全部题目的抽象描述</li>
-</ol>
-<p>
-依照校赛题目的难度,15级实验室的大部分成员就是在三个小时内写出除防AK题之外的所有题目的代码也应该并不是什么问题。
-然而,我得到的回应却是几个「请假」的请求和寥寥无几的几个人发来的签到题思路。发来代码的更是凤毛麟角。
-实话讲,只要有任何人认真地阅读过题目,应该就能避免出现在印刷版试题上的愚蠢错误。然而事实并没有如此理想。
-</p>
-<p>
-然后实验室的现状就是,常驻的没几个,干「正事」的更少,大概只剩一两个了吧。
-当然其他成员在宿舍到底是在修炼还是在打游戏还是在谈朋友我也不清楚,不好妄加评价。
-</p>
-<p>
-不过最后,抱怨是没用的,得作出改变才行。顺便提醒一下有心脏缺陷的自己继续这么干下去随时有猝死的危险。
-</p>
-<p>
-<a href="/sduacm2017/">相关链接</a>
-</p>
-<p>
-(最后顺便吐槽一下用了我们出的题目的SDU威海校区给的报酬没有一分到我手上)
-<a id="n6" href="#note6" class="note">[6]</a>
-</p>
-<h3 id="tocanch5" class="tvis">d</h3>
-<p>
-最担心的事情还是发生了:实验室被「没收」了。
-</p>
-<p>
-依据学校的「最新规划」,三区的所有大房间都将被收回改造成所谓的展室。所有实验室均需从剩余的小房间中重新申请。
-</p>
-<p>
-我以前说过什么来着?
-</p>
-<blockquote>
-<p>
-——看我们占着教学楼主门对着的大房间不爽了吧
-</p>
-<p>
-——「这种黄金地段怎么能让你们这种不赚钱的辣鸡实验室占着」
-</p>
-</blockquote>
-<p>
-然而现在的情况还是稍微与预想的有点区别的——被拿来做了可能一年都用不到一次的展室。
-大概又是哪个领导搞的面子工程中的一环吧。不过结果都是大同小异:我们被赶走了。
-</p>
-<p>
-暑假开始之前就要被逐走,于是暑期集训又成了一个问题。情况甚至没有上个暑假乐观。
-</p>
-<p>
-mdzz辣鸡专科学校 都要消失的校区了 搞什么展室 搞你的章丘校区去啊cnbb
-</p>
-<h3 id="tocanch6" class="tvis">z</h3>
-<p>
-org.christine.switch() is now implemented. Just imagine that.
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: I'd just like to interject for a moment. ...<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: WSL<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 使我在他正式宣布此事之前注意到了<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: <s>乌鸦嘴失效!</s><br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 除了水平超强的ldc,没有安排给他是考虑到他的个人原因。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 当然如果能全进实验室经费我也是高兴的,然而……<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-06-29.html b/blog/post/2017-06-29.html
deleted file mode 100644
index 01f0311..0000000
--- a/blog/post/2017-06-29.html
+++ /dev/null
@@ -1,668 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Trash dump for the fourth semester")</title>
-<meta name="description" content="«Trash dump for the fourth semester» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Trash dump for the fourth semester</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">课程相关</a></li><li><a class="toctarg" href="#tocanch1">ACM相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">校赛</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch3">榜单</a></li><li><a class="toctarg" href="#tocanch4">「Net&nbsp;Celebrity」??</a></li></ul></li><li><a class="toctarg" href="#tocanch5">省赛</a></li><li><a class="toctarg" href="#tocanch6">陕西邀请赛</a></li><li><a class="toctarg" href="#tocanch7">实验室没收与暑期集训</a></li><li><a class="toctarg" href="#tocanch8">真的成为运维了?</a></li><li><a class="toctarg" href="#tocanch9">以后我们还存在吗? &amp; 再谈SDU对ACM的态度</a></li><li><a class="toctarg" href="#tocanch10">170722补</a></li><li><a class="toctarg" href="#tocanch11">Yet Another addition...</a></li></ul></li><li><a class="toctarg" href="#tocanch12">各种坑</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch13">QMP</a></li><li><a class="toctarg" href="#tocanch14">SMELT</a></li><li><a class="toctarg" href="#tocanch15">chrisoft.org</a></li><li><a class="toctarg" href="#tocanch16">其他</a></li></ul></li><li><a class="toctarg" href="#tocanch17">弃用QQ与Reddit中毒 &amp; SNS</a></li><li><a class="toctarg" href="#tocanch18">Gaming? WTF?</a></li><li><a class="toctarg" href="#tocanch19">「Freedom」</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch20">2017-08-23补记</a></li><li><a class="toctarg" href="#tocanch21">Who controls who</a></li><li><a class="toctarg" href="#tocanch22">Myths about the GPL</a></li><li><a class="toctarg" href="#tocanch23">Attempted assassination by Open Source</a></li><li><a class="toctarg" href="#tocanch24">Closing this part</a></li></ul></li><li><a class="toctarg" href="#tocanch25">接着婊辣鸡专科学校</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch26">山东挖地大学</a></li><li><a class="toctarg" href="#tocanch27">山东inf个校区大学</a></li><li><a class="toctarg" href="#tocanch28">山东草(4)房子大学</a></li><li><a class="toctarg" href="#tocanch29">山东不准坐高铁大学</a></li><li><a class="toctarg" href="#tocanch30">Closing...</a></li></ul></li><li><a class="toctarg" href="#tocanch31">Other random stuff</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch32">贴吧 &amp; Ballance</a></li><li><a class="toctarg" href="#tocanch33">「实名制」</a></li><li><a class="toctarg" href="#tocanch34">"The Hatred"</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch35">the Apple Hatred</a></li><li><a class="toctarg" href="#tocanch36">the JavaScript Hatred</a></li><li><a class="toctarg" href="#tocanch37">the Microsoft Hatred</a></li><li><a class="toctarg" href="#tocanch38">the <insert chinese="" mobile="" phone="" brand="" here=""> Hatred</insert></a></li></ul></li></ul></li><li><a class="toctarg" href="#tocanch39">生活垃圾</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch40">宿舍?寝室?</a></li><li><a class="toctarg" href="#tocanch41">Side B</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-06-09.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-11-25.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Trash dump for the fourth semester</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-06-29<br>#garbage #daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-
-<h2 id="tocanch0" class="tvis">课程相关</h2>
-<s>于是这学期上了些什么课来着……</s>
-<ul>
-<li>数据结构课设:Qt瞎搞蒙混过关,期间数次试图装13<s>(未果)</s></li>
-<li>面向对象:对象?考试的时候写上的东西大概都是现编的。求过(</li>
-<li>数据库:别人小学就会的东西,我现在还不会。考试大概是混过去的。</li>
-<li>操作系统:没<s>钱</s>买中文课本又听不太懂老师标准的济南普通话,试卷只好用全英文作答了(</li>
-<li>马克思:??????(a.k.a.马季恨<a id="n1" href="#note1" class="note">[1]</a>):??????</li>
-</ul>
-<p>
- 结果就是除了OS上了90之外其他全在80上下。当然马季恨是光荣地以69的高分拿到了倒数第七。
-</p>
-<h2 id="tocanch1" class="tvis">ACM相关</h2>
-<p>
-虽然在夹缝中零星地做了一些题目……但是感觉自己的水平依旧辣鸡。。。<s>只能寄希望于暑期集训了。</s>
-</p>
-<h3 id="tocanch2" class="tvis">校赛</h3>
-<p>
-轮到我们这一届办校赛了。于是又有一大堆事情「很自然地」落到了自己的头上……
-于是不论是题面数据环境配置抑或PC^2服务器配置之类的脏活就都我一个人包了。
-当然该吐槽的我都在上一篇里面一吐为快了,这里讲点有意思的事情(
-</p>
-<h4 id="tocanch3" class="tvis">榜单</h4>
-<p>
-如果你不知道在哪里看榜单的话<a href="https://chrisoft.org/sduacm2017/">点我</a>。
-</p>
-<p>
-首先要吐槽的就是夺冠大热门「粉粉哒小裙子」队新生组被压了。<s>叫你们占着这么好的队名不女装参赛,哼!</s>
-然而这3位dalao的实力在高年级组还是得到了施展……挂星拿到了第一。
-</p>
-<p>
-然后就是一些奇奇怪怪的牢骚啦,比如「新生组G题辣鸡数据居然把|S|^2的暴力都放过去了。该打,该打!」,
-以及「新生组B题才3队过?仿佛在逗我笑」之类。<s>另外到场的队伍都至少通过了一题,看我们题目出的多好。</s>
-</p>
-<h4 id="tocanch4" class="tvis">「<s>Net&nbsp;Celebrity</s>」??</h4>
-<p>
-嗯……事情大概是这样的:在校赛前我由于不可抗力当了一回主播(
-</p>
-<p>
-因为辣鸡专科学校两地办学,所以宣讲会在青岛定为观看济南的实时直播……
-</p>
-<p>为防瞎各位看官的眼,不直接放图。以下这些被安卓的「绿化」JPEG压缩算法压绿了的图盗自某智障<s>学长</s>的qq空间。</p>
-<p>
- <a href="//filestorage.chrisoft.org/blog/img/yzg0.jpg">图1</a>
- <a href="//filestorage.chrisoft.org/blog/img/yzg1.jpg">图2</a>
- <a href="//filestorage.chrisoft.org/blog/img/yzg2.jpg">图3</a>
-</p>
-<p>
- <reduced>什么?哪个是我?<s>我怎么知道</s></reduced>
-</p>
-<p>
- 另外不要在意为什么我们实验室的人都穿得这么奇怪。<s>大概是一种文化吧</s>
-</p>
-<h3 id="tocanch5" class="tvis">省赛</h3>
-<p>
- 该说的都差不多在流水帐里记过了。
-</p>
-<p>
- 虽然拿第二其实是意料之中的事情……但是第一的归属却是意料之外的。。。
-</p>
-<p>
- 明年……再战?
-</p>
-<h3 id="tocanch6" class="tvis">陕西邀请赛</h3>
-<p>
- 太丢人了不说了。
-</p>
-<p>
- <s>某「学长」开一题WA一题好像不足以当作什么用来吹嘘的资本</s>
-</p>
-<h3 id="tocanch7" class="tvis">实验室没收与暑期集训</h3>
-<p>
- 关于实验室没收的背景,请参照<a href="/blog/post/2017-06-09#tocanch5">此段</a>。
-</p>
-<p>
- 于是实验室消失已经是板上钉钉的事情了,现在我们的地位大概相当于「钉子户」之类的东西吧。
- 大约7月8日左右就要被正式赶走了。到时候又可以感受一下烈日之下搬运东西的快感了。
-</p>
-<p>
- 这一届的暑期集训也就因此成了一个比去年更加棘手的问题。去年还「仅仅」是校区装修,今年活动场地却直接被剥夺了。
- 作为「补偿」,学校给我们提供了一个有一大堆他们制定的规矩的机房——这也就意味着再也不可能晚上留在实验室打cf,
- 更别提在里面吃东西了<a id="n2" href="#note2" class="note">[2]</a>。
-</p>
-<p>
- 在这样的地方……大概是很难进wf的。
-</p>
-<h3 id="tocanch8" class="tvis">真的成为运维了?</h3>
-<p>
- 最初听说要成为SDUOJ运维的时候,我是拒绝的。因为我一向对网站运维这方面的工作没有太大兴趣——
- 从我自己的网站有多辣鸡这点上大家应该也能看出来。然而实验室里面大概没有其他的合适人选……
- 所以这事又「很自然」地落到我的头上了。
-</p>
-<p>
- 然后<a href="//filestorage.chrisoft.org/blog/img/Screenshot_20170702_225150.png">这里</a>是我在给现任运维当助手时做的一点微小的工作之一。
- (这样的页面还有数百页……大概多亏了这些testbot才造成了这个辣鸡OJ有上万提交的假象(
-</p>
-<p>
- <s>(所以叫我这种具有极强破坏性的人来做运维真的不担心我给服务器换上Debian Experimental吗)</s>
-</p>
-<p>
- 呃……我们回到正题上来。即将由我来维护的,是几个刚刚毕业的学长<a id="n3" href="#note3" class="note">[3]</a>几年前用Django写的一个实训项目。
- 然而我并没有用Django做过任何有用的东西。当前这个版本最初上线的时候,很多功能还未实现,ranklist东西一多就卡到爆炸,
- 以及随便几个同时提交就能让整个网站崩掉……这些问题都被现任运维解决掉了。不过依然有很多待解决的问题,
- 比如用AJAX的页面竟然不存页面状态之类的……
-</p>
-<p>
- 大概熟悉我的都知道我有一个挖了很久的坑没填……嗯这坑就是自己的OJ。然而看看现在的状况,大概填坑形势还是不容乐观的。
-</p>
-<h3 id="tocanch9" class="tvis">以后我们还存在吗? &amp; 再谈SDU对ACM的态度</h3>
-<p>
- 2016级软工这边的纳新与入门工作结果,几乎只能用「惨烈」来形容。一个学期下来,最后一次讨论班只有3个人来了……简直凄惨无比。
- 所以到底是什么原因把SE的新人都吓跑了呢?16级CS的dalao一个个都太强或许是原因之一,另一个原因就是我们讲东西的速度可能太快了。
- 当然有竞赛经验的dalao去CS还是很正常的,毕竟也就只有我这种脑抽的来SE了。最后大家实在看不下去,就又搞了个第二次纳新。
- 于是现在又有很多吃瓜群众进入了新人群……希望他们这次不要被我们吓跑。
-</p>
-<p>
- 诶……我刚才在说什么?<i>如果</i>实验室本身已经不存在了,纳新还有任何意义吗?
- 假设暑假结束之后,我们并没有申请到实验室,这样SDUACM实验室就成了一个名存实亡的团体。大家就可以收拾东西回宿舍与「其他人」一同堕落了(
-</p>
-<p>
- 所以现在看着SDU在山东省内第一的地位受到来自省内各种不论一本或是二本的高校威胁,
- 感觉这也是不可避免的事情啊。毕竟实验室的负责人已经尽力了,但是学校的态度有谁能改变呢?
-</p>
-<h3 id="tocanch10" class="tvis">170722补</h3>
-<p>
- 几天前SDU换了校长。而我们的实验室也还在苟活着。不过每天都这么胆战心惊地生活在不确定性当中,多少会让人感觉到有些奇怪。
- 就此结束吧,日渐黯淡的现实……
-</p>
-<h3 id="tocanch11" class="tvis">Yet Another addition...</h3>
-<p>
- 从现在的情况来看……以前的担心<a id="n4" href="#note4" class="note">[4]</a>可能要成为现实了。
-</p>
-<p>
- 总的来说,大概是因为对面队伍有稳定而且靠谱的代码输出而我们队没有吧……并且人家队伍交流更加频繁,我们队则更像……三个人在单打独斗一样。但是没有Deep♂Dark♂Fantasy那样的个人实力恐怕这种模式是行不通的……毕竟一般情况下「一支队」还是大于「3个人」的<a id="n5" href="#note5" class="note">[5]</a>。
-</p>
-<h2 id="tocanch12" class="tvis">各种坑</h2>
-<h3 id="tocanch13" class="tvis">QMP</h3>
-<p>
- <s>越来越感觉自己写的是一坨完全没有意义的辣鸡。</s>倒也不完全是,至少目前情况正在改善……
-</p>
-<p>
- 按照🍍的建议改掉了曾经引以为豪实际却乱成智障的主界面,为了MIDI映射器API重写了整个MIDI映射模块,
- 还有各种重构和古代遗留问题的修补……
-</p>
-<p>
- 说起来QMP也有一岁半多了呢……<s>怎么还不上1.0呢</s>
-</p>
-<h3 id="tocanch14" class="tvis">SMELT</h3>
-<p>
- ...gg了?
-</p>
-<p>
- 这个从开始就作为「附属工程」存在的东西,从能用之后就几乎再也没怎么动过。
-</p>
-<p>
- "'It just works'? Fuck that!"
- <a id="n6" href="#note6" class="note">[6]</a>
-</p>
-<h3 id="tocanch15" class="tvis">chrisoft.org</h3>
-<p>
- 最大的变化大概就是抛弃了旧的辣鸡php博客系统,换上了崭新的SBS (the stupid blogging system)。
- 其次就是加入的一堆小页面应用,比如扫雷和排序的声音之类的吧。
-</p>
-<p>
- 所以我即使是一个js hater也没有阻止我写js上瘾(
-</p>
-<p>
- 另外还搭了一个piwik<s>用来满足自己的好奇心和虚荣心</s>。
-</p>
-<h3 id="tocanch16" class="tvis">其他</h3>
-<p>
- 在上面没有列出的项目,基本都处于停滞状态或者没有任何值得一提的变化。
-</p>
-<p>
- <s>反正BLR也没有人期待,鸽就鸽了吧。</s>
-</p>
-<p>
- <s>OJ什么的还是接着用现在这个吧。</s>
-</p>
-<p>
- Compiz? 它因为依赖库版本变化炸了我都懒得重新编译它。
-</p>
-<p>
- 钢琴键盘还是砸过的。
-</p>
-<p>
- 画画?有想法……
-</p>
-<p>
- 啊……差点忘了还有自己那个从来还没有成功启动过的LineageOS for Galaxy Note4 (SM-N9100)……
-</p>
-<p>
- <s>OPL?</s>
-</p>
-<h2 id="tocanch17" class="tvis">弃用QQ与Reddit中毒 &amp; SNS</h2>
-<p>
- 手机QQ已经卸了2个多月了,并没有感到什么不适。也许我这种跟大多数同学交集不多的人,
- 并不需要什么这样的社交网络吧。当然为了看不时从某班级群发出来的通知,
- 电脑的虚拟机里面还是有装TIM的。
-</p>
-<p>
- 现在的主力IM是discord。虽然依然是专有软件,但是从伦理道德上讲,显然比TX不知道高到哪里去了。
- 而且易用性又比Tox这种的强不少(感觉Tox这样的去中心化IM大概需要跟某些离线联系方式比如email配合使用)。
- 不过我个人还是更倾向于写email的,甚至说我更倾向于使用snail mail都不为过。因为作为IM,
- 可以为每条消息思考的时间不长、没有时间考证,容易说出不符合事实/不合适甚至「引发战争」的话。
- 而写信,不管是email还是snail mail,可以用来斟酌的时间就长得多了。
-</p>
-<p>
- 至于Reddit中毒,则完全是用来补上以前用来刷QQ的时间的。 linuxmemes, ProgrammerHumor, softwaregore
- 这几个sub一看就能一整天(
-</p>
-<p>
- SNS也从QQ空间换成了Twitter。虽然这其实是相当长时间之前的事情了,但是定期去刷Twitter,
- 却是最近才多出来的行为。以前那些只不过是自己偶尔上去随便发一点东西而已。
-</p>
-<p>
- 说起来为什么要避开使用主流软件呢?大概是因为我太不(想)入流了吧……
-</p>
-<h2 id="tocanch18" class="tvis">Gaming? WTF?</h2>
-<p>
- 一段时间前更新了Steam个人简介,内容如下:
-</p>
-<blockquote>
- <s>No information given. </s>
- <br>
- This account is setup for using Cakewalk SONAR only. I don't play games on steam.
- <br>
- Favourite games are minesweeper, patience(klondike, freecell, spider, simple simon &amp;c.) and Minecraft. Sometimes kill time with Bloons games from Ninja Kiwi.
-</blockquote>
-<p>
- 从这段简介里面大概能看出我对大部分大众化游戏大概没什么兴趣了(<reduced>不过MC是真让人中毒啊(</reduced>
-</p>
-<p>
- 同很多性格相似的人一样,极其反感其他人打游戏时大喊大叫的行为。
-</p>
-<p>
- 曾经沉迷平台类游戏,后来发现自己手残,大概一个也通关不了,遂放弃之。
-</p>
-<p>
- 对解谜类无感,因为自己智商不够。
-</p>
-<p>
- 策略类游戏只玩塔防。
-</p>
-<p>
- 动作类游戏大概能把我的心脏病吓出来(
-</p>
-<p>
- 东方真的打不动啊。
-</p>
-<p>
- 剩下大概就是扫雷纸牌了(
-</p>
-<h2 id="tocanch19" class="tvis">「Freedom」</h2>
-<p>
- 很显然在这里讨论「那个」自由是不正确的。所以这里只讨论自由软件。
- <a id="n7" href="#note7" class="note">[7]</a>
-</p>
-<p>
- 生在一个遍地是专有软件、几乎无人了解自由软件或者将其直接与免费/开源/强Copyleft协议等价起来的环境中,
- 我所处的环境和rms年轻时所处的环境还是相当不同的。可以说是一个对自由软件非常不友好的年代。
-</p>
-<p>
- 在这样的环境当中,同时作为一个软件开发者和使用者,想要做到自己对软件相关权利的「觉醒」,可能也不是一件十分容易的事情。
-</p>
-<p>
- 显然,我在义务教育阶段被强制要求学习某些专有软件的使用时,并没有人来阻止我。然而<s>最终我还是被选中作为拯救附近的仍然在专有软件地狱中的灵魂的那个人了</s>。
-</p>
-<p>WTF上面那堆东西看起来像邪教中招者的胡言乱语,而且怎么这么中二啊(</p>
-<p>
- 但是无论如何,我还是不能胜任这个角色的。因为我仍然为了「方便」而以「自由」为代价作出了妥协。比如手里这台带有无法完全禁用的Intel ME的笔记本(
-</p>
-<p>
- 最后,在写了上面这一坨完全意义不明的东西之后,希望那些并不真正了解软件自由却对软件自由有偏见的人去真正了解一下它。
-</p>
-<p>
- 顺便 DRM、Intel ME之类拖人类发展后腿的东西应该拉出来批斗一下了(
-</p>
-<p>
- <reduced>上面这些,当/r/linuxmemes或者/r/BashRMS看就好(</reduced>
-</p>
-<!-- .......................................................................................... -->
-<h3 id="tocanch20" class="tvis">2017-08-23补记</h3>
-<p>
- 显然我并不是一个free software activist,但是最近我却又跟别人讲起「为什么不要视GPL为虎狼」
-之类的话题……总之是想试图破除一些对自由软件的偏见吧(
-</p>
-<h3 id="tocanch21" class="tvis">Who controls who</h3>
-<p>
- 对于自由软件来说,是用户控制软件。而对于专有软件来说,是软件反过来控制用户。
-</p>
-<p>
- 一个比较极端的例子:某流氓公司的不给钱玩/用你麻痹策略(
-</p>
-<h3 id="tocanch22" class="tvis">Myths about the GPL</h3>
-<p>
- 作为法律条文,GPL自然也是属于一看就不想让人读的那种(
-</p>
-<p>
- 但是宁可读一下<a href="https://www.gnu.org/licenses/gpl-faq.en.html">GPL的FAQ</a>,
- 也不要去相信那些诸如「GPL是癌症」之类的传言啊(
-</p>
-<h3 id="tocanch23" class="tvis">Attempted assassination by Open Source</h3>
-<p>
- 最近几年,「开源」的理念很是流行。包括某些大公司在内都在极力推崇这个概念。
- MIT协议的大热可以从侧面证明这点。反而对于「自由」,他们则闭口不谈。
-</p>
-<p>
- (<s>然后他们就拿着社区努力的成果放回他们用来束缚用户的专有软件里。</s>)
-</p>
-<h3 id="tocanch24" class="tvis">Closing this part</h3>
-<p>
- <s>大概这种「自由」,只有陷入FSF邪教中的人才会认同吧(</s>
-</p>
-<p>
- <s>不、我还没有陷入……我的电脑上还有Windows呢(</s>
-</p>
-<h2 id="tocanch25" class="tvis">接着婊辣鸡专科学校</h2>
-<h3 id="tocanch26" class="tvis">山东挖地大学</h3>
-<p>
- ——为什么每个假期都要挖地啊 经费多到爆炸吗(
-</p>
-<p>
- 所以经费那么多能不能帮忙改善一下生活环境啊(
-</p>
-<h3 id="tocanch27" class="tvis">山东inf个校区大学</h3>
-<p>
- 8个校区……(不包含前途未卜的章丘校区)
-</p>
-<p>
- 虽然说有了章丘校区之后可能会缩成3个但是从各种迹象来看都让人怀疑是用来施展无处利用的经费的啊(
-</p>
-<h3 id="tocanch28" class="tvis">山东草(4)房子大学</h3>
-<p>
- 该名称起源于实验室被干事件。不过校长换了之后上面好像消停了一段时间。不知道我们还能苟活多久(
-</p>
-<h3 id="tocanch29" class="tvis">山东不准坐高铁大学</h3>
-<p>
- 起源于比赛坐高铁动车或飞机均不给报销(不论是去青岛还是去南宁)。至于原因,说是「超标」。
- 翻译成人话就是「你们学生坐什么高铁和飞机啊」。
-</p>
-<p>
- 说起来高铁也算近年来中国为数不多的真正「正果」之一吧。然而……sigh.
-</p>
-<p>
- 最近比赛发现到很多地方的非高铁动车车次越来越少了。大概以后出去只能坐长途车了。
-</p>
-<h3 id="tocanch30" class="tvis">Closing...</h3>
-<p>
- 虽然辣鸡专科学校依然sucks,但是最近也许有好转的迹象……不过还是有待观察(
-</p>
-<h2 id="tocanch31" class="tvis">Other random stuff</h2>
-<h3 id="tocanch32" class="tvis">贴吧 &amp; Ballance</h3>
-<p>
- 作为一个珍爱生命的SE专业学生,当然早已退出了百度产品的泥潭。
-</p>
-<p>
- 不过历史虽然可以被淡忘,但是不可能被抹去的。
-</p>
-<p>
- 这里是一些当时我混迹Ballance吧时的黑历史。
-</p>
-<encrypted hint="Type in the phrase &quot;Yes, do as I say!&quot; to read this section." hash="9bcd7c3417087e3b22a5105f91923551d465add76a4b8b043cdd9ad030efff9b" encont="0ajt6XFe5ZhQ103ZK2XCGLEQjq39nX7JJTNsjb71GVXZa89yf1XerSHgmNLpRTXKe2m75FciBuTaWPx7JJckbQz8XADddK0+AfBNpZgJ7ftWbYoGo7eVlvKcFMuEP2t3Wg9bKcKEEOIrUpuQ6g8viG/4iuK3QVGL7tE7NqAqRZR0qjkaS1xDnZJWV5MID2Gd3nNl257hNLsa4U2xusV4XyzLuYxXXxr8WVdY4qYarQgEe/pqeaFF53Su+4iNepAj7G9nvtzG/jOfD3+PpVxQFHmbpleqt2/uLIwdDtEt5JxyQrn8QR+nTokC7vA8WXUwuVTphNS0SuX8vW1pIsGONuK9q/MvOOX+OumJ5VGWxkVNQjNU5960vgJM4fNsuWyKdRoDbvBO0hLZF6u37O+baTGTOBrvfhe7+7W3mwo93NxQzx3t0SK3elGgA9J2CwlByQDU+J81DWI4EbyuHYNB+cbODaC5w13/7aPb/l0HGj/7T4OmsJIA0Ew6sikqgiNS7JTGqfGA8WSH0ysqJ1FEw3A9t11Zj3gpYPeFzjYaym/FU5MdtDLO3pDbC/ay8W7cTikWuuIfSe+/2kRzp4uG73EFzml8riviVWcgpVEHnjqKY9QDHXVNk8J+4e9U1P03D3FV18cB9M7HS16S+tn7bVrQ36rh5GNuxX9TXcf/adqHQ+prI0Tw/nHA9i2F+6rPpskubmli91mpFnG9Iu5BY/uiQDVmsVQ/a0UHBIJn5ozVRdPujh5p4meFN6JTOv/DRlPNF1KT2OzImqXW7rx9/AeLgG9RltBI69GY+sExWj3A86OD2R1W5UZSsceuCc3L2cw97+sZ5gVllu5HxVoCGVEvvJSwpfT3zRpkLxUw5Xm9PruFsdHYK4GEGwNi5mYwFkN+sOinCfHImHLy4iUCJHW338/bW/IfQLxZyjQBB8A4qRaNsU2T6J7jxtnt62LzP6DgUd8DgIzoOPHqk0wBu8kVwynKqca8mtM48zSx2n+BPjHTI+OUUNa0CEPLpBnc3uKP7zut0C0KTVYDlXM5kbLQKXnNa8bAdEg6aG5h9+d4GNi9rBiBciQzXgyBqEMtj6qrHW4Fobi+mUhHgGb31TP7sqSUZp/zGB2j/Z8uvT1AAtTHP/BaM+C/CMqiwTkbM9psu6p+xFx3ZMcf4/75nlmQmSNco7NGOxHS6wKi+MuAC+Yj4UqlhoXM1vYPqJsO4g36RY+DiwhoUA+BlYAJV6OQI9QwPuY7VDeTY0ZbuSkRyo8bs9nvMhN3t9YufavELo292OG4T0a2mQjyetia+ShFA/pO4BYqhCht2OQrUWuPQYplqFl28L/21bJXSZ9aEf7/wnhfrJcw2KBnwEnmb3BbjC/c8wYftNixplgwsLRnVgVFua/d2j7K3D1TlTF0O53Oy9J0JFRRGYhy70X7cCdGAuzdHur752lVJxfYiaiPeucgtt+QUDY/CW8czHm7rACvMX0XF6JvFfrLWYBeohxUaWkkVXOoXXEpq61Uw6yKl/RK9AwS6U8Wk4VgrYlTgLWpt3jDyvLbpAY9uCkWoqy8g0/kO9h9/zyplzvzU88rivejhXyt2wJtt5mspggX7+WjPCqMq1V2cpHW2XzVTVzE8yP+LjFPO9GxtcIEAZ161WTzWAsjLPmFiA+3qPcy1kp+PZnJQXKvnYo6s5j1DNxXCddfvWdnafdNyzjFEmG11hReWeT8swEVvxAJrIUnG/7DHAL0u9Iord66dNm0cXplD7z1N7TlGvyFvtTeAyzA4WpvJjS4UsVZRW2HYyIJNkAOQYKqwi/l0MudU7bGNIjSaHLVRsWUva9nq7DPBRBp7VPq7rPvspaPOrlaclAVrtRqYRUT4/vuIXJJL8X/wsNKArebdAbZ6wq8GIhUjPqXERddRyyjvPucFQL9CAcxojsrVPTGWYa4Cf0yn7Zv6PcDcVAX61L6eeAPbe903a/4R4vIgwK7XPeSaj7q9v+7ZX/iV49zsuetyxW5JrG9nmR38yW9NQPt5mAiXSCQumu/lfbz+JX7i5Hl8KjdE+UhZ2+DgBUyCKh9hlqGsf86wrnUpK4hB0nSKboweMcSjveYj8tvQJef6RWOfUdwFQUGW8khKXCG1I8L160ezv4DNAZshKG2RjhGFuHOUm7KbCn6xPDUxoj3AABoSouKIZ5tRcYBicAyMlBbPlPmbvKyIG70kZ5Kw40i1te5jbMg2JWyklUpnsP8u44ysJd11EwdBCEk0mlSroIG7CkG39O8h7dP/mAh8alPcjsBwJmtM/YTqqXf6WZJfTB/6wdOW0hs5zvO1ngmebdG2JdvGcDgBcJtITcE8Inpf2RVzbj2PHUWY5C7Mj6WTaFCCo5u2rW9jB+lQDKJM3XsQ/LtuvZNghc1omZH4Vh+r5TrHr/qPbgs42WMwIeNtR0dKhEh4041Tec3n/HuqJDHSkoMBVRwgDyCrYCpDJHXDBuuAfvmUfqiz/eyBqjC1IBIti23Dmd5exSWekfQbxU1EJH4t0lSFWpxDNkKEQsKYRkcUuZ6BH8O4WB7EftRMTWf3H6zM1lDctWlJj6Rv1lNjJHsRJhfDl04/8BfBOKodhONBIZZcyq3OS+T4O0XTC1aicc+iazvXTt6sZ3BZMiiR18DSKXH4jMviBWXx237ult7rSYfIe272HfnPkdAJIZaGsGctVnnnV1iLSXb2QQpft6+V2+QfVGj+H4y678TWqfGRRpGve/h5Z+/BwRVq//2odjpVU332kzV6JKZ1ZdO8/dneYtaPlf+lWxQ95DI9XwawHoEQG012kM4VnoQcsVb8699mX3GQ9+dUlftJjwkZQFnP73PyOKMoXDMe/Pl/U3Rt5ETxki4cFiq1IQq9mjuIX/0OqfO4DSgLxTsZwlGikrs1WizVDaFSo7x2CHvlTaZxyrdsGoIRPvRobDfp8Dyo2T1jL1npXRjpsLQbczaMe2vmL4BXQsm56OCFE4xq+uvfDxPgtMqi26LfLtpMd9xqcCNV7pZGUXMO2Ne4QS7ehmSpYjB0Jb1oArA9RO7K+vMSADb/+CUmdglBqCe0RCB5fvfIo9tF4N6h12WNF0qmXaYtYb7bWLKLIAq1D7t5Wtf96RDJ3zzmYrUsXEtQq6aXSNCFz3ZxFrTxkRjuvaTrN22P2yArfAKL+ob/LKQq+JnLJNYAJ9u/IDGiDWTwIy+Olh5JS2gJXyPIUWKp7z8cya/wJ+Jb1qrsp2N1MZDdefW8In0Yb+nxJCOh7a9Y76JEMdNwPawO7OlKkgFCc1EYSrlipastEMiHHZDd4r+OJAsJ8BZ3/67MfhcgazvvUoTMn6mt1BKyy/KZ4HUSTgMeE/VRVMO1yHmD8wZMnOWP2tMEH17iy3LpKdDPEOTc2H1KbhY5l8luKbgUY4jfWS6iPufL3i/S/32VyN+iqRIbPWTxytEqqYDnRVk8tiqqw0HfzRLrXz98uv3WuGWdTVo7MsPbaPcxNlJh1zbUSgGS8G27oxgRFSRUM5PAopAn1VqJ7JyXIG4gpYwyfVvFA/nn+FATFTqCymazLmibyWbNBS6+MFhKrweTBcZqS+tHDzENmVudN6pPCAH6MXOlajThjZm/sEtJ1wYtK8jZCQI5R8L8FfoFwaVzBhJl1fcuXl9uZyPVGgFeikckxHv17Z5iSKhozppzPhT7b82/JQg9Pg2U99bN/0wVlcqDOi8BvSTBiNJxzQR4vgpOeSZ7skDkBywXJQwYuIgKqdU6SRK6nBoatnh+udT1wPo2D9ayO2Ja2SjtRBPrt6F6+Ilz5ym38f9+bHCNTCncfitfjoFt1H1i/XgPCIqYpqd36BSwtdDlppJVWe+jJ5/az3cIli9Czp+QztQgPEA5UijOU0zUuXxmrRv7Rr1XAg5vANJSBUGl4pEFw3Y6cqkBIlHNjOc2IVWq4al1ml+CMmT0zibzOcD9bg1aL/R2iItlbf3duJXGa0J2uyaRT/s/ukASq2imR+IdfAoq3PHXZpIYe/8NqKjZJgAbhH2O9Xmxo1BAECkyfOPTzIFNAZ/T5iqCa+venzw48FPm0AFusu9HApmt2quUnOdTBVlUwpy3vqYTFzimTlazaa9bFQSORHZ/mweW74gVKHG+fC3FgrfTGaQ1kYtVYmlWBBI8VQX4jwHaHiTq//9NZiOwjoG+/Un+P7KuSuS6UKgDoc6Lo5ZhUXtss1Fxzd+S8n11XxQe4+UmiYHHVpq5RspNLLHIC9POE4DdYysyhasK1F1oaob5taKRMJw9omkpi7W0IkPD3qqEy45IET2Z8fljaCLosARKhDzNf3YGHSns5ABKwRluBye56Yx30Wx9iHOHriVi2sRZHQuFlR9YLUwra0TJj3yf/vxLMJAdd+yhsyslkX8uU7B9aKq2ZWZVb6VnyuCvOmEyEloBUBH6ZWNYMbNzCVDVlnV8XUHCAI8esMI9G05GCufIDg9dnioYFpv8JCFTHI+uDeefJKpuIIkeP1sJjnnoa/9gch8oh8fMQ/iJV9o8/ltD9wUzr1knk/gloO7yIuXcTkBlq4xHR7CmVj75A4Kwu9sVVUoTJ1kAyXT78Ct+n0RHd09+vhXEX7342U8GsyekTLg+Rdtn67aM2PNJS3hRsHmNbrsoWWepYXugX506a5UpdIOcxmE3xyzF7oWU8M2OGfWnkLjBDEsduv+FeEH0ENvZ6TBBjMBz3Y2JDnoa44mZDz9BDbZlbx3Wz645T+HO43ykDRajL2QpOK7fl7e/kk0FExSZlQFurfQtoy5er3S2R809O3aet1cMcJPMe5syqVRqTYskI0zg0gqNKI7Vd26kg5RlmPy1LADWp3QlueAD3iPA8yK2OInBTWlu0nwYxOodWndzPHN3sbC4r/+lVelsfWWf1/p/zQmq1PErIB/lcH3pLxxvWgbEBUA/Qy69GuKheHWBGk9PvBiKoK+XFFjQnXxPBfThJhelXKcu1WHtsr7rHa0qwt/d/EIMlJYJYfHLpYfX8Qet7Hl/dC/WWJmjUf6QdSuEKVapbyccyZjOU2HDwuTZqnmUYzrZufRue6hC9rh6JOHv3+/0dqAmB+x2DNBuPrGctdpUIOGuHf5v/2MZqoJQC9qMIy7llFBZSYicZpdQdtL0BsDLTijT3i6bxucCWOmAv0we280CVENeMiVU0W6gTJF0UApq4EDujKxE756thURmcX3TfMDYsTQIUORXJ0WUdlHeXwZyWhkOFgQLvKS73w20N+cP48DJ5AmasKOBDAWYmltpREmrZ3MUw8JbsqVzTEuVfPDKWGcodsBnws+/tVlQ+uPJcU6nen5OjYfSLPDIfvxIYKhUMboHNGbGIuiH1+PhxfrzfKEczqB1xAji2L2eadMpLYXsUpUTv33rOBOyso4TegWHhJu1YZGpmk0S2ldqrn+yiddlMnZf+KnlhhpkmIKja8uqI1fERJzO08Fqdn5uvbgSrUc1AiM95zDc8ipLXiPeVZsk9UdRYJ9PQX9ycFZP03THfUWzaO/thLAEvHCMBUKcFMspgZ/VvEry+XMuG9w/4T7kHj32QKDfIDOZVxpvgptbxbICw6R3H1o0yaX0YbTwi6s8gcVZZudJ4HDx38TdGBMDKMqr6/PluW30jxNxfchcH1GDjHLG4bjVTQZ4hcMctBPmvO+dtbITy4uSXtyXeEGmzsqZwOGej/lWvMUhdlJtpo7VYoIv7j46lkUbD5r5UkSdDtZTNGt7uIt1zfZinE+oMkWAm2XievFo+HPajhQv2f1xvcT8nK00HT0nLpjOJUjYVBHaNj0aBWnrIdxgi5CDToler24jLlRbjoPAxgGBppLEJagNuArI+YnEL8WnoNcixvn9tsZ+Dw+ciHK7jTUzzyViPJ6ZGykALiSFcrC7j1BGnDbqrKj8nSPM25iLAlYvFq5QoMRhvxvssO3cYWTBYmI7MD8WaLETJhJzg5MWjw//4gMzvuPKE8y0W57RLDHRSiPxuQ7WfrzrTksK6FNX3TvFrKcR3AgUqaoeKQNe9Lp/qmPnZ3PsaBpFb8Yq0QnDJCPSYeEujfWBmYQ80Qjn359ZrGsIbY8Tuo70my50036FWVThxZdcdzY7xTzGP4qVvyHMapKZcQ8V+yAIkedJejBDNUhORyl4dApoTGFoVH35Z3fZUR8z4CdHfkxqnvlIh65NCCTTLKpUJUgWsa4T4DBKc7euQIejS8uMT3ms2TUZn2+pScasKgBeMkSD3jNt5JVM4ONsrLL28V9IaRzgB24xEf+BxddUEP5Y2rSU+y1H1TmBsWvt2CquUJ6aJKan8t2m610m7aW1SExwtgTeIJ4joXZwT0GokJIXZsTYY2bVx/eOtA82j97K5l71fUF3Ftu1iX3NPVeQuUZ3dsRo2zuVBNmSebuIbS5M/gXya5YXSxseN93kp2FLh90K7XCKbOk5K2a09XnfGjBqOvas/ZQV3ottnNCJiS0mDrUeSZmZKpxoPHhSqPfzcCGHyG2G5BH+EpBx+eoGuagMSlo5mFKoKDZ0OVxNTC5P73dDVbV/SbSjnvhf40YObGK+Ege4Pije/nt2UZ0cyW+ZXvN4Tp6NosBA511xg/L6mRxNAuCAH9Jz1bh/LurVaXt/SyeSqQXdR0yd1nZNp9G9xGF1tKr+R1XL4bqCYkGX9EQgbL8sjF7bnrRLft8STDv6Vco0Tk0RYDrMbGYuOoMLj/OQoYcWI4X+7hp5kvA1AE1jVFJ98w3LaUyDvMCRpFbUl7ZR9CPslKu3Ivc3d0TOS7rkW1u2L8TEf5PZRuZU8OrkEPKXiEljeNWsa/7VD5B/vvAffB/n3OWA7+EJhVvQSWUjXt03h5tr1ZLmcTRsQySGh6gPmUMjwun7dGi1vJhmSPjfvKd8pVC/jpGxXQSligYtaDGB5r71hVcHkh5bssgRCst6t+szN5CkRFyDsnTuwE1kqs0YTm+2CBwGb6IVH3Mcsq1dpix8hE5Dm/ekLlg9YTBj4AYFzDwxoHTCAiOixwc3KUR3XYETnO2Txgpik7SVhukebOiMZYwM0NxFN5eFkM8cIXs6y8E+mGhhLQr0pOUppJbJUUV4TJl4O5P4YsnxRpIMseZ8jVc3R2amUS3jtKXJJ14W9Bdo3SMy0cBmvXBVqRSdwoeh11bD8FVKzDrmUEy2XEz8PKNS7wyAQxxI0/N8MS6N2J5b8SEOMf/HyxXUnFyh/C0vAcXmyDttSm6bCFzHP2UfGXyXlF1cCadSr7684A96FkqzxS40iayc+DPVXHasz+McUtQBUvZV7/C75m70IyPXtLV0/7ZwTgln7f3Zzr1NssBqVW/HqbUmqWpDrLMGbLNiHy+GPhU8udoO5hwf//KIzJyRT/xE2QpIKtd+m/5XDsBn9k20o6TdBPX3kirxpHAZ4eGIL33fnf8nvsZ+qSnoim5vbLEsGc7gvn4eyLRix5YleW7t+C8F/s1wyGQrZQiGG+ig4K30OYn/F+h7GghbkmY0lj9megWRuekJIdOU2Mt1uhgmkbJMRlmGWReZjqVh/jerjk2nCQNKbkmcz+weSxUyE7r+T9U6XdwrYOdxrOVZthgABFiFtP8DxHInj/GhYpYf+4rIrr1g1aGEjB9pDb7lvwGwLbDQF5awwTm78xvZc+iE4CHDb4gAJw9sj5B/2FQ9MRgPmOIr685pTfRO6/hEnT8HoSZNh3Vwb1Rd1d3ROsKFGMJqMLinwbbY2oU51Wj+Cqn5UvpSHRUnvRPMk9zC6OJ50slI1kVItE95XVBDhCttCEl88S24NKrCX3kS9eUjaj5WK/axgeFMkMm4F7T0AnG5tcDiS93rSy8ZwzGAmyX7U1LHDaxPbsCLq3iS8dsznKlRdke8FoghCYLiM5TYBRwDLK9ew5iOml2Hcl44TiiI9clz6HdtwYdwCcNRv/uHufOl7Ty2UFddQ3UVr83YhPjTeIxHa0sJYXxjRz7e4QVoTlldY9+qmGimjMG3A8WVGli45MUqON97X/2G+fiS9J2AbMyB2cOYIcaMRGZ9E7U68xljcOEkAn+IcYeGW7l8FWGcOn6B1VMSDf1tmtnwdYtLueq9F1NnMpfYtsAg9iPqWmAcHohVUhvHRFARd3lo6Q9TLGQOc/wLgIgxVynyfbnTBapJPKcX9tDIn/JiushUPolin6v01T5mEVD/rKXJn6JBl5TeoUU7m0rxFpntYa0l88pAuu4fZfSOVxbTnwEKl3Z1R7ywMXFmm5aCxGDpHPmvPEjVppIKyXd09Os0tQMD/F9MJ5jDApfTmM8wYlTCbmJ6WnvSTtVjtFGm3y0q+nGvR0h8bd9FBy9wL7M9pMooR5qkq+IBQrEGJKdk83cUIDS/2olyNaNHNQksJOhslDgVSbJ9raR3/gYZnmoSYI3EAP3VqaMYvf7JHVqWXQcDK92y8tKPbHUUyYK0pzFvV6oh0br8HYAyjIece2FKljRPSxvhZ/HBQRt2cWruKLhcUKxNAxskqbH3MpxL7OmlK5aHtR1UEvsAL5poVwOZgKR95FRyi7vjoJJUmuIO0I/cdmdFxHziwHg3Mpr80Q6+AKZrv7lAIHSF49iMBKdFKJT7NwT7fEoY6pi42/OKbcu5+fS8zTIGSTCo8wVGtNkMs5c0CeHdOfa6A3jMgxk8C9QSq90wgryX2L1hEbOirWZZhn51ahp1bVEtbJ+vH0MXsfvlrDuYhHCK8MqkEYV0OblL5pPxR7TYMCeGxZBLRAACYsfRMwr09v/72qlxBncOayQ1+LskUKXTN/ywI0c0UHzjzVDhVqYTFajLC5ihe8iXdZ/xer98BtPypa5I9oLBNCF58YRBXj+BheyR+VjJGFyI7jot4mlH7cec/+iBBZK3FCYYnK/BJ+vaQBwCjLl8LSLpRsN3RXOPDhTkJ55//byNA0eITCxxhailFs41wb/iguXtXZYwKwQAcInyRoq+17/RY8eSaIm4TF+SSpV2gG05QtTAC47TMbNuifS6XA47ZgGwYV8SfpmMcDji97lPjn8mEMGprRzUGxBOVpD35nsRluPerm/AosNRACjrGkt0Pl5kQ6mAJTZirmcgVOpW4pEu7GHwRU3i4s5XujRs9R/iafQCmONjCV2lHDjnvo3zkyKUCMVtiypSCY26wtOrIDut0CYqIyWI6cV5U/tyeY/CvigqYjtRG+ktcstMzJF9nied6tzqMTGLkvADzViIKn5qtlpig+KejAJ/m8khupbivf/TMnxpaF8p+YYatk+xMEZjLj4V0cuT+rRejP4+LCQdXrV1L+aQKt7ygK0J4wGj4njv1ztnzC5iQMAAv9rbAmALu2iHFLvk2BItLGhY+rsEd3HtyJCg/aDEvlOW7tWtMT4P5RqzHNZPdapr7TP+M7iDDyhdLfxsVd2DsOt03+YJRqVE2d5T30Ww5mQ4Gj+1idmD3lEIEI7gxLCEbQyu/4Nu3uZuIyULHt2PoS8SiFYCuyup55bisvnIZIwmb/6kpa8t4F7u5dtaCY8h+bJkhqDYJkMXIw66ocVUKqiDQtJ3NCJ/9nr9SaIMv5o1gny64ZqHW9XRDWf0g2XGlgLb8Sn//u4MDXcDfMevo2rnT0O3aMZhXowV7YAnhaYTMy7OS9r+P0Ll26SIOlSDdYvsyV7sQe+z7/EhI6LGTzUsXszIxyPHdbwXV5fExx8Re1g/bzK2473iw+WAkaOql8txew4CEQ5iuo29vCoauVW4t/Ugg0HMbAkWyBqeHA9y2utjGglbWgFyAlWneV2EPLM47KrI4IrguxmKcPotwAbjviOnUjlbHgIe8R9xTre" enid="0">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(0)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<h3 id="tocanch33" class="tvis">「实名制」</h3>
-<p>
-国内的实名制,大概起初是为了公共安全和一些其他众所周知却又不可告人的目的设立的。
-后来又披上了「便利」的外衣:比如坐高铁刷个身份证就能进站啊之类的。但是现在的各种便利,
-几乎都是建立在牺牲了什么东西的基础上的。
-</p>
-<p>
-至于实名制牺牲了什么,我想大家都很清楚。
-</p>
-<p>
-当然我也不是全面反对实名制,我只有一个需求:获得我的信息的实体能够取得我的信任。
-这个要求并不高吧?
-</p>
-<h3 id="tocanch34" class="tvis">"The Hatred"</h3>
-<blockquote>
- <p>
- WARNING: don't take this part too seriously (except the Apple part).
- However if you have to do so and I accidentally poked fun at your beloved thing,
- please don't chase after and bash me. I still program a lot in Javascript anyway.
- </p>
-</blockquote>
-<h4 id="tocanch35" class="tvis">the Apple Hatred</h4>
-<blockquote>
-<p>
-He figured out a way to make computers that are jails for their users and make them so shiny
-that millions of fools would beg to be jailed.
-</p>
-<div class="rightaligned">--Richard Stallman on Steve Jobs
-<a id="n8" href="#note8" class="note">[8]</a>
-</div>
-</blockquote>
-<blockquote>
- 「此恨绵绵无绝期」
-<div class="rightaligned">--《长恨歌》的错误用法</div>
-</blockquote>
-<ol>
- <li>
- 限制用户/开发者
- <p>
- 苹果设备限制用户是出了名的。它甚至连用户使用的音乐格式都要限制<a id="n9" href="#note9" class="note">[9]</a>。
- 而我从获得第一台也是最后一台我的苹果设备——iPod Classic之后,也是立即对这有了体会:
- 为什么一定要用iTunes才能放东西进去?为什么苹果认为ogg不是音频文件?更多例子还有iOS的强制更新以及不能降级等等。
- </p>
- <p>
- 关于后者,单是Safari/WebKit独霸整个iOS平台这件事就能说明了。
- </p>
- <p>
- 另外,#RightToRepair。
- </p>
- </li>
- <li>
- 高到离谱的价格
- <p>
- ——我为什么要花大价钱买一台配置上不如其他设备而且会把我的选择权夺走的设备呢?
- </p>
- </li>
- <li>
- 莫名其妙的「闭环」
- <blockquote>
- <p>
- As the weeks and months roll on you become convinced that your
- Mac is superior hardware to all other hardware – and that Mac OS
- is doubly superior to all other Operating Systems. This
- conviction quickly turns into an annoying habit where, every
- time a friend mentions a computer problem, you snarkily suggest
- getting a Mac.
- </p>
- <p>
- You die alone. With your Mac. Because nobody likes you.
- </p>
- <p>
- Game fucking over.
- </p>
- <div class="rightaligned">--"Linux is Badass" by Bryan Lunduke</div>
- </blockquote>
- <p>
- 苹果的产品是毒品:能让人产生快感并且致人上瘾。
- 一旦成瘾,使用者会不惜一切代价使用更多毒品。但是我们都知道大概是没有对使用者有利的毒品的。
- </p>
- <p>
- 更为可怕的是因为没有东西约束这特殊的毒品,它的使用者会跟苹果一道,大肆宣传这毒品的「好处」……
- 结果可想而知。
- </p>
- <p>
- 也许正像rms所说的那样,正因为苹果给用户精心打造的「铁牢」如此诱人,
- 以至于他们都争先恐后地往这铁牢里挤……吧。
- </p>
- <p>
- 看到实验室内好几人都先后换上了苹果全家桶,我感觉我可能有必要担心他们的健康状况,因为……
- </p>
- </li>
- <li>
- 平均素质不高的用户群体(尤指「果粉」)
- <p>
- ……当一个鸦片成瘾者对你叙述吸鸦片的种种好处时,你会作何想法?
- </p>
- <p>
- 「这人完了」
- </p>
- <p>
- 这与上文中不幸在Linux is BadAss - the Adventure选择了购买一台mac的玩家最后的结局是差不多的……
- 某种程度上。
- </p>
- <p>
- 还有那堪比高中英语老师解读错误的完型填空答案的洗地能力。
- </p>
- </li>
- <li>
- 远未达到垄断地位的垄断之梦
- <p>
- 这里要说的是前段时间闹得很凶的「苹果税」事件。感谢61小姐的提醒。
- </p>
- <p>
- 说起来这也是正常的——要知道「微软税」的存在大概比「苹果税」要早得多了。
- </p>
- <p>
- 要说原因,大概这段的标题已经点到了。
- </p>
- </li>
- 以上内容,只是我个人的拙见。果粉们当然会认为这是一派胡言。嗯……
-</ol>
-<h4 id="tocanch36" class="tvis">the JavaScript Hatred</h4>
-<ul>
- <li>node_modules</li>
- <p>
- 说实话我当时以为服务端跑js就是个笑话,谁知道现在不仅成了气候,而且闹了个大笑话
- <a id="n10" href="#note10" class="note">[10]</a>……
- </p>
- <p>
- </p><pre>du -sh node_modules</pre>
- <p></p>
- <li>jQuery Everything</li>
- <p>
- stackoverflow综合征?(
- </p>
- <li>Javascript truth table</li>
- <p>
- Makes shit sense.
- </p>
- <li>jsFuck</li>
- <p>
- <a href="https://www.destroyallsoftware.com/talks/wat">Wat</a>
- </p>
-</ul>
-<h4 id="tocanch37" class="tvis">the Microsoft Hatred</h4>
-<p>
- Microsoft, better known as M$, has done many unethical things.
-</p>
-<ul>
- <li>NSA+GFW/Windows</li>
- <p>
- 广为流传的meme。由于各国的法律,大公司被要求向国家情报机构提供信息是……可以理解(但(已自我审查))的行为…?
- </p>
- <li><s>Safe</s>Restricted Boot</li>
- <p>
- ——<em>我</em>的电脑为什么一定要安装<em>你</em>的系统?
- </p>
- <li>Ad Bus</li>
- <p>
- 某媒体称Windows 10为「广告大巴车」。
- </p>
- <p>
- ——事实上这个评价一点也不过分。开始菜单中默认推送的广告和一些莫名其妙的通知真是让人想把电脑砸掉。
- </p>
- <p>
- <reduced>Cannonical曾经也在Unity Dash搜索中植入广告……<s>果然是一种要被M$收购的信号啊</s>
- (不过还好现在默认关闭了(</reduced>
- </p>
- <li>Shrink Drive</li>
- <p>
- 丑名昭著的Onedrive(skydrive)容量缩水事件。
- </p>
- <li>WSL -- toybox of nonsense</li>
- <p>
- WSL成了Windows吸引开发者的又一个噱头。可惜这种东西大概只能作为现有Windows开发者的玩具而已。
- </p>
- <p>
- 然而前段时间的WSL还不支持UNIX sockets……(现在似乎支持了(
- </p>
-</ul>
-<h4 id="tocanch38" class="tvis">the &lt;insert Chinese mobile phone brand here&gt; Hatred</h4>
-<p>
- 其实也没什么。毕竟有个小米这样的搅浑水的拉低大家的价格水平还是不错的事情。
- <reduced>甚至苹果都曾被一度拉下水推出了iPhone 5c,然而后来看透了我们穷人的钱是没什么好赚的。</reduced>
-</p>
-<p>
- 当然,只要质量上去了,有话还是可以好好说的。
- <reduced>曾经对华为有过些许好感,但在发现华为水军及P10闪存门后这种好感迅速消解了。</reduced>
-</p>
-<h2 id="tocanch39" class="tvis">生活垃圾</h2>
-<h3 id="tocanch40" class="tvis">宿舍?寝室?</h3>
-<p>
- 由于个人的语言习惯,更常把这个东西叫做「宿舍」。然而我发现也许叫「寝室」可能更合适一点。
-</p>
-<p>
- 因为我每天只在23:00-8:00在里面睡个觉呀(
-</p>
-<h3 id="tocanch41" class="tvis">Side B</h3>
-<p>
- Broken pipe.
-</p>
-<encrypted hint="Don't read it." hash="4d35086eef63234bf06581d1a11d4e6258ada0bda4e7fca62e6450251f74a650" encont="8BZ58RiHYpZTtmvp0BHcSWfXHYuMEs0r1jF7uHqWd0/DUylP7PSzljO4YzaWrMuP7cc/YsMxHAzJKM1Sn0qXQQPyHLXvfiULvjbpQYC5JTUwFmbxdxYEl5sVFPViFmC2kjiSeFkTZxAC2ZZtIcD4APzt9/LW1F5E6bQZphDX9JaL6/v8YpeVQWCTG3cKVIeCHFCytIw700UC6C4kZK7U4hc8y2uU+qPF8q700NvSMwuWmbVQTXQQwQ==" enid="1">This section is encrypted. Click <a href="javascript:void(0)" onclick="decryptui(1)">here</a>
-to decrypt. <noscript>Note that you need have JavaScript enabled for decryption.</noscript></encrypted>
-<p>
- Did you regret reading it?
-</p>
-<p>
- You did, didn't you?
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <a href="https://youtu.be/lgOMx8kWLtU?t=8">https://youtu.be/lgOMx8kWLtU?t=8</a><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 嗯……我希望不要禁止在里面喝水。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 2013级<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 被挤到二队<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 对BLumia的博文的可能不准确的引用<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: from <a href="https://github.com/BryanLunduke/LinuxIsBadass">Linux is Badass</a><br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 我很明显地感受到自己已经开始向熟悉的人「传教」了……虽然没达到「软件自由活动家」的程度但是大概也是没救了(<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: <a href="https://youtu.be/fkkDvKGcNSo?t=1081">https://youtu.be/fkkDvKGcNSo?t=1081</a><br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 来自61小姐对iOS的抗诉<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: 指reddit上及其他地方的关于node_modules的meme<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-11-25.html b/blog/post/2017-11-25.html
deleted file mode 100644
index c8d1e6c..0000000
--- a/blog/post/2017-11-25.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"A short post on Cakewalk's death and my music production")</title>
-<meta name="description" content="«A short post on Cakewalk's death and my music production» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">A short post on Cakewalk's death and my music production</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Death of Cakewalk</a></li><li><a class="toctarg" href="#tocanch1">My music production</a></li><li><a class="toctarg" href="#tocanch2">Future choice of DAW</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-06-29.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2017-12-21.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">A short post on Cakewalk's death and my music production</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-11-25<br>#music #garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<h2 id="tocanch0" class="tvis">Death of Cakewalk</h2>
-<div style="border:1px gray solid;padding:1em;">
-Cakewalk died.<br>
-Imagine your old trustworthy friend suddenly passed away.<br>
-It started as the feeling in a harsh winter.<br>
-Then there was anger.<br>
-But finally it all ended in pure voidness.<br>
-So long, Cakewalk!
-</div>
-<p>
-As stated by Gibson
-<a href="https://www.cakewalk.com/Gibson-Announcement">here</a>,
-Cakewalk was SIGKILL'ed, perhaps due to insufficient resources,
-or a dangling pointer. Anyway, it was finally killed, with all
-development and vending activity ended.
-</p>
-<p>
-I encountered Cakewalk in 2009, when I was skimming through an old
-magazine on computer software from 1998. There was an article about
-Cakewalk Pro Audio 5.0. Back then I was using a piece of software
-called "Music Maker DX" to edit MIDI files. After that I started
-using CWPA 9.0, which was, obviously, pirated. I used external
-synthesizer such as Timidity to produce audio files, because I had
-no idea about what I was really doing at that time.
-</p>
-<p>
-I thought CWPA 9.0 was the last version of Cakewalk, and that Cakewalk
-has long been dead, until somewhere in 2011 I found that they had
-renamed their product to SONAR. So I tried SONAR 6 (which is, again,
-pirated) and was fascinated immediately.
-</p>
-<p>
-In 2014, I started to try (pirated) SONAR X2 Producer. After a (really
-long) trial period of a year or so, in 2015, I finally purchased SONAR
-Professional from Steam. Soon after, I got the SONAR Platinum Lifepass,
-which hopefully is a penance of my earlier piracy. I made my major
-production during this period.
-</p>
-<p>
-And then it was the saddening story at the beginning of this article.
-</p>
-<p>
-I've tried multiple DAWs, namely FL Studio, Cubase and even OpenMPT
-(which is actually a tracker). Only SONAR deserves the words "it just
-feels right" for me. It is also my first time feeling saddened by the
-death of a proprietary software. If Microsoft ceased the development
-of Windows, I would be much happier.
-</p>
-<h2 id="tocanch1" class="tvis">My music production</h2>
-<p>
-I'm going to pause any music production of mine, not only to mourn the
-death of Cakewalk, but also due to my lack of time and inspiration.
-</p>
-<p>
-Most of my current works are arrangements and "reverse engineering"
-(「耳コピ」) of Touhou project's in-game music, with a few original
-but mostly unfinished works. Therefore, to review the basic music
-theory, regain my piano skills and to learn from the works of great
-predecessors might be the most appropriate choice for me. Although
-I have an extremely small range of audiences, it's my duty to make
-sure that they won't be pissed off after listening to my works.
-So I guess those steps are also a must before resuming my identity
-of a music producer.
-</p>
-<h2 id="tocanch2" class="tvis">Future choice of DAW</h2>
-<p>
-<b>Cubase</b> is another classic DAW. It's even older than Cakewalk.
-It has aggressive DRM measures, which makes Steinberg much safer
-from piracy than Cakewalk. Apparently that DRM is also the center
-of controversy over Steinberg. I've got many of Steinberg's instruments.
-</p>
-<p>
-<b>Reaper</b> looks nice and is fairly priced. Might have a try later on.
-</p>
-<p>
-<b>FL Studio</b>. Doesn't feel right for me.
-</p>
-<p>
-<b>OpenMPT</b>? ...
-</p>
-<p>
-<b><s>Vocaloid</s></b>. That's not a DAW.
-</p>
-<p>
-Contact me if you have other suggestions.
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2017-12-21.html b/blog/post/2017-12-21.html
deleted file mode 100644
index 0067a81..0000000
--- a/blog/post/2017-12-21.html
+++ /dev/null
@@ -1,964 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"为什么我&amp;lt;i&amp;gt;就是不&amp;lt;/i&amp;gt;使用Mac")</title>
-<meta name="description" content="«为什么我<i>就是不</i>使用Mac» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-table,td,th{border:1px solid grey;}
-table{border-collapse:collapse;width:98%;}
-td{padding:1em;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">为什么我<i>就是不</i>使用Mac</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/device-review/">device-review</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">前言</a></li><li><a class="toctarg" href="#tocanch1">美观与显示效果</a></li><li><a class="toctarg" href="#tocanch2">系统功能</a></li><li><a class="toctarg" href="#tocanch3">生产力应用支持与兼容性</a></li><li><a class="toctarg" href="#tocanch4">系统稳定性</a></li><li><a class="toctarg" href="#tocanch5">可扩展性</a></li><li><a class="toctarg" href="#tocanch6">其他有关用户体验的部分</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch7">关于字体</a></li><li><a class="toctarg" href="#tocanch8">关于程序安装</a></li><li><a class="toctarg" href="#tocanch9">关于“清理内存”</a></li><li><a class="toctarg" href="#tocanch10">硬件部分</a></li></ul></li><li><a class="toctarg" href="#tocanch11">结论</a></li><li><a class="toctarg" href="#tocanch12">后记</a></li><li><a class="toctarg" href="#tocanch13">附:关于Mac的使用体验</a></li><li><a class="toctarg" href="#tocanch14">真正的结论</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-11-25.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-01-05.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">为什么我<i>就是不</i>使用Mac</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2017-12-21<br>#garbage #device-review</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-<a id="disclaimer"></a>
-声明:本文的写作仅是为了陈述<i>我</i>为何不使用Mac的原因。如果你认为我在试图说服你
-(或者其他人)不要使用Mac,你可能需要<a href="http://cn.uncyclopedia.wikia.com/wiki/%E5%B0%84%E6%9D%80">接受治疗</a>。
-</p>
-<p>
-前段时间<s>(嗯……大约有半年了吧)</s>一个在中南大学的朋友给我发了一篇他的同学的文章。
-当时并没有注意。最近在地址栏里却又发现了这篇文章。读后感到自己的受到了「冒犯」
-(开个玩笑)。于是现在就写这么一篇某种程度上类似《檄英王鸡》的玩笑文章。
-仅仅是为了表达一点自己的想法(以及娱乐)。
-</p>
-<p>
-<a href="https://www.tail0r.com/why-choose-mac/">原文链接</a>
-</p>
-
-<table>
-<tbody><tr>
-<td width="56%"><p>
-最近很多同学来问我下一台电脑是否应该购买 Mac,于是我决定写一篇文章说一说。
-</p></td>
-<td width="44%"><p>
-如果是我的话,我会直接让他们<s>滚蛋</s>买啊,看别人花大钱什么的是最令人愉快的事情之一了。
-</p></td>
-</tr>
-<tr>
-<td><p>
-我一直认为,电脑是手机之外最重要的生产力工具,
-</p></td>
-<td><p>
-wat? 手机是生产力工具?请用您的iPhone X制作一张报名表,或者用它写一段树分治?
-(窃笑)
-<a id="n1" href="#note1" class="note">[1]</a>
-</p></td>
-</tr>
-<tr>
-<td>
-而<u>一个先进的生产力工具应该具备的特性是:强大的生产力、愉快的用户体验、高度可定制性、
-较低的维护成本</u>。
-</td>
-<td>
-1. 喂,这个其实是看人而不是看设备的吧(<br>
-2. 「此网页遇到了问题」<br>
-3. 听说你跟LFS比<a href="#customization" id="custa">可定制性</a>(逃<br>
-4. Do you want to install the updates now or try tonight?
-</td>
-</tr>
-<tr>
-<td>
-对于操作系统平台而言,即是<u>优秀的用户体验(美观性和功能性)、丰富的生产力 App 支持、
-坚固的系统内核以及系统的自动维护能力</u>。
-</td>
-<td>
-1. <a href="#tocanch13">见下</a><br>
-2. vim(和emacs)用户:被称为「App」的东西竟然有生产力?<br>
-3. 听说不需要密码就能登陆root账户的系统内核很坚固(<br>
-4. Do you want to install the updates now or try tonight? ×2
-</td>
-</tr>
-<tr>
-<td>
-因为操作系统从底层决定了一台电脑是否是合格的生产力工具,因此本文将着重于比较 Windows
-和 macOS 操作系统(考虑到大多数人不会使用 Linux),并在篇末用较少的篇幅提及硬件的部分。
-</td>
-<td>
-真不巧,我不是这位作者所说的「大多数人」(<br>
-<a href="http://harmful.cat-v.org/software/operating-systems/osx/">
-worst *nix variant still in use</a>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch0" class="tvis">前言</h2>
-<p>
-本文作者 Frederic,致力于通过各种折腾提高效率、优化体验。三年前前一直使用 Windows
-系统,之后在 MacBook Pro 上使用 macOS 至今。
-对两个操作系统的特性及应用支持均具有较为深厚的了解。
-(声明:由于这三年基本没有接触过 Windows 了,部分观点可能具有一定局限性)
-</p>
-</td>
-<td>
-<h2 class="notoc">前言</h2>
-<p>
-本文作者 Chris,致力于乱搞和写bug。6年前主要使用Windows系统,此后入坑Linux
-并将其作为自己的主要工作环境。(发行版使用路线: Ubuntu -&gt; Debian -&gt; Arch -&gt;
-Gentoo)。期间无数次帮助操作自己的电脑甚至不如我熟练的Mac用户解决各种问题。
-(声明:<a href="#disclaimer">上面已经写过了</a>)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch1" class="tvis">美观与显示效果</h2>
-<p>
-作为一个有着美学执念的人,我决定美观性放在第一个来说。下图为 Windows 10 和 macOS
-Sierra 的 UI 对比图。总体来说,Windows的界面已经被彻底扁平化,运用简单的图标、
-大面积的色块,层级表现不明显,主色调为“科技蓝”;而 macOS Sierra
-基本保持了拟物化的的风格和比较浓郁的阴影效果(这是与 iOS 不同的地方),
-更加注重细节的精美,主色调为灰色。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_a.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_a.png" width="90%" decoding="async"></a>
-<br>系统桌面对比图(左为 Windows 10,右为 macOS Sierra)</div>
-<p>
-如果你能接受微软的直男审美呢,选择 Windows 倒也不错,否则还是选择 macOS 吧。
-</p>
-</td>
-<td>
-<h2 class="notoc">美观与显示效果</h2>
-<blockquote>
-<p>
-"shiny jails"
-</p>
-<div class="rightaligned">--Richard Stallman
-<a id="n2" href="#note2" class="note">[2]</a>
-</div>
-</blockquote>
-<p>
-恕我直言,用电脑这么多年,我还没有找到真正符合我的审美的设计理念。如果非要说的话,
-Haiku和Mac OS 9可能有这种资格。于是,我选择破罐破摔。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/gentoodesktop.png"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_gentoodesktop.png"></a>
-<br>我的桌面</div>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-此外,<u>Windows 10 没有色彩管理系统</u>,这对于影像和设计工作者来说简直是噩梦,
-而 macOS 拥有完善的色彩管理功能,这也是为什么影像与设计工作者大多采用 Mac 的原因之一。
-颇为有趣的是,曾经的 Windows Vista 是有色彩管理功能的,不过微软后来居然把它取消了。
-</p>
-</td>
-<td>
-<p>
-Fiction. 微软从1998年添加此功能之后从未取消过。
-所以这并不是为什么影像与设计工作者大多采用 Mac 的原因之一。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/fiction.png">
-<img src="//filestorage.chrisoft.org/blog/img/fiction.png" width="80%" decoding="async"></a>
-<br>Windows 10 的色彩管理系统</div>
-</td>
-</tr>
-<tr>
-<td><p>
-值得一提的是,目前在售的 MacBook 全部配备了视网膜 IPS 屏,这意味着无论从哪个角度看,
-屏幕色彩总是一致的,并且显示效果清晰细腻;相比之下,许多在售的其他笔记本不仅分辨率过低、
-甚至没有配备 IPS 屏。(当然也脱不开价格因素的影响)
-</p></td>
-<td><p>
-如果用买MacBook的钱,买一台屏幕辣鸡的笔记本,在2017年也不是什么容易事。
-</p></td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch2" class="tvis">系统功能</h2>
-<p>
-macOS 和 Windows 的操作习惯确有诸多不相似之处,不过在经过了一段时间过后,
-最终都会慢慢适应。举例来说,macOS 没有提供文件的剪切功能(Cmd+X)而仅仅提供了复制
-(Cmd+C),这使得我们在移动文件时只能先拷贝再删除、或者直接在两个文件夹间拖动文件。
-不过,macOS 并不像 iOS 一样封闭,你可以安装 TotalFinder
-等插件给你的系统加上文件剪切功能。
-</p>
-</td>
-<td>
-<h2 class="notoc">系统功能</h2>
-<p>
-我只需要以下3样东西就可以完成我的工作:
-</p>
-<ul>
-<li>编辑器</li>
-<li>工具链</li>
-<li>www浏览器</li>
-</ul>
-<p>
-……至于操作习惯的问题,如果遇到一个系统要求用户适应系统的情况,这个系统的<a id="customization" href="#custa">可定制性</a>,
-就大打折扣了:真正可定制性高的系统应当允许用户改变系统的行为以适应自己的操作习惯,而不是强迫用户去适应系统。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-要说 macOS 的大杀器,就不得不提到时光机:Time Machine。Time Machine
-不仅仅实现了自动的的系统完整备份,它更可以让你随时找到同一份文件在几天前的版本,
-从此写文档不用再把文件名改成 v1.0、v1.1、v1.2 了,以前的版本想找回随时可以找回。
-同样可以找回多天前误删的文件哦。也许这样听着并不是很伟大的功能,但关键时刻可以救命。
-</p>
-</td>
-<td>
-<div style="margin:auto;text-align:center;"><a href="https://i.redd.it/05b6u19pseoz.png">
-<img src="https://i.redd.it/05b6u19pseoz.png" width="80%" decoding="async"></a>
-<br><i>real</i> version control <br><reduced>(使用Time Machine应当被视为最后一个的变种)</reduced></div>
-<p>
-另外,微软早在Windows ME<a id="n3" href="#note3" class="note">[3]</a>里就加入了类似的功能(虽然没有人用)……
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-此外,macOS 有一个你用了再也离不开的功能:Spotlight 搜索。它其实就是一个全局的搜索功能,
-不过它可以在几秒钟之内找遍你电脑上所有的文件,不仅支持搜索文件名、文件内容,
-更可以进行各种类型的筛选。除此之外,它还能提供词典释义、货币转换和快速计算等功能。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_b.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_b.png" width="50%" decoding="async"></a>
-<br>Spotlight 搜索文件</div>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_c.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_c.png" width="50%" decoding="async"></a>
-<br>Spotlight 快速进行货币计算</div>
-<p>
-Spotlight 可以通过键盘快捷键迅速唤出,让你快速找到你想找的内容。
-</p>
-</td>
-<td>
-<p>
-I have that exact shit called krunner.
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/krunner.png">
-<img src="//filestorage.chrisoft.org/blog/img/krunner.png" width="50%" decoding="async"></a>
-<br>KRunner</div>
-</td>
-</tr>
-<tr>
-<td><p>
-今年秋天,macOS 的更新将会开始采用 <u>APFS 文件系统</u>。作为苹果最新研发的文件系统,
-它的性能已经在 iOS 设备上得到了充分证明。加持了 APFS 文件系统的 macOS
-在文件读写方面将会与 Windows 拉开很大的一段距离,并且难以超越。
-</p></td>
-<td>
-<p>
-<a href="https://www.phoronix.com/scan.php?page=article&amp;item=macos-sierra-ubuntu&amp;num=2">请</a>
-<a href="http://www.insanelymac.com/forum/topic/308077-file-system-speed-test-hfs-ntfs-extfat-fat32/">用</a>
-<a href="https://www.phoronix.com/scan.php?page=article&amp;item=macos-1013-linux&amp;num=2">数据</a>
-说话。
-</p>
-<p>
-简单地做几点分析:
-</p>
-<ul>
-<li>OSX 10.10和2015年的Windows系统在自家文件系统上的性能都不如外来的文件系统</li>
-<li>macOS 10.12被Ubuntu 16.04 LTS吊着打</li>
-<li>「加持」了APFS的macOS 10.13依然在除SQLite以外的所有项目上被使用ext4的Ubuntu吊打</li>
-</ul>
-<p>
-虽然可以看出Apple从用户体验的角度对APFS做了专门的改进,但是在与ext4这种10年「高龄」
-的文件系统的对决中依然惨败的结果下,我还真不敢相信「macOS 在文件读写方面将会与 Windows
-拉开很大的一段距离,并且难以超越」这样的论断,毕竟微软也不是吃素的。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch3" class="tvis">生产力应用支持与兼容性</h2>
-<p>
-谈到 macOS 与 Windows,有一个绕不开的话题就是软件的兼容性。
-这在许多年前是一个挺大的问题,不过现在已经基本不存在了。不仅你需要的大多数 App 都在
-Mac 上有对应的版本,甚至比 Windows 版更加好用。就连大多数银行也支持在 Mac
-上登陆网银了。(具体支持请百度查询)即使没有 Mac 版,通常你也能找到功能相似的工具。
-退一万步说,如果你一定要用一个 Windows 上的应用,VMware Fusion 虚拟机也能帮你实现。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_d.jpg">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_d.jpg" width="30%" decoding="async"></a>
-<br>VMware Fusion 实现的 macOS 中运行 Windows</div>
-</td>
-<td>
-<h2 class="notoc">生产力应用支持与兼容性</h2>
-<ul>
-<li>Mac上的vim比Windows版更加好用吗?</li>
-<li>VMWare Fusion……买不起买不起。<s>我用Virtualbox。</s></li>
-<li>(我的工作已经很大程度上脱离了Windows)</li>
-</ul>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-相反,很多优秀的生产力应用仅仅有 macOS 版本而没有 Windows 版本,有了这些应用的加持,
-你的 Mac 会变得非常好用,比如:Alfred、MindNode、Reeder、Daisy Disk、Bartender、
-Divvy、Paste、aText……之后我会单独写几篇文章来介绍我使用的优秀生产力工具。
-在我的寻找和调教后,<u>即使是挑剔的我也要感慨:这真的是一台效率神器</u>。
-如果你是开发者或者设计师,强烈推荐一个好工具库:<a href="https://github.com/jaywcjlove/awesome-mac">awesome-mac – GitHub</a>
-(如访问速度过慢,<a href="https://git.admirable.one/mirror/Awesome-Mac">点此访问镜像</a>)
-它列出了诸多 macOS 上的神器。截止这篇文章发表前,它已经有 13,000 个 star 数,
-可见其受欢迎的程度。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_e.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_e.png" width="60%" decoding="async"></a>
-<br>我的一部分效率工具</div>
-</td>
-<td>
-<p>
-因为并没有一台可以自己随意折腾的Mac,所以这些名字对我来说都十分陌生,
-但是我随便挑了一个看起来有意思的名字谷歌了一下之后……有点想笑。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/filelight.png">
-<img src="//filestorage.chrisoft.org/blog/img/filelight.png" width="80%" decoding="async"></a>
-<br>Daisy Disk vs Filelight</div>
-<p>仅这一个应用,就有以下诸多槽点:</p>
-<ul>
-<li>界面与Filelight几乎一模一样。</li>
-<li>挑剔的您认为查看磁盘使用情况的应用是生产力工具?</li>
-<li>4年后,会不会有人把我的自由软件「移植」到Mac上然后卖钱?</li>
-</ul>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-就像 iOS 之于安卓,相比 Windows 来说,macOS 的应用支持不仅完全不输 Windows,
-并且质量更加优秀。
-</p>
-</td>
-<td>
-<p>
-得益于苹果的严格监管,App Store里的平均应用质量确实高出一截。然而,App Store
-之外就是一番熟悉的景象了。
-<a id="n4" href="#note4" class="note">[4]</a>
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-另外一个不能忽略的问题是,即使是同款软件,在 Windows 和 macOS
-上的设计逻辑也天差地别。有个古老的段子,形容 macOS 和 Windows 的区别:
-</p>
-<blockquote>
-PC 用户有三宝:补丁、皮肤、注册表;<br><br>
-Mac 用户折腾少:触控、热键、免打扰。</blockquote>
-</td>
-<td>
-<p>
-首先,以PC和Mac区分电脑是一种过时的方式。这种方式起源于IBM PC时代,
-而「PC」一词早已早已不再是IBM PC的代称。依我来看,所有「个人计算机」都应被称为PC,
-而PC和Mac的区别,如今不过是苹果的营销用语罢了。
-</p>
-<p>
-至于那个段子,<a href="https://support.apple.com/en-us/HT208315">看看就好</a>。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-这样的情况源于 macOS 约定俗成的开发原则——效率。macOS 的效率优先级非常高,
-而繁复冗杂的娱乐功能恰恰和效率对立,想要融入 macOS 的生态体系,必须遵循苹果的要求,
-和效率无关的内容自然成为被砍掉的对象。以 QQ 举例,大家都知道腾讯什么功能都往 PC QQ
-上堆,以至于腾讯最后为厌倦了复杂的、效率为首的用户单独推出了轻聊版;而<u>在 QQ for Mac
-上,至今没有 QQ 秀等功能,一切功能以聊天为中心,爱钱如命的腾讯甚至丝毫不推销增值服务。</u>
-</p>
-<p>
-哦,顺便一说,<u>macOS 上所有软件都是没有弹窗的</u>。是的,尽管这很难相信,
-但基本所有国内流氓厂商到 Mac 上都安分了。
-</p>
-</td>
-<td>
-<p>
-因为即使是国产厂商也懂得「放弃广告比放弃用户值」这种非常浅显的道理吧(
-<a id="n5" href="#note5" class="note">[5]</a>
-</p>
-<p>
-另外,一同学天天抱怨Mac上的QQ辣鸡(比如天天掉线啦,没有群视频啦之类)。
-<s>可见其信仰不足,急需充值。</s>
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch4" class="tvis">系统稳定性</h2>
-<p>
-众所周知,Windows 是最容易崩溃、重装频繁、饱受病毒和恶意软件困扰的操作系统之一。
-客观的说,一个合格的生产力工具不应该总是需要你去维护(包括杀毒、重装系统等)。
-从这个角度,给 Windows 打负分也不为过。相比之下,macOS <u>更稳定、更少被病毒侵扰、
-几乎不需要重新安装系统</u>。这同样是你抛弃 Windows、投入 Mac 怀抱的原因之一。
-</p>
-</td>
-<td>
-<h2 class="notoc">系统稳定性</h2>
-<p>
-因为恶意软件的作者也知道用哪个操作系统的人多啊(</p><p>
-<s>假如原文的传教十分成功,macOS的份额和Windows交换之后,是谁更容易出问题还说不定呢。</s>
-</p>
-</td>
-</tr>
-<tr>
-<td><p>
-我的 MacBook 用了三年,来除了一次因为排查问题而重装了一次之外,没有重新安装过操作系统
-(那次是因为雷蛇云驱动,这是我见过史上最糟糕的驱动)。三年的时间,如果是 Windows
-系统已经被折腾的重装几遍了吧。这几乎说得上是生活方式上的差异了(偷笑)
-</p></td>
-<td><p>
-非常抱歉打击这位作者的自信,但是我家里的台式机(目前主要是家里人在用)的Windows 7已经
-7年没有重装过了——是的,从第一次安装系统以来。但是,我想这主要还是个人的使用习惯问题。
-如果你非要用电脑做奇怪的事情,三天两头重装个系统也就不值得奇怪了。
-<a id="n6" href="#note6" class="note">[6]</a>
-</p><p>
-另外,这是一台联网的电脑,而且上面没有装杀毒软件喔。
-</p><p>
-<reduced>最后我认为,不论一个人是因为什么原因而逃离Windows,
-如果连Windows的日常维护都无法做到的话,可能不太适合从事这个行业的工作。
-</reduced>
-<s>我怎么又开始把其他人都想得跟自己一样了。</s>
-</p></td>
-</tr>
-<tr>
-<td><p>
-如你所见,<u>几乎所有的大规模网络攻击都是针对 Windows 的。</u>在我三年使用 Mac 的时间里,
-并没有安装杀毒软件(事实上Mac 几乎不需要杀毒软件,当然 360 不会这么告诉你【摊手】),
-却用的比那些安装了一堆杀软的同学安稳的多。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_f.jpg">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_f.jpg" width="60%" decoding="async"></a>
-<br>前阵子肆虐的勒索病毒</div>
-</td>
-<td><p>
-而Linux上就连数量可怜的几个恶意软件都有重大bug,比如<a href="https://labs.bitdefender.com/2015/11/linux-ransomware-debut-fails-on-predictable-encryption-key/">某勒索软件</a>,
-它竟然像我一样写<code>srand(time(NULL));</code>,最终导致这个可怜的作者也许连一分钱都没有收到。好惨啊。
-</p></td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch5" class="tvis">可扩展性</h2>
-<p>
-对于极客来说,可扩展性是很有必要的。在 macOS 上,有 brew 等优秀的包管理工具,
-它类似于其他 Linux 操作系统中的easy_install、yum 等等。它省去了繁琐的安装和配置步骤,
-让你愉快地体验开发者的智慧;而在 Windows 下……我记得是没有的。如果有的话,欢迎在评论区留言。
-</p>
-</td>
-<td>
-<h2 class="notoc">可扩展性</h2>
-<p>
-「其他Linux操作系统」,macOS……也是Linux吗?(facepalm)
-</p>
-<p>
-抱歉我不能在您的评论区留言,但是Windows有nuget(以及WSL)。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-考虑到 macOS 是类 UNIX 操作系统,基本上你的 Linux 知识都可以用在你的 MacBook 上,
-非常美妙。并且,很多适用于 Linux 的神器都能在 macOS 上运行。对于极客和开发者来说,
-这无疑是非常令人激动的。
-</p>
-<p>
-重新强调一次:虽然都是苹果的亲儿子,但 macOS 比 iOS 开放多了。
-macOS 有一系列自我保护机制,保证系统功能不被恶意程序破坏,但你可以“合法”地关闭这些保护,
-并进行高级定制。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_g.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_g.png" width="60%" decoding="async"></a>
-<br>关闭系统完整性保护(SIP)</div>
-</td>
-<td>
-<p>
-<b>注意了!果粉看过来!OS X早在2007年就<a href="https://arstechnica.com/gadgets/2007/08/mac-os-x-leopard-receives-unix-03-certification/">取得了UNIX 03认证</a>。</b>
-所以把macOS称为「类UNIX」是对这个伟大的操作系统的贬低(
-</p>
-<p>至于Linux的兼容性的话,微软的WSL可能是一个更好的选择,因为macOS是macOS,
-而WSL是以兼容Linux为目的的。</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/apple-bc.jpg">
-<img src="//filestorage.chrisoft.org/blog/img/apple-bc.jpg" width="60%" decoding="async"></a>
-<br><reduced>是啊,Linux的知识都可以应用过来,成功率甚至更高呢(</reduced></div>
-<p><reduced>顺便,您的zsh提示符主题的powerline字体显示有点小问题,看着有点难受。
-<s>可能这才是这个主题本来的样子?</s></reduced></p>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch6" class="tvis">其他有关用户体验的部分</h2>
-<h3 id="tocanch7" class="tvis">关于字体</h3>
-<p>
-客观的说,尽管微软也做出了一些努力,即使到了 2017 年,<u>Windows
-在字体渲染方面也依然被 macOS 完爆十条街</u>。macOS 的字体渲染精美、忠于字形,
-像印刷品一般精致;而微软为了兼容低端设备,则对字体进行了诸多不合理的调整,
-并且显示效果非常差劲。相信使用过 macOS 和 Windows 的同学一眼就能认出来同样一款字体的截图,
-哪张来自 Windows,哪张来自 Mac。
-</p>
-</td>
-<td>
-<h2 class="notoc">其他有关用户体验的部分</h2>
-<h3 class="notoc">关于字体</h3>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/apple-aa.png">
-<img src="//filestorage.chrisoft.org/blog/img/apple-aa.png" width="80%" decoding="async"></a>
-<br><reduced>请问这是什么印刷品,非法出版物?</reduced></div>
-<p>
-看到上图的时候我甚至曾经怀疑了我的眼睛,但是……
-<s>毕竟Apple也是用FreeType的,我们不要开这种无聊的玩笑了。</s>
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h3 id="tocanch8" class="tvis">关于程序安装</h3>
-<p>
-此外,<u>大多数 macOS 的应用程序安装流程是直接拖动 app 到“应用程序”文件夹,然后就完成了。</u>
-如果需要删除,把 app 拖到废纸篓即可。这是其他操作系统都没有的愉悦体验,<u>即使是国内软件,
-也不用担心被安装全家桶</u>。(坦诚地说,我还是建议安装一个 AppDelete,它能帮你找到 App
-在其他目录下生成的文件,并把它们一并清理掉。使用方法也很简单,拖进去就行了,不用像
-Windows 一样走一遍“卸载向导”之类的)
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_h.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_h.png" width="60%" decoding="async"></a>
-<br>拖动安装 App</div>
-</td>
-<td>
-<h3 class="notoc">关于程序安装</h3>
-<p>
-如果读者不清楚macOS为何能实现这样的安装方式,我可以在此对着左边的果粉班门弄斧一把,
-任何不当之处请不吝赐教:macOS中文件夹也存在类型,文件名以.app结尾的文件夹实质上是程序包,
-里面含有程序的可执行文件,依赖的库以及资源等等。
-</p>
-<p>
-但这种安装方式在解决了(苹果当年当众嘲笑过的)DLL Hell的同时,带来了另一个问题,
-如果毫不相干的应用A和B同时使用了系统并为提供的库libX,那么libX将在磁盘上有两个版本。
-这样也彻底抵消了动态链接为数不多的几个好处之一。(最近Linux上兴起的snap,flatpak等等也有类似的情况。)
-</p>
-<p>
-所以我并不能看到这种安装方式的任何好处。<s>我选择Portage。</s>
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h3 id="tocanch9" class="tvis">关于“清理内存”</h3>
-<p>“清理内存”大概算是国内各个奇葩厂商培养出来的用户习惯:在桌面上强行放个按钮,
-点一下清理内存,还时不时提醒你电脑又可以提速了【滑稽】。电脑是提速了,
-可你他喵的总是烦我,我工作效率下降了啊。macOS 会自动调配内存资源,无需手动干预
-(而且内存管理逻辑和 Windows 完全不同),因此完全不需要弄个小气泡小火箭什么的清理内存。
-</p></td>
-<td>
-<h3 class="notoc">关于“清理内存”</h3>
-<p>
-我现在的RAM内存使用率连超过20%的时候都很少有。<s>等于我这台电脑,花了八千块,用到的功能,
-连八分之一都不到!</s>
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h3 id="tocanch10" class="tvis">硬件部分</h3>
-<p>首先说说触摸板吧。相信每个用过 MacBook 的人都会有这样的体会:MacBook
-的触摸板是世界上最好用的触摸板,没有之一。它的触摸感非常美妙、手势功能也非常实用。
-在不干重活儿的情况下,使用 MacBook 可以几个月不用鼠标,
-而这对于其他厂商的笔记本来说是很难想象的。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_i.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_i.png" width="60%" decoding="async"></a>
-<br>MacBook Pro</div>
-</td>
-<td>
-<h3 class="notoc">硬件部分</h3>
-<p>
-MacBook的触摸板<i>确实</i>非常好用。尤其是手势操作的整合度,令人印象十分深刻。
-<b>但是!</b>这一切其实都得归功于软件(macOS),而不是硬件。因为从硬件的角度来讲,
-那不过是一块相当普通的Synaptics触摸板<a id="n7" href="#note7" class="note">[7]</a>而已。
-对于一些Linux发行版来说,touchegg可以实现同样的功能(然而整合度并没有macOS那么高)。
-</p>
-<p>
-另外,几个月不用鼠标这件事,大概作者是不知道或者不习惯ThinkPad的「小红点」指点杆
-<a id="n8" href="#note8" class="note">[8]</a>。
-如果熟练运用小红点的话手几乎不用动就能让鼠标跑遍整个屏幕,我还用它打Minecraft呢(
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-其次是硬件外观。MacBook 的轻便程度很难有能与之比肩的竞争对手。即便有,
-在工业设计的美观度上它们也统统输给了 MacBook,尽管我不得不承认最近苹果为了让 MacBook
-Pro 更薄而缩水硬件配置的做法非常愚蠢。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/wcm_j.png">
-<img src="//filestorage.chrisoft.org/blog/img/wcm_j.png" width="60%" decoding="async"></a>
-<br>MacBook Pro</div>
-</td>
-<td>
-<p>
-首先,这段话作为作者的个人看法,是没有什么好评价的。但是当我每次将我的
-ThinkPad X1 Yoga变为平板,从机器侧面抽出笔来做笔记的时候,总能看到附近几个Mac
-用户投来的羡慕的眼光。顺便,14寸的X1y比当前13寸的MBP要轻100g喔。
-</p>
-<p>
-然后就是有关Touch Bar的起源……
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/x1c2kb.png">
-<img src="//filestorage.chrisoft.org/blog/img/x1c2kb.png" width="60%" decoding="async"></a>
-<br>Keyboard of ThinkPad X1 Carbon 2nd Gen.</div>
-<p>
-上图是2014年发布的ThinkPad X1 Carbon第二代的键盘。
-这个被联想称作「Adaptive Keyboard」的东西,一开始与Touch Bar一样,毁誉参半。
-然而非常不幸的是联想为了保留某些按键而对键盘布局做出的智障改动
-<a id="n9" href="#note9" class="note">[9]</a>
-使得负面评价很快就压过了正面的评价。因此联想在下一代的X1 Carbon当中不得不取消了这个「改进」。
-</p>
-<p>
-客观地讲,苹果经常不是第一个使用某种技术或者设计的公司,但几乎总是第一个取得成功的公司,
-这是非常有趣的一个事实。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>
-最后提一下安全性:得益于软硬件的结合,理论上即便你的 MacBook 丢失,盗贼也无法提取数据。
-你还可以开启固件密码,它能阻止 Mac 从启动磁盘以外的任何设备启动。
-这样盗贼既无法获得你的数据、又无法从其他设备启动,可以说是一点用都没有了。
-如果资金充裕的话,你大可以直接去 Apple Store 购买一台新的 MacBook,然后通过 Time
-Machine 恢复备份,你就得到了一台一模一样的电脑。
-</p>
-</td>
-<td>
-<ul>
-<li>基于Intel ME的防丢失,<a href="https://en.wikipedia.org/wiki/Intel_Management_Engine#SA-00086">恐怕</a>并<a href="https://www.theregister.co.uk/2017/12/06/intel_management_engine_pwned_by_buffer_overflow/">不是什么好东西</a>
-<a id="n10" href="#note10" class="note">[10]</a>
-</li>
-<li>「资金充裕的话」,假设不成立。</li>
-</ul>
-<p>
-顺便提一个几个月前发生的小事,某同学崭新的MacBookPro13,2被<a id="n11" href="#note11" class="note">[11]</a>浇上了一点(&lt;100ml)水,
-吓得3天没敢开机,结果开机之后发现还是挂了,于是只好<s>强忍着疼痛</s>去Genius Bar修。
-</p>
-<p>
-我有一次不小心打翻了杯子把半杯热水浇到了电脑上,水自己从排水孔流了出来。
-半小时不到我就继续我的工作了。<s>高下立判。</s>
-</p>
-</td>
-</tr>
-<tr>
-<td><p>
-友情提醒一下:现代的 MacBook 内部结构已经全部焊死,因此你无法进行添加内存和硬盘、更换
-CPU等操作。建议购买时直接升级到够用的配置,免得以后后悔:MacBook 的闪存是苹果订制的,
-性能非常好,但 256GB 可能不够用,强烈建议升级到512GB 或更高;8GB
-内存对于一般用户已经够用,不过对于专业用户,强烈建议升级到 16GB。
-</p>
-<p>
-客观的说,Mac 是为工作而生的,在你做出了诸多个性化的设置之后,
-它会成为你非常美妙的工作伙伴。然而,它并不适合大型 PC 游戏玩家,因此对于这部分重度
-PC 游戏玩家来说,我的建议是换成 MacBook + PS4 的搭配。如果你执意要用 PC 玩大型游戏,
-或许还是应该考虑购买一台专门的游戏本(或台式机)。说到底,鱼和熊掌从来都不是兼得的。
-</p>
-</td>
-<td>
-<p>
-这里我来做一个消费者经常做的简单的对比(显然我在买电脑前也做过这种对比)。
-下面有四台电脑的配置单。所有图片均制作于2017-12-23。
-</p>
-<p>
-(顺便羡慕一下可以同时买得起MacBook+PS4的,这已经远远超越Pay Station级别了。)
-</p>
-</td>
-</tr>
-<tr>
-<td colspan="2">
-<table>
-<tbody><tr>
-<th>Configuration Item</th>
-<th><a href="//filestorage.chrisoft.org/blog/img/mbp15-config.png">MacBook Pro 15</a></th>
-<th></th>
-<th><a href="//filestorage.chrisoft.org/blog/img/p51-config.png">ThinkPad P51 Workstation</a></th>
-</tr>
-<tr>
-<th>CPU</th>
-<td><a href="https://ark.intel.com/products/97462/Intel-Core-i7-7920HQ-Processor-8M-Cache-up-to-4_10-GHz">Intel Core i7-7920HQ 4C8T, 3.1GHz, 4.1GHz, 8MB</a></td>
-<td>&lt;&lt;</td>
-<td><a href="https://ark.intel.com/products/97468/Intel-Xeon-Processor-E3-1535M-v6-8M-Cache-3_10-GHz">Intel Xeon E3-1535M v6 4C8T, 3.1GHz, 4.2GHz, 8MB</a></td>
-</tr>
-<tr>
-<th>RAM</th>
-<td>16GiB LPDDR3 2133MHz</td>
-<td>&lt;&lt;</td>
-<td>64GiB DDR4 2400MHz with ECC</td>
-</tr>
-<tr>
-<th>Graphics</th>
-<td>Radeon Pro 560</td>
-<td>≈<a id="n12" href="#note12" class="note">[12]</a></td>
-<td>Quadro M2200 Mobile</td>
-</tr>
-<tr>
-<th>Display</th>
-<td>15.4", 2880×1800, Wide colour (P3) gamut</td>
-<td>&lt;</td>
-<td>15.6", 3840×2160, IPS</td>
-</tr>
-<tr>
-<th>Storage</th>
-<td>2TB PCIe NVMe SSD</td>
-<td>&lt;&lt;</td>
-<td>2*1TB PCIe NVMe SSD+1TB HDD, optional RAID</td>
-</tr>
-<tr>
-<th>Extra Features</th>
-<td>macOS</td>
-<td>??</td>
-<td>Color Sensor, WWAN</td>
-</tr>
-<tr>
-<th>Price</th>
-<td>$4,199.00</td>
-<td>&gt;</td>
-<td>$3,851.10<a id="n13" href="#note13" class="note">[13]</a></td>
-</tr>
-</tbody></table><br>
-<table>
-<tbody><tr>
-<th>Configuration Item</th>
-<th><a href="//filestorage.chrisoft.org/blog/img/mbp13-config.png">MacBook Pro 13</a></th>
-<th></th>
-<th><a href="//filestorage.chrisoft.org/blog/img/spectre-config.png">HP Spectre x360</a></th>
-</tr>
-<tr>
-<th>CPU</th>
-<td><a href="https://ark.intel.com/products/97541/Intel-Core-i7-7567U-Processor-4M-Cache-up-to-4_00-GHz">Intel Core i7-7567U 2C4T, 3.5GHz, 4.0GHz, 4MB</a></td>
-<td>&lt;</td>
-<td><a href="https://ark.intel.com/products/122589/Intel-Core-i7-8550U-Processor-8M-Cache-up-to-4_00-GHz">Intel Core i7-8550U 4C8T, 1.8GHz, 4.2GHz, 8MB</a></td>
-</tr>
-<tr>
-<th>RAM</th>
-<td>16GiB LPDDR3 2133MHz</td>
-<td>≈</td>
-<td>16GiB LPDDR3 2133MHz</td>
-</tr>
-<tr>
-<th>Graphics</th>
-<td>Intel Iris Plus Graphics 650</td>
-<td>&gt;</td>
-<td>Intel UHD Graphics 620</td>
-</tr>
-<tr>
-<th>Display</th>
-<td>13.3", 2560×1600, Wide colour (P3) gamut</td>
-<td>&lt;</td>
-<td>13.3", 3840×2160, touch screen</td>
-</tr>
-<tr>
-<th>Storage</th>
-<td>1TB PCIe NVMe SSD</td>
-<td>≈</td>
-<td>1TB PCIe NVMe SSD</td>
-</tr>
-<tr>
-<th>Extra Features</th>
-<td>macOS</td>
-<td>??</td>
-<td>Convertible, Pen</td>
-</tr>
-<tr>
-<th>Price</th>
-<td>$2,899.00</td>
-<td>&gt;&gt;</td>
-<td>$1,669.99</td>
-</tr>
-</tbody></table>
-</td>
-</tr>
-<tr>
-<td></td>
-<td>
-<p>
-在对macOS没有需求的情况下,我不知道什么人<a id="n14" href="#note14" class="note">[14]</a>
-会购买MacBook。(尽管许多MacBook用户告诉我macOS &gt;&gt; everything,
-但是这与我的个人体验并不完全相符。)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<h2 id="tocanch11" class="tvis">结论</h2>
-<p>
-对于多媒体和设计、以及计算机行业学习者、工作者(事实上 Mac 是这些行业里的标配),
-我强烈建议购买一台 Mac 作为工作机。坦诚地说,我建议所有不用电脑玩游戏的用户都购买一台
-Mac,因为它真的是一款易用、优雅、省心的生产力机器。
-</p>
-</td>
-<td>
-<p>
-原作者所说确为事实。我曾经见过中南大学苹果实验室的照片。<s>隔着屏幕都能闻到钱味。</s>
-即使像我所在的穷人实验室MacBook的份额也高达30%左右。
-</p>
-<p>但是我的结论嘛……很显然当然是我不会使用Mac啦!</p>
-</td>
-</tr>
-<tr>
-<td>
-<p>无意冒犯,但<u>买了 MacBook 之后就别双系统安装 Windows 了,因为真的不需要,
-而且看起来真的很 unprofessional。</u></p>
-</td>
-<td>
-<p>
-这个我可以说1000个同意。尤其是看到数字图像处理老师在MacBook Pro
-上运行Windows 10使用MS Office 2003之后。因此每次有MacBook用户找我安装Windows系统时
-<a id="n15" href="#note15" class="note">[15]</a>,
-我都会先花10分钟来劝说他们不要这样做。
-</p>
-<p>
-顺便我也建议Mac用户不要双系统安装Linux,因为这样你会失去使用Mac的唯一好处。
-</p>
-</td>
-</tr>
-<tr>
-<td>
-「:grin:只有两者都用过才有权利谈好与不好。神烦那种都没用过 Mac 的天天喷苹果。」
-</td>
-<td>
-<p><reduced>(本来这个格子应该和下面合为一体的,奈何我水平太低,做不到啊)</reduced></p>
-</td>
-</tr><tr>
-<td colspan="2">
-<h2 id="tocanch12" class="tvis">后记</h2>
-<p>
-我用过的第一台Mac是家里人办公室的一台运行Mac OS 9的Power Macintosh G3。
-(如果作者没有留级的话)这台电脑的岁数可能比原文的作者都大呢:)。它有一个<a href="https://en.wikipedia.org/wiki/Apple_USB_Mouse">圆形的鼠标</a>。
-</p>
-<p>
-后来我因为各种各样的原因,或长或短地使用过以下Mac型号:
-</p>
-<ul>
-<li>MacBookPro8,1</li>
-<li>MacBookPro10,2</li>
-<li>MacBookAir5,1</li>
-<li>MacBookPro12,1</li>
-</ul>
-<p>
-单纯从系统用户的角度讲,OS X(macOS)做得还是相当出色的,比如我就觉得Finder
-的使用方式十分顺手,甚至想在Linux下也拥有类似操作逻辑的文件管理器(与此同时,
-也有很多人觉得这种设计反人类),Mission Control有助于提升工作效率等等
-<a id="n16" href="#note16" class="note">[16]</a>。
-</p>
-<p>
-然而到了我真正需要工作的地方时,我甚至开始怀疑我会不会用电脑了<reduced><s>大概就是不会</s></reduced>。
-我曾经在上面提到的一台MacBook上试图将我的工程移植到OS X(当时的称呼)。然后就有了我「不堪回首的」、
-「有史以来最差的C++开发体验」(XCode不听使唤,QtCreator bug层出不穷等等,
-最后我用qmake+make生成了一个根本不能用的可执行文件)。
-</p>
-<p>
-我在高中最后一年时,曾经(用接近一年的时间)非常认真地考虑过下一台电脑会不会是
-MacBook Pro。纠结之处当然还是集中在价格上(当时还有可以自己加内存的MBP卖,
-所以不需要像现在一样加8GB RAM就要多$200,或者1520人民币)。然而当 ThinkPad X1 Carbon 4th Gen.
-和ThinkPad X1 Yoga 1st Gen. 亮相CES 2016<a id="n17" href="#note17" class="note">[17]</a>
-的时候,我大概就有了最终的决定了。
-</p>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/applecurse.png">
-<img src="//filestorage.chrisoft.org/blog/img/applecurse.png" width="50%" decoding="async"></a>
-<br><reduced>乱入的花絮</reduced></div>
-<h2 id="tocanch13" class="tvis">附:关于Mac的使用体验</h2>
-<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/brokenmac.jpg">
-<img src="//filestorage.chrisoft.org/blog/img/brokenmac.jpg" width="50%" decoding="async"></a>
-<br><reduced><s>broken mac</s></reduced></div>
-<p>除了不愉快的开发经验之外,我使用Mac的其他经历还算正常。但是在reddit的softwaregore
-subbredit中,来自macOS的software gore和来自Windows的software gore明显不成比例……
-按道理来说应该与用户比例类似才对,然而刷那个subreddit给我的感受是……Mac用户和其他电脑用户比例可达1:1。
-<s>强烈建议苹果的测试人员多刷一刷reddit。</s>
-</p>
-<h2 id="tocanch14" class="tvis">真正的结论</h2>
-<p>
-<s>穷人就是事多。要我也是Pay Station,管它什么配置性价比系统的,
-先把所有品牌的顶配笔记本全都买到手再说。哪个用着不爽砸哪个。</s>
-</p>
-</td>
-</tr>
-</tbody></table>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <a href="https://www.reddit.com/r/softwaregore/comments/6jjfik/111_84_call_911_thanks_siri/"><s>现在的siri是不是只需要说一声「给我写个树分治」就行啊</s></a><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: <a href="https://youtu.be/fkkDvKGcNSo?t=1081">https://youtu.be/fkkDvKGcNSo?t=1081</a><br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 史上最辣鸡的操作系统之一。<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 顺便,我为数不多的Mac App Store使用体验几乎全是噩梦级的,
-可能是苹果发现了我是用不起苹果的低端人口了吧。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 尽管他们不在意我这样的Linux用户,但我也不在意他们呀(<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 认识一个不愿透露姓名的dalao,一天可以重装7次系统,还不是Windows。<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 虽然它面积超大,还有Taptic Engine的配合(尽管Taptic Engine的效果并没有给我留下深刻的印象)<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 不习惯小红点的ThinkPad用户实在太多,以至于联想现在甚至认为小红点只为情怀而存在的了<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 还有一个不能忽视的原因是ThinkPad死忠粉似乎不多<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: 我的辣鸡电脑上也有Intel的AMT,现在我正试图想办法屏蔽掉它。<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 非常有意思的是,
-这里的主语是「另一个崭新的MacBookPro13,2用户」<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: <a href="https://technical.city/en/video/Radeon-Pro-560-vs-Quadro-M2200-Mobile">https://technical.city/en/video/Radeon-Pro-560-vs-Quadro-M2200-Mobile</a><br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: Base Price是逗人玩的,不需要注册直接Checkout购买就是Your Price的价格<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 上半年,一个学长抱着
-「不准自己打游戏」的思路买了一台MacBookPro11,4,现在他表示十分后悔。<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: 并且我在安装完毕后从来都不给他们使用非法方式激活,
-因为我没有理由怀疑一个MacBook用户负担不起Windows7旗舰版的授权费用<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: 虽然这个东西其实应该视为UNIX系系统常有的工作区的一种<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: <s>并且看到美帝良心想在美帝的售价之后</s><br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-01-05.html b/blog/post/2018-01-05.html
deleted file mode 100644
index 5a64323..0000000
--- a/blog/post/2018-01-05.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Now using reverse proxy to deliver content")</title>
-<meta name="description" content="«Now using reverse proxy to deliver content» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Now using reverse proxy to deliver content</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/web/">web</a></li><li><a href="/blog/list/random-xp/">random-xp</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">……现在开始使用反向代理了!</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2017-12-21.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-01-07.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Now using reverse proxy to deliver content</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-01-05<br>#web #random-xp</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-Now I'm using apache2 as a reverse proxy server on Conoha to
-deliver the content of <code>chrisoft.org</code>. As the
-network link between my local server and Conoha is prone to
-high delay (especially when using IPv6, which is default...),
-you may notice a major slow down when browsing this site.
-</p>
-<p>
-Anyway, it's the first time this stupid website can be accessed
-again outsite the stupid university since the 19th National
-Congress of the Communist Party of China.
-<reduced>Long live the CPC!</reduced>
-</p>
-<p>
-I've also enforced TLS even further: now any http traffic to
-<code>chrisoft.org</code> will be redirected to use https instead.
-However I loosened the enforcement on the original server.
-(http traffic directly to the original server will not be redirected)
-</p>
-<p>
-The original server is now located at <code>a.chrisoft.org</code>
-(it's also at <code>b.chrisoft.org</code>, without the corresponding
-SSL certificate).
-You may still access it directly if you are inside the StupiD University
-or have proper IPv6 access. (Uncommon ports and ports vital to
-infrastructure management such as 22, 1024 and 25565 are not yet
-blocked, so I might setup a webserver on port 10243(h2/https) and
-10248(http) for file delivery later.) Also I may consider enabling
-caching if the load time is intolerable.
-</p>
-<p>
-Below is a Chinese translation (with extra stupid content if you
-know Chinese).
-</p>
-<h2 id="tocanch0" class="tvis">……现在开始使用反向代理了!</h2>
-<p>
-我用Conoha上的VPS搭了一个Apache反向代理,目前<code>chrisoft.org</code>
-的全部内容均由这个反向代理提供。然而因为辣鸡专科学校到Conoha机房的网络延迟相当高
-(默认使用的IPv6延迟相对IPv4更高……),所以访问速度可能会受到影响……
-</p>
-<p>
-不过这个网站总算在十九大之后重见天日了。<reduced>中国共产党万岁!</reduced>
-</p>
-<p>
-另外强制https方面做得更严了。现在任何到<a>chrisoft.org</a>
-的http流量均会被强制转向https。(不过到原服务器的要求放宽了。)
-</p>
-<p>
-现在原服务器在<code>a.chrisoft.org</code>这里(其实也在
-<code>b.chrisoft.org</code>上,然而这个其实并没有什么实际用途,也没有相应的SSL证书)。
-如果你身处辣鸡专科学校内,或者有合适的IPv6访问,大概还是能直接访问原服务器的。
-(辣鸡专科学校并没有屏蔽不常见或者一些管理用的端口,比如22,1024和25565。
-所以我以后可能还会在这里放一些文件服务器之类的。)如果页面加载速度太慢的话,
-我可能还需要考虑启用Apache的缓存功能。
-</p>
-<p>
-最后立flag祝自己考试全挂(
-</p>
-<p>
-<a href="//filestorage.chrisoft.org/blog/img/conoha_conoha.png">Conoha now redirects me to
-their new landing page...</a>
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-01-07.html b/blog/post/2018-01-07.html
deleted file mode 100644
index ddf3801..0000000
--- a/blog/post/2018-01-07.html
+++ /dev/null
@@ -1,414 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Trash dump for the fifth semester")</title>
-<meta name="description" content="«Trash dump for the fifth semester» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Trash dump for the fifth semester</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/daily-life/">daily-life</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">课程相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">分专业方向</a></li></ul></li><li><a class="toctarg" href="#tocanch2">ACM相关</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch3">南宁邀请赛</a></li><li><a class="toctarg" href="#tocanch4">网络赛</a></li><li><a class="toctarg" href="#tocanch5">沈阳ICPC</a></li><li><a class="toctarg" href="#tocanch6">秦皇岛CCPC</a></li><li><a class="toctarg" href="#tocanch7">北京ICPC</a></li><li><a class="toctarg" href="#tocanch8">上海ICPC ECL-Final</a></li><li><a class="toctarg" href="#tocanch9">More rants on internal relationship</a></li><li><a class="toctarg" href="#tocanch10">投不投?</a></li></ul></li><li><a class="toctarg" href="#tocanch11">各种坑</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch12">QMP</a></li><li><a class="toctarg" href="#tocanch13">chrisoft.org</a></li><li><a class="toctarg" href="#tocanch14">PCD</a></li><li><a class="toctarg" href="#tocanch15">Android</a></li><li><a class="toctarg" href="#tocanch16">"DAPS"</a></li></ul></li><li><a class="toctarg" href="#tocanch17">Distro-hopping</a></li><li><a class="toctarg" href="#tocanch18">正體字 Masterrace</a></li><li><a class="toctarg" href="#tocanch19">Interest shift</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch20">Classical Music</a></li><li><a class="toctarg" href="#tocanch21">"Detoxification" and "the Switch"</a></li></ul></li><li><a class="toctarg" href="#tocanch22">Is this world broken?</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch23">Everyone's got Depression</a></li><li><a class="toctarg" href="#tocanch24">Cheating, Inqeuity and Shamelessness</a></li></ul></li><li><a class="toctarg" href="#tocanch25">《我的性格和我的情绪》</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch26">My "forks"</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-01-05.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-02-05.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Trash dump for the fifth semester</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-01-07<br>#garbage #daily-life</div>
- <hr><div id="article" class="TText">
-<article>
-
-<p>
-这个系列的文章自开始写作以来,似乎都没有按照一开始预想的「这学期发生了什么」
-这样的思路来写。而是变成了「这学期发生了什么+这学期的各种胡言乱语的聚集地」……
-于是有了单独拆出一个Chris' Random Rants主题的想法……
-</p>
-<p>但是实现应该不是近期的事情了。</p>
-<h2 id="tocanch0" class="tvis">课程相关</h2>
-<ul>
-<li>软件工程:这tm是啥?</li>
-<li>计算机网络:上了一学期依然听不懂dalao的谈话。二个半小时预习。</li>
-<li>数据库课程设计:交了个烂尾的东西上去。</li>
-<li>数字图像处理:傅立叶一出来就知道没有什么好事……以及,Sobel是谁啊(</li>
-<li>人机交互技术:虽然讲课的时候一直在讲「前景色和背景色不要太相似」
-这样的东西,然而最后的考试题是类似这样的:
-「请你把复习提纲上的某一个题默写出来」。</li>
-<li>Web技术:「Java脚本」?</li>
-</ul>
-<p>
-<s>计网你才预习了两个小时就混到1/10真的好吗</s>
-</p>
-<p>
-<s>数字图像处理gg了吧 应有的报应(</s>
-</p>
-<p>
-<s>可以看出辣鸡专科学校学生的平均水平了。</s>
-</p>
-<h3 id="tocanch1" class="tvis">分专业方向</h3>
-<p>
-可能是辣鸡专科学校软件学院的特色。辣鸡专科学校软件工程专业的学生在大三开始前会被要求在以下方向中选择一个
-(方向名后列出的是相应方向开设的课程):
-</p>
-<table style="width:98%;"><tbody><tr>
-<td style="vertical-align:top;">
-<ul>
-<li>信息安全
-<ul>
- <li>信息安全导论</li>
- <li>网络攻击与防范</li>
- <li>操作系统安全</li>
- <li>安全协议与标准</li>
-</ul></li>
-<li>媒体与可视化
-<ul>
- <li>人机交互技术</li>
- <li>数字图像处理</li>
- <li>多媒体技术</li>
- <li>计算机图形学</li>
-</ul></li>
-<li>数据科学
-<ul>
- <li>数据科学导论</li>
- <li>非关系型数据库</li>
- <li>Web数据管理</li>
- <li>数据仓库与数据挖掘</li>
-</ul></li>
-<li>智能软件
-<ul>
- <li>算法设计与分析</li>
- <li>生物信息学</li>
- <li>运筹学</li>
- <li>计算智能</li>
-</ul></li>
-</ul>
-</td>
-<td style="vertical-align:top;">
-<ul><li>物联网与嵌入式软件
-<ul>
- <li>嵌入式系统原理及应用</li>
- <li>移动互联网开发技术</li>
- <li>操作系统开发技术</li>
- <li>物联网工程</li>
-</ul></li>
-<li>软件与服务
-<ul>
- <li>服务计算概论</li>
- <li>现代Web编程</li>
- <li>服务开发技术</li>
- <li>软件服务工程</li>
-</ul></li>
-<li>软件工程技术与方法
-<ul>
- <li>人机交互技术</li>
- <li>软件体系结构</li>
- <li>现代软件开发技术</li>
- <li>软件过程管理</li>
-</ul></li>
-</ul>
-</td>
-</tr></tbody></table>
-<p>
-不同方向的专业课程时间一定是冲突的。<s>这有效阻止了选别的方向课的行为
-(虽然并不能阻止蹭课)。</s>
-至于在辣鸡专科学校的计算机科学与技术学院,这些课程大多属于限选课,
-可以自由组合。而且还有不少软件学院根本不开的课。
-这也许是辣鸡专科学校计科和软件为数不多的真正区别之一。
-</p>
-<p>看起来大部分专业都是二水+二非水的组合,而且分布在上下学期之后几乎都是每个学期一水+一非水。
-(当然,似乎也有全是水课的……)以下是我对这些专业的看法:
-</p>
-<ul>
- <li>信息安全:惹不起,惹不起。</li>
- <li>媒体与可视化:据说选了会变成不会画画的数媒专业生(</li>
- <li>数据科学:大数据和周易有什么区别?(另外数据库已经悉数还给老师了……)</li>
- <li>智能软件:虽然算法课和运筹学<s>yun()</s>值得一上,然而另外的课……都是些什么东西?</li>
- <li>物联网与嵌入式软件:除了操作系统开发技术想学以外,似乎没什么吸引人的<a id="n1" href="#note1" class="note">[1]</a></li>
- <li>软件与服务:这都是些啥?</li>
- <li>软件工程技术与方法:这又是些啥?<s>另外我不想当PM(</s></li>
-</ul>
-<p>
- 所以最后还是选了自己有一点微小的成果并且认为有「搞头」的媒体与可视化方向。
- <s>于是我就变成不会画画的数媒专业生了(</s>不过从课名就能看出来,
- 人机交互技术和多媒体技术是彻头彻尾的水课。<s>我也希望能借此机会学一点其他的东西。</s>
-</p>
-<h2 id="tocanch2" class="tvis">ACM相关</h2>
-<h3 id="tocanch3" class="tvis">南宁邀请赛</h3>
-<p>
-<s>这次比赛之后我就再也不写<b>trie树</b>了。简直心理阴影。</s>
-</p>
-<p>
-卡在是个人都会的题上。铜牌滚粗。
-</p>
-<h3 id="tocanch4" class="tvis">网络赛</h3>
-<p>
-网络赛总体还算顺利。(除了几次推辣鸡规律被学弟碾压之外(
-</p>
-<p>
-广西网络赛值得吐槽一下。是个学校就AK了是什么情况?
-(结果最后还剩一题AK时辣鸡专科学校的选手觉得稳了于是开始争抢名额,
-导致仍然在试图写最后一题的杨老爹和我写不下去,直接投降)
-</p>
-<h3 id="tocanch5" class="tvis">沈阳ICPC</h3>
-<p>
-前期优势很大。39分钟3题的时候感觉这把稳了。哪知道39分钟却成为了失去生命迹象的时间。
-</p>
-<p>
-F题别人看来完全是纯套路的递推,而我上了数据挖掘然后挖出了一堆垃圾。
-对着垃圾看了好久才发现数据挖掘的程序写错了。于是挖出了正确的数据之后开始盯着结果发呆。
-最后(!!)终于发现了相邻两个数的比例收敛于sqrt(3)+2(……)。强行写了一发之后WA,
-最后不得不用<code>bc</code>打出了sqrt(3)+2小数点后100位塞进Java的BigDecimal里乱搞,
-竟然混过了这道题(不然的话本赛季首铁在这里就收了)。
-</p>
-<p>
-G其实就是个bfs。当我在想bfs的时候队友却来告诉我这题可以用后缀数组的倍增思路搞并且坚持要我写……
-于是我在被F搞没蓝之后又写了一大堆垃圾。最后实在受不了于是把这一大堆垃圾交还给了出「思路」
-的队友。结果当然是……并没有什么卵用。
-</p>
-<p>
-H的dp搞了8发也没过。而且三个人都一致觉得当时写得很对……
-</p>
-<p>
-C题那个计算几何红书上有原题和完整代码(……)。虽然我们没带红书然而我想到了正解。
-结果因为一直被拉着写G导致没有得到施展。
-</p>
-<p>
-到火车站准备滚粗的时候,宇宙苟突然拿出电脑开始施展起他的G来。
-而且40分钟就施展完了过了样例觉得很自豪(顺便还觉得我很辣鸡),然而最后题挂出来一交,
-T(标)L(准)E(结局)。
-</p>
-<p>铜牌滚粗。</p>
-<h3 id="tocanch6" class="tvis">秦皇岛CCPC</h3>
-<p>银牌滚粗。</p>
-<p>
-大致情况是再过一道最大独立集的题就可以金了,然后最后3分钟发现抄错了模板……
-</p>
-<h3 id="tocanch7" class="tvis">北京ICPC</h3>
-<p>
-这把总体一直苟在前1/5,还算比较稳的。
-</p>
-<p>
-但是比较可恶的是宇宙苟把H题的辣鸡dp写成了线段树。快写完的时候才发现问题。
-然后我看不下去了,就开始施展G。然而看到我们快掉到#30的我心态爆炸,
-WA了5发之后才发现<b>写错了bfs</b>。
-</p>
-<p>
-然而这时宇宙苟又想到了<b>二维线段树</b>来搞H……还好他过了一会发现了这搞不得。
-(要是没发现的话估计G就过不了了(
-</p>
-<p>
-于是又用另外3发找到了G题的坑,最后过掉了G。不过H题就这么永远离开了我们。
-</p>
-<p>银牌滚粗。
-<a id="n2" href="#note2" class="note">[2]</a></p>
-<h3 id="tocanch8" class="tvis">上海ICPC ECL-Final</h3>
-<p>成功完成打铁梦想。</p>
-<p>
-12小时的火车到上海之后,唯一想做的事情就是睡觉。面基什么的,根本没去想。
-</p>
-<p>
-第二天早上醒来,发现在上海的jjy在群里找我。我立刻感觉大事不妙:
-「这是要玩真的吗……然而我现在只想睡觉呀(」。一会就得知jjy已经在旅馆楼下了。
-我才拖着100t重的身体起来洗漱穿衣出门。然后就见到了已经看了好久金鱼的jjy。
-(当然,没见到61有点遗憾。然而这是在意料之中的事,毕竟离得有点远。)
-</p>
-<p>
-和jjy聊了很多。基本都是些过往经历和未来打算的事。不过我目前……
-对未来实在是没什么完整的打算。大概与我的随遇而安的特点有点关系吧。
-谁知道这样好不好呢。当然作为一个在辣鸡专科学校为能否顺利毕业发愁的菜鸡,
-是无法体会到申到cmu的dalao的烦恼的。
-</p>
-<p>
-当然我们也聊到了ACM的事情。能够有这么一个「偷窥」
-到FDU校队的日常的机会也可以说是三生有幸了。不过关于这些我在这里并不想写太多。
-只能说从一个侧面证明了主导谈话的人往往具有更丰富的经验这个猜想吧。
-</p>
-<p>
-至于更早的ballance/virtools之类的事,就完全没有提到了。
-</p>
-<a id="n3" href="#note3" class="note">[3]</a>
-<h3 id="tocanch9" class="tvis">More rants on internal relationship</h3>
-<p>
-名额分配的过程中,又不可避免地出现了利益冲突。毕竟对人类这种终究是自私的动物来说,
-想要摆脱天性还是有点难度的吧。
-</p>
-<h3 id="tocanch10" class="tvis">投不投?</h3>
-<p>
-<s>不!</s>
-</p>
-<p>
-当然现在的状态可以说是类似已经入土又被强行挖出来了一样。
-</p>
-<h2 id="tocanch11" class="tvis">各种坑</h2>
-<h3 id="tocanch12" class="tvis">QMP</h3>
-<p>
-用 "modern" OpenGL 重写了SMELT。于是QMP的可视化的性能也有了些许提升。
-除此之外,应该只有bug fix了。
-</p>
-<h3 id="tocanch13" class="tvis">chrisoft.org</h3>
-<p>
-加上了piwik,然后又删掉了。<a id="n4" href="#note4" class="note">[4]</a>
-</p>
-<p>
-为庆祝十九大胜利召开,辣鸡专科学校<b>永久</b>封锁了所有(非官方控制的主机占用的)外网IP的常用TCP端口。
-<a id="n5" href="#note5" class="note">[5]</a>于是被迫上了反代。
-</p>
-<p>
-有位学长玩笑开得好:「『世界一流大学』的天机不可泄露啊!」
-</p>
-<h3 id="tocanch14" class="tvis">PCD</h3>
-<p>
-凉了。想什么呢你!
-</p>
-<h3 id="tocanch15" class="tvis">Android</h3>
-<p>
-试图给我的 Galaxy Note 4 适配 Lineage OS 15.1 ,奈何编译出的系统总是无法启动。
-</p>
-<p>
-帮 android-x86 修复了 iio 传感器的 HAL (后来维护者发现了 intel 官方仍在维护的相关项目……
-于是相当于没卵用)。又加了几个内核配置之类的东西(合进去的也就几行)。
-</p>
-<h3 id="tocanch16" class="tvis">"DAPS"</h3>
-<p>
-依然在做几乎只有自己一个人听的「Touhou BGM Remix」。(所以这个动力到底是哪来的,应该也是未解之谜之一。)
-</p>
-<p>
-至于自作曲,寒假试着搞了一个。然而因为自己已经几乎将所有乐理和键盘乐器的使用姿势如数还给了老师,
-所以……
-</p>
-<p>
-顺便在空闲时间练了 Maple Leaf Rag 。<s>发现基本功倒退严重,也许我应该滚回练习哈农和车尔尼。</s>
-</p>
-<h2 id="tocanch17" class="tvis">Distro-hopping</h2>
-<p>
-2017年11月4日夜,我最近的一次 distro-hopping 开始了。4天后<a id="n6" href="#note6" class="note">[6]</a>,
-一切终于就绪。我正式成为了Gentoo Linux用户。
-</p>
-<p>
-我日常使用的发行版只替换过三次: Ubuntu -&gt; Debian -&gt; Arch -&gt; Gentoo 。除第一次外,
-每次更换发行版的原因都只是为了「尝鲜」(第一次是因为当时系统已经处在彻底爆炸的边缘,不换不行了)
-<a id="n7" href="#note7" class="note">[7]</a>。
-而且每次都做了备份——为自己随时可能感到后悔铺好了后路。然而很快习惯新的环境之后,
-<a id="n8" href="#note8" class="note">[8]</a>
-这些备份都无一例外地进了<code>/dev/null</code>。
-</p>
-<p>
-自然「难装」并不是我换发行版的唯一标准,至少发行版的特点也是一个重要的考虑因素:
-<a id="n9" href="#note9" class="note">[9]</a>
-比如 Arch 虽然不支持部分更新,但是上游更新进源经常比 Debian sid 快好多;或者 Gentoo
-虽然编译耗时,但是可以用 USE flag 将不需要的功能排除在外之类。
-</p>
-<p>
-当然我不会像真正的 "distro-hopper" 一样三天换两次系统。
-主要原因是因为我更习惯自行配置系统,所以不需要纠结于「 Linux Mint 好还是 Manjaro 好」
-这种问题上。其次自然就是因为懒了(
-</p>
-<h2 id="tocanch18" class="tvis">正體字 Masterrace</h2>
-<p>
-<s>顯然,標題是用來引戰的;而且我這次也做了一回標題黨。</s>
-</p>
-<blockquote>
-「漢字簡化後,親不見,愛無心,產不生,廠空空,麵無麥,運無車,導無道,兒無首,佇無腳,
-飛單翼,湧無力,有雲無雨,開關無門,鄉里無郎,義成兇,魔仍是魔。」
-<div style="text-align:right;">——有些年頭的段子</div>
-</blockquote>
-<p>
-其實作爲一門語言,有變化才是正常的。沒有變化的語言那是已經消亡的語言。漢字的簡化,
-自古有之。政府簡化文字的初衷是好的。整理已有的俗字並且將其標準化也是好的。
-我主要反對的,在於「生造」出的簡化字。
-</p>
-<p>
-事實上漢字經過上千年的演化,象形的特徵有減弱的趨勢。比如我想現代人很少有看到「門」和
-「戶」的時候能想到後者其實是前者的半邊,如此等等。
-</p>
-<p>
-color/colour
-</p>
-<p>
-政治因素?
-</p>
-<h2 id="tocanch19" class="tvis">Interest shift</h2>
-<h3 id="tocanch20" class="tvis">Classical Music</h3>
-<h3 id="tocanch21" class="tvis">"Detoxification" and "the Switch"</h3>
-<h2 id="tocanch22" class="tvis">Is this world broken?</h2>
-<h3 id="tocanch23" class="tvis">Everyone's got Depression</h3>
-<h3 id="tocanch24" class="tvis">Cheating, Inqeuity and Shamelessness</h3>
-<h2 id="tocanch25" class="tvis">《我的性格和我的情绪》</h2>
-<h3 id="tocanch26" class="tvis">My "forks"</h3>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <s>我是Internet of shiT的信徒</s><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 非常搞笑的是在board.acmicpc.info的榜上我们居然是金。
-但是在看到只有爆零的队伍打铁之后就知道被逗了。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 以下部分为2018年10月底补写。拖延症晚期已经没得治了。
-以及,我可能已经搞不清为什么当时把这些主题列在这里了。<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 说实话像咱这种破站的访问记录实在没什么好看的。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 在十九大期间,连教务网站都必须在校园网内访问。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 实际上这4天中有3天我没有用电脑<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 其实是「听说这个发行版好难装啊,我要试试」(<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 实际情况是因为自己懒得恢复备份,所以不得不试着习惯新的环境
-<s>(当然我也不知道为什么我会觉得恢复备份比配置新的环境麻烦)</s><br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 因此我并不会在日常使用的环境上安装LFS。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-02-05.html b/blog/post/2018-02-05.html
deleted file mode 100644
index 02a088c..0000000
--- a/blog/post/2018-02-05.html
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Does gaming make me merrier &amp;amp; more relaxed or the opposite?")</title>
-<meta name="description" content="«Does gaming make me merrier &amp;amp; more relaxed or the opposite?» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Does gaming make me merrier &amp; more relaxed or the opposite?</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">
-Disclaimer: What this article is and what it is not
-</a></li><li><a class="toctarg" href="#tocanch1">"Playing saps the will"</a></li><li><a class="toctarg" href="#tocanch2">Clumsy me</a></li><li><a class="toctarg" href="#tocanch3">Finally...</a></li><li><a class="toctarg" href="#tocanch4">The Touhou project and Clumsy me cont'd</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-01-07.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-03-17.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Does gaming make me merrier &amp; more relaxed or the opposite?</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-02-05<br>#garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<h2 id="tocanch0" class="tvis">
-Disclaimer: What this article is and what it is not
-</h2>
-<p>
- </p><ul>
- <li>It's abount my current status.</li>
- <li>It expresses my fear of losing interest on everything.</li>
- <li>It doesn't speak bad of the game industry.</li>
- <li>Nor do I try to convince you to behave like me. Although it
- saves money, it's horrible.
- </li>
- </ul>
-<p></p>
-<h2 id="tocanch1" class="tvis">"Playing saps the will"</h2>
-<p>
-The heading is a literal translation of the Chinese idiom 「玩物丧志」.
-80% of the parents in China believes in this phrase, mine included.
-So I was strictly kept away from most ways of entertainment in my early
-years. During this period I developed distinct interests among the age
-group such as disassembling gadgets, programming and some music skills.
-Also due to the same reason, I've never had or even touched any device whose
-sole functionality is gaming (i.e. a gaming console, or even a Tamagotchi).
-</p>
-<p>
-The only way to play video games I was aware of then was to go to a stupid
-website within a intranet of my area. There was a deeply hidden link where a
-lot of flash games are hosted. There were plenty mockups of the Super Mario
-series, 「魔塔」<a id="n1" href="#note1" class="note">[1]</a>
-replicas and some strategic games, which definitely contributed to the
-shaping of my game preferences.
-</p>
-<p>
-The only non-flash game played by me when I was in the elementary school was
-Road Rash 2002.
-</p>
-<p>
-The only non-flash game I played during junior high school was Ballance.
-(although I also played a custom map (the tower defense one) for Warcraft
-III, a little Red Alert 2 and beat hazard, these never became my dominating
-game choice.) I played through the main content in the first month. But as
-for the DLC (Level 13, 「速度」/"Sudu"), I didn't pass it until the last day
-of Feburary this year. After going through the first 12 levels, I devoted
-myself to modding and later, cloning the entire game. I even made a new
-but somehow stupid game with the same engine called WHG3D. I still faced the
-pressure from my parents because they didn't want me do such "improper
-business".
-</p>
-<p>
-Of course I played solitaire and minesweeper, but at this time I wasn't
-aware of the actual rules of minesweeper so all I did was clicking randomly.
-</p>
-<h2 id="tocanch2" class="tvis">Clumsy me</h2>
-<p>
-After getting into senior high school, and later, the StupiD University,
-I got more time of my own. I was able to play more than ever, but suddenly
-I found out I was too clumsy to play...
-</p>
-<p>
-I tried...
-</p>
-<ul>
- <li>osu! but I was so clumsy that I couldn't play even with a
-touchscreen at the lowest difficulty.</li>
- <li>the Touhou project but I am so clumsy that I couldn't even make it
-through the normal difficulty of most releases. More on this later.</li>
- <li>Minecraft but I was constantly killed by myself using custom potions
-</li>
- <li>Snakebird but I was so dumb that I couldn't even make it through the
-fifth level.</li>
- <li>Portal and Portal 2 but I always got stuck in infinite loops.</li>
- <li>Neverball but I don't even know how to jump properly.</li>
-</ul>
-<p>
-These games are actually playable for me:
-</p>
-<ul>
- <li>Minesweeper: finally I am not clicking randomly anymore. I tried to
-be hardcore at this one but my highscores were capped at 130 seconds on
-hard. Not even close to 100 seconds.</li>
- <li>2048: once you get the trick, you can pass it infinity times.</li>
- <li>Patience: although I have little patience, I play patience. If I
-got stuck, I just redeal.</li>
- <li>Minecraft: still I was constantly killed by myself using custom
-potions.</li>
- <li>sequels of BTD: these games suck and lags a lot.</li>
- <li>chrome://dino: not really playable. I don't know what the fifth
-digit of the score is for because I can literally see nothing after reaching
-2400.</li>
-</ul>
-<h2 id="tocanch3" class="tvis">Finally...</h2>
-<p>
- All of these leads to my current situation: I still play those
-"playable" games. For example I can reach round 100 in BMC with a level 35
-city on most maps with ease and I can get to 4096 in 2048 without much
-effort, but I always suffer from a strong feeling of voidness
-<a id="n2" href="#note2" class="note">[2]</a>
- after stopping playing. I am unsure about the source of such feeling, but
-it is definitely related to playing games. The feeling is so strong that I
-often stuck for hours before I can actually start getting my jobs done.
-</p>
-<p>
- Probably due to the fear of creating more voidness, I refuse to learn
-playing a new game. Also I am gradually losing interest in the games I am
-still playing. This could be concerning because once I lost interest in
-every game I may be bored to death. All I can do now is to hope that I
-would have developed other interests to entertain myself then.
-</p>
-<h2 id="tocanch4" class="tvis">The Touhou project and Clumsy me cont'd</h2>
-<p>
- I came across this when I was in junior high school. At that time I
-thought this was merely girls shooting unknown substance while avoiding
-other unknown substance coming in all directions.
-</p>
-<p>
- Later I found the music of this series interesting and started actually
-playing it. Before long I started adoring those cute <a id="n3" href="#note3" class="note">[3]</a> characters as well.
-I changed my wallpapers on all my devices to pictures of those characters
-so that I can see them everywhere. Also I my favourite playlists were
-replaced by the in-game music.
-</p>
-<p>
- But all of these can't hide the fact that I suck at this game. I can't
-play through the Normal difficulty of most releases, some not even the Easy
-difficulty. This is probably due to some erroneous mechanics of my control
-system -- sometimes when my intent was to press a certain key, I may press
-another one instead. <a id="n4" href="#note4" class="note">[4]</a>Strangely this happens only when
-I am playing games, it seldom happens when I am typing. Just in case you
-are wondering, I type faster than most Chinese computer users, at around
-330 cpm or 66 wpm. However this doesn't help me become a decent gamer.
-</p>
-<p>
-What makes everything even worse is that I've got heart disease, making it
-impossible for me to play any games that require high tension or may
-cause great excitement. These games may really harm me.
-</p>
-<p>
-Any advice on how to fix me is highly appreciated.
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: lit. "Magic Tower", an RPG game<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Something like extreme boredom, but not exactly.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: In a oriental
-way -- a Japonic way to be more specific <br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: Also applicable to mouse clicks. When I try
-to activate a certain ability in BTD, I may find myself dying just because
-I was hitting the wrong button.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-03-17.html b/blog/post/2018-03-17.html
deleted file mode 100644
index bd32d58..0000000
--- a/blog/post/2018-03-17.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Some rants on SMELT, QMidiPlayer and Virtools")</title>
-<meta name="description" content="«Some rants on SMELT, QMidiPlayer and Virtools» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Some rants on SMELT, QMidiPlayer and Virtools</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/qmidiplayer/">qmidiplayer</a></li><li><a href="/blog/list/opengl/">opengl</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-02-05.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-04-17.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Some rants on SMELT, QMidiPlayer and Virtools</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-03-17<br>#devel #qmidiplayer #opengl</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-Well, I have to admit that creating a new blog post but not writing the
-actual content until more than a month later is <b>bullshit</b>. I've
-almost forgotten what I was thinking about when I created the post...
-</p>
-<p>
-But as you can tell from my recent activity, development of QMidiPlayer
-seemed to be stalled. No new features has been added since the rewrite
-of the MIDI mapper. However the rewrite is actually for the next planned
-major feature: an OPL3 emulator plugin and probably a VST host plugin.
-I spent one third of my winter break on reading the specs of the YMF262
-chip but made no real progress, which is a real shame.
-</p>
-<p>
-As for SMELT, I ported it to OpenGL 3.3+ but this is definitely not in
-my original schedule. The initial port has a whole bunch of bugs and
-quirks, also its performance was poor. Most of these were fixed later on
-with the help of <a href="https://github.com/apitrace/apitrace">apitrace</a>.
-However currently the new port still makes way more OpenGL calls than
-expected.
-</p>
-<p>
-Planned features for SMELT include vertex array switching, material,
-lighting and custom shaders. Adding these features will likely make the
-older version deprecated though. Plus there's no strong demand for these
-features. Therefore they may not be added any time soon.
-</p>
-<p>
-The Virtools part is an entirely accident. 2jjy and I suddenly got excited
-with the Virtools SDK and decided to find out what can it achieve. Before
-long 2jjy managed to analyze the internal structure of a Virtools
-<i>behavior</i>. These data determines how the behavior graph is presented
-in the schemetic interface. Checking 'hide script representation in
-schemetic' while saving simply discards these data, effectively obfuscating
-the script. The final tool we made public reconstructs the base of this
-structure using the logic of the script and tries to arrange behavior
-building blocks in a more human-readable way. It definitely helps future
-analysis of our old pal (Ballance), but not so much in my opinion. Porting
-the custom DLLs used by Ballance to a "newer" Virtools verion might be way
-more important.
-</p>
-<p>
-The tool has been
-<a href="https://github.com/BearKidsTeam/VirtoolsScriptDeobfuscation">made public</a>.
-As the job it does falls into a "grey zone", we don't know whether it is
-legally acceptable to use it. Use at your own risk!
-</p>
-</article>
-<!--
-vim:syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-04-17.html b/blog/post/2018-04-17.html
deleted file mode 100644
index 76f0bd4..0000000
--- a/blog/post/2018-04-17.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"The &amp;quot;Deepin is spyware&amp;quot; problem")</title>
-<meta name="description" content="«The &amp;quot;Deepin is spyware&amp;quot; problem» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">The "Deepin is spyware" problem</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/linux/">linux</a></li><li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/sophistry/">sophistry</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-03-17.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-04-22.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">The "Deepin is spyware" problem</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-04-17<br>#linux #garbage #sophistry</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-WARNING: this article contains strong words. Beware.
-</p>
-<p>
-Nowadays we can get in touch with people thousands of miles away really
-easily, which is not even imaginable just a few decades ago. Thanks to
-that, I visit reddit regularly and found some dispute about the only
-"sane" Chinese Linux distro arouse:
-</p>
-<blockquote>
-<a href="https://www.youtube.com/watch?v=v25Dy66AtNI">
-https://www.youtube.com/watch?v=v25Dy66AtNI
-</a><br>
-<a href="https://www.youtube.com/watch?v=tllqWzO8Bqw">
-https://www.youtube.com/watch?v=tllqWzO8Bqw
-</a>
-</blockquote>
-<p>
-Although I've never actually used Deepin as my daily driver, nor am I
-affiliated with the company that develops it, seeing Chinese being
-discredited in these posts made me want to say something for Deepin.
-However I found that I had literally nothing to say.
-</p>
-<p>
-Dispite of the clickbait nature of the video's title, deploying tracking
-code without notifying the user is blaspheming the user's trust in the
-software. However what really triggered me is their offical statement:
-</p>
-<blockquote>
-<p>
-Recently, there is saying that Linux Deepin is spyware. The logic is that Deepin has cnzz.com links in its website and Appstore, and since cnzz will collect some client information in the browser, thus Linux Deepin is spyware. It is really a serious problem, since nobody wants to have his/her private information leaked, as in the Facebook event.
-</p>
-<p>
-Deepin has to inform all those interested that our Appstore backend is a website and cnzz is a famous internet statistics analysis service provider that collects website anonymous usage information such as browser user agents, resolution, etc. and which is just a same product as Google Analytics. Deepin uses cnzz to collect website access information and so to know how to improve our website experience and detect website problems. No private information can be collected this way just by the data above mentioned.
-</p>
-<p>
-We hope this clarifies the spyware thing above and make the promise again that Deepin has not collected user private information in the past and will not collect user private information in the future.
-</p>
-
-Enjoy Linux Deepin~
-</blockquote>
-<p>
-This is utter nonsense. And it's even worse than nothing. It is same as
-saying "you dumbass chose to trust us and this is what you deserve."
-</p>
-<p>
-Also someone on reddit pointed out that Deepin comes with Google Chrome
-preinstalled and they distribute it from their own servers (almost
-certainly without Google's permission), which is explictly prohibited
-in the EULA of Google Chrome. What they could thinking should be like
-"fuck those legal stuff. Google won't give us a shit and let's provide
-maximum convience to our users!".
-</p>
-<p>
-So you might be wondering why I still refer it as "the only sane Chinese
-distro". Well, you might agree if you know something about other Chinese
-distros such as Start OS and Kylin OS. The latter is essentially the
-Chinese version of the Red Star OS. It has a very Windows 7-ish look
-and feel, which can be described as photocopying.
-</p>
-<p>
-Start OS (formerly known as ylmf OS) has a similiar history as Linux
-Deepin: they both emerged from organizations that produced pirated
-Windows XP using Ghost from Symentec. They started their own OS after
-the largest organization doing pirated Windows copies was taken down by the
-government. Start OS has been inactive for quite some time though.
-</p>
-<p>
-Deepin, however, really made some progress. At least they are developing
-decent software, not applying a Windows XP theme on Ubuntu and rebrand it.
-I actually used components from Deepin on my Debian machine for over a
-year (until KDE finally revamped their counterparts). Deepin managed to get
-a stable and fairly large user base. Then they seemed start doing what
-every single Chinese technology company have done: making software use the
-user. (In China, you don't use computer. The computer uses you! Seems
-familiar, right?)
-</p>
-<blockquote>
-Even though I am Chinese, I found some Chinese companies being over
-ambitious disturbing. And some of them don't really comply with the rules.
-(GPL violations of Allwinner and Xiaomi are infamous examples.)
-</blockquote>
-<p>
-Above is an excerpt from my unposted reply to the reddit post. The Chinese
-government seems acquiescent with that, for its own purposes. Shame on that.
-</p>
-<p>
-But trustworthy Chinese still exist, right?
-</p>
-</article>
-<!--
-vim:syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-04-22.html b/blog/post/2018-04-22.html
deleted file mode 100644
index ac7ef03..0000000
--- a/blog/post/2018-04-22.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"ICPC类比赛中计算几何问题之「乱象」")</title>
-<meta name="description" content="«ICPC类比赛中计算几何问题之「乱象」» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-frac{
- text-indent:0;
- display:inline-block;
- font-size:50%;
- text-align:center;
- position:relative;
- top:4px;
-}
-frac>sup{
- display:block;
- border-bottom:1px solid;
- font:inherit;
-}
-frac>sub{
- display:block;
- font:inherit;
-}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">ICPC类比赛中计算几何问题之「乱象」</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/acmicpc/">acmicpc</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-04-17.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-05-03.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">ICPC类比赛中计算几何问题之「乱象」</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-04-22<br>#garbage #acmicpc</div>
- <hr><div id="article" class="TText">
-
-<article>
-<p>
-虽然我还从未在博客里面写过一篇仅与ACM/ICPC相关的文章,但是今天情况发生了改变……
-</p>
-<p>
-今天打某神奇的「2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛」时,
-遇到如下一题:
-</p>
-<blockquote>
-在三维空间内给出一个平面和N个点,在给定平面内移动的速度为v<sub>2</sub>,在其余位置移动速度为v<sub>1</sub>,
-求按一定顺序走遍N个点并回到起点的最短所需时间。
-</blockquote>
-<p>
-当然原题面大约是六级不到500的人写的,所以猜题意用了不少时间。但是摸清题意之后,
-不就是计算几何套裸的TSP吗……于是让队友先写好TSP模板然后我去推计算几何的部分了。
-</p>
-<p>
-一开始非常智障地以为直接把点在平面上的投影点当落脚点就可以了,然而发现WA样例……
-(虽然已经猜到了结果)于是假设每一端分别少走一段距离,如下图:
-</p>
-<div style="text-align:center;">
-<img src="//filestorage.chrisoft.org/blog/img/180422-geomp.svg" alt="" width="80%" decoding="async">
-</div>
-<p>
-此情形下每侧用时的变化量
-Δt=<frac><sup>p</sup><sub>cosα×v<sub>1</sub></sub></frac>-<frac><sup>p×tanα</sup><sub>v<sub>2</sub></sub></frac>。
-Δt'=p<frac><sup>sinα×v<sub>2</sub>-sin<sup>2</sup>α×v<sub>1</sub>-cos<sup>2</sup>α×v<sub>1</sub></sup><sub>cos<sup>2</sup>α×v<sub>1</sub>×v<sub>2</sub></sub></frac>
-=p<frac><sup>sinα×v<sub>2</sub>-v<sub>1</sub></sup><sub>cos<sup>2</sup>α×v<sub>1</sub>×v<sub>2</sub></sub></frac>
-所以极值在sinα=<frac><sup>v<sub>1</sub></sup><sub>v<sub>2</sub></sub></frac>时取得。<s>管它是什么极大值还是极小值反正</s>就用它好了。
-</p>
-<p>
-然后因为懒得找模板于是手推了许久点在平面上的投影公式。打完之后发现……TLE!
-然后发现队友写了递归的TSP……重写了非递归TSP之后秒过。<s>顺便还抢到了一血。</s>
-如果一定要看我的辣鸡代码的话,<a href="//filestorage.chrisoft.org/blog/data/180422a.cpp">在这里</a>。
-</p>
-<p>
-于是你就见识到了这道强行结合TSP的计算几何的奇葩题目。
-<a id="n1" href="#note1" class="note">[1]</a>
-17年北京区域赛时也有一个判断线段是否与三角形内部有交集×bfs的题目也是神坑。
-</p>
-<p>
-不过高级别的比赛中的计算几何题目质量还是十分有保证的。像今年WF G题(疑似)用的Voronoi Diagram
-<a id="n2" href="#note2" class="note">[2]</a>以及去年WF的A题。当然今年WF E题这种混合物理的题,
-在官方发布数据之前我大概是过不了样例以外的任何测试点的(<a id="n3" href="#note3" class="note">[3]</a>
-</p>
-</article>
-<!--
-vim:syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 其实这套题目总体质量并不高……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 「疑似」是因为我还没写<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 现在数据发布了,搞到数据立即发现起点坐标读反了以及多写了一对fabs。<s>面向数据编程真好</s>。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-05-03.html b/blog/post/2018-05-03.html
deleted file mode 100644
index 7f82bb9..0000000
--- a/blog/post/2018-05-03.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Are you an Apple fanboy/fangirl?")</title>
-<meta name="description" content="«Are you an Apple fanboy/fangirl?» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-input[type=radio],input[type=checkbox]{
- -webkit-appearance:none;
- -moz-appearance:none;
- appearance:none;
- border-radius:10%;
- width:16px;
- height:16px;
- border:1px solid #999;
- transition:0.2s all linear;
- outline:none;
- margin-right:5px;
- position:relative;
- top:4px;
-}
-input[type=radio]{
- border-radius:50%;
-}
-.check:after{
- color:#999;
- content:"×";
- position:absolute;
- left:50%;
- top:50%;
- transform:translate(-50%,-50%);
- display:none;
-}
-input[type=radio]:checked{
- border:4px solid #999;
-}
-input[type=checkbox]:checked.check:after{
- display:block;
-}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Are you an Apple fanboy/fangirl?</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/interactive/">interactive</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-04-22.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-05-08.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Are you an Apple fanboy/fangirl?</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-05-03<br>#garbage #interactive</div>
- <hr><div id="article" class="TText">
-
-<article>
-<p>
-<b>DISCLAIMER:</b> This poll does not send any of your response to the server.
-It is a simple webapp working in your browser. Enjoy.
-</p>
-<script src="/blog/data/poll.js"></script>
-<blockquote>
-<table>
-<tbody><tr>
-<td colspan="2">
- <div id="page">
- <div id="qcaption"></div>
- <form id="qchoices">
- </form>
- </div>
-</td>
-</tr>
-<tr>
-<td>
-Score:<span id="score"></span>
-</td>
-<td style="text-align:right;">
-<button onclick="evalq()" id="nextbtn">Next</button>
-</td>
-</tr></tbody></table>
-</blockquote>
-</article>
-<!--
-vim:syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-05-08.html b/blog/post/2018-05-08.html
deleted file mode 100644
index cf22d53..0000000
--- a/blog/post/2018-05-08.html
+++ /dev/null
@@ -1,302 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Respecting your job")</title>
-<meta name="description" content="«Respecting your job» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Respecting your job</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/sophistry/">sophistry</a></li><li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/acmicpc/">acmicpc</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">尊重别人的委托 - 关于题目</a></li><li><a class="toctarg" href="#tocanch1">正直者之死 - 关于F题</a></li><li><a class="toctarg" href="#tocanch2">做最坏的打算 - 关于F题和其他</a></li><li><a class="toctarg" href="#tocanch3">一向阴暗的未来</a></li><li><a class="toctarg" href="#tocanch4">Fun facts &amp;c.</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-05-03.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-05-18.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Respecting your job</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-05-08<br>#sophistry #garbage #acmicpc</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-……所以为什么省赛总结起了一个这种奇怪的标题……
-</p>
-<h2 id="tocanch0" class="tvis">尊重别人的委托 - 关于题目</h2>
-<blockquote>
-<p>
-除非完全失去了对生活的希望,
-不然别人委托的工作还是至少应该抱着敬意来完成的。
-</p>
-</blockquote>
-<p>
-先不论题目质量(10题中有3题可以网络流乱搞过去),题目中明显的失误就有不少。
-虽然这并不在是说北邮的出题人不尊重他们的工作。
-(其实可以看出他们已经努力了,Nice try.)
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xa.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xa.png"></a><br><i>正式赛B题</i></div>
-<p>
-输出呢?经验是什么?数据范围呢???这种随便过一遍就能审阅出的明显问题,
-出现在省级比赛上,真的不会让人看不起吗?
-裁判组在比赛开始一刻钟有队伍提出质疑之后才(陆续)发现了此题中的各种问题。
-即使是印刷了错误版本的题目,依然不能原谅吧?
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xd.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xd.png"></a><br><i>Real Contest.</i></div>
-<p>
-Real contest? Faux contest?
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xb.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xb.png"></a><br><i>用Gill Sans作正文字体?</i></div>
-<p>
-即使用伦敦地铁用的字体也无法改变你英语差的事实。另外,
-1Il只有用游标卡尺才能量出区别的字体用在科技类文本里大概不太好吧?
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xc.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xc.png"></a><br><i>最好的防AK方式当然是题意杀啦</i></div>
-<p>
-最后是一道没有人能读懂的题。敝校公认英语最强的两位队员没有一个看懂的。
-感兴趣的读者可以挑战一下。<b>要能够解释样例才行喔</b>。
-</p>
-<h2 id="tocanch1" class="tvis">正直者之死 - 关于F题</h2>
-<p>
-于是上面写了那么多,到这里却才是本次省赛真正的亮点。
-下面我就以此题最大受害者
-<a id="n1" href="#note1" class="note">[1]</a>
-的身份来讲述一下F题的故事……
-</p>
-<p>
-首先来看一下题目(图片比较乱…):
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xe.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xe.png"></a><br><i>F题题面</i></div>
-<p>
-实际上F题是容斥里面比较常规甚至可以说是相当简单的,
-题目本身也可以说是中规中矩。思路其实很明显:设条件
-x<sub>1</sub>≠x<sub>2</sub>
-x<sub>2</sub>≠x<sub>3</sub>
-x<sub>3</sub>≠x<sub>4</sub>
-x<sub>4</sub>≠x<sub>1</sub>
-分别为A, B, C, D,同时也用A, B, C, D表示符合相应条件的集合。
-全集为仅需满足范围限制的四元组构成的集合。
-容易发现答案并不好通过A, B, C, D的集合大小求得。
-正难则反。∁A, ∁B, ∁C, ∁D及它们的交的大小更容易求得,而且
-∁(∁A∪∁B∪∁C∪∁D)恰好为所求的集合。多么基本的容斥……
-</p>
-<p>
-然而事情从这里开始变得诡异了起来。作为一道容斥,
-自然有把代码写成一坨屎的可能性。我的代码很不幸就写成了一坨。
-写到75%的时候觉得头大,于是直接砍掉重练。这次相对来说比较顺利,
-样例也是一发就通过了。然而,
-以往根本不负责数学题的我<a id="n2" href="#note2" class="note">[2]</a>
-对自己写的容斥持怀疑态度,决定写个暴力对拍一下。这下好。
-最水(没样例水)的数据就把我的程序卡掉了。于是就开始挂机找问题。
-这时比赛已经进行到了80分钟,我们队还没有瞟过一眼榜。于是找出榜一看,
-F题已经被过穿了。与此同时我还注意到这题的一血是开场<b>6分钟</b>
-的时候被我校一支相对较弱的挂星队拿到的。这下更好了。
-虽然是基本的容斥,但是按山东选手的水平,也不能6分钟写完吧?
-于是就开始想自己是不是想复杂了,然后就开始试图换思路,
-就有了题面附近大量乱七八糟的草稿以及下面这张图……
-</p>
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xf.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xf.png"></a><br><i>wtf???</i></div>
-<p>
-后来甚至想到了把整个区间分8段然后乘法原理强上的思路……
-然而因为依然难写所以也被否决了。此时的我,大概已是意识模糊,不省人事,
-以至于当队友跟我说「还是继续容斥吧」之后,
-我甚至无法用容斥手算出正确的结果了。。。
-最后我就直接宣告死在了这道题上。另外一个队友最后30分钟试图用乘法原理强搞,
-不过到比赛结束也没有搞出来。
-<a id="n3" href="#note3" class="note">[3]</a>
-</p>
-<p>
-当然如果事情就这么结束了的话,也不足以让这题成为本次比赛最大的亮点。
-比赛结束后我问了一下那支6分钟过此题的队伍,得知他们
-<b>直接输出的四个区间长度的积</b>。当时我就立刻晕了:
-莫非是花了四个小时在完全不同的一道题上?不过这题这么短应该不会读错吧?
-于是我试图询问他有没有对循环不等的条件有印象,他表示不知情。我……
-不得不猜测出题人rand生成的数据,
-而且很不幸这10<sup>6</sup>组数据里面没有一组区间有重叠部分的。
-此时我的内心十分平静,甚至想对裁判组施展白帝圣剑:
-F题什么难度你们不知道吗?6分钟被人过了就不看眼他的代码吗?
-<a id="n4" href="#note4" class="note">[4]</a>
-</p>
-<p>
-当然如果这件事情只有这么简单,显然依然不足以让此题成为本次比赛最大的亮点。
-闭幕式之前在山财校园中闲逛时,听到了这样的对话:
-</p>
-<blockquote>
-——「有个队四层循环就过了。」<br>
-——「那有什么,我们队连样例都没过也过了。」
-</blockquote>
-<p>
-听到这段对话的我表面强装镇定,内心早已就地阵亡。
-10<sup>42</sup>的计算量都能过,难道这题T=0?
-</p>
-<p>
-后来通过官方渠道证实,这题在比赛过程中用于评测的数据是全空的。
-还导致了最终裁判组和主办方之间意见的不一致。裁判组最后拒绝签字,
-这其实是负责任的行为,
-但是裁判组也可以以此把锅甩给PC^2和主办方所谓的「技术支持组」了。
-首先,PC^2是一个浑身上下都是bug,设计上也存在一些问题的程序。
-我们在配置17年校赛的时候,就遇到过PC^2无法保存题目名称的bug。
-各种各样的连接问题也是数不胜数,Judge还会爆Java内存。但是即便如此,
-裁判组仍然对此负有不可推卸的责任:如果在6分钟时就发现了问题,
-完全有时间重新上传数据并进行重测,对比赛也不会造成太大影响。
-而事到如今,这个6分钟通过的队伍,
-让大量其他不应该如此快速「通过」此题的队伍「通过」了此题,
-同时也对我们这样完全没有专攻数学题目的队伍造成了不可估量的打击,
-最后还让各方闹翻。这样的疏忽……可以算是epic fail了。
-至于推锅给「技术支持组」,
-一个有多年出题经验的学校把锅丢给一个没几年ACM经验的学校,
-可以说是非常不公了。当然由于我并不清楚这其中的分工,
-所以并不好对此妄加评论。然而我认为主办学校的「技术支持组」,
-本来就不应该负责太多与比赛直接相关的事务。
-</p>
-<p>
-其实可以合理地预测,
-比赛过程中没有验算而且在120分钟内通过此题的队伍,能够通过rejudge的
-也许只是凤毛麟角。
-</p>
-<p>
-至于这题对我队的影响,远没有未过一题这么简单。
-已经理论掉的I题也因此驾鹤西去了。当然,经历了无数次「几乎成功」的失败之后,
-我本人对此早已麻木,也就写不出×乎上那种动情的文字,
-所有的心情只能汇集成一个「sigh」了。
-</p>
-<p>
-然而以后碰到这种情况估计还是会死的。<s>人家就是如此正直,你有什么办法。</s>
-不过讲道理总不能把自己成功的希望寄托在别人的失误上吧(
-</p>
-<h2 id="tocanch2" class="tvis">做最坏的打算 - 关于F题和其他</h2>
-<p>
-事已至此,任何的假设都成了虚拟语态。更应该考虑的显然是找一个合适的解决方案。
-在这个问题上,即使我是「F题最大的受害者」,我仍然是十分理解裁判组的,
-因为类似的事情在我们举办校赛的时候也遇到过。
-所以我也没有像某些参赛者一样去「围攻」裁判组(我甚至没有加群),
-因为我们都清楚被围攻的滋味并不好。从出题人在知乎上的表态看,
-他们也承受着巨大的压力。
-但是F题的问题实际上与出题人的关系不大——更多在于题目配置及比赛过程中的疏忽。
-<a id="n5" href="#note5" class="note">[5]</a>
-</p>
-<p>
-至于在如何处理的问题上,从自私的角度考虑,当然是删除F题对我们最有利:
-<s>因为这样我们队就变成第一了</s>。其实无论是rejudge,维持原判还是直接删除,
-对部分队伍来说都是不公平的。较为公平的解决方案,
-无非是订正数据并延长比赛时间,甚至重赛。
-但是无论是承办方还是从北京远道而来的裁判,谁能承受延时或者重赛的负担呢?
-<a id="n6" href="#note6" class="note">[6]</a>
-</p>
-<p>
-在组织程序设计竞赛的时候,
-负责比赛准备的各方往往对比赛过程中可能发生的各种事故不做太多预案,
-而是更多地依赖提前把问题减少到最少。然而人总是不可避免地犯错,
-PC^2也没有应对这种问题的功能(甚至全部重测的功能)。是时候让PC^2退休了。
-</p>
-<h2 id="tocanch3" class="tvis">一向阴暗的未来</h2>
-<p>
-与山东其他高校不同,山大的ACM实验室似乎即将成为各路教员追逐名利的工具。
-真正一心为了实验室发展的人,不是根本没有,就是完全被边缘化了。
-</p>
-<p>
-当然,在现在各方都没有任何实际行动的前提下,并没有办法得出什么实质性的结论。
-不过,未来悬而未决的感觉也不好啊(
-</p>
-<h2 id="tocanch4" class="tvis">Fun facts &amp;c.</h2>
-<ul>
-<li>苟狗写了全部AC代码。<s>难道我成功培养了新一代代码手</s></li>
-<li>最后半小时队友试图抢救F题时,已经空状态的我在一边理论I题……
-<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xg.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xg.jpg"></a>
-<br><i>没用尺规</i></div>
-<br>
-……实在惭愧
-</li>
-<li>山财,作为一所刚刚开始搞ACM的学校,对这场比赛准备得可以说是很充分,
-也十分有诚意了。为了防止发生去年滚榜时的尴尬情形,
-他们甚至还提前排练了滚榜环节。
-虽然后来发生了各种不可预见的事故导致榜没有滚成,
-但是这不足以彻底抹杀他们为准备这场比赛付出的努力的。
-</li>
-<li>至于北邮,这所已经为山东省赛命题(至少)两年的学校,
-在命题这方面自然也可以说是十分有经验了。即使遇到了各种各样意料之外的事情,
-也不应该完全否定他们的工作——因为出题本身就不是一个容易活啊。
-</li>
-<li>14级学长的自嘲:「有了我们之后就再也没捧过杯」。
-<s>希望明年可以换种方式自嘲。</s></li>
-</ul>
-</article>
-<!--
-vim: syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 读完这部分之后你就可以知道为什么我可以给自己冠上「最大受害者」的称号了。<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: FYI,我们队的人员出现了调整,
-原来负责数学题的队友离开了<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 尽管在302分钟时发现比赛还没有被关闭就随手交了一发,
-然而那个提交并没有被评测。<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 就连在我们校赛的评测过程中,即使会去玩PC^2 Judge里的"I'm bored",
-每个题前几名AC的队伍的代码我们也是会看的。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 另,如果出题组和裁判组是完全不同的两队人,
-他们在比赛前应该有充分的沟通。而且出事之后出题人的道歉也无法代替后者。
-某种程度上我依然认为裁判组应当亲自有诚意、非匿名地正式道歉。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 今年我校校赛时有一位负责人在未与所有其他负责人商讨的情况下,
-因在最后30分钟发现数据出现问题擅自将比赛延长,
-导致实验室内部对此产生争议。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-05-18.html b/blog/post/2018-05-18.html
deleted file mode 100644
index 76fe048..0000000
--- a/blog/post/2018-05-18.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Ideology vs Pragmatism &amp;amp;c.")</title>
-<meta name="description" content="«Ideology vs Pragmatism &amp;amp;c.» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Ideology vs Pragmatism &amp;c.</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/sophistry/">sophistry</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Preface</a></li><li><a class="toctarg" href="#tocanch1">Ideology vs Pragmatism</a></li><li><a class="toctarg" href="#tocanch2">Free Software vs "Normies"</a></li><li><a class="toctarg" href="#tocanch3">"Free" vs "Open Source"</a></li><li><a class="toctarg" href="#tocanch4">Free software in China</a></li><li><a class="toctarg" href="#tocanch5">Monetization of Free Software</a></li><li><a class="toctarg" href="#tocanch6">Final words</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-05-08.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-06-05.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Ideology vs Pragmatism &amp;c.</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-05-18<br>#sophistry #garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<h2 id="tocanch0" class="tvis">Preface</h2>
-<p>
-Born in the 90s, when almost every piece of software around was
-proprietary, I felt *exteremely* lucky that I can now power my life using
-(mostly) free software. Still, I might never be able to understand the case
-in the 70s, in which, according to Richard Stallman, every piece of software
-is basically free.
-</p>
-<h2 id="tocanch1" class="tvis">Ideology vs Pragmatism</h2>
-<p>
-There are Linux distros<a id="n1" href="#note1" class="note">[1]</a>
-whose software repository contains free software only (e.g. Trisquel &amp;
-Parabola). There are also distros that doesn't care much about licenses
-(e.g. ArchLinux). Some distros falls between the two extremes: Debian
-has a <code>main</code> section which is entirely made up of free software,
-but it also has <code>contrib</code> and <code>non-free</code>
-<a id="n2" href="#note2" class="note">[2]</a> sections in their repository, which can be added to the system
-quite easily.
-</p>
-<p>
-To most of us who do not have a requirement on every single piece of
-software being free, we still have to use non-free components -- even to
-make the toaster<a id="n3" href="#note3" class="note">[3]</a> fully working. For
-example, non-free blobs in the Linux kernel and drivers. Using "free" distros
-on these computers essentially cripple the core functionality of that
-computer. If most users require non-free components, it makes sense that
-the distro providers include them in the software repository. As a matter
-of fact, I haven't met any user of a "free" distro outside of GNU.
-<a id="n4" href="#note4" class="note">[4]</a>
-</p>
-<p>
-Using a distro that provides proprietary software should not be considered
-a sin to free software.
-Actually it's a huge step towards freedom in today's world dominated by
-proprietary software. In order to remind the user of this, it is the
-responsibitliy for the distro provider to tell the user about the benefits
-of free software and advocate them contributing to it.
-</p>
-<p>
-Since I've got no mysophobia of proprietary software personally, I don't
-really care about installing proprietary software on my mostly free system.
-I prefer using free software whenever one is available. But if the use of
-free software results in crippling the core functionality (e.g. removing
-firmware blobs from the kernel causing WLAN cards made by Intel not
-working), I may compromise and install a few pieces of proprietary software
-(instead of using an external WLAN card like RMS).
-<a id="n5" href="#note5" class="note">[5]</a>
-</p>
-<h2 id="tocanch2" class="tvis">Free Software vs "Normies"</h2>
-<p>
-The idea of free software won't spread widely if it fails on the "normies".
-Everything about free software is a circlejerk of us <a href="https://stallman.org/articles/on-hacking.html">hackers</a>
-if we ignore the "normies". Sadly that is just the case right now.
-</p>
-<p>
-The major reason that free software fail to become daily driver of most
-people is that probably most free software targets at "mega-nerds" instead
-of the vast amount of computer "normies". These "normies" just use their
-computers either to get their office work done or to browse the web
-(sometimes both). In this sense, free software often offer terrible
-experience: Linux distributions, if not pre-installed by device vendor,
-often have bad out-of-box experience (either missing driver or firmware,
-or the software requiring too much tweaks to make it actually usable).
-Another example is window manager: the most popular window manager used
-by desktop Linux users is i3, whose default interface is obscure to new
-users and needs a lot of configuration before it suits the user. Only
-people that are really keen on tweaking would do that.
-</p>
-<p>
-Things are changing though. Some free software makers, for example the
-GNOME Fundation, are striving to make free software more user-friendly
-and fool-proof. They recently removed the ability to run executables
-directly in the file manager to prevent the user from accently running
-a malicious script that destroys their computer.
-<a id="n6" href="#note6" class="note">[6]</a>
-But in my opinion the components should remain customizable for the users
-who "knows what they are doing".
-</p>
-<h2 id="tocanch3" class="tvis">"Free" vs "Open Source"</h2>
-<p>
-Richard Stallman has made multiple statements on how he dislikes the term
-"Open Source". I pretty much simply repeat one of his points here.
-</p>
-<p>
-"Free" and "Open Source" has a large part in common: in fact, being "free"
-requires the software to be "open source". However the idea laying below
-is very different: The term "open source" is currently being abused by
-gigantic companies as a weasel word to avoid using "free". They often use
-free component in their proprietary products and doesn't want to remind the
-user that there is a free counterpart that doesn't take the freedom from
-them. A famous example of this is Google Chrome and
-Chromium. <a id="n7" href="#note7" class="note">[7]</a> Similarly, Microsoft "loves" Linux because it is "open source",
-not because it is "free".<a id="n8" href="#note8" class="note">[8]</a>
-</p>
-<p>
-On the other hand, Linus seems to be at the opposite end of it.
-<a id="n9" href="#note9" class="note">[9]</a>
-Pleased to learn that this world is never lack of diversity.
-</p>
-<h2 id="tocanch4" class="tvis">Free software in China</h2>
-<p>
-Free software is not having a good time in China:
-</p>
-<ul>
-<li>
-As Chinese use two distinct words for "free" as in beer and "free" as in
-freedom, we should have faced less problems than the English-speaking
-community. Sadly, almost all tranlators used the word for free beer when
-translating "free software".
-</li>
-<li>
-"Thanks" to the crappy copyright law in China, pirating software and
-reverse engineering is explictly allowed with some restrictions, making
-free software a lot less known to the general public
-<a id="n10" href="#note10" class="note">[10]</a>.
-That same crappy copyright law also gave chance to massive GPL violations.
-Examples: <a href="https://linux-sunxi.org/GPL_Violations">AllWinner</a>,
-<a href="https://www.xda-developers.com/gplv2-and-its-infringement-by-xiaomi/">XiaoMi</a>
-and <a href="https://www.xda-developers.com/have-you-paid-your-linux-kernel-source-license-fee/">MediaTek</a><a id="n11" href="#note11" class="note">[11]</a>.
-</li>
-<li>
-As China wasn't actually involved in the software industry until proprietary
-software has almost taken the whole thing, there are misconceptions
-regarding free software in the Chinese community. For example, the
-definition of 'source code' in <i>A Dictionary of Current Chinese</i>
-claims "protecting the source code helps to lower the chance of being
-hacked".
-</li>
-<li>
-Software engineering college in China only teach the process of proprietary
-software engineering. Although they utilize free software a lot through
-out the college, they do not promote the use of free software for 'serious
-work', often putting an emphasis on the strengths of proprietary software.
-</li>
-</ul>
-<p>
-As currently the entire Chinese software industry is really addicted (and
-devoted) to AI, ML, IoT and their 'made in China' nonsense, chance of
-solving these problems seems bleak. Also Chinese doesn't do stuff that
-makes no money, but ...
-</p>
-<h2 id="tocanch5" class="tvis">Monetization of Free Software</h2>
-<p>
-... free software <i>can</i> make money. Ethically.
-</p>
-<p>
-By saying ethically I am not promoting the act of getting a maga-sponsor
-and just doing anything they requested. The only ethical way for free
-software to monetize is probably paid support and donation. Red Hat is a
-well-known company that made sheer amount of money out of free software.
-<sup><s>Sarcasm. You should have known it.</s></sup>
-However, not everyone would succeed following that route (even Microsoft
-failed to figure out how to make it work /s). Thus the choice for the vast
-number of smaller free software projects would be donation. So why is
-accepting donation a good idea?
-</p>
-<ul>
-<li>The user donates what ever they want (money, hardware, code,
-translation etc.) voluntarily, and...</li>
-<li>There's no cap on donation amount, so those who got the fortune may
-donate <a href="https://dot.kde.org/2018/02/19/kde-receives-200000-usd-donation-pineapple-fund">a good deal of stuff</a>.</li>
-<li>Those who don't yet have the ability to donate would not be triggered.
-More over, the spirit of "free as in freedom" remains intact.
-</li>
-</ul>
-<p>
-But when things come to money, people starts getting greedy.
-Don't let your greed ruin the entire project.
-</p>
-<h2 id="tocanch6" class="tvis">Final words</h2>
-<p>
-This article is full of my immature thoughts and rants. Fortunately due to
-the low popularity of this site, they would not be exposed too much.
-Writing such a long article is really a pain in my ass though.
-</p>
-<p>
-If you have different opinions, please consider
-<a href="/#about">telling me about it</a> and probably correcting me if I
-made a mistake.
-</p>
-</article>
-<!--
-vim: syntax=html
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: By saying "Linux distros" in this article,
-I am refering to GNU/Linux distributions, except Alpine Linux.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: They use their very own guideline (DFSG) to determine whether
-a piece of software is free or not. The most famous difference between
-DFSG and GNU's guideline is that according to DFSG, GFDL is a nonfree
-license, which, in my opinion, is pretty ridiculous.
-<i>Such ideology, much hilarious.</i>
-<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: i.e. computer<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: There's one exception: Pure OS from Purism, which is tailored for
-their Librem devices. So it runs without proprietary software on their
-devices just find. Of course I haven't seen one of those either because
-I live in China. But I expect my next laptop to be a Librem 13 as long as
-they improve the battery life and make it thinner -- at least on par with the
-ThinkPad X line products.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: Yup I may never program OpenGL on a libreboot-ed ThinkPad T400
-or X200. Those ThinkPads were a classic but perform pretty bad whenever
-I do CPU-intense jobs.
-<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>:
-This is half truth, half sarcasm. It <i>does</i> make nautilus fool-proof
-(kind of).
-GNOME is always removing customizability from their desktop environment
-recently, which I can't tell is good or not. This indeed reveals the
-dictatorial decision-making process inside the development cycle.
-<b>However, <a href="https://gitlab.gnome.org/GNOME/nautilus/commit/ce73de0c98f1d32cdafc40775ee59692f5a7288d">
-this change has been reverted a week ago</a>. Cringy.</b>
-<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: Chromium is actually a pretty nasty example of free
-software: it contains tracking code from Google. Efforts have been made to
-strip those from the browser. The resulting product is called "Iridium".
-<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: Probably because Microsoft doesn't know
-how to make profit with free software.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>:
-<a href="https://www.youtube.com/watch?v=bw58LZTuZjA">a</a>
-<a href="https://www.youtube.com/watch?v=b89fKsT1i7s">b</a>
-<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: also making China an ideal place to reverse engineer something /s.
-<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: Taiwan (whether a part of
-China or not. No politics here.) has better environment for free software in
-general, but still horrible.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-06-05.html b/blog/post/2018-06-05.html
deleted file mode 100644
index f825c24..0000000
--- a/blog/post/2018-06-05.html
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Software Project Management in the Free Software World")</title>
-<meta name="description" content="«Software Project Management in the Free Software World» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Software Project Management in the Free Software World</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/sophistry/">sophistry</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Project charter. What?</a></li><li><a class="toctarg" href="#tocanch1">Tools and outdated approaches</a></li><li><a class="toctarg" href="#tocanch2">Free software that is...</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-05-18.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-06-07.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Software Project Management in the Free Software World</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-06-05<br>#sophistry</div>
- <hr><div id="article" class="TText"><article>
-<p>
-This article is based on a presentation project I did for the software
-project management course. The original presentation can be found
-<a href="//filestorage.chrisoft.org/blog/data/ventriloquist.pdf">here</a><a id="n1" href="#note1" class="note">[1]</a>.
-</p>
-<p>
-As mentioned in <a href="https://chrisoft.org/blog/post/2018-05-18.html#tocanch4">
-another article</a>, software engineering college
-in China (one of which I am currently studying in) mainly deals with
-the development cycle of proprietary programs with a very specific purpose
-(i.e. enterprise software), such as software system for a library or an
-electric grid. Unfortunately, there are very few instances of free
-enterprise software in the wild. Therefore it's safe to assume that I still
-know nothing about the life cycle of a free software project except my own
-experience.
-</p>
-<h2 id="tocanch0" class="tvis">Project charter. What?</h2>
-<p>
-Approximately 50% of the class is focused on the project charter. How the
-charter is issued. Why modifying the charter is vital when the client requests
-to make a change in the requirements. This list can go a lot longer.
-</p>
-<p>
-However, project charter doesn't seem to play an important role in free software
-projects, at least compared to what I have learned. Even some <i>huge</i> free
-software projects such as KDE omits the project charter. Instead they have brief
-description of every sub-projects and use their 'philosophy' to govern the whole
-project.
-</p>
-<p>
-This can lead to problems though. When decisions need to be made, the only ones
-involved are the current maintainers. Free software projects fall into roughly
-four categories according to the way new features are introduced:
-</p>
-<ul>
-<li>Linux kernel/LineageOS: developers submits changes, got reviewed, and
-possibly merged.
-<p>Linux kernel is such a huge and complex project that probably only users
-extremely familiar with it know what new functionality they need. Also
-the code needs to have a reasonable wide range of use cases to be merged.
-This sets a pretty high standard for the contributors. LineageOS, on the
-other hand, is a lot easier to get started. However being mostly a community
-project, they cannot simply get every requested features implemented without
-help.</p>
-</li>
-<li>i3wm: this will never turn into compiz.
-<p>It is important for i3wm not to turn into compiz. However sometimes this
-can be abused for dictatorship over the project (e.g. gogs, which resulted
-in a fork into gitea.<a id="n2" href="#note2" class="note">[2]</a>)</p>
-</li>
-<li>systemd: let's add a email client to this.
-<p><s>j/k.</s></p>
-</li>
-<li><a href="#tocanch2">...</a></li>
-</ul>
-<h2 id="tocanch1" class="tvis">Tools and outdated approaches</h2>
-<p>
-Over the years, the process of building a commercial software has evolved a
-lot. However, the process of building free software seem to be stuck at what
-it was like in the 70s forever: (nearly) everything is still on mailing lists.
-Indeed, VCS, issue tracker and CI simplified a lot of stuff. And the
-infrastructure has also improved a lot from that of the 70s. But we are still
-no where close to a well-organized process. Personnel management is almost
-completely relying on faith. Deadlines can be pushed back again and again.
-That's it.
-</p>
-<h2 id="tocanch2" class="tvis">Free software that is...</h2>
-<p>... developed as if it was proprietary software.</p>
-<p>
-A very typical instance: Android. Repositories are not updated until new
-release comes out. Many related patents are held by Google. Even codename
-needs revealing.
-</p>
-<p>
-Another (less-known) example is Deepin, which one of my friends works for.
-It's infra is far less open to public than that of Debian or even Ubuntu.
-Public opinions are ignored from time to time.
-</p>
-<p>
-While making the project much more better-organized, this approach
-automatically makes the project dictated by the project management team.
-Many benefits of free software doesn't apply to such projects, which
-makes them closer to those 'shared source' software. Although still can be
-forked freely, most forks die out pretty quickly, as these projects tend
-to be pretty large in scale, maintenance of such a project is no trivial task.
-</p>
-<p>
-This is certainly not the best way to do it.
-</p>
-</article>
-<!--
-vim: syntax=html spell spelllang=en_us
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: I used the term
-"open source" in the original
-presentation, which is more familiar to the audience. But the actual focus
-is the free software world.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: The maintainer of gogs is <br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-06-07.html b/blog/post/2018-06-07.html
deleted file mode 100644
index 927db02..0000000
--- a/blog/post/2018-06-07.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Should this site still be alive by 2035...")</title>
-<meta name="description" content="«Should this site still be alive by 2035...» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Should this site still be alive by 2035...</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/sophistry/">sophistry</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">「阅读下面材料,根据要求写作:」</a></li><li><a class="toctarg" href="#tocanch1">前言</a></li><li><a class="toctarg" href="#tocanch2">正文</a></li><li><a class="toctarg" href="#tocanch3">後記</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-06-05.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-10-11.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Should this site still be alive by 2035...</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-06-07<br>#sophistry #garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<p>
-如果可以有個副標題的話,肯定是「2018年全國一卷高考零分作文」吧。
-</p>
-<h2 id="tocanch0" class="tvis">「阅读下面材料,根据要求写作:」</h2>
-<blockquote>
-<p class="noindent">
-2000年,农历庚辰龙年,人类迈进新千年,中国千万“世纪宝宝”出生。<br>
-2008年,汶川大地震。北京奥运会。<br>
-2013年,“天宫一号”首次太空授课。公路“村村通”接近完成;“精准扶贫”开始推动。<br>
-2017年,网民规模达7.72亿,互联网普及率超全球平均水平。<br>
-2018年,“世纪宝宝”一代长大成人。<br>
-……<br>
-2020年,全面建成小康社会。<br>
-2035年,基本实现社会主义现代化。
-</p>
-<p>
-一代人有一代人的际遇和机缘,使命和挑战,你们与新世纪的中国一路同行,
-成长,和中国的新时代一起追梦、圆梦。以上材料触发了你怎样的联想和思考?
-请据此写一篇文章,想象它装进“时光瓶”留待2035年开启,给那时18岁的一代人阅读。
-</p>
-<p>
-要求:选好角度,确定立意,明确文体,自拟标题,不要套作,不得抄袭,
-不得泄露个人信息;不少于800字。
-</p>
-</blockquote>
-<h2 id="tocanch1" class="tvis">前言</h2>
-<p>
-實際上自我高中畢業以來,
-我一直在觀望高考作文題目並且期望有時間能與廣大考生同題作文,
-但是因爲各種各樣的原因沒有得到實現。看到今年的高考作文,我暗自想到,
-「哇,再這樣下去,高考作文不就跟考研政治一樣了嗎?」於是決心不再拖下去了。
-</p>
-<p>
-提前告知不知情的讀者,我在高中時的作文總是可以把老師氣死的。
-以至於後來習作不交老師也不會來找我麻煩。首要原因,
-大概跟我的生活經歷與周圍大多數同學大不一樣有關係吧。
-然而現在一切都不同了。
-我不再受到立意跟得分直接掛鉤的約束,而可以真正「自由發揮」了。
-但是長期的壓抑讓我在表達自己的想法上有一點困難。
-所以實際能寫成什麼樣子,大概只能看造化了。
-</p>
-<h2 id="tocanch2" class="tvis">正文</h2>
-<a id="n1" href="#note1" class="note">[1]</a>
-<p>
-你好,來自2035年的18歲的朋友。
-</p>
-<p>
-我並不知道你來自何處,爲何性別,或者正在使用何種設備閱讀,
-甚至能否可以看懂這篇文章所用的文字。
-但是,很高興認識你。
-</p>
-<p>
-我並不知道我現在所生活的國家此時是否依然存在。如果回答是肯定的,
-它應該已經實現了它「基本實現社會主義現代化」的目標了吧。
-此時它已經是86歲的高齡,遠超那個只活了69
-<a id="n2" href="#note2" class="note">[2]</a>
-歲的傢伙了吧。
-</p>
-<p>
-抱歉失禮了,但是現在作自我介紹也許還來得及吧。
-這篇文章是一個來自17年前的、沉迷「自由軟體事業」
-而不能維持生計的幻想家寫成的。
-</p>
-<p>
-17年前,我們正無比糾結於「人類與人工智能的關係」以及「人類是否正在變懶」
-這樣的議題上。有人正力圖將生活中的所有瑣事交給時下所流行的「個人助手」來做。
-其他人質疑如此行事是否真的有所裨益,因爲節省出來的時間,
-似乎大部分都被用在爲娛樂網站增加流量上了。而「個人助手」所獲得的數據,
-被如何利用,也不得而知。還有激進者聲稱人工智能將毀滅人類,
-也有玩笑話說人工智能不過是一堆條件分支而已。
-但這樣的爭議,大概並不能持續17年吧。
-</p>
-<p>
-17年前的不久,微軟剛剛收購了GitHub。<a id="n3" href="#note3" class="note">[3]</a>許多人因此落荒而逃,
-卻選擇了一年前剛經歷刪庫風波的GitLab。
-也許我們自然不想看到行業中「神仙打架」的情形。
-更不想被衆位「神仙」在背後榨乾。
-但從一位神仙的光環下轉移到另一位神仙的光環下,
-所處的境地並沒有發生實質性的變化吧。
-這也是Savannah之類存在的理由之一。
-如果我能得知你們的時代除了信神仙之外還有其他選擇,我會十分高興的。
-</p>
-<p>
-17年前,有人爲越來越低的出生率擔憂着。在對立的一面,有人則在1991年就開始了
-「人類自願滅絕運動」。人作爲一種生活在食物鏈頂端的動物,
-控制自己的數量的方法無非以下幾種:內部競爭,自覺控制,或者所謂的「天意」,
-也就是玄學。內部競爭,我們有荒唐的關稅;自覺控制,我們有「計劃生育」;
-而「天意」,大概就反應在最近某些地區無法提振的生育率上了。
-最終人類生育的本能會否被這三樣壓倒,也許只有時間知道答案。
-希望你們給你們的後輩留下的「時光瓶」,也有機會被打開吧。
-</p>
-<p>
-最後,也許你還不知道,這篇文章的題目來自於17年前一個叫「高考作文」的東西。
-自然,我是完全地跑題了。但是,
-我只不過是誠實地寫出了排在我想給你們帶的話中的前幾位而已。
-很不幸的是,出卷人心中所想的政治宣傳目的,在我心中是排不上數的。
-我並不會做夢,只會做自己想做的事。僅此而已。
-</p>
-<h2 id="tocanch3" class="tvis">後記</h2>
-<p>
-也許對大部分人來說,我的關注點實在是過於奇怪了。對語文老師來說,
-這篇則顯然是不折不扣的零分作文嘛:
-</p>
-<ul>
-<li>偏離題意:完全脫離了出題人預設的政治宣傳方向。</li>
-<li>中心不存在:三個完全不相干的點。</li>
-<li>內容不當:第二段和第三段你就能看出我與所謂「主流價值觀」的不合了。
-</li>
-<li>感情虛假:感情?</li>
-<li>不符合文體要求,結構混亂:我只是隨便寫寫而已。</li>
-<li>語言不通順,語病多:也許我用程序設計語言能寫得通順一點?
-<s>不存在的。什麼東西都不會一次通過編譯的。</s></li>
-<li>字跡潦草難辨:雖然說屏幕字體不會「潦草難辨」,
-但是單是使用「已淘汰」的文字就夠了吧。</li>
-<li>深刻:單獨陳列事實。談不上深刻。</li>
-<li>豐富:900字上下,能寫個鬼。</li>
-<li>有文采:沒有。</li>
-<li>有創意:我甚至不知道他在說什麼。</li>
-</ul>
-<p>
-事實上,我在高中甚至寫過一篇叫做「噴當代中國大陸的『考場作文』制度」的文章。
-儘管我個人已經無需因要向語文老師討一點可憐的分數而強迫自己寫出違心的文字
-<a id="n4" href="#note4" class="note">[4]</a>(這可能是高中畢業能夠換來的有限的自由之一:
-可以寫自己真正想寫的東西——儘管還要受到各種「法」的約束),
-我可能依然要站在「關心後代」的角度爲他們擔心一下:
-畢竟以後他們可能就得像對待考研政治一樣處理考場作文了。meh.
-</p>
-<p>
-最後,給後來人留點文字這種本來很正常的行爲,
-一旦因被強行套上什麼東西而政治化,便會讓人覺得十分不適。
-不知道有多少人有和我一樣的看法。
-<a id="n5" href="#note5" class="note">[5]</a>
-</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 如果你認爲我沒有寫標題想扣我兩分,
-文章的標題就是這篇post的標題。<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 也可以認爲是74歲,根據不同的計算方式。<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 如果你不知道Git是什麼,
-可以想象整個事件的最終結果是自己的所有物品都需要在三家中挑選一家。
-<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: ……即使在我有必要這麼做的時候,我也盡力避免如此:
-比如乾脆不寫之類。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 如果多數人的看法都是這樣,那麼大致可以說明:
-1)語文老師都是怪物,或/和2)出題人有不可告人的目的<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-10-11.html b/blog/post/2018-10-11.html
deleted file mode 100644
index ed80ab3..0000000
--- a/blog/post/2018-10-11.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"The stupid blogging system evolved!")</title>
-<meta name="description" content="«The stupid blogging system evolved!» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">The stupid blogging system evolved!</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/web/">web</a></li><li><a href="/blog/list/devel/">devel</a></li><li><a href="/blog/list/js/">js</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-06-07.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2018-12-06.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">The stupid blogging system evolved!</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-10-11<br>#web #devel #js</div>
- <hr><div id="article" class="TText"><article>
-<p>As you may not have noticed this time, the blogging system I am
-currently on received yet another major revamp: unlike the previous SBS,
-which will not work at all if you have JavaScript disabled or trying to
-browse with lynx/links/w3m, the new SSBS is almost fully static: no
-JavaScript involved on the client side if you decide not to read my
-encrypted crap!</p>
-<p>This is a rather small update on the visual side: it shouldn’t have a
-huge impact on the reading experience by only stripping away some
-animations. More changes are actually under the hood.</p>
-<p>SBS 2.0 is archived and retired immediately. Old URLs will not be
-redirected. Substantial changes may still come up to the current version
-and may break unless a complete reload is performed.</p>
-<p>Full changelog below:</p>
-<ul>
-<li>+ Static page generator using node.js.</li>
-<li>+ Content encryption with AES instead of simple XOR.</li>
-<li>+ Decryptor now remembers every correct passphrases in local storage
-and try to decrypt once the page has been loaded.</li>
-<li>+ Optional custom preprocessor pass for markdown/reStructuredText
-support.</li>
-<li>- Vim-like command buffer, animations and key bindings removed on
-the posts listing page.</li>
-</ul>
-<p>The decryptor requires a ES7-enabled browser to work. All testing was
-done in Chromium 71 and Firefox 62. I don’t use ‘JavaScript best
-practices’ or ‘industrial standard testing processes’. It <em>just</em>
-works.</p>
-Find out more <a href="https://cgit.chrisoft.org/sbs.git/about/">here</a>.
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2018-12-06.html b/blog/post/2018-12-06.html
deleted file mode 100644
index d990f4e..0000000
--- a/blog/post/2018-12-06.html
+++ /dev/null
@@ -1,323 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"小米 MIX 3 上手体验")</title>
-<meta name="description" content="«小米 MIX 3 上手体验» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">小米 MIX 3 上手体验</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/hands-on/">hands-on</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">前言</a></li><li><a class="toctarg" href="#tocanch1">购买前</a></li><li><a class="toctarg" href="#tocanch2">剁手</a></li><li><a class="toctarg" href="#tocanch3">到货</a></li><li><a class="toctarg" href="#tocanch4">第一印象</a></li><li><a class="toctarg" href="#tocanch5">「偷工减料」和「虚假宣传」</a></li><li><a class="toctarg" href="#tocanch6">换掉令人我痛苦的 MIUI</a></li><li><a class="toctarg" href="#tocanch7">终于,小米脱掉了……</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-10-11.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2019-02-13.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">小米 MIX 3 上手体验</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2018-12-06<br>#device-review #hands-on</div>
- <hr><div id="article" class="TText"><article>
-<h2 id="tocanch0" class="tvis">前言</h2>
-<p>第三次买小米的东西,同时也是第二次买小米的手机。跟很多「米粉」相比,
-这个数量应该还不到他们的零头。</p>
-<p>前两次使用小米的产品,印象都不能算好。<a href="https://chrisoft.org/blog/post/2017-02-13.html#tocanch5">小米
-MAX</a> 不到一年开始自动重启, 至于小米<del>铁圈</del>圈铁 Pro
-<a id="n1" href="#note1" class="note">[1]</a>, 说好的大概都是骨灰级米粉。</p>
-<p>怎奈 Galaxy Note 4 里与奔腾 4 一样辣鸡的骁龙 805
-实在不争气,不光能让塑料壳手机当暖手宝用,续航更是尿崩。
-于是就又有了败家的想法。</p>
-<h2 id="tocanch1" class="tvis">购买前</h2>
-<p>早在去年,我就给自己以后的手机选择立下了三条规矩:</p>
-<ul>
-<li>拒绝任何形式的缺口屏<a id="n2" href="#note2" class="note">[2]</a></li>
-<li>拒绝无 3.5 mm 耳机插孔的机型</li>
-<li>拒绝将两个摄像头纵向排列在背面角落的机型</li>
-</ul>
-<p><a id="n3" href="#note3" class="note">[3]</a></p>
-<p>除此之外还有额外的几条加分项: - 可以有办法获得接近 AOSP
-的体验,官方提供则更好。 - OLED 2k 屏
-<a id="n4" href="#note4" class="note">[4]</a></p>
-<p>上面的三条规矩的重要程度基本上是递减的:我不能忍受任何屏幕被啃掉一块的机型,
-然而耳机插孔和摄像头排列相对就没有那么重要了。尤其是在给 Galaxy Note 4
-配上无线充电后,发现 Micro-USB
-的使用频率已经非常低了。这么一来后面两个规矩就几乎形同虚设了。</p>
-<p>至于加分项,得益于 Project Treble ,现在的大多数 Android
-手机大概都能满足第一项。
-第二条则相对比较难以满足了,于是后来它就被拆分成了两个单独的条目。</p>
-<p>机型选择上,首先看上的还是「老朋友」 Nokia 的 Nokia
-8,然而该机型在中国实在难以购得。 于是又盯上了它的后续版本 Nokia 8
-Sirocco。然而它的价格对于一款采用过时平台的手机来说有点高了。
-后来又想到了用了6年多的三星,可惜三星现在的高端机型也是完全买不起的。于是我打算11月中旬去香港的时候顺便看一圈再决定了。
-<a id="n5" href="#note5" class="note">[5]</a></p>
-<p>就在这个时候,小米发布了 MIX
-3。我向来不是非常关注小米的产品。发布会看了5秒就关掉了,
-只看到一个雷军在故宫的什么建筑物前面「做现场的表演」。过了几天看了一眼相关信息,觉得好像还可以(除了犯了规矩的后两条,
-以及小米万年的 1080p
-屏幕)。于是就计划再给小米一次改变我对它的看法的机会,做了「先买再说,不行7天退货」的打算。</p>
-<p>当然在购买前我已经做好了一部分钱会打水漂的心理准备:因为从来不用前置摄像头,
-所以花在这些东西连同被吹得特别厉害的滑盖<a id="n6" href="#note6" class="note">[6]</a>
-上的钱就相当于浪费掉了;还有永远不会用到的 16GB
-之后的存储空间。<del>这些钱是永远也会不来了。</del></p>
-<h2 id="tocanch2" class="tvis">剁手</h2>
-<p>有着「猴王」美称的雷军怎么可能让我这只不谙世道的小猴子顺利购买他们的最新机型呢。11月1号第一批在最多20秒之后就……没有了。
-于是只好等11月11号。</p>
-<p>11月11号的开卖时间是凌晨0点。这对在23:00以后只能在宿舍玩手机的我是极大的一个不利。0点过去了,
-小米官网的购买通道果然进入了预期中的无限排队模式。无奈只好试一下小米的×猫官方旗舰店,发现还有货,
-不过只剩下了 6/128 和 8/256 的型号。这就让本来计划购买 8/128
-版本的我十分为难了。后来在
-「既然已经被小米坑了3000多元了,再多被坑400元也不是什么大问题」的思想的唆使下,剁了
-8/256 的型号。 (于是永远被浪费掉得存储空间变得更多了)</p>
-<h2 id="tocanch3" class="tvis">到货</h2>
-<p>付款之后,小米迟迟没有发货的迹象。直到15号我的飞机已经在香港落地之后货才发出。当然顺丰依然是跟往常一样快,
-似乎根本没有受到「双十一」<a id="n7" href="#note7" class="note">[7]</a>的影响,
-第二天就到货了。托了一个同学帮忙去取。他在拿到快递之后的第一句话是「包装好简陋啊」。嗯……不祥的预感。</p>
-<p>从香港回来之后看到了静静躺在我的桌子上的 MIX 3
-包装盒,还有一张「价值300元」
-<a id="n8" href="#note8" class="note">[8]</a>的小米移动电话卡。开箱做了各种检查之后,发现不幸并没有降临在我的头上。
-真是万幸(</p>
-<h2 id="tocanch4" class="tvis">第一印象</h2>
-<ul>
-<li>重。MIX 3 用了一段时间再次拿起 Galaxy Note 4
-的时候,会觉得塑料壳手机好轻(</li>
-<li>滑。后盖简直可以当镜子用。比塑料壳手机看起来不知道要高到那里去了。<del>然而滑到不加壳根本不敢用,所以最后还是塑料壳手机。</del>
-同时后壳还是指纹收集器。</li>
-</ul>
-<p>整部手机的外形尺寸与 Galaxy Note 4
-几乎一致(宽度稍窄,长度略长),却比 Galaxy Note 4 重了 25%。
-「半斤米」真是名不虚传。</p>
-<p>没有遇到网传的屏幕左右晃动问题。我手里这台的屏幕晃动幅度不比任何一台曾经用过的滑盖手机大。
-1080p 的屏幕当然没有 1440p 的细腻,但是「又不是不能用」(</p>
-<p>至于被小米吹爆的拍照,感觉实际表现一般般。下面这张是从辣鸡专科学校宿舍里拍的
-(point-and-shoot,全为自动设定)。 作为对比,右边一张是 Galaxy Note 4
-<a id="n9" href="#note9" class="note">[9]</a> 拍的。
-(其实我关掉过拍照水印。但是为了拍这张照片专门恢复了全部初始设定。另外我认为拍照上打水印属于作弊行为
-—— 与考试在试卷上做答题以外的记号毫无区别。)</p>
-<p>(图丢了,请自行想象两个不同时期的菜鸡互啄的场景(不是))</p>
-<p>与人眼的感受相比,MIX 3 的图像明显过亮。相比之下 Galaxy Note 4
-的结果更接近实际感受(噪点数量不接近)。 <del>至于什么
-DxOMark,都是钱买来的,当笑话看就好。</del> <a id="n10" href="#note10" class="note">[10]</a></p>
-<h2 id="tocanch5" class="tvis">「偷工减料」和「虚假宣传」</h2>
-<p>首先放一张扫图跟官方渲染图的叠加照片</p>
-<div style="position:relative;top:0;left:0;">
-<p><img style="position:relative;top:0;left:0;opacity:0.5;z-index:0;" id="s" width="400" src="//filestorage.chrisoft.org/blog/img/mix3_woprotectcover.png" decoding="async">
-<img style="position:absolute;top:0;left:2px;opacity:0.5;z-index:1;" id="r" width="396" src="//filestorage.chrisoft.org/blog/img/mix3_render.png" decoding="async"></p>
-</div>
-<p><input style="width:100%" type="range" min="0" max="100" value="50" oninput="document.getElementById('r').style.opacity=this.value/100;document.getElementById('s').style.opacity=1-this.value/100;"></p>
-<p>可以看到,四侧边框均有所膨胀(由于对齐问题,左侧的边框看起来似乎比右侧膨胀得多些)。
-作为一个3元的方便面包装上能画出牛肉的国家的公民,对这样的「虚假宣传」当然是司空见惯。
-但是毕竟苹果都不会拿渲染图来糊弄人,小米这种「果粉」企业,就不能从苹果身上学点好东西吗(</p>
-<p>另外在官网参数的传感器一栏,MIX 3
-似乎缺少了气压计和霍尔传感器。当时我在付款后才发现这点。
-于是对阉割旗舰机传感器的小米感到失望。然而机器到手之后,发现实际上是有这两个传感器的。
-<del>这应该也算虚假宣传吧?</del></p>
-<p>最后,看到 gsmarena 上写的屏幕玻璃是 Corning Gorilla Glass
-(unspecified version) 就感到了一丝不安。
-没过多久我刚离开桌子几步手机就(由于未知的原因)从桌子上掉了下去。背面着地,捡起来一看好像没事。(还好已经套了壳,不然……)
-过了几天仔细观察才发现屏幕上已经有了划痕(一处相对不明显的面积约中号记号笔点一个点那么大,另一处是一个凹坑)。
-已知是 Corning Gorilla Glass 4 的 Galaxy Note 4
-用了一年半还没有什么肉眼可见的划痕。嗯……可以确定 MIX 3
-的屏幕玻璃肯定不是 Corning Gorilla Glass 4 了。
-<a id="n11" href="#note11" class="note">[11]</a></p>
-<p>19年2月14日更新: gsmarena 上更新了信息,发现确实不是 Corning Gorilla
-Glass 4,而是 Corning Gorilla Glass 5 。
-看来还是怪我我艹机太狠了(<a id="n12" href="#note12" class="note">[12]</a></p>
-<h2 id="tocanch6" class="tvis">换掉令人<sup>我</sup>痛苦的 MIUI</h2>
-<p>可以说 MIUI 是我关于这台手机最担心的特性了。</p>
-<p>说实话只要不是北朝鲜那种不准安装任何第三方应用的安卓机,好像都可以凑合用一下。
-但是花那么多钱买来的手机肯定还是要自己怎么舒服怎么用的(</p>
-<p>因为我个人的手机使用习惯与 &gt;90% 的国人都不同,所以 MIUI
-的许多优势特性我都体会不到。 而且小米手机的硬件本身又不像 Galaxy Note
-一样提供与可以将它和其他手机一下子区分开的功能
-<a id="n13" href="#note13" class="note">[13]</a>,
-所以直接解锁手机换掉系统并不会让我对 MIUI 有任何留恋。</p>
-<p>于是就开始换系统吧。首先就是要解锁 bootloader。我对手机厂商锁住
-bootloader 的做法是完全不在意的 –
-在不影响我换系统的前提下<a id="n14" href="#note14" class="note">[14]</a>。
-由于以前使用小米 MAX
-的时候解锁过手机,所以不需要重新申请解锁资格。打开当时的解锁工具,
-连接上处于 fastboot
-模式的手机,点一下解锁……本来以为就这么简单的,结果要我换最新的解锁工具。
-「还能不让我解锁不成」,我想道。然后就照做了,紧接着就撞上了小米最新的防……我也不知道他们在防什么用的技巧:</p>
-<p><a href="//filestorage.chrisoft.org/blog/img/lajixiaomi.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_lajixiaomi.png"></a></p>
-<p>还好我只需要等三天。论坛里看到有些要等十五天甚至三十天的就比较惨了
-<a id="n15" href="#note15" class="note">[15]</a>。</p>
-<p>我的不自愿三天 MIUI 体验就这么开始了。</p>
-<p>虽然以前用过小米的手机,但是因为对充满 iOS 味的 MIUI
-的抵制,所以实际交互时间可能不到 12 个小时。
-这次发现好像除了整个系统弥漫着果味和几个小 bug
-之外,好像明确可以指出的缺点也没那么多 —— 至少在登录 Google
-账号,换掉没有 App drawer 的 MIUI 默认 launcher
-之后还是可以凑合用的。</p>
-<p>至于前面提到的小
-bug,大概都是些许多人都碰不到的毛病。因为用手机习惯把控件大小调小些用,
-所以拿到之后第一步就是去设置里找显示大小的选项。然而在当时版本的系统里并没有发现这个选项
-<a id="n16" href="#note16" class="note">[16]</a>。于是我就只好去开发者选项里调最小宽度了。
-调完之后就出现了各种奇怪的状况……</p>
-<p>各种界面元素错位还有莫名其妙被砍了一刀的图标什么的。顺便右边的图里还有我这三天中看到的唯一一条
-M(A)I(D)UI
-广告,看到之后内置浏览器就被我设法禁用了。当然,这些问题远未达到影响正常使用的程度,只是看起来不爽罢了。</p>
-<p>MIUI 体验日的最后一天,收到一个
-OTA。装上之后发现图标里出白框的毛病没有了,但是界面元素错位的问题还在。
-此时我早已不在乎这些小毛病 —— 因为马上就可以刷机了。</p>
-<p>托 Project Treble
-的福,这台刚出的设备也有很大概率能找到适合日常使用的第三方系统。
-行动的时间到了,解锁,刷 vbmeta ,刷 A/B device 用的
-system<a id="n17" href="#note17" class="note">[17]</a></p>
-<h2 id="tocanch7" class="tvis">终于,小米脱掉了……</h2>
-<p>我给它戴上的「二流品牌」的帽子?</p>
-<p>也许还没有。至少没有完全脱掉。</p>
-<hr>
-<p>2021-01-30:
-因为个人无限的拖延,这篇文章可能永远也无法完成了……因为现在再写的话就不叫上手体验了。</p>
-<p>那么说下这两年来的使用感受吧。实际上纯粹使用MIX
-3的时间可能也就一年半多一点,因为大部分时间是同时带着 Galaxy Note 4和MIX
-3的(当然Galaxy Note 4的角色基本沦为了刷机刷砖或者送修时的备用机)。
-中间用过数种不同的系统:Pixel Experience, Resurrection Remix,
-(自己编译的和别人编译的)Lineage OS, Arrow OS,甚至 Google 的 AOSP
-GIS,当然少不了 xiaomi.eu 和国行的MIUI。</p>
-<p>在武汉的时候用国行MIUI里的小米钱包刷过几次地铁,是有点厉害。不过后来还是滚回了老套的支付方式。</p>
-<p>用得最久的当然还是Lineage
-OS。主要原因还是他们的基础设施和编译指南文档都不错,想自己做点小定制也容易。
-事实上如今的Lineage
-OS,在CM挂掉经历了数次功能上的阉割后,已经与AOSP相差无几了。当然对我这种
-<code>~/bin</code> 里好几十个自制脚本,<code>.zshrc</code>
-里也有好多自制函数的用户来说,问题并不大。再加上平时用的国产流氓应用极少
-(TIM和微信)以及我有独特的制伏国产流氓应用的技巧,就这么一直用下来了。至于别人说的bug多,
-也许是因为我的手机基本只有打电话看网页刷reddit的功能,并没有遇到过因为系统bug导致掉链子的事情。
-(我坚信微信的任何问题都必然是疼讯的问题(</p>
-<p>接下来说说售后和手机本身的质量吧。</p>
-<ul>
-<li>滑盖的缝里能插纸,这已经不是什么新鲜事了<a id="n18" href="#note18" class="note">[18]</a></li>
-<li>据称是大猩猩玻璃5代的屏幕玻璃比Galaxy Note 4的4代还要容易划伤。</li>
-<li>使用一年多后,有一片“匚”形金属片从滑盖机关中掉落出来,但似乎并未对滑盖功能造成影响。</li>
-<li>一年半时从约1.2米处摔落,屏幕一角的玻璃破碎。</li>
-</ul>
-<p>虽然都是些边边角角的小问题,对日常使用影响不大(玻璃碎了除外)。看到小米有399换屏幕玻璃的维修项目,
-还是选择换了屏幕玻璃。送修之前做了factory
-reset。从学校寄到天津维修工厂之后被通知玻璃更换需要转寄到深圳工厂,
-从寄出到重新拿到手总共花了一周时间。比较令人欣慰的是小米的维修工厂保留了我的第三方系统(尽管我跟客服说了可以刷机)。
-然而使用不过一个月之后,屏幕却完全无法显示了(有数条水平亮线)。听说小米有维修后保修一个月的政策,
-于是决定尝试再修一次。手机被天津维修工厂收到之后,被通知查不到维修记录,需要寄到上次维修的工厂。如此一来,
-这次维修又花了一周。这次维修我的第三方系统仍然得以保留,而且算下来我只用了400元就换掉了整个屏幕总成
-(原价850)……</p>
-<p>当然小米的售后也不是没有问题的……:</p>
-<ul>
-<li>线下售后对MIX
-3这种小众机型几乎相当于毫无作用。他们无法提供任何检查和零件更换服务。</li>
-<li>维修后,屏幕边缘的塑料边框上有几处被刀片划伤的痕迹。</li>
-<li>第二次返修后,后盖没有完全合上。</li>
-</ul>
-<p>第二次修完后,还有一段小故事:没过两天手机掉进装满水的盆子里了。虽然没过两秒就捞了出来,
-不过因为当时还没有发现后盖没有完全合上,所以……</p>
-<p>随后很快就发现了后盖没有合上(而且也相当于是因祸得福了)。
-于是立刻把手机拆了个稀烂然后和几包干燥剂一起放在密封袋中置于北京滚烫的暖气上。放了大约四个多小时之后,
-袋中不再出现水汽。于是重新组装起来,战战兢兢地使用到现在(三个月),暂时还没有爆炸(</p>
-<p>再扯点别的东西吧。如今的手机厂商,都一心想着如何出头露面,做出来的设计和功能,十有八九无非只是噱头。
-从所谓的全面屏,到五花八门的异形屏,对实际的交互和观感的改进,都基本可以忽略不计
-(观感方面,异形屏甚至可以说是相当大的破坏——当然观感是主观感受)。手机背面的摄像头从一个变成两个三个甚至四五个,
-手里这台DxOMark曾经第一的手机却还是连个电路板都拍不清楚,也是不知让人从何说起。充电速度也变成了纯粹的数字竞争。
-真不知道再换手机的时候这里将是什么样的一派景象。</p>
-<p>至于小米,起初作为「搅局者」,起到的作用自然不可小觑。在更加深入地了解手机从硬件到系统开发的流程和成本后,
-小米能把手机价格压到这个水平,也是相当令人印象深刻的。当然小米不会就这么容易地放弃利润,这些压下来的价格,
-还是要通过各种方式赚回来的。不过对于我这种买手机只是买硬件,对于自带软件,包括系统,则一视同仁地直接抹掉的用户,
-小米之流就无法从我这里赚到什么东西了。</p>
-<p>当然还有Pinephone, Librem
-5这类的「搅局者」。这些设备一旦售出,用户和厂商基本就不会产生金钱上的关系了。
-于是回本的重任就全都落到了售价上。这也导致了这些机型(相对它们的配置)高到离谱的售价。即便售价下来以后,
-考虑到它们的可用度,现在将这类机型作为日常机型对我个人来说还是为时尚早。</p>
-<p>所以这篇体验文写了两年多最后还是这么烂,以后还是不要写这种东西了。</p>
-</article>
-<!--
-vim: tw=0 syntax=markdown
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <del>听音乐只能听到_Hi_-hat,所以是_Hi_-Res
-Audio(</del><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 圆角屏幕并不在此列<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 将符合上面三条的手机筛选出来,你会发现某水果公司生产的奢侈品赫然在列。
-当然原因并不全是因为我是 “Apple
-Hater”,主要还是对其他厂商无故跟风的嫌弃(<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: <s>主要是不想要一台比旧手机屏幕更差的新机(</s><br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: <del>全怪苹果恶意哄抬物价</del>
-尽管三星的旧机型价格跳水仍然很厉害,然而这次不太想买过时平台的机型了。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 我曾经宣称到手就会吧屏幕用502粘起来,
-但是现在发现玩起来找回了当年玩高中同学的 Nokia X3
-的感觉(lbz是不是打喷嚏了),所以就没有粘。<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 有人能告诉我这个东西是怎么被硬生生地从无到有造出来的吗?<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 实际价值&lt;10元<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 非官方系统 (LineageOS 15.1)<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: <a href="https://www.gsmarena.com/dxomark_the_iphone_xr_is_unrivaled_among_singlecamera_phones-news-34592.php">一向看不上DxOMark的苹果最终忍不住也来给他们塞钱了</a><br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 我从不把手机和钥匙放在一起。唯一跟 MIX 3 放在一起的就是 Galaxy
-Note 4。塑料不可能划伤玻璃, 有作案能力的只剩 Note 4
-可怜的两圈金属边框了。<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: 不过我怎么艹机了来着?(<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: 这类硬件一般在通用的第三方系统下的集成支持都远不如官方系统。若是读者认为小米的滑盖属于此列,
-我只能提醒一句数位屏能提供的交互量跟滑盖应该不是在一个数量级上的。<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 某爱国厂 —— shame on you!<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: <a href="https://en.miui.com/forum.php?mod=viewthread&amp;tid=3806453&amp;highlight=bootloader%2Bunlock%2B72%2Bhours">[1]</a>
-<a href="https://www.miui.com/forum.php?mod=viewthread&amp;tid=21323385&amp;highlight=%E8%A7%A3%E9%94%81%2Bbootloader">[2]</a>
-<a href="https://www.miui.com/forum.php?mod=viewthread&amp;tid=18163530&amp;highlight=%E8%A7%A3%E9%94%81%2Bbootloader">[3]</a>
-<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: 后来我还去小米之家把所有展示机看了一遍,三台小米 MIX 3
-里只有一台没有此选项,
-其他机型的展示机基本都有<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: 小米 MIX 3 不是使用 A/B 分区模式的设备, 但是因为
-Android Pie 出现之前 Android 要求采用 A/B Update 的设备合并 ramdisk (/)
-和 /system (即 <a href="https://source.android.com/devices/bootloader/system-as-root">System-as-root</a>),
-所以 Treble GSI 的开发者直接使用 a/ab 来区分 system 镜像是否包含
-ramdisk。 而 Android Pie 发布后,Android 要求所有发布时搭载 Android Pie
-的设备使用 System-as-root 分区方案。 所以这里也需要用标注为 ab
-的GSI镜像。<br></span><span class="TText"><a id="note18" href="#n18">[18]</a>: <s>其实插个登机牌什么的还挺有用的</s><a id="n19" href="#note19" class="note">[19]</a><br></span><span class="TText"><a id="note19" href="#n19">[19]</a>: 。<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2019-02-13.html b/blog/post/2019-02-13.html
deleted file mode 100644
index b947258..0000000
--- a/blog/post/2019-02-13.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Site Revamp and Other Rants -- 2019 Edition")</title>
-<meta name="description" content="«Site Revamp and Other Rants -- 2019 Edition» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Site Revamp and Other Rants -- 2019 Edition</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/web/">web</a></li><li><a href="/blog/list/random-xp/">random-xp</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Mirror in Japan</a></li><li><a class="toctarg" href="#tocanch1">An Eruditus
-from Waseda and An Illiterate in China</a></li><li><a class="toctarg" href="#tocanch2">A world in which everyone
-can program</a></li><li><a class="toctarg" href="#tocanch3">The world of smartphone…</a></li><li><a class="toctarg" href="#tocanch4">Googlephobia</a></li><li><a class="toctarg" href="#tocanch5">Software Subscription Model
-Sucks</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2018-12-06.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2019-04-25.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Site Revamp and Other Rants -- 2019 Edition</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2019-02-13<br>#web #random-xp #garbage</div>
- <hr><div id="article" class="TText"><article>
-<p>If you are reading this, your browser probably fetched all data it
-required to display the page directly from my VPS hosted by ConoHa.</p>
-<h2 id="tocanch0" class="tvis">Mirror in Japan</h2>
-<p>(No pun intended)</p>
-<p>I set up my own git server half a year ago. Now I’ve found <a href="https://cgit.chrisoft.org/web.git/">the perfect use for it</a>. I
-create the git repository right in <code>/var/www/html</code> on my
-local server. The remote server has a post-receive hook that
-automatically pulls in the document root. Any volatile large files are
-moved to a new virtual host <code>filestorage.chrisoft.org</code> and
-kept in sync with <code>rsync</code>.</p>
-<p>The site also underwent a major cleanup. Many legacy stuff got either
-removed or relocated.</p>
-<p>Generally this means you should experience major speedup visiting
-this site. If, however, you are exeriencing problems, please do not
-hesitate to contact me.</p>
-<p>The reverse proxy is now moved to <code>rp.chrisoft.org</code>. It’s
-not yet accessible at the time of writing because my local server is
-hidden super stealthily under multiple layers of NAT.</p>
-<h2 id="tocanch1" class="tvis">An Eruditus
-from Waseda and An Illiterate in China</h2>
-<p>Everyone except me has made significant progress.</p>
-<p>I was actually shocked to learn that he’s now majoring in something
-related to aviation machinery.</p>
-<p>Shame on me, I guess.</p>
-<h2 id="tocanch2" class="tvis">A world in which everyone
-can program</h2>
-<p>I shall probably quit programming and move on by then.</p>
-<h2 id="tocanch3" class="tvis">The world of smartphone…</h2>
-<p>… is now a wasteland. Literally all flagship models are mutants from
-the Chernobyl exclusion zone.</p>
-<h2 id="tocanch4" class="tvis">Googlephobia</h2>
-<p>Shit. They are probably also watching me writing this.</p>
-<p>Thanks to (?) the GrandeFreakWitless, my reliance on Google is not
-that strong – nope. It’s actually my general fear and distrust of those
-tech giants.</p>
-<p>My fear was magnified by my recent findings of just how much Google
-knows about me – they probably know me better than myself; and again by
-Louis Rossmann <a id="n1" href="#note1" class="note">[1]</a>.</p>
-<p>When those Google fanboys are still enjoying the great convenience
-they provide, I’m already planning to flee from Google. It’s probably
-just me being hyperallergic, but it also could be Google doing something
-really unfair to their users.</p>
-<h2 id="tocanch5" class="tvis">Software Subscription Model
-Sucks</h2>
-<p>Reading through Roland Cloud’s product page triggers me everytime: I
-sincerely cannot figure out why they make it a subscription service
-rather than a one-time purchase (with a fee for each upgrade).</p>
-<p>Usually people subscribe for:</p>
-<ul>
-<li>Publication or media services, e.g.&nbsp;television, newspapers and
-magazines. These services provide frequently updated information to the
-subscriber.</li>
-<li>Physically consumable material, such as dairy product.</li>
-</ul>
-<p>Roland Cloud falls into neither of these two categories. It’s not
-updated as frequent, and it’s certainly not physically consumable. The
-most triggering detail is that if you end your subscription, you will
-not be able to use any of the products you previously owned, which is
-ridiculous because you can always keep older issues of a newspaper even
-you unsubscribed from it.</p>
-<p>Supporters of the subscription model may reject me saying ‘if you can
-get access to everything when you join and keep it after unsubscribing,
-you are essentially purchasing it with ultra-low price’, which brings up
-my next point: Roland Cloud’s subscription model is flawed from the
-beginning:</p>
-<ul>
-<li>Get everything on subscribe: this differs from traditional
-subscription a lot, which seems a great bounty to the customer. But it
-causes problems such as …</li>
-<li>Lose everything on unsubscribe: this is <em>very</em> unfair to the
-subscriber and makes short-term subscription worth almost nothing. For
-example if I just want Sound Canvas VA really badly, I would imagine
-subscribing shortly before its release and unsubscribe after I’m
-eligible for keeping the product permanently. But this is simply not
-possible.</li>
-<li>Weird pricing. To be honest the current pricing is pretty fair for
-long-term subscribers. But if Roland somehow decided to fix the ‘lose
-everything on unsubscribe’ problem (which is very unlikely to happen),
-the pricing would become super complex: they probably do not want people
-to keep a virtual TB-303 for just $19.99.</li>
-<li>Potentially unsustainable. Every good thing must come to an end. The
-most attractive products in Roland Cloud is the software models of
-Roland’s synthesizers from its golden years. But Roland will run out of
-models to recreate one day. What would Roland do by then? Release
-everything as a one-time purchase so that every long-term subscriber
-feels ripped off?</li>
-</ul>
-<p>I’m an absolute supporter of Roland releasing authentic-sounding
-digitialized version of their legendary synthesizer models. But their
-subscription model pisses me off so hard. I know it’s not a big deal for
-a professional producer. However this is a real deal-breaker for
-amateurs such as me.</p>
-<p>Unfortunately there’s no real competitors out there when things come
-to reproducing their own synthesizers. Also a little bit off-topic: the
-music producing industry deserves more high quality free (as in freedom)
-software.</p>
-<p>Now let’s move on and talk about Office 365 by Microsoft and Creative
-Cloud from Adobe. They bundles software with value-add services such as
-e-mail service and (optinal) creativity material. IMHO these products
-they are trying to turn into a service resemble a tool, such as a
-screwdriver, rather than an apartment that people actually go for
-renting instead of purchasing.</p>
-<p>Paying a monthly fee for a screwdriver makes absolutely no sense.
-That said, I would stick with my plain old screwdriver, rather than that
-shiny gold-plated screwdriver with 10 heads which I will lose whenever I
-stop paying them. <strong>Green is my pepper.</strong></p>
-<p>The purpose of this entire rant is to remind the reader of just how
-many ways proprietary software vendors could come up with to screw their
-users up. What they care the most has always been money and this will
-simply not change any time soon. Get ready for more!</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <a href="https://vimeo.com/329297480">link to
-video</a><br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2019-04-25.html b/blog/post/2019-04-25.html
deleted file mode 100644
index 01ceb09..0000000
--- a/blog/post/2019-04-25.html
+++ /dev/null
@@ -1,1468 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"EDIROL SD-80: A Trapped Beast")</title>
-<meta name="description" content="«EDIROL SD-80: A Trapped Beast» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">EDIROL SD-80: A Trapped Beast</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/midi/">midi</a></li><li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/hands-on/">hands-on</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">STUDIO Canvas acquired</a></li><li><a class="toctarg" href="#tocanch1">The configuration</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">Connection to the computer</a></li><li><a class="toctarg" href="#tocanch3">Settings things up in Linux</a></li><li><a class="toctarg" href="#tocanch4">Setting things up in Windows</a></li></ul></li><li><a class="toctarg" href="#tocanch5">What does it sound like?</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch6">Relation
-to EDIROL HyperCanvas and the Cakewalk TTS-1</a></li><li><a class="toctarg" href="#tocanch7">UPDATE: 2019-10-12</a></li></ul></li><li><a class="toctarg" href="#tocanch8">Working with the SD-80</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch9">Fighting against latency</a></li><li><a class="toctarg" href="#tocanch10">Recording</a></li><li><a class="toctarg" href="#tocanch11">Editing the sounds</a></li><li><a class="toctarg" href="#tocanch12">Impact on the workflow</a></li></ul></li><li><a class="toctarg" href="#tocanch13">Quirks</a></li><li><a class="toctarg" href="#tocanch14">Beneath the chassis</a></li><li><a class="toctarg" href="#tocanch15">What the manual doesn’t tell</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch16">Testing mode</a></li><li><a class="toctarg" href="#tocanch17">Messing around sans the
-chassis</a></li><li><a class="toctarg" href="#tocanch18">Chart A</a></li><li><a class="toctarg" href="#tocanch19">Chart B</a></li></ul></li><li><a class="toctarg" href="#tocanch20">Verdict</a></li><li><a class="toctarg" href="#tocanch21">Things to do besides
-imitating ZUN</a></li><li><a class="toctarg" href="#tocanch22">Newer Roland sound modules?</a></li><li><a class="toctarg" href="#tocanch23">Trivia</a></li><li><a class="toctarg" href="#tocanch24">If you want to learn more …</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2019-02-13.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2019-06-24.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">EDIROL SD-80: A Trapped Beast</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2019-04-25<br>#device-review #midi #music #hands-on</div>
- <hr><div id="article" class="TText"><script>
-window.addEventListener("DOMContentLoaded",function(){
-const cl=document.querySelectorAll('div.collapse');
-let n=0;
-for(let x of cl)
-{
- const d=document.createElement('blockquote');
- const dd=x.cloneNode(true);
- x.parentNode.insertBefore(d,x);
- x.parentNode.removeChild(x);
- dd.id=`cc${n++}`;
- dd.style.display='none';
- const s=document.createElement('span');
- const b=document.createElement('b');
- const a=document.createElement('a');
- a.classList.add('ca');
- a.setAttribute('x',n-1);
- a.innerHTML='show';
- a.href='javascript:void(0)';
- if (dd.hasAttribute('caption'))
- b.innerHTML=dd.getAttribute('caption');
- else
- b.innerHTML=dd.getAttribute('data-caption');
- s.appendChild(b);
- s.appendChild(document.createTextNode(' ['));
- s.appendChild(a);
- s.appendChild(document.createTextNode(']'));
- d.appendChild(s);
- d.appendChild(dd);
- a.onclick=function()
- {
- let x='none';
- if(a.innerHTML=='show')
- {
- a.innerHTML='hide';
- x='block';
- }
- else
- {
- a.innerHTML='show'
- }
- document.getElementById(`cc${a.getAttribute('x')}`).style.display=x;
- }
-}
-const al=document.querySelectorAll('audio');
-n=0;
-for(let x of al)
-{
- x.id=`a${n++}`;
- x.onplay=function()
- {
- for(let x of al)
- {
- if(x.id!=this.id)x.pause();
- }
- }
-}
-});
-</script>
-<article>
-<p>This article is about my hands on of the EDIROL STUDIO Canvas SD-80.
-Even though I’m a newcomer to the STUDIO Canvas owners community,
-veterans may still find something interesting here.</p>
-<p><strong>UPDATE</strong>: links to board shots are fixed.</p>
-<p><strong>UPDATE</strong>: <a href="https://chrisoft.org/blog/post/2020-11-20.html">A sequel</a> to
-this article has been posted. The sequel contains new updates,
-discoveries and corrections to this article.</p>
-<p><strong>UPDATE</strong> (2022-06-30): the sequel is now
-<em>actually</em> published.</p>
-<h2 id="tocanch0" class="tvis"><em>STUDIO Canvas</em> acquired</h2>
-<p>Ever since I learned that ZUN uses a SD-90 as one of his major
-synthesizers <a href="https://www12.atwiki.jp/touhousoundfont/pages/22.html">here</a>,
-I’ve always been dreaming to get my hands on one of those. But these
-things are not particularly easy to find in China. There are plenty of
-deals on ebay though. However, after a failed purchase attempt made in
-2016 which also led to the ridiculous suspension of my ebay account, I
-left the idea alone for multiple years. Things changed earlier this
-month, when <a href="https://owner203.com">owner203</a> helped me
-acquire my very own SD-80 and kindly delivered it from Japan.</p>
-<p>I did not go for a SD-90 since they are all ridiculously priced in
-2019. The deal I tried to make back in 2016 would cost me around $300
-(shipping included). Now they are all way beyond $400. This forced me to
-resort to lower-end models, namely the SD-80 and SD-20. There’s also the
-SD-50 which I almost bought back in 2014, before I found out it is
-essentially a stripped-down version of Roland SonicCell without the SRX
-expandability. Therefore although the SD-50 retains the compatibility
-with the synth engine found in SD-90 (both are from models supporting
-SRX, namely the XV-5080 and SonicCell), it comes with a complete new set
-of waveforms and patches which makes it sounds totally different. So the
-SD-50 is definitely a no go.</p>
-<p>The only choices left are SD-80 and SD-20. SD-20 can be found very
-cheap online (from $59). However SD-20 does have half of the polyphony
-and most editability of other STUDIO Canvas’ axed. Also gone are 3
-entire sound banks (and presumably some waveforms). On the other hand,
-SD-80 costs a lot more (starting from ~$200), but is capable of
-generating everything the SD-90 can (the only missing part in SD-80
-compared to SD-90 is the audio interface). After deciding no more
-compromise should be made, I went straight for the SD-80.</p>
-<p>The module arrived two weeks after the order was placed. It certainly
-wasn’t the happiest SD-80 in the world: the chassis bears quite a lot of
-scratches all around. The value knob takes a lot of force to turn and
-has a good amount of friction on it, to which I found a quick solution
-by simply pushing the knob downwards a little bit while turning it.
-Aside from the looks, the module itself is in perfect working order. It
-came with a power cord and its rack mount ears, but without any of its
-original paperwork or the CD-ROM. As most of the documentation and
-drivers can be found online, the only things I’ve lost are the demo midi
-files, which is still a shame.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_top.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_top.jpg"></a> <br>Top cover
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_label.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_label.jpg"></a> <br>Label with S/N
-removed. Visible on top left corner is a foot pad that seems to be a
-slice of cork.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_front.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_front.jpg"></a> <br>Left half of
-the front panel. Buttons yellowed out, showing the module’s age.
-Scratches and dents are visible.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_back.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_back.jpg"></a> <br>Wow! Such
-Optical! Much MIDI!
-</div>
-</td>
-</tr>
-</tbody></table>
-<h2 id="tocanch1" class="tvis">The configuration</h2>
-<h3 id="tocanch2" class="tvis">Connection to the computer</h3>
-<p>Without the audio interface portion, it’s impossible to use the SD-80
-with only a USB connection: you need something for it to connect to in
-order to make a recording.</p>
-<p>To begin with, I wanted to get something that accepts S/PDIF input
-for the audio interface. But those kind of things are scarce today. The
-closet model I could find in Chinese market was from an unknown vendor
-and comes with a very sketchy chip, whose official driver only supports
-up to Windows 7 32-bit. As a crappy digital interface may sound worse
-than a more decent analog one, I went for one of the cheapest audio
-interfaces available: a Focusrite Scarlett Solo (which is more than 5
-times the price of the weird digital interface and probably still better
-than the one comes with SD-90 as it supports up to 192 KHz sampling
-rate).</p>
-<p>For a audio equipment novice, connecting things up wasn’t that
-straightforward: I tried connecting the phone output on the SD-80 to the
-line in of the audio interface and it kind of works. There is just one
-<em>tiny</em> problem: the left and right channels got mixed up into
-one, and is only on the right channel in a stereo recording. At first I
-thought it was my cable. But after a couple minutes of researching, I
-found out that every input on an audio interface is actually mono.
-<strong>WHY</strong>? Guess I’ll never know.</p>
-<p>So I got another TRS to XLR connector. After connecting the left
-channel of output 1 on the SD-80 to the microphone input on the audio
-interface and the right channel to line level input, it produces stereo
-recordings as expected. The resulting audio is very unbalanced though,
-due to the microphone input being much more sensitive than the line
-level input. In order to balance them I played a sine wave on the SD-80
-and adjust the input level of each channel so that while turning down
-the volume knob on the SD-80, the level indicators on all channels stop
-blinking at the same time.</p>
-<p>The ‘direct monitor’ switch on Scarlett Solo enables live monitoring
-of the input without operating system intervention and therefore,
-without latency. However the direct monitor feature on Scarlett Solo is
-limited to mono only, so in order to get stereo monitoring, a round-trip
-through the computer is required.</p>
-<h3 id="tocanch3" class="tvis">Settings things up in Linux</h3>
-<p>If you are absolutely insane and using Gentoo Linux just like me,
-make sure you’ve already got working audio and have the following kernel
-configuration items enabled:</p>
-<pre><code>Device Drivers ---&gt;
- &lt;*&gt; Sound card support
- &lt;*&gt; Advanced Linux Sound Architecture ---&gt;
- [*] USB sound devices
- &lt;*&gt; USB Audio/MIDI driver</code></pre>
-<p>Both SD-80 and Scarlett Solo should then just work out of box (if you
-are using pulseaudio <a id="n1" href="#note1" class="note">[1]</a>).</p>
-<p>At first I thought only the ‘generic’ USB mode of SD-80 is supported
-by this kernel module, however it turns out the ‘vendor’ USB mode works
-just fine as well. It also suffers a lot less stuttering.</p>
-<p>The USB vendor ID and product ID is 0582:0029. Changing the USB mode
-to generic makes it 0582:002a.</p>
-<p>In order to monitor the input, load the loopback module first:</p>
-<pre><code>pactl load-module module-loopback latency_msec=1</code></pre>
-<p>(<code>latency_msec</code> means exactly what the name suggests)</p>
-<p>then move it to the audio input of the audio interface:</p>
-<pre><code>pacmd move-source-output 7 alsa_input.usb-Focusrite_Scarlett_Solo_USB-00.analog-stereo</code></pre>
-<p>where 7 is the index of the loopback followed by the name of the
-input of your audio interface. Usually you can use tab completion,
-however if you are still unsure, you may also use a GUI utility such as
-<code>pavucontrol</code>.</p>
-<p>I haven’t tried JACK yet. But using QjackCtl should make everything a
-breeze.</p>
-<p>The editor for SD-80 works perfectly using wine.</p>
-<h3 id="tocanch4" class="tvis">Setting things up in Windows</h3>
-<p>Setting things up in Windows is somehow more tedious than it should
-be. Roland didn’t bother releasing a driver for Windows 10, but a web
-search indicates the driver for Windows 8/8.1 works on Windows 10 with a
-minor tweak. As the device works with a generic driver on Linux even
-when the USB mode is set to ‘vendor’, it will probably work on Windows
-without the Roland driver too. Although I’d rather install the official
-driver for Windows 8/8.1 because there is one.</p>
-<p>The tweak is simple. Open up <code>RDIF1023.INF</code> in a text
-editor, copy everything under section <code>[Roland.NTamd64.6.2]</code>
-to section <code>[Roland.NTamd64.7]</code> and you are good to go.
-Driver signature enforcement has to be disabled as stated in the quick
-start manual.</p>
-<p>Settings up monitoring is as simple as clicking on a checkbox in the
-control panel or a button in your DAW. You just don’t see one use the
-command prompt for this purpose on Windows.</p>
-<h2 id="tocanch5" class="tvis">What does it sound like?</h2>
-<p>Well, it sounds super ‘ZUNish’, if you’ve ever listened to Touhou
-music. It’s definitely the best sounding module back in 2002 (barring
-those extendable modules such as XV-5080).</p>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/clouds_SD-80.ogg">
-</audio>
-<p>SD-80’s take on clouds.mid (an easter egg thing in Windows 95)</p>
-</div>
-<p>All instruments are from the ‘solo’ set. The trumpet is ‘Tp.Dark
-vib’, which is the famous ‘Romantic Tp’ with a significant lower filter
-cutoff. Everything else is the basic variant.</p>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_02_SD-80.ogg">
-</audio>
-<p>SD-80’s take on th06_02.mid</p>
-</div>
-<p>In general the STUDIO Canvas sounds more expressive than most other
-tone generators, virtual or not. This is probably related to its default
-non-zero modulation level (10) on every part. <a id="n2" href="#note2" class="note">[2]</a> Technically this makes it GM2-incompatible as
-section 3.3.2 of the GM2 specification says the default value for
-modulation depth should be 0.</p>
-<p>Also the STUDIO Canvas has a bunch of waveforms of instruments played
-with vibrato, which is absent on some expandable modules such as the
-XV-5080 <a id="n3" href="#note3" class="note">[3]</a>, making vibrato sounds
-much more natural than simulating with LFO modulating the pitch and
-other parameters.</p>
-<h3 id="tocanch6" class="tvis">Relation
-to EDIROL HyperCanvas and the Cakewalk TTS-1</h3>
-<p>There’s a rumor saying HyperCanvas and TTS-1 is essentially the
-‘classical’ set from the STUDIO Canvas. And I believed the rumor has
-been around for quite some time. Finally I can check it out myself.</p>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/SD-80.ogg">
-</audio>
-<p>flourish.mid on SD-80 with every instrument from the ‘classical’ set
-and basic variant selected.</p>
-</div>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/TTS-1.ogg">
-</audio>
-<p>flourish.mid on Cakewalk TTS-1, everything also from bank 0.</p>
-</div>
-<p>The first impression is they do sound quite alike. But as soon as the
-drums kick in, you’ll find out they actually sound different.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);">
-<tbody><tr style="text-align:center">
-<td>
-</td>
-<td>
-SD-80
-</td>
-<td>
-TTS-1
-</td>
-</tr>
-<tr>
-<td>
-Piano
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Piano_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Piano_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Marimba
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Marimba_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Marimba_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Nylon Guitar
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Guitar_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Guitar_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Fingered Bass
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Bass_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Bass_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Soprano Sax
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Sax_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Sax_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Sweep Pad
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Sweep_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Sweep_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Drums
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_SD-80.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_TTS-1.ogg">
-</audio>
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>It’s quite obvious that the drums set of TTS-1 is actually taken from
-SC-88Pro (except Elec. Snare, which is taken from Electric Set). The
-piano sounds almost identical<a id="n4" href="#note4" class="note">[4]</a>. Sax, marimba and sweep pad
-also sounds identical. Bass seems to heve different velocity curves and
-guitar in TTS-1 sounds more bright.</p>
-<p>Further more, if you have Super Quartet, which is also made by
-Edirol, you may find out they also share many similar sounds, namely
-‘Rockabilly’, ‘Jazz Bass’, ‘Rock Bass’ and ‘Acoustic Set’, which
-correspond to ‘Rockabilly’, ‘Jazz Bass’, ‘Fingered Bs2’ and
-‘St.Standard’<a id="n5" href="#note5" class="note">[5]</a>.</p>
-<p>These old Edirol software synthesizers might have a very different
-engine compared to the XV engine found in the STUDIO Canvasses
-considering the DSP power of PCs of that time period. So it’s normal
-that the TTS-1 produces subtly different sound even when the same
-samples are used.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);">
-<tbody><tr>
-<td style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/SCVA%2088Pro.ogg">
-</audio>
-<br>bonus clip: flourish.mid on SOUND Canvas VA (SC-88Pro Map)
-</td>
-<td style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_SCVA.ogg">
-</audio>
-<br>bonus clip: Drums from flourish.mid on SOUND Canvas VA (SC-88Pro
-Map)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>SOUND Canvas VA doesn’t simulate anything it claims to perfectly, but
-it’s the best result someone who doesn’t physically own a SC-88Pro can
-achieve I guess.</p>
-<p>All audio files above were recorded using Cakewalk by Bandlab.
-<del>The Cubase Pro purchase was just for more instruments to be added
-to my HALion library.</del></p>
-<p>Here are more bonus clips recorded using <code>arecord</code> on
-Linux.</p>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_13_SD-80.ogg">
-</audio>
-<p>th06_13.mid</p>
-</div>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_15_SD-80.ogg">
-</audio>
-<p>th06_15.mid (I didn’t bother adjusting fade in value for the vibrato
-LFO.)</p>
-</div>
-<p>And finally SD-80 in a mix, featuring two signature instruments ZUN
-used a lot in recent games (‘Romantic Tp’ and ‘Reed Romance’) and also
-‘St.Sm Choir’.</p>
-<div style="text-align:center">
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/music/ogg/%E6%B7%B1%E6%B5%B7%E4%B8%83%E8%8A%B1%EF%BD%9EForgotten%20Benefit_extended_remix.ogg">
-</audio>
-<p>深海七花~Forgotten Benefit_extended_remix<br>
-(Theme of stage 6 boss of <a href="http://rgbxyz.org/th_kaikeidou/top.html">Touhou Kaikeidou</a>,
-arranged a bit. Originally by <a href="https://blogs.yahoo.co.jp/crystalwings6">Crystalwings</a>)</p>
-</div>
-<h3 id="tocanch7" class="tvis">UPDATE: 2019-10-12</h3>
-<p>Now that I’ve been using my SD-80 for some time, I could say more
-about the sounds built into it.</p>
-<p>Piano sounds in the SD-80 are not super compelling, mainly because
-it’s too bright and thin. Sure it has improved a lot since the early
-days, but it’s still nowhere near the real thing.</p>
-<p>Guitars and basses are in a similar situation. Most of these are also
-nowhere near realistic. However there <em>is</em> something worth of
-noting in this category, which is distortion guitar. Dist guitar presets
-with MFX pre-applied are much more better sounding than the old plain
-sample-based sounds.</p>
-<p>Orchestral sounds are expressive, sometimes overly expressive. There
-are not much variations either: no spiccato or solo pizzicato sounds.
-With a bit of tweaking though, symphony tracks do sound decent on the
-SD-80.</p>
-<p>Lead sounds and pads are superb, especially those from the special
-sets. With the editor a lot more nice sounds could be created. A lot of
-presets with step modulation typical of that days could be found both
-built-in and on the Internet (as midi system exclusive messages).</p>
-<p>Drums are half decent. Somehow I don’t really like Roland’s choice of
-their acoustic drum sets. I would always turn to other virtual drums for
-acoustic drums. Electric drum sounds are pretty good, but there are
-simply not enough electric drum sounds inside the SD-80.</p>
-<p>Also I don’t really like how Roland arranges the sounds into 4 GM2
-sound sets. This severely limits the number of different kind of
-instruments. For example, rather than a lot of different vocal sounds
-that can be found in the SC-8850, in the SD-80 we only have Voice Oohs,
-Voices Oohs 2, St.&nbsp;Vox Oohs and Enh.Vox Oohs.</p>
-<p>The GS and XG lite modes don’t sound very good, which contain sounds
-that are more like stripped down version of its native presets than a
-genuine GS or XG lite synthesizer. The GS sounds are almost pathetic: it
-only come with the same instrument map as the SC-55, and sounds really
-cheap. Compatibility wise, however, the SD-80 does a nice job. It does
-seem to support all NRPNs and control messages of these standards (even
-though it sometimes screw up parameter scaling). But due to the fact
-that there aren’t really a lot of usable sounds in these modes, I don’t
-find these modes particularly useful.</p>
-<p>The SD-80 has 32MB of sample content <a id="n6" href="#note6" class="note">[6]</a>, which is on par with
-both SC-8850 and XV-5080. This is quite surprising because some of the
-sounds in XV-5080 are so much more realistic than those in SD-80 or
-SC-8850. The XV-5080 managed to squeeze 1083 samples into the 32MB wave
-ROM while the SD-80 only comes with 589 samples, which are often of
-lower quality. I don’t quite get why Roland did this.</p>
-<h2 id="tocanch8" class="tvis">Working with the SD-80</h2>
-<h3 id="tocanch9" class="tvis">Fighting against latency</h3>
-<p>Even though Scarlett Solo can achieve a very low latency, there’s no
-way I can squeeze out enough processing power out of my ULV dual core i7
-to handle it. Therefore I was forced to live with ~11 ms latency, which
-is not <em>that</em> high, but still a quite significant amount to deal
-with.</p>
-<p>Cakewalk’s glitchy latency compensation makes things even worse: it
-works in some projects but completely out of order for the others. In
-order to listen to a full mix, I have to make a short recording, which
-is really annoying. As this is much more expensive time-wise, I started
-using more guesswork before trying a full mix and it’s probably not
-good.</p>
-<h3 id="tocanch10" class="tvis">Recording</h3>
-<p>Recording is simple and works as expected. However I seem to suffer
-from quite a high SNR value, which hovers around ~90 dB. Perhaps it’s my
-crappy cables making me pay.</p>
-<h3 id="tocanch11" class="tvis">Editing the sounds</h3>
-<p>The best thing about SD-80 is its editability. Neither SD-90 nor
-SD-20 came with the same level of editability upon launch. <a id="n7" href="#note7" class="note">[7]</a></p>
-<p>As claimed by the <a href="https://www.soundonsound.com/reviews/edirol-SD80">Sound On Sound
-review</a>, the editor for SD-80 is very similar to the one for XV-2020.
-The editor exposes a generic sample-based synthesis engine quite
-comparable to the one found in HALion (with more restrictions, of
-course). It lets you take full control of the synthesis engine and even
-create new patches not found anywhere else.</p>
-<p>The synthesis engine consists of four layers (with up to two samples
-<a id="n8" href="#note8" class="note">[8]</a> for each layer, plus
-frequency modulation), four filters (one for each layer), eight envelope
-generators (amplitude EG and filter EG for each layer), two LFOs
-<a id="n9" href="#note9" class="note">[9]</a> and a 4*4 modulation matrix. There are also 90
-post-processing effects (some of which are combinations of multiple
-simple effects, hence the name ‘MFX’) to choose from for each
-channel.</p>
-<p>Restrictions aforementioned include inability to use external samples
-so you are essentially locked in to 589 built-in waveforms (which is
-probably fine because it’s not what the STUDIO Canvas line is aimed at),
-limited number of envelope nodes, limited modulation routing, restricted
-number of different MFX’s that can be used at the same time (3).</p>
-<p>The editor has quite terrible user experience. Guess it’s common for
-such decades-old software. It comes with a twenty-page pdf manual (which
-contains a lot of excerpts from the XV-5080 owner’s manual), which focus
-on the internals of the synthesizer, and a html manual, which focus on
-the interface of the editor.</p>
-<p>I’ve also tried editor software for other STUDIO Canvas modules using
-the same generation of XV engine. The SD-20 editor works seamlessly with
-SD-80, and it only offers basic parameters editing just like TTS-1. The
-SD-90 editor, despite being extremely similar to the SD-20 editor,
-doesn’t work at all, which is not surprising as it’s essentially the
-SD-20 editor plus an editor for the audio mixer and audio effects
-processor found in the SD-90, which the SD-80 lacks.</p>
-<p>By the way, if you have hi-dpi display and use Windows 10, be sure to
-use ‘System (Enhanced)’ scaling behavior for the SD-80 Editor. It scales
-perfectly that way.</p>
-<p>I’m not going to scatter the post with even more pictures, so please
-follow the links for selected screenshots of the editor:</p>
-<p><a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_a.png">main
-screen</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_b.png">‘part
-survey’</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_c.png">layers</a>
-/ <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_e.png">amp
-EG</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_f.png">LFO</a> /
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_h.png">layers
-mapping</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_i.png">modulation
-matrix</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_k.png">patch
-options</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_l.png">‘part
-all’</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_m.png">MFX
-editing</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_r.png">Rhythm
-layers editor</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_u.png">Rhythm amp
-EG</a></p>
-<h3 id="tocanch12" class="tvis">Impact on the workflow</h3>
-<p>First of all I’ve to record and thus, deal with latency, noise and
-clipping. It’s pretty annoying as already mentioned above.</p>
-<p>Also the SD-80 doesn’t integrate very well with any DAW. There’s no
-way your settings of this hardware synth get saved automatically with
-your project like a virtual synth. Also forget about automation and all
-sort of things. You have to use MIDI events and system exclusive
-messages (especially tuning some obscure parameters) for this purpose,
-and DAW software doesn’t have great support for system exclusive
-messages in general.</p>
-<h2 id="tocanch13" class="tvis">Quirks</h2>
-<p>The SD-80 is GM2 compatible. However many midi files you randomly
-find may not play on it even when the device is in GM2 mode. If the midi
-file being played has any sort of bank selection event not recognized by
-the SD-80, the corresponding part will produce no sound at all.</p>
-<p>If your midi file has NRPN messages, things will get even worse.
-These things are essentially undocumented for the SD-80. All I could say
-is good luck keeping your eardrum intact. <a id="n10" href="#note10" class="note">[10]</a></p>
-<p>The manual says ‘This set (“classical” set) is also used when GM2
-data compatibility is important’. However upon receiving the GM2 on
-message, the module automatically selects ‘contemporary’ set for every
-part. It seems impossible to change this behavior.</p>
-<p>The XG Lite mode has way more instruments available than what the
-manual has listed. Bank 18 patch 1 gives you ‘Piano 1d’ (presumably
-‘Mellow Grand Piano’ in XG specification), which is not listed in the
-manual. It actually has 489 normal patches, 49 sfx patches, 2 sfx kits
-and 9 drum kits <a id="n11" href="#note11" class="note">[11]</a>. It’s quite irony to find out that they have more patches
-for their competitor’s standard than their own legacy standard. However
-these sounds are relatively lame when compared with authentic YAMAHA XG
-synthesizers of the same period. Particularly some sounds in different
-variant slot of the same patch number sounds almost identical. Roland
-obvious put less effort in these sounds in terms of sound designing.</p>
-<p>MIDI timing messes up if events flood in within a demisemiquaver
-worth of time. This quirk resembles the problem QMidiPlayer for Windows
-suffered from in its early days. But I’m pretty sure the cause is
-completely different. <a id="n12" href="#note12" class="note">[12]</a> Also this could be a
-common issue of old MIDI devices, as my old YAMAHA keyboards does the
-exact same thing.</p>
-<p>The sound generated by the SD-80/90 is phasey as could be heard in
-ZUN’s early works. If unsure, take a look at the spectrogram.</p>
-<p>The module, as all electric appliances do, generates heat. The manual
-says “A small amount of heat will radiate from the unit during normal
-operation”, and the chassis do get quite warm even when it is completely
-idle. This didn’t become an issue until later.</p>
-<p>Finally there are a couple of quirks in Roland’s former partner
-Cakewalk. Whenever the input signal level exceeds 0dB, instead of
-clipping the audio, it produces a loud cracking or popping sound in the
-record. Cubase and arecord have no such problem.</p>
-<p>Another quirk with Cakewalk is its metronome. Metronome settings in
-Cakewalk is saved on a per-project basis and there’s no way to change
-the default value (unless creating a template, which is useless for
-existing projects). By default it sends the metronome to the default
-MIDI device, which result in records with metronome clicks in them.</p>
-<h2 id="tocanch14" class="tvis">Beneath the chassis</h2>
-<p>Although I cherish the module quite a lot and there are warning text
-on top of it (which I can’t read because it’s in Japanese and … well,
-English), I disassembled the unit.</p>
-<div style="text-align:center;max-width:90%;">
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_caution.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_caution.jpg"></a> <br>CAUTION!!
-注意!! ATTENTION!! (/a.tɑ̃.sjɔ̃/)
-</div>
-<p>As most other vendors does, Roland build their audio equipment ‘like
-a tank’. The entire chassis is made out of aluminium and steel, and has
-an absolutely crazy amount of screws on it. The front panel came off
-after taking out 5 screws on top and bottom, after which I took out the
-value knob and the rubber button sheet for a cleanup.</p>
-<p>The top cover was freed after taking out 11 screws. Under the top
-cover lies the guts of SD-80. All boards except the power supply board
-uses SMD components extensively. The main board is made exclusively
-using SMD components, which is probably quite impressive back in the
-early 2000s.</p>
-<p>The power supply module is surrounded with thick plastic sheet
-presumably for insulation. Rated voltage for the module seems to be
-changeable by using different pin layouts on the input side. The power
-supply module is made of two separate boards. The two boards are
-connected with two wide connectors that only have a few pins on them. I
-would guess the pin layout on the connectors sets the rated voltage of
-the module but I’m not sure. I would definitely test that out
-someday.</p>
-<p>I took note of the engravment of every chip on the main board, which
-could be found in chart B below.</p>
-<table>
-<tbody><tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_buttonpanel.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_buttonpanel.jpg"></a>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_sanscover.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_sanscover.jpg"></a>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_PS_a.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_PS_a.jpg"></a>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_PS_b.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_PS_b.jpg"></a>
-</td>
-</tr>
-<tr>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_mb_top.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_mb_top.jpg"></a>
-</td>
-<td>
-<a href="//filestorage.chrisoft.org/blog/img/SD-80_mb_bottom.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_mb_bottom.jpg"></a>
-</td></tr>
-</tbody></table>
-<h2 id="tocanch15" class="tvis">What the manual doesn’t tell</h2>
-<p>A very sensible thing to do after the disassembly is to search the
-engravment on the chips online. Searching ‘RA08-503’ found on the
-largest Roland-labled chips <a id="n13" href="#note13" class="note">[13]</a> brings up a whole
-new world to me: service manuals for Roland synths. Sadly there are no
-manuals for any STUDIO Canvas models, nevertheless, they are very useful
-for learning more about the insides of a Roland synthesizer.</p>
-<p>There are a couple of models bearing the ‘RA08-503’ chip found in the
-SD-80. Examples include XV-5080 and MC-909. This chip is referred to as
-‘XV’ in their service manuals (also in the SD-80, as you will find out
-later). It’s safe to guess they handle the most important work of a
-sound module – tone generation. Also I observed that all modules
-supporting 32 parts and 128 polyphony have two of these chips in them,
-while the ones with only one chip only supports up to 16 parts and 64
-polyphony. Maybe that’s the limitation of the single chip. Also one can
-tell the chip also handles some weird job such as LED indicators from
-the circuit board schematic.</p>
-<p>A very lonely chip on the right side has ‘6417706’ on it. Turns out
-this is a microprocessor implementing the SuperH architecture. It’s the
-same CPU as found in MC-909 (which makes sense as they are produced
-around the same time). Linux kernel has support for this
-processor<a id="n14" href="#note14" class="note">[14]</a>. The processor has a maximum clock speed of 133 MHz and is
-underclocked to 128MHz in the MC-909. It’s probably underclocked even
-more in the SD-80. There’s an unpopulated D-sub connector presumably for
-debugging near the CPU.</p>
-<h3 id="tocanch16" class="tvis">Testing mode</h3>
-<p>According to the service manuals available for other models, they all
-have a hidden test mode. Some also have the ability to update system
-firmware. Entering testing mode often involves turning the power on with
-a combination of keys pressed. Every model have its own way to enter
-testing mode and there’s no obvious pattern. At that point, I was
-desperate to dive into it. So I simply tried all button combinations
-consisting of one to three buttons. The result didn’t let me down. I
-found three combinations that make the SD-80 boot into special
-modes.</p>
-<ul>
-<li>INST + SHIFT + PART▶ = Test Mode</li>
-<li>INST + PAGE◀ + PREVIEW = Program Updater</li>
-<li>SYSTEM + PAGE◀ + PREVIEW = Program Updater</li>
-</ul>
-<p>Below is everything I found about these modes.</p>
-<div class="collapse" data-caption="Special boot modes in the SD-80">
-<p><strong>Test Mode</strong></p>
-<pre><code>00 Version Check
-1.03 0022 2002/07/29</code></pre>
-<p>(Preview blinks, pressing it doesn’t seem to do anything)</p>
-<pre><code>01 Device Check
- ALL OK!!</code></pre>
-<p>(I got <code>NG:XV2</code> shortly after heavily using the module for
-a while. MFX in test 7 produces no sound at all, system delay only has
-the dry sound, everything else was normal. More on this later.)</p>
-<pre><code>02 MIDI Check
-MID1:x MID2:x THRU:x</code></pre>
-<p>(No MIDI cable for me until I’m home… Input from USB does not
-count.)</p>
-<pre><code>03 LCD Check
-PAGE:Sel / ENC: Contr</code></pre>
-<p>(PAGE buttons switch among the following four patterns: none, full,
-chequerboard 0, reversed chequerboard. Contr=Contrast)</p>
-<pre><code>04 SW/LED Check
- ooooo ooooo</code></pre>
-<p>(All buttons and indicators light up. Transparent buttons turns off
-its light, opaque buttons turns off LED above or below it, ENTER button
-turns off nothing. The five <code>o</code>’s on the left corresponds to
-the upper row, others corresponds to the lower row. Pressing a button
-turns its character to <code>#</code>, releasing it causes it to change
-to <code>.</code>.)</p>
-<pre><code>05 Encoder Check
- Value(0-23) = xx</code></pre>
-<p>(+ Plays C3, - Plays E3, both using the piano voice. Value starts at
-00. Interestingly if the encoder is turned too fast, the value on screen
-does not change until you stop.)</p>
-<pre><code>06 Sound Check
-Push button to check
- Left channel
- Center channel
- Right channel</code></pre>
-<p>(INST/EFFECTS/SYSTEM blink, pushing one makes it constantly on while
-others still blinking and plays the corresponding check. Plays sine wave
-on the selected channel(s))</p>
-<pre><code>07 Effect Check
-Push button to check
- MFX(Delay)
- System Delay
- System Reverb</code></pre>
-<p>(Same as test 06. The sounds used for these checks are snare,
-castanets and side stick respectively.)</p>
-<pre><code>08 Factory Reset
- Push [PREVIEW]</code></pre>
-<p>(PREVIEW blinks, pressing it really resets!)</p>
-<p>The SD-80 still works as a sound module in test mode – it will play
-any incoming midi stream. The module is in native mode regardless of
-your settings. MFX doesn’t seem to be working normally (likely due to
-it’s reserved for test 07). Switching between tests resets some (if not
-all, depending on the test switching to) of the synthesizer’s states.
-Switching to test 05 sets some of the instrumental parts to piano and
-others to a certain synth lead patch. Switching to test 06 sets sine
-wave and piano on all instrumental parts just like test 05. Switching to
-test 07 sets certain instrument parts to a drum patch, the patch
-‘Xtremities’ could also be heard. Other parts are set to piano.</p>
-<p><strong>Program Updater</strong></p>
-<pre><code>Program Updater
-Version: 1.03</code></pre>
-<pre><code>Program Updater
-Prog:12D3[12D3]1.03</code></pre>
-<pre><code>Program Updater
-Updt:66FB[66FB]1.00</code></pre>
-<pre><code>Program Updater
-Boot:5170[5170]1.01</code></pre>
-<pre><code>Update by MIDI
-[ENTER][SHIFT(Exit)]</code></pre>
-<pre><code>Update by USB
-[ENTER][SHIFT(Exit)]</code></pre>
-<ul>
-<li>INST = Program version (INST lights up)</li>
-<li>EFFECTS = Updater version (EFFECTS lights up)</li>
-<li>SYSTEM = Boot version (SYSTEM lights up)</li>
-<li>SHIFT = Returns to initial screen of the updater</li>
-<li>PART◀ = Update by MIDI</li>
-<li>PART▶ = Update by USB</li>
-</ul>
-<p>MIDI and USB indicators blink on any screen with the top row saying
-<code>Program Updater</code>. Selecting a source makes the corresponding
-indicator constantly lit and the other go out.</p>
-<p>If this mode is entered with the combination SYSTEM + PAGE◀ +
-PREVIEW, INST, EFFECTS, SYSTEM will do nothing instead. This combination
-is probably reserved for consumers.</p>
-<p>Sound generation does not work in the program updater.</p>
-<p>Presumably the update MIDI files are similar to earlier models:
-stream of system exclusive events containing firmware blobs. No program
-update could be found for the SD-80 on the Internet. There are update
-files for the SD-90 however, which updates its system software to
-version 1.03.</p>
-</div>
-<h3 id="tocanch17" class="tvis">Messing around sans the
-chassis</h3>
-<p>As the two XV chips are arranged in a master-slave manner, I tried
-figuring out which one is acting as the master. I threw a bunch of midi
-files at it while measuring the temperature of the XV chips… with my
-fingers. Both chips turn quite toasty but IC19 is always warmer than
-IC27, sometimes it’s even a little difficult to keep my finger stay on
-that chip.</p>
-<p>When the action gets more intense, IC27 starts to warm up. Before I
-was just going to conclude that IC27 is acting as the master, I realized
-that I will never come into a meaningful conclusion without further
-reverse engineering: I have absolutely no idea how the load is
-distributed between the two XV’s!</p>
-<p>Frustrated, I entered testing mode to find out whether there’s
-anything interesting if it’s run with chassis removed. To my surprise,
-the device check failed with <code>NG:XV2</code> and a bunch of other
-errors in the following tests. I thought I was doomed, but a reboot of
-the module solved the problem completely and it never show any trace of
-abnormality that day.</p>
-<p>The other day, however, the problem returned. After messing with the
-SD-80 editor and creating random complex patches for an hour, I randomly
-decided to check out the testing mode again, where I was greeted by the
-<code>NG:XV2</code> failure the second time. Again, a reboot solved the
-problem for the day. No amount of hardwork will put the SD-80 into a
-buggy state if it boot straight into normal mode. At this point I
-thought it could be a bug in the test or the device check could be quite
-sensitive to temperature, which is probably not a very good thing as
-there are no vent holes for airflow on the module whatsoever.</p>
-<p>A few more days, I found my SD-80 frozen after keeping it on doing
-almost nothing for a day. In yet another case, it just randomly froze
-during playback after half day of usage. I’m unsure these instability
-are specific to my machine.</p>
-<h3 id="tocanch18" class="tvis">Chart A</h3>
-<div class="collapse" data-caption="Comparison of internal components found in selected Roland devices">
-<p><a id="n15" href="#note15" class="note">[15]</a></p>
-<table>
-<colgroup>
-<col style="width: 5%">
-<col style="width: 16%">
-<col style="width: 3%">
-<col style="width: 32%">
-<col style="width: 11%">
-<col style="width: 29%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: center;">Model</th>
-<th style="text-align: center;">Tone Generator</th>
-<th style="text-align: center;">CPU</th>
-<th>Storage</th>
-<th style="text-align: center;"># of parts</th>
-<th style="text-align: center;"># of polyphony (‘voices’)</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: center;">SC-55</td>
-<td style="text-align: center;">TC24SC201AF-002 (PCM Custom)</td>
-<td style="text-align: center;"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/532</a></td>
-<td>256K SRAM*2, Wave ROM*3, EPROM, CPU has RAM and ROM built-in</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">24</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">SC-88</td>
-<td style="text-align: center;">MBCS30109 (Custom Sound Generator)
-‘XP’</td>
-<td style="text-align: center;"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td>
-<td>EPROM/Mask ROM, SRAM*2, Wave ROM*4, DRAM*2</td>
-<td style="text-align: center;">32</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">SC-88Pro</td>
-<td style="text-align: center;">RA01-005 (Custom Sound Generator)
-‘XP3’</td>
-<td style="text-align: center;"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td>
-<td>EPROM, SRAM*2, Wave ROM*5, DRAM*3</td>
-<td style="text-align: center;">32</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">SC-8850</td>
-<td style="text-align: center;">2*RA09-002 (Custom) ‘XP6’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td>
-<td>64KB System ROM, 8M System Flash, 256K SRAM (USB controller), 2*4M
-DRAM (EFX effects + System), 16M Data ROM or Flash, 2*128Mbit Wave ROM,
-2*4M DRAM (XP effects), 256k SRAM (framebuffer)</td>
-<td style="text-align: center;">64</td>
-<td style="text-align: center;">128</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">SC-8820</td>
-<td style="text-align: center;">RA09-002 (Custom) ‘XP6’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td>
-<td>64KB System ROM, 256K SRAM (USB controller), 16M Data ROM or Flash,
-2*4M DRAM (EFX effects + System), 128Mbit+164Mbit Wave Rom, 4M DRAM (XP
-effects)</td>
-<td style="text-align: center;">32</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">JV-1080</td>
-<td style="text-align: center;">MBCS30109B (XP Chip) ‘XP’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td>
-<td>CPU has 64KB Program Flash + 4KB SRAM built-in, 512kbit SRAM, 1Mbit
-DRAM, 8Mbit Data ROM, 2*1M DRAM (XP effects), 4*Wave ROM</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">JV-2080</td>
-<td style="text-align: center;">TC170C200AF-005 (TG) ‘XP’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td>
-<td>CPU has 64KB Program Flash + 4KB SRAM built-in, 2*DRAM, DRAM (XP
-effects), DRAM (LCD framebuffer), DRAM, SRAM, ROM or Flash</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">XV-5080</td>
-<td style="text-align: center;">2*TC223C660CF-503 (RA08-503) ‘XV’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7040/sh7040.html">SH7042</a></td>
-<td>2*1Mbit SRAM, 256kbit (LCD framebuffer), 2*16Mbit (DRAM), 16Mbit
-Flash, 2*16Mbit DRAM (XV effects), 2*128Mbit Wave ROM</td>
-<td style="text-align: center;">32</td>
-<td style="text-align: center;">128</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">XV-5050</td>
-<td style="text-align: center;">TC223C660CF-503 (RA08-503) ‘XV’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7016</a></td>
-<td>8Kbit EEPROM, 32Mbit Flash, 16Mbit DRAM, 16Mbit DRAM (XV effects),
-2*128Mbit Wave ROM</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">MC-909</td>
-<td style="text-align: center;">TC223C660CF-503 (RA08-503) ‘XV’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a>
-@ 128MHz</td>
-<td>2*64Mbit SDRAM (system), 16Mbit Flash (program), 256Mbit Flash
-(program, user), 16Mbit DRAM (external effects RAM), 4Mbit DRAM (XV
-effects), 2*64Mbit Wave SDRAM, 128Mbit Wave ROM</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">64</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">SD-80</td>
-<td style="text-align: center;">2*TC223C660CF-503 (RA08-503) ‘XV’</td>
-<td style="text-align: center;"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a></td>
-<td>16Mbit Flash, 2*16Mbit SDRAM, 2*16Mbit EDO DRAM, 2*Wave ROM</td>
-<td style="text-align: center;">32</td>
-<td style="text-align: center;">128</td>
-</tr>
-</tbody>
-</table>
-</div>
-<h3 id="tocanch19" class="tvis">Chart B</h3>
-<div class="collapse" data-caption="List of integrated circuit chips on SD-80 main board">
-<p>Follow the link in the first column for a board photo with that chip
-visible. Sorry for the shaky photo and poor depth of field.</p>
-<table>
-<tbody><tr>
-<th>
-Label
-</th>
-<th>
-Engravment
-</th>
-<th>
-Remark
-</th>
-</tr>
-<tr>
-<td>
-IC 1
-</td>
-<td>
-62292 361
-</td>
-<td>
-(8-pin) Unknown
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC2.jpg">IC
-2</a>
-</td>
-<td>
-6417706 SH3 BC13008 133 0413
-</td>
-<td>
-176-pin QFP, SH7706 CPU
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC3.jpg">IC
-3</a>
-</td>
-<td>
-LH28F 160BJE-BTL80 SHARP JAPAN 0428 7xN
-</td>
-<td>
-Flash Memory (16Mbit)
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC4.jpg">IC 4,
-6</a>
-</td>
-<td>
-SANYO LC381616IET-70 KZA7G0CD1 0042
-</td>
-<td>
-SDRAM (16Mbit)
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC2.jpg">IC
-5</a>
-</td>
-<td>
-‘H5’ or ‘115’ (illegible)
-</td>
-<td>
-(5-pin) Unknown
-</td>
-</tr>
-<tr>
-<td>
-IC 7
-</td>
-<td>
-4D46 LV 00A
-</td>
-<td>
-NAND Gate
-</td>
-</tr>
-<tr>
-<td>
-IC <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC2.jpg">8</a>, <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">20,
-22~25</a>
-</td>
-<td>
-4C1Y LV 245A
-</td>
-<td>
-Bus Transceiver
-</td>
-</tr>
-<tr>
-<td>
-IC 9, <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">11</a>
-</td>
-<td>
-F P42AB VT245A
-</td>
-<td>
-8-bit Transceiver
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">IC
-10, 12</a>
-</td>
-<td>
-0431H LVXC3245
-</td>
-<td>
-Configurable 8-bit Transceiver
-</td>
-</tr>
-<tr>
-<td>
-IC 13
-</td>
-<td>
-VHC T139A 4 23
-</td>
-<td>
-Dual 2/4 Decoder
-</td>
-</tr>
-<tr>
-<td>
-IC 14
-</td>
-<td>
-‘H12’ or ‘H2’ (illegible)
-</td>
-<td>
-(5-pin) Unknown
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_datecode.jpg">IC
-15</a>
-</td>
-<td>
-4D36 LV 04A
-</td>
-<td>
-Hex Inverter
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC
-16</a>
-</td>
-<td>
-4D16 LV 14A
-</td>
-<td>
-Hex Schmitt-Trigger Inverter
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC17.jpg">IC
-17</a>
-</td>
-<td>
-Roland R02902867 137 352B100
-</td>
-<td>
-I/O Processor? USB controller?
-</td>
-</tr>
-<tr>
-<td>
-IC 18
-</td>
-<td>
-VH3 139 4 24
-</td>
-<td>
-Dual 2/4 Decoder
-</td>
-</tr>
-<tr>
-<td>
-IC <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC19.jpg">19</a>,
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">27</a>
-</td>
-<td>
-Roland R01455956 RA08-503 JAPAN 0330EAI F0032ZAC
-</td>
-<td>
-Voice Generator + LED &amp; LCD Controller etc. (‘XV’)
-</td>
-</tr>
-<tr>
-<td>
-IC 21
-</td>
-<td>
-7WU04 4.F
-</td>
-<td>
-Inverter (CMOS)
-</td>
-</tr>
-<tr>
-<td>
-IC <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC26.jpg">26</a>,
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC29.jpg">30</a>
-</td>
-<td>
-HYUNDAI GM71C18163CJ6 0040 AG1 KOREA
-</td>
-<td>
-EDO DRAM (16Mbit)
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC28.jpg">IC
-28</a>
-</td>
-<td>
-Roland R02678601 23C128L-529J 0224E7007
-</td>
-<td>
-Wave ROM (128Mbit?) <a id="n16" href="#note16" class="note">[16]</a>
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC29.jpg">IC
-29</a>
-</td>
-<td>
-Roland R02678612 23C128L-535K 0222E7005
-</td>
-<td>
-Wave ROM (128Mbit?)
-</td>
-</tr>
-<tr>
-<td>
-IC <a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">31</a>,
-35
-</td>
-<td>
-4570 431
-</td>
-<td>
-Regulator
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC
-32, 34</a>
-</td>
-<td>
-PCM1716E 27ZDHFM
-</td>
-<td>
-DAC
-</td>
-</tr>
-<tr>
-<td>
-<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC
-33</a>
-</td>
-<td>
-04 16H TC9271FS
-</td>
-<td>
-Digital Audio Modulator/Transmitter
-</td>
-</tr>
-<tr>
-<td>
-IC 36
-</td>
-<td>
-A E
-</td>
-<td>
-(3-pin) Unknown
-</td>
-</tr>
-</tbody></table>
-</div>
-<h2 id="tocanch20" class="tvis">Verdict</h2>
-<p>The SD-80, a product in Roland’s more budget-friendly Sound Canvas
-(Studio Canvas) line up, is a great sound module mainly focused at
-standards compliance at its time. In my opinion it’s the direct
-successor of the SC-8850, while the SD-90 is the direct successor of the
-SC-D70 (both are audio interfaces with a sound module integrated).</p>
-<p>The Studio Canvas family is Roland’s first and last line up of sound
-modules that map nearly all instruments to the GM2 instrument map. While
-making the instrument mapping less confusing, this instrument mapping
-has its limitations. No later Roland sound module does the same
-thing.</p>
-<p>Hardware wise, the SD-80 is extremely close to the XV-5080. But the
-SD-80 being a ‘Rompler’, its hardware capability is severely limited by
-Roland by matching them with worse wave ROM contents than its
-professional counterpart. This seems to be true across almost all
-professional and budget-friendly Roland synths in the 90s. (SC-88 has
-the same tone generator as JP-1080 (‘XP’), SC-88Pro has the same tone
-generator as JP-2080 (‘XP3’). SC-8850 and SC-8820 use a newer revision
-of the ‘XP’ chip (‘XP6’), which seems to be unused in a professional
-product.)</p>
-<p>Roland no longer makes ‘romplers’ today. Due to their unique sounds,
-these canvases might become a collector’s item in the future.</p>
-<h2 id="tocanch21" class="tvis">Things to do besides
-imitating ZUN</h2>
-<p>The SD-80 does not like QMidiPlayer very much. So the first thing to
-do is quite clear.</p>
-<p>Giving it a total makeup is the second thing on my bucket list. I’ll
-probably ditch the original top cover and front panel altogether and
-make some custom acrylic glass parts for it.</p>
-<p>Porting Linux to it might be a very fun (also atrocious) thing to do.
-The internals of the SD-80 is capable of doing much more than what it
-does as a STUDIO Canvas. It’s got the same main processor as the MC-909,
-just think about the possibility out there (this is also the reason why
-I call it a ‘trapped beast’ in the title of this post). The only thing
-against this is that I am shy of any experience with this level of
-hardware hacking.</p>
-<p>Setting up a web service where people upload their midi files and
-have them rendered with the SD-80 also sounds pretty cool. But I’m
-afraid I’ll receive something from Roland by then and it wouldn’t be
-fine for me. Is it really illegal to use a instrument on a time-sharing
-basis?</p>
-<p>Seriously though if I could pull it off, I’ll probably add a donation
-button and buy more classic sound modules for the site. Eventually it
-will turn into an online museum for sound modules… screw it I’m talking
-utter nonsense again.</p>
-<p>Also somehow extracting the waveforms and creating a instrument bank
-for HALion or Kontact is tempting. But the odds of being sued by Roland
-is even higher even though they did not explicitly disallow sampling
-their early products. To be honest I found it disturbing about the
-sampling restriction on these ‘unconventional’ instruments.</p>
-<h2 id="tocanch22" class="tvis">Newer Roland sound modules?</h2>
-<p>Newer Roland sound modules such as SonicCell and the latest INTEGRA-7
-seems to maintain the compatibility with their original ‘XP’ synthesis
-engine to some extent – as they all support SRX expansion in a certain
-way. The synthesis engines are obviously improving over the years as
-Roland says the SRX expansion sounds built into INTEGRA-7 will sound a
-little different compared to earlier modules.</p>
-<p>However, disappointment strikes as soon as I saw the ‘READ’ button on
-screenshots of the editor software for the INTEGRA-7. I felt Roland
-really need to make more use of the USB bandwidth: the presence of that
-button implies the editor software still can’t reflect the realtime
-status of the synthesizer. <a id="n17" href="#note17" class="note">[17]</a> This is a huge
-drawback of using a hardware synthesizer that Roland still fails to fix
-to this day.</p>
-<p>Also, the INTEGRA-7 is super expensive for an amateur and Roland
-ended their budget <a id="n18" href="#note18" class="note">[18]</a> SOUND Canvas / STUDIO Canvas product line years
-ago. So no more Roland sound modules for me I guess.</p>
-<h2 id="tocanch23" class="tvis">Trivia</h2>
-<ul>
-<li><p>A XML file in the SD-80 editor (Script/SD-80EditorScript.xml)
-contains patch list and wave list for all SRX expansion cards,
-confirming the fact that the editor is based on an editor for some other
-sound module with expansion slots.</p></li>
-<li><p>There are two crystal oscillators on the main board of SD-80. X1
-is a 24 MHz one and X2 is a 16.934 MHz one. Both are out of range of
-SH7706’s allowed external clock frequency (clock mode 0 has a input
-range of 25 MHz to 66.67 MHz, clock mode 1 has a input range 6.25 MHz to
-16.67 MHz). MC-909, which has the same CPU as the SD-80, has a 16 MHz
-crystal as the CPU clock source and the CPU operates at 128 MHz. There’s
-also a 16.934 MHz crystal in the MC-909, which is tied to its tone
-generator (the same tone generator as the one inside SD-80, RA08-503 or
-‘XV’). X2 in SD-80 is also very close to one of its tone generator chip.
-My blind guess is that the output from X1 in SD-80 goes through a
-frequency divider and the CPU operates at 96 MHz. XV-5050 also has a
-16.934 MHz clock source tied to its XV chip. XV-5080 however doesn’t
-have a 16.935 MHz crystal directly tied to its XV chip, but rather a
-11.2886 MHz one going through a 3:2 PLL producing a 16.9329 MHz
-clock.</p></li>
-</ul>
-<h2 id="tocanch24" class="tvis">If you want to learn more …</h2>
-<ul>
-<li><a href="http://www.gigadenza.co.uk/?page_id=5116&amp;all=1">Gigadenza</a>,
-owns multiple sound modules, including the latest INTEGRA-7.</li>
-<li><a href="https://twitter.com/Romantique_Tp">Romantique Tp</a>, a
-Touhou music addict that I came across on Steinberg user forum.</li>
-</ul>
-If you spot a mistake or have anything you wish to share on this topic,
-please do not hesitate to drop me a message.
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Pulseaudio sucks a lot less compared to
-the old days, it even switch automatically between built in Intel HD
-Audio and external USB audio device when it’s plugged in /
-unplugged.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: SD-90 doesn’t
-seem to have a non-zero modulation level according to its manual.
-Interesting.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: You can find the waveform list of SD-90/80 and XV-5080
-online and do the comparison yourself.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: ‘Piano 1 st.’ in TTS-1 is
-actually ‘St.Piano 1’ from STUDIO Canvas’ ‘solo’ set. TTS-1 doesn’t have
-a ‘key scale panning’ (this is XG terminology, which means ‘wide’ in
-Roland’s wordbook) piano preset.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: The drum set mapping of Super Quartet is not GM
-compatible. It comes with a couple of sounds the STUDIO Canvas
-lacks.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: This is a reasonable
-guess, see chart B below for details.<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: The
-SD-90 do have <em>almost</em> the same level of editability as the
-SD-80, which can be achieved with the use of an updated version of
-SD-80’s editor, however it seems that SD-90 can’t save user patches. The
-SD-20, on the other hand, never enjoy the same level of editability.
-(The SD-20 is probably still editable by sending system exclusive
-messages directly?)<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: One on each stereo channel.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: Vibrato uses a separate LFO, so technically it’s
-three.<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: NRPN message setting
-expression to 100% on one device may set filter resonance to 100% on
-another. Imagine that.<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: I counted the instruments by turning the knob.
-The knob sometimes skips forward and backward, so there’s no way I count
-them accurately in a rush. I will probably make a complete patch list
-another day. UPDATE: the complete patch list could be found
-<a href="https://filestorage.chrisoft.org/blog/data/SD-80/SD80XGLiteInstList.ods">here</a>
-<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: The problem found in QMidiPlayer can be
-solved by simply lowering buffer size. <br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: In case you haven’t yet noticed,
-there are two of those chips on the board.<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sh/kernel/cpu/sh3/clock-sh7706.c">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sh/kernel/cpu/sh3/clock-sh7706.c</a>
-<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: Data for all models except the SD-80 are from their service
-notes.<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: The text on this chip together with the
-next one suspiciously resembles the part number of XV-5080’s wave ROM
-chips, plus the 128 Mbit wave ROM chips found in SC-8850 and SC-8820.
-(SC-8850 has 2*128Mbit wave ROM, while SC-8820 has 128Mbit + 64Mbit. The
-part number of the 64Mbit wave ROM chip has a completely different
-naming scheme.)<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: I did not do much research on this
-and I could be completely wrong on this topic.<br></span><span class="TText"><a id="note18" href="#n18">[18]</a>: compared to their JV/XV
-products.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2019-06-24.html b/blog/post/2019-06-24.html
deleted file mode 100644
index 77611e7..0000000
--- a/blog/post/2019-06-24.html
+++ /dev/null
@@ -1,473 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Working as an intern for "the spyware corporation"")</title>
-<meta name="description" content="«Working as an intern for &quot;the spyware corporation&quot;» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Working as an intern for "the spyware corporation"</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li><li><a href="/blog/list/sophistry/">sophistry</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">A few notes upfront…</a></li><li><a class="toctarg" href="#tocanch1">The Decision</a></li><li><a class="toctarg" href="#tocanch2">The Workplace, the
-Colleagues and the Life</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch3">My work</a></li><li><a class="toctarg" href="#tocanch4">Payment</a></li><li><a class="toctarg" href="#tocanch5">Final Days &amp; The days after</a></li></ul></li><li><a class="toctarg" href="#tocanch6">Shitty Code</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch7">pasteFilesV2 also deletes
-file</a></li><li><a class="toctarg" href="#tocanch8">Practically no coding
-conventions.</a></li></ul></li><li><a class="toctarg" href="#tocanch9">Weirdness, quirks and
-other strange things</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch10">“Developers’ lives matter!”</a></li><li><a class="toctarg" href="#tocanch11">Incompetent coworkers
-start to pop up</a></li><li><a class="toctarg" href="#tocanch12">“Designer-driven” development</a></li><li><a class="toctarg" href="#tocanch13">Code review, or “code
-flattery”?</a></li><li><a class="toctarg" href="#tocanch14">Privacy issues?</a></li></ul></li><li><a class="toctarg" href="#tocanch15">Dick moves</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch16">… as taken literally</a></li><li><a class="toctarg" href="#tocanch17">Rushing V20</a></li><li><a class="toctarg" href="#tocanch18">Lacking / bad community
-interaction</a></li><li><a class="toctarg" href="#tocanch19">Illegal business practice</a></li><li><a class="toctarg" href="#tocanch20">Restructure shenanigans</a></li><li><a class="toctarg" href="#tocanch21">Walking away from “the
-founders’ spirits”</a></li></ul></li><li><a class="toctarg" href="#tocanch22">Epilogue</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2019-04-25.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2019-09-04.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Working as an intern for "the spyware corporation"</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2019-06-24<br>#garbage #sophistry</div>
- <hr><div id="article" class="TText"><article>
-<h2 id="tocanch0" class="tvis">A few notes upfront…</h2>
-<p>This post was supposed to come out as soon as it was finished. Well
-it looks complete but for some reason I couldn’t remember, I never made
-it public. Published 2024-02-17 without further modification.</p>
-<p>Original post starts below.</p>
-<p>If you are still unaware, the title is just sarcasm. As far as I
-know, the division I was working for does not work on any spyware.</p>
-<p>Also, this article is <strong>not</strong> approved by the propaganda
-division whatsoever. Everything is straight up garbage.</p>
-<h2 id="tocanch1" class="tvis">The Decision</h2>
-<p>As I have made up my mind to ‘strategically’ delay my graduation by a
-year, I initially hoped for taking the following months off and I did
-not plan for my graduation thesis at all. Therefore I intentionally
-skipped the subject selection process. All I wanted to do is chill for
-half an year and maybe make some contributions to several free software
-projects. Teachers noticed this and managed to persuade me to finish the
-graduation thesis this year. Only at this time did I realize how stupid
-I was – I am going to contribute to projects anyway, why don’t I take
-the chance to finish my thesis?</p>
-<p>However, as I have missed the opportunity to work on projects led by
-professors in my college, I had to look for intern jobs elsewhere. As I
-am not going to work for unethical companies, many companies my
-classmates are rushing into are not feasible for me. But actually I
-already have my choice in my mind: cause I am really interested in
-spying on how the ‘spyware corporation’ works on a daily basis.</p>
-<p>Finally, the choice was made. I tossed in my CV, which was put
-together in 5 minutes to them. Before long I got a quick reply. With
-everything settled down rather quickly, off I went.</p>
-<p>To sum it up, it was because:</p>
-<ul>
-<li>I was curious.</li>
-<li>I had plenty of time to waste.</li>
-<li>I wanted to get away from the campus I already spent 3 years
-in.</li>
-<li>with the additional benefit of finishing my graduation project.</li>
-</ul>
-<h2 id="tocanch2" class="tvis">The Workplace, the
-Colleagues and the Life</h2>
-<p>The workplace is nothing fancy. Dimly lighted, the work area is
-fairly cozy, possibly designed specially for us cavern-dwelling
-programmers. Computing devices are scattered throughout the enormous
-room, in which 90% of the local employees work.</p>
-<p>Co-workers here are competent to say at least (until they started
-rushing V20, as noted below). To list a few:</p>
-<ul>
-<li><a href="https://www.blumia.net/about.html">BLumia</a>: no more
-elaboration needed.</li>
-<li><a href="https://blog.justforlxz.com/about/">Kirigaya</a>: a little
-bit mean, a little bit naughty, but still nice guy to chat with.</li>
-<li><a href="https://github.com/zccrs">zccrs</a>: damn this guy
-definitely knows what he is doing when reviewing my shitty code. Rumors
-has it that he was once a wizard working for Nokia.</li>
-<li><a href="https://hualet.org/">Hualet</a>: that one who interviewed
-me. Passionate about free software. We talk quite a lot in private.</li>
-</ul>
-<p>Life quality in Wuhan was not a huge degradation compared to that of
-my university times, I’d put it that way. Commute times weren’t super
-long, foods here are nice (at least it rids me of the same kind of foods
-I had to have everyday on the campus), also I could for the first time
-cook for myself.</p>
-<p>Stereotype of the climate in southern China was broken: your clothes
-<strong>will</strong> be able to dry within a day, and you couldn’t
-really squeeze water out of the air.</p>
-<p>Public transit in Wuhan was tolerable until you got out of reach of
-the metro: the bus service was <strong>horrendous</strong>. There was no
-indication of where the actual station was, and the bus stops randomly
-‘roughly around’. I tried it once and dreaded having to take a bus ever
-since (fortunately, I didn’t).</p>
-<p>I lived in a rental room provided by Ziroom, which is essentially an
-apartment rental service broker. The apartment was shared by 5 persons,
-from which formed 2 couples, and … you guessed it, me. The room was
-relatively small (around 14m<sup>2</sup> in area), but super snug
-compared to my dorm in university. The real reason I find it that way,
-however, could ultimately be the fact that I was the only one inside and
-could do what ever I want.</p>
-<p>Interactions with roommates were minimal. In fact, I intentionally
-avoid interactions with my roommates because I was that type of a
-person.</p>
-<p>By the way, cooking is really deep a rabbit hole and I’m just getting
-down into it.</p>
-<p>All in all, it was a freshing experience for ‘an extremely spoiled
-child’ (as all my family members told me). I had fun, and I came back
-with every body part intact. I’m content with it.</p>
-<h3 id="tocanch3" class="tvis">My work</h3>
-<p>I mainly worked on the following things:</p>
-<ul>
-<li>Adding basic optical disc authoring functionality to the file
-manager.</li>
-<li>Move network configuration in the control center to the new code
-base.</li>
-<li>Giving the computer view in the file manager its new look.</li>
-<li>Random bug fixes in the file manager.</li>
-<li>A small portion of utility classes in DTK.</li>
-</ul>
-<p>There’s a lot of other miscellaneous stuff I did, some of which
-involves seizure-inducing programming languages
-<a id="n1" href="#note1" class="note">[1]</a>. I’m not going to list those things here.</p>
-<p>Actually, I promised to help revamping the infrastructure when I
-entered Deepin, mainly to improve its transparency (like Debian).
-However…</p>
-<ul>
-<li>They didn’t care.</li>
-<li>I wasn’t given time to do anything about it.</li>
-<li>I barely learned enough about how the current infrastructure
-works.</li>
-</ul>
-<p>And the promise was thrown straight out of the window.</p>
-<h3 id="tocanch4" class="tvis">Payment</h3>
-<p>Now looking back, I guess I was basically free labor <a id="n2" href="#note2" class="note">[2]</a> , donating my time to Deepin. I
-literately don’t care though, because I didn’t came for the money. It
-could be cringe-inducing to say, but their payment actually exceeded my
-initial expectation.</p>
-<p>By the way I actually even saved up a couple thousand during my time
-there. (Setting aside the fee ETS charged me for TOEFL and GRE of
-course. Those are nothing but f*cking cash grabs.) Guess it’s due to my
-extremely thrifty (stingy even) nature <a id="n3" href="#note3" class="note">[3]</a>.</p>
-<h3 id="tocanch5" class="tvis">Final Days &amp; The days after</h3>
-<p>I made my final commit on November 15th, and ended my internship on
-the same day.</p>
-<p>I stayed in Wuhan for another 30 days intermittently, finishing my
-final TOEFL test, visiting places, meeting with people, and most
-frequently of all, chilling in my ‘secret bear den’ (which refers to my
-rental room, obviously). Quite shockingly, I somehow managed to keep
-basically the same sleep schedule as the one before my internship
-ended.</p>
-<p>I returned home on January 3rd, and I was as lucky as one can ever
-be, cause all the coronavirus shenanigans just started to cook up.</p>
-<h2 id="tocanch6" class="tvis">Shitty Code</h2>
-<p>Never have I felt so involved with a programmer humor post until I
-have to actually deal with an old code base.</p>
-<h3 id="tocanch7" class="tvis">pasteFilesV2 also deletes
-file</h3>
-<p>When called with some obscene parameters, this function actually
-delete a file. What the hell.</p>
-<p>Even my code is arguably less shitty in this regard.</p>
-<h3 id="tocanch8" class="tvis">Practically no coding
-conventions.</h3>
-<p>Mixing tabs and spaces. Different indentation conventions.
-Incompatible naming schemes and even misspelled words in identifiers.
-You name it.</p>
-<p>In fact, deepin does have coding conventions, as listed <a href="https://hualet.org/blog/2019/07/23/deepin-qt/c-%E4%BB%A3%E7%A0%81%E9%A3%8E%E6%A0%BC%E6%8C%87%E5%8D%97/">here</a>
-and <a href="https://hualet.org/blog/2019/07/30/deepin-%E5%BC%80%E5%8F%91%E8%80%85%E8%A7%84%E8%8C%83/">here</a>.
-<a id="n4" href="#note4" class="note">[4]</a>
-Unfortunately, they are actively broken everyday in most projects.</p>
-<p>In defense of deepin though, this problem bothers a lot of other open
-source projects as well. My limited experience working with KDE’s
-codebase has already exposed that at least parts of KDE (namely
-libksysguard) suffers from the same problem.</p>
-<h2 id="tocanch9" class="tvis">Weirdness, quirks and
-other strange things</h2>
-<h3 id="tocanch10" class="tvis">“Developers’ lives matter!”</h3>
-<p>C’mon. If you have to equip your developers with computers that have
-inferior specs than your system requirements, don’t expect them to be
-super productive.</p>
-<p>Of course I understand they are currently under a rather tight
-budget, but they are offering quad core Core i5 to testers and new
-employees (some of which are quite incompetent, as described in the next
-section).</p>
-<p>Also, they refrain to provide necessary hardware for development.
-When I was adding optical disc authoring functionality to the file
-manager, my request to have a dedicated external optical drive was
-denied for some bizarre reason, and I had to share two optical drives
-with the testing department and the technical support department. This
-significantly hindered the development of the said feature, until I
-found a spare internal drive in the warehouse.</p>
-<p>Sometimes my friends there joked about the dessert as promised by the
-recruiter wasn’t being resupplied in time. For me, the dessert was
-really a surplus – I just want a computer that takes less than half an
-hour to build something!</p>
-<h3 id="tocanch11" class="tvis">Incompetent coworkers
-start to pop up</h3>
-<p>At a certain point of time (around June), I noticed a significant
-increase of personnel inside deepin. Many of these new employees are
-improperly trained. They don’t know how to incorporate git into the work
-flow (some know nothing about basic git concepts, or even about Linux at
-all), don’t look up documentation when troubled (instead they turn to
-CSDN <a id="n5" href="#note5" class="note">[5]</a> for help). As a result, the company had to spend
-extra time teaching them basic stuff, which to me seems a real waste of
-time.</p>
-<p>These incompetent employees are a major source of pain for project
-leaders. Some of them spent an entire day trying to figure out the cause
-of a very simple bug, without any level of success. Fortunately for
-deepin, most of them can reach some degree of competency after a few
-weeks of work (although they are still sometimes seen typing git
-commands from their notebooks).</p>
-<h3 id="tocanch12" class="tvis">“Designer-driven” development</h3>
-<p>This is a truly hilarious one. Here at Deepin (especially the project
-I’m personally working on, the file manager), product manager doesn’t
-decide what the program should be capable to do, the artistic designer
-does. The artistic designer almost has sole dictation on the
-specification of the product in this regard. We as developers can
-certainly dispute, but cases in which the designers changed their minds
-were rather rare, and most effort we made to persuade them was
-futile.</p>
-<p>By the way the current artistic designer is a very dedicated Apple
-fanboy. Expect some very Apple-ish bullshit in the next release.</p>
-<h3 id="tocanch13" class="tvis">Code review, or “code
-flattery”?</h3>
-<p>Code review is mandatory for every commit in Deepin. However policy
-of code review varied from people to people. The only one that really
-took it seriously was zccrs, who could almost always pick out the code
-where I screwed up <a id="n6" href="#note6" class="note">[6]</a>.</p>
-<p>On the other end of the spectrum was my friend, BLumia. His code
-review was usually just going through my code once, and seldom demand
-changes. At first I thought he was just giving me free passes, until I
-noticed obvious mistakes made by other coworkers that somehow slipped
-through code review. <a id="n7" href="#note7" class="note">[7]</a></p>
-<h3 id="tocanch14" class="tvis">Privacy issues?</h3>
-<p>I didn’t get to work on anything that actively connects to the
-Internet. So my position basically stayed the same as stated in my last
-article. To reiterate:</p>
-<ul>
-<li>They did a poor job dealing with public relationship.</li>
-<li>Telemetry should be off by default, or the user should be prompted
-whether they want it on installation.</li>
-<li>It’s free software though! You can check the code and strip
-everything unwanted.</li>
-</ul>
-<p>However, it’s probably getting even worse for Deepin (the
-distribution) users. I was told that an identifier of the user’s
-computer along with its specification might be used in the future. If
-you want to keep using DDE, but you still value your privacy, maybe
-consider moving to another distribution and install DDE there
-<a id="n8" href="#note8" class="note">[8]</a>.</p>
-<h2 id="tocanch15" class="tvis">Dick moves</h2>
-<h3 id="tocanch16" class="tvis">… as taken literally</h3>
-<p>As the amount of employees increases, space originally designated for
-everything else was re-purposed into work area. We had to move around
-while still working. Things were not looking good.</p>
-<p>Finally at the end of September, the company moved. This is regarded
-as the reaction to their increasing demand of workforces (as the old
-place has become very jam packed due to the sky rocketing number of
-staff), but it was also a very under-prepared dick move. Formal
-announcement of the move wasn’t published until the very last day. The
-new place is in the middle of nowhere and barely furnished. There are
-also two more completely empty floors, which are the source of later
-pains.</p>
-<p>The new place is much farther away, taking almost an hour by metro,
-or 40 minutes by commute shuttles. This forces me to get up a lot
-earlier, which is very disturbing. My overall life quality had
-definitely taken a punch after that.</p>
-<p>The place is actually bought from Huawei, who left a complete mess
-behind when they withdrew themselves from the place. Soon after we moved
-in, drilling and hammering sounds could be heard up stairs left and
-right. It was actually very nerve wrecking.</p>
-<p>As the company hasn’t yet settled down completely, many promised
-treatments are thrown out of the window. These include: desserts served
-during work hours (which are actually served as usual, but the amount
-didn’t increase as the number of employee rises. As a result, it’s
-basically gone.), monthly birthday celebration for employees, showering
-facilities, etc.</p>
-<p>This dick move made some of the coworkers staring to reconsider their
-life choices seriously.</p>
-<h3 id="tocanch17" class="tvis">Rushing V20</h3>
-<p>V20 is going to be the next major release of Deepin. Initially the
-planning for this release was rather relaxed: this major overhaul was
-projected to take about a year to mature, during which another one or
-two maintenance releases of the current Deepin 15 were planned. However,
-for some reason unknown to us <a id="n9" href="#note9" class="note">[9]</a>, the deadline was pushed back by a huge margin: now it’s
-expected to be released somewhere between Q4 2019 and Q1 2020.</p>
-<p>Now, suddenly the rapid increase of personnel makes sense. But I have
-to question the quality of the resulting software – and it’s not looking
-too good for them either. Many of the new applications suffer from major
-performance deficiency: one of the development snapshots of Deepin
-picture viewer takes more than two minutes to startup, and completely
-blacks out if the window is resized, the new archive manager can cause
-major lags on the file manager. Hell, even my own creation, the new
-computer view for Deepin file manager, suffers from some performance
-issues while resizing. But I simply didn’t have the time to address it
-completely.</p>
-<p>Wheels have been reinvented during the sprint, lots of them. In fact,
-it seems to be one of their goals to out-source no applications from
-other desktop environments. They even created a browser (based on the
-Chromium code base, of course) with the help from Qihoo 360 and an IME
-with the help from Sougou. I could give Deepin credit for the effort,
-but the quality of these wheels are questionable at best.</p>
-<h3 id="tocanch18" class="tvis">Lacking / bad community
-interaction</h3>
-<p>This is more or less the same thing as what I have already wrote in
-‘The “Deepin is spyware” problem’. But now that I have more insight, I
-could write more on this topic.</p>
-<p>Deepin is a for-profit company, feature requests from commercial
-customers always take priority. As the number of employees barely meets
-the need to develop those features, requests from the community are
-usually ignored straight away. Such filtering happens before the
-developers could see the feature requests – we won’t know about them
-unless we browse the support forum ourselves.</p>
-<p>The ‘designer-central’ process is very problematic too. In my
-opinion, Deepin’s chief designer is extremely self-centric, narcissistic
-even. This resulted in some very serious uproar in the community such as
-this one:
-https://github.com/linuxdeepin/developer-center/issues/1210#issuecomment-496341368
-Sometimes even the developers couldn’t put up with these design choices,
-and added hidden options for switching to something more sensible.</p>
-<h3 id="tocanch19" class="tvis">Illegal business practice</h3>
-<p>Namely, deepin-wine breaking GNU LGPL.</p>
-<p>Deepin has been distributing a fork of an outdated branch of wine
-without releasing the source code for quite some time, which is a very
-explicit disregard to wine’s license.</p>
-<p>They have promised to release the source code, but has yet to do so.
-In the mean time, wine has made three stable releases. So far they have
-only came up with a single justification: the fear of their domestic
-commercial competitors <a id="n10" href="#note10" class="note">[10]</a>‘stealing’ their hard work. If
-this bullshit stands for even a second, everybody on this planet would
-have been a drug dealer ’cause laws don’t do shit.</p>
-<p>To be frank, we have dozens of (L)GPL breakers here in China and we
-never stop producing even more of them. We have Allwinner and XiaoMi, to
-name a few. FFmpeg’s original hall of shame page would give you a even
-longer list, and you will find the names of some gargantuan Chinese tech
-companies in it.</p>
-<p>I don’t even think Deepin’s international acceptance has anything to
-do with its commercial success (or lack thereof). Do they even have any
-overseas commercial customers? If Deepin has really been a commercial
-success, I probably wouldn’t have to develop with a computer equipped a
-shitty Pentium that otherwise would find its home in the dumpster.</p>
-<h3 id="tocanch20" class="tvis">Restructure shenanigans</h3>
-<h3 id="tocanch21" class="tvis">Walking away from “the
-founders’ spirits”</h3>
-<p>This is definitely, definitely a huge misstep and a real deal
-breaker.</p>
-<p>IMO Deepin was once among the best meritocracy free software
-community in China. However with the changes applying to their roadmap
-since v20, everything started to disintegrate.</p>
-<p>Barriers were deliberately added to the community contribution
-process (the repositories on GitHub are now merely synced with internal
-repositories). Writing documentation was considered slacking (happened
-to me a couple of times), making the already terrible documentation
-situation even worse. They basically stopped even trying to make the
-development process transparent to the public.</p>
-<p>User’s freedom was thrown out of the window. Community edition now
-requires logging into an online account to enable root access, which is
-basically the first step to a complete vendor lock down. I imagine many
-users would resort to other distros and install DDE instead (if they
-still fancy using DDE in its new look and feel).</p>
-<p>Don’t get me wrong. DDE was (and still is) a beautiful desktop
-environment (even only superficially as some people might thought). It
-has followers who will use it no matter what. However, it demands a
-fork. A fork with its founders’ spirits in mind.</p>
-<h2 id="tocanch22" class="tvis">Epilogue</h2>
-<p>I’ve actually tried out the current public beta of Deepin V20 as of
-writing this section, and the majority of the issues I mentioned above
-still hold up. Grave performance degradation seems a lot less common
-though, although my shitty-performing computer view code has barely been
-touched since I left. A lot of applications are still in dare need of
-polishing. They’d better keep those commits flowin’.</p>
-<p>At this point of time I don’t even know what I was rambling about. It
-was 1:40 in the morning. Did I just typed over 15000 characters only to
-diss Deepin? Nope. Dwelling on our past success never makes us progress.
-It’s the reflection upon the mistakes we made that does.</p>
-<p>https://www.zhihu.com/question/344339517/answer/817025546</p>
-</article>
-<!--
-vim: tw=0 syntax=markdown spell spelllang=en_us
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: vala?<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: and
-definitely not a shitty one that only does repetitive work! In fact
-while I was once chatting with Hualet, he told me I was probably among
-the best interns ever here.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: cough cough, RTX 2080,
-cough cough.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: These were formerly available on a documentation website on
-one of deepin’s domains, but were somehow taken down later.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: CSDN is a blogging platform and a forum for Chinese
-developers. We don’t have stackoverflow or a clone of it here in China,
-so CSDN became the savior of many Chinese programmers. Unfortunately
-most of the user base of CSDN are equally bad as these new
-employees.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: His code reviews were sometimes even to a
-degree of nitpicking, but I’m not really complaining since my code is
-shit.<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: To BLumia: if you are reading this, I’m
-not trying to be harsh here. It’s just a small reminder that you should
-probably pay more attention to code review (if you’re still doing
-it).<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: A lot of this stuff is specific to Deepin (the distribution),
-so you can get rid of most (but not all) of them by doing
-so.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: everyone has their own
-speculations, of course. Mine is that they wish to hand out a surprising
-present to their users, which I don’t feel super positive
-for.<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: Please, don’t mention the ones backed
-by the government (or in other words, ‘GuanXi’). They are not an excuse
-for breaking laws or licenses.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2019-09-04.html b/blog/post/2019-09-04.html
deleted file mode 100644
index 64e0510..0000000
--- a/blog/post/2019-09-04.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"September 2019 Site Update")</title>
-<meta name="description" content="«September 2019 Site Update» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">September 2019 Site Update</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/web/">web</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">The Privacy Update</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">Getting rid of recaptcha</a></li><li><a class="toctarg" href="#tocanch2">The “Privacy Policy”</a></li><li><a class="toctarg" href="#tocanch3">And … that’s all?</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2019-06-24.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2020-11-20.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">September 2019 Site Update</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2019-09-04<br>#web</div>
- <hr><div id="article" class="TText"><article>
-<p>It’s been a while since the last site update. It’s time for one
-now.</p>
-<h2 id="tocanch0" class="tvis">The Privacy Update</h2>
-<p><a href="https://cgit.chrisoft.org/web.git/commit/?id=3778fbfebf1cecda4036cd2a50e3b8239c80f1eb">The
-commit</a></p>
-<p>This is <strong>not</strong> a visually significant update. Aside
-from some wording changes and new links, there’s nothing much more to
-it. The most important stuff is (again) all under the hood.</p>
-<h3 id="tocanch1" class="tvis">Getting rid of recaptcha</h3>
-<p>In the February site update, I upgraded the site from recaptcha 2 to
-recaptcha 3. Now it’s time to remove it.</p>
-<p>As a privacy update, the task of the highest priority is to free
-users of this site from lengthy and obscure privacy terms (also non-free
-scripts) made by monopolistic tech giants like Google. And I was
-actually planning to do so for quite some time. It finally happened.</p>
-<p>I have now switched to a relatively relaxed backend-only check that
-only checks whether your public IP address is in a blacklist
-(abuseipdb.com).</p>
-<h3 id="tocanch2" class="tvis">The “Privacy Policy”</h3>
-<p>If you haven’t read it yet, read it <a href="https://chrisoft.org/blog/post/Privacy.html">here</a>.</p>
-<p>This is not a very serious privacy policy, but rather just random
-rambling on privacy-related topics.</p>
-<p>Anyway this fulfilled quite an important missing part of my website,
-be it good or not.</p>
-<h3 id="tocanch3" class="tvis">And … that’s all?</h3>
-<p>Um… there’s also a new ‘hosted by ConoHa’ banner on the main page to
-reflect the current state of this site. It leads to their ‘ConoHa mode’
-index (as opposed to the plain main page without their virtual
-character). It’s not a sponsored link so I don’t earn anything if you
-click it.</p>
-<p>Also also, I’ve got hold of a new domain name (<a href="https://pineapple.cat">pineapple.cat</a>. Check it out!</p>
-<p>With that said, everything in this update should be covered now. Not
-a huge update is it?</p>
-</article>
-<!--
-vim: tw=0 syntax=markdown spell spelllang=en_us
--->
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2020-11-20.html b/blog/post/2020-11-20.html
deleted file mode 100644
index 938ebf5..0000000
--- a/blog/post/2020-11-20.html
+++ /dev/null
@@ -1,2522 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"EDIROL SD-80: The Adventure Continues")</title>
-<meta name="description" content="«EDIROL SD-80: The Adventure Continues» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">EDIROL SD-80: The Adventure Continues</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/midi/">midi</a></li><li><a href="/blog/list/music/">music</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">“Official” Service Manual</a></li><li><a class="toctarg" href="#tocanch1">USB-PD Mod</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">(Accidentally) Circuit bent
-SD-80</a></li></ul></li><li><a class="toctarg" href="#tocanch3">Recording Setup Update Part
-1</a></li><li><a class="toctarg" href="#tocanch4">Recording Setup Update Part
-2</a></li><li><a class="toctarg" href="#tocanch5">Recording Setup Update Part
-3, 4, 5…</a></li><li><a class="toctarg" href="#tocanch6">Rompler Preservation</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch7">Emulation</a></li><li><a class="toctarg" href="#tocanch8">Sampling the Rompler</a></li><li><a class="toctarg" href="#tocanch9">Dumping and Deciphering</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch10">Extra rambling about the ROM
-chip</a></li></ul></li><li><a class="toctarg" href="#tocanch11">SD-20 MIDI File Converter</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch12">FrankenTTS-1</a></li><li><a class="toctarg" href="#tocanch13">Other observations</a></li><li><a class="toctarg" href="#tocanch14">So… is this it?</a></li></ul></li><li><a class="toctarg" href="#tocanch15">Roland Cloud</a></li></ul></li><li><a class="toctarg" href="#tocanch16">A
-History lesson from someone who barely knows anything about it</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch17">LA</a></li><li><a class="toctarg" href="#tocanch18">(Unnamed synth engine in
-U-110)</a></li><li><a class="toctarg" href="#tocanch19">EP</a></li><li><a class="toctarg" href="#tocanch20">GP</a></li><li><a class="toctarg" href="#tocanch21">XP</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch22">Original XP</a></li><li><a class="toctarg" href="#tocanch23">XP2</a></li><li><a class="toctarg" href="#tocanch24">XP3</a></li><li><a class="toctarg" href="#tocanch25">XP6</a></li><li><a class="toctarg" href="#tocanch26">XP7</a></li></ul></li><li><a class="toctarg" href="#tocanch27">XV</a></li><li><a class="toctarg" href="#tocanch28">WX</a></li><li><a class="toctarg" href="#tocanch29">Beyond WX</a></li></ul></li><li><a class="toctarg" href="#tocanch30">Role played by the
-CPU in sound generation</a></li><li><a class="toctarg" href="#tocanch31">Other Curious Stuff</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch32">SD-80 is an XV-5080 …</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch33">SD-80’s sound content</a></li></ul></li><li><a class="toctarg" href="#tocanch34">More on SD-80 vs SD-90 vs
-SD-20</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch35">What does a SD-90 have
-that SD-80 doesn’t?</a></li><li><a class="toctarg" href="#tocanch36">What does a SD-80 have
-that SD-90 doesn’t?</a></li><li><a class="toctarg" href="#tocanch37">What’s the SD-20 anyway?</a></li><li><a class="toctarg" href="#tocanch38">What role does MFX play?</a></li></ul></li><li><a class="toctarg" href="#tocanch39">Light Load vs
-High Load</a></li><li><a class="toctarg" href="#tocanch40">Block Diagram</a></li><li><a class="toctarg" href="#tocanch41">Other weird and interesting
-stuff</a></li></ul></li><li><a class="toctarg" href="#tocanch42">Errata of the original post</a></li><li><a class="toctarg" href="#tocanch43">References</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2019-09-04.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2021-06-03.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">EDIROL SD-80: The Adventure Continues</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2020-11-20<br>#device-review #midi #music</div>
- <hr><div id="article" class="TText"><script>
-window.addEventListener("DOMContentLoaded",function(){
-const cl=document.querySelectorAll('div.collapse');
-let n=0;
-for(let x of cl)
-{
- const d=document.createElement('blockquote');
- const dd=x.cloneNode(true);
- x.parentNode.insertBefore(d,x);
- x.parentNode.removeChild(x);
- dd.id=`cc${n++}`;
- dd.style.display='none';
- const s=document.createElement('span');
- const b=document.createElement('b');
- const a=document.createElement('a');
- a.classList.add('ca');
- a.setAttribute('x',n-1);
- a.innerHTML='show';
- a.href='javascript:void(0)';
- if (dd.hasAttribute('caption'))
- b.innerHTML=dd.getAttribute('caption');
- else
- b.innerHTML=dd.getAttribute('data-caption');
- s.appendChild(b);
- s.appendChild(document.createTextNode(' ['));
- s.appendChild(a);
- s.appendChild(document.createTextNode(']'));
- d.appendChild(s);
- d.appendChild(dd);
- a.onclick=function()
- {
- let x='none';
- if(a.innerHTML=='show')
- {
- a.innerHTML='hide';
- x='block';
- }
- else
- {
- a.innerHTML='show'
- }
- document.getElementById(`cc${a.getAttribute('x')}`).style.display=x;
- }
-}
-const al=document.querySelectorAll('audio');
-n=0;
-for(let x of al)
-{
- x.id=`a${n++}`;
- x.onplay=function()
- {
- for(let x of al)
- {
- if(x.id!=this.id)x.pause();
- }
- }
-}
-});
-</script>
-<article>
-<p>This the follow up article of my first post on the SD-80. View it <a href="https://chrisoft.org/blog/post/2019-04-25.html">here</a>.</p>
-<p>It’s been <del>one year and a half</del>
-<del style="text-decoration-style: double">two years</del> three years
-since I got my SD-80. A lot of stuff happened (including the great
-pandemic of COVID-19 and my escape from Wuhan). I’ve also discovered a
-lot more about the SD-80. Instead of updating the original post (which
-is already excessively long), I decided to start a new post instead.</p>
-<p>The actual publish date of this post is 2022-06-30 <del>because I
-have crippling procrastination</del>.</p>
-<p>My special thanks go to:</p>
-<ul>
-<li>Kalas, who contacted me for my original SD-80 post, without whom
-half of this article wouldn’t even exist.</li>
-<li>Discord user KR.Palto#7592, who also has a <a href="https://www.youtube.com/c/KRPalto47_th_MIDI">YouTube channel</a>,
-for providing plenty of useful information and PCB shots of various
-Roland synth modules.</li>
-</ul>
-<p>I’ve been procrastinating the release of this post for too long
-(almost 2 years by now). For this reason, the information I had on these
-modules may have updated half-way through the writing of this post.
-Therefore this post may contain self-contradicting statements. I’ll try
-to clear up any confusing parts. Feel free to reach to me if you find
-any, or just for any thoughts you have on this post. I would encourage
-anyone reading this post to get in touch with me if you have anything to
-discuss or find a mistake in this post. Every message will be greatly
-apprecitated. You can find ways to contact me in the “about” section of
-the home page.</p>
-<h2 id="tocanch0" class="tvis">“Official” Service Manual</h2>
-<p>The site where I got my other service manuals for Roland synths (none
-of which I really own) has been updated with a service manual for SD-80.
-I got one copy immediately once I knew about this (Special thanks go to
-Kalas for letting me know).</p>
-<p>Most of the service manual goes as expected: the general format, most
-chips (I correctly identified all chips that has Roland marking on them
-somehow), the block diagram and testing mode. There’s really not that
-much information in this manual that is new to me. The schematics are
-extremely useful for modding and repairing though.</p>
-<div class="collapse" data-caption="Updated list of integrated circuit chips on SD-80 main board">
-<table>
-<colgroup>
-<col style="width: 8%">
-<col style="width: 18%">
-<col style="width: 21%">
-<col style="width: 51%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: center;">Label</th>
-<th style="text-align: center;">Engravement</th>
-<th style="text-align: center;">Model</th>
-<th style="text-align: center;">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: center;">IC 1</td>
-<td style="text-align: center;">62292 361</td>
-<td style="text-align: center;">M62292FP-D60J</td>
-<td style="text-align: center;">Regulator</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 2</td>
-<td style="text-align: center;">6417706 SH3 BC13008 133 0413</td>
-<td style="text-align: center;">HD6417706</td>
-<td style="text-align: center;">SH3 CPU</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 3</td>
-<td style="text-align: center;">LH28F 160BJE-BTL80 SHARP JAPAN 0428
-7xN</td>
-<td style="text-align: center;">LH28F 160BJE-BTL80</td>
-<td style="text-align: center;">16Mbit Flash Memory</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 4, IC 6</td>
-<td style="text-align: center;">SANYO LC381616IET-70 KZA7G0CD1 0042</td>
-<td style="text-align: center;">SDRAM LC3816161ET-70-TLM</td>
-<td style="text-align: center;">16Mbit SDRAM (System RAM)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 5, IC 37</td>
-<td style="text-align: center;">‘H5’ or ‘115’ (illegible)</td>
-<td style="text-align: center;">TC7SH04FU</td>
-<td style="text-align: center;">Inverter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 7</td>
-<td style="text-align: center;">4D46 LV 00A</td>
-<td style="text-align: center;">HD74LV00A</td>
-<td style="text-align: center;">NAND Gate</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 8, IC 20, IC 22~25</td>
-<td style="text-align: center;">4C1Y LV 245A</td>
-<td style="text-align: center;">HD74LV245A</td>
-<td style="text-align: center;">8-bit Transceiver</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 9, IC 11</td>
-<td style="text-align: center;">F P42AB VT245A</td>
-<td style="text-align: center;">74VHCT245A</td>
-<td style="text-align: center;">8-bit Transceiver</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 10, IC 12</td>
-<td style="text-align: center;">0431H LVXC3245</td>
-<td style="text-align: center;">TC74LVXC3245FS</td>
-<td style="text-align: center;">Configurable 8-bit Transceiver</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 13</td>
-<td style="text-align: center;">VHC T139A 4 23</td>
-<td style="text-align: center;">TC74VHCT139AFT</td>
-<td style="text-align: center;">Dual 2/4 Decoder</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 14</td>
-<td style="text-align: center;">‘H12’ or ‘H2’ (illegible)</td>
-<td style="text-align: center;">TC7SH08FU</td>
-<td style="text-align: center;">AND Gate</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 15</td>
-<td style="text-align: center;">4D36 LV 04A</td>
-<td style="text-align: center;">HD74LV04A</td>
-<td style="text-align: center;">Hex Inverter</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 16</td>
-<td style="text-align: center;">4D16 LV 14A</td>
-<td style="text-align: center;">HD74LV14A</td>
-<td style="text-align: center;">Hex Schmitt-Trigger Inverter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 17</td>
-<td style="text-align: center;">Roland R02902867 137 352B100</td>
-<td style="text-align: center;">M37641M8-137FP</td>
-<td style="text-align: center;">7641 8-bit microcontroller, MIDI/USB
-interface</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 18</td>
-<td style="text-align: center;">VH3 139 4 24</td>
-<td style="text-align: center;">TC74VHC139FT</td>
-<td style="text-align: center;">Dual 2/4 Decoder</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 19, IC 27</td>
-<td style="text-align: center;">Roland R01455956 RA08-503 JAPAN 0330EAI
-F0032ZAC</td>
-<td style="text-align: center;">TC223C660CF-503</td>
-<td style="text-align: center;">Tone Generator + Effects Processor with
-integrated LCD &amp; Input Controller</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 21</td>
-<td style="text-align: center;">7WU04 4.F</td>
-<td style="text-align: center;">TC7WU04FU</td>
-<td style="text-align: center;">Inverter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 26, IC 30</td>
-<td style="text-align: center;">HYUNDAI GM71C18163CJ6 0040 AG1
-KOREA</td>
-<td style="text-align: center;">GM71C18163CJ-6</td>
-<td style="text-align: center;">16Mbit EDO DRAM (XV RAM / Effects delay
-line)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 28</td>
-<td style="text-align: center;">Roland R02678601 23C128L-529J
-0224E7007</td>
-<td style="text-align: center;">UPD23C128040ALGY-***-MJH</td>
-<td style="text-align: center;">128Mbit Mask ROM (Wave ROM)</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 29</td>
-<td style="text-align: center;">Roland R02678612 23C128L-535K
-0222E7005</td>
-<td style="text-align: center;">UPD23C128040ALGY-***-MKH</td>
-<td style="text-align: center;">128Mbit Mask ROM (Wave ROM)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 31, IC 35</td>
-<td style="text-align: center;">4570 431</td>
-<td style="text-align: center;">UPC4570G2</td>
-<td style="text-align: center;">Operational Amplifiers</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 32, IC 34</td>
-<td style="text-align: center;">PCM1716E 27ZDHFM</td>
-<td style="text-align: center;">PCM1716E</td>
-<td style="text-align: center;">DAC</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 33</td>
-<td style="text-align: center;">04 16H TC9271FS</td>
-<td style="text-align: center;">TC9271FS</td>
-<td style="text-align: center;">Digital Audio Modulator/Transmitter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 36</td>
-<td style="text-align: center;">A E</td>
-<td style="text-align: center;">TA78L05F</td>
-<td style="text-align: center;">Regulator</td>
-</tr>
-</tbody>
-</table>
-<p>The CPU is in clock mode 1 (MD2=MD1=0, MD0=1). Input clock is 12MHz
-from the 8-bit 7641 controller. Actual clock of the SH-3 CPU depends on
-the value of its FRQCR register. However, the only possible values of
-the internal clock speed is either 48MHz or 96MHz (refer to the
-datasheet of SH7706 for details) <a id="n1" href="#note1" class="note">[1]</a>. Either way, the CPU is downclocked by quite a
-large margin.</p>
-<p>The tone generator RA08-503 “XV” is an ASIC manufactured by Toshiba
-on a 300nm process (type TC223C).</p>
-</div>
-<h2 id="tocanch1" class="tvis">USB-PD Mod</h2>
-<p>WARNING: I’m a computer scientist (in its loosest sense), not an
-electrical engineer. Do not take any part of this section as advice. If
-you fried your equipment (I did!!) following this as an instruction,
-don’t blame it on me.</p>
-<p>The 220V to 110V converter brick I have to carry around has been
-bugging me since the very first day I got my SD-80. Because the unit
-only consumes around 10 watts of power, I’ve always been dreaming of
-alternative ways to power it. When I first cracked my module open, I
-measured the power rails going out from the power supply unit: there is
-a ±15V pair, plus a +5V rail.</p>
-<p>My top candidate was a solution based around USB-PD. I’ve seen people
-modding their ThinkPads to charge through USB Type-C on r/ThinkPad, so I
-thought that module plus some DC-DC converter circuitry will do the job.
-I also had a fallback plan, which is basically to use any switching mode
-power supply that accepts universal voltage has two output rails (one
-positive and one negative), and stick some additional regulator
-circuitry to generate the 5V output.</p>
-<p>The USB-PD trigger module is actually very easy to come by nowadays,
-especially for someone in China. While others struggles to find these
-weird stuff on ebay and aliexpress, we just source them straight from
-taobao (which is essentially aliexpress for domestic users). There are
-even ready-to-use multi-rail voltage converter modules out there (they
-are either based around LM337/LM317, or TPS543x). Finally I picked the
-(seemingly) most popular PD trigger module people use to mod laptops
-from YZXstudio, and an adjustable voltage converter module based around
-TPS5430. The pictures below are from their sellers.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sdp2_pdtrigerboard.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sdp2_pdtrigerboard.jpg"></a> <br>USB-PD
-trigger board
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sdp2_vrm.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sdp2_vrm.jpg"></a> <br>Adjustable VRM
-Module
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>I also bought some basic tools for soldering (Chinese knock-off of
-Quick 936A, lead-based solder and solder wick – I was too dumb to
-remember purchasing any flux) to make sure I can do the modding in my
-dorm.</p>
-<p>I waited a few days for all packages to arrive. After that I tested
-every component I need and they worked just fine. It’s time to pull the
-trigger. I started with desoldering the AC input socket. That went
-decently smoothly. My confidence started to build up and proceeded to
-desolder the original SMPS module, which is a rectangular daughter board
-that has quite a few pins soldered on both sides of the board. Things
-went horribly wrong (particularly because I didn’t have any flux and the
-original lead-free solder refused to flow or blend with my leaded
-solder) and I started ripping tracks off the base board. Finally I
-decided it was an impossible task for me to desolder it without
-completely destroying both boards, so I simply drilled the pins out of
-the board. While the base board wasn’t totally destroyed, it was pretty
-close. I soldered wires directly to the components on the base board
-(because tracks on the other end have been ripped off). At this time my
-soldering job was just totally awful because I was pissed and it was
-super late into the night. Anyway, when I finally piecing everything
-together, it somehow worked.</p>
-<p>Next it was time to put everything back into place. I had the idea of
-designing a 3d-printed holder for the USB Type-C extension cable that
-fills the hole for the original AC socket, however I couldn’t even
-afford a proper 2d-printing setup, let alone a 3d one. So I have to
-scrap that idea for now. None of the screw holes on the converter board
-can fit the holes on the chassis, so I just taped the module down. It
-was a complete mess inside my SD-80 now, but at least everything still
-worked (until a couple minutes later). I did mention that I had the wish
-to make custom acrylic chassis for my SD-80 some day in the future,
-hopefully I can get this mess fixed by then.</p>
-<div style="text-align:center;max-width:90%;">
-<a href="//filestorage.chrisoft.org/blog/img/sdp2_pdmodded.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_pdmodded.jpg"></a> <br>The USB-PD
-modded SD-80
-</div>
-<h3 id="tocanch2" class="tvis">(Accidentally) Circuit bent
-SD-80</h3>
-<p>I started messing around and decided to try to run the SD-80 without
-the ±15V rail. Everything except the front panel phones output and
-output 1 on the back panel worked just fine. This is not very surprising
-– all chips on the main board only takes &lt;= 5V, and it makes sense to
-derivate all those voltages from the 5V rail. After a quick look at the
-service notes, I found that the ±15V rail is only used by the OpAmps in
-the final output stage of output 1, which is on the volume board.</p>
-<p>And then something extremely stupid happened. Any proper electrical
-engineer will cringe hard. At this point I was getting cocky, and
-started randomly probing around with my multimeter on the volume board.
-I “accidentally” shorted the first two pins of the connector going from
-the main board into the volume board (pin 1 and pin 2 on CN7 of volume
-board). The output from the headphone jack immediately turns into
-complete garbage (severe distortions on low frequencies). The OpAmps
-chip on the volume board started getting ridiculously hot… crap! I still
-managed to fry something for an otherwise “perfect” modding project!</p>
-<p>Of course this is undesirable. So I had to find a fix to this.</p>
-<p>Fortunately, nothing on the main board seemed to be hurt. I can just
-bypass the volume control and get the correct output on output 1 using
-some jumper wires. So the fault is contained in the volume board. I’ve
-basically sent -15V straight into the base of two transistors, but
-measuring those transistors didn’t reveal anything wrong with them. So I
-had to assume I have fried the amp chip (NJM4565). I got a few
-replacements (NJM4580, compatible spec-wise) from taobao, and replaced
-the “faulty” NJM4565 (still without using flux). But the audio output is
-still messed up and the opamp chip still gets very hot after the
-replacement. I decided to give up for now, and look into the thing
-later. Meanwhile I just tucked some of the wires from CN6 into CN7 so
-that I can still get analog output from output 1 on the back panel.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sdp2_volbrd_fixattempt.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_volbrd_fixattempt.jpg"></a> <br>My
-terrible SMD soldering
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sdp2_bypass.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_bypass.jpg"></a> <br>Recombined plug
-for volume board bypass
-</div>
-</td>
-</tr>
-</tbody></table>
-<div style="text-align:center;max-width:90%;">
-<br>
-</div>
-<h2 id="tocanch3" class="tvis">Recording Setup Update Part
-1</h2>
-<p>Since I have always wanted to record my SD-80 through a digital link
-(even before frying the analog output), I have been keeping an eye on
-cheap digital recording solutions. Modern professional audio interfaces
-never come with digital input on budget models. Among the older
-interfaces, UA-25(EX) from Roland (EDIROL / Cakewalk) seems to be a
-reasonable choice. There are also a bunch of different models from
-various brands of the same era that have digital inputs. However these
-models are virtually impossible to get in China. Then some cheapo
-consumer grade stuff caught my attention – several relatively nameless
-brands have “sound cards” for home theater uses that have digital I/O.
-Those are priced at roughly 200~300 Chinese yuan. Among those I found a
-more widely recognized brand called Terratec. They have PCI-e and USB
-sound cards that comes with digital I/O and are available for purchase
-in China. Price are on the higher end (300+ CNY), however still way
-cheaper than the cheapest professional audio interface that doesn’t have
-digital I/O (those start from ~800 CNY). Plus these models seem to have
-a reasonable Linux user base, so I got their Aureon 7.1 USB.</p>
-<p>This thing feels extremely cheap on first sight, weights close to
-nothing, and is made entirely out of plastic. It comes with an extremely
-thin S/PDIF fiber optical cable which looks so fragile that a single
-touch may break it. It does work out of the box. ALSA recognizes it as
-“Aureon 7.1 USB” without further clue about the chip it uses, however
-the Windows driver is more telling. Its control panel associates the
-chip with a Taiwanese company called Cmedia, and the kernel driver is
-named <code>cm106.sys</code>. Upon further investigation this thing is
-likely to be based on their CM106 chip (which is an ancient solution
-from 2003), or its pin-compatible successor CM6206. I don’t have
-interest in disassembling it right now (update: confirmed by a teardown
-later. It’s indeed based around the CM6206), but either way it’s a cheap
-consumer grade solution.</p>
-<p>SD-80’s digital output is fixed at 44100 Hz sample rate. So the sound
-card must also record at 44100 Hz to make a correct recording (unless it
-has internal resampling). This is easily doable under Windows (just
-select the appropriate sampling rate in the device properties dialog).
-It’s also reasonably easy with Jack, where you can just start the server
-on that specific device with the correct sampling rate. But this is not
-that easy to achieve for pulseaudio. By default, recent versions of
-pulseaudio auto detects cards with the <code>module-udev-detect</code>
-module, which doesn’t allow setting a different sample rate for a single
-sound card. Setting <code>alternate-sample-rate</code> doesn’t work
-either because this card supports digital signals at 48000Hz which in my
-case is the value for <code>default-sample-rate</code>, and therefore
-would not fallback to <code>alternate-sample-rate</code>. I had to write
-a small function to fix this:</p>
-<pre><code>spdif_samplerate()
-{
- pacmd unload-module `pacmd list-modules | grep -B 2 Aureon_7 | awk '/index:/ {print $2}'`
- pacmd load-module module-alsa-card device_id=`awk '/Aureon 7\.1 USB$/{print $1}' /proc/asound/cards` name="usb-0ccd_Aureon_7.1_USB-00" card_name="alsa_card.usb-0ccd_Aureon_7.1_USB-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no rate=44100
-}</code></pre>
-<p><del>Using a cheap consumer grade card does come with consequences.
-The recording seems to have a small DC bias – it’s not real DC though,
-the offset changes from time to time. When the input signal goes silent,
-the offset might differ from the offset when the signal was silent last
-time.</del> <a id="n2" href="#note2" class="note">[2]</a> For this reason, I always add a high-pass filter
-when using the material recorded by this sound card. With the HPF
-applied, this sound card does produce clearer digital recording than my
-Scarlett Solo with very cheap cables.</p>
-<p>There’s no ASIO driver for this card either (Aureon 7.1 PCIe does
-have ASIO driver, but I can’t install that card on my laptop), which
-means I have to either use Steinberg’s generic ASIO driver, or ASIO4ALL,
-both of which are… kind of trash, but still usable. The card doesn’t
-have a bad latency issue though: it’s obviously way worse than the
-Scarlett, but still tolerable.</p>
-<p>So that’s my <del>current</del> recording setup. I’m currently OK
-with it. However I’m not going to stick with it forever. I’ll upgrade to
-a UA-25(EX), or better yet, an SD-90 because that way I can use its ASIO
-output directly, plus I’ll be able to chain my SD-80 to it and use both
-at the same time.</p>
-<h2 id="tocanch4" class="tvis">Recording Setup Update Part
-2</h2>
-<p>(This part is written Q4 2021)</p>
-<p>Yes I did upgrade to a UA-25 (non-EX). I got mine for about $60
-(after a long struggle against eBay’s virtually non-existent customer
-service to lift a stupid suspension on my account).</p>
-<p>Gentoo Linux handles this new interface without any problem. The
-troublesome part is Windows (again). Just like the SD-80, Roland didn’t
-release any Windows 10 driver for the UA-25. <a href="https://chrisoft.org/blog/post/2019-04-25.html#tocanch4">The
-trick</a> I used to make their SD-80 Windows 8/8.1 driver install on
-Windows 10 worked fine, and the driver installed correctly. But things
-quickly went down hill. Whenever I open an application that uses ASIO,
-the driver freaks out and causes audio dropouts like crazy. This glitch
-makes the driver basically unusable.</p>
-<p>I tried drivers for different Windows versions. Nothing changed. When
-I was desperate and searching around the web, I discovered that UA-25EX
-has an official Windows 10 driver. UA-25EX is virtually the same as
-UA-25 except it comes with an improved limiter section which I assume
-has largely nothing to do with the driver. So I decided to try some “mad
-hax”.</p>
-<p>Windows driver for UA-25EX is only available from Microsoft as a
-Windows update package. Roland says if you have a UA-25EX, the package
-will automatically install itself once you plug it in. But I don’t have
-a UA-25EX: I only have a UA-25. So I had to go to the Windows Update
-Catalog, looked for the driver package there, and download the build for
-my computer (which turned out to be much harder than it needs to be, but
-I won’t go deeper into that here). I extracted the package, and modified
-the USB product ID the driver is designed for in the INF file:</p>
-<pre><code>%DriverDeviceDesc%=DriverInstall, USB\VID_0582&amp;PID_00E6 ; UA-25EX</code></pre>
-<p>Just change <code>PID_00E6</code> to <code>PID_0074</code> (and also
-the comment if you wish). AND IT FRICKING INSTALLED. ASIO also worked
-perfectly. (Insert a thousand-word essay trashing Roland’s bad practice
-here.)</p>
-<p>So did the upgrade work? Nope. The DC bias is still there. Now it’s
-more likely that the DC bias is from the SD-80 itself. Also another very
-telling clue is that when the sound generator inside the SD-80 is reset,
-the DC bias immediately goes away. I did some additional research on the
-Internet and discovered people have theorized that the DC bias is from
-the effect processor. They are having a <a href="https://gearspace.com/board/electronic-music-instruments-and-electronic-music-production/1302162-roland-xv5080-spdif-issue.html">similar
-problem</a> with their XV-5080 and XV-5050 as well, both of which have
-the same synth engine as the SD-80. By replicating their experiments and
-getting the same result, I personally conclude that the DC bias comes
-from the amp / gain / filter section of the integrated effects
-processor. So I guess I’ll have to keep using high-pass filters on the
-output for now.</p>
-<p>So the only upgrade is that now I can record S/PDIF signal with
-native ASIO. Besides that, it’s actually a downgrade: Output from the
-computer will be muted if the digital input of the UA-25 is enabled.
-This forced me to keep using the analog input for monitoring.</p>
-<h2 id="tocanch5" class="tvis">Recording Setup Update Part
-3, 4, 5…</h2>
-<p>Yes I did upgrade. (again!!)</p>
-<p>I saw a UA-101 in a listing for $80. I bought it. Then there was a
-whole saga which ended in me getting two of them for the price of one.
-And then I saw a SD-90 for $120… you know what happened.</p>
-<p>This is getting too long to write in detail here. I’ll give detailed
-information on my current recording setup in a new post, if I care to
-write it at all.</p>
-<h2 id="tocanch6" class="tvis">Rompler Preservation</h2>
-<p>Kalas was extremely keen on preserving the sounds of SD-90/80 during
-our communications. I have the intention to keep these legendary Roland
-sounds around long into the future as well. We discussed the following
-possibilities. Note that due to the locked-down nature of SD-90/80, we
-referred to them mostly as “Romplers”, but these methods listed below
-apply to those expandable models as well, especially considering they
-are nothing but romplers that you can add more ROMs to, and the
-architecture of Roland’s PCM synth.</p>
-<p>In this section I’ll start using the word “SD-90” and “SD-80”
-interchangeably, and by saying “SD-90”, I’m actually referring to the
-synthesizer module built into it. If Roland was being honest when they
-were saying “the newly developed multitimbral MIDI sound module, as
-built into the well-received SD-90” when they were introducing the SD-80
-<a id="n3" href="#note3" class="note">[3]</a>, it should be
-safe to assume they are virtually the same thing. I know this is kind of
-sloppy. If you want to read more on this, checkout the <a href="#tocanch33">“More on SD-80 vs SD-90 vs SD-20”</a> section.</p>
-<h3 id="tocanch7" class="tvis">Emulation</h3>
-<p>This method was brought up by Kalas. Indeed there are a couple of
-sound modules / synthesizers that has been emulated with reasonable
-success. <a href="https://github.com/munt/munt">Munt</a> has an amazing
-emulation of Roland’s LA synthesis found in the MT-32 or D-50.
-<a id="n4" href="#note4" class="note">[4]</a> Yamaha’s FM
-synthesis chips have been reverse engineered from inside out: there are
-<a href="https://github.com/gtaylormb/opl3_fpga">implementations on
-FPGA</a>, multiple nearly perfect software implementations, and other
-bizarre stuff. MAME has emulation for multiple MU-series models, plus
-work has been put into making an emulated SC-55 in MAME.</p>
-<p>However, I personally don’t think emulation is the way to go for
-SD-90/80. The success (or lack thereof) of these emulated models does
-have their reasons:</p>
-<ul>
-<li>Emulation of Yamaha’s FM chips is a success because those chips are
-available to third-party sound card makers, and therefore have public
-datasheets that contains critical information for emulating the chip,
-which includes register mapping, and the detailed architecture of the FM
-synthesizer. This drastically decreased the amount of reverse
-engineering required to get a perfect emulated implementation. Roland
-has never made their synthesizer chips available to third-party vendors,
-and therefore it’s impossible to take advantage of public
-datasheets.</li>
-<li>Emulation of several early gaming consoles’ sound system has been
-successful because
-<ul>
-<li>They are relatively sample.</li>
-<li>Similar to Yamaha’s FM chips, programmers can also directly
-interface with them. Therefore their programming manuals have detailed
-description on how sound generation works in the chips. SD-90/80’s
-synthesizer chip XV meets neither of these two criteria.</li>
-</ul></li>
-<li>Most emulated sound modules in MAME have been a failure in terms of
-real-world usability. The emulated MU-series either freezes, produces no
-sound at all, or makes loud unexpected noise when playing the demo
-track. The SC-55 emulation barely works – they only got the CPU working
-and running its dumped control ROM. Please don’t get me wrong: the fact
-that some emulated MU model could make any sound is almost a miracle for
-me, and definitely a huge achievement despite the far-from-ideal results
-it currently has, as Yamaha’s sample based synth chips
-(<code>GEW/SWP</code> stuff) are no easy nut to crack. This approach is
-highly unlikely to work for the SD-90/80 because unlike gaming consoles,
-getting the CPU to run its system code doesn’t mean much for synthesizer
-emulation. It’s the emulation of the actual synth/DSP chip that matters.
-And the XV chip found in SD-90/80 is a <strong>monstrosity</strong>
-compared to the early SWP chip in the MU-series. For this reason, I find
-a pure emulation based solution difficult to implement for
-SD-90/80.</li>
-<li>Munt is successful because instead of an instruction-to-instruction
-emulation, it’s more like a software reimplementation of the LA synth.
-It doesn’t try to run the control ROM on an emulated Intel 8098 CPU, but
-instead only use it for determining some characteristics of the software
-implementation of the LA synth. This approach makes the most sense when
-trying to recreate SD-90/80 in software form, but still definitely
-require tons of reverse engineering (either blackbox or whitebox).</li>
-</ul>
-<p>For these reasons, I don’t think an OPL3-level emulation of SD-90/80
-is possible <a id="n5" href="#note5" class="note">[5]</a>. However, I will discuss an approach that
-resembles Munt’s in the <a href="#tocanch8">Dumping and Deciphering</a>
-section.</p>
-<h3 id="tocanch8" class="tvis">Sampling the Rompler</h3>
-<p>Many people have attempted to sample the SD-90. We already have the
-(in)famous THFont from forever ago that contains some samples from the
-SD-90, plus <a href="https://musical-artifacts.com/artifacts/1367">these</a> efforts to
-create a complete set of sampled instruments from the SD-90. However,
-these folks aren’t doing it in the most efficient way IMHO. Since the
-SD-90/80 is extremely editable, one can craft presets ideal for raw
-sample extraction (no filters, no LFO, just a plain tone with a constant
-amplitude envelope). Since many preset instruments in the SD-90/80
-consist of multiple layers using different samples, instead of sampling
-the patches, one can sample every individual waveform and layer the
-samples in a way similar to the original presets to make close
-imitations of SD-90/80 instruments. If done properly under ideal
-conditions, the resulting sample library should be around the same size
-of SD-90/80’s sample ROM, but decompressed (my guess is ~64 MiB
-<a id="n6" href="#note6" class="note">[6]</a>).</p>
-<p>If you’re only going to use the vanilla SD patches without any sort
-of modification (including filter response, envelope, and effect
-parameters), those existing samples will work just fine and they are
-probably the most accurate out there if recorded properly. Of course,
-the “efficient” approach of sampling sacrifices some level of that
-accuracy (due to a different engine being used for playing back the
-samples). But in exchange you get the highest level of freedom to
-recombine the raw samples into custom patches including tweaking all
-possible parameters and effects available in the synth engine of your
-choice (which is a huge plus for me personally, as I love to create
-whacky patches).</p>
-<p>One problem for extracting the samples is that, a single waveform in
-the SD-80 may contain different samples assigned for different key
-ranges. This is often called a “multisample” by some sources. The way
-the samples are mapped to the keys must be figured out before actually
-sampling them. I have written a small(ish) python script to do exactly
-that. It records the SD-80 playing two different keys at the same pitch
-one after another, and compare them by calculating the correlation. If
-the correlation is lower than a threshold, the two keys use different
-samples. This approach works reasonably well for most samples, but for a
-few analog synth samples, it works poorly. For those samples, I had to
-resort to relying on the human ear (DTW, dynamic time warping, is also
-used sometimes, but it usually has poor results for these samples as
-well). Also the XV engine have some weird quirks near the keys C7-D8
-(96-110). The actual waveform produced within that range varies very
-slightly from time to time. This is possibly due to the effect of <a href="https://en.wikipedia.org/wiki/Aliasing">aliasing</a> becoming
-prominent for these high-pitched notes. I have already figured out
-key-sample mapping for all multisamples (they are not guaranteed to be
-correct, due to reasons mentioned above).</p>
-<p>Another problem is looping. Roland uses sample looping extensively in
-their PCM synths. It’s basically their secret sauce to squeeze thousands
-of instruments into a unit with only tens of megabytes of samples.
-Sample loop points can also be computed using cross-correlation. But is
-nowhere near perfect. Of course it can be done manually, but that would
-be a tedious task.</p>
-<p>No actual recording of the raw samples have been done by me yet.</p>
-<p>I have also dumped the instrument configuration for all preset
-instruments and rhythm sets as part of my SD-80 dumping project (for
-SD-80’s native mode only. I’m not sure whether this is doable for its
-GS/XGLite instruments without a lot of reverse engineering, but nobody
-cares about those anyway). For now, it can be used to recreate
-parameter-accurate SD-80 patches in Roland’s SRX/Zenology plugins.
-However it’s not yet in a very human-readable form (either raw binary
-registers dump or decimal values with field names).</p>
-<p>Once the samples are there, one can easily piece them together within
-the sample playback engine of their choice, be it HALion, KONTAKT, or
-even just soundfont synthesizers. Sure the feature set of each
-sample-based synth engine is not exactly the same, but I think decent
-results could be achieved for most instruments.</p>
-<h3 id="tocanch9" class="tvis">Dumping and Deciphering</h3>
-<p>The wave ROM in the SD-80 is a standard part despite the custom
-Roland engravement on it <a id="n7" href="#note7" class="note">[7]</a>. This is expected because Roland has been
-using standard mask ROM parts from various manufacturers for the wave
-ROM. This means the content of SD-80’s wave ROM can be easily
-dumped.</p>
-<p>This might be shocking for some of the readers, but Roland does
-compress their samples. This is evident from the specification of
-XV-5080 “Wave memory: 64MB (16-bit linear format)” while the XV-5080
-only has 32 MiB wave ROM. The compression, previously unknown to me, has
-been identified to be a variant of the differential pulse-code
-modulation (DPCM) called FCE-DPCM by <a href="http://www.dtech.lv/techarticles_roland_exp.html">some amazing
-person</a>. The same person seemed also figured out the structure of the
-wave ROM used by sample-based synthesizers from Roland of that general
-era. Unfortunately, I wasn’t able to find the article on the technical
-details of the compression method at the time of writing. Anyway, hats
-off to Edward of dtech.lv!</p>
-<p>I <strong>will surely</strong> make a dump of the wave ROMs of my
-SD-80. However, I want to do it in an nondestructive manner – I don’t
-want to get a ROM dump and an unusable SD-80 (or end up with no valid
-ROM dump and an unusable SD-80). Since I have proved my SMT soldering
-job is terrible and shall never be in the vicinity of a SMT board
-holding a soldering iron or hot air gun, I might try some clipping the
-chip instead. I’m considering to try <a href="https://www.360-clip.com/uni-48.htm">this</a> clip from 360-clip.
-It claims to be applicable to any 48-pin TSOP chips. If that’s true,
-with the help of this clip and a Raspberry Pi <a id="n8" href="#note8" class="note">[8]</a>, I
-can suck that juicy content out of the wave ROM chips of the SD-80.</p>
-<p>Once we have the ROM dump, we can start trying to figure out its
-structure. If we somehow managed to do that, we would be able to feed
-the decompressed samples together with the already dumped patch
-parameters to some existing or new, custom sample-based software
-synthesizer, and achieve decent results mimicking the SD-90/80. Patches
-that make use of MFX would certainly be a pain to deal with. However one
-can always simulate MFX with external DAW effects. To hear the
-difference MFX makes for various preset patches that use it, see the <a href="#tocanch37">“What role does MFX play?”</a> section.</p>
-<p>I believe this approach is very similar to that one used by Munt
-(although I only read a small part of Munt’s code base, and I didn’t
-read anything about their reverse engineering approach). The SH3 CPU
-plays a relatively minor part in the tone generation of SD-80. Instead,
-we should focus on replicating the sounds of the XV engine. Also, an
-logic-level reverse engineering of the XV chip doesn’t seem reasonable
-because it’s such a huge and complex chip (or rather, a huge gate
-array). Just save the hassle, treat it like a blackbox and try to
-reproduce its output using a software implementation should be able to
-produce acceptable result on its own.</p>
-<h4 id="tocanch10" class="tvis">Extra rambling about the ROM
-chip</h4>
-<p>In the part number of <code>μPD23C128040ALGY-***-MJH/MKH</code>, the
-<code>***</code> part is the ROM code. When a mask ROM chip is
-commissioned, the customer (Roland in this case) needs to submit the
-desired ROM content and their choice for various other options (in case
-of <code>μPD23C128040ALGY</code>, they can choose how the logic level on
-a certain pin controls the outputs). The manufacturer then arrange the
-mask according to this information and assigns a ROM code to this
-specific mask <a id="n9" href="#note9" class="note">[9]</a>. Therefore, for two
-chips of the same type, if they have the same ROM code, their contents
-should be identical. This way we can guess with fair amount of certainty
-that the XV-3080, XV-5080 and XV-5050 have identical wave ROM contents
-(they all use <code>μPD23C128040ALGY-849-MJH</code> and
-<code>μPD23C128040ALGY-850-MJH</code>).</p>
-<p>Among the chips with Roland markings in the SD-80, the XV chip and
-8-bit MCU with Roland-programmed ROM has other markings that matches
-Roland’s internal part numbers (the numbers with a prefix R, like
-<code>R01455956</code> and <code>R02902867</code>), and followed by a
-indicative part number of the actual chip (<code>137</code> and
-<code>RA08-503</code>). However, none of these features matches on the
-wave ROM chips. The wave ROM chips has internal part number
-<code>R02678601</code> and <code>R02678612</code>, while the numbers on
-the service manual are <code>03010612</code> and <code>03010623</code>
-respectively. The indicative part also doesn’t match either: the chips
-in my unit have <code>23C128L-529J</code> and <code>23C128L-535K</code>.
-While the J/K variant and the <code>23C128L</code> part does match, what
-I presumed is the ROM code doesn’t (529 vs 525 on IC28, 535 vs 526 on
-IC29). What does this mean? I don’t really know. My SD-80 is built
-relatively late into production (date code on the main board is
-2004-08-27, date on the service manual is May 2002 – when the SD-80 was
-initially released). Maybe Roland did revise the wave ROM content. If
-that’s the case, it would be interesting to find one with the original
-ROMs and compare them. I wouldn’t expect there to be any significant
-differences, though.</p>
-<h3 id="tocanch11" class="tvis">SD-20 MIDI File Converter</h3>
-<p>This extremely intriguing piece of software is brought up by Kalas
-during our communications. At the time of writing, this application can
-be still found <a href="https://www.roland.com/jp/support/by_product/sd-20/">here</a>. The
-installer can only proceed if an SD-20 is detected. This can be easily
-circumvented by using a InstallSheld extractor. The converter does try
-to access a registry key
-<code>HKLM\Software\Wow6432Node\Edirol\SD-20 MIDI File Converter\BaseDataFile</code>,
-which should be set to a string pointing to the url of its param.dat
-file. However, even with this key set, the converter still refuse to do
-anything, saying it failed to initialize. By the way even with an SD-20
-connected to the computer via USB, the converter still refuses to start
-on Windows 10.</p>
-<p>However, this kind of nonsense is not going to stop me. I quickly
-found cracks floating around on the Internet. This converter is
-extremely simplistic: you pick the midi file to convert, it spits the
-wav file into the same folder. Here are some quick samples.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<td>
-SD-80
-</td>
-<td>
-SD-20 Converter
-</td>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/AMEDLEY.SD80.N.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/AMEDLEY.SD80.SD20C.N.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="2">
-AMEDLEY.MID by Earl Gray Fowler from Voyetra Technologies, arranged for
-SD-80 (Native Mode)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>Used instruments: St.Strings, St.Timpani, St.Harp, St.Fr Horns, Flute
-vib, St.Tubular, St.Harp, St.Xylophone, St.Music Box, St.Room, Bassoon
-vib, SpaceVoice 3, Atmosphere 3, Ice Rain 3, PanFlute vib, Bird Tweet,
-Seashore, Sweep Pad 3, Rockabilly, St.Kalimba, Piccolo vib, Steel Drums,
-Tuba vib, Romantic Tp, St.Banjo, Trombone vib, JazzClarinet, Gunshot,
-Clavi Bass 3, St.Brass, Dist.Gt 2, St.Orc Hit, Jazz Organ 2,
-PhaseFrtless, Solo Vox 3, Reed Romance, Ice Rain 2, St.Power, Oct.JP
-Saw, SH-2 Lead, Jazz Slap, OverdriveGt2, Applause.</p>
-<p>Reed Romance and SH-2 Lead are from the special 2 set, therefore
-cannot be used by the SD-20 MIDI File Converter. They are substituted by
-Violin 2 vib and Warm SynHorn automatically. A single SD-80 system
-exclusive DT1 message is used to change the patch volume of SH-2
-Lead.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<td>
-SD-80
-</td>
-<td>
-SD-20 Converter
-</td>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/YOSEMITE.SD80.N.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/YOSEMITE.SD80.SD20C.N.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="2">
-YOSEMITE.MID by Passport Designs, arranged for SD-80 (Native Mode)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>Used instruments: Enh.Nylon o, Ocarina vib, St.Slow Str2,
-PhaseFrtless, Celtic Ens, St.Standard, Soft60’Organ, Pre Bass,
-St.BritePno.</p>
-<p>St.BritePno is a custom patch. It’s selected using system exclusive
-messages generated by SD-80’s bulk dump feature. Enh.Nylon o, Celtic
-Ens, Pre Bass are not available in the SD-20 Converter.</p>
-<p>The output from the converter is significantly louder than SD-80’s
-digital output. I normalized all recordings before uploading them.
-Despite the lack of a lot of features and patches, the converter
-actually sounded exceptionally good, and exceeded my expectation by
-quite a large margin.</p>
-<p>The converter is not a software implementation of SD-20’s internals.
-There’s misinformation out there claiming so, but that’s simply not the
-case. Roland explicitly disclosed this in the readme file of the
-converter.</p>
-<h4 id="tocanch12" class="tvis">FrankenTTS-1</h4>
-<p>Something smells fishy instantly when I got this converter. That file
-name “param.dat” looks really familiar. If you have used any of Roland’s
-HQ software synthesizer products from the early 2000s
-<a id="n10" href="#note10" class="note">[10]</a>, you might feel the same. They all use this file to
-store their samples and patch data.</p>
-<p>One natural thing to do is to replace the param.dat file of these
-plugins with the one supplied with the converter. The result are as
-follows:</p>
-<ul>
-<li>HQ-OR/HQ-QT refuses to load at all after the swap.</li>
-<li>HQ-GM2 loads correctly. Instrument names changes to the names from
-SD-20’s Classical set (for example, 1:0 changes from Piano 1 st. to
-Piano 1w). Only instruments from the Classical set are available. No
-NRPN messages can change the instrument set. The sound is pretty much
-identical to that from the converter.</li>
-<li>GrooveSynth (P5antom) also loads correctly. Besides all instruments
-from the Classical set, a couple of instruments from the Contemporary
-set and Solo set are also available, but there’s no obvious pattern
-there. All rhythm sets are available in the Franken-GrooveSynth.</li>
-</ul>
-<p>This reveals that the synthesizer engine is identical to that used by
-these HQ software synthesizers, proving the claim that this converter is
-a software implementation of SD-20 wrong again.</p>
-<p>There’s not much information about the structure of this “param.dat”
-file online, nor could I figure it out myself (I’m not a huge fan of
-doing such work). However this interchangeablility is somewhat
-delighting.</p>
-<h4 id="tocanch13" class="tvis">Other observations</h4>
-<p>The executable of the converter is a mere ~500KiB and doesn’t seem to
-use an executable packer. This suggests the “HQ” engine couldn’t be
-super complex.</p>
-<p>The executable contains references to “Automation”, “User Rhythm” and
-such. Apparently they still left some code from the plugin version of
-the HQ engine in this converter.</p>
-<p>I think I found the entry to the function where param.dat is loaded
-(0x004228e0). No idea where to go from there though.</p>
-<h4 id="tocanch14" class="tvis">So… is this it?</h4>
-<p>Nah, we should not depend on a piece of proprietary junk for the
-preservation of anything.</p>
-<p>Maybe some wizards could find a way to hack the plugins and make all
-instruments available in TTS-1 or something. But that doesn’t really
-work as a way to preserve the synth if the binary code it depends on
-could stop working at an arbitrary point of time in the future, does
-it?</p>
-<h3 id="tocanch15" class="tvis">Roland Cloud</h3>
-<p>Roland has been pushing their subscription service “Roland Cloud”
-since 2018. When it first came out there was no plugin of my interest.
-The deal breaker for me back then was there was no permanent licensing
-option. If you know me, I’m strongly opposed to the subscription model
-used for software products.</p>
-<p>Starting from May 2020 though, Roland started offering “lifetime
-keys”, which now puts this service within my radar. I took the ultimate
-tier trial and installed every piece of plugin replicating SRX boards
-and the XV-5080, as well as the then-new “Zenology” synth. I’ve got
-mixed results.</p>
-<p>The software aspect is okay. It’s much better than SoundCanvas VA
-I’ve used years ago, which has glitchy TVA and TVF and was never fixed.
-The user interface scales perfectly on high DPI screens. Editing
-experience of the SRX/XV plugins is basically the same as the editors
-for later Roland PCM synths (such as the SonicCell and the Integra-7) –
-that is, much better than the original XV or SD-80 editor. These plugins
-still have terrible performance as most previous Roland software synths
-do (each instance needs plenty of processing power – if you use a
-computer that predates the release of these plugins, the performance
-will probably suffer).</p>
-<p>The sound is … fine? Didn’t give me the same astonishment when I
-heard a real XV-5080 on YouTube though (I thought “no way this thing
-only has 32 MiB of sample content!”). For most patches, they sound
-“close enough” to an actual XV-5080, despite a handful of caveats. The
-synth engine do behave nearly identical to actual XV-based synths, at
-least according to my tests. The XV-5080 plugin is especially
-underwhelming, considering the original XV-5080 is expandable and can
-also load external samples. If only the XV-5080 plugin could load
-samples and patches from other SRX plugins installed, it would have been
-a lot better (although this is solved by Zenology, it has its own
-issues). The MFX uses a different set of effect types from the original
-XV-5080 and SD-80: they are modeled after synths after the Fantom-S
-era). However I’d say the effects bearing the same name as XV effects do
-sound largely the same.</p>
-<p>The executables contain a resource folder named “WROM”, and it
-contains the wave ROMs used by the plugins. They are all exactly 32 MiB.
-The wave ROM files contains a similar 32-byte header to dumps of actual
-wave ROM of earlier Roland PCM synths (see the JD-800 wave ROM dump from
-Edward of dtech.lv).</p>
-<p>I do have some major complaints though. Each executable contains a
-copy of the wave ROMs. If you choose to install all plugin formats, that
-will install 4 copy of exactly the same wave ROM on your computer. Also
-it’s impossible to combine the sounds of different SRX boards. Most
-samples originated from Spectrasonics are missing from the SRX plugins
-but are reincluded in the EXZ expansions which can be used in Zenology,
-indicating a copyright dispute between the two companies that was
-resolved later <a id="n11" href="#note11" class="note">[11]</a>. These problems
-can be partially solved if you use the newer Zenology plugin instead.
-But Zenology is riddled with its own issues. It uses a nearly entirely
-new set of MFX (identical to the MFX from their 2019 Fantom-6/7/8
-workstations and other “ZEN-CORE” based products), and completely lacks
-reverb effects. Effects that have the same name in Zenology and XV-based
-synths doesn’t necessarily behave the same. And Zenology still can’t
-load samples from different sample groups to left and right channels of
-a single voice. I know it’s a thing in the original XV, but since it’s a
-software reimplementation, they don’t have to stick to the same
-restrictions do they? Also, why are all these plugins monotimbral? If
-your answer is “just use multiple instances”, I would remind you that
-these are Roland software synths, and they don’t perform well if you add
-multiple to your virtual rack…</p>
-<p>Recreating patches of the SD-80 using these plugins does seem to be
-possible, and there are already plenty of people doing that. See the
-section <a href="#tocanch32">“SD-80’s sound content”</a> for details.
-However it does still rely on proprietary Roland software products
-(which, if they want to, can cease the support at any time), requires
-pricy licenses, and on top of all that, a crappy authenticating
-system.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<td>
-SD-80
-</td>
-<td>
-XV-5080 VST
-</td>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/passport_Driving.sd_pretending_to_be_xv.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/passport_Driving.xvvst.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-SD-80 using patch parameters pulled from XV-5080 &nbsp;&nbsp;
-</td>
-<td>
-&nbsp;&nbsp; 5 instances of XV-5080 VST using factory patches
-</td>
-</tr>
-<tr>
-<td colspan="2">
-“Driving”, by Passport Designs
-</td>
-</tr>
-</tbody></table>
-</div>
-<h2 id="tocanch16" class="tvis">A
-History lesson from someone who barely knows anything about it</h2>
-<p>AKA a short history of Roland’s sample-based synths from someone who
-has used almost none of them.</p>
-<p>Below is a comparison chart of selected sample-based synths from
-Roland using information available from their manuals (mostly sysex
-address mapping in the MIDI implementation) and service manuals. In a
-few occasions sources from the Internet are used as well.</p>
-<div class="collapse" data-caption="More detailed comparison of various Roland's PCM based sound modules">
-<p>Chip information on following modules are from actual units:</p>
-<ul>
-<li>SD-90</li>
-<li>SD-80</li>
-<li>SD-20</li>
-<li>SC-8850</li>
-<li>SC-D70 (courtesy of Palto)</li>
-<li>SC-55 (courtesy of Palto)</li>
-<li>SC-55mkII (courtesy of Palto)</li>
-<li>Fantom-XR</li>
-<li>XV-5080</li>
-</ul>
-<p>Others come from service notes.</p>
-<table>
-<tbody><tr>
-<th>
-Model
-</th>
-<th>
-Synth Tone Generator
-</th>
-<th>
-Effects Processor
-</th>
-<th>
-Wave ROM
-</th>
-<th>
-CPU
-</th>
-<th>
-Multitimbral Parts
-</th>
-<th>
-Polyphony (partials / voices)
-</th>
-<th>
-Preset Patches
-</th>
-<th>
-Synth Effects
-</th>
-</tr>
-<tr>
-<td>
-MT-32
-</td>
-<td>
-MB87136A (LA32)
-</td>
-<td>
-HG61H20R36F (Reverb), 4*64Kbit RAM
-</td>
-<td>
-4 Mbit = 0.5 MiB
-</td>
-<td>
-Intel 8098
-</td>
-<td>
-9
-</td>
-<td>
-32
-</td>
-<td>
-128i + 30r
-</td>
-<td>
-Reverb
-</td>
-</tr>
-<tr>
-<td>
-JD-990
-</td>
-<td>
-MB87731A (EP) + MB87424A (TVF)
-</td>
-<td>
-2 * TC6088AF (CSP), 4 Mbit RAM
-</td>
-<td>
-3 * 16 Mbit = 6 MiB, expandable w/ SL-JD80, SO-PCM1, PN-JV80 and SR-JV80
-boards
-</td>
-<td>
-H8/570
-</td>
-<td>
-8
-</td>
-<td>
-24
-</td>
-<td>
-128i + 2r + 32p
-</td>
-<td>
-JD Multi (EQ + Dist + Phaser + Spectrum + Enhancer + Chorus + Delay +
-Reverb)
-</td>
-</tr>
-<tr>
-<td>
-SC-55
-</td>
-<td>
-24201F002, TC24SC201AF-002 (GP)
-</td>
-<td>
-Integrated, 256 Kbit RAM
-</td>
-<td>
-3 * 8 Mbit = 3 MiB
-</td>
-<td>
-H8/532
-</td>
-<td>
-16
-</td>
-<td>
-24
-</td>
-<td>
-317i + 10r
-</td>
-<td>
-Reverb, Chorus
-</td>
-</tr>
-<tr>
-<td>
-SC-55MkII
-</td>
-<td>
-TC6116AF (GP4)
-</td>
-<td>
-Integrated, 256 Kbit RAM
-</td>
-<td>
-16 Mbit + 8 Mbit = 3 MiB
-</td>
-<td>
-H8/532
-</td>
-<td>
-16
-</td>
-<td>
-28
-</td>
-<td>
-354i + 10r
-</td>
-<td>
-Reverb, Chorus
-</td>
-</tr>
-<tr>
-<td>
-JV-880
-</td>
-<td>
-TC6116AF (GP4)
-</td>
-<td>
-Integrated, 256 Kbit RAM
-</td>
-<td>
-2 * 16 Mbit = 4 MiB, expandable w/ SR-JV80 boards &amp; PN-JV80 / SO-PCM
-cards
-</td>
-<td>
-H8/532
-</td>
-<td>
-8
-</td>
-<td>
-28
-</td>
-<td>
-192i + 3r + 48p
-</td>
-<td>
-Reverb, Chorus
-</td>
-</tr>
-<tr>
-<td>
-SC-88
-</td>
-<td>
-MBCS30109 (XP)
-</td>
-<td>
-Integrated, 2 * 1 Mbit RAM
-</td>
-<td>
-4 * 16 Mbit = 8 MiB
-</td>
-<td>
-H8/510
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-654i + 24r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ
-</td>
-</tr>
-<tr>
-<td>
-JV-1080
-</td>
-<td>
-MBCS30109B (XP)
-</td>
-<td>
-Integrated, 2 * 1 Mbit RAM
-</td>
-<td>
-4 * 16 Mbit = 8 MiB, expandable w/ SR-JV80 boards &amp; PN-JV80 / SO-PCM
-cards
-</td>
-<td>
-HD6477034, SH7034 (SH1)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-512i + 8r + 64p
-</td>
-<td>
-Reverb, Chorus, EFX (40 types)
-</td>
-</tr>
-<tr>
-<td>
-SC-88VL
-</td>
-<td>
-MB87B105PF-G RHR-2342 (XP2) <a id="n12" href="#note12" class="note">[12]</a>
-</td>
-<td>
-Integrated, 2 * 1 MBit RAM
-</td>
-<td>
-4 * 16 Mbit = 8 MiB
-</td>
-<td>
-H8/510
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-654i + 24r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ
-</td>
-</tr>
-<tr>
-<td>
-SC-88Pro
-</td>
-<td>
-TC170C200AF-005, RA01-005 (XP3), 2 * 1 MBit RAM
-</td>
-<td>
-MB87837PF, 1 MBit RAM
-</td>
-<td>
-5 * 32 Mbit = 20 MiB
-</td>
-<td>
-H8/510
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-1117i + 42r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ, EFX (64 types)
-</td>
-</tr>
-<tr>
-<td>
-JV-2080
-</td>
-<td>
-TC170C200AF-005, RA01-005 (XP3), 4 MBit RAM
-</td>
-<td>
-TC170C110AF-002, RA03-002, 4 MBit + 1 MBit RAM
-</td>
-<td>
-2 * 32 Mbit = 8 MiB, expandable w/ SR-JV80 boards
-</td>
-<td>
-HD6437034, SH7034 (SH1)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-640i + 10r + 64p
-</td>
-<td>
-Reverb, Chorus, EFX (3 slots, 40 types)
-</td>
-</tr>
-<tr>
-<td>
-SC-8850
-</td>
-<td>
-2 * TC203C180AF-002, RA09-002 (XP6), 2 * 4 MBit RAM
-</td>
-<td>
-MB87837PF, 4 MBit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB
-</td>
-<td>
-HD6437016E09F, SH7016 (SH2) <a id="n13" href="#note13" class="note">[13]</a>
-</td>
-<td>
-64
-</td>
-<td>
-128
-</td>
-<td>
-1640i + 63r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ, EFX (64 types)
-</td>
-</tr>
-<tr>
-<td>
-SC-8820
-</td>
-<td>
-TC203C180AF-002, RA09-002 (XP6), 4 MBit RAM
-</td>
-<td>
-MB87837PF, 4 MBit RAM
-</td>
-<td>
-128 Mbit + 64 Mbit = 24 MiB
-</td>
-<td>
-HD64F7017F28, SH7017 (SH2)
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-1608i + 63r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ, EFX (64 types)
-</td>
-</tr>
-<tr>
-<td>
-SC-D70
-</td>
-<td>
-TC203C180AF-002, RA09-002 (XP6), 4 MBit RAM
-</td>
-<td>
-MB87837PF, 4 MBit RAM; TC223C080AF-101, RA0A-101 (ESP4), 4 Mbit RAM
-</td>
-<td>
-128 Mbit + 64 Mbit = 24 MiB
-</td>
-<td>
-HD6437016E19F, SH7016 (SH2)
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-1608i + 63r
-</td>
-<td>
-Reverb, Chorus, Delay, EQ, EFX (64 types)
-</td>
-</tr>
-<tr>
-<td>
-XV-3080
-</td>
-<td>
-2 * TC203C180AF-002, RA09-002 (XP6)
-</td>
-<td>
-Integrated, 2 * 4 MBit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB, expandable w/ SRX &amp; SR-JV80 boards
-</td>
-<td>
-HD6437042F33, SH7042 (SH2)
-</td>
-<td>
-16
-</td>
-<td>
-128
-</td>
-<td>
-1024i + 16r + 64p
-</td>
-<td>
-Reverb, Chorus, MFX (1 slot, 63 types)
-</td>
-</tr>
-<tr>
-<td>
-JV-1010
-</td>
-<td>
-TC203C180AF-002, RA09-002 (XP6)
-</td>
-<td>
-Integrated, 4 MBit RAM
-</td>
-<td>
-2 * 64 Mbit = 16 MiB, expandable w/ SR-JV80 boards
-</td>
-<td>
-HD6437016F28, SH7016 (SH2)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-895i + 18r + 64p
-</td>
-<td>
-Reverb, Chorus, EFX (40 types)
-</td>
-</tr>
-<tr>
-<td>
-SD-80
-</td>
-<td>
-2 * TC223C660CF-503, RA08-503 (XV)
-</td>
-<td>
-Integrated, 2 * 16 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB
-</td>
-<td>
-HD6417706, SH7706 (SH3)
-</td>
-<td>
-32
-</td>
-<td>
-128
-</td>
-<td>
-1050i + 30r
-</td>
-<td>
-Reverb, Chorus, EQ, MFX (3 slots, 90 types)
-</td>
-</tr>
-<tr>
-<td>
-SD-90
-</td>
-<td>
-2 * TC223C660CF-503, RA08-503 (XV)
-</td>
-<td>
-Integrated, 2 * 16 Mbit RAM; RA0B-B01 for AFX
-</td>
-<td>
-2 * 128 Mbit = 32 MiB
-</td>
-<td>
-HD6417709A, SH7709 (SH3)
-</td>
-<td>
-32
-</td>
-<td>
-128
-</td>
-<td>
-1050i + 30r
-</td>
-<td>
-Reverb, Chorus, EQ, MFX (3 slots, 90 types)
-</td>
-</tr>
-<tr>
-<td>
-SD-20
-</td>
-<td>
-TC203C180AF-003, RA0C-003 (XP7)
-</td>
-<td>
-Integrated, 4 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB
-</td>
-<td>
-HD6437016E29FV, SH7016 (SH2)
-</td>
-<td>
-32
-</td>
-<td>
-64
-</td>
-<td>
-660i + 23r
-</td>
-<td>
-Reverb, Chorus, EQ
-</td>
-</tr>
-<tr>
-<td>
-XV-5080
-</td>
-<td>
-2 * TC223C660CF-503, RA08-503 (XV)
-</td>
-<td>
-Integrated, 2 * 16 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB (expandable w/ SRX &amp; SR-JV80 boards and EDO
-DRAM up to 128 MiB)
-</td>
-<td>
-HD6437042A13F, SH7042 (SH2)
-</td>
-<td>
-32
-</td>
-<td>
-128
-</td>
-<td>
-1152i + 23r + 64p
-</td>
-<td>
-Reverb, Chorus, EQ, MFX (3 slots, 90 types)
-</td>
-</tr>
-<tr>
-<td>
-XV-5050
-</td>
-<td>
-TC223C660CF-503, RA08-503 (XV)
-</td>
-<td>
-Integrated, 16 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB (expandable w/ SRX boards)
-</td>
-<td>
-HD6437016E22, SH7016 (SH2)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-1280i + 25r + 64p
-</td>
-<td>
-Reverb, Chorus, EQ, MFX (3 slots with restrictions <a id="n14" href="#note14" class="note">[14]</a>, 90 types)
-</td>
-</tr>
-<tr>
-<td>
-XV-2020
-</td>
-<td>
-TC203C180AF-003, RA0C-003 (XP7)
-</td>
-<td>
-Integrated, 4 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB (expandable w/ SRX boards)
-</td>
-<td>
-HD6437016E, SH7016 (SH2)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-768i + 17r + 64p
-</td>
-<td>
-Reverb, Chorus, MFX (1 slot, 40 types)
-</td>
-</tr>
-<tr>
-<td>
-Fantom S-88
-</td>
-<td>
-TC223C660CF-503, RA08-503 (XV), 4 Mbit RAM
-</td>
-<td>
-TC223C080AF-101, RA0A-101 (ESP4), 16 Mbit RAM
-</td>
-<td>
-2 * 128 Mbit = 32 MiB (w/ 2 * 128 Mbit = 32 MiB sampling RAM, expandable
-up to 288 MiB, plus SRX boards)
-</td>
-<td>
-HD6417706, SH7706 (SH3)
-</td>
-<td>
-16
-</td>
-<td>
-64
-</td>
-<td>
-904i + 41r + 64p
-</td>
-<td>
-Reverb, Chorus, MFX (3 slots, 78 types), Mastering &amp; Input Effects
-</td>
-</tr>
-<tr>
-<td>
-Fantom XR/X6/X7/X8
-</td>
-<td>
-T6TV2TBG-0002 (WX)
-</td>
-<td>
-Integrated, 64 Mbit RAM
-</td>
-<td>
-4 * 128 Mbit = 64 MiB (w/ 2 * 64 Mbit = 16 MiB sampling RAM, expandable
-up to 528 MiB, plus SRX boards)
-</td>
-<td>
-HD6417706, SH7706 (SH3)
-</td>
-<td>
-16
-</td>
-<td>
-128
-</td>
-<td>
-1280i + 49r + 64p
-</td>
-<td>
-Reverb, Chorus, MFX (3 slots, 78 types), Mastering &amp; Input Effects
-</td>
-</tr>
-<tr>
-<td>
-Fantom G6/G7/G8
-</td>
-<td>
-T6TV2TBG-0002 (WX)
-</td>
-<td>
-2 * T6TZ3AFG-0001 (WSP) w/ 64 Mbit RAM each + WX Integrated, 64 Mbit RAM
-</td>
-<td>
-2 * 512 Mbit = 128 MiB (w/ 2 * 128Mbit = 32MiB sampling RAM, expandable
-upto 544 MiB, plus ARX boards (external SSC synthesis))
-</td>
-<td>
-SH7785 (SH4A)
-</td>
-<td>
-16
-</td>
-<td>
-128
-</td>
-<td>
-1920i + 73r + 8p
-</td>
-<td>
-Reverb, Chorus, PFX (16 slots, one per channel, 76 types), MFX (2 slots,
-78 types), Mastering &amp; Input Effects
-</td>
-</tr>
-<tr>
-<td>
-INTEGRA-7
-</td>
-<td>
-R8A02021ABG (SSC7, CPU w/ integrated DSP?) + MB8AA4181 (ESC2)
-</td>
-<td>
-ESC2 256Mbit Effect RAM + SSC7 64Mbit Effect RAM
-</td>
-<td>
-3 * 1Gbit = 384MiB (w/ 4 * 256Mbit = 128MiB DRAM)
-</td>
-<td>
-R8A02021ABG (SSC7), SH4?
-</td>
-<td>
-16
-</td>
-<td>
-128
-</td>
-<td>
-6030i + 258r + 64p
-<!--64 "Studio Sets" (performances), SuperNATURAL (256 Ac, 1109 Sy, 26 Dr) + XV-5080 PCM (896i, 14d) + GM2 (256i, 9d) + ExSN1-6 (17i, 17i, 50i, 12i, 12i, 7d) + SRX01-12 (41i + 79d, 50i, 128i + 12d, 128i, 312i + 34d, 449i + 5d, 475i + 11d, 448i + 21d, 414i + 12d, 100i, 42i, 50i) + HQGM2 (256i, 9d) + HQPCM (512i, 19d)-->
-</td>
-<td>
-Reverb, Chorus, MFX (16 slots, 67 types), EQ, compressor (drum part),
-Surround, Mastering (EQ)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>The following section summarizes generation-over-generation
-improvements of the synth engine noticed by me reading the manuals.
-There is a little bit of technical assessment of the chips, however most
-of it is <strong>not</strong> based on analysis of the actual chip,
-instead it’s based on analysis of the most capable synth model using
-that chip. Some of the features might be added with newer version of
-system software (such as the multisampling feature on XV-based synths
-mentioned below) rather than improvements on the actual synth chip. It’s
-in no way, shape or form complete. A lot of synthesizer keyboard models
-are not listed. It could be way too technical for some readers. If
-that’s the case, feel free to skip this section.</p>
-<h3 id="tocanch17" class="tvis">LA</h3>
-<p>Not strictly a PCM synth. Only uses PCM for the attack phase of the
-sound. Already showing Roland’s base designs for later PCM synths: 4
-“partials” (this term is from 80s Roland samplers, and was referred to
-as either voices or tones in later products) for each patch. Each
-partial has its “timbre”, which consists of a WG (“wave generator”),
-5-stage envelope generators for filters and amplifiers (which in later
-PCM synths were reduced to 4-stage), and a single LFO for mod wheel.
-Filters are always low-pass. Poor panning resolution (15 steps instead
-of GM’s 128). Rhythm patches reference to individual “timbres” on each
-key. Usually paired with external reverb and chorus processing chips. Up
-to 32 polyphony.</p>
-<p>Used in MT-32, CM-64, CM-32L, D-110 (as MB87136A “LA32”, QFP), and
-D-50 (as MB87136, PGA).</p>
-<p>Due to the popularity of MT-32, which is supported by a whole bunch
-of DOS games, emulation of this engine is pretty well-developed already
-(see the aforementioned Munt project).</p>
-<h3 id="tocanch18" class="tvis">(Unnamed synth engine in
-U-110)</h3>
-<p>An early (late-1980s) incarnation of Roland’s PCM only synth. No
-filters at all. Amp env reduced to 3 stages (?). The synth structure
-looks more closely related to that of LA rather than later Roland PCM
-synths. 31 polyphony. The synth consists of two chips: MB87419 and
-MB87420. The former seems to act as a controller, while the latter does
-the actual sound generation. There’s an additional chip to handle output
-selection. Also relies on external chips for effects.</p>
-<p>Interestingly, MAME has a partial implementation of this synth engine
-(src/devices/sound/rolandpcm.cpp).</p>
-<p>Found in U-110, U-220, CM-32P and various R-8 variants.</p>
-<h3 id="tocanch19" class="tvis">EP</h3>
-<p>Early-1990s PCM synth. Has filters but requires an external TVF
-chip.</p>
-<p>The models using this engine seems to have roughly the same feature
-set as GP-based models. However they lack a lot of controls for rhythm
-patches. Some models come with a much more powerful effects engine
-(which is external to the EP chip).</p>
-<p>Used in HP-3700/2700 (as MB87731), and JD-800/990 (as MB87731A).</p>
-<h3 id="tocanch20" class="tvis">GP</h3>
-<p>Uses 4-stage envelope generators for filter and amplitude. Has two
-filter modes (LPF and HPF). Individual tones can be delayed after the
-note is triggered. Each tone has 2 independent LFOs. Has a rudimentary
-modulation matrix (with fixed modulation sources). Reverb and chorus
-effects are integrated in the chip. Most parameters now accepts values
-from 0 to 127 (rather than 0 to 100 in LA-based units). Has FxM
-(frequency modulation) capability. More parameters can be modulated by
-key follow or velocity, which now also supports velocity curves and
-sensitivity offsets. Up to 28 polyphony on GP4 (24 on the original
-GP).</p>
-<p>The original GP (TC24SC201AF-002) is used in JV-80 and SC-55.</p>
-<p>A later variant “GP4” (TC6116AF) is used in JV-880, SC-55mkII and
-MC-303. It contains an additional gate array as LCD controller and
-handles extra IO.</p>
-<h3 id="tocanch21" class="tvis">XP</h3>
-<p>This iteration has a lot of variants.</p>
-<h4 id="tocanch22" class="tvis">Original XP</h4>
-<p>Two additional filter modes (BPF and PKG). Modulation matrix has
-partially configurable modulation sources. Introduced random panning and
-alternate panning. Key ranges of tones can be limited. Voice priority
-(which note to steal when a new note is played if polyphony is maxed)
-can be adjusted. Has integrated effects processor with 40 available
-effect types. Up to 64 polyphony. This chip seems to have the facilities
-for pairing two of them together, but none of the production rack units
-make use of this feature as far as I know. 24-bit wave address bus for a
-maximum of 16777216 words (=32 MiB) addressable wave ROM per chip.</p>
-<p>Used in JV-1080 (as MBCS30109B), and SC-88 (as MBCS30109).</p>
-<h4 id="tocanch23" class="tvis">XP2</h4>
-<p>Seems to be a drop-in replacement of the original XP.</p>
-<p>Used in production units of XP-80 (designed with the original XP) and
-SC-88VL (both as MB87B105PF-G or RHR-2342).</p>
-<h4 id="tocanch24" class="tvis">XP3</h4>
-<p>Seems pin-compatible with the original XP.</p>
-<p>Used in JV-2080, SC-88Pro, and JX-305 (as TC170C200AF-005 or
-RA01-005).</p>
-<h4 id="tocanch25" class="tvis">XP6</h4>
-<p>Tones can have different samples on each stereo channel. Two extra
-filter modes (LPF2 and LPF3). Fully configurable modulation matrix. 63
-internal effect types. Up to 64 polyphony. Actual models with two of
-these chips exist (XV-3080 and SC-8850).</p>
-<p>Used in XV-3080, JV-1010, XV-88, SC-8850, SC-8820 and SC-D70 (as
-TC203C180AF-002 or RA09-002). XV-88, XV-3080 and SC-8850 use a pair of
-XP6.</p>
-<h4 id="tocanch26" class="tvis">XP7</h4>
-<p>Cut-down variant used in low cost models. Only the 40 “classical”
-JV/XP effect types are present. All XP chips <em>before</em> XP7 work at
-a 32 kHz output sampling rate (24.576 MHz clock input, 768 clock cycles
-per output sample, or 12 clock cycles per voice). XP7 is also capable of
-operating at 44.1 kHz with a 33.868 MHz clock input (found in the SD-20
-and DR-880).</p>
-<p>Used in XV-2020, SD-20, DR-880, and E-09 (as TC203C180AF-003 or
-RA0C-003).</p>
-<h3 id="tocanch27" class="tvis">XV</h3>
-<p>Mostly the same as XP6, but with COSM effects (guitar/bass
-amplifiers, speaker &amp; microphone emulation) and two additional
-effect slots. 90 internal effect types. 3 insertion effect slots (40 of
-the 90 effect types takes all 3 slots if only one chip is used). Up to
-64 polyphony. Has an additional memory controller for sample RAM,
-enabling dynamic sampling. Can be paired to double the maximum polyphony
-and improve effects DSP power. 25-bit wave address bus for a maximum of
-33554432 words (=64 MiB) addressable wave ROM per chip (all XPs have a
-24-bit wave address bus).</p>
-<p>Used in XV-5080, XV-5050, SD-90, SD-80, Fantom, Fantom S/S88,
-MV-8800, and MC-909 (as TC223C660CF-503 or RA08-503). XV-5080, SD-90 and
-SD-80 use a pair of XV.</p>
-<p>XV-5080 seems unique among these models as it has a (software) switch
-between two master clocks for the XV chip that allows for switching
-between 44.1 kHz and 48 kHz output. The XV engine in all other models
-listed above outputs at 44.1 kHz. Twice efficient compared to the XP
-series, the XV chip needs 6 clock cycles to process each voice, which
-translate to a input clock of 16.9344 MHz (44.1 kHz output) or 18.432
-MHz (48 kHz output).</p>
-<p>Earlier models with sampling capability using this chip doesn’t have
-proper external multisample support until Fantom S/S88, suggesting the
-multisample support is added with system firmware rather modifications
-to the synth engine.</p>
-<h3 id="tocanch28" class="tvis">WX</h3>
-<p>Capability wise, WX seems to be the equivalent of dual XV with the
-external effects chip used in Fantom S/S88 (TC223C080AF-101, RA0A-101)
-integrated. 78 internal effect types plus mastering + input effects.
-Also added proper multisample support for external samples, which the
-XV-5080 lacks. <a id="n15" href="#note15" class="note">[15]</a> Up to 128 polyphony. 25-bit
-wave address bus for a maximum of 33554432 words (=64 MiB) addressable
-wave ROM per chip. Wave RAM on general data bus instead of wave bus. WX
-chip is only seen operating at a 44.1 kHz output, and uses a input clock
-of 16.9344 MHz (3 clock cycles per voice).</p>
-<p>Found in the Fantom-X series and Fantom-G series, as well as MC-808.
-(SonicCell and SD-50 are also likely equipped with this chip, but I’m
-not 100% sure.)</p>
-<h3 id="tocanch29" class="tvis">Beyond WX</h3>
-<p>From this point on the service manuals from Roland have become less
-useful. They stopped listing the ICs in their parts list. However the
-block diagram and schematics remain.</p>
-<p>Roland introduced the so-called “SuperNATURAL” sounds with their
-Fantom-G series, together with its new expansion board format (ARX).
-These boards has a CPU built on it (the same SSC7 CPU used in
-Integra-7). The CPU is connected to a set of RAM named “Effects RAM” in
-Roland service manuals. Fantom-G by itself doesn’t appear to have any
-“SuperNATURAL” sounds preloaded, and these new sounds clearly breaks
-some of the limitations of the old synth engines. This leads to my
-suspicion that the ARX boards have self-contained synth engines on
-board, and the new “SuperNATURAL” engine is either software based, or
-the SSC7 chip has some sort of extra bits that doesn’t belong to the CPU
-(that is, an integrated ASIC DSP block). The SSC/SSC7 chip is seen on
-all ARX boards, as well as the Integra-7.</p>
-<p>Along with this new CPU thing, there are new effect processors/DSPs:
-WSP and ESC2. WSP is found in a few relatively earlier (2009-ish)
-models, while ESC2 is appears in almost all post 2010 Roland synths
-(Integra-7, probably all Boutique models, and the latest Fantom-6/7/8
-series). A single ESC2 chip is able to provide 16 individual effect
-slots in the Integra-7. However sometimes two of these chips can be seen
-in some of the Boutique units. It also has a JTAG interface, and handles
-USB connectivity in the Integra-7, leading to the suspicion that it also
-has a microcontroller built-in.</p>
-<h2 id="tocanch30" class="tvis">Role played by the
-CPU in sound generation</h2>
-<p>When I started writing this post, my thoughts were the vast majority
-of the synth functionality is contained in the synth chip. In other
-words, the synth chip provides a very high level of abstraction, and the
-CPU only needs to pass processed voice events to the synth chip. In
-retrospect this is not plausible, due to the following facts:</p>
-<ul>
-<li>Models with the same chips sometimes have significant feature
-disparity (Fantom-S with external multisamples which is not found on any
-other XV-based models).</li>
-<li>Only the CPU has direct access to the memory that stores patch
-parameters.</li>
-<li>There’s no reason for such a powererful CPU in some low-end
-models.</li>
-</ul>
-<p>My current hypothesis is the CPU handles:</p>
-<ul>
-<li>control matrix mapping, preprocessing of some parameters (velocity
-curves, for example)</li>
-<li>voice (individual tone) allocation and parameter specification</li>
-<li>effect and output routing configuration (actual routing happens in
-the synth chip/DSP obviously)</li>
-<li>certain LFOs (maybe? <a id="n16" href="#note16" class="note">[16]</a>). Envelopes (even less likely).</li>
-</ul>
-<p>This means the synth chip could contain basic blocks for various
-subsystems (sample playback, modulation, effect processing, etc).
-Routing among these blocks is controlled by the CPU. If you are somewhat
-familiar with hardware accelerated rasterization in computer graphics,
-you may find this architecture has resemblance to the old fixed function
-graphics pipeline.</p>
-<h2 id="tocanch31" class="tvis">Other Curious Stuff</h2>
-<h3 id="tocanch32" class="tvis">SD-80 is an XV-5080 …</h3>
-<p>… locked into performance mode and with samples cherry-picked by
-Roland?</p>
-<p>Indeed, the address mapping <a id="n17" href="#note17" class="note">[17]</a> for the SD-80 is almost
-fully compatible with that of XV-5080. Even a lot of parameters that
-make no sense for the SD-80 are preserved: SD-80 has a parameter to
-select which wave expansion board to use, wave groups (which the SD-80
-only has one), as well as parameters for “multi-partial” patches, which
-on the XV-5080 is a way to put together patches that use samples loaded
-into the RAM. Only the first one has its description changed to
-“reserved” in the documentation. The SD-80 doesn’t have any wave
-expansion board slots hidden inside, nor does it have support for
-external sample loading.</p>
-<p>Of course from the form factor side of things, the SD-80 looks more
-like a cut-down version of XV-5050 which is a full 1U rack unit while
-the SD-80 has a 3/4 rack design. However the SD-80 does retain XV-5080’s
-128 polyphony and dual XV guts.</p>
-<p>What is called “Performance” in XV-5080’s address map is called
-“Multitimbre” in SD-80’s address map. They have the exact same content
-inside (well, not really exact – SD-80 has quite a few extra parameters
-in the “Multitimbre Common” section, mainly to expose some GM2
-parameters and parameters that earlier SoundCanvases had in their
-address maps). On the XV-5080, you can save the performance to one of
-its 64 performance memory slots. Configuration of all 32 parts of the
-synthesizer is restored from the save slot when a performance is loaded.
-Just like the XV-5080, the SD-80 has a name assigned to its
-“Multitimbre”, which is set to “Native Mode” upon entering its native
-mode. But there are no memory slots for “multitimbres” in the SD-80, nor
-is the name of multitimbre shown anywhere (either on the LCD screen, or
-in the SD-80 Editor), rendering this name useless. This name is not
-read-only. You can change it as you wish using system exclusive
-messages, and is preserved until the next native mode reset message is
-received.</p>
-<p>Since the SD-80 is straight up the same when compared to the XV-5080
-in terms of synthesizer engine, and also has extremely similar MIDI
-implementation <a id="n18" href="#note18" class="note">[18]</a>, the SD-80 can be seen as a
-XV-5080 with locked-down samples. What the StudioCanvas series does
-improve over its SoundCanvas predecessors, is its editability in native
-mode, which is brought on par with its professional counterparts and
-allow the user take full control of the sound for the first time
-<a id="n19" href="#note19" class="note">[19]</a>. This is a huge step forward from the
-lame set of a few parameters offered by earlier GS models. However there
-is also stuff found in earlier models that’s no longer available in the
-StudioCanvas, which we are going to touch on in a moment.</p>
-<h4 id="tocanch33" class="tvis">SD-80’s sound content</h4>
-<p>Only a small chunk of SD-80’s content is brand new (at least to me) –
-for example, the harpsichord <a id="n20" href="#note20" class="note">[20]</a>, the clarinet, a few saxes and stereo crash cymbals.
-The rest are either from other Roland products, or modified from their
-existing content.</p>
-<ul>
-<li>The sample “Trumpet Vib” used by the now infamous Romantic Tp
-(thanks to ZUN) is from SR-JV80-18 Latin expansion board. The original
-sample name is “Tp Vib MariA” (or B, or less likely C) <a id="n21" href="#note21" class="note">[21]</a> There are a lot more samples for various trumpet
-techniques in SR-JV80-18, particularly designed for Mexican mariachi
-music. These samples are also found in SRX-09 World Collection, which
-contains all samples from SR-JV80-18.</li>
-<li>Acoustic drum set from the solo set is a cut down version of the
-studio kit from SRX-03 Studio, which is also the source of Super
-Quartet’s drums.</li>
-<li>Piano patches are pulled straight from SR-JV80-09, which is also
-included in SRX-07. <del>SC-8850 has the same Piano sound.</del> No it
-doesn’t. It uses the stereo piano samples from XV. Thanks for Arie on
-Discord to point this out.</li>
-<li>Clavi is almost identical to one of the many clavi patches from
-SC-8820/8850, and is likely ultimately from the JVs and SR-JV80
-boards.</li>
-<li>Samples of Flute vib sound identical to those with the same name
-(“Flute Vib3 A/B/C”) in SRX-03.</li>
-<li>Samples of St.Brass and St.Sm Choir also come straight from
-SRX-03.</li>
-<li>Multiple sound effects are from earlier SC models. Some are also
-used by XV-5080’s GM2 mode.</li>
-<li>A lot of patches in the special sets are pulled from the XV-5080.
-They use the exact same parameters, except the waveforms. If you can
-find a preset with the same name as an instrument from SD-80’s special
-set in the XV-5080, chances are they sound almost identical, especially
-since a lot of them are analog/digital synth patches, and waveforms
-don’t matter as much. There are a few exceptions – a preset with the
-name “Cascade” is found in both instruments, but they have nothing in
-common except the name. There are also a lot of XV-5080 “inspired”
-patches: they have different names from the original XV-5080 patch, but
-very similar sound design. In fact, the “Cascade” patch mentioned above
-is one of these XV-5080 “inspired” patch, but you have to figure out the
-original yourself as I forgot which one it is.</li>
-<li>Rave Set, Rust Set and Bully Set are adapted versions of XV’s
-RaveDrumSet, XV Rust Kit and XV Bully Kit respectively. The original XV
-kits are not GM-compatible.</li>
-<li>Multiple orchestral instruments from the contemporary set and solo
-set use samples from SRX-06 (SR-JV80-02/16).</li>
-<li>Bass and guitar are a mishmash from SR-JV80-09, SRX-03, SRX-07,
-SRX-09 and XV-5080. Some of them are used in other Roland products.
-(Fingered Bs2 vs SC-8850 Heart Bass, which is also almost identical to
-Rock Bass in Super Quartet, and the sample is from SR-JV80-09).</li>
-</ul>
-<p>This list is far from complete. There has been extensive efforts to
-map the multisamples in the SD-80 to XV-5080 and SRX multisamples. <a href="//filestorage.chrisoft.org/blog/data/SD-80/SD-80_Waveform_Comparison.pdf">Here</a>
-is one made by Palto. These mappings are extremely useful if you wish to
-recreate SD-80 patches with Roland’s VSTi plugins.</p>
-<p>So the content of the SD-80 is actually a mixture of XV-5080, SRX
-wave expansion boards, SR-JV80 boards, earlier SoundCanvas patches and
-maybe a few new sounds. Reusing stuff isn’t surprising for Roland, nor
-should it be considered “bad”. They’ve been known to do this <a href="https://www.soundonsound.com/reviews/roland-sc88">since the early
-SC days</a>, where they used JV- and SR-JV80 expansion board sounds in
-the old SC series. Evidently, the waveforms come with XV-5080 itself
-include everything from the JV-2080/1080, which are in turn partially
-from the JV-880, and eventually from the JD-800… I’ve also noted that
-SuperQuartet has a substantial overlapping set of instruments with
-SRX-03. All I want to say in this section is that if you want to get
-some particular sounds from the Studio Canvas, instead of waiting for a
-second-hand offering, maybe look somewhere else.</p>
-<p>Since the content of SD-80 is mostly just cherrypicked XV/SRX
-content, it really doesn’t need any additional praise from me. However I
-think it’s worth pointing out that Roland’s samples of that era, just
-like sounds from most other vendors, are heavily looped. They have loop
-periods that are quite short (usually less than a second). They are also
-usually heavily preprocessed. As the amount of memory used for
-reproducing the instruments saw a huge boom in the 2000s, they no longer
-sound downright “fake” or “plasticky” compared to romplers from a decade
-ago. However when compared against huge modern sample libraries, most
-instruments from these 2000s Roland romplers sound more “idealistic”
-rather than “realistic”, just like your average Japanese anime girls
-with unrealistically huge eyes. Not saying that such sound is bad,
-though.</p>
-<p>The GS sounds and XGLite sounds of the SD-80 are completely trash.
-The GS sound set is pretty much just the SC-55 map in later SoundCanvas
-models using SD-80 samples. The XGLite sound set however, is notably
-larger than the average bottom-of-the-line Yamaha Portatones from the
-early 2000s (the XGLite instrument listing in SD-80/90’s manual is
-incomplete. Check my first SD-80 post for a complete list). There are
-probably only 5 or so usable sounds offered in these modes in total
-(most of which are in the XGLite sound set, which is kind of ironic for
-a Roland sound module). It’s not worth it to switch modes just for those
-sounds, especially since these modes don’t support low-level editing
-like the native mode.</p>
-<p>The SD-80 features 1050 instruments and 30 drum sets, which is a
-significant decrease from the last generation SC-8850 (1640 instruments
-and 63 drum sets). The loss of SC-8850’s ethnic and analog instruments
-is a shame. But the quality of instruments does receive a general
-uplift.</p>
-<h3 id="tocanch34" class="tvis">More on SD-80 vs SD-90 vs
-SD-20</h3>
-<h4 id="tocanch35" class="tvis">What does a SD-90 have
-that SD-80 doesn’t?</h4>
-<p>Easy. The audio interface (together with post-processing effects) and
-the large screen.</p>
-<p>It is a shame that Roland didn’t implement full XV-level editability
-of patches on such a large screen though.</p>
-<p>SD-80 is also not capable of switching the output sample rate on its
-digital audio outputs.</p>
-<h4 id="tocanch36" class="tvis">What does a SD-80 have
-that SD-90 doesn’t?</h4>
-<p>This may come as a shocker, because the list is surprisingly
-long.</p>
-<ul>
-<li>User instruments and user rhythm sets. <a id="n22" href="#note22" class="note">[22]</a></li>
-<li>A few weird switches controlling its global state (MFX on/off,
-reverb/chorus switch). They are weird because they are not affected by
-the native mode reset message. These switches are also featured in the
-SD-80 editor, which Roland says don’t do anything if used with an SD-90.
-They are also present in the professional XV line-up.</li>
-<li>Multiple outputs from the synthesizer. The SD-90 does have a
-secondary output, but the internal synthesizer can only use one of them.
-The SD-80 has two stereo outputs, which can also be used as four mono
-outputs. This also allows the SD-80 to have…</li>
-<li>Ability to output synthesizer effects to a separate bus. You can
-specify the output for the internal reverb, chorus and multi-effects as
-well.</li>
-</ul>
-<h4 id="tocanch37" class="tvis">What’s the SD-20 anyway?</h4>
-<p>Turns out it’s not much.</p>
-<p><a href="https://chrisoft.org/blog/post/2021-10-10.html">There’s
-going to be a separate article on this.</a></p>
-<h4 id="tocanch38" class="tvis">What role does MFX play?</h4>
-<p>It depends. If the MFX is just some reverb, EQ, or chorus, it really
-doesn’t make a whole world of difference and can be easily replaced with
-basic external effects. If its an amplifier simulator, a pitch shifter,
-or an auto filter, disabling MFX will result in a drastic sound change.
-Plugins simulating these effects are also usually harder to come by /
-more expensive. A few demonstrations of patches with and without MFX are
-in the table below.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-Patch
-</th>
-<th>
-MFX Type
-</th>
-<th>
-Audio demo (with MFX, then without MFX)
-</th>
-</tr>
-<tr>
-<td>
-3D Crystal
-</td>
-<td>
-Modulation Delay
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/3D_Crystal.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-96 Year
-</td>
-<td>
-Rotary
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/96_Year.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Celtic Ens
-</td>
-<td>
-Reverb
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Celtic_Ens.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-MonoDLY Dist
-</td>
-<td>
-Guitar Multi A
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/MonoDLY_Dist.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Oxigenizer
-</td>
-<td>
-Keysync Flanger
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Oxigenizer.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Quasar
-</td>
-<td>
-Ring Modulator
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Quasar.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Reed Romance
-</td>
-<td>
-Enhancer
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Reed_Romance.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-<td>
-Wah Ana.Clav
-</td>
-<td>
-Stereo Auto Wah
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Wah_Ana.Clav.ogg">
-</audio>
-</td>
-</tr>
-</tbody></table>
-</div>
-<h3 id="tocanch39" class="tvis"><code>Light Load</code> vs
-<code>High Load</code></h3>
-<p>There is a toggle for “Light Load” mode in the driver for SD-80 on
-all platforms, including Linux. What this option actually does is not
-documented. The only thing I know is that in the Linux driver this is
-implemented with a single <code>usb_set_interface</code> call.</p>
-<p>This setting doesn’t seem to affect the synth engine, only the way
-how midi data is transmitted / processed (because the drivers for UA-25
-has this option as well). Weirdly, Roland’s contemporary software
-synthesizers (HyperCanvas/TTS-1, SuperQuartet, Orchestral) also have
-this option.</p>
-<h3 id="tocanch40" class="tvis">Block Diagram</h3>
-<p>I made <a href="//filestorage.chrisoft.org/blog/data/SD-80/sd80blk_notext_o.svg">this
-vectorized version</a> of SD-80’s block diagram printed on its chassis
-when I was bored. You can also get a <a href="//filestorage.chrisoft.org/blog/data/SD-80/sd80blk_notext_o_nt.png">rasterized
-version</a>.</p>
-<h3 id="tocanch41" class="tvis">Other weird and interesting
-stuff</h3>
-<ul>
-<li>Very few (if any) preset patches uses the modulation matrix of the
-XV engine correctly. All of them has the modulation source set to
-‘OFF’.</li>
-<li>Only 5 of all preset patches used non-default tone structures:
-“Runaway Rez”, “Purple Spin”, “FM layer”, “FM Delight”, and “Xmod EP”.
-All of them are in the special sets. 3 of them are unmodified XV-5080
-patches.</li>
-<li>There doesn’t seem to be a way to set the system tempo of the
-SD-80/90 with MIDI messages, nor can the SD-80/90 sync its MIDI clock
-with a host, rendering the system clock mostly useless. Neither of these
-two is true for the XV-5080.</li>
-<li>Ever wondered why some patches have seemingly nonsensical waveforms
-selected in disabled tones <a id="n23" href="#note23" class="note">[23]</a>? Just look up those wave
-numbers in the waveform list of XV-5080 or the corresponding SRX board!
-<a id="n24" href="#note24" class="note">[24]</a> This, once again, suggests
-Roland used the XV-5080 as the development platform for the
-StudioCanvas.</li>
-<li>From Sound On Sound’s review of the SD-90: “To me, however, USB
-audio and the Sound Canvas sound set don’t add up to £799, and although
-I grew to like the SD90, I’m not sure how many people will find it
-attractive at this price point.” – ZUN, apparently.</li>
-</ul>
-<h2 id="tocanch42" class="tvis">Errata of the original post</h2>
-<ul>
-<li>The non-zero “modulation level” (which is actually “modulation
-depth”) on the SD-80 isn’t the value of the modulation wheel itself, but
-rather how deep a modulation wheel pushed all the way to the top will
-modulate the sound. SD-90 also has a default value of 10 for it (“Mod
-LFO Pitch Depth” in the address mapping). There’s no GM incompatibility
-here.</li>
-<li>Instruments sampled with vibrato are not from the XV-5080, they are
-from the SRX / SR-JV80 boards. Duh.</li>
-<li>XP6 <em>was</em> used in professional products. In fact, a handful
-of them (XV-3080, XV-88, JV-1010 and possibly more).</li>
-<li>Roland still makes romplers today. It’s a model from a decade ago.
-You’ll have to guess which model it is.</li>
-</ul>
-<h2 id="tocanch43" class="tvis">References</h2>
-<ul>
-<li><a href="https://www.dtech.lv/techarticles_roland_exp.html">Roland
-Wave Expansion Cards by Edward D-tech</a></li>
-<li><a href="http://www.donsolaris.com/?p=404">Don Solaris’ ultimate
-Roland JV/JD/XV FAQ</a></li>
-<li><a href="https://www.sweetwater.com/insync/cosm/">What is
-COSM?</a></li>
-<li><a href="https://www.soundonsound.com/reviews/roland-xv5080">SOS
-Review of XV-5080</a></li>
-<li><a href="https://www.soundonsound.com/reviews/edirol-sd90">SOS
-Review of SD-90</a></li>
-<li><a href="https://www.soundonsound.com/reviews/edirol-sd80">SOS
-Review of SD-80</a></li>
-<li><a href="https://www.soundonsound.com/reviews/roland-sc88">SOS
-Review of SC-88</a></li>
-</ul>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Judging by the way Roland
-utilized the SH-3 CPU in MC-909, which has a 16MHz external clock input
-and a 8x multiplier (128MHz internal clock), I would guess the CPU in
-SD-80 also works at 8x multiplier and therefore 96MHz
-internally.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Later the source of this DC bias is determined to
-be SD-80 itself, not the recording device. See the next
-section.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: オールインワン・モデルSD-90でご好評いただいた、新開発MIDI音源部を搭載したマルチティンバー音源が登場。
-As seen <a href="https://web.archive.org/web/20020604015208/http://www.roland.co.jp/products/dtm/SD-80.html">here</a>.
-I don’t actually know any Japanese and just pieced stuff together
-randomly. Sorry if I butchered your language.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: Munt isn’t strictly an emulation. It doesn’t emulate the CPU
-or actual circuitry of the MT-32. See below.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: without Roland losing their mind and releasing all
-internal documentation on the XV engine, or some absolute madlad
-spending 15 hours everyday on reverse engineering the thing for half a
-year, that is.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: SD-80 has 32MiB of compressed wave ROM, see the “list of
-integrated circuit chips on SD-80 main board” in the first section.
-Roland’s waveform compression scheme usually results in a ~50%
-compression ratio. Therefore the content is roughly equal to 64 MiB of
-uncompressed 16-bit PCM wave.<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: The “23C128” kind of gave it away –
-they are the <code>μPD23C128040ALGY</code> mask ROM chips from NEC,
-which is the exact same type of ROM used in XV-5080. Unlike the XV-5080
-though, the SD-80 makes use of both its J variant and K variant, while
-the XV-5080 only uses the J variant (these variants have symmetric pin
-configuration). <br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: Well, the
-Raspberry Pi isn’t really suitable for this task because it doesn’t have
-enough GPIO pins. But there’s an easy workaround for that.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: For readers who wonders what “mask” means in
-this context: you can treat a mask ROM as a huge array of tiny switches
-that can’t be turned on or off once manufactured. You can access the
-state of a group of switches by giving an address to its input pins. The
-mask is used as a template of the states of these switches during the
-manufacture process. This is electrical engineering amateur Chris trying
-to explain mask ROM in layman’s terms.<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: HyperCanvas (HQ-GM2) or Cakewalk TTS-1, which is a rebranding
-of the former; SuperQuartet (HQ-QT) and Orchestral (HQ-OR). A plugin
-called GrooveSynth (P5antom) bundled with several earlier Cakewalk
-products providing patches from the MC-303 Groovebox also uses this
-engine.<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: which is kind of weird considering
-Spectrasonics basically spun off from Roland<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: Also used in XP-80, see the errata
-section of its service manual.<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: HD64F7017F28, SH7017 in parts
-list<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 40 of the
-90 types will take up all three slots, most likely due to the reduced
-DSP power.<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: Support for multisamples also exist in Fantom
-S/S88, so this is more likely due to an updated system software rather
-than changes of the synth engine.<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: There is evidence that some of them
-are handled by software (SD-80 having one more LFO per part than the
-XV-5080). However it can also be using LFO blocks in the XV chip that is
-unused in the XV-5080.<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: This mapping is used for
-DT1/RQ1 system exclusive messages.<br></span><span class="TText"><a id="note18" href="#n18">[18]</a>: The first half is also true for earlier SC
-models (SC-55 &lt;-&gt; JV-880, SC-88 &lt;-&gt; JV-1080, SC-88Pro
-&lt;-&gt; JV-2080, SC-8850 &lt;-&gt; XV-3080). However the second half
-isn’t. Earlier SC models employs a GS-specific address map which looks
-nothing like their counterparts.<br></span><span class="TText"><a id="note19" href="#n19">[19]</a>: And also the last time, since neither the SD-20 nor the SD-50
-has such editability.<br></span><span class="TText"><a id="note20" href="#n20">[20]</a>: Apparently it’s from the
-SC-8850.<br></span><span class="TText"><a id="note21" href="#n21">[21]</a>: The
-multisample from Roland Cloud seem to have an extra sample in the
-highest register, which sounds like it’s processed with a low-pass
-filter with very low cut off frequency and makes it sound like garbage.
-This is also the case for the version included in the original SRX-09
-boards.<br></span><span class="TText"><a id="note22" href="#n22">[22]</a>: The owner’s manual
-of the SD-80 contains blatant lies. It says “It is not possible for the
-edited sounds to be saved in the internal memory of the SD-80” (which is
-directly copied from SD-90’s manual), and goes on to teach you how to
-save a user patch.<br></span><span class="TText"><a id="note23" href="#n23">[23]</a>: For example, nearly all acoustic
-bass patches have a disabled tone with wave number 249 “TenBlwSaxVib”
-selected, and the Fiddle 2 vib patch have a disabled tone with wave
-number 276 “Blow Pipe” selected.<br></span><span class="TText"><a id="note24" href="#n24">[24]</a>: Wave #249 in XV-5080 is UprightBs 2A, and Wave #276 in SRX-09
-is Fdl Pizz 1C (Fiddle Pizzicato).<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2021-06-03.html b/blog/post/2021-06-03.html
deleted file mode 100644
index 17e9ee2..0000000
--- a/blog/post/2021-06-03.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"No, I'm not dead")</title>
-<meta name="description" content="«No, I'm not dead» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">No, I'm not dead</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Quick status update</a></li><li><a class="toctarg" href="#tocanch1">What have I done</a></li><li><a class="toctarg" href="#tocanch2">When are the
-unfinished posts gonna be finished?</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2020-11-20.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2021-10-10.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">No, I'm not dead</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2021-06-03<br>#garbage</div>
- <hr><div id="article" class="TText"><article>
-<p>No I’m not dead. Sure this blog has been snubbed for quite a while
-now, and I just marked 5 old unfinished posts (from 2019 all the way to
-2021) as WIP so that they do not appear here. Just not feeling finishing
-them up (or writing anything) right now.</p>
-<h2 id="tocanch0" class="tvis">Quick status update</h2>
-<p>I’m doing random, stupid researches – as an average computer
-scientist wannabe. Also I’m learning Latin. Nondum possum loqui. (or
-write, for that matter – sudden code-switching)</p>
-<h2 id="tocanch1" class="tvis">What have I done</h2>
-<ul>
-<li><a href="https://github.com/chirs241097/jline4mcdsrv">My first
-Minecraft mod</a> (server only, and unrelated to gameplay – so probably
-uninteresting to anyone but server maintainers)</li>
-<li><a href="https://github.com/FluidSynth/fluidsynth/commits?author=chirs241097">A
-few fluidsynth commits</a></li>
-<li>Trying to extract stuff from my SD-80 (and failing
-no-so-spectacularly)</li>
-<li>Messing on a shitty block game server called 2b2t</li>
-<li>Writing a skyblock datapack, and playing it</li>
-<li>Random researches in various CS fields until I could settle
-somewhere firmly</li>
-<li>Falling into the functional programming cult</li>
-</ul>
-<h2 id="tocanch2" class="tvis">When are the
-unfinished posts gonna be finished?</h2>
-<p>I don’t know. I reckon that would be somewhere in
-&lt;redacted&gt;.</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2021-10-10.html b/blog/post/2021-10-10.html
deleted file mode 100644
index f18b75a..0000000
--- a/blog/post/2021-10-10.html
+++ /dev/null
@@ -1,972 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"EDIROL SD-20: the Crumbling of the Canvas?")</title>
-<meta name="description" content="«EDIROL SD-20: the Crumbling of the Canvas?» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">EDIROL SD-20: the Crumbling of the Canvas?</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/midi/">midi</a></li><li><a href="/blog/list/music/">music</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">The Encounter</a></li><li><a class="toctarg" href="#tocanch1">The Module</a></li><li><a class="toctarg" href="#tocanch2">The Setup</a></li><li><a class="toctarg" href="#tocanch3">The Sounds</a></li><li><a class="toctarg" href="#tocanch4">The Editability</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch5">The Quirks</a></li></ul></li><li><a class="toctarg" href="#tocanch6">The Manual</a></li><li><a class="toctarg" href="#tocanch7">The Insides</a></li><li><a class="toctarg" href="#tocanch8">The Secrets</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch9">Test mode</a></li><li><a class="toctarg" href="#tocanch10">unknown (likely firmware
-update) mode</a></li></ul></li><li><a class="toctarg" href="#tocanch11">The Conclusion</a></li><li><a class="toctarg" href="#tocanch12">The … Death?</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2021-06-03.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2022-07-23.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">EDIROL SD-20: the Crumbling of the Canvas?</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2021-10-10<br>#device-review #midi #music</div>
- <hr><div id="article" class="TText"><script>
-window.addEventListener("DOMContentLoaded",function(){
-const cl=document.querySelectorAll('div.collapse');
-let n=0;
-for(let x of cl)
-{
- const d=document.createElement('blockquote');
- const dd=x.cloneNode(true);
- x.parentNode.insertBefore(d,x);
- x.parentNode.removeChild(x);
- dd.id=`cc${n++}`;
- dd.style.display='none';
- const s=document.createElement('span');
- const b=document.createElement('b');
- const a=document.createElement('a');
- a.classList.add('ca');
- a.setAttribute('x',n-1);
- a.innerHTML='show';
- a.href='javascript:void(0)';
- if (dd.hasAttribute('caption'))
- b.innerHTML=dd.getAttribute('caption');
- else
- b.innerHTML=dd.getAttribute('data-caption');
- s.appendChild(b);
- s.appendChild(document.createTextNode(' ['));
- s.appendChild(a);
- s.appendChild(document.createTextNode(']'));
- d.appendChild(s);
- d.appendChild(dd);
- a.onclick=function()
- {
- let x='none';
- if(a.innerHTML=='show')
- {
- a.innerHTML='hide';
- x='block';
- }
- else
- {
- a.innerHTML='show'
- }
- document.getElementById(`cc${a.getAttribute('x')}`).style.display=x;
- }
-}
-const al=document.querySelectorAll('audio');
-n=0;
-for(let x of al)
-{
- x.id=`a${n++}`;
- x.onplay=function()
- {
- for(let x of al)
- {
- if(x.id!=this.id)x.pause();
- }
- }
-}
-});
-</script>
-<article>
-<p>I was intrigued by the insides of EDIROL’s SD-20. How on earth did
-Roland squeeze half of SD-80’s content in to a package that’s smaller
-than SD-80’s main board? Turns out it was by crippling the product…</p>
-<h2 id="tocanch0" class="tvis">The Encounter</h2>
-<p>I didn’t get my SD-20 for $50 as promised in my SD-80 article. The
-lowest price I found when I started watching for spares again was $75.
-It stayed there for over half a year. But just weeks before I got into
-the States, it was gone. All the rest of the listings asked for
-ridiculous prices ranging from $150 to $250. There’s no way I will pay
-over $100 for a SD-20. So I waited and waited…</p>
-<p>Until one day a new listing popped up. It was exactly $100 (with free
-shipping). “Well,” I thought, “this is it.” It accepts best offer, but
-nobody else offered to buy it until the listing ended. That’s the
-bizarre story of me getting my SD-20 at my max acceptable price…</p>
-<h2 id="tocanch1" class="tvis">The Module</h2>
-<p>I felt the cheapness inside instantly when I picked up the package:
-the SD-20 (with the included, somewhat dodgy aftermarket power adapter)
-weights absolutely nothing! It’s even lighter than the ThinkPad mouse I
-occasionally use. That doesn’t inspire much faith on its insides.</p>
-<p>The exterior of the module is made of plastic exclusively. No metal
-whatsoever (except on the connectors). SD-80’s metal front cover weights
-more than this entire thing…</p>
-<p>Flipping the module around reveals the dreaded three word phrase:
-“Made in China”. I wonder how many products that are never available in
-China at all are assembled in China.</p>
-<p>There’s only one button and one knob on the front panel of the SD-20.
-This is even more cut down than the SC-8820, which also has only one
-button and one knob, but the volume knob doubles as a preview
-button.</p>
-<p>Roland clearly made SD-20 the intended successor of SC-8820. Just
-look at the pictures in the manuals. They have nearly identical form
-factors. Let’s see how their sounds will compare.</p>
-<p>The choice of ports is kind of weird on the SD-20. It’s almost
-identical to the ports on the back of the SC-8820, except the audio
-input being replaced by a 3.5mm combo jack, addition of an optical
-S/PDIF TOSLINK port, and omission of the DIN MIDI out port. The serial
-port (mini DIN 8-pin) featured on all older SC models made its only
-reappearance in the SD series. Despite having an audio input port, the
-SD-20, just like its predecessors in the SC family, doesn’t have any
-digital audio interface functionality. The audio input is merely passed
-through to the analog output.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_module.jpg"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_module.jpg"></a> <br>SD-20 on top of
-the SD-80
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_bottom.jpg"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_bottom.jpg"></a> <br>Bottom with
-serial number censored
-</div>
-</td>
-</tr>
-</tbody></table>
-<h2 id="tocanch2" class="tvis">The Setup</h2>
-<p>Like the SD-80, Roland has discontinued driver support for the SD-20.
-The SD-20 will not even appear powered on if you choose to power the
-unit through USB bus power and have no driver installed. The same trick
-to make SD-80’s driver work on Windows 10 also works for the SD-20. You
-can search the Internet for the trick, or check out my first post on the
-SD-80 for the directions.</p>
-<p>The module works out of the box on Linux as long as you have proper
-kernel support (that is, you shouldn’t have to worry about this unless
-you build the kernel yourself). Required kernel modules are identical to
-those of the SD-80.</p>
-<p>The use of RCA jacks for analog audio output means that I don’t have
-the suitable cable to connect them to my audio interfaces at the moment.
-Fortunately I can still make digital recordings thanks to the inclusion
-of the S/PDIF output. The digital signal has a sample rate of 44100 Hz,
-the same as SD-80.</p>
-<h2 id="tocanch3" class="tvis">The Sounds</h2>
-<p>(Unless otherwise stated, all hardware demos in this section are
-recorded through the digital S/PDIF interface with EDIROL UA-25. All
-files are level normalized to -1 dB. Excerpts are not normalized after
-being extracted from the normalized original.)</p>
-<p>It’s the same StudioCanvas sound, but …</p>
-<p>With a few exceptions, preset instruments shared by the SD-20 and the
-SD-80 sound roughly identical. However, note the different mix levels on
-each model.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-SD-20
-</th>
-<th>
-SD-20 Converter
-</th>
-<th>
-SD-80
-</th>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD20.NCREX.OGG">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD20C.NCREX.OGG">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD80.NCREX.OGG">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="3">
-Excerpt from AMEDLEY.MID by Earl Gray Fowler from Voyetra Technologies,
-arranged for SD-80 (Native Mode)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>However significant differences show up as soon as you start tuning
-any non-GM1 controls (this includes new controls defined by GM2, e.g.&nbsp;cc
-74).</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-SD-20
-</th>
-<th>
-SD-20 Converter
-</th>
-<th>
-SD-80
-</th>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd20.ncrex.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd20c.ncrex.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd80.ncrex.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="3">
-Excerpt from th06_13.mid
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>Note the very different filter characteristics on the piano.</p>
-<p>What make this module nearly unusable is its 64 voices polyphony.
-Roland has been using this “voice” concept for polyphony since the very
-beginning of their PCM based synths. An instrument can have up to four
-“layers” (or “WGs”, wave generators in Roland’s terms) in these Roland
-PCM synthesizers. Each layer can consist of up to two channels (for
-stereo samples). Each one of these channels takes up a “voice” when
-played. The contemporary set and solo set of the StudioCanvas make heavy
-use of layering, as well as stereo samples. Some of these patches
-casually use up to 4 voices per note, with a (theoretical) maximum of 8.
-Unlike the SC-8850 vs SC-8820, when Roland stripped down the polyphony
-of the SD-20, they did not create simplified patches that use fewer
-voices like they did for the SC-8820. This immediately brings down the
-actual note polyphony of the SD-20 down to the same (or even lower)
-level of SC-55, and is no where near usable. Hence in terms of
-polyphony, the SD-20 is a downgrade compared to its predecessor SC-8820:
-Even you have Roland’s (then) latest studio sounds inside a tiny box,
-you have to take great precaution while using them, as they deplete your
-available polyphony <em>very</em> fast. Both tracks below demonstrate
-how 64 voices is nowhere close to enough for the SD-20.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-SD-20
-</th>
-<th>
-SD-20 Converter
-</th>
-<th>
-SD-80
-</th>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd20.ncr.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd20c.ncr.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/th06_13.sd80.ncr.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="3">
-“Crude” replica of Septette for a Dead Princess by ZUN. The original
-tuning was not replicated.
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>The SD-20 drops notes like crazy in the final section. The SD-20 MIDI
-Converter drops percussion notes instead.</p>
-<p>Unlike my SD-80, which sometimes messes up timing a bit and slows
-down when the load is high, the SD-20 simply cut off existing notes
-instantly without causing timing errors.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-SD-20
-</th>
-<th>
-SD-20 Converter
-</th>
-<th>
-SD-80
-</th>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/kog_09.sd20.ncr.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/kog_09.sd20c.ncr.ogg">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/kog_09.sd80.ncr.ogg">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="3">
-“Crude” replica of Enigmatic Doll from KiohGyoku by ZUN.
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>Besides the obvious fact that Loose Lips is missing, pay attention to
-the way the piano notes are cut short. Also note each model has its own
-filter response for the synth bass.</p>
-<p>Finally, a GM-ish track for comparing vanilla GM2 patches without any
-tweaking. Reed Romance and SH-2 Lead from the SD special set are used in
-this adaptation.</p>
-<div>
-<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center">
-<tbody><tr>
-<th>
-SD-20
-</th>
-<th>
-SD-20 Converter
-</th>
-<th>
-SD-80
-</th>
-</tr>
-<tr>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD20.NCR.OGG">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD20C.NCR.OGG">
-</audio>
-</td>
-<td>
-<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-20/AMEDLEY.SD80.NCR.OGG">
-</audio>
-</td>
-</tr>
-<tr>
-</tr><tr>
-<td colspan="3">
-AMEDLEY.MID by Earl Gray Fowler from Voyetra Technologies, arranged for
-SD-80 (Native Mode)
-</td>
-</tr>
-</tbody></table>
-</div>
-<p>Patches in SD-80’s special set are substituted with patches in the
-solo set when played with the SD-20 Converter. However hardware SD-20
-doesn’t do this substitution and doesn’t produce any sound if a patch
-from SD-80’s special set is selected, making the last two segments sound
-like a backing track on the SD-20. The choir in the ballad segment also
-has a notably shorter release on the hardware SD-20, possibly to
-mitigate the impact of a reduced polyphony.</p>
-<p>The SD-20 MIDI Converter is actually a reasonably good recreation of
-the SD-20 sounds. That is not saying so much, as the hardware of SD-20
-itself is simply not capable of recreate the StudioCanvas sounds very
-well if the MIDI sequence you feed to it has any complexity to it at
-all. Sometimes the output from converter is actually closer to the SD-80
-than the SD-20, especially if you take parameter response curves into
-consideration.</p>
-<h2 id="tocanch4" class="tvis">The Editability</h2>
-<p>It’s virtually nothing compared to the SD-80.</p>
-<p>The official SD-20 editor can only tune GM2 parameters. The available
-parameters are even fewer than the HyperCanvas (HQ-GM2) or TTS-1, mostly
-because the SD-20 doesn’t expose those parameters at all. As mentioned
-in my first post on the SD-80, the SD-20 editor is essentially the SD-90
-editor with the audio / AFX section removed.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_editor_main.png"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sd20_editor_main.png"></a> <br>SD-20
-editor. SD-90 GM2 editor on the right for comparison.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_editor_mixer.png"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sd20_editor_mixer.png"></a> <br>The mixer.
-It has a very similar layout to the main page of HyperCanvas / TTS-1.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_editor_synth.png"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sd20_editor_synth.png"></a> <br>The
-instrument editor. Only GM2 parameters are exposed.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_editor_instp.png"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sd20_editor_instp.png"></a> <br>The
-instrument picker. The instrument picker of the SD-90 GM2 editor is on
-the right.
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>The SD-80 editor doesn’t work on the SD-20. Nor does the XV-2020
-(which uses the same synth engine as the SD-20) editor. This makes the
-SD-20 far less editable than the SD-80. Forget about manually piecing
-together presets on the SD-20 to mimic the SD-80. I don’t even know how
-to change the samples used by a part on the SD-20 or is it even possible
-(the MIDI implementation doesn’t mention it).</p>
-<h3 id="tocanch5" class="tvis">The Quirks</h3>
-<p>The address mapping used by SD-20’s DT1 system exclusive messages is
-similar to that employed by GS-based Sound Canvas models. Therefore the
-SD-20 is still somewhat editable, but nowhere close to the level offered
-by the SD-80. GSAE (GS Advanced Editor) may work with the SD-20, but
-there could be major compatibility issues.</p>
-<p>The SD-20 still responds to GS NRPN messages in native and GM2 mode.
-SD-90 and SD-80 doesn’t have such behavior.</p>
-<p>SD-20 has a special NRPN for selecting sound sets (MSB:
-<code>0x41</code> LSB: <code>0x00</code>, send set # to value MSB) in
-GM2 mode. On the SD-90 and SD-80, only system exclusive messages can be
-used to select sound sets in GM2 mode. The manual mentioned this
-feature, however it doesn’t tell you which NRPN to use.</p>
-<h2 id="tocanch6" class="tvis">The Manual</h2>
-<p>This really doesn’t deserve its own paragraph, but here it is. Unless
-otherwise noted, this is referring to the English manual, not the
-Japanese version (which is somewhat better, but still horrible).</p>
-<p>The user manual of Roland products has been criticized for being
-convoluted, unclear and difficult to navigate through for a long time.
-The user manual for SD-20 is on a whole new level. It’s an absolute
-abomination.</p>
-<p>To be fair, it’s not like one can write a lot about a product that
-only have one button and one knob on the front panel. Someone in Roland
-must have been forced through this …</p>
-<p>Content wise, it’s an amalgamation of SD-80’s “owner’s manual” and
-“quick start guide”. This make the entire thing even more confusing. You
-can find traces of SD-80’s manual everywhere. Just take a look at the
-huge gaps in the instrument list and drum set list. That sad drum set
-table even has a missing border. There’s also the sentence that goes
-something like this “you can’t edit the sounds in GS mode using the
-front panel” <a id="n1" href="#note1" class="note">[1]</a>, which is copied
-straight from SD-80’s manual. Well, duh … you can’t do much editing with
-one button (which instantly erases all changed parameters when pressed)
-and one knob in any mode!</p>
-<p>Since the SD-20 can only be controlled through MIDI, there would be
-plenty of information on how to operate the module using MIDI messages
-in the manual, right? Here Roland took the worst move imaginable and
-included ZERO information on that in the English manual, not even the
-system exclusive messages to switch between sound generator modes (the
-Japanese manual does include this), nor does it include a list of
-parameters that can be controlled by MIDI. It’s almost like Roland
-doesn’t want you to learn about the parameters it has at all, unless you
-read the ultra technical MIDI implementation (which, to make it even
-better, only has a download for the Japanese version left on the
-official website. Screw everyone who can’t read Japanese I guess).</p>
-<h2 id="tocanch7" class="tvis">The Insides</h2>
-<p>I spent $100 on this thing mostly because I’m curious about its
-insides. After testing it out, I don’t have any hope that there’s a
-chance this thing could have an XV chip inside. Having no screwdrivers
-did not hinder me even a little bit. I used the scissors in my nail care
-kit to remove the only 4 screws in the bottom of the module, and one
-screw holding the board. The board came out without any resistance.</p>
-<div style="text-align:center;max-width:90%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_board_bottom.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_board_bottom.jpg"></a> <br>No ICs on
-the bottom side of the board. The scissor used to undo the screws is
-visible.
-</div>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<p><a href="//filestorage.chrisoft.org/blog/img/sd20_icmap.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_icmap.jpg"></a></p>
-</div>
-</td>
-<td>
-<div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#ff0000;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_cpu.jpg">CPU
-(SH7016)</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#ffa000;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_io.jpg">8bit MCU, I/O
-Controller</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#fff300;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_cpu.jpg">4 Mb System
-DRAM</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#00f300;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_cpu.jpg">16 Mb
-Flash</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#00ffff;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_io.jpg">RS-232
-driver</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#00a0ff;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_xp.jpg">Synth DSP
-(RA0C-003, “XP7”)</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#00c060;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_audioio.jpg">4Mb
-Effects DRAM</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#0000ff;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_wrom.jpg">2 * 128 Mb
-Wave ROM</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#a000ff;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_audioio.jpg">Digital
-Audio Modulator, S/PDIF interface</a></p>
-</div>
-<div>
-<p><x style="display:inline-block;width:0.9em;height:0.9em;border:solid 2px #888;background-color:#ff60ff;margin-right:0.5em;transform: translateY(0.2em);"></x>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_audioio.jpg">DAC
-(AK4382A)</a></p>
-</div>
-</div>
-Click any IC above for a detailed shot of components around that
-chip.<br>
-<a href="//filestorage.chrisoft.org/blog/img/sd20_board_top.jpg">Click
-here for the whole board shot without the IC markings.</a>
-</td>
-</tr>
-</tbody></table>
-<p>No, it isn’t an XV chip. It’s an XP7 (RA0C-003) chip. This chip is
-also used by the bottom-of-the-barrel model in the XV line-up, the
-XV-2020. This is likely the final iteration of the codename XP. The CPU
-is a SH7016, same as SC-8850 and SC-D70. Other major chips include two
-4Mbit EDO DRAM chips (one for CPU and one for XP7), a 16Mbit flash
-memory for system and parameters, and two 128Mbit Wave ROM chips. The
-part number and mask ID of the wave ROMs are different from those used
-by the SD-80 (either in the service manual or my particular module),
-suggesting they may contain different data.</p>
-<p>This is a major let down, sort of speak. The hardware is almost as
-capable as the XV-2020 (which has a larger CPU RAM and flash memory
-chip, 16Mbit and 32Mbit respectively). The XP7 is even capable of using
-40 types of classical JV/XP insertion effects (MFX), which is not used
-at all by the SD-20. Maybe the reduced system resources prevented Roland
-to squeeze the XV-level editability inside.</p>
-<p>The XP7 chip runs much hotter compared to the XV chip in the SD-80.
-It’s almost too hot to touch when the synthesizer load is high. The XP7
-chip in the SD-20 is clock much higher than any previous XP chips
-(33.868 MHz vs 24.576 MHz) to achieve the 44.1 kHz digital output, which
-is probably the cause of the excessive heat. For a more detailed
-technical assessment of the chip (and other Roland PCM synth chips), see
-<a href="https://chrisoft.org/blog/post/2020-11-20.html#tocanch16">my
-second post on SD-80</a>.</p>
-<p>There are 4 unpopulated switch headers on the board. Two are DPDT
-switches (SW4 and SW2), two seem to be buttons (SW3 and SW5). SW4 and
-SW5 seem to be electrically connected to the peripherals of the USB
-controller, SW2 and SW3 seem to be connected to the CPU. One side of SW4
-seems to short the USB power. SW2 resets the unit. SW3 puts the unit
-into an inoperable state (USB indicator turns off, SPIDF output shuts
-down, does not respond to any key press / MIDI input). SW2 is weird. One
-side of the upper pole shorts the power to ground. The same side of the
-lower pole puts the unit into another inoperable state (just like frozen
-in place). The other side doesn’t do anything consistent. Sometimes the
-upper pole acts like a perpetual sustain pedal if engaged (no notes are
-released even after letting the connection go). All of these switches
-behave the same in test mode and doesn’t seem to affect boot mode
-selection.</p>
-<div class="collapse" data-caption="Incomplete list of integrated circuit chips in the SD-20">
-<table>
-<colgroup>
-<col style="width: 9%">
-<col style="width: 30%">
-<col style="width: 59%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: center;">Label</th>
-<th style="text-align: center;">Engravement</th>
-<th style="text-align: center;">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: center;">IC 1</td>
-<td style="text-align: center;">2360 6061B JRC</td>
-<td style="text-align: center;">DC to DC converter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 2,5</td>
-<td style="text-align: center;">4570 652</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 3</td>
-<td style="text-align: center;">4556A G034F JRC</td>
-<td style="text-align: center;">OpAmp</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 4</td>
-<td style="text-align: center;">AKM 4382AT 4N647</td>
-<td style="text-align: center;">DAC</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 6</td>
-<td style="text-align: center;">ROHM BP5220A 0707S</td>
-<td style="text-align: center;">Regulator</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 7</td>
-<td style="text-align: center;">PC401L SOK V2</td>
-<td style="text-align: center;">Optocoupler</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 8,18,12,15</td>
-<td style="text-align: center;">VHC 245 G43</td>
-<td style="text-align: center;">74xx245 Transceiver / Buffer</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 9</td>
-<td style="text-align: center;">E 6</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 10,13</td>
-<td style="text-align: center;">0634H LVX4245 404495</td>
-<td style="text-align: center;">74xx245 Transceiver / Buffer</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 11</td>
-<td style="text-align: center;">Roland R03017389 HD6437016E29FV 6J1</td>
-<td style="text-align: center;">CPU (SH7016), SH2</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 14</td>
-<td style="text-align: center;">E ? (covered)</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 16</td>
-<td style="text-align: center;">H 4</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 17,25</td>
-<td style="text-align: center;">7WU04F 6X</td>
-<td style="text-align: center;">74xx04 Inverter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 19</td>
-<td style="text-align: center;">0625H VHC04 301303</td>
-<td style="text-align: center;">74xx04 Inverter</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 20</td>
-<td style="text-align: center;">953B 69B</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 21</td>
-<td style="text-align: center;">2933 G2 5L</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 22</td>
-<td style="text-align: center;">0626H TC9271FSG</td>
-<td style="text-align: center;">Digital Audio Modulator</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 23</td>
-<td style="text-align: center;">7W14F 6W</td>
-<td style="text-align: center;">74xx14 Schmitt-Trigger Inverter</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 24</td>
-<td style="text-align: center;">Roland R02677490 RA0C-003 JAPAN 0645EGI
-B0106ZAC</td>
-<td style="text-align: center;">ASIC DSP, “XP7” Synth Engine</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 26</td>
-<td style="text-align: center;">Roland R03010612 23C128BL832J
-0620K7002</td>
-<td style="text-align: center;">128 Mbit Mask ROM, Wave ROM</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 27</td>
-<td style="text-align: center;">Roland R03010623 23C128BL833K
-0620K7005</td>
-<td style="text-align: center;">128 Mbit Mask ROM, Wave ROM</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 28</td>
-<td style="text-align: center;">VHC T245A F5 51</td>
-<td style="text-align: center;">74xx245 Transceiver / Buffer</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 29</td>
-<td style="text-align: center;">EliteMT M11L416256SA- 35T SZV2C51GR
-0627</td>
-<td style="text-align: center;">EDO DRAM 4 Mbit, XP Effects RAM</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 30</td>
-<td style="text-align: center;">LH28F160BJE-BTL80 SHARP JAPAN 0631 5
-XN</td>
-<td style="text-align: center;">Flash Memory, 16 Mbit, System /
-Parameters</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 31</td>
-<td style="text-align: center;">ti 71CN1RKG4 75C1168</td>
-<td style="text-align: center;">RS-232 driver</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 32</td>
-<td style="text-align: center;">EliteMT M11L416256SA- 35T SZV2C51GR
-0627</td>
-<td style="text-align: center;">EDO DRAM 4 Mbit, System RAM</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 33</td>
-<td style="text-align: center;">Roland R03011089 138 620B100</td>
-<td style="text-align: center;">USB Controller, 8-bit MCU</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 34</td>
-<td style="text-align: center;">2008 680</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 35</td>
-<td style="text-align: center;">7W04F 6V</td>
-<td style="text-align: center;">74xx04 Inverter</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">IC 36</td>
-<td style="text-align: center;">E 1</td>
-<td style="text-align: center;">?</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">IC 37</td>
-<td style="text-align: center;">7W139F 61</td>
-<td style="text-align: center;">74xx139 Decoder</td>
-</tr>
-</tbody>
-</table>
-</div>
-<h2 id="tocanch8" class="tvis">The Secrets</h2>
-<p>It seems dead easy to enter the secret test mode on the SD-20 –
-there’s only one button. Hold the button and turn the power on, the USB
-indicator will light up. This is the boot mode selection prompt. Release
-the button. Now you have around 4 seconds to do one of the
-following:</p>
-<ul>
-<li>Pressing the button twice. The unit will boot into test mode.</li>
-<li>Pressing the button three times. The unit will boot into an unknown
-mode (likely firmware update).</li>
-</ul>
-<p>If your action matches none of these, the unit will boot into normal
-mode.</p>
-<p>This section will employ the following notation for the status of the
-indicator LEDs.</p>
-<pre><code> PWR USB OUTPUT o o o o
- o o MODE o o o o
- GM2 G X
- S G
-o=on
--=off
-*=faint</code></pre>
-<h3 id="tocanch9" class="tvis">Test mode</h3>
-<p>The test mode is far less interesting than that of the SD-80 because
-I don’t necessarily understand what does every indicators pattern
-mean.</p>
-<div class="collapse" data-caption="SD-20 Tests">
-<pre><code> test 1 (some sort of version?)
- PWR USB OUTPUT - - - o
- o - MODE - - - o
-
-Mode key pressed = next
-
- test 2 (some other sort of version? self test? serial port test? midi test?)
- PWR USB OUTPUT - - - o
- o o MODE - - o o
-
-Mode key pressed = next
-
- test 3 (same as 2)
- PWR USB OUTPUT - - - o
- - o MODE - - - -
-
-Mode key pressed = power LED flashes once, enters next test
-
- test 4 (LED test)
- LEDs lights up in sequence, one by one:
- output 1, 2, 3, 4, mode 1, 2, 3, 4 (GM2 L, GM2 R, GS, XG),
- all lights off, power, usb
-
-Mode key pressed = next
-
- test 5a (Sound test 1)
- PWR USB OUTPUT - o o -
- o - MODE - - o -
-Resets synthesizer to native mode.
-MIDI Channel 1 is set to play a sine waveform.
-Plays sine wave on both channels.
-
-Mode key pressed = next
-
- test 5b (Sound test 2)
- PWR USB OUTPUT o - - -
- o - MODE - - o -
-Plays sine wave on left channel.
-
-Mode key pressed = next
-
- test 5c (Sound test 3)
- PWR USB OUTPUT - - - o
- o - MODE - - o -
-Plays sine wave on right channel.
-
-Mode key pressed = next
-
- test 5d (Effects test)
- PWR USB OUTPUT o o o o
- o - MODE - - - o
-Resets synthesizer to native mode.
-MIDI Channel 1 is set to play a melodic tom sound.
-Plays a tom sound with loud reverb periodically.
-
-Mode key pressed = next
-
- test 6 (probably hardware check)
- PWR USB OUTPUT - - o -
- o - MODE - - - -
-
-Synthesizer resets again.
-The module no longer respond to any key presses from this point.</code></pre>
-</div>
-<h3 id="tocanch10" class="tvis">unknown (likely firmware
-update) mode</h3>
-<pre><code> PWR USB OUTPUT o o o o
- o - MODE o o o *
- Doesn't respond to any key presses. (long, short, multiple presses)
- Shows up as a USB device with normal ID (0582:0027).
- Does not function as synthesizer.</code></pre>
-<h2 id="tocanch11" class="tvis">The Conclusion</h2>
-<p>For a low, low price of $300 in 2002, you get 3 set of mediocre (with
-a few exceptions) GM2 patches. The sounds themselves are reasonably new
-and refreshing back then, but the higher average voice-per-note of the
-new StudioCanvas sounds make the SD-20 a less desirable choice than
-previous 64-polyphony models. The lack of advanced editing of any sort
-removes all possibility to explore custom sound design with the module.
-It’s a cheaply built unit that Roland asked for too much. Even for a
-Touhou music fanatic today, there are much cheaper ways to get access to
-the most sought-after instruments.</p>
-<h2 id="tocanch12" class="tvis">The … Death?</h2>
-<p>My SD-20 is in temporary coma right now, as it’s receiving a brain
-surgery …</p>
-<p>I will give updates in a separate post when it’s complete.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_wromds.jpg"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_wromds.jpg"></a> <br>I don’t know
-what I’m doing …
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/sd20_wromdmp.jpg"><img style="width: 48%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sd20_wromdmp.jpg"></a> <br>… or do I?
-</div>
-</td>
-</tr>
-</tbody></table>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Had to paraphrase this, because Roland prohibits
-reproducing contents from their manuals…<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2022-07-23.html b/blog/post/2022-07-23.html
deleted file mode 100644
index 7e10b7b..0000000
--- a/blog/post/2022-07-23.html
+++ /dev/null
@@ -1,503 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Framework Laptop: The next thing in the laptop world?")</title>
-<meta name="description" content="«Framework Laptop: The next thing in the laptop world?» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Framework Laptop: The next thing in the laptop world?</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/hands-on/">hands-on</a></li><li><a href="/blog/list/computer-repairing/">computer-repairing</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Rationale for a new laptop</a></li><li><a class="toctarg" href="#tocanch1">Why Framework?</a></li><li><a class="toctarg" href="#tocanch2">Important dates</a></li><li><a class="toctarg" href="#tocanch3">Configuration ordered</a></li><li><a class="toctarg" href="#tocanch4">Unboxing and setting up</a></li><li><a class="toctarg" href="#tocanch5">Performance</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch6">Processing power</a></li><li><a class="toctarg" href="#tocanch7">Graphics</a></li><li><a class="toctarg" href="#tocanch8">Thermal &amp; Emissions</a></li><li><a class="toctarg" href="#tocanch9">Others</a></li></ul></li><li><a class="toctarg" href="#tocanch10">Issues</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch11">Instabilities</a></li><li><a class="toctarg" href="#tocanch12">Port interference? …</a></li><li><a class="toctarg" href="#tocanch13">… and a general lack of ports</a></li><li><a class="toctarg" href="#tocanch14">Keyboard</a></li></ul></li><li><a class="toctarg" href="#tocanch15">Customer Service</a></li><li><a class="toctarg" href="#tocanch16">Y no upgrade to 12th gen?</a></li><li><a class="toctarg" href="#tocanch17">Any buyer’s remorse?</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2021-10-10.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2022-11-27.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Framework Laptop: The next thing in the laptop world?</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2022-07-23<br>#device-review #hands-on #computer-repairing</div>
- <hr><div id="article" class="TText"><article>
-<p>This review came at the very least 6 months too late.</p>
-<h2 id="tocanch0" class="tvis">Rationale for a new laptop</h2>
-<p>My old trusty first gen ThinkPad X1 yoga is showing its age: its
-U-tier ultra-low voltage processor is having trouble keeping up with the
-“modern web” that is constantly putting increasing pressure on the
-browser. Its integrated GPU can barely handle Minecraft at 60 fps, not
-to mention hundreds of virtual instruments I mess with are struggling
-with the processing power of this machine which wasn’t anything to brag
-about even when it first came out. It also took a lot of beatings, which
-are mainly from my own abuse, like <a href="https://chrisoft.org/blog/post/2017-01-09.html">this one</a>
-(warning: post is in Chinese), and is nearly falling apart. Considering
-I’m not well settled in this land that is alien to me, a full fledged
-desktop is hard to justify. So a new laptop it is.</p>
-<p>Additionally, unlike their 11th gen desktop processors, Intel’s 11th
-gen ultrabook offerings looks extremely compelling due to the new Xe
-integrated graphics introduced in this generation. Its (theoretical)
-performance is finally catching up with previous generation entry-level
-gaming graphics and current generation dedicated graphics found in slim
-laptops (1050 Ti and MX 350/450). Of course this is Intel and
-theoretical performance doesn’t mean much when their driver kind of
-sucks (severe performance drops and incompatibilities in some games).
-But it’s been rock solid for daily desktop usage (and Minecraft gaming
-because that’s literally the only game I play now). So I decided I’m
-just going to roll with it.</p>
-<h2 id="tocanch1" class="tvis">Why Framework?</h2>
-<p>I’m not a fan of laptops in the desktop replacement category, even I
-often use mine as one (in terms of the workload I run on it). They are
-just too chunky for liking.</p>
-<p>Trackpoint is essential for my survival when using a laptop. Instead
-with torturing myself with a huge touchpad, I’d rather stick with an old
-ThinkPad with no touchpad.</p>
-<p>Wait, don’t these two criteria alone restrict my choice to ThinkPads
-and a few other business laptops?</p>
-<p>Well, true… but when I laid my hands on a 9th generation X1 Carbon,
-it feels so different that I wasn’t even convinced that I was
-interacting with a ThinkPad anymore: especially the new keyboard with
-further reduced travel and the trackpoint buttons with virtually no
-tactile response. I decided to extend my radar to include models that
-don’t have a trackpoint, and use an external trackpoint keyboard with it
-if I get one of such models instead. Of course I was not ruling out
-ThinkPads, I was just allowing myself to get something other than a
-ThinkPad.</p>
-<p>In Feburary 2021 I saw a few news articles about this new “Framework”
-thing popping up. I find it interesting, but the modular expansion thing
-is just a gimmick, and I had suspicion that they are trying to ride the
-hype around right to repair – not to say that is wrong. Of course the
-hardware configuration is all fine and dandy, but I’m no buying
-something with a single selling point of expansion modules (which at the
-time of writing offers nothing but ports and features found on almost
-every single laptop on the market).</p>
-<p>When further details on the laptop surfaced, it started to get
-interesting. It was suggested that motherboard of future revisions can
-act as drop-in upgrades, and that the motherboard can be easily
-transformed into a small form-factor PC. Also display and keyboard
-assembly would be available for consumers to purchase online in case a
-replacement is necessary. This immediately bring this laptop to a level
-higher in my tier list, as it was becoming apparent that they are doing
-actual work.</p>
-<p>And then just a few weeks after I got into the States, my X1 yoga
-started experiencing random system-wide freezes once again. It was a
-good excuse for a new laptop, I thought. I checked Lenovo’s website but
-found out (pretty shockingly) that there was no discount active during
-that time, and all X1s were ludicrously priced. And then I placed my
-pre-order of the Framework Laptop. (Of course I ordered the DIY edition,
-saved me a decent chunk of funds!)</p>
-<h2 id="tocanch2" class="tvis">Important dates</h2>
-<ul>
-<li>Pre-order placed: 2021-09-16, Batch 4 (I swear this is totally
-unrelated to Linus Sebastian’s Framework investment video)</li>
-<li>Remaining balance charged: 2021-10-06</li>
-<li>Shipped: 2021-10-11</li>
-<li>Received: 2021-10-13 (probably leaks my rough geological location,
-but whatever)</li>
-</ul>
-<h2 id="tocanch3" class="tvis">Configuration ordered</h2>
-<ul>
-<li>DIY edition</li>
-<li>i7-1185G7</li>
-<li>64 GB RAM (2x Crucial CT32G4SFD832A shipped)</li>
-<li>No SSD (Bring your own). 1 TB Samsung 970 Pro installed.</li>
-<li>Intel AX210 wireless</li>
-<li>ANSI keyboard (US layout)</li>
-<li>2x USB Type-A expansion modules, 4x USB Type-C expansion modules,
-and 1x HDMI expansion module</li>
-<li>With power adapter</li>
-<li>Windows 10 Professional license</li>
-<li>$2153 before tax + $230 for the SSD</li>
-</ul>
-<h2 id="tocanch4" class="tvis">Unboxing and setting up</h2>
-<p>The laptop arrived in an inconspicuous shipping box, with symbols on
-it suggesting it contains stuff that may explode. Inside is the actual
-box with intriguing designs. There was only minimal amount of paperwork
-in the package.</p>
-<p>Despite being the DIY edition, the laptop comes almost completely
-pre-assembled. There’s <a href="https://frame.work/blog/the-evolution-of-the-framework-laptop-diy-edition">a
-blog post</a> on the official website explaining why that is the case.
-For this reason putting the thing together is incredibly straight
-forward. Within minutes I got the thing up and running (while booting
-into nothing of course).</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwbox.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwbox.jpg"></a> <br>The box
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwunbox.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwunbox.jpg"></a> <br>Unboxing
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwunbox2.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwunbox2.jpg"></a> <br>The box inside the
-box
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwpaperwork.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwpaperwork.jpg"></a> <br>Paperwork
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwinternals.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwinternals.jpg"></a> <br>Internals
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwassembled.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwassembled.jpg"></a> <br>Components in
-place
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>I decided to get Windows working first, even it hasn’t been my
-primary operating system for almost a decade. I prepared the first
-release of Windows 11 on a USB stick. But of course I decided to torture
-myself by not using the official installation media (it doesn’t matter
-anyway, as after the first attempt failed I tried the official
-installation media and it also failed for some reason, see the pictures
-below). Eventually I got the dism installation procedure working.</p>
-<p>Windows, being Windows, gave me a few silly errors when I was going
-through the OOBE. The official driver package is necessary to get all
-devices working.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<p><a href="//filestorage.chrisoft.org/blog/img/fwwindowsfail1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwwindowsfail1.jpg"></a></p>
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<p><a href="//filestorage.chrisoft.org/blog/img/fwwindowsfail2.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwwindowsfail2.jpg"></a></p>
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<p><a href="//filestorage.chrisoft.org/blog/img/fwwindowsfail3.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwwindowsfail3.jpg"></a></p>
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<p><a href="//filestorage.chrisoft.org/blog/img/fwwindowsfail4.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwwindowsfail4.jpg"></a></p>
-</div>
-</td>
-</tr>
-<tr>
-<td style="text-align:center;" colspan="2">
-1 hour of Windows failing
-</td>
-</tr>
-</tbody></table>
-<p>Next step will be my daily driving operating system. Of course it’s
-going to be Gentoo. What do you mean I’m insane?</p>
-<p>I used the Arch Linux ISO to bootstrap the installation. Now I made
-people from both distros hate me.</p>
-<p>After roughly 10 hours of CPU stress testing, a basic KDE plasma
-desktop was emerged. Not too bad for a slim laptop.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwarchtrigger.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwarchtrigger.jpg"></a> <br>Trigger
-warning
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwfirstfetch.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwfirstfetch.jpg"></a> <br>First neofetch
-</div>
-</td>
-</tr>
-</tbody></table>
-<h2 id="tocanch5" class="tvis">Performance</h2>
-<p>For a comprehensive performance review of the Framework laptop, you
-should be reading a more professional review, not this article. This
-section will focus on my personal use cases instead.</p>
-<h3 id="tocanch6" class="tvis">Processing power</h3>
-<p>My daily work, when it comes to the processing power intense parts,
-mainly involves running tests, building small-to-moderate sized
-projects, and performance profiling. Of course there is also routine
-rebuilds of huge applications due to my choice of distro. Plus some
-music mixing when I have the time for it.</p>
-<p>Thanks to the two additional cores and drastically improved clocks
-and IPC, the 11th gen i7 is more than 3 times more powerful than my old
-6th gen i7 for code compilation workloads, while having similar
-sustained power consumption under such workload (RAPL reports ~28 watts
-for both machines). As an example, Chromium 98.0.4710.4 took 883 minutes
-to emerge on my old i7, while on the Framework it took 273 minutes. The
-new processor is also able to handle music projects with over 100
-tracks, even with a decent performance headroom. In some other cases
-where the load is less than “all-cores”, it even had more than 4 times
-the performance of its older counterpart. To achieve an even better
-result the only option is to go AMD, which they hadn’t yet offer
-<a id="n1" href="#note1" class="note">[1]</a>. Overall the performance is
-a win for me.</p>
-<h3 id="tocanch7" class="tvis">Graphics</h3>
-<p>As mentioned above, the performance of the integrated Xe graphics is
-finally catching up with entry-level gaming GPUs within the last 2
-generations. While the Linux Mesa driver has been rock solid for desktop
-usage for quite some time, a lot more could be expected for gaming as
-online benchmark results show wild variations among different titles.
-Not to mention the erroneous behavior with certain aspects of legacy
-rendering APIs. Modern APIs behave a lot better in general.</p>
-<p>On real-world performance, for the first time in history, Minecraft
-with ultra shaders (BSL) can run (correctly!) on one of my laptops with
-a stable 60 fps. They wouldn’t even apply correctly on any of the older
-Intel GPUs I’ve used. With compromises, Microsoft Flight Simulator runs
-(with Valve’s Proton) at a stable-ish 30 fps with acceptable
-visuals.</p>
-<h3 id="tocanch8" class="tvis">Thermal &amp; Emissions</h3>
-<p>One word: bad.</p>
-<p>Not intolerable, but pretty bad.</p>
-<p>Maybe this is just the inescapable curse of all ultrabooks. But under
-heavy load the upper region of the keyboard is almost too hot to touch.
-To make things worse, the unibody-inspired design (where the gaps
-between keys is part of the top cover of the machine’s lower half,
-rather than part of the keyboard assembly) means the metal part that is
-between keys are at a even higher temperature. It’s not exactly
-enjoyable to type on the built-in keyboard when the processor is under
-heavy load.</p>
-<p>Under constant max load, the processor temperature maintains steadily
-at around 100 degrees Celcius. This is considerably higher than my X1
-yoga, which peaks at 95 degrees and drops to 85 degrees if the load is
-sustained.</p>
-<p>The fan noise is also way worse on the Framework. The fan curve is
-quite aggressive, ramping up rapidly when the processor temperature
-reaches 60 degrees, and maxes out at 80 degrees and beyond. The noise is
-audible even in a moderately noisy room. In contrast the fan in my X1
-ramps up much slower with more steps.</p>
-<p>Also there’s no manual undervolting on tigerlake-U platforms, likely
-as a mitigation to the plundervolt vulnerability.</p>
-<h3 id="tocanch9" class="tvis">Others</h3>
-<p>One of the last consumer MLC SSDs, Samsung 970 Pro, performs well in
-benchmarks.</p>
-<p>Keyboard is not great (see below). Trackpad is … meh. I don’t use
-that thing anyway.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwssdspeeds.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwssdspeeds.jpg"></a> <br>The best
-consumer grade PCIe 3.0 SSD in the west (asterisk)
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fwbadarrowklayout.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fwbadarrowklayout.jpg"></a> <br>Awkward
-arrow key layout
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>ACPI reports a 8-hour estimate on battery. Running on battery for 90
-minutes with light-to-moderate usage usually uses 20% of the capacity
-(screen always on, wireless on, typing with browser running in
-background), give or take, consistent with the estimation. I’ve yet to
-run the battery until it’s flat.</p>
-<p>The screen is fabulous. Way more vibrant than that LCD on my first
-generation X1 yoga. Not a professional graphic designer or in any other
-job that depends on an accurate display, so that’s just my personal
-opinion.</p>
-<p>Speaker is at least 10 times better than any ThinkPads I’ve ever
-used. Still not on par with an Apple laptop though.</p>
-<h2 id="tocanch10" class="tvis">Issues</h2>
-<h3 id="tocanch11" class="tvis">Instabilities</h3>
-<p>The system sometimes goes into a complete lockup, unresponsive to any
-inputs (except a forceful power off), when it has been left idle for an
-extended period. This never happens if the system is loaded. I could not
-obtain any useful diagnostics.</p>
-<p>With the release of BIOS version 3.09, which claims to resolve an
-“issue where the system will sometimes abnormally shutdown
-unexpectedly”, hopefully this such freezes will be gone. However I
-haven’t been running 3.09/3.10 for long enough to come to such
-conclusion.</p>
-<h3 id="tocanch12" class="tvis">Port interference? …</h3>
-<p>My ThinkPad wireless mouse suffers from stuttery movement when used
-on the Framework laptop. I’ve never had similar issues with this mouse
-before. This affects both operating systems installed. It doesn’t happen
-all the time, the chance of it happening is higher when the system is
-more heavily loaded.</p>
-<p>Occasionally, the ports on the right side stop working altogether,
-and the kernel message gets flooded with output like this:</p>
-<pre><code>[75512.894957] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
-[75517.158969] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
-[75521.422973] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
-[75525.686857] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
-[75529.950973] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?</code></pre>
-<p>On Windows, a notification “USB Device not recognized” is repeatedly
-displayed.</p>
-<p><a href="https://knowledgebase.frame.work/en_us/one-port-on-my-laptop-does-not-function-correctly-r1mqMnTet">This
-knowledge base article</a> is not relevant to my particular case, as my
-unit doesn’t have the problematic EMI shield.</p>
-<p>However I’ve noticed that this issue hasn’t reoccurred for a while.
-Perhaps It could be a BIOS issue that has been patched since.</p>
-<h3 id="tocanch13" class="tvis">… and a general lack of ports</h3>
-<p>But this one can’t be resolved by a BIOS patch. With the laptop
-plugged in, I have a whopping 3 USB ports for USB peripherals. It
-reduces to 2 when I use it with the trackpoint keyboard (which is pretty
-much all the time as I need a trackpoint to survive). This is nowhere
-close to enough – considering my old X1 also has 3 USB ports, not to
-mention it has dedicated ports for two external monitors.</p>
-<p>This is why I maintain my opinion that the expansion modules are
-currently a gimmick. There are no expansion cards that are unique enough
-to justify them – no WWAN card, no full size SD card reader, nor even an
-ethernet port (until very recently). Full size DisplayPort and storage
-expansion are cool, but they take up precious USB ports which means for
-my use case a dock is mandatory anyway if one of those cards is
-installed, nullifying the point of using these cards. I personally would
-favor a design with more fixed ports (which is already the case for the
-audio jack on the Framework), maybe 3 fixed USB Type-C ports on the left
-and 2 expansion card slots on the right. More useful expansion cards
-could also be a solution, like a mini hub with two USB Type-C ports.
-Even a proprietary port for connecting expansion cards to the computer
-(like two sets of USB 4 signals in a single port) is acceptable for me,
-to allow simpler designs of some dual function cards (e.g. storage card
-with a USB port); as these on board connectors aren’t meant to be used
-directly, users are always expected to plug an expansion card into
-them.</p>
-<h3 id="tocanch14" class="tvis">Keyboard</h3>
-<p>Like many people coming from a ThinkPad with 1.8 mm key travel, I
-find the keyboard of the Framework laptop lacking in tactile response.
-Even when compared to the keyboard on a 9th gen X1 Carbon which has the
-same 1.5 mm travel, Framework’s keyboard still loses by quite a large
-margin. Also the keyboard features the rather bad (in my opinion) layout
-of arrow keys.</p>
-<p>This is not to say the built-in keyboard is completely unusable as
-such. But I do still prefer using a ThinkPad keyboard, whenever it’s
-available to me.</p>
-<h2 id="tocanch15" class="tvis">Customer Service</h2>
-<p>This is where Framework really shines as a new player in the world of
-laptop manufacturers. I wouldn’t expect to get in touch directly with
-someone on their hardware team by simply reporting a firmware issue.</p>
-<p>So I decided to try out the latest development version of memtest86+.
-I built it myself, however it booted on all my machines but the
-Framework laptop. I reported the issue to memtest86+ developers, and
-came to the conclusion that it has something to do with the firmware. So
-I contacted support, and linked the github issue in the support request.
-The support team wrote back pretty fast (within 24 hours), and to my
-surprise, agreed to connect me with the hardware team directly. After a
-few back and forth between the hardware team and memtest86+ developers,
-it was determined that the cause is 8254 timer gating. Later I heard
-back from the person on the hardware team that the relevant setting will
-be added in BIOS version 3.09, which was released a few days ago. I
-installed the update and set 8254 timer gating to disabled, and
-memtest86+ worked as expected.</p>
-<p>That was my only, yet pretty bizarre experience of Framework’s
-customer service. I don’t think there could be any chance ever that I
-could get in touch with someone on the hardware team of any prominent
-laptop brands, but Framework can do it. Kudos to the Framework support
-team, and I hope they would be able to maintain this level of customer
-service when they get bigger.</p>
-<p>The full issue report on github is <a href="https://github.com/memtest86plus/memtest86plus/issues/40">here</a>.</p>
-<h2 id="tocanch16" class="tvis">Y no upgrade to 12th gen?</h2>
-<p>Intel’s 12th gen processors are winning grounds on the desktop front,
-but in the mobile sector they don’t look so hot. I’ve seen people with
-their shiny new 10th gen X1 Carbon complaining about poor battery life
-and even worse thermal performances. Also in order to upgrade without
-letting the original motherboard fall into disuse, I would either buy
-new RAM and SSD for it, or sell it somehow. Either option is hard to
-justify for me. That’s why I decided against upgrading for now. I may
-consider upgrading to 13th gen whenever that gets released.</p>
-<h2 id="tocanch17" class="tvis">Any buyer’s remorse?</h2>
-<p>Hate to break it for you, but I’m still not daily driving my
-Framework laptop – in fact, I’m typing this sentence on my old X1.</p>
-<p>But there’s no buyer’s remorse in general. Not being a daily driver
-doesn’t mean it has fallen out of favor. Instead, there are now clear
-roles assigned to these two laptops. I’ve moved all my music production
-setup and games to the Framework laptop. It also functions as a build
-server now (both for binary Gentoo packages, and as a networked build
-server). The X1 only functions as a typewriter and web browser
-nowadays.</p>
-<p>All current issues I had with this machine have either been resolved,
-or have existing workarounds. There is no trackpoint, no WWAN, no touch
-screen or digitizer, or connecting to 3 USB devices and an external
-monitor while charging compared to my old X1 – this is not a ThinkPad
-after all. But it does have third party board level repair with support
-from the company itself (they have started to provide full schematics to
-third party repair shops under NDA), easy access to parts, open source
-firmware, upgradable platform, and promise of a coreboot BIOS. These are
-the reasons I chose to support Framework as a company. So let my first
-purchase be a small contribution to them.</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: and I’m not going to choose even if there is one, due to
-previous traumatic experience I had with AMD platforms. Unreasonable I
-know, but it’s hard to overcome.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2022-11-27.html b/blog/post/2022-11-27.html
deleted file mode 100644
index e22f3d8..0000000
--- a/blog/post/2022-11-27.html
+++ /dev/null
@@ -1,661 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"(Not really) Musical Answers &amp; Rants")</title>
-<meta name="description" content="«(Not really) Musical Answers &amp; Rants» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-details {
- border: 1px solid #888;
- border-radius: 4px;
- margin: .5em .5em 0;
- padding: .5em;
-}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">(Not really) Musical Answers &amp; Rants</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/midi/">midi</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Backgrounds</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">Do you play any instruments?</a></li><li><a class="toctarg" href="#tocanch2">How good are you at them?</a></li><li><a class="toctarg" href="#tocanch3">Any knowledge in musical
-theory?</a></li><li><a class="toctarg" href="#tocanch4">Anything else interesting?</a></li></ul></li><li><a class="toctarg" href="#tocanch5">Backgrounds, Computer Music</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch6">How did you get into
-computer music?</a></li><li><a class="toctarg" href="#tocanch7">Any formal training on this
-stuff?</a></li><li><a class="toctarg" href="#tocanch8">How long have you been doing
-this?</a></li><li><a class="toctarg" href="#tocanch9">What
-specific skills do you have in computer music?</a></li><li><a class="toctarg" href="#tocanch10">What computer
-music projects have you worked on?</a></li><li><a class="toctarg" href="#tocanch11">Is any of this fun?</a></li><li><a class="toctarg" href="#tocanch12">How do you find joy in any
-of this?</a></li></ul></li><li><a class="toctarg" href="#tocanch13">Personal Preference</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch14">Favorite genre(s)?</a></li><li><a class="toctarg" href="#tocanch15">Favorite hardware
-synth in your collection?</a></li><li><a class="toctarg" href="#tocanch16">Favorite production software?</a></li><li><a class="toctarg" href="#tocanch17">Is it “GIF” or “JIF”?</a></li><li><a class="toctarg" href="#tocanch18">Genres that you listen to
-most often?</a></li></ul></li><li><a class="toctarg" href="#tocanch19">Touhou Music</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch20">The
-f**k is going on with your obsession with Touhou Music?</a></li><li><a class="toctarg" href="#tocanch21">Why don’t
-you transcribe something new from him then?</a></li></ul></li><li><a class="toctarg" href="#tocanch22">Production</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch23">Do you earn money from
-your production?</a></li><li><a class="toctarg" href="#tocanch24">So why even bother?</a></li><li><a class="toctarg" href="#tocanch25">Why
-are most of your stuff remixes? Why not more originals?</a></li><li><a class="toctarg" href="#tocanch26">Ever considered
-doing Touhou-style originals?</a></li><li><a class="toctarg" href="#tocanch27">Commission? Collabs?</a></li><li><a class="toctarg" href="#tocanch28">Production Gear?</a></li><li><a class="toctarg" href="#tocanch29">Why
-stick to hardware synths when software synths nowadays are so
-powerful?</a></li><li><a class="toctarg" href="#tocanch30">Since you don’t
-earn money from you production, …</a></li><li><a class="toctarg" href="#tocanch31">Can I use your music for X?</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2022-07-23.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2023-11-13.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">(Not really) Musical Answers &amp; Rants</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2022-11-27<br>#music #midi</div>
- <hr><div id="article" class="TText">
-<article>
-<p>I’ve got this <a href="https://chrisoft.org/libs/music/player">pretty
-large music collection</a> on my website and sometimes I get people
-asking why is it there. This post serves as an FAQ for all those
-questions that I can remember, plus some bonus rant.</p>
-<p>This post may be updated regularly to reflect any changes that might
-happen.</p>
-<h2 id="tocanch0" class="tvis">Backgrounds</h2>
-<h3 id="tocanch1" class="tvis">Do you play any instruments?</h3>
-<p>I use to play keyboard instruments, specifically arranger keyboard
-for 4 years, and the piano for 6 years. I started when I was 7.</p>
-<h3 id="tocanch2" class="tvis">How good are you at them?</h3>
-<p>I’ve got certifications from the CMA (China Musicians Association)
-for amateur musicians (colloquially, they are referred to as “考级” in
-China), level 5 for arranger keyboard, and level 9 for the piano
-<a id="n1" href="#note1" class="note">[1]</a>.</p>
-<p>Do note the wording I used in the answer to the previous question:
-“use to”. I haven’t practiced seriously for quite some time (5 years at
-least).</p>
-<p>I never spent a lot of time practicing, even I was actively learning
-to play. Longest uninterrupted practice session I had was probably 4
-hours (one tenth of Lingling’s typical practice session, ugh
-<a id="n2" href="#note2" class="note">[2]</a>). Clearly I was more into
-messing with computers back then (still very much the case right
-now).</p>
-<h3 id="tocanch3" class="tvis">Any knowledge in musical
-theory?</h3>
-<p>The only “formal” lesson I had on musical theory was given by my
-piano teacher, which didn’t touch on any of the advanced topics – just
-basic intervals, chords, and progression stuff.</p>
-<p>I’ve read books on music theory, namely</p>
-<ul>
-<li>“Introduction to Basic Music Theory” (probably the most widely used
-book on this topic in China, original title 《基本乐理通用教材》,
-authored by Li Chongguang (李重光). English title is my own
-translation and I have no idea what the official translation is.)</li>
-<li>“Music Theory for Computer Musicians”, Michael Hewitt</li>
-<li>“Composition for Computer Musicians”, Michael Hewitt</li>
-<li>“The Complete Idiots Guide to Music Theory”, Michael Miller (didn’t
-finish reading)</li>
-</ul>
-<p>But I can’t say I remembered a single thing from them.</p>
-<p>I also know a few things on acoustics and computing stuff related to
-music. See the “Backgrounds, computer music” section for more on
-this.</p>
-<h3 id="tocanch4" class="tvis">Anything else interesting?</h3>
-<p>I’m quite convinced that I have (at least partial) perfect pitch.</p>
-<p>Certain part inside my head reacts very strongly to notes of some
-pitches (A and C are the most notable ones, E, G, and for some reason F#
-are also up there). I can also sing any given notes on the chromatic
-scale pretty accurately.</p>
-<p>However, since I don’t react to all notes equally, and I’m quite sure
-“partial perfect pitch” is not really a thing, I don’t know what
-condition I <em>really</em> have. But if your instrument is out of tune
-(even if the whole thing is tuned consistently), I’ll be really
-upset.</p>
-<h2 id="tocanch5" class="tvis">Backgrounds, Computer Music</h2>
-<h3 id="tocanch6" class="tvis">How did you get into
-computer music?</h3>
-<p>‘Twas a typical calm day when I was browsing around in the System32
-folder (yes I was a fulltime Windows user once upon a time). I found a
-file named “town.mid” in the Media folder, and it looked like a music
-file to me. “How could a music file be like 20KB in size?” I wondered. I
-thought it would sound like crap (low bit-rate type of crappiness, not
-MSGS-type of crappiness), but I listened to it and turned out that
-wasn’t the case. Later that day I sent the file to my parents’ cell
-phones, and to my surprise they all sounded quite different, despite all
-the devices were playing the same melody. I was deeply intrigued by this
-format, and that planted a seed in my heart.</p>
-<p>I searched the 2000s web for information on this format,
-unfortunately being a noob as I was back then, I was only able to find
-out it was a format called “MIDI”, but not any application that’s
-capable of reading or producing them. I had to set it aside.</p>
-<p>A few years later, in early 2009, when I was randomly going through
-tech magazine my parents had piled up at home, I found a software
-catalogue from the 90s. One title in the ToC read “Make your music
-production dreams come true – Cakewalk Music Software”. It didn’t quite
-caught my attention just yet, but when I got to the content, they
-mentioned its MIDI capabilities. I realized this could be the thing I’m
-looking for. And very fortunately for me, the CD that came with the
-catalogue included a trail version of Cakewalk Pro Audio 5.0. There
-began my journey.</p>
-<p>But wait, there was, in fact, a second path to this. There was a
-video (<a href="https://www.youtube.com/watch?v=dsU3B0W3TMs">Music using
-ONLY sounds from Windows XP and 98!</a>) that went viral in China in
-2009. The look of the software shown in the video got my attention, and
-that brought me into the world of tracker modules (and later
-demoscenes).</p>
-<p>There was also the whole “black midi” shenanigans that I got myself
-into. However I think that should be considered “deep lore” and not
-really appropriate to mention here. So let’s just leave this section as
-is.</p>
-<h3 id="tocanch7" class="tvis">Any formal training on this
-stuff?</h3>
-<p>Nope. I taught myself everything, just like most other stuff I know
-in computing. One major difference is that I didn’t receive any formal
-training after I’ve taught myself this topic, unlike some other topics
-in computer science. The thing is it’s quite difficult to enroll courses
-from the music department while I’m in a frankly completely unrelated
-major.</p>
-<h3 id="tocanch8" class="tvis">How long have you been doing
-this?</h3>
-<p>I’ve been messing with MIDI since 2009, doing transcription since
-2011. However until 2014 I didn’t bother learning any DAWs with virtual
-instruments support (I was only using Cakewalk Pro Audio 9.0 and a
-certain Japanese application called 音楽ツクールDX back then). For this
-reason everything I made until 2014 was just a bunch of MIDI files. I’ve
-been collecting (mostly pirated) software synths since then. However
-since 2017 I started replacing pirated software I used in production,
-and nowadays I’m only using software and sound libraries the I have
-legal rights to use in production, except the Unobtainium legacy
-products.</p>
-<p>I started programming music-related stuff in 2010, it was a random
-silly sequencer for PC speaker. And I’ve been doing it ever since.</p>
-<h3 id="tocanch9" class="tvis">What
-specific skills do you have in computer music?</h3>
-<p>(This list includes both music production related stuff and
-programming stuff)</p>
-<ul>
-<li>Using a DAW (mostly Cakewalk of course)</li>
-<li>Make random patches for synthesizers</li>
-<li>Basic mixing and mastering</li>
-<li>MIDI and tracker module data processing (I/O, data extraction)</li>
-<li>Basic DSP knowledge, computer assisted music production</li>
-<li>High-level interfacing with musical hardware</li>
-</ul>
-<h3 id="tocanch10" class="tvis">What computer
-music projects have you worked on?</h3>
-<p>(This list also includes both music production related stuff and
-programming stuff)</p>
-<ul>
-<li>Production: see <a href="https://chrisoft.org/libs/music/player">Music Library</a></li>
-<li>Experimental GPU-powered virtual-analog synth (private project):
-CUDA only, pretty basic function wise, nothing special really.</li>
-<li><a href="https://cgit.chrisoft.org/QMidiPlayer.git/">QMidiPlayer</a>: A
-feature-rick MIDI player.</li>
-<li>Modsearch (private project): Module indexing and searching
-tool.</li>
-<li><a href="https://cgit.chrisoft.org/fifteen-thieves.git/">Fifteen
-Thieves</a>: Tools for interfacing with Roland synthesizers.</li>
-</ul>
-<h3 id="tocanch11" class="tvis">Is any of this fun?</h3>
-<p>Yes.</p>
-<h3 id="tocanch12" class="tvis">How do you find joy in any
-of this?</h3>
-<p>I don’t know.</p>
-<h2 id="tocanch13" class="tvis">Personal Preference</h2>
-<h3 id="tocanch14" class="tvis">Favorite genre(s)?</h3>
-<p>Nothing specific really. However I can tell you about the genre I
-loath the most: it’s … (drum rolls) … rap.</p>
-<p>The thing that I dislike about rap is its excessive use of autotune
-and highly repetitive trap-style drum patterns. I actually kind of
-admire some rapper’s skillful rapping, but spoken words don’t really
-count as music do they?</p>
-<h3 id="tocanch15" class="tvis">Favorite hardware
-synth in your collection?</h3>
-<p>Again, nothing specific really. But I do know it’s not the Yamaha.
-It’s never the Yamaha.</p>
-<h3 id="tocanch16" class="tvis">Favorite production software?</h3>
-<p>Considering I’ve pretty much used nothing but Cakewalk products, I
-can give you an actual answer to this one – Cakewalk of course.</p>
-<p>I do also find OpenMPT interesting, however I haven’t made anything
-with it really.</p>
-<p>Funny trivia: when Gibson announced they were ceasing all development
-of Cakewalk products, I wrote <a href="https://chrisoft.org/blog/post/2017-11-25.html">this rant</a>.
-Soon after that rant was posted, a couple of vendors annouced discounted
-pricing for former SONAR users, one of which was Steinberg (their
-so-called “competitive crossgrade”). So I got my copy of Cubase 9 Pro at
-50% off (but they did not provide an e-licenser with the purchase, which
-was still bundled with a normal purchase back then, which was frankly
-dumb). But … before I could get used to the workflow of Cubase, Cakewalk
-was resurrected by Bandlab.</p>
-<h3 id="tocanch17" class="tvis">Is it “GIF” or “JIF”?</h3>
-<p>Of course it’s “Graphics Interchange Format”! Wait, why is this
-here…</p>
-<h3 id="tocanch18" class="tvis">Genres that you listen to
-most often?</h3>
-<p>Okay you got me. I’ll just warn you that the list could be quite
-shocking to some people…</p>
-<p>Recent notable trend for me is folk music. The rest includes
-classical, heavy metal, and ambient music. Also sometimes I randomly
-browse through various module hosting websites where the vast majority
-of the uploads are just pure turds, but occasionally I come across
-hidden gems in those giant turd piles.</p>
-<p>Also don’t forget about the dreaded: Touhou music…</p>
-<h2 id="tocanch19" class="tvis">Touhou Music</h2>
-<h3 id="tocanch20" class="tvis">The
-f**k is going on with your obsession with Touhou Music?</h3>
-<p>… literally 18 of 21 tabs in your music library contain only Touhou
-Music!</p>
-<p>Well, this has to start with how I got myself into the thing known as
-“Touhou Project”. (There should’ve been an entire post written on this,
-but I’m too lazy, so let me just recap here.)</p>
-<p>A friend of mine was playing <em>Imperishable Night</em> one day in
-2009. I sat there and watched him play for a while. He paused the game
-and asked, “Interested?”, to which I replied “eh…” (Do note that I’ve
-never been interested in Japanese anime or manga before, or since, for
-that matter. But I did play similar shoot-’em-up before.) He offered me
-a copy anyway. Not really interested in the game itself, I just left it
-sitting in my hard drive for quite a while.</p>
-<p>Nothing really happened until some day in 2010 when I was sorting
-through files on my disk. I found the game and noted that the biggest
-file inside is called <code>thbgm.dat</code>. “Must have a lot of
-tracks,” I thought. And I went ahead and chose the most logical next
-step – not to play the game (because I did notice the game itself was
-quite intense when I watched my friend play), but to find some Touhou
-track player and listen to the music. Any my first impression was
-something like “holy f****** sh** this is horrible”, which was
-reasonable now that I thought about it, considering ZUN’s “unique” style
-(which I’ll touch on later) and his unsalvageable mixing in those early
-works.</p>
-<p>After that I just occasionally opened up the player, listened to
-random tracks and ended up quickly closing it off. Unbeknownst to me,
-ZUN’s “magic” worked on me and finally in 2012 I decided to play the
-game. Unfortunately I made another critical error to play his very first
-release on Windows instead (<em>Embodiment of Scarlet Devil</em>)
-because I had the stupid assumption that the first one could be
-easier.</p>
-<p>Of course I couldn’t be more wrong about that assumption. It took me
-over a year of playing off and on to clear normal difficulty, during
-which I listened to the tracks hundreds of times. And my comment on the
-music of that release was “interesting ideas but somehow made to sound
-‘thit’ (a blend of thick and sh*t, probably because I realized he had
-overdone the effects)“.</p>
-<p>Being an ultra nerd myself, I extracted the game files and found the
-MIDI files inside. And that’s where everything went downhill.</p>
-<p>The magical aspect of ZUN’s music is that it probably sounds quite
-twisted and weird on first listen. However after a few loops the charm
-in the track becomes apparent. Certain easily memorizable riffs could
-also played a part. But I did notice that the most highly acclaimed
-tracks from him (e.g.&nbsp;上海紅茶館 ~ Chinese Tea and 神々が恋した幻想郷)
-usually have less of the twisted part, or none at all.</p>
-<h3 id="tocanch21" class="tvis">Why don’t
-you transcribe something new from him then?</h3>
-<p>Nice observation. I haven’t transcribed anything beyond <em>Wily
-Beast and Weakest Creature</em> because I found ZUN’s magic has stopped
-working on me – I have listened to the tracks enough times that should
-have already worked if it’s some earlier works of him, but up till now I
-find most of the newer tracks just plain weird and uninteresting. (There
-are a couple of ones that clears my bar, but that makes it like the
-modarchive situation – picking out the gems in a pile of turds. And if I
-have to go through the turds, I’d rather look for gems from a more
-diverse set of composers).</p>
-<p>It’s not just me either – I’ve heard from other people who commented
-that ZUN’s composition went downhill since <em>Hidden Star in Four
-Seasons</em>. I have to agree with them.</p>
-<h2 id="tocanch22" class="tvis">Production</h2>
-<h3 id="tocanch23" class="tvis">Do you earn money from
-your production?</h3>
-<p>No.&nbsp;I’ve earned a grand total of $0/¥0 from my production so far. But
-I did earn a few complimentary remarks (either genuine or satirical, I
-don’t know) from my friends.</p>
-<h3 id="tocanch24" class="tvis">So why even bother?</h3>
-<p>It’s fun. I’ve explained it in a previous question (not really). But
-I find the process therapeutic and I really enjoy tweaking the knobs (no
-pun intended I swear).</p>
-<h3 id="tocanch25" class="tvis">Why
-are most of your stuff remixes? Why not more originals?</h3>
-<p>Because remixes are much lower effort, and no creativity
-required.</p>
-<p>I’m not the type of person oozing creativity. I don’t even think the
-vast majority of my stuff should be called “remix” (despite I do name
-the files that way) – I refer to them as “reinstrumentation” privately –
-no changes to the music itself whatsoever, only with different mixing
-and instruments.</p>
-<p>When I do create originals, I want to be serious about it. I don’t
-want them to sound crappy of course (just like most other people I’d
-imagine). However it’s fairly hard for me to get inspired. The most
-frequent way I get inspired is a random riff just gotten stuck in my
-head for a while, usually after a solid 10 hours of rest or a shower.
-Unfortunately for me, there are two things that prevent me from
-transforming these ideas into productions: <strong>a)</strong> The only
-keyboard that I have right now is a 32-key controller that had to be
-stowed in a drawer due to space constraints, and I’m usually too lazy to
-bust it out. Attempts of concretizing the ideas to handwritten notations
-mostly failed miserably. So for now the only way for me to solidify an
-idea is to let it stuck in there for long enough that I can memorize it.
-<strong>b)</strong> Recently I’ve discovered a tendency that melodies
-that get stuck in my head could just be me regurgitating stuff that I’ve
-listened to but could not name (the most recent example is an “original”
-I did a year ago called “Spoolka” which turns out to be just a rendition
-of Säkkijärven polkka). For these reasons I’m currently refraining from
-doing OCs unless I’m absolutely sure it’s really an original.</p>
-<p>However there are indeed a few unfinished originals sitting in my
-hard disk, snubbed to death…</p>
-<h3 id="tocanch26" class="tvis">Ever considered
-doing Touhou-style originals?</h3>
-<p>No, not really. There are already plenty of creative people in this
-space.</p>
-<p>In fact I did make attempts to create Touhou-style originals quite a
-while ago, but the results were deemed “too formulaic and mediocre” by
-myself and never got released.</p>
-<h3 id="tocanch27" class="tvis">Commission? Collabs?</h3>
-<p>Commission? No.&nbsp;I won’t further burden myself with obligated content
-creation.</p>
-<p>Collabs? Maybe. Although I’m not sure who’s ever willing to do it
-with me – but I’m pretty damn sure there will not be any Touhou-style
-collab from me any time soon.</p>
-<p>I’d be happy to write music-related code for you though. Contact me
-if you think I can do something for you in that regard.</p>
-<h3 id="tocanch28" class="tvis">Production Gear?</h3>
-<p>Current main production computer:</p>
-<ul>
-<li>Framework Laptop</li>
-<li>First generation, 4th batch</li>
-<li>i7-1185G7</li>
-<li>64 GB DDR4-3200 RAM</li>
-<li>1 TB SSD</li>
-</ul>
-<p>(Click on the following categories to expand them)</p>
-<details>
-<summary>
-Production software
-</summary>
-<ul>
-<li>Cakewalk by Bandlab</li>
-<li>Cubase Pro 12</li>
-<li>SONAR Platinum</li>
-<li>Cakewalk Pro Audio 9.0</li>
-<li>OpenMPT</li>
-</ul>
-</details>
-<details>
-<summary>
-Audio Interfaces
-</summary>
-<ul>
-<li>Focusrite Scarlett Solo 2nd Generation</li>
-<li>Terratec Aureon 7.1 USB</li>
-<li>Edirol UA-25</li>
-<li>Roland UA-101 * 2 (one Edirol-branded, one Cakewalk-branded)</li>
-<li>Edirol SD-90</li>
-</ul>
-</details>
-<details>
-<summary>
-Hardware synths
-</summary>
-<ul>
-<li>Edirol SD-80</li>
-<li>Edirol SD-20</li>
-<li>Roland XV-5080
-<ul>
-<li>SR-JV80-17 “Country Collection”</li>
-<li>SR-JV80-09 “Session”</li>
-<li>SR-JV80-08 “Keyboards of ’60s &amp; ’70s”</li>
-<li>SR-JV80-07 “Super Sound Set”</li>
-<li>SRX-09 “World Collection”</li>
-<li>SRX-07 “Ultimate Keys”</li>
-<li>SRX-06 “Complete Orchestra”</li>
-<li>SRX-03 “Studio SRX”</li>
-</ul></li>
-<li>Roland Fantom-XR
-<ul>
-<li>SRX-08 “Platinum Trax”</li>
-<li>SRX-07 “Ultimate Keys” (Yes I have two physical SRX-07 boards)</li>
-<li>SRX-05 “Supreme Dance”</li>
-<li>SRX-04 “Symphonique Strings”</li>
-<li>SRX-02 “Concert Piano”</li>
-<li>SRX-01 “Dynamic Drum Kits”</li>
-</ul></li>
-<li>Edirol SD-90</li>
-<li>Roland SC-8850</li>
-<li>Yamaha Motif Rack ES
-<ul>
-<li>PLG-150 DX “Advanced DX/TX Plug-in Board”</li>
-</ul></li>
-</ul>
-</details>
-<details>
-<summary>
-Keyboards / Controllers
-</summary>
-<ul>
-<li>Yamaha PSR-275</li>
-<li>Edirol PCR-300</li>
-</ul>
-</details>
-<details>
-<summary>
-Software synths
-</summary>
-<ul>
-<li>Steinberg Absolute 5
-<ul>
-<li>HALion 6</li>
-<li>HALion Sonic 3
-<ul>
-<li>Skylab</li>
-<li>Anima</li>
-<li>Voltage</li>
-<li>Auron</li>
-<li>Triebwerk</li>
-<li>Hypnotic Dance</li>
-<li>Trium</li>
-<li>HALiotron</li>
-<li>Hot Brass</li>
-<li>Model C</li>
-<li>Eagle</li>
-<li>Raven</li>
-<li>Amped Elektra</li>
-<li>World Percussion</li>
-<li>B-Box</li>
-<li>Electric Bass</li>
-<li>World Instruments</li>
-<li>Dark Planet</li>
-<li>Studio Strings</li>
-<li>HALion Symphonic Orchestra</li>
-<li>Olympus Choir Micro</li>
-</ul></li>
-<li>Groove Agent 5
-<ul>
-<li>Future Past Perfect</li>
-<li>Prime Cuts</li>
-<li>Rock Essentials</li>
-</ul></li>
-<li>Backbone</li>
-<li>The Grand 3</li>
-<li>Retrologue 2
-<ul>
-<li>Sounds of Soul</li>
-</ul></li>
-<li>Padshop 2
-<ul>
-<li>Polarities</li>
-<li>Granular Guitars</li>
-</ul></li>
-</ul></li>
-<li>HALion Expansions
-<ul>
-<li>4Knob PopD</li>
-<li>Iconica Opus</li>
-<li>Cinematique Instruments Lute</li>
-<li>Realsamples German Harpsichord 1738</li>
-<li>e-instruments Vibrant</li>
-<li>Cinematique Instruments Alto Glockenspiel</li>
-<li>Olympus Choir Elements</li>
-</ul></li>
-<li>Groove Agent Expansions
-<ul>
-<li>ElekDrums</li>
-</ul></li>
-<li>Trilian</li>
-<li>Omnisphere 2</li>
-<li>Roland Cloud
-<ul>
-<li>TR-909</li>
-<li>XV-5080</li>
-<li>SRX World</li>
-<li>SRX Studio</li>
-<li>Zenology</li>
-<li>SoundCanvas VA</li>
-</ul></li>
-<li>Groove Agent 2</li>
-<li>Groove Agent ONE</li>
-<li>HALion 3</li>
-<li>LM4 Mark II</li>
-<li>Edirol Super Quartet</li>
-<li>Edirol Orchestral</li>
-<li>Addictive Drums 2</li>
-<li>Addictive Keys</li>
-<li>EZDrummer 3
-<ul>
-<li>Pop/Rock EZX</li>
-<li>Electronic EZX</li>
-</ul></li>
-<li>Kontakt 5
-<ul>
-<li>Vir Electri6ity</li>
-</ul></li>
-<li>Music Lab Real Guitar</li>
-<li>Music Lab Real LPC</li>
-<li>Music Lab Real Strat</li>
-<li>Virtual Guitarist</li>
-<li>Virtual Guitarist Electric Edition</li>
-<li>Z3TA+</li>
-<li>Z3TA+ 2</li>
-<li>DropZone</li>
-<li>SFZ</li>
-<li>True Piano</li>
-<li>Square I</li>
-<li>Triangle II</li>
-<li>Pentagon I</li>
-<li>Ultra Analog Session 2</li>
-<li>Lounge Lizard Session</li>
-<li>Session Drummer 2</li>
-<li>Session Drummer 3</li>
-<li>Strum Acoustic Session</li>
-<li>SI Studio Instruments</li>
-<li>P5antom / Roland GrooveSynth</li>
-<li>Roland TTS-1</li>
-</ul>
-</details>
-<div style="text-align:center;max-width:90%;">
-<a href="//filestorage.chrisoft.org/blog/img/rack_220924.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_rack_220924.jpg"></a> <br>My synth rack
-as of September 2022
-</div>
-<h3 id="tocanch29" class="tvis">Why
-stick to hardware synths when software synths nowadays are so
-powerful?</h3>
-<p>There are pros and cons to this.</p>
-<p>Pros:</p>
-<ul>
-<li>Unique architecture allows for exclusive sounds and sound shaping
-techniques</li>
-<li>Unique sound libraries that are not found elsewhere</li>
-<li>While software recreations of certain hardware synths are decently
-accurate, authenticity is still often sacrificed</li>
-<li>Offload sound generation from the production computer</li>
-</ul>
-<p>Cons:</p>
-<ul>
-<li>Sometimes recording hardware synths can be a pain in the a**</li>
-<li>They often have seemingly arbitrary limitations on the synth engine
-that are no longer an issue for modern software synths</li>
-<li>Aging hardware synth can become a liability, or even fire hazard
-<a id="n3" href="#note3" class="note">[3]</a></li>
-</ul>
-<p>Of course there’s the sunk costs fallacy – why stop using them since
-the money is already spent?</p>
-<h3 id="tocanch30" class="tvis">Since you don’t
-earn money from you production, …</h3>
-<p>where’s the money that fuels your gear addiction from?</p>
-<p>I have a decently stable income that covers all my daily expenses,
-plus some extra that can go straight into buying more crap.</p>
-<h3 id="tocanch31" class="tvis">Can I use your music for X?</h3>
-<p>Maybe.</p>
-<ul>
-<li>Unless otherwise noted, everything in the “Original” folder are
-released under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC BY-SA
-4.0 license</a>. MIDI data and project files will be available on
-request.</li>
-<li>Unless otherwise noted, everything else in my music library are
-released under the same terms as their originals. This means:
-<ul>
-<li>For my remixes of original Touhou sound tracks, you can use them in
-accordance to the <a href="https://touhou-project.news/guideline/">Touhou Project guidelines
-on derivative works</a>.</li>
-<li>For other works, it is suggested to refer to their original license
-(would be inside its notes if there is one), or contact their original
-author before using them.</li>
-</ul></li>
-</ul>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: The max level one can obtain is level 10 for both
-instruments<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: TwoSetViolin reference<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: <a href="https://forums.rolandclan.com/viewtopic.php?t=56539">cough
-cough</a>, Roland SR-JV80 boards, <a href="https://gearspace.com/board/electronic-music-instruments-and-electronic-music-production/1112520-exploding-jv2080-expansion-card.html">cough
-cough</a><br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2023-11-13.html b/blog/post/2023-11-13.html
deleted file mode 100644
index 313d0aa..0000000
--- a/blog/post/2023-11-13.html
+++ /dev/null
@@ -1,471 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Framework Laptop: Repasting &amp; Two Year Report")</title>
-<meta name="description" content="«Framework Laptop: Repasting &amp; Two Year Report» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Framework Laptop: Repasting &amp; Two Year Report</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/computer-repairing/">computer-repairing</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">“Repasting” with PTM 7950</a></li><li><a class="toctarg" href="#tocanch1">Semi-long term review</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">Disassembly reveals …</a></li><li><a class="toctarg" href="#tocanch3">Other early adopter issues</a></li><li><a class="toctarg" href="#tocanch4">How well did it hold up?</a></li><li><a class="toctarg" href="#tocanch5">Random rants</a></li></ul></li><li><a class="toctarg" href="#tocanch6">Contemplating upgrades</a></li><li><a class="toctarg" href="#tocanch7">RTC
-battery substitute module installation and upgrades</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch8">Troubleshooting the modded
-laptop</a></li><li><a class="toctarg" href="#tocanch9">Other upgrades</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2022-11-27.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2024-02-02.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Framework Laptop: Repasting &amp; Two Year Report</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2023-11-13<br>#device-review #computer-repairing</div>
- <hr><div id="article" class="TText"><article>
-<p>Updated 2023-11-27: Added stuff on the RTC battery replacement module
-installation and part swap.</p>
-<h2 id="tocanch0" class="tvis">“Repasting” with PTM 7950</h2>
-<p>I’ve been reading testimonials from people replacing thermal paste in
-their laptops with
-<a href="https://thermalmanagement.honeywell.com/content/dam/thermalmanagement/en/documents/document-lists/technical/pmt-am-tims-ltm6300-pcm45f-ptm5000-series-data-sheet.pdf">PTM
-7950</a>, mostly praising the amazing effectiveness of the material,
-with some reporting a drastic 20 degrees C reduction. I was skeptical of
-such claims. Such temperature reduction just seemed impossible to me,
-especially considering the conductivity of PTM 7950 is pretty much the
-same as most non-terrible thermal pastes on paper.</p>
-<p>Anyway I decided to give it a try myself when I saw this mystic
-material on sale for barely above $10 the other day.</p>
-<p>The repasting process went pretty smoothly. However I did notice that
-the screw marked “3” on the heatsink seemed a lot looser than the other
-two. Maybe that has something to do with the horrible thermal I had
-before…</p>
-<p>Time for the results. Spoiler alert: it’s impressive. I cannot do a
-scientific before and after comparison, but I did run a few of my
-day-to-day tasks as tests. Idle temperatures are already much better:
-50°C before vs 38°C after. Under a short code compilation load (around 5
-minutes), the initial temperatures are similar (~100°C before vs 96°C
-after), but the CPU was able to boost much closer to its designated PL2
-power (58W vs 45W, advertised PL2 being 60W). After the processor
-stabilizes at its PL1 power it goes down to below 80°C, while the under
-the old paste it was a constant 90+°C. The task also finishes ~10%
-faster than before.</p>
-<p>While my results aren’t as insane as some others got, it was still
-huge. The biggest improvement is that merely browsing the Internet
-without setting CPU power policy to powersave is now bearable – I’ve
-mentioned in my previous post that the fan noise of the Framework laptop
-is a pretty big issue for me personally, as the noise it emits when the
-processor is above 55°C is extremely distracting in a quiet room. I also
-got ~10% more performance out of this CPU, which probably makes this the
-best $10 I spent on tech-related products for the past few years.</p>
-<p>So would I recommend the PTM 7950? Yes, but only when you
-<em>have</em> to do a repaste. As I mention before, I was skeptical of
-claims about the magical power of PTM 7950. To be clear I wasn’t
-doubting the thermal conductivity of the material, but rather the cause
-of the temperature reduction people have been reporting – maybe their
-old paste had completely dried out, or the factory paste application is
-utter garbage. For my specific case – I have my reasons to suspect the
-same due to the aforementioned loose screw on the heatsink I had. While
-I have never touched the heatsink assembly myself since day one until
-today, and the thermal profile of the machine was fairly consistent for
-the past 2 years, I couldn’t rule out everything. So I don’t really know
-if it is a factory defect or something else. Also I’ve seen reports that
-<a href="https://www.reddit.com/r/LenovoLegion/comments/tfxomi/">certain
-newer laptops already use similar phase change material as its <span title="Thermal Interface Material" style="text-decoration-line:underline;text-decoration-style:dotted;">TIM</span></a>.
-So if you’re considering to repaste your brand new laptop (which isn’t
-always a great idea in the first place) with PTM 7950, do remember to
-check if that’s the case.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-factorypaste.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-factorypaste.jpg"></a> <br>Factory
-thermal paste application
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-unp.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-unp.jpg"></a> <br>Factory paste
-removed
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-ptm7.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-ptm7.jpg"></a> <br>PTM 7950 applied
-</div>
-</td>
-</tr>
-</tbody></table>
-<h2 id="tocanch1" class="tvis">Semi-long term review</h2>
-<h3 id="tocanch2" class="tvis">Disassembly reveals …</h3>
-<div style="text-align:center;max-width:90%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-batsw.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_fw-batsw.jpg"></a> <br>First disassembly
-in 2 years.
-</div>
-<p>A few things jumped out when I opened up the laptop for repasting.
-The first, very obvious and somewhat worrying one is the mildly swollen
-battery (also known as SpicyPillows). I did not run the laptop a lot on
-battery during the first year, but the second year saw more usage with
-it unplugged (still not as frequent as my ThinkPad X1 yoga 1st gen). The
-swelling isn’t anywhere near extreme, and there hasn’t been a
-significant reduction of battery life since I got the machine. For this
-reason I’m not yet very compelled to replace it. But I will definitely
-be monitoring it much more closely from this point on, as it’s very well
-known that SpicyPillows are potentially dangerous.</p>
-<p>The second, less obvious one is also about a battery, but this time
-the CMOS battery. It was completely flat. I was aware of a
-<a href="https://community.frame.work/t/rework-instructions-for-11th-gen-mainboards-to-enable-powering-the-rtc-circuit-from-the-main-battery/26922">design
-flaw</a> in these 11th gen Intel machines that the CMOS battery only
-gets charged when the laptop is on AC power. However I’m not sure this
-is the cause in my case as my laptop spends most of its lifetime powered
-on and connected to AC power. While I do appreciate the original,
-extremely detailed makeshift solution (which is under the “Archived”
-section of the post linked above), I’m not comfortable with the idea of
-scratching a trace off an expensive motherboard. Anyway now that there’s
-a solution that doesn’t involve scratching a trace off the motherboard,
-I’m going to install the
-<a href="https://guides.frame.work/Guide/RTC+Battery+Substitution+on+11th+Gen+Intel%C2%AE+Core%E2%84%A2/203">RTC
-battery substitute module</a> and update this post when that’s done.</p>
-<h3 id="tocanch3" class="tvis">Other early adopter issues</h3>
-<p>The touchpad is flaky. Being a touchpad hater as I am (and a
-trackpoint user for more than half my life), I had to deal with it when
-I’m on the go. A few months ago I found that physical clicks on the
-touchpad no longer works, and apparently I’m not the only one.
-<a id="n1" href="#note1" class="note">[1]</a> There appears to be a
-<a href="https://framework.kustomer.help/articles/-SJQQqt2Hu">simple
-fix</a> which consists of a single step that sounds a little ridiculous
-(“Try pressing the bottom middle of the Touchpad firmly a few times”),
-but it worked for me.</p>
-<p>I do venture out to become an early adopter of certain products
-sometimes, My ThinkPad X1 yoga 1st gen being another example where
-Lenovo experimented with the “yoga” form factor in their ThinkPad
-line-up for the first time. Being an early(-ish) adopter of the
-Framework laptop, I fully expected that there could be issues. So far
-I’ve come across the CMOS battery design flaw, touchpad issue, BIOS
-bugs, unreasonable level of CPU throttling and fingerprint reader driver
-overheating the power button. None of these are severe enough to be a
-deal breaker for me, and all of the listed issues have been more or less
-fixed. I guess my overall experience of being an early adopter has been
-overall positive.</p>
-<h3 id="tocanch4" class="tvis">How well did it hold up?</h3>
-<p>Performance wise, it’s still a beast in its class. These Willow Cove
-cores still eats the Rust compilation workload that I now have to deal
-with on a daily basis as breakfast. Gaming still is an option for me
-considering the only game that I play nowadays is Minecraft, but is
-likely a no-no for any heavier games. While it’s not the most power
-efficient solution available today, it still meets the requirements of
-my setup just fine.</p>
-<p>Battery life isn’t too great in the first place. But the lifetime
-seems to hold up decently despite having a slightly swollen battery
-pack. Again, still fulfills my needs.</p>
-<p>Internals…
-<a href="//filestorage.chrisoft.org/blog/img/fw-fanfilth.jpg">don’t look
-great</a> (CW: filthy looking fan). The fan seems to attract dust much
-faster than the one in my ThinkPad X1 yoga.</p>
-<h3 id="tocanch5" class="tvis">Random rants</h3>
-<p>I still find the default fan curve of the laptop downright stupid.
-Ramping it up to 80% of full speed at 60°C doesn’t seem wise to me. Yes
-there are third party tools that can force a fan speed, but I’d rather
-program a more sane fan curve instead.</p>
-<p>Intel’s Xe driver for Windows is still hot garbage for graphics
-development.</p>
-<p>I do not like the forum software Framework uses (Discourse). The idea
-of infinite scrolling never clicked with me. You simultaneously get the
-worst from pagination and single-paged designs. And their page search is
-still crippled to this day. Okay I’ll stop here and keep my other 10
-objections to Discourse with myself.</p>
-<h2 id="tocanch6" class="tvis">Contemplating upgrades</h2>
-<p>Framework promised to provide an upgrade path to owners of their
-laptops and they delivered. Now I have the choice of replacing the
-motherboard in my Framework with a 12th/13th gen Intel board, or a Zen 4
-based AMD board. I’ve explained why I didn’t upgrade to the 12th gen
-Intel board in my previous post, and I’ll state the most important part
-here again: I don’t want to ditch my old board that’s perfectly
-functional. I’ll also say the silent part that was omitted in the
-previous post aloud: I don’t want to purchase the extra parts to build a
-complete computer out of the old board either.</p>
-<p>There are additional reasons that I didn’t upgrade to specific
-available boards. 13th gen Intel boards are especially objectionable due
-to the fact that they still use DDR4 memory. This is year 2023 and DDR5
-memory isn’t hard to find now. Yes I guess you get to keep your old
-memory sticks, but I don’t want an upgrade that seems half-baked thank
-you very much.</p>
-<p>AMD boards seem way more compelling, especially considering the
-performance boost they could bring at the price point they are sold at.
-But I’ve heard that they produce pretty much the exact same noise as the
-original boards once installed, runs as hot under heavy load, and would
-result in increased pain just by the virtue of being AMD <a id="n2" href="#note2" class="note">[2]</a>.
-And I would need to reconfigure the entire kernel <a id="n3" href="#note3" class="note">[3]</a>. For this reason
-I’ve pretty much shelved the idea of upgrading the motherboard in the
-very near future. The only reason for a motherboard upgrade for me now
-would be the old one straight up failing or become unsuitable for my
-tasks.</p>
-<p>There is one upgrade I want to make though. I would absolutely love
-to replace the glossy screen from factory with the new matte one. I was
-never a fan of glossy screens on any laptop and will take a matte
-replacement any day of the week. The price is a little steep though.</p>
-<p>There’s another upgrade that I’d love to get. A trackpoint keyboard
-with proper mouse buttons. I’m sure Lenovo would do anything to sabotage
-it, but I can always dream.</p>
-<h2 id="tocanch7" class="tvis">RTC
-battery substitute module installation and upgrades</h2>
-<p>The battery module was sent out the day before US Thanksgiving. I
-also decided to treat myself with the aforementioned matte screen
-upgrade and a proper Chinese keyboard, which were sent out on the same
-day.</p>
-<p>Following the official guide linked above, the installation was
-pretty straight forward. I don’t have stellar soldering skills or very
-stable hands, but here are a few photos from the installation plus my
-commentry.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtcmp.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtcmp.jpg"></a> <br>RTC battery
-substitute module packing. Unassuming.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtcmi.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtcmi.jpg"></a> <br>The module itself.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtcmt.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtcmt.jpg"></a> <br>After soldering. I
-applied a <em>little</em> bit too much solder.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtcmf.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtcmf.jpg"></a> <br>Final position.
-</div>
-</td>
-</tr>
-</tbody></table>
-<h3 id="tocanch8" class="tvis">Troubleshooting the modded
-laptop</h3>
-<p>Unfortunately, as things usually are for me, it didn’t go right after
-this point. Immediately after finishing the mod the machine still
-refused to turn on with the AC adaptor unplugged. It could boot with the
-adaptor plugged in and stay on after unplugging it while the laptop is
-running. Unplugging the machine with it turned off would erase all CMOS
-data. This was the exact same behavior exhibited before I performed the
-RTC battery modification.</p>
-<p>So I had to start the troubleshooting process. The power wire to the
-RTC battery substitute module measured 17.5 V to ground when the machine
-was powered on, so I didn’t mess up the soldering <a id="n4" href="#note4" class="note">[4]</a>. The outer ring of the module measured 3.2 V to ground,
-so the module itself is good. Neither values changed when I turned the
-machine off or had it unplugged after that. At this point pretty much
-all hardware faults that I could think of have been ruled out.</p>
-<p>Then I remembered that my machine is on BIOS version 3.17, while the
-latest release was 3.19 for this motherboard. So I decided to give that
-a shot. I quickly grabbed the update from their website and installed
-it, and voilà: the machine was able to turn on without the AC power
-attached once the BIOS has been updated.</p>
-<p>I still felt a bit iffy with my installation though, so I decided to
-go through the official installation guide again to make sure I followed
-everything – and of course I did not. There is apparently a specific
-orientation requirement for the module (a working one is shown in the
-second picture of step 3 in the guide). So I adjusted mine to match the
-picture for good measure, which resulted in the final installation photo
-shown above. There was also a comment under the official mentioning the
-module orientation issue.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtctv0.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtctv0.jpg"></a> <br>3.2 V present on
-outer ring of the module with the computer powered on and plugged in.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtctv1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtctv1.jpg"></a> <br>17.5 V going into
-the module with the computer powered on and plugged in.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtctv2.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtctv2.jpg"></a> <br>3.2 V still
-present when the machine is turned off but remain plugged in.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-rtctv3.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-rtctv3.jpg"></a> <br>3.2 V still
-present when the machine is both turned off and unplugged.
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>By now I have the RTC battery substitute module fully working as
-Framework intended. However I couldn’t help but notice that this still
-doesn’t give the laptop the normally expected behavior according to the
-schematic of the module and a statement from Framework themselves, both
-of which can be found
-<a href="https://github.com/FrameworkComputer/RTCRework">here</a>. For a
-normal laptop one would expect when its main battery runs out it would
-still be able to keep time and the BIOS configuration. However with this
-modification being essentially just a voltage regulator (NCP718) and
-having no significant energy storage at all, the machine
-<strong>will</strong> lose all CMOS data once the main battery cuts out,
-which functions more like a normal laptop with a dead CMOS battery. But
-I guess it’s probably better than losing CMOS data even with a fully
-charged main battery…</p>
-<h3 id="tocanch9" class="tvis">Other upgrades</h3>
-<p>I actually performed these part swaps between soldering the battery
-module thingy in and the troubleshooting process. But that didn’t really
-matter because these upgrades went pretty smoothly without any drama.
-There were a lot of screws to undo and screw back in though (25 black
-ones and <strong>48</strong> silver ones?? I couldn’t really keep track
-of the number.) <a id="n5" href="#note5" class="note">[5]</a> These screws are pretty annoying to
-handle because they have incredibly short shanks and are incredibly easy
-to strip. With the official screw driver they easily stick together and
-the ifixit screw driver couldn’t reliably pick them up. The sheer number
-of them only added to the trouble I had to go through to replace my
-perfectly working keyboard with one that has additional legends on the
-keys that I will barely look at. Is it really worth the trouble? (Yes…
-if it had a trackpoint goddammit!)</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-scr.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-scr.jpg"></a> <br>The screen. Wanky
-Apple-esque packaging.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-scp.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-scp.jpg"></a> <br>Screen unboxed.
-Apparently the newer 13 inch AMD model comes with this type of screen.
-<br>(which is objectively superior btw)
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-kbp.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-kbp.jpg"></a> <br>Keyboard unboxed. I
-can type Chinese using bopomofo at like 3 ch/min and I barely remember
-anything about Cangjie.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-ksc.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-ksc.jpg"></a> <br>National guild of
-screws. Nobody will get this reference.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-scc.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-scc.jpg"></a> <br>The screens side by
-side. Original screen on the left. The matte screen actually looked very
-good for what it is.
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-scb.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-scb.jpg"></a> <br>Back of the screens.
-Original on the left. Both made by BOE.
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/fw-kbb.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_fw-kbb.jpg"></a> <br>The new keyboard
-with backlight on. Fun fact: practically all computers sold in mainland
-China come with a standard US ANSI keyboard.
-</div>
-</td>
-<td>
-</td>
-</tr>
-</tbody></table>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>:
-<a href="https://community.frame.work/t/touchpad-clicking-issues/37059">[1]</a>
-<a href="https://community.frame.work/t/touchpad-click-not-working-and-getting-loose/16408">[2]</a>
-<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Their
-crappy GPU driver being a major PITA for me – my experience with AMD
-graphics seems very inconsistent with most Linux users. No I refuse to
-elaborate here because that would derail the entire post.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: Because I
-run Gentoo. Now laugh at me as you wish.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: Even
-admittedly it looked pretty bad as all my soldering jobs have been so
-far.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: So many that they actually forgot to circle
-out two of them in their official guide. Multiple comments under the
-guide already pointed this out, but Framework hasn’t modified the guide
-at the time of writing.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2024-02-02.html b/blog/post/2024-02-02.html
deleted file mode 100644
index 58fc59c..0000000
--- a/blog/post/2024-02-02.html
+++ /dev/null
@@ -1,612 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"R-BUS Technical Information")</title>
-<meta name="description" content="«R-BUS Technical Information» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-table tr:nth-child(odd) { background-color: rgba(160, 160, 160, 0.3); }
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">R-BUS Technical Information</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/electronics/">electronics</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Background</a></li><li><a class="toctarg" href="#tocanch1">Devices with R-BUS support</a></li><li><a class="toctarg" href="#tocanch2">Pin definition</a></li><li><a class="toctarg" href="#tocanch3">Official cable wiring</a></li><li><a class="toctarg" href="#tocanch4">Electrical
-characteristics of the interface</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch5">Power</a></li><li><a class="toctarg" href="#tocanch6">Digital Audio</a></li><li><a class="toctarg" href="#tocanch7">MIDI</a></li></ul></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2023-11-13.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2024-02-04.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">R-BUS Technical Information</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2024-02-02<br>#music #electronics</div>
- <hr><div id="article" class="TText">
-<article>
-<h2 id="tocanch0" class="tvis">Background</h2>
-<p>R-BUS (also called RMDB2 / RMDB II on older products) is an obsolete
-proprietary interconnect format that carries bidirectional MIDI and
-digital audio data created by Roland. It was used on Roland products
-released from the late 90s to early 2000s.</p>
-<p>There was a physically incompatible and much rarer predecessor of
-R-BUS called RMDB (Roland Multipurpose Digital Bus). RMDB is not the
-subject of this article.</p>
-<p>Much of the information here is gathered from schematics inside
-service manuals for various Roland products, mainly the XV-5080 and
-VS-2400. These can be easily found with a search through the
-interwebz.</p>
-<p>This article assumes minimal electronics knowledge from the reader.
-As a matter of fact, the author is also a layperson in this space.
-Report of any issues in the article would be appreciated.</p>
-<p>For other R-BUS related stuff on this website, please visit <a href="/rbusif">this page</a>.</p>
-<h2 id="tocanch1" class="tvis">Devices with R-BUS support</h2>
-<p>Here is a not necessarily complete list of Roland products that comes
-with at least one R-BUS connector:</p>
-<ul>
-<li>Mixing Console
-<ul>
-<li>VM-3100Pro</li>
-<li>VM-7100 / VM-7200 (3 ports on optional VM-24E I/O expansion)</li>
-</ul></li>
-<li>Studio Workstation
-<ul>
-<li>VS-2400</li>
-<li>VS-2480 (2 ports)</li>
-<li>VSR-880</li>
-</ul></li>
-<li>Production Studio
-<ul>
-<li>MV-8000 / MV-8800 (available through the MV8-OP1 audio I/O
-expansion)</li>
-</ul></li>
-<li>Synthesizer
-<ul>
-<li>XV-5080 (output only)</li>
-</ul></li>
-<li>Interface Modules
-<ul>
-<li>RPC-1 (Conventional PCI R-BUS interface)</li>
-<li>ADA-7000 (A/D converter)</li>
-<li>AE-7000 (R-BUS &lt;=&gt; AES/EBU converter)</li>
-<li>DIF-AT (R-BUS &lt;=&gt; TDIF &amp; ADAT converter)</li>
-<li>DIF-AT24 (R-BUS to ADAT and MIDI interface, 24-bit)</li>
-</ul></li>
-</ul>
-<h2 id="tocanch2" class="tvis">Pin definition</h2>
-<p>Connection for VS-2400 and XV-5080 is extracted from their respective
-service manuals. Pin usage inferred from these connections.</p>
-<table>
-<colgroup>
-<col style="width: 13%">
-<col style="width: 31%">
-<col style="width: 31%">
-<col style="width: 22%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: center;">PIN</th>
-<th style="text-align: center;">VS-2400</th>
-<th style="text-align: center;">XV-5080</th>
-<th style="text-align: left;">Usage</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">+5V</td>
-<td style="text-align: center;">+5V</td>
-<td style="text-align: left;">Power output</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">2</td>
-<td style="text-align: center;">RBOUT11</td>
-<td style="text-align: center;">SDO4</td>
-<td style="text-align: left;">Channel 1/2 output (<span style="text-decoration: overline;">SDOUT1</span><a id="n1" href="#note1" class="note">[1]</a>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">3</td>
-<td style="text-align: center;">RBOUT12</td>
-<td style="text-align: center;">SDO5</td>
-<td style="text-align: left;">Channel 3/4 output (<span style="text-decoration: overline;">SDOUT2</span>)</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">4</td>
-<td style="text-align: center;">RBOUT13</td>
-<td style="text-align: center;">SDO6</td>
-<td style="text-align: left;">Channel 5/6 output (<span style="text-decoration: overline;">SDOUT3</span>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">5</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">6</td>
-<td style="text-align: center;">RBOUT14</td>
-<td style="text-align: center;">SDO7</td>
-<td style="text-align: left;">Channel 7/8 output (<span style="text-decoration: overline;">SDOUT4</span>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">7</td>
-<td style="text-align: center;">NC <a id="n2" href="#note2" class="note">[2]</a></td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: left;">Unused?</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">8</td>
-<td style="text-align: center;">RBIN14</td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: left;">Channel 7/8 input (<span style="text-decoration: overline;">SDIN4</span>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">9</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">RBIN13</td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: left;">Channel 5/6 input (<span style="text-decoration: overline;">SDIN3</span>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">11</td>
-<td style="text-align: center;">RBIN12</td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: left;">Channel 3/4 input (<span style="text-decoration: overline;">SDIN2</span>)</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">12</td>
-<td style="text-align: center;">RBIN11</td>
-<td style="text-align: center;">SDI2</td>
-<td style="text-align: left;">Channel 1/2 input (<span style="text-decoration: overline;">SDIN1</span>)</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">13</td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: center;">NC</td>
-<td style="text-align: left;">Power reception for bus-powered devices
-<a id="n3" href="#note3" class="note">[3]</a></td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">14</td>
-<td style="text-align: center;">PC_TXD1</td>
-<td style="text-align: center;">RBUS_TX</td>
-<td style="text-align: left;">MIDI transmit <a id="n4" href="#note4" class="note">[4]</a></td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">15</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">16</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">17</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">18</td>
-<td style="text-align: center;">1FS</td>
-<td style="text-align: center;">LRCK4</td>
-<td style="text-align: left;">Frame sync (word clock) output</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">19</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">20</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">21</td>
-<td style="text-align: center;">RBFS1</td>
-<td style="text-align: center;">RBUS-WDCLK</td>
-<td style="text-align: left;">Frame sync (word clock) input</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">22</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">23</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="even">
-<td style="text-align: center;">24</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: center;">GND</td>
-<td style="text-align: left;">Ground</td>
-</tr>
-<tr class="odd">
-<td style="text-align: center;">25</td>
-<td style="text-align: center;">PC_RXD1</td>
-<td style="text-align: center;">RBUS_RX</td>
-<td style="text-align: left;">MIDI receive <a id="n5" href="#note5" class="note">[5]</a></td>
-</tr>
-</tbody>
-</table>
-<h2 id="tocanch3" class="tvis">Official cable wiring</h2>
-<p>Roland has only disclosed partial information on the wiring scheme
-used by the official R-BUS cables. <a id="n6" href="#note6" class="note">[6]</a>
-However, it’s rather easy to infer the full wiring scheme from that
-information. This has been confirmed by other third-party sources.
-<a id="n7" href="#note7" class="note">[7]</a> <a id="n8" href="#note8" class="note">[8]</a></p>
-<table>
-<colgroup>
-<col style="width: 25%">
-<col style="width: 18%">
-<col style="width: 11%">
-<col style="width: 18%">
-<col style="width: 25%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: right;">Usage 🖙</th>
-<th style="text-align: center;">Pin on one side</th>
-<th style="text-align: center;">is connected to</th>
-<th style="text-align: center;">Pin on the other side</th>
-<th style="text-align: left;">🖘 Usage</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: right;">+5V</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">13</td>
-<td style="text-align: left;">+5V In</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDOUT1</td>
-<td style="text-align: center;">2</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">12</td>
-<td style="text-align: left;">SDIN1</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">SDOUT2</td>
-<td style="text-align: center;">3</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">11</td>
-<td style="text-align: left;">SDIN2</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDOUT3</td>
-<td style="text-align: center;">4</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">10</td>
-<td style="text-align: left;">SDIN3</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">5</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">9</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDOUT4</td>
-<td style="text-align: center;">6</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">8</td>
-<td style="text-align: left;">SDIN4</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">NC</td>
-<td style="text-align: center;">7</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">7</td>
-<td style="text-align: left;">NC</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDIN4</td>
-<td style="text-align: center;">8</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">6</td>
-<td style="text-align: left;">SDOUT4</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">9</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">5</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDIN3</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">4</td>
-<td style="text-align: left;">SDOUT3</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">SDIN2</td>
-<td style="text-align: center;">11</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">3</td>
-<td style="text-align: left;">SDOUT2</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">SDIN1</td>
-<td style="text-align: center;">12</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">2</td>
-<td style="text-align: left;">SDIN1</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">+5V In</td>
-<td style="text-align: center;">13</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">1</td>
-<td style="text-align: left;">+5V</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">MIDI TX</td>
-<td style="text-align: center;">14</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">25</td>
-<td style="text-align: left;">MIDI RX</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">15</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">24</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">16</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">23</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">17</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">22</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">FS Out</td>
-<td style="text-align: center;">18</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">21</td>
-<td style="text-align: left;">FS In</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">19</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">20</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">20</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">19</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">FS In</td>
-<td style="text-align: center;">21</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">18</td>
-<td style="text-align: left;">FS Out</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">22</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">17</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">23</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">16</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="even">
-<td style="text-align: right;">GND</td>
-<td style="text-align: center;">24</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">15</td>
-<td style="text-align: left;">GND</td>
-</tr>
-<tr class="odd">
-<td style="text-align: right;">MIDI RX</td>
-<td style="text-align: center;">25</td>
-<td style="text-align: center;"></td>
-<td style="text-align: center;">14</td>
-<td style="text-align: left;">MIDI TX</td>
-</tr>
-</tbody>
-</table>
-<h2 id="tocanch4" class="tvis">Electrical
-characteristics of the interface</h2>
-<h3 id="tocanch5" class="tvis">Power</h3>
-<p>The +5V supply is derived straight from the +5V rail that goes into
-the main board, with polarity protection (both in the XV-5080 and
-VS-2400) provided with a Schottky diode, and sometimes current protected
-with a thermistor (not present in the XV-5080).</p>
-<p>The +5V pin measured 5.28V to ground on my XV-5080.</p>
-<h3 id="tocanch6" class="tvis">Digital Audio</h3>
-<p>The format of digital audio portion of R-BUS resembles <a href="https://en.wikipedia.org/wiki/I%C2%B2S">I²S</a>, but with a few
-key differences:</p>
-<ul>
-<li>There’s no bit clock.</li>
-<li>Sample data are transmitted as if they are 32-bit, despite only the
-first 24-bit is being used.</li>
-<li>Logic level on the data line is inverted.</li>
-</ul>
-<p>To give a standalone description of the R-BUS digital audio
-protocol:</p>
-<ul>
-<li>The frame sync (word clock) signal runs at the same frequency as the
-audio sampling rate.</li>
-<li>When frame sync is low, left channel of each channel pair is being
-transmitted, otherwise right channel is being transmitted.</li>
-<li>Each half cycle of the frame sync clock is divided into 32 periods,
-during each of which a bit of sample data is sent on every serial data
-line.</li>
-<li>Sample data are sent most significant bit (MSB) first. Each sample
-is 24-bit long, leaving 8 bits unused at the end of each half cycle of
-frame sync.</li>
-<li>Logic low on the data line means the bit being sent is 1, and high
-means it’s a 0.</li>
-</ul>
-<p>If you’d like a timing diagram of all this, please look up the
-datasheet of TC9271 made by Toshiba (used in the XV-5080 as its S/PDIF
-encoder chip). Figure 1b is a good representation of the relationship
-between frame sync (LRCK in the datasheet) and audio data. The LRS=H
-case in figure 3a shows how the frame sync signal sent over R-BUS should
-be interpreted.</p>
-<p>There are 4 serial data lines in each direction, giving the 8
-channels in total for each direction. Each direction has its own frame
-sync signal, which is shared among all data lines in that direction.</p>
-<h3 id="tocanch7" class="tvis">MIDI</h3>
-<p>What is sent over the MIDI wires in the R-BUS cable has not been
-confirmed by me.</p>
-<p>The MIDI interface is used differently on different Roland
-products:</p>
-<ul>
-<li>XV-5080 seem to ignore everything on the R-BUS MIDI interface,
-despite having all the facilities to handle it. Roland disclosed this in
-RPC-1’s user manual (see the section on XV-5080). I have not tested this
-claim.</li>
-<li>MV-8000 series with MV8-OP1 installed can use the R-BUS MIDI output
-as a separate MIDI port. Data going into the R-BUS MIDI port will be
-mixed with the built-in MIDI input.</li>
-<li>VM-3100Pro can pass through the MIDI data to its built-in MIDI
-ports, and can control the host sequencer if connected to a
-computer.</li>
-<li>V-Studio products can receive MIDI clock over R-BUS.</li>
-<li>Any aspects / products not mentioned here are unknown to me.</li>
-</ul>
-<p>Roland calls the signals that go in to / out of these pins “IPC” or
-“PC”. <a id="n9" href="#note9" class="note">[9]</a></p>
-<p>Inside both the VS-2400 and the XV-5080, the signal is generated /
-goes into a dedicated microcontroller (a M3888 1M2), specifically, a
-pair of its UART ports. An inverter is between the R-BUS connector and
-the MCU in each direction of the signal.</p>
-<p>Roland claims in VS-2480’s manual that R-BUS carries 8 channels of
-bidirectional digital audio (which are already fully accounted for in
-the previous section), plus MIDI, MMC (MIDI Machine Control) and MTC
-(MIDI Timecode).</p>
-<p>The factual portion of this section ends here. Everything below is my
-guesswork. Since MMC commands and MTC are both usually just sent as
-normal MIDI messages, it’s a reasonable assumption that, the only thing
-that is transmitted over these wires is MIDI, which is also why I named
-them MIDI TX/RX in my pin usage chart.</p>
-<p>Since MIDI is pretty much just UART with a bit of isolation, I would
-venture a guess that the signal sent / expected on these two pins is
-just inverted MIDI UART signal.</p>
-<p>It would be pretty trivial to build some experimental circuitry to
-test my theory. Maybe I’ll do it one day. However this may end up with
-nothing – as the XV-5080 will probably just ignore the MIDI data going
-through R-BUS.</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Serial data
-output (input). Overline indicates that 1-bit is represented with low
-logic level and 0-bit with high logic level. Same
-below.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Not connected. Same
-below.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: Inferred from wiring scheme<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: Often abbreviated
-as TX.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: Often abbreviated
-as RX.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: <a href="https://support.roland.com/hc/en-us/articles/201978779-R-BUS-RBUS-RBC-RBC-5-Where-Can-I-Find-an-R-BUS-Cable">R-BUS,
-RBUS, RBC, RBC-5: Where Can I Find an R-BUS Cable?</a><br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: <a href="https://web.archive.org/web/20240204170917/https://www.vsplanet.com/ubbthreads/ubbthreads.php?ubb=showflat&amp;Number=450346">Roll
-your own: R-Bus Cable Pin Out.</a><br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: <a href="https://web.archive.org/web/20211204221550/https://themidimaniac.com/diy-r-bus-cable-for-20e/">DIY
-R-BUS cable for 20€</a><br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: I have no idea what these could mean. My
-software-dominated brain tells me they stand for “Inter-Process
-Communication” and “Program Counter” but they clearly stand for
-something else here.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2024-02-04.html b/blog/post/2024-02-04.html
deleted file mode 100644
index 6c2fcae..0000000
--- a/blog/post/2024-02-04.html
+++ /dev/null
@@ -1,600 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"RBUS-ADAT devlog")</title>
-<meta name="description" content="«RBUS-ADAT devlog» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">RBUS-ADAT devlog</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/electronics/">electronics</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Origins</a></li><li><a class="toctarg" href="#tocanch1">Background check on the chip</a></li><li><a class="toctarg" href="#tocanch2">Ill-fated commencement</a></li><li><a class="toctarg" href="#tocanch3">Designing the board</a></li><li><a class="toctarg" href="#tocanch4">Board production and final
-assembly</a></li><li><a class="toctarg" href="#tocanch5">Full project timeline</a></li><li><a class="toctarg" href="#tocanch6">Full material cost</a></li><li><a class="toctarg" href="#tocanch7">Potential future work</a></li><li><a class="toctarg" href="#tocanch8">I want one! What should I do?</a></li><li><a class="toctarg" href="#tocanch9">You’re an idiot and
-your design is trash!</a></li><li><a class="toctarg" href="#tocanch10">Acknowledgment</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2024-02-02.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2024-02-29.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">RBUS-ADAT devlog</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2024-02-04<br>#music #electronics</div>
- <hr><div id="article" class="TText"><article>
-<h2 id="tocanch0" class="tvis">Origins</h2>
-<p>Funny enough, the origins of this project has nothing to do with
-R-BUS <strong>or</strong> ADAT.</p>
-<p>Ideas to build a digital only version of the EDIROL SD-80 surfaced in
-early 2023 as an extension to my SD-80 modding plan. Beacuse my SD-80 is
-half broken (headphone amp on analog output 1 fried due to my stupidity,
-see my <a href="https://chrisoft.org/blog/post/2020-11-20.html#tocanch2">second
-SD-80 post</a> for how it happened) and I only ever record it through
-its digital outputs anyway, I believe I can drastically reduce the
-footprint of it by taking out all the analog outputs and removing the
-now unused ±15V rail, making the device USB bus powered at the same
-time. There was also plans to add a second digital output to the modded
-SD-80, however the plan was never finalized, let alone implemented
-because of my lack of proper electronics knowledge and soldering skills.
-The idea was therefore shelved.</p>
-<p>Meanwhile in early 2022, I acquired a Roland XV-5080 (which I still
-have a long overdue review to write). I was also only recording that
-thing digitally and sometimes felt that wasting the other 3 stereo
-outputs is a shame. I did a bit of research and apparently the R-BUS
-port on its back outputs all 4 stereo outputs of the synth. Later I
-found out there was the DIF-AT and DIF-AT24 that can convert R-BUS to
-ADAT which is still fairly common on modern audio interfaces. However
-for a small box that doesn’t really do much, asking price for the DIF-AT
-is absolutely crazy – every single listing I saw was ~$200. And the
-DIF-AT24, which supports 24-bit ADAT output (in contrast to DIF-AT’s
-20-bit output), is pretty much unobtainium. So I decided to live with
-recording through its S/PDIF output for the time being.</p>
-<p>In September 2023, by pure coincidence, I found a listing on ebay of
-a chip described as “ADAT optical encoder/generator”, which was the <a href="https://www.coolaudio.com/docs/COOLAUDIO_V1401_DATASHEET.pdf">coolaudio
-V1401</a> that later would become the heart of my design. After reading
-its datasheet I decided it would pretty much make my SD-80 digital mod
-trivial, with the added benefit of carrying both stereo output channels
-on a single port. So I opened up the service manual for SD-80 and
-started to study which pin each signal should go to. However I quickly
-realized that performing the mod would require soldering around the XV
-chip inside the SD-80, which is still a thing that I’m not really
-willing to do; and that I could easily test out my theory on XV-5080’s
-R-BUS port because the digital audio output pins on XV-5080’s R-BUS port
-is pretty much directly connected to the XV chip through an
-inverter.</p>
-<p>To summerize … I came up with a solution for a problem that I made up
-for myself.</p>
-<h2 id="tocanch1" class="tvis">Background check on the chip</h2>
-<p>The seller of the chip claims the chip is an equivalent of the AL1401
-from Alesis, which sounds quite interesting as Alesis is actually the
-company behind ADAT (<u>Alesis</u> Digital Audio Tape, as for why it’s a
-tape not a optical interface… that’s a story for another time).
-Suspicion that this chip is a Chinese clone arose. So I did a bit of
-background on the company … <a id="n1" href="#note1" class="note">[1]</a></p>
-<p>Turns out, of course it is. While its roots can be traced to the US
-in the 90s, design team of coolaudio is now located in China
-<a id="n2" href="#note2" class="note">[2]</a>. Better still, it’s a brand
-of Music Tribe, which is Uli Behringer’s company. Yes it’s the same
-person who founded Behringer which is best known as the legal (/s) clone
-audio equipment manufacturer. <del>No wonder why coolaudio’s product
-portfolio is all clone chips.</del></p>
-<p>Well, the original AL1401 is pretty much impossible to find nowadays,
-so I really have no choice don’t I?</p>
-<h2 id="tocanch2" class="tvis">Ill-fated commencement</h2>
-<p>I ordered the V1401 chips before my end-of-year vacation travel. When
-I returned from my vacation, I found these in my mail box:</p>
-<div style="text-align:center;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-pk.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-pk.jpg"></a><br>Suspicious packets
-</div>
-<p>which may look suspicious to law enforcement… but they are actually
-just chips. Not the edible kind.</p>
-<p>My prior experience with electronics is only limited to reading
-schematics and disassembling (and destroying in the process) hundreds of
-home appliances. So I guess I have seen hundreds of printed circuit
-boards but I haven’t ever made or designed one of my own. I did take a
-class during my undergrad that involved programming FPGAs, which did
-have a “drawing schematics on a computer” component to it, but that
-didn’t have anything to do with PCB design.</p>
-<p>Since I do not have any prior experience working with EDA software, I
-toyed with an Chinese online EDA toolkit that literally has “easy” in
-its name (EasyEDA) and drew a tentative schematic for the supporting
-components. Apparently it wasn’t that different from what I used when I
-was taking the FPGA class, but at this stage I still haven’t confirmed
-many aspects of the characteristics of R-BUS yet. As a result there were
-a multitude of issues with this schematic. However it did help me come
-up with a list of components (“bill of materials” in more professional
-terms) needed for the project. I ordered these together with some
-prototyping supplies online, hoping to actually build a prototype once
-they have arrived.</p>
-<div style="text-align:center;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-es.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-es.png"></a> <br>The error-riddled
-schematic
-</div>
-<p>I need an audio interface with ADAT inputs because none of the bunch
-I already own has one. Since the Scarlett 18i8 3rd gen was on sale for
-$360 at the time, I decided to get one.</p>
-<p>When I was reviewing the datasheet for the components I ordered
-<a id="n3" href="#note3" class="note">[3]</a>, I
-found out that I’ve ordered the wrong optical transmitter. The part I
-ordered was TOTX1353 which only supports up to 500 kb/s data rate … less
-than 1/20 required by an ADAT data stream. However for some stupid
-reason that I couldn’t recall, I decided to try prototyping with it
-anyway.</p>
-<p>I soldered one of the V1401 chips to the SOIC carrier board. As this
-time I used plenty of proper, good quality flux as suggested the MacBook
-repair guy Louis Rossmann <a id="n4" href="#note4" class="note">[4]</a>, the result didn’t look
-nearly as bad as my previous SMD soldering attempts and I was quite
-happy with it.</p>
-<p>On the following day I started showing mild symptoms of a common
-cold. Later that night a fever kicked in. The next day I decided to use
-an expired Cornweed <a id="n5" href="#note5" class="note">[5]</a> test kit on myself and found out Cornweed was
-growing inside me (hence the name of this subsection).</p>
-<p>I got a week off from my workplace to get rid of the Cornweed. Since
-I already felt much better after one day, I started breadboarding. It
-was finished pretty quickly. But soon after that I found out there was
-more than one thing wrong with the optical transmitter module I chose –
-the module doesn’t have a drive circuitry built in and it pretty much
-just a bare LED. There is no way in hell that it can be directly driven
-from the output of a 74LS04. The LED in the transmitter only barely
-lights up when the output is active. At this point I finally realized
-that I can’t use this out of spec piece of crap in the final design
-anyway, so I placed order for a few transmitters that are more fit for
-the job.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-bo.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-bo.jpg"></a> <br>The chip on its
-breakout board
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-b0.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-b0.jpg"></a> <br>The breadboard
-prototype before it was working
-</div>
-</td>
-</tr>
-</tbody></table>
-<p>When I was trying to wire in the DB-25 terminal block, I found out
-that I don’t have the proper flathead driver for the screws. So I had to
-get one of those as well.</p>
-<p>Once I really had all the items I need, I started putting things
-together. The process was fairly easy but the audio interface didn’t see
-the ADAT signal on the first attempt. I double checked all the
-breadboard connections and inputs to the chip, which appeared to be all
-correct. Feeling tired, I removed the prototype from my desk to work on
-it the following day, unplugging all the cables in the process.</p>
-<p>To my utter surprise, the thing straight up worked when I plugged it
-in on the next day. It turns out that the port on the new transmitter is
-very tight and takes quite a bit of force to insert the plug all the way
-in.</p>
-<div style="text-align:center;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-b1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-b1.jpg"></a><br>Working prototype!
-</div>
-<h2 id="tocanch3" class="tvis">Designing the board</h2>
-<p>I decided to switch to KiCad soon after I started the actual
-prototyping process, probably due to my bias towards free software.</p>
-<p>Drawing the schematics wasn’t hard. Although I did have to read the
-manuals to find out how buses work in KiCad.</p>
-<p>There is no symbol for the V1401 chip in KiCad’s default library, and
-no symbol or footprint for the optical transmitter. I had to learn how
-to draw these and make them myself. Fortunately the process is pretty
-straightforward and the datasheet has everything I need.</p>
-<p>I spent some additional time studying the digital / analog audio
-output section of XV-5080 to find out the format of digital audio data
-coming out of the XV chip. Once that was done I was able finalize the
-schematic. I started learning routing in KiCad soon after that. However
-that effort was put on hold as soon as I realized I should really
-validate the schematic on breadboard first.</p>
-<p>Once I got the breadboard version working, I started working on
-routing the board again. It started pretty difficult, as certain
-crossings couldn’t really be avoided. However once I started making
-liberal use of vias the problems got solved pretty quickly. I then
-recalled seeing large ground plane on most circuit boards that I’ve laid
-my eyes on and found out those can be made in KiCad with “zones”.
-However for some (not completely insane, but still pretty stupid) reason
-I thought adding too much copper could add to the manufacturing cost, so
-I was … quite stingy with the zones. Maybe I should fix it in the next
-revision.</p>
-<p>Finally I added some personal markings on the board. I decided to try
-the svg import feature of KiCad and drew something in Inkscape within a
-minute. Once placed on the board it actually looked pretty nice. Yes it
-is a Touhou reference, now stop asking why.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-ks.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-ks.png"></a> <br>Unfinished
-schematic in KiCad
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-rt.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-rt.png"></a> <br>First attempt at
-routing. The board was laid out very differently.
-</div>
-</td>
-</tr>
-</tbody></table>
-<h2 id="tocanch4" class="tvis">Board production and final
-assembly</h2>
-<p>The design was now ready and I started looking for PCB manufacturers.
-I settled between a few Chinese manufacturing providers for price
-considerations. My final manufacturer of choice was JLCPCB, mostly
-because they have the best reviews in China. I submitted the files and
-waited anxiously for the boards to arrive.</p>
-<p>The boards arrived astonishingly fast. In just 5 days it went through
-the entire production sequence as well as the Pacific Ocean, and arrived
-at my door steps. I test fit all the components, which all fit just
-fine. Next was the final assembly which also went pretty smoothly. After
-a quick test the board was found to work perfectly. I was actually
-shocked that the very first PCB designed by me worked first try. To be
-fair the board itself is pretty simple. It was figuring out the R-BUS
-protocol that made the project slightly tricky. Actually I’m pretty
-surprised to find out that nobody has done the work already given the
-service manual of XV-5080 has been floating around on the Internet for
-many years now. Anyway, this has been a fantastic starter electronics
-project for me and the process has been quite enjoyable.</p>
-<table>
-<tbody><tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-pp.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-pp.jpg"></a> <br>Box from JLCPCB
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-bs.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-bs.jpg"></a> <br>It’s between my
-fingers…
-</div>
-</td>
-</tr>
-<tr>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-pa.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-pa.jpg"></a> <br>First two
-components installed
-</div>
-</td>
-<td>
-<div style="text-align:center;max-width:98%;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-fp.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-fp.jpg"></a> <br>Assembly finished
-</div>
-</td>
-</tr>
-</tbody></table>
-<div style="text-align:center;">
-<a href="//filestorage.chrisoft.org/blog/img/rbdt-pw.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_rbdt-pw.jpg"></a><br>IT’S ALIVE!!
-</div>
-<h2 id="tocanch5" class="tvis">Full project timeline</h2>
-<ul>
-<li>2023-09-27: V1401 chip found on ebay.</li>
-<li>2023-12-09: V1401 chips bought from ebay seller.</li>
-<li>2024-01-10: Schematic attempt with EasyEDA.</li>
-<li>2024-01-11: First batch of components ordered.</li>
-<li>2024-01-17: V1401 soldered to breadboard adapter.</li>
-<li>2024-01-18: Second batch of components ordered.</li>
-<li>2024-01-20: Switched to KiCad. Schematic finished except missing
-symbol and footprint for optical transmitter.</li>
-<li>2024-01-21: Breadboard built. Created symbols and footprint for
-optical transmitter in KiCad.</li>
-<li>2024-01-22: Started learning PCB layout in KiCad. First attempt to
-route the PCB made. Routing halted later that day.</li>
-<li>2024-01-26: First working breadboard prototype. Routing resumed and
-finished the same day. Learned how to use zones in KiCad. PCB design
-revised.</li>
-<li>2024-01-27: PCB submitted to JLCPCB for production. 10 boards
-ordered.</li>
-<li>2024-02-01: PCB arrived. First board assembled and passed
-testing.</li>
-</ul>
-<h2 id="tocanch6" class="tvis">Full material cost</h2>
-<p>This includes all orders placed specifically for this project,
-including stuff that can be later used for other purposes. Prices listed
-before VAT.</p>
-<table>
-<colgroup>
-<col style="width: 25%">
-<col style="width: 10%">
-<col style="width: 25%">
-<col style="width: 39%">
-</colgroup>
-<thead>
-<tr class="header">
-<th style="text-align: left;">Item</th>
-<th style="text-align: center;">Qty</th>
-<th style="text-align: center;">Vendor</th>
-<th style="text-align: center;">Price Total</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td style="text-align: left;">Half-size breadboard</td>
-<td style="text-align: center;">5</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">25.00</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">Breadboarding wire bundle</td>
-<td style="text-align: center;">2</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">9.90</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">Adafruit Perma-Proto Super Pack</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">34.95</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">Hook-up Wire Spool Set - 22AWG Solid Core
-- 6 x 25 ft</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">15.95</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">Hakko Professional Quality 20-30 AWG Wire
-Strippers</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">17.50</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">SOIC-20 breakout 3 Pack</td>
-<td style="text-align: center;">2</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">9.00</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">Adafruit Parts Pal</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Adafruit</td>
-<td style="text-align: center;">19.95</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">TOTX1353(F)</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">92.88</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">16SEPC100M+TSS</td>
-<td style="text-align: center;">20</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">11.56</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">SN74LS04N</td>
-<td style="text-align: center;">25</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">19.30</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">CTS 208-4</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">5.76</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">DB25-SL-25</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">12.60</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">CFR-25JB-52-1K</td>
-<td style="text-align: center;">100</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">2.47</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">CFR25SJT-52-2K2</td>
-<td style="text-align: center;">100</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">2.47</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">1N4002B-G</td>
-<td style="text-align: center;">30</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">4.32</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">25SEP10M+TSS</td>
-<td style="text-align: center;">20</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">18.84</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">C320C104K5R5TA</td>
-<td style="text-align: center;">50</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">5.05</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">FCR684208T</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">DigiKey</td>
-<td style="text-align: center;">33.75</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">V1401</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">ebay (av13)</td>
-<td style="text-align: center;">30.00</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">JUXINICE DB25 Male to Male Cable 3 feet,
-26awg Tinned Copper Wires,Double-Shielded with Foil &amp;Metal Braid,
-D-SUB 25 pin Cable RS232 Serial Cable in Black</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Amazon</td>
-<td style="text-align: center;">12.99</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">Antrader 2PCS DB25 Breakout Connector
-D-sub 25-pin Female Adapter RS232 to Terminal Board Signal Module</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Amazon</td>
-<td style="text-align: center;">11.99</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">Focusrite Scarlett 18i8 3rd Gen USB Audio
-Interface</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">Sweetwater</td>
-<td style="text-align: center;">359.99</td>
-</tr>
-<tr class="odd">
-<td style="text-align: left;">Mako Driver Kit - 64 Precision Bits</td>
-<td style="text-align: center;">1</td>
-<td style="text-align: center;">iFixit</td>
-<td style="text-align: center;">39.95</td>
-</tr>
-<tr class="even">
-<td style="text-align: left;">PCB Production</td>
-<td style="text-align: center;">10</td>
-<td style="text-align: center;">JLCPCB</td>
-<td style="text-align: center;">14.50</td>
-</tr>
-</tbody>
-</table>
-<p>Grand Total = $810.67</p>
-<h2 id="tocanch7" class="tvis">Potential future work</h2>
-<p><del>First of all I need to fix the stingy ground plane.</del></p>
-<p>V1401’s datasheet isn’t very clear on whether it can generate a
-24-bit ADAT stream. Recordings made with the Scarlett 18i8 seem to have
-the full 24-bit resolution, but that could be due to interpolation done
-by the audio interface or operating system. Testing this requires an
-oscilloscope which I currently don’t have.</p>
-<p>It is highly feasible to implement an ADAT encoder / decoder in
-software on cheap microcontrollers like the rp2040. The ADAT protocol is
-documented <a href="https://ackspace.nl/wiki/ADAT_project">here</a> and
-seems fairly straightforward to implement. This also has the added
-benefit of making sure that 24-bit ADAT is really supported. However
-this will also more than likely require an oscilloscope for debugging.
-I’ll also have to learn rp2040’s PIO programming and theories on PLL
-operation, both from scratch.</p>
-<p>Exposing the MIDI interface on R-BUS also seems possible. However it
-seems that XV-5080 doesn’t make use of the MIDI interface on R-BUS
-<a id="n6" href="#note6" class="note">[6]</a>.</p>
-<p><del>Maybe I’ll add more Touhou references to the silkscreen, who
-knows.</del></p>
-<h2 id="tocanch8" class="tvis">I want one! What should I do?</h2>
-<p>First of all I’d suggest giving the <a href="https://filestorage.chrisoft.org/blog/data/rbus_adat_m.pdf">manual</a>
-a read to make sure this board really does what you want.</p>
-<p>If you have made up your mind to get a board, I have some bad news
-for you. Unfortunately right now there’s no straightforward way obtain
-this board. Mainly because I have never sold anything online. Also this
-board is bound to be a very niche product, and possibly can’t even
-recover the development costs if I decided to sell them. Those are the
-reasons why I currently have no plans to sell the board.</p>
-<p>So right now your options are:</p>
-<ul>
-<li>Build the board yourself. The design is fully open source and build
-instruction is included in the manual. If you are comfortable with
-electronics DIY projects, this is probably your best bet.</li>
-<li>Let me know you want one! Right now I still have a few
-pre-production boards lying around. As long as you’re willing to cover
-the terrible USPS shipping rates I’m willing to assemble a board and
-send it your way. Of course you’re welcome to pay a little bit more… but
-any excess for now will be treated as donations (a “pay what you think
-it’s worth” model) – as I don’t have pricing fixed yet. Also if enough
-people have expressed interest in the board I might actually start
-selling them…</li>
-</ul>
-<h2 id="tocanch9" class="tvis">You’re an idiot and
-your design is trash!</h2>
-<p>First of all, thank you. I am indeed a massive idiot.</p>
-<p>If you have suggestions on how this board could be improved, please
-consider sending them to me. As a beginner in electronics design I can
-definitely use any piece of advice coming from pretty much anyone in
-this field. Any constructive suggestion will be greatly appreciated.</p>
-<p>Of course other types of contributions will also be appreciated. For
-example this board currently lacks any kind of enclosure as I have zero
-idea how to create 3D models for real-life object manufacturing. Help in
-this space is desperately needed.</p>
-<h2 id="tocanch10" class="tvis">Acknowledgment</h2>
-<p>I’d like to thank <a href="https://www.youtube.com/@KRPalto47">Palto</a> for being extremely
-supportive towards this project, including putting up with my endless
-DMs on Discord.</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Not to shit on the country or
-anything, after all I’m from said country … but Chinese clone chips are
-notorious for being unreliable in general or straight up not
-working.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: <a href="https://www.coolaudio.com/aboutus-page.php">“World
-Class Management &amp;Technical Team: One of the most extensive design
-service companies in China”</a><br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: which is probably a dumb thing to do. I should have read
-through all of them <em>before</em> placing the order.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: He doesn’t really do the repairs
-himself nowadays any more, does he?<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: That thing which destroyed 2020 to 2022
-for countless people misspelled deliberately to avoid unwanted
-attention.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: See the section on XV-5080 in RPC-1’s manual.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2024-02-29.html b/blog/post/2024-02-29.html
deleted file mode 100644
index 0634199..0000000
--- a/blog/post/2024-02-29.html
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"2024 Site Update")</title>
-<meta name="description" content="«2024 Site Update» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">2024 Site Update</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Blog</a></li><li><a class="toctarg" href="#tocanch1">Home Page</a></li><li><a class="toctarg" href="#tocanch2">Serving the Website</a></li><li><a class="toctarg" href="#tocanch3">Other Online-presence Stuff</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2024-02-04.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="2024-03-02.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">2024 Site Update</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2024-02-29<br>#garbage</div>
- <hr><div id="article" class="TText"><article>
-<p>I figured I wanted to give an update on this website (and my current
-state in general), so why don’t do it on the leap day…</p>
-<h2 id="tocanch0" class="tvis">Blog</h2>
-<p>The blog has been renamed. Its new name is “Specluncam Ursae”
-(Bearess’ Den). And the link has been condensed into a single one
-“Specluncam Ursae visere” (Visit the Bearess’ Den).</p>
-<p>The name change has been on my mind for years actually. I enjoy word
-play quite a lot, and my surname (which literally means “bear” in the
-language) is an excellent subject of word play – also a source of
-bullying when I was a kid. Since the blog is a place where I just
-randomly dump stuff, I figured the name “bear’s den” would be a suiting
-name, as I treat it as the home to my thoughts. (Well, not
-<em>every</em> single one of them, as you’ll see soon…) As for why it’s
-in Latin, that’s because I started naming things in Latin whenever I
-feel like it since I started learning the language.</p>
-<p>Removing the categories “Development blog” and “Nonsense blog” is
-another long overdue change. They were actually a leftover of the
-original PHP-based version of <span class="tipped" title="the Stupid Blogging System">SBS</span>. By the time tags were
-introduced to SBS version 2, those links have been <em>de facto</em>
-obsolete. I just didn’t find the excuse to remove them.</p>
-<p>“Why are you using the feminine version of the word ‘bear’?” you may
-ask. Well the reason is twofold: first is to disassociate with the
-hairy, non-heterosexual male stereotypical imagery of bears. The second
-reason is the same as why I wrote “However according to the Haskell
-tutorial found at haskell.org, <code>"chirs" == sort "chris"</code> and
-is her twin nemesis. That would be a very playful joke.” on the
-homepage. <a id="n1" href="#note1" class="note">[1]</a></p>
-<p>One last point here. I decided to shift the focus of this blog to
-more technical subjects. The majority of future posts will be on
-technical aspects of my personal projects – I’m going to leave my
-profession work (if I can call it that) elsewhere. Reviews and relevant
-personal updates will still be posted. Political stuff will still be
-kept at a minimum. But I promise those old, extremely cringeworthy posts
-on trifling matters will be no more – I was reviewing some of those old
-posts recently and part of me <strong>really</strong> wanted to take
-them off the website… It’s really for everybody’s interest that I keep
-those to myself…</p>
-<p>As for the unfinished posts… no they will probably never get
-finished, ever.</p>
-<h2 id="tocanch1" class="tvis">Home Page</h2>
-<p>There were a few readability improvements made to the home page. One
-of them is that the about section no longer requires JavaScript to load.
-This “noscript support improvement program” might extend to other
-sections in the future as well. Besides that, nothing really changed.
-There will be no design change to the home page in the foreseeable
-future. The random design I used for QMidiPlayer’s documentation is a
-surprisingly serviceable template (at least to my eyes).</p>
-<p>I may reorganize the list of projects in a different way some
-day.</p>
-<h2 id="tocanch2" class="tvis">Serving the Website</h2>
-<p>The URL on the filestorage subdomain is now served through
-Cloudflare’s CDN. This will have a positive impact on the load time of
-blog images and tracks in the music library, but not much else.</p>
-<h2 id="tocanch3" class="tvis">Other Online-presence Stuff</h2>
-<p>I’m not on Twitter anymore. <a id="n2" href="#note2" class="note">[2]</a> I have uninstalled their mobile application and blocked
-their website (at my own discretion). I’m only keeping the account
-because Musk is a narcissistic dick, and doesn’t let me see shit on that
-website if I somehow have to obtain a certain piece of information from
-it without logging in (I really should use a burner account for that
-purpose shouldn’t I?). I now post my random crap on Mastodon, on a
-public instance (c.im).</p>
-<p>I’m considering to set up a private email server (once again) as my
-personal gmail account is flooded with useless junk and my work email is
-flooded with another type of junk. Once that’s done I will update my
-homepage to reflect that.</p>
-<p>Also I somehow restored access to my supposedly deleted Bilibili
-account. I don’t intend to post much there but I guess it’s back
-now.</p>
-<p>I think that’s it? Now I should really get some sleep to recover from
-my sleep deprived ass…</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Well, the reason I listed on the homepage is
-actually a lie, but the real reason doesn’t really matter
-here.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Fuck Melon Husk. I repeat, FUCK
-MELON HUSK! No I don’t want to have sexual intercourse with
-him.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/2024-03-02.html b/blog/post/2024-03-02.html
deleted file mode 100644
index 4a4c4c2..0000000
--- a/blog/post/2024-03-02.html
+++ /dev/null
@@ -1,394 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"The Station of Elyssima")</title>
-<meta name="description" content="«The Station of Elyssima» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-div.tf-gates-container {
- display: flex;
- justify-content: space-around;
- flex-wrap: wrap;
-}
-div.tf-gates {
- flex: 1 240px;
- display: inline-block;
- margin: 1em;
- padding: 1em;
- border: solid 2px;
-}
-div.tf-gates-filler {
- flex: 100 0px;
- display: inline-block;
-}
-div.tf-gates > p {
- text-indent:0 !important;
-}
-hr.tf {
- border: none;
- border-top: 3px double;
- overflow: visible;
- text-align: center;
- height: 2em;
-}
-hr.tf::after {
- background-color: var(--principal-bg);
- background-image: var(--bg-pattern);
- background-repeat: repeat;
- content: '§';
- padding: 0 1em;
- position: relative;
- top: -13px;
-}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">The Station of Elyssima</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/fiction/">fiction</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter" style="display: none;">
- <span>Table of Contents</span>
- <ul id="tocroot">
- </ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2024-02-29.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="Privacy.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">The Station of Elyssima</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2024-03-02<br>#fiction #garbage</div>
- <hr><div id="article" class="TText">
-<script src="https://filestorage.chrisoft.org/blog/data/polyfill.min.js"></script>
-<script src="https://filestorage.chrisoft.org/blog/data/mathjax/mathjax.js"></script>
-<article>
-<p>Chris hung up her last phone call of the day and started packing up.
-She was on her final stop of an important business trip to the capital
-city of Elysionia that lasted a week. She’s having a vacation once this
-trip concludes, and now she’s dying for getting back her cozy little
-home.</p>
-<p>In Elysionia, people get around mostly by trains. There is an
-extremely elaborate railway system that connects every single place of
-importance in Elysionia. Its foundations laid out hundreds years ago,
-the Elysionia Railways has been serving the country loyally and
-contentedly over the years. Being inside continental Europe, it also
-links to other surrounding countries.</p>
-<p>Chris works for upper management of a private company. As part of her
-job she travels around the country frequently and take the trains more
-than a few dozens of times each year. Being a frequent rider of
-Elysionia Railways, she’s familiar with the system enough that she can
-recite the time table of various larger stations. With still well more
-than an hour from her planned departure time, she is not in a hurry.</p>
-<p>Chris is anxious for this very special train ride too, as the new
-train station in the capital began to operate yesterday. She booked
-specifically for a train that would depart the city from the new
-station. She has heard that this new station was designed and built like
-no other train stations in Elysionia, and she was ready to find out
-what’s so special about this new station that supposedly will
-revolutionize railway transportation in Elysionia.</p>
-<p>A taxi is called and Chris tells the driver her destination. “Huh,
-the new station?” Says the driver, “I heard a multitude was there
-yesterday just to check it out. Are you going there just for a visit
-too?” “A multitude of people… it must be really well designed,” thought
-Chris. She’s busy being distracted by her own thoughts and didn’t pay
-attention to answering the driver’s unsolicited question at all except
-letting out an unclear murmur of “yes”.</p>
-<p>Before long she is dropped off at the station. When she laid her eyes
-on the station for the first time Chris was utterly stunned – the
-exterior of the station looks exactly like a gigantic Gothic castle. She
-is standing at least a few hundred meters away from the main entrance
-yet the entire building barely fits in her field of view. A triplet of
-sharp spires with beautifully engraved patterns point straight into the
-sky. Towers surrounding them must still be as tall as the tallest radio
-tower she has ever seen. Flamboyant traceries made up most of the
-exterior openings. Born into a rural farming family, Chris could not
-fathom the sheer amount of work that was put into the construction of
-this station (nor could she understand why the city decided to erect a
-huge Gothic castle in pretty much the dead center of Elyssima). There is
-not a single railway track in sight – they are all cleverly well hidden.
-The square in front of the station is still flooded with a large crowd
-of people, all admiring this gorgeous building.</p>
-<p>But Chris is here to take a train ride and she really does not have
-the time to give this building a good look that it deserves, so she
-proceeds into the station. However again her eyes are instantly hooked –
-the pointed arches, the vault ribs which forms an endless mesmerizing
-geometric pattern, oh and the intricately decorated crystal chandeliers
-hanging around the center of the ticketing hall, which are even more
-opulent than the ones that appeared in her childhood dreams. Chris could
-not take a single step without getting amazed by something new that goes
-into her sight.</p>
-<p>A clock with hands long as a bus in the hallway brought Chris back to
-real life – it’s 20 minutes before the train she is planning to take
-will depart. The railway system of Elysionia works like a massive subway
-– as long as one has paid the appropriate fare, they will be permitted
-to travel between any places below a distance corresponding to the fare
-on that day. Still, trains are run at different frequencies for each
-destination. And in Chris’ case, if she missed this one she would have
-to wait 3 more hours, which would mean she won’t be in her house until
-midnight. Willing as she is to stick around, she still wants to be home
-more, just by a little bit. She says to herself, “I shall give this
-place a good visit someday,” and immediately got back into business –
-looking up the gate on the information display and following the signs.
-Everything is still so familiar.</p>
-<p>Chris followed the signage to a three-way junction. It appears that
-each path leads to a different set of gates. She took a sharp turn
-following where the arrow points and heads to a lower floor, not even
-noticing her dress almost being caught in the escalator.</p>
-<p>She finds herself in a delightfully decorated corridor with gates on
-one side and fine art exhibits on the other. She has some walking to do
-though – the corridor is for gates 80 to 1, and her gate is 15 – so she
-really doesn’t have time to appreciate the art, or to think about how
-they managed to squeeze so many gates into a single corridor,
-<em>or</em> why are there so many gates in this station in the first
-place.</p>
-<p>As the station was put into use only a day ago, it’s still early in
-the transitional period: there are not a whole lot of trains here, nor
-are there too many people who are actually taking a train. It soon
-becomes apparent to her that the gates are fairly far apart from each
-other, and even at her fastest walking pace, she will probably not make
-it on time. So she started running. Chris is not good runner. She never
-has been. And the fact that she is wearing an ankle-length dress
-definitely isn’t helping. She looks at the wall of arts and sees her own
-reflection on the fresh glazed wall tiles – her long, unblemished white
-dress flying high from all the velocity that she usually never gets to
-have. Similarly set in motion is her long, black hair, which is
-spreading in midair. The reflection is so clear that she can even make
-out the frills and cutwork on the hemline – even threads on the needle
-lace, which are not unlike the ribs of the traceries she saw moments
-ago, just vastly different in scale. She got a strong sensation of déjà
-vu from what she just saw, as it reminded her of a series of daydreams
-she often had when she was a little girl. But this isn’t a great time to
-fantasize about her prior dreams, is it?</p>
-<p>50, 49, 48 … Chris is steadily passing by the gates. It still puzzles
-her why are there so many gates in this station. She must have seen
-number as large as 200 when she was at the junction. Is there ever going
-to be enough rolling stock in Elysionia to warrant so many gates? Also
-why are they using <em>gates</em> at all? Train stations usually have
-just platforms don’t they? Is this why they said the new station would
-revolutionize railway transportation in Elysionia?</p>
-<p>30, 29, 28 … Chris is running out of her breath. She takes a look at
-her watch and realizes that she still has 10 minutes left. “Surely I can
-make it to gate 15 in ten minutes,” she says to herself. There are few
-people in this section of the station, and all the benches are vacant.
-She stops to take a quick breather. Mindlessly she glances at the floor
-brilliantly lit up from atop and saw her own image. “Holy heck,” mutters
-Chris, “it must take a lot of work to keep this station under such
-condition in the future.”</p>
-<p>When Chris passes by gate 25 she notices something is off. She halts
-her steps and looks back.</p>
-<div class="tf-gates-container">
-<div class="tf-gates">
-Gate<br>27
-</div>
-<div class="tf-gates">
-Gate<br>26
-</div>
-<div class="tf-gates">
-Porte<br>25
-</div>
-<div class="tf-gates-filler">
-
-</div>
-</div>
-<p>The language of the sign changed for some reason. This baffles Chris
-and makes her freeze in place for a good second. She has learned a
-little bit of French in her youth and can indeed understand the word.
-She just couldn’t understand why – Elysionia is an English speaking
-country and as long as English remains the lingua franca of the world,
-there really isn’t a good reason to change the language midway here.
-Maybe this gate is reserved for trains to and from France? Who
-knows…</p>
-<p>It didn’t take long until she notes another change in language. This
-time it’s German.</p>
-<div class="tf-gates-container">
-<div class="tf-gates">
-Porte<br>22
-</div>
-<div class="tf-gates">
-Bahnsteig<br>21
-</div>
-<div class="tf-gates-filler">
-
-</div>
-</div>
-<p>Only that Chris doesn’t know any German and wouldn’t be able to tell
-if the sign stands for “Slaughterhouse 21” with their scary long
-compound words. But she also feels a little bit reassured as her
-suspicion that these gates may be reserved for trains that connect to a
-different country could be right, or so she thought.</p>
-<p>As she assumes the bizarreness would end here, she finds out she was
-wrong, VERY wrong. Because this is what she sees next:</p>
-<div class="tf-gates-container">
-<div class="tf-gates">
-Imbarchi<br>19
-</div>
-<div class="tf-gates">
-INTROIRE·IN·CVRRVM<br>19⅓
-</div>
-<div class="tf-gates">
-INTROIRE·IN·CVRRVM<br>18
-</div>
-<div class="tf-gates-filler">
-
-</div>
-</div>
-<p>“What on earth is happening,” says Chris, “is this station going to
-pull a Platform 9¾ on me? Where would trains using this gate go anyway,
-Vatican City?”</p>
-<p>Just as she couldn’t stop admiring the exterior of the station when
-she just arrived, these signs don’t stop surprising her, and in an
-increasingly disturbing manner.</p>
-<div class="tf-gates-container">
-<div class="tf-gates">
-<p>INTROIRE·IN·CVRRVM<br> <span class="math inline">\(\begin{vmatrix} 3
-&amp; 5 &amp; 7 &amp; 4 \\ 1 &amp; \pi &amp; 6 &amp; 3 \\ 0 &amp; 7
-&amp; 5 &amp; 9 \\ 5 &amp; 4 &amp; 6 &amp;1 \end{vmatrix}\)</span></p>
-</div>
-<div class="tf-gates">
-<p>INTROIRE·IN·CVRRVM<br> <span class="math inline">\(|\mathrm{e}^{(\ln(61)+\mathrm{e}i)(-4-\frac{7274}{1024}i)}|\)</span></p>
-</div>
-<div class="tf-gates">
-<p>ᚷᛠᛏ<br> <span class="math inline">\(\displaystyle\int_{3}^{\frac{45}{7}} \sinh^{-1}(x)
-\cosh^{-1}(x)\,\mathrm{d}x\)</span></p>
-</div>
-<div class="tf-gates-filler">
-
-</div>
-</div>
-<p>Chris wasn’t good at math when she was in high school. She doesn’t
-even know what half of these symbols could ever mean. She doesn’t think
-she has seen the symbols on the last sign in any of the languages alive
-in the world nowadays either. What is this now, a time machine? As her
-confusion reaches the peak, Chris hears from the PA system:</p>
-<p>“Dear passenger Chris Xephyr, the train you are taking is departing
-in 3 minutes. Please board the train from Gate 15. Thank you.</p>
-<p>Cara Chris Xephyr viatrix, currus qui veheris abibit in tribus
-minutae. Amabo te, introi vehiculum ab porta XV. Gratias tibi.”</p>
-<p>“Who designed this godforsaken place…” exclaims Chris, “how does it
-know my name? This isn’t an airport is it?” She checks the gate closest
-to her, and there is no jet bridge to be seen, only rail tracks. Chris
-has never heard a single word from the PA system ever at any station she
-has been to in Elysionia. She scrambles to find her booking information,
-only to find out that it does say “New Elyssima” there. There is no time
-of departure or name of the passenger, as the booking system never asked
-for them. The station should never have known her name <em>or</em> which
-train she is taking. Her confusion grown into fear, Chris starts running
-again, even faster than before, almost like she’s being chased by a
-deadly monster that would instantly consume her if she gets caught.</p>
-<p>As Chris runs on, she feels the passing of time is slowing down, her
-limbs increasingly heavier, and gates seemingly becoming farther
-separated from each other. She could not hear a thing, not even the
-sough of wind passing by her ears. Her vision becoming darker, Chris
-starts to wonder how long she could keep running. She hasn’t seen a
-single person since the signs started speaking nonsense. She starts to
-contemplate her life choices, as one would inevitably start doing under
-such situation: why she couldn’t end the last call a bit earlier; why
-she had to book a ticket from the new station; is it really worth the
-agony she is experiencing right now; what if she went down the wrong way
-at the junction; why she wouldn’t choose to inherit her family land and
-be a farm girl staying at her hometown – after all if that were the case
-she wouldn’t have to endure any of what she has gone through in the last
-20 minutes. She no longer has the desire to revisit this place
-afterwards – if this is the future of railway transportation in
-Elysionia she might also avoid travelling by train altogether in the
-future – still she’s kind of curious what could be inside those tall
-towers she saw when she was outside the station. But obviously this is
-not the time to find out. The only thought in her head right now is to
-get out of this cursed place somehow.</p>
-<p>Chris runs into a person when she’s deep in her thoughts. She
-apologizes for her carelessness and is about to move on, only to realize
-that she would likely be able to find nobody that could help her if she
-missed this chance. Desperately she asks the person whether they know
-where gate 15 is. The person, not to Chris’ surprise at this point,
-started to speak complete gibberish in response.</p>
-<p>Chris doesn’t want to give up this easily. She continued, with the
-heavy breathing she got from all this running and almost in a pleading
-voice:</p>
-<p>“Did you hear the PA? <em>I</em> am that Chris Xephyr. Does hearing
-the PA calling out your name in a train station seem perfectly normal to
-you?!”</p>
-<p>Again, the person started to speak gibberish. Their demeanor seems
-confident, so they probably understood Chris just fine. But she isn’t to
-able to make out anything whatsoever from their speech, not even their
-body language. Frustrated, she thanks the person and resumes her
-seemingly impossible quest for gate 15.</p>
-<p>Before she is able to run more than a couple of steps, Chris
-collapses to the floor. The hem of her dress, still moving under
-inertia, flies ahead and covers her torso. A gentle breeze from the deep
-side of the corridor, presumably for the purpose of ventilation, blows
-it back to where it belongs, with the cutwork flapping around in the
-breeze. The person from whom she just sought help is now nowhere to be
-found, almost like they have never been there.</p>
-<hr class="tf">
-<p>Chris wakes up finding herself in the warm afternoon sun lying
-against her broom. She was again daydreaming during her housemaid duty.
-Fortunately there isn’t anyone home to catch her in the act. She rushes
-to the living room to find today’s newspaper, its headline reading “New
-Elyssima Train Station Project Dismissed”. She lets out a sigh of relief
-and continued her work.</p>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/Privacy.html b/blog/post/Privacy.html
deleted file mode 100644
index 91b3a1d..0000000
--- a/blog/post/Privacy.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Privacy Policy &amp; Terms")</title>
-<meta name="description" content="«Privacy Policy &amp; Terms» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-</head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Privacy Policy &amp; Terms</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/special-page/">special-page</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">1. This site uses Cookies.</a></li><li><a class="toctarg" href="#tocanch1">2. Information collected by
-this site.</a></li><li><a class="toctarg" href="#tocanch2">3. Guestbook.</a></li><li><a class="toctarg" href="#tocanch3">4. Data retention.</a></li><li><a class="toctarg" href="#tocanch4">5. Backups.</a></li><li><a class="toctarg" href="#tocanch5">6. Your rights.</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="2024-03-02.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="TOP.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Privacy Policy &amp; Terms</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2019-09-03<br>#special-page</div>
- <hr><div id="article" class="TText"><article>
-<p>last updated 2019-09-03</p>
-<p>These clauses might be super unprofessional. The only goal is to
-inform the users of this site (i.e.&nbsp;<a href="https://chrisoft.org">chrisoft.org</a>) about their rights and
-duties.</p>
-<p>Take footnotes with a pinch of salt!</p>
-<h2 id="tocanch0" class="tvis">1. This site uses Cookies.</h2>
-<p>… to store your browsing preferences and to improve your browsing
-experience. Below is a list of saved items:</p>
-<ul>
-<li>color scheme of your choice.</li>
-<li>loop / shuffle states, last used music visualizer.</li>
-<li>password of encrypted section in blog posts (if you decrypted one
-successfully).</li>
-</ul>
-<p>These cookies are not used by the server to do analytics.</p>
-<p>If you don’t like cookies for whatever reason, feel free to disable
-them. The basic functionality of the site will still work perfectly
-fine.</p>
-<h2 id="tocanch1" class="tvis">2. Information collected by
-this site.</h2>
-<p>This site collects a minimal set of your data to make the site work
-and do some basic level of spam prevention. Collected information
-includes:</p>
-<ul>
-<li>Your public IP address.</li>
-<li>User agent string of your browser.</li>
-<li>UTC representation of the time of access.</li>
-<li>Anything you filled in inside the guestbook form.</li>
-</ul>
-<p>The collected data are also retained in log files.</p>
-<h2 id="tocanch2" class="tvis">3. Guestbook.</h2>
-<p>The guestbook page is where you can leave me a note. Your message
-will be <strong>permanently</strong> archived in a private location not
-accessible on this site. In case of a message being deleted from the
-guestbook page, the message <strong>doesn’t</strong> also get removed in
-the private archive.</p>
-<p>You <strong>can’t</strong>:</p>
-<ul>
-<li>Advertise.</li>
-<li>Be offensive.</li>
-</ul>
-<p>Messages violating rules above will be deleted without further
-notice.</p>
-<p>You <strong>may</strong>:</p>
-<ul>
-<li>Request deletion of <strong>your</strong> messages. Contact the
-owner of this site for further information on this.</li>
-</ul>
-<p>This site <strong>will never</strong>:</p>
-<ul>
-<li>Alter your message.</li>
-<li>Take responsibility of the message you left.</li>
-</ul>
-<p>When leaving a message, your IP address will be checked against a
-spamming blacklist. You can review the source code on this section <a href="https://cgit.chrisoft.org/web.git/tree/cgi/gb_newentry.cgi#n40">here</a>.</p>
-<h2 id="tocanch3" class="tvis">4. Data retention.</h2>
-<p>Your data collected by this site will be kept indefinitely unless
-there is a data loss, about which you will not be informed, and might be
-covered by …</p>
-<h2 id="tocanch4" class="tvis">5. Backups.</h2>
-<p>Like every site ever existed <a id="n1" href="#note1" class="note">[1]</a>, data stored on this site, including those submitted by
-you, is backed up in a timely manner. <a id="n2" href="#note2" class="note">[2]</a> These backups may contain deleted
-data.</p>
-<h2 id="tocanch5" class="tvis">6. Your rights.</h2>
-<p>You hold the right to decide whether to use this site. If you feel
-uncomfortable about these terms, you might as well consider stop using
-this site immediately.</p>
-<p>Your rights on your submitted comments in the guestbook are already
-stated in section 3.</p>
-</article></div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: except the old Gentoo
-Wiki<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Of course they are also
-deleted in a timely manner.<br></span></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/TOP.html b/blog/post/TOP.html
deleted file mode 100644
index d247048..0000000
--- a/blog/post/TOP.html
+++ /dev/null
@@ -1,223 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"Readme_en")</title>
-<meta name="description" content="«Readme_en» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-td{padding-top:5px;padding-bottom:5px;vertical-align:top;}
-</style><style>
-article h2,article h3{border-bottom:1px solid #c0c0c0;overflow:hidden;}
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">Readme_en</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/garbage/">garbage</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">Early life</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch1">Preschool and elementary school life</a></li></ul></li><li><a class="toctarg" href="#tocanch2">Known problems</a></li></ul>
- </li>
- <li style="margin-left:-0.5em"><a id="prevp" href="Privacy.html">Prev post</a></li>
- <li style="margin-left:-0.5em"><a id="nextp" href="rbus-adat-m.html">Next post</a></li>
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">Readme_en</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2016-02-13<br>#garbage</div>
- <hr><div id="article" class="TText">
-<article>
-<table style="float:right;width:320px;background-color:rgba(255,255,255,0.2);text-align:left;font-size:0.8em;margin-left:10px;">
-
-<tbody><tr><td colspan="2" style="text-align:center;font-size:1.25em;">
-Chris Xiong<br>熊??
-</td></tr>
-<tr><td colspan="2" style="text-align:center;font-size:1.25em;">
-<p>Photo not available.</p>
-</td></tr>
-<tr><td colspan="2" style="background-color:rgba(124,124,192,0.6);text-align:center;font-size:1.25em;">
-Details
-</td></tr>
-<tr>
-<td>Species</td>
-<td><i>Homo sapiens</i></td>
-</tr>
-<tr>
-<td>Born</td>
-<td>October 24, 1997 (age 18)<br>Dongying, Shandong, China</td>
-</tr>
-<tr>
-<td>Abilities</td>
-<td>Mainly the ability to manipulate electronic devices</td>
-</tr>
-<tr>
-<td>Nationality</td>
-<td>Chinese</td>
-</tr>
-<tr>
-<td>Political party</td>
-<td>None</td>
-</tr>
-<tr>
-<td>Political belief</td>
-<td>Unclear</td>
-</tr>
-<tr>
-<td>Religion</td>
-<td>None</td>
-</tr>
-<tr>
-<td>Occupation</td>
-<td>None</td>
-</tr>
-<tr>
-<td>Sighted at...</td>
-<td>
-Computer room<br>
-Utility room<br>
-<s>E-waste-filled basement<s><br>
-<s>Electrical room<s><br>
-<s>Home<s>
-</s></s></s></s></s></s></td>
-</tr>
-<tr>
-<td>Signature</td>
-<td><img src="/data/chris_xiong_signature.svg" width="160px" alt="Chris_Xiong_Signature" decoding="async"></td>
-</tr>
-<tr>
-<td>Website</td>
-<td><a href="https://chrisoft.org">chrisoft.org</a></td>
-</tr>
-</tbody></table>
-
-<table style="border:1px solid #aaa;display:table;margin:auto;background-color:rgba(0,0,0,0);"><tbody><tr>
-<td>
-<img alt="warning" src="https://upload.wikimedia.org/wikipedia/commons/f/f4/Ambox_content.png" decoding="async">
-</td>
-<td>
-This blog post is written in a mock wikipedia style. However, it's an autobiography.<br>
-<s>For reference only!</s> Just for fun!
-</td>
-</tr>
-</tbody></table>
-
-<p>
-Chris Xiong is a Chinese programmer <s>(now upgrading to a software engineer)</s>. He hasn't make
-any significant contribution to the world of computer yet.
-</p>
-
-<div style="padding:7px;border:1px solid #aaa;display:table;">
-<div style="text-align:center;">
-<b>Contents</b> [<a href="#" onclick="var e=document.getElementById(&quot;toc&quot;);if(e.style.display==&quot;block&quot;){e.style.display=&quot;none&quot;;this.innerHTML=&quot;show&quot;;}else {e.style.display=&quot;block&quot;;this.innerHTML=&quot;hide&quot;;}">hide</a>]
-</div>
-<ul style="font-size:0.9em;display:block;list-style-type:none;" id="toc">
- <li><a href="#c1">1 Early life</a>
- <ul>
- <li><a href="#c1_1">1.1 Preschool and elementary school life</a></li>
- <li>1.2 Middle school life</li>
- </ul>
- </li>
- <li>2 Current Status
- <ul>
- <li>2.1 Education</li>
- <li>2.2 Hobbies</li>
- <li>2.3 Entertainment</li>
- </ul>
- </li>
- <li>3 Skills</li>
- <li>4 Personality</li>
- <li>5 Works
- <ul>
- <li>5.1 Early works</li>
- <li>5.2 WHG3D</li>
- <li>5.3 Ballance Remix</li>
- <li>5.4 the BLR series</li>
- <li>5.5 FOSS Projects</li>
- <li>5.6 Other minor works</li>
- </ul>
- </li>
- <li><a href="#c6">6 Known problems</a></li>
-</ul>
-</div>
-
-<h2 id="tocanch0" class="tvis">Early life</h2>
-As a child of two outer party members, Chris Xiong's childhood life differs from most peers.
-As a result, his childhood life is often described as "dull" by others.
-However, he insists that is not the case.
-<h3 id="tocanch1" class="tvis">Preschool and elementary school life</h3>
-Chris Xiong did not go to kindergarten as other childs.
-<h2 id="tocanch2" class="tvis">Known problems</h2>
-<ul>
-<li>The task scheduler is crappy.</li>
-<li>A fault tolerant kernel is needed.</li>
-<li>We need a new execution control module.</li>
-</ul>
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-</article>
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file
diff --git a/blog/post/rbus-adat-m.html b/blog/post/rbus-adat-m.html
deleted file mode 100644
index 2b2a879..0000000
--- a/blog/post/rbus-adat-m.html
+++ /dev/null
@@ -1,533 +0,0 @@
-<!DOCTYPE html><html><head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="theme-color" content="#000000">
-<title>Chrisoft::Blog(r#"RBUS-ADAT User Manual")</title>
-<meta name="description" content="«RBUS-ADAT User Manual» de spelunca ursae">
-<meta name="author" content="Chris Xiong">
-<script type="text/javascript" src="/panel.js"></script>
-<script type="text/javascript" src="/themer.js"></script>
-<script type="text/javascript" src="/blog/footnoter.js"></script>
-<script type="text/javascript" src="/blog/aes-js.js"></script>
-<script type="text/javascript" src="/blog/scrypt.js"></script>
-<script type="text/javascript" src="/blog/sha256.js"></script>
-<script type="text/javascript" src="/blog/decryptor.js"></script>
-<link rel="stylesheet" type="text/css" href="/common.css">
-<link rel="stylesheet" type="text/css" href="/panel.css">
-<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
-<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
-<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
-<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
-<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
-<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
-<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
-<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
-<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
-<script>
-function ol()
-{
- window.onresize=function()
- {
- if(window.innerWidth<768)
- setupevents();
- else unsetevents();
- }
- window.onresize();
- loadTheme();
- _decryptonload();
-}
-</script>
-<style>
-/* start css.sty */
-.cmr-10x-x-109{}
-.ec-qplr-x-x-109{}
-.ec-qplr-x-x-248{font-size:225%;}
-.LinBiolinumT-tlf-t1-x-x-248{font-size:225%; not-font-family: 'Linux Biolinum T', serif;}
-.LinBiolinumTB-tlf-t1-x-x-248{font-size:225%; font-weight: bold; not-font-family: 'Linux Biolinum T', serif;}
-.ec-qplb-x-x-109{}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.ectt-1095{ not-font-family: monospace,monospace;}
-.cmmi-10x-x-109{font-style: italic;}
-.cmsy-10x-x-109{}
-.ec-qplri-{font-size:90%;}
-.ec-qplr-x-x-90{font-size:81%;}
-p{margin-top:0;margin-bottom:0}
-p.indent{text-indent:0;}
-p + p{margin-top:1em;}
-p + div, p + pre {margin-top:1em;}
-div + p, pre + p {margin-top:1em;}
-a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; }
-@media print {div.crosslinks {visibility:hidden;}}
-a img { border-top: 0; border-left: 0; border-right: 0; }
-center { margin-top:1em; margin-bottom:1em; }
-td center { margin-top:0em; margin-bottom:0em; }
-.Canvas { position:relative; }
-img.math{vertical-align:middle;}
-div.par-math-display, div.math-display{text-align:center;}
-li p.indent { text-indent: 0em }
-li p:first-child{ margin-top:0em; }
-li p:last-child, li div:last-child { margin-bottom:0.5em; }
-li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
-.enumerate1 {list-style-type:decimal;}
-.enumerate2 {list-style-type:lower-alpha;}
-.enumerate3 {list-style-type:lower-roman;}
-.enumerate4 {list-style-type:upper-alpha;}
-div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
-.obeylines-h,.obeylines-v {white-space: nowrap; }
-div.obeylines-v p { margin-top:0; margin-bottom:0; }
-.overline{ text-decoration:overline; }
-.overline img{ border-top: 1px solid black; }
-td.displaylines {text-align:center; white-space:nowrap;}
-.centerline {text-align:center;}
-.rightline {text-align:right;}
-pre.verbatim {not-font-family: monospace,monospace; text-align:left; clear:both; }
-.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.fbox {display:table}
-div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.minipage{width:100%;}
-div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
-div.center div {text-align: left;}
-div.flushright, div.flushright div.flushright {text-align: right;}
-div.flushright div {text-align: left;}
-div.flushleft {text-align: left;}
-.underline{ text-decoration:underline; }
-.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
-.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-.framebox-c {text-align:center;}
-.framebox-l {text-align:left;}
-.framebox-r {text-align:right;}
-span.thank-mark{ vertical-align: super }
-span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
-div.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;}
-div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}
-div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
-table.tabular td p{margin-top:0em;}
-table.tabular {margin-left: auto; margin-right: auto;}
-td p:first-child{ margin-top:0em; }
-td p:last-child{ margin-bottom:0em; }
-div.td00{ margin-left:0pt; margin-right:0pt; }
-div.td01{ margin-left:0pt; margin-right:5pt; }
-div.td10{ margin-left:5pt; margin-right:0pt; }
-div.td11{ margin-left:5pt; margin-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-td.td00{ padding-left:0pt; padding-right:0pt; }
-td.td01{ padding-left:0pt; padding-right:5pt; }
-td.td10{ padding-left:5pt; padding-right:0pt; }
-td.td11{ padding-left:5pt; padding-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-.hline hr, .cline hr{ height : 0px; margin:0px; }
-.hline td, .cline td{ padding: 0; }
-.hline hr, .cline hr{border:none;border-top:1px solid black;}
-.tabbing-right {text-align:right;}
-div.float, div.figure {margin-left: auto; margin-right: auto;}
-div.float img {text-align:center;}
-div.figure img {text-align:center;}
-.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
-.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;}
-.reversemarginpar{float:left;}
-table.equation {width:100%;}
-.equation td{text-align:center; }
-td.equation { margin-top:1em; margin-bottom:1em; }
-td.equation-label { width:5%; text-align:center; }
-td.eqnarray4 { width:5%; white-space: normal; }
-td.eqnarray2 { width:5%; }
-table.eqnarray-star, table.eqnarray {width:100%;}
-div.eqnarray{text-align:center;}
-div.array {text-align:center;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.pmatrix img{vertical-align:middle;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.bar-css {text-decoration:overline;}
-table.tabular{border-collapse: collapse; border-spacing: 0;}
-img.cdots{vertical-align:middle;}
-.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
-.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
-.index-item, .index-subitem, .index-subsubitem {display:block}
-div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
-div.caption span.id{font-weight: bold; white-space: nowrap; }
-h1.partHead{text-align: center}
-p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
-.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
-.verse{white-space:nowrap; margin-left:2em}
-div.maketitle {text-align:center;}
-h2.titleHead{text-align:center;}
-div.maketitle{ margin-bottom: 2em; }
-div.author, div.date {text-align:center;}
-div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
-div.abstract p {margin-left:5%; margin-right:5%;}
-div.abstract {width:100%;}
-.abstracttitle{text-align:center;margin-bottom:1em;}
-figure.float, div.figure {margin-left: auto; margin-right: auto;}
-figure.float img, figure.figure img {display: block; margin-left: auto; margin-right: auto;}
-figure.figure {text-align:center;}
-figcaption.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:center;}
-figcaption.caption span.id{font-weight: bold; white-space: nowrap; }
-.abstract{margin:1em;}
-div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
-table.tabular td p{margin-top:0em;}
-table.tabular {margin-left: auto; margin-right: auto;}
-td p:first-child{ margin-top:0em; }
-td p:last-child{ margin-bottom:0em; }
-div.td00{ margin-left:0pt; margin-right:0pt; }
-div.td01{ margin-left:0pt; margin-right:5pt; }
-div.td10{ margin-left:5pt; margin-right:0pt; }
-div.td11{ margin-left:5pt; margin-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-td.td00{ padding-left:0pt; padding-right:0pt; }
-td.td01{ padding-left:0pt; padding-right:5pt; }
-td.td10{ padding-left:5pt; padding-right:0pt; }
-td.td11{ padding-left:5pt; padding-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-.hline hr, .cline hr{ height : 0px; margin:0px; }
-.hline td, .cline td{ padding: 0; }
-.hline hr, .cline hr{border:none;border-top:1px solid black;}
-div.array {text-align:center;}
-.rotatebox{display: inline-block;}
-#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-4{border-collapse:collapse;}
-#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-4{border-collapse:collapse;}
-#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-4{border-collapse:collapse;}
-#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-5{border-collapse:collapse;}
-#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-5{border-collapse:collapse;}
-#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-5{border-collapse:collapse;}
-#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
-#TBL-5{border-collapse:collapse;}
-/* end css.sty */
-
-</style></head>
-<body onload="ol()" style="overflow-x:hidden;">
- <div id="panel" class="TText">
- <ul id="panellist">
- <li><a href="/"><h1>Chrisoft</h1></a></li>
- <li><a href="/blog"><h2>Blog</h2></a></li>
- <li><a href="#"><h3 id="title">RBUS-ADAT User Manual</h3></a></li>
- <li><span>Tags</span>
- <ul id="tagslist">
- <li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/electronics/">electronics</a></li></ul>
- </li>
- <li id="tocouter">
- <span>Table of Contents</span>
- <ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0">1 Preface</a></li><li><a class="toctarg" href="#tocanch1">2 NO WARRANTY</a></li><li><a class="toctarg" href="#tocanch2">3 Open hardware</a></li><li><a class="toctarg" href="#tocanch3">4 Safety notice</a></li><li><a class="toctarg" href="#tocanch4">5 Intended usage and applicable devices</a></li><li><a class="toctarg" href="#tocanch5">6 What’s on the board</a></li><li><a class="toctarg" href="#tocanch6">7 Quick start</a></li><li><a class="toctarg" href="#tocanch7">8 Choosing a suitable cable</a></li><li><a class="toctarg" href="#tocanch8">9 Notes</a></li><li><a class="toctarg" href="#tocanch9">10 Specifications</a></li><li><a class="toctarg" href="#tocanch10">11 Appendices</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch11">11.1 Build instructions</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch12">11.1.1 PCB production</a></li><li><a class="toctarg" href="#tocanch13">11.1.2 Bill of materials</a></li><li><a class="toctarg" href="#tocanch14">11.1.3 Assembling</a></li><li><a class="toctarg" href="#tocanch15">11.1.4 Testing</a></li></ul></li><li><a class="toctarg" href="#tocanch16">11.2 Useful links</a></li><li><a class="toctarg" href="#tocanch17">11.3 Schematic</a></li><li><a class="toctarg" href="#tocanch18">11.4 Circuit board</a></li></ul></li></ul>
- </li>
-
-
- </ul>
- </div>
- <div id="content">
- <h2 id="titleh" class="TText" style="font-wight:normal;">RBUS-ADAT User Manual</h2>
- <div id="datetags" class="TText" style="margin-bottom:1em;">2024-02-03<br>#music #electronics</div>
- <hr><div id="article" class="TText">
- <div class="maketitle">
-
-
-
-<h1>RBUS-ADAT User Manual</h1>
- <div class="author"></div><br>
-<img height="426" alt="PIC" src="//filestorage.chrisoft.org/blog/img/rbus-adat-cvc.png" decoding="async">
-<div class="date"></div>
-This version of the manual is for <span class="ec-qplb-x-x-109">revision 1 </span>of the board.
-Copyright Chris Xiong 2024. Copying of this hardware and its design as well as this documentation is permitted
-under the terms of CERN-OHL-P v2.
-
-
- </div>
-<p><a id="x1-2r1"></a></p>
- <h2 id="tocanch0" class="tvis"><span class="titlemark">1 </span> <a id="x1-10001"></a>Preface</h2>
-<!-- l. 57 --><p class="noindent">If you are reading this, chances are you have become an unfortunate test subject of the RBUS-ADAT conversion
-board (or have the nerves to think about becoming one). Well, here is (almost) everything you will want to know
-about the board. If you want to learn about some less useful information about this thing, consider checking out
-the devlog, which can be found by following the link to the project homepage listed under “Useful
-links”.
-</p><!-- l. 64 --><p class="indent"> As this manual is written as if it’s a blog post, which is prone to being very rambly, I’ll try to keep the rambling
-low, at least make an attempt to do so.
-</p><!-- l. 67 --><p class="indent"> Pictures in this manual are renders (computer-generated) and are for illustration purposes only.
-</p><!-- l. 71 --><p class="indent"> <span class="ec-qplb-x-x-109">This product is neither affiliated with or endorsed by Roland Corporation. Roland does not approve
-</span><span class="ec-qplb-x-x-109">connecting unofficial accessories to proprietary Roland interfaces.</span>
-</p><!-- l. 76 --><p class="indent"> Visit <a href="https://chrisoft.org/rbusif">chrisoft.org/rbusif</a> for any future updates to this manual and the hardware.
-<a id="x1-1001r1"></a>
-</p>
- <h2 id="tocanch1" class="tvis"><span class="titlemark">2 </span> <a id="x1-20002"></a>NO WARRANTY</h2>
-<!-- l. 81 --><p class="noindent">THIS BOARD IS HOMEBREW AND EXPERIMENTAL HARDWARE. THERE IS NO WARRANTY FOR THIS
-HARDWARE, INCLUDING ITS DESIGN AND THE FINISHED PRODUCT, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. THE DESIGNER SHALL NOT BE HELD LIABLE FOR ANY DAMAGE CAUSED BY USING
-THIS HARDWARE, UNLESS REQUIRED BY APPLICABLE LAW.
-</p><!-- l. 86 --><p class="indent"> For the full legalese text on warranty and liability, please refer to the <a href="https://ohwr.org/cern_ohl_p_v2.txt">license text</a>.
-</p><!-- l. 89 --><p class="indent"> If this board fried your equipment, don’t try to extract anything from me. That’s what this section is trying to
-say.
-<a id="x1-2001r2"></a>
-</p>
- <h2 id="tocanch2" class="tvis"><span class="titlemark">3 </span> <a id="x1-30003"></a>Open hardware</h2>
-<!-- l. 94 --><p class="noindent">This board is open hardware licensed under the <a href="https://ohwr.org/cern_ohl_p_v2.txt">CERN Open Hardware Licence Version 2 - Permissive</a>
-license. Feel free to make as many of this board as you wish and sell them, as long as your follow the
-terms.
-</p><!-- l. 99 --><p class="indent"> Contributions welcome and will be appreciated. If you have any suggestions to improve the board,
-please feel free to contact the author. The author’s contact information can be found on the project
-homepage.
-<a id="x1-3001r3"></a>
-</p>
- <h2 id="tocanch3" class="tvis"><span class="titlemark">4 </span> <a id="x1-40004"></a>Safety notice</h2>
-<!-- l. 105 --><p class="noindent">There’s no enclosure for this board. As a result there would be exposed conductors on both sides of the board.
-You’re advised to take measures to prevent them from shorting out. You may try any combination of the
-following:
-</p>
- <ul class="itemize1">
- <li class="itemize">
- <!-- l. 110 --><p class="noindent">Placing the board on an non-conductive surface.
- </p></li>
- <li class="itemize">
- <!-- l. 111 --><p class="noindent">There are two M2 mounting holes in the board. Using two M2 screws and nuts, install a plastic sheet
- (or cardboard even) under and / or over the board.
-
-
- </p></li>
- <li class="itemize">
- <!-- l. 113 --><p class="noindent">Don’t use the board at all. Don’t even think about it.</p></li></ul>
-<!-- l. 116 --><p class="indent"> Again, if you fried your equipment while using this board, it’s all your fault. I mean not really – I would still
-want to know what happened. But it’s all your fault.
-
-
-<a id="x1-4001r4"></a>
-</p>
- <h2 id="tocanch4" class="tvis"><span class="titlemark">5 </span> <a id="x1-50005"></a>Intended usage and applicable devices</h2>
-<!-- l. 124 --><p class="noindent">RBUS-ADAT is designed for use with the Roland XV-5080. It converts the 8 digital outputs exposed by XV-5080’s
-R-BUS port to a standard ADAT lightpipe stream which can be recorded with any audio interface with an ADAT
-input.
-</p><!-- l. 128 --><p class="indent"> The ADAT output from this converter is 20-bit and has the same sampling rate as the input supplied from the
-R-BUS port.
-</p><!-- l. 131 --><p class="indent"> This converter <span class="ec-qplb-x-x-109">cannot</span>:
-</p>
- <ul class="itemize1">
- <li class="itemize">
- <!-- l. 134 --><p class="noindent">Convert ADAT back to R-BUS input. i.e. you can’t record an ADAT stream on a V-Studio through
- R-BUS with this converter.
- </p></li>
- <li class="itemize">
- <!-- l. 136 --><p class="noindent">Serve as a clock source for the connected R-BUS device. You should always select “internal” as the
- clock source for the connected R-BUS device.
- </p></li>
- <li class="itemize">
- <!-- l. 138 --><p class="noindent">Expose the MIDI interface on the R-BUS port.</p></li></ul>
-<!-- l. 141 --><p class="indent"> The converter is designed and tested with the XV-5080. In addition, the only audio interface that
-has been verified to work is Focusrite Scarlett 18i8 3rd gen. I don’t have the resources to test other
-devices.
-</p><!-- l. 145 --><p class="indent"> The converter has not been tested against VM- or VS- devices that feature RMDB 2 / R-BUS ports
-or MV-8<span class="cmsy-10x-x-109">××× </span>fitted with the MV8-OP1 expansion but may still work as a unidirectional converter
-as intended. If you decide to try this converter with these devices, reporting the results would be
-appreciated.
-</p><!-- l. 151 --><p class="indent"> The converter is not compatible with devices with the older RMDB port.
-<a id="x1-5001r5"></a>
-</p>
- <h2 id="tocanch5" class="tvis"><span class="titlemark">6 </span> <a id="x1-60006"></a>What’s on the board</h2>
-<div class="center">
-<!-- l. 155 --><p class="noindent">
-</p><!-- l. 156 --><p class="noindent"><img height="341" alt="PIC" src="//filestorage.chrisoft.org/blog/img/rbus-adat-tvp.png" decoding="async"></p></div>
- <ol class="enumerate1">
-<li class="enumerate" id="x1-6002x1">
- <!-- l. 160 --><p class="noindent"><span class="ec-qplb-x-x-109">R-BUS DB-25 Connector</span>. See “Choosing a suitable cable” for what you should and shouldn’t plug
- into this connector.
- </p></li>
-<li class="enumerate" id="x1-6004x2">
- <!-- l. 162 --><p class="noindent"><span class="ec-qplb-x-x-109">Power indicator</span>. Illuminates if the board is receiving power.
-
-
- </p></li>
-<li class="enumerate" id="x1-6006x3">
- <!-- l. 164 --><p class="noindent"><span class="ec-qplb-x-x-109">ADAT Lightpipe output</span>. Connect to a device capable of recording ADAT data stream with a
- TOSLINK cable.
- </p></li>
-<li class="enumerate" id="x1-6008x4">
- <!-- l. 166 --><p class="noindent"><span class="ec-qplb-x-x-109">Pure hecking magic</span>.</p></li></ol>
-<p><a id="x1-6009r6"></a></p>
- <h2 id="tocanch6" class="tvis"><span class="titlemark">7 </span> <a id="x1-70007"></a>Quick start</h2>
- <ol class="enumerate1">
-<li class="enumerate" id="x1-7002x1">
- <!-- l. 172 --><p class="noindent">Using a suitable cable (see the following chapter), connect the R-BUS DB-25 connector on the board
- to the R-BUS port on your Roland device.
- </p></li>
-<li class="enumerate" id="x1-7004x2">
- <!-- l. 174 --><p class="noindent">Connect the ADAT output on the board to the ADAT input of your recording equipment with a
- TOSLINK optical fiber cable.
- </p></li>
-<li class="enumerate" id="x1-7006x3">
- <!-- l. 176 --><p class="noindent">Turn on the Roland device, then turn on your recording equipment.</p></li></ol>
-<p><a id="x1-7007r7"></a></p>
- <h2 id="tocanch7" class="tvis"><span class="titlemark">8 </span> <a id="x1-80008"></a>Choosing a suitable cable</h2>
-<!-- l. 181 --><p class="noindent">DO <span class="ec-qplb-x-x-109">NOT </span>USE ROLAND’S OFFICIAL R-BUS CABLE!!!
-</p><!-- l. 183 --><p class="indent"> Please use a straight through DB-25 male-to-male (pins on both ends) cable to connect the R-BUS port on your
-device to the port on the converter. These cables connect pin 1 to pin 1, pin 2 to pin 2, pin 3 to pin 3
-etc. These cables are usually sold as “DB-25 RS-232 serial cable”. Do NOT use any of the following
-cables:
-</p>
- <ul class="itemize1">
- <li class="itemize">
- <!-- l. 190 --><p class="noindent">Roland’s official R-BUS / RMDB 2 cable
- </p></li>
- <li class="itemize">
- <!-- l. 191 --><p class="noindent">Parallel port cable
- </p></li>
- <li class="itemize">
- <!-- l. 192 --><p class="noindent">SCSI cable
- </p></li>
- <li class="itemize">
-
-
- <!-- l. 193 --><p class="noindent">LPT port Printer cable
- </p></li>
- <li class="itemize">
- <!-- l. 194 --><p class="noindent">Null modem cable</p></li></ul>
-<!-- l. 197 --><p class="indent"> These cables all use the same DB-25 connector but are wired differently. Using the wrong cable may damage the
-converter and / or your device.
-</p><!-- l. 200 --><p class="indent"> Note that many RS-232 serial cables designed for relatively newer computers use the DE-9 connector. You’ll
-need the older style with DB-25 connectors (which conveniently have 25 pins).
-</p><!-- l. 204 --><p class="indent"> DO <span class="ec-qplb-x-x-109">NOT </span>USE ROLAND’S OFFICIAL R-BUS CABLE!!!
-<a id="x1-8001r8"></a>
-</p>
- <h2 id="tocanch8" class="tvis"><span class="titlemark">9 </span> <a id="x1-90009"></a>Notes</h2>
- <ul class="itemize1">
- <li class="itemize">
- <!-- l. 209 --><p class="noindent">Digital recording made from Scarlett 18i8 of the converted ADAT stream seem to have the full 24-bit
- resolution. However this might be due to interpolation done by the audio interface or the operating
- system. I do not have proper equipment to verify the bit depth of the output data stream. As such,
- only 20 bits out output resolution is guaranteed.
- </p></li>
- <li class="itemize">
- <!-- l. 215 --><p class="noindent">The optical output port is a tight fit. You have to insert the plug all the way in until you hear a click.</p></li></ul>
-<p><a id="x1-9001r9"></a></p>
- <h2 id="tocanch9" class="tvis"><span class="titlemark">10 </span> <a id="x1-1000010"></a>Specifications</h2>
-<div class="center">
-<!-- l. 220 --><p class="noindent">
-</p>
- <table class="tabular" id="TBL-4"><colgroup id="TBL-4-1g"><col id="TBL-4-1"></colgroup><colgroup id="TBL-4-2g"><col id="TBL-4-2"></colgroup><tbody><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-1-"><td class="td11" id="TBL-4-1-1" style="white-space:nowrap; text-align:left;"> Signal processing </td><td class="td11" id="TBL-4-1-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent">24-bit internal, 20-bit output </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-2-"><td class="td11" id="TBL-4-2-1" style="white-space:nowrap; text-align:left;"> Sampling rate </td><td class="td11" id="TBL-4-2-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent">44.1 kHz, 48 kHz </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-3-"><td class="td11" id="TBL-4-3-1" style="white-space:nowrap; text-align:left;"> Connectors </td><td class="td11" id="TBL-4-3-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent">R-BUS (Input only): DB-25<br class="newline">Digital output: ADAT Lightpipe (JIS F05 connector) </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-4-"><td class="td11" id="TBL-4-4-1" style="white-space:nowrap; text-align:left;"> Chipset </td><td class="td11" id="TBL-4-4-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent">coolaudio V1401 (Alesis AL1401 equiv.) </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-5-"><td class="td11" id="TBL-4-5-1" style="white-space:nowrap; text-align:left;"> Rated current </td><td class="td11" id="TBL-4-5-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent"><span class="cmmi-10x-x-109">&lt;</span>8 mA </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-6-"><td class="td11" id="TBL-4-6-1" style="white-space:nowrap; text-align:left;"> Rated power </td><td class="td11" id="TBL-4-6-2" style="white-space:normal; text-align:left;"> <!-- l. 232 --><p class="noindent"><span class="cmmi-10x-x-109">&lt;</span>0.04 W </p></td>
-</tr><tr class="hline"><td><hr></td><td><hr></td></tr></tbody></table></div>
-<p><a id="x1-10001r10"></a></p>
- <h2 id="tocanch10" class="tvis"><span class="titlemark">11 </span> <a id="x1-1100011"></a>Appendices</h2>
-<p><a id="x1-11001r1"></a></p>
- <h3 id="tocanch11" class="tvis"><span class="titlemark">11.1 </span> <a id="x1-120001"></a>Build instructions</h3>
-<!-- l. 240 --><p class="noindent">This is intended for people who didn’t end up with a pre-assembled board. If you already have a fully assembled
-board, you may ignore this section.
-</p><!-- l. 243 --><p class="indent"> If you have a kit, you may skip to step 3.
-<a id="x1-12001r1"></a>
-</p>
- <h4 id="tocanch12" class="tvis"><span class="titlemark">11.1.1 </span> <a id="x1-130001"></a>PCB production</h4>
-<!-- l. 247 --><p class="noindent">I assume if you have chosen to take this route, you know what you are doing.
-
-
-</p><!-- l. 249 --><p class="indent"> You’ll find Gerber files in the <span class="obeylines-h"><span class="verb"><span class="ectt-1095">out</span></span></span> directory of the project repository that you can upload to your favorite PCB
-production service provider. Or alternatively if you want to tweak the board you can open up the KiCad project
-files, which are also found in the project repository.
-</p><!-- l. 254 --><p class="indent"> Many PCB manufacturers will add a board identifier to each PCB they make and allow customization of where
-this identifier will be placed. The front side silkscreen text “Production ID” is reserved for this purpose. Please refer
-to the ordering instructions of your PCB manufacturer for the details. Usually this will involve changing
-the text to something specific to that manufacturer and selecting an option before submitting your
-order.
-<a id="x1-13001r13"></a>
-</p>
- <h4 id="tocanch13" class="tvis"><span class="titlemark">11.1.2 </span> <a id="x1-140002"></a>Bill of materials</h4>
- <div class="minipage"><div class="center">
-<!-- l. 264 --><p class="noindent">
-</p>
-<div class="tabular"> <table class="tabular" id="TBL-5"><colgroup id="TBL-5-1g"><col id="TBL-5-1"></colgroup><colgroup id="TBL-5-2g"><col id="TBL-5-2"></colgroup><colgroup id="TBL-5-3g"><col id="TBL-5-3"></colgroup><tbody><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-1-"><td class="td11" id="TBL-5-1-1" style="white-space:nowrap; text-align:center;"> Designator </td><td class="td11" id="TBL-5-1-2" style="white-space:nowrap; text-align:center;"> Part </td><td class="td11" id="TBL-5-1-3" style="white-space:nowrap; text-align:center;"> Qty </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-2-"><td class="td11" id="TBL-5-2-1" style="white-space:nowrap; text-align:center;"> C1 </td><td class="td11" id="TBL-5-2-2" style="white-space:nowrap; text-align:center;"> 16V 100<span class="cmmi-10x-x-109">μ</span>F electrolytic </td><td class="td11" id="TBL-5-2-3" style="white-space:nowrap; text-align:center;"> 1 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-3-"><td class="td11" id="TBL-5-3-1" style="white-space:nowrap; text-align:center;"> C2, C3, C4 </td><td class="td11" id="TBL-5-3-2" style="white-space:nowrap; text-align:center;"> 50V 0.1<span class="cmmi-10x-x-109">μ</span>F ceramic </td><td class="td11" id="TBL-5-3-3" style="white-space:nowrap; text-align:center;"> 3 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-4-"><td class="td11" id="TBL-5-4-1" style="white-space:nowrap; text-align:center;"> CN1 </td><td class="td11" id="TBL-5-4-2" style="white-space:nowrap; text-align:center;"> Cliff FCR684208T </td><td class="td11" id="TBL-5-4-3" style="white-space:nowrap; text-align:center;"> 1 </td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-5-"><td class="td11" id="TBL-5-5-1" style="white-space:nowrap; text-align:center;"> D1 </td> <td class="td11" id="TBL-5-5-2" style="white-space:nowrap; text-align:center;"> 1N4002 </td> <td class="td11" id="TBL-5-5-3" style="white-space:nowrap; text-align:center;"> 1</td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-6-"><td class="td11" id="TBL-5-6-1" style="white-space:nowrap; text-align:center;"> D2 </td><td class="td11" id="TBL-5-6-2" style="white-space:nowrap; text-align:center;"> Red GaAsP / GaP LED 3mm <span class="footnote-mark"><a id="fn1x2-bk" href="#fn1x2"><sup class="textsuperscript">a</sup></a></span><a id="x1-14001f0"></a> </td><td class="td11" id="TBL-5-6-3" style="white-space:nowrap; text-align:center;"> 1 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-7-"><td class="td11" id="TBL-5-7-1" style="white-space:nowrap; text-align:center;"> J1 </td><td class="td11" id="TBL-5-7-2" style="white-space:nowrap; text-align:center;"> Adam Tech DB25-SL-25 <span class="footnote-mark"><a id="fn2x2-bk" href="#fn2x2"><sup class="textsuperscript">b</sup></a></span><a id="x1-14002f0"></a> </td><td class="td11" id="TBL-5-7-3" style="white-space:nowrap; text-align:center;"> 1 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-8-"><td class="td11" id="TBL-5-8-1" style="white-space:nowrap; text-align:center;"> R1 </td><td class="td11" id="TBL-5-8-2" style="white-space:nowrap; text-align:center;"> 1/4W 1k<span class="cmr-10x-x-109">Ω </span></td><td class="td11" id="TBL-5-8-3" style="white-space:nowrap; text-align:center;"> 1 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-9-"><td class="td11" id="TBL-5-9-1" style="white-space:nowrap; text-align:center;"> R2 </td><td class="td11" id="TBL-5-9-2" style="white-space:nowrap; text-align:center;"> 1/4W 2.2k<span class="cmr-10x-x-109">Ω </span></td><td class="td11" id="TBL-5-9-3" style="white-space:nowrap; text-align:center;"> 1 </td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-10-"><td class="td11" id="TBL-5-10-1" style="white-space:nowrap; text-align:center;"> U1 </td><td class="td11" id="TBL-5-10-2" style="white-space:nowrap; text-align:center;"> SN74LS04N </td><td class="td11" id="TBL-5-10-3" style="white-space:nowrap; text-align:center;"> 1 </td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-5-11-"><td class="td11" id="TBL-5-11-1" style="white-space:nowrap; text-align:center;"> U2 </td> <td class="td11" id="TBL-5-11-2" style="white-space:nowrap; text-align:center;"> coolaudio V1401 </td> <td class="td11" id="TBL-5-11-3" style="white-space:nowrap; text-align:center;"> 1</td>
-</tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr></tbody></table>
-</div></div></div>
-<p><a id="x1-14003r14"></a></p>
- <h4 id="tocanch14" class="tvis"><span class="titlemark">11.1.3 </span> <a id="x1-150003"></a>Assembling</h4>
-<!-- l. 284 --><p class="noindent">Again, I assume if you are assembling the board yourself, you possess the appropriate set of skills. It’s now time for
-them to shine. Most components are through hole so it should be easy. If it’s not already obvious, solder the only
-SMD chip first.
-<a id="x1-15001r15"></a>
-</p>
- <h4 id="tocanch15" class="tvis"><span class="titlemark">11.1.4 </span> <a id="x1-160004"></a>Testing</h4>
-<!-- l. 291 --><p class="noindent">If you have a 5V power source, it is suggested to test your assembled board first. Supply 5V between the anode of
-the D1 and the metal shell of the DB-25 connector (GND). Check if anything pops.
-<a id="x1-16001r12"></a>
-</p>
- <h3 id="tocanch16" class="tvis"><span class="titlemark">11.2 </span> <a id="x1-170002"></a>Useful links</h3>
- <ul class="itemize1">
- <li class="itemize">
- <!-- l. 298 --><p class="noindent">R-BUS project homepage: <a class="url" href="https://chrisoft.org/rbusif"><span class="ectt-1095">https://chrisoft.org/rbusif</span></a>
- </p></li>
- <li class="itemize">
- <!-- l. 299 --><p class="noindent">Project repository for this board: <a class="url" href="https://cgit.chrisoft.org/rbus-adat.git"><span class="ectt-1095">https://cgit.chrisoft.org/rbus-adat.git</span></a>
- </p></li>
- <li class="itemize">
- <!-- l. 300 --><p class="noindent">Online version of this manual: <br class="newline"><a class="url" href="https://chrisoft.org/blog/post/rbus-adat-m.html"><span class="ectt-1095">https://chrisoft.org/blog/post/rbus-adat-m.html</span></a> (html version)<br class="newline"><a class="url" href="https://filestorage.chrisoft.org/blog/data/rbus_adat_m.pdf"><span class="ectt-1095">https://filestorage.chrisoft.org/blog/data/rbus_adat_m.pdf</span></a> (pdf version)</p></li></ul>
-<p><a id="x1-17001r17"></a></p>
- <h3 id="tocanch17" class="tvis"><span class="titlemark">11.3 </span> <a id="x1-180003"></a>Schematic</h3><div class="center">
-<!-- l. 306 --><p class="noindent">
-
-
-</p><!-- l. 307 --><p class="noindent"> <img alt="PIC" width="398" src="//filestorage.chrisoft.org/blog/img/schr-.png" decoding="async"></p></div>
-
-
-<p><a id="x1-18001r18"></a></p>
- <h3 id="tocanch18" class="tvis"><span class="titlemark">11.4 </span> <a id="x1-190004"></a>Circuit board</h3>
-<!-- l. 312 --><p class="noindent">Front side </p>
-<div class="center">
-<!-- l. 313 --><p class="noindent">
-</p><!-- l. 314 --><p class="noindent"> <img alt="PIC" width="683" src="//filestorage.chrisoft.org/blog/img/pcbfr-.png" decoding="async"></p></div>
-
-
-<!-- l. 317 --><p class="noindent">Back side </p>
-<div class="center">
-<!-- l. 318 --><p class="noindent">
-</p><!-- l. 319 --><p class="noindent"> <img alt="PIC" width="683" src="//filestorage.chrisoft.org/blog/img/pcbbr-.png" decoding="async"></p></div>
-
-
- <div class="footnotes"><!-- l. 272 --><p class="noindent"><span class="footnote-mark"><a id="fn1x2" href="#fn1x2-bk"><sup class="textsuperscript">a</sup></a></span><span class="ec-qplr-x-x-90">5mm used in prototypes</span></p>
-<!-- l. 273 --><p class="noindent"><span class="footnote-mark"><a id="fn2x2" href="#fn2x2-bk"><sup class="textsuperscript">b</sup></a></span><span class="ec-qplr-x-x-90">Or any right angle DB-25 receptacle with 8.1mm backset spacing</span></p> </div>
-
-
-</div><br><hr>
- <div class="TText" id="notediv" style="font-size:80%;"></div>
- <div id="insanch" style="height:3em;"></div>
- <div id="footer" style="">
- <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
- <div style="text-align:center;" class="TText">
- Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
- <br>
- Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
- </div>
- </div>
- <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
- </div>
- </div>
- <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
- <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
- <div id="keyhint" style="margin-bottom:8px;"></div>
- <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
- <div style="height:2.25em;">
- <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
- <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
- </div>
-
- </div>
-
-
-</div></body></html> \ No newline at end of file