summaryrefslogtreecommitdiff
path: root/blog
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2021-06-03 09:58:38 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2021-06-03 09:58:38 +0800
commitc4956073e1328700e3af3d008e1249de40201221 (patch)
treebaabf09421003571351db3d93a8ae5bab5aef0e4 /blog
parent9e6c738c255559a1d4f34b54626d5a11e155219e (diff)
downloadweb-c4956073e1328700e3af3d008e1249de40201221.tar.xz
blog update.
Diffstat (limited to 'blog')
-rw-r--r--blog/list/0.html56
-rw-r--r--blog/list/1.html58
-rw-r--r--blog/list/2.html58
-rw-r--r--blog/list/3.html58
-rw-r--r--blog/list/4.html58
-rw-r--r--blog/list/5.html58
-rw-r--r--blog/list/6.html58
-rw-r--r--blog/list/7.html58
-rw-r--r--blog/list/8.html55
-rw-r--r--blog/list/9.html71
-rw-r--r--blog/list/acmicpc/0.html2
-rw-r--r--blog/list/c++/0.html2
-rw-r--r--blog/list/computer-repairing/0.html2
-rw-r--r--blog/list/contest/0.html2
-rw-r--r--blog/list/daily-life/0.html2
-rw-r--r--blog/list/daily-life/1.html2
-rw-r--r--blog/list/design/0.html2
-rw-r--r--blog/list/devel/0.html2
-rw-r--r--blog/list/devel/1.html2
-rw-r--r--blog/list/device-review/0.html52
-rw-r--r--blog/list/device-review/1.html43
-rw-r--r--blog/list/garbage/0.html46
-rw-r--r--blog/list/garbage/1.html46
-rw-r--r--blog/list/garbage/2.html46
-rw-r--r--blog/list/garbage/3.html41
-rw-r--r--blog/list/hands-on/0.html42
-rw-r--r--blog/list/interactive/0.html2
-rw-r--r--blog/list/js/0.html2
-rw-r--r--blog/list/linux/0.html2
-rw-r--r--blog/list/midi/0.html45
-rw-r--r--blog/list/music/0.html45
-rw-r--r--blog/list/opengl/0.html2
-rw-r--r--blog/list/qmidiplayer/0.html2
-rw-r--r--blog/list/qt/0.html2
-rw-r--r--blog/list/sophistry/0.html68
-rw-r--r--blog/list/sophistry/1.html53
l---------blog/list/special-page/index.html1
-rw-r--r--blog/list/web/0.html5
-rw-r--r--blog/post/2018-12-06.html79
-rw-r--r--blog/post/2019-04-25.html428
-rw-r--r--blog/post/2021-06-03.html102
41 files changed, 662 insertions, 1098 deletions
diff --git a/blog/list/0.html b/blog/list/0.html
index 1b1a750..8f52684 100644
--- a/blog/list/0.html
+++ b/blog/list/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -89,26 +57,26 @@ loadTheme();
<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-04</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>
+ <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="">#device-review #midi #music #hands-on</span>
- <span class="right" id="">2019-04-25/2019-07-09</span></div>
+ <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span>
+ <span class="right" id="">2021-06-03/2021-06-03</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>
+ <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 #random-xp #garbage</span>
- <span class="right" id="">2019-02-13/2019-07-25</span></div>
+ <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web</span>
+ <span class="right" id="">2019-09-04/2019-11-13</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>
+ <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 #hands-on</span>
- <span class="right" id="">2018-12-06/2019-07-25</span></div>
+ <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/2021-01-31</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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">1/10</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">
diff --git a/blog/list/1.html b/blog/list/1.html
index da11f97..23020b2 100644
--- a/blog/list/1.html
+++ b/blog/list/1.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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-25</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-31</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>
@@ -93,22 +71,12 @@ loadTheme();
<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-13</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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">2/10</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">
diff --git a/blog/list/2.html b/blog/list/2.html
index fa9b4ec..98f9833 100644
--- a/blog/list/2.html
+++ b/blog/list/2.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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-13</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>
@@ -93,22 +71,12 @@ loadTheme();
<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-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>
<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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">3/10</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">
diff --git a/blog/list/3.html b/blog/list/3.html
index b86fed7..40c42e7 100644
--- a/blog/list/3.html
+++ b/blog/list/3.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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>
@@ -93,22 +71,12 @@ loadTheme();
<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-13</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 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/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/2.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">4/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">4/10</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">
diff --git a/blog/list/4.html b/blog/list/4.html
index dd7d1e2..1b31f55 100644
--- a/blog/list/4.html
+++ b/blog/list/4.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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/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-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>
@@ -93,22 +71,12 @@ loadTheme();
<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/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-13</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>
<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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">5/10</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">
diff --git a/blog/list/5.html b/blog/list/5.html
index b9fad4b..ae61983 100644
--- a/blog/list/5.html
+++ b/blog/list/5.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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-13</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>
@@ -93,22 +71,12 @@ loadTheme();
<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 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-13</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="/blog/list/4.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">6/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">6/10</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">
diff --git a/blog/list/6.html b/blog/list/6.html
index 5146bbb..a3becf5 100644
--- a/blog/list/6.html
+++ b/blog/list/6.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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-13</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>
@@ -93,22 +71,12 @@ loadTheme();
<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 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>
<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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">7/10</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">
diff --git a/blog/list/7.html b/blog/list/7.html
index 3f21531..bb44d07 100644
--- a/blog/list/7.html
+++ b/blog/list/7.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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>
@@ -93,22 +71,12 @@ loadTheme();
<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 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>
<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/9</span>
+ <span style="text-align:center;display:table-cell;" id="page">8/10</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">
diff --git a/blog/list/8.html b/blog/list/8.html
index 3e2f783..ef6e19f 100644
--- a/blog/list/8.html
+++ b/blog/list/8.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,16 @@ loadTheme();
<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>
@@ -93,18 +71,13 @@ loadTheme();
<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 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/7.html">&lt;&lt;</a></span>
- <span style="text-align:center;display:table-cell;" id="page">9/9</span>
- <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">&gt;&gt;</a></span>
+ <span style="text-align:center;display:table-cell;" id="page">9/10</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
diff --git a/blog/list/9.html b/blog/list/9.html
new file mode 100644
index 0000000..2cfd383
--- /dev/null
+++ b/blog/list/9.html
@@ -0,0 +1,71 @@
+<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/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/8.html">&lt;&lt;</a></span>
+ <span style="text-align:center;display:table-cell;" id="page">10/10</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/0.html b/blog/list/acmicpc/0.html
index 75ec463..a89d8ad 100644
--- a/blog/list/acmicpc/0.html
+++ b/blog/list/acmicpc/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/c++/0.html b/blog/list/c++/0.html
index c0b6ebb..3e894bd 100644
--- a/blog/list/c++/0.html
+++ b/blog/list/c++/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/computer-repairing/0.html b/blog/list/computer-repairing/0.html
index 2721055..b6ed5a8 100644
--- a/blog/list/computer-repairing/0.html
+++ b/blog/list/computer-repairing/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/contest/0.html b/blog/list/contest/0.html
index e311964..d84e8b2 100644
--- a/blog/list/contest/0.html
+++ b/blog/list/contest/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/daily-life/0.html b/blog/list/daily-life/0.html
index 027e205..3701e9c 100644
--- a/blog/list/daily-life/0.html
+++ b/blog/list/daily-life/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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/toxic-stuff">toxic-stuff</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>
diff --git a/blog/list/daily-life/1.html b/blog/list/daily-life/1.html
index d4ecb7a..3e81752 100644
--- a/blog/list/daily-life/1.html
+++ b/blog/list/daily-life/1.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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/toxic-stuff">toxic-stuff</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>
diff --git a/blog/list/design/0.html b/blog/list/design/0.html
index d683233..293d18e 100644
--- a/blog/list/design/0.html
+++ b/blog/list/design/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/devel/0.html b/blog/list/devel/0.html
index 50761d9..34bccd8 100644
--- a/blog/list/devel/0.html
+++ b/blog/list/devel/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/devel/1.html b/blog/list/devel/1.html
index 3f2f505..a0ff8bd 100644
--- a/blog/list/devel/1.html
+++ b/blog/list/devel/1.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/device-review/0.html b/blog/list/device-review/0.html
index fc2b691..0add56a 100644
--- a/blog/list/device-review/0.html
+++ b/blog/list/device-review/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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 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/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/toxic-stuff">toxic-stuff</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>
@@ -79,15 +47,20 @@ loadTheme();
<div id="postslist">
<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/2021-03-04</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/2019-07-09</span></div>
+ <span class="right" id="">2019-04-25/2021-01-31</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/2019-07-25</span></div>
+ <span class="right" id="">2018-12-06/2021-01-31</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>
@@ -98,11 +71,6 @@ loadTheme();
<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-13</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-13</span></div>
</div></div>
<div id="insanch" style="height:5em;"></div>
<div id="footer">
diff --git a/blog/list/device-review/1.html b/blog/list/device-review/1.html
index f22d083..646b341 100644
--- a/blog/list/device-review/1.html
+++ b/blog/list/device-review/1.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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 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/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/toxic-stuff">toxic-stuff</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>
@@ -79,6 +47,11 @@ loadTheme();
<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-13</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>
diff --git a/blog/list/garbage/0.html b/blog/list/garbage/0.html
index 7af0364..63d6bfd 100644
--- a/blog/list/garbage/0.html
+++ b/blog/list/garbage/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -84,6 +52,11 @@ loadTheme();
<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/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-03</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>
@@ -98,11 +71,6 @@ loadTheme();
<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-13</span></div>
</div></div>
<div id="insanch" style="height:5em;"></div>
<div id="footer">
diff --git a/blog/list/garbage/1.html b/blog/list/garbage/1.html
index a8504a6..0b7cd89 100644
--- a/blog/list/garbage/1.html
+++ b/blog/list/garbage/1.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,11 @@ loadTheme();
<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-13</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>
@@ -98,11 +71,6 @@ loadTheme();
<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>
<div id="insanch" style="height:5em;"></div>
<div id="footer">
diff --git a/blog/list/garbage/2.html b/blog/list/garbage/2.html
index 9160897..c161b21 100644
--- a/blog/list/garbage/2.html
+++ b/blog/list/garbage/2.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,11 @@ loadTheme();
<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-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>
@@ -98,11 +71,6 @@ loadTheme();
<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-13</span></div>
</div></div>
<div id="insanch" style="height:5em;"></div>
<div id="footer">
diff --git a/blog/list/garbage/3.html b/blog/list/garbage/3.html
index 94b4bc3..803ba41 100644
--- a/blog/list/garbage/3.html
+++ b/blog/list/garbage/3.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -79,6 +47,11 @@ loadTheme();
<div id="postslist">
<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-13</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>
diff --git a/blog/list/hands-on/0.html b/blog/list/hands-on/0.html
index 6c863fa..2b2abc5 100644
--- a/blog/list/hands-on/0.html
+++ b/blog/list/hands-on/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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 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/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/toxic-stuff">toxic-stuff</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>
@@ -82,12 +50,12 @@ loadTheme();
<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/2019-07-09</span></div>
+ <span class="right" id="">2019-04-25/2021-01-31</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/2019-07-25</span></div>
+ <span class="right" id="">2018-12-06/2021-01-31</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>
diff --git a/blog/list/interactive/0.html b/blog/list/interactive/0.html
index c3477e2..23d5329 100644
--- a/blog/list/interactive/0.html
+++ b/blog/list/interactive/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/js/0.html b/blog/list/js/0.html
index 314dc01..c1b5cdc 100644
--- a/blog/list/js/0.html
+++ b/blog/list/js/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/linux/0.html b/blog/list/linux/0.html
index 1cb5050..0cd1d65 100644
--- a/blog/list/linux/0.html
+++ b/blog/list/linux/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/midi/0.html b/blog/list/midi/0.html
index 9ec8dc0..305cafe 100644
--- a/blog/list/midi/0.html
+++ b/blog/list/midi/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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 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/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/toxic-stuff">toxic-stuff</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>
@@ -79,10 +47,15 @@ loadTheme();
<div id="postslist">
<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/2021-03-04</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/2019-07-09</span></div>
+ <span class="right" id="">2019-04-25/2021-01-31</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>
diff --git a/blog/list/music/0.html b/blog/list/music/0.html
index aec245a..6fc26fb 100644
--- a/blog/list/music/0.html
+++ b/blog/list/music/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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 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/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/toxic-stuff">toxic-stuff</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>
@@ -79,10 +47,15 @@ loadTheme();
<div id="postslist">
<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/2021-03-04</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/2019-07-09</span></div>
+ <span class="right" id="">2019-04-25/2021-01-31</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>
diff --git a/blog/list/opengl/0.html b/blog/list/opengl/0.html
index 6e4a8d1..00700a2 100644
--- a/blog/list/opengl/0.html
+++ b/blog/list/opengl/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/qmidiplayer/0.html b/blog/list/qmidiplayer/0.html
index d3719b6..9b8b0f3 100644
--- a/blog/list/qmidiplayer/0.html
+++ b/blog/list/qmidiplayer/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/qt/0.html b/blog/list/qt/0.html
index 945af5c..813db07 100644
--- a/blog/list/qt/0.html
+++ b/blog/list/qt/0.html
@@ -71,7 +71,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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>
diff --git a/blog/list/sophistry/0.html b/blog/list/sophistry/0.html
index 098564d..af7f76d 100644
--- a/blog/list/sophistry/0.html
+++ b/blog/list/sophistry/0.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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/toxic-stuff">toxic-stuff</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>
@@ -79,30 +47,30 @@ loadTheme();
<div id="postslist">
<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>
+ <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-06-30.html">A Transvestite Adventure</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 style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#toxic-stuff #sophistry</span>
+ <span class="right" id="">2020-06-30/2020-07-13</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>
+ <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2020-04-11.html">"The Open Source Mindset"</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 style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span>
+ <span class="right" id="">2020-04-11/2020-11-17</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>
+ <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="">#sophistry #garbage</span>
- <span class="right" id="">2018-05-18/2018-10-11</span></div>
+ <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #sophistry</span>
+ <span class="right" id="">2019-06-24/2020-05-25</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>
+ <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 #acmicpc</span>
- <span class="right" id="">2018-05-08/2019-02-13</span></div>
+ <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-04-17.html">The "Deepin is spyware" problem</a></h3>
+ <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="">#linux #garbage #sophistry</span>
- <span class="right" id="">2018-04-17/2018-10-11</span></div>
+ <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">
diff --git a/blog/list/sophistry/1.html b/blog/list/sophistry/1.html
index 7c53715..59113cc 100644
--- a/blog/list/sophistry/1.html
+++ b/blog/list/sophistry/1.html
@@ -4,6 +4,7 @@
<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">
@@ -25,41 +26,8 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -71,7 +39,7 @@ loadTheme();
<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/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/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul>
+ <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/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/toxic-stuff">toxic-stuff</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>
@@ -79,6 +47,21 @@ loadTheme();
<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-13</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/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>
diff --git a/blog/list/special-page/index.html b/blog/list/special-page/index.html
new file mode 120000
index 0000000..359ee56
--- /dev/null
+++ b/blog/list/special-page/index.html
@@ -0,0 +1 @@
+0.html \ No newline at end of file
diff --git a/blog/list/web/0.html b/blog/list/web/0.html
index 6c08c71..8828be7 100644
--- a/blog/list/web/0.html
+++ b/blog/list/web/0.html
@@ -79,6 +79,11 @@ loadTheme();
<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-13</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>
diff --git a/blog/post/2018-12-06.html b/blog/post/2018-12-06.html
index 377335e..21faccb 100644
--- a/blog/post/2018-12-06.html
+++ b/blog/post/2018-12-06.html
@@ -4,6 +4,7 @@
<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>
<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>
@@ -30,42 +31,9 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
_decryptonload();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -123,12 +91,15 @@ loadTheme();
<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>(图丢了,请自行想象两个不同时期的菜鸡互啄的场景(不是))</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>
-<p>图</p>
-<p>可以看到,四侧边框均有所膨胀(由于对齐问题,左侧的边框比右侧膨胀得多些)。 作为一个3元的方便面包装上能画出牛肉的国家的公民,对这样的「虚假宣传」当然是司空见惯。 但是毕竟苹果都不会拿渲染图来糊弄人,小米这种「果粉」企业,就不能从苹果身上学点好东西吗(</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>
@@ -136,25 +107,49 @@ loadTheme();
<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>图</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>图二枚</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></div>
+ <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>
diff --git a/blog/post/2019-04-25.html b/blog/post/2019-04-25.html
index 8bb7c20..e2f6b08 100644
--- a/blog/post/2019-04-25.html
+++ b/blog/post/2019-04-25.html
@@ -4,6 +4,7 @@
<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>
<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>
@@ -30,42 +31,9 @@ function ol()
else unsetevents();
}
window.onresize();
+ loadTheme();
_decryptonload();
}
-function loadTheme(){
- var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
- if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
- var ent="";
- var d=new Date();
- if(thm[0]=='z')
- {
- var m=d.getMonth()+1;
- if(m>=3&&m<6)thm='0'+thm[1];
- else if(m>=6&&m<9)thm='1'+thm[1];
- else if(m>=9&&m<12)thm='2'+thm[1];
- else thm='3'+thm[1];
- }
- if(thm[1]=='z')
- {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
- ent=`theme${thm}`;
- var R=new RegExp('theme[0-4][ab]');
- for(var i=0;i<document.styleSheets.length;++i)
- {
- if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
- document.styleSheets[i].disabled=true;
- else document.styleSheets[i].disabled=false;
- }
- var thmcolor="";
- switch(thm[0])
- {
- case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
- case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
- case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
- case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
- }
- document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
-}
-loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
@@ -81,10 +49,10 @@ loadTheme();
<li id="tocouter">
<span>Table of Contents</span>
<ul id="tocroot">
- <li><a class="toctarg" href="#tocanch0"><em>STUDIO Canvas</em> 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></ul></li><li><a class="toctarg" href="#tocanch7">Working with the SD-80</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch8">Fighting against latency</a></li><li><a class="toctarg" href="#tocanch9">Recording</a></li><li><a class="toctarg" href="#tocanch10">Editing the sounds</a></li><li><a class="toctarg" href="#tocanch11">Impact on the workflow</a></li></ul></li><li><a class="toctarg" href="#tocanch12">Quirks</a></li><li><a class="toctarg" href="#tocanch13">Beneath the chassis</a></li><li><a class="toctarg" href="#tocanch14">What the manual doesn't tell</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch15">Testing mode</a></li><li><a class="toctarg" href="#tocanch16">Messing around sans the chassis</a></li><li><a class="toctarg" href="#tocanch17">Chart A</a></li><li><a class="toctarg" href="#tocanch18">Chart B</a></li></ul></li><li><a class="toctarg" href="#tocanch19">Things to do besides imitating ZUN</a></li><li><a class="toctarg" href="#tocanch20">Newer Roland sound modules?</a></li><li><a class="toctarg" href="#tocanch21">If you want to learn more ...</a></li></ul>
+ <li><a class="toctarg" href="#tocanch0"><em>STUDIO Canvas</em> 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="TOP.html">Next 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">
@@ -147,12 +115,14 @@ for(let x of al)
});
</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>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/list/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>
<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>
+<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>
@@ -168,7 +138,7 @@ for(let x of al)
</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.
+<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>
@@ -180,20 +150,20 @@ for(let x of al)
</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 cloest 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 availble: 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>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>
+<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>
+<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>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>
@@ -201,40 +171,40 @@ for(let x of al)
<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>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>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>
+<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>
+<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="" 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>
+<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>
+<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="" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_02_SD-80.ogg">
</audio>
-<p>SD-80's take on th06_02.mid</p>
+<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 modultion depth should be 0.</p>
+<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>
+<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="" 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>
+<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="" 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>
+<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">
@@ -340,9 +310,9 @@ Drums
</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>
+<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>
@@ -359,7 +329,7 @@ Drums
</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>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">
@@ -370,52 +340,62 @@ Drums
<div style="text-align:center">
<audio controls="" 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>
+<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>
+<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="" 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>
-<h2 id="tocanch7" class="tvis">Working with the SD-80</h2>
-<h3 id="tocanch8" 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="tocanch9" 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="tocanch10" 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="n6" href="#note6" class="note">[6]</a></p>
+<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="n7" href="#note7" class="note">[7]</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="n8" href="#note8" class="note">[8]</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="tocanch11" 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 obsecure parameters) for this purpose, and DAW software doesn't have great support for system exclusive messages in general.</p>
-<h2 id="tocanch12" class="tvis">Quirks</h2>
+<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="n9" href="#note9" class="note">[9]</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' (persumably '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="n10" href="#note10" class="note">[10]</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="n11" href="#note11" class="note">[11]</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're 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="tocanch13" 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>
+<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>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 persumably for insulation. Rated voltage for the module seems to be changable by using different pin layouts on the input side. The power supply module is made of two separate boards. The two boards are conncted with two wide connectors that only have a few pins on them. I would guess the pin layout on the connectos sets the rated voltage of the module but I'm not sure. I would definitely test that out someday.</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 below.</p>
<table>
<tbody><tr>
@@ -442,35 +422,35 @@ Drums
<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="tocanch14" 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="n12" href="#note12" class="note">[12]</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="n13" href="#note13" class="note">[13]</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 persumably for debugging near the CPU.</p>
-<h3 id="tocanch15" 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 desprate 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>
+<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" caption="Special boot modes in the SD-80">
+<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>
+<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>
+<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>
+<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>
@@ -489,7 +469,7 @@ Push button to check
<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 switing 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>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>
@@ -514,130 +494,130 @@ Boot:5170[5170]1.01</code></pre>
<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>Persumably 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>
+<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="tocanch16" 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 temprature 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 temprature, which is probably not a very good thing as there're ninno 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 unstability are specific to my machine.</p>
-<h3 id="tocanch17" class="tvis">Chart A</h3>
-<div class="collapse" caption="Comparison of internal components found in selected Roland devices">
-<p><a id="n14" href="#note14" class="note">[14]</a></p>
+<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 width="6%">
-<col width="16%">
-<col width="4%">
-<col width="31%">
-<col width="12%">
-<col width="28%">
+<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 align="center">Model</th>
-<th align="center">Tone Generator</th>
-<th align="center">CPU</th>
+<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 align="center"># of parts</th>
-<th align="center"># of polyphony ('voices')</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 align="center">SC-55</td>
-<td align="center">TC24SC201AF-002 (PCM Custom)</td>
-<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/532</a></td>
+<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 align="center">16</td>
-<td align="center">24</td>
+<td style="text-align: center;">16</td>
+<td style="text-align: center;">24</td>
</tr>
<tr class="even">
-<td align="center">SC-88</td>
-<td align="center">MBCS30109 (Custom Sound Generator) 'XP'</td>
-<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td>
+<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 align="center">32</td>
-<td align="center">64</td>
+<td style="text-align: center;">32</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="odd">
-<td align="center">SC-88Pro</td>
-<td align="center">RA01-005 (Custom Sound Generator) 'XP3'</td>
-<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td>
+<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 align="center">32</td>
-<td align="center">64</td>
+<td style="text-align: center;">32</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="even">
-<td align="center">SC-8850</td>
-<td align="center">2*RA09-002 (Custom) 'XP6'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td>
+<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 align="center">64</td>
-<td align="center">128</td>
+<td style="text-align: center;">64</td>
+<td style="text-align: center;">128</td>
</tr>
<tr class="odd">
-<td align="center">SC-8820</td>
-<td align="center">RA09-002 (Custom) 'XP6'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td>
+<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 align="center">32</td>
-<td align="center">64</td>
+<td style="text-align: center;">32</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="even">
-<td align="center">JV-1080</td>
-<td align="center">MBCS30109B (XP Chip) 'XP'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td>
+<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 align="center">16</td>
-<td align="center">64</td>
+<td style="text-align: center;">16</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="odd">
-<td align="center">JV-2080</td>
-<td align="center">TC170C200AF-005 (TG) 'XP'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td>
+<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 align="center">16</td>
-<td align="center">64</td>
+<td style="text-align: center;">16</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="even">
-<td align="center">XV-5080</td>
-<td align="center">2*TC223C660CF-503 (RA08-503) 'XV'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7040/sh7040.html">SH7042</a></td>
+<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 align="center">32</td>
-<td align="center">128</td>
+<td style="text-align: center;">32</td>
+<td style="text-align: center;">128</td>
</tr>
<tr class="odd">
-<td align="center">XV-5050</td>
-<td align="center">TC223C660CF-503 (RA08-503) 'XV'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7016</a></td>
+<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 align="center">16</td>
-<td align="center">64</td>
+<td style="text-align: center;">16</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="even">
-<td align="center">MC-909</td>
-<td align="center">TC223C660CF-503 (RA08-503) 'XV'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a> @ 128MHz</td>
+<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 align="center">16</td>
-<td align="center">64</td>
+<td style="text-align: center;">16</td>
+<td style="text-align: center;">64</td>
</tr>
<tr class="odd">
-<td align="center">SD-80</td>
-<td align="center">2*TC223C660CF-503 (RA08-503) 'XV'</td>
-<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a></td>
+<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 align="center">32</td>
-<td align="center">128</td>
+<td style="text-align: center;">32</td>
+<td style="text-align: center;">128</td>
</tr>
</tbody>
</table>
</div>
-<h3 id="tocanch18" class="tvis">Chart B</h3>
-<div class="collapse" caption="List of integrated circuit chips on SD-80 main board">
+<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>
@@ -664,7 +644,7 @@ IC 1
</tr>
<tr>
<td>
-<a href="SD-80_IC2.jpg">IC 2</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC2.jpg">IC 2</a>
</td>
<td>
6417706 SH3 BC13008 133 0413
@@ -675,7 +655,7 @@ IC 1
</tr>
<tr>
<td>
-<a href="SD-80_IC3.jpg">IC 3</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC3.jpg">IC 3</a>
</td>
<td>
LH28F 160BJE-BTL80 SHARP JAPAN 0428 7xN
@@ -686,7 +666,7 @@ Flash Memory (16Mbit)
</tr>
<tr>
<td>
-<a href="SD-80_IC4.jpg">IC 4, 6</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC4.jpg">IC 4, 6</a>
</td>
<td>
SANYO LC381616IET-70 KZA7G0CD1 0042
@@ -697,10 +677,10 @@ SDRAM (16Mbit)
</tr>
<tr>
<td>
-<a href="SD-80_IC2.jpg">IC 5</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC2.jpg">IC 5</a>
</td>
<td>
-'H5' or '115' (illegible)
+‘H5’ or ‘115’ (illegible)
</td>
<td>
(5-pin) Unknown
@@ -719,7 +699,7 @@ NAND Gate
</tr>
<tr>
<td>
-IC <a href="SD-80_IC2.jpg">8</a>, <a href="SD-80_IC27.jpg">20, 22~25</a>
+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
@@ -730,7 +710,7 @@ Bus Transceiver
</tr>
<tr>
<td>
-IC 9, <a href="SD-80_IC27.jpg">11</a>
+IC 9, <a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">11</a>
</td>
<td>
F P42AB VT245A
@@ -741,7 +721,7 @@ F P42AB VT245A
</tr>
<tr>
<td>
-<a href="SD-80_IC27.jpg">IC 10, 12</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC27.jpg">IC 10, 12</a>
</td>
<td>
0431H LVXC3245
@@ -766,7 +746,7 @@ Dual 2/4 Decoder
IC 14
</td>
<td>
-'H12' or 'H2' (illegible)
+‘H12’ or ‘H2’ (illegible)
</td>
<td>
(5-pin) Unknown
@@ -774,7 +754,7 @@ IC 14
</tr>
<tr>
<td>
-<a href="SD-80_datecode.jpg">IC 15</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_datecode.jpg">IC 15</a>
</td>
<td>
4D36 LV 04A
@@ -785,7 +765,7 @@ Hex Inverter
</tr>
<tr>
<td>
-<a href="SD-80_audio.jpg">IC 16</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC 16</a>
</td>
<td>
4D16 LV 14A
@@ -796,7 +776,7 @@ Hex Schmitt-Trigger Inverter
</tr>
<tr>
<td>
-<a href="SD-80_IC17.jpg">IC 17</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_IC17.jpg">IC 17</a>
</td>
<td>
Roland R02902867 137 352B100
@@ -818,13 +798,13 @@ Dual 2/4 Decoder
</tr>
<tr>
<td>
-IC <a href="SD-80_IC19.jpg">19</a>, <a href="SD-80_IC27.jpg">27</a>
+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')
+Voice Generator + LED &amp; LCD Controller etc. (‘XV’)
</td>
</tr>
<tr>
@@ -840,7 +820,7 @@ Inverter (CMOS)
</tr>
<tr>
<td>
-IC <a href="SD-80_IC26.jpg">26</a>, <a href="SD-80_IC29.jpg">30</a>
+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
@@ -851,29 +831,29 @@ EDO DRAM (16Mbit)
</tr>
<tr>
<td>
-<a href="SD-80_IC28.jpg">IC 28</a>
+<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?
+Wave ROM (128Mbit?) <a id="n16" href="#note16" class="note">[16]</a>
</td>
</tr>
<tr>
<td>
-<a href="SD-80_IC29.jpg">IC 29</a>
+<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?
+Wave ROM (128Mbit?)
</td>
</tr>
<tr>
<td>
-IC <a href="SD-80_audio.jpg">31</a>, 35
+IC <a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">31</a>, 35
</td>
<td>
4570 431
@@ -884,7 +864,7 @@ Regulator
</tr>
<tr>
<td>
-<a href="SD-80_audio.jpg">IC 32, 34</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC 32, 34</a>
</td>
<td>
PCM1716E 27ZDHFM
@@ -895,7 +875,7 @@ DAC
</tr>
<tr>
<td>
-<a href="SD-80_audio.jpg">IC 33</a>
+<a href="https://filestorage.chrisoft.org/blog/img/SD-80_audio.jpg">IC 33</a>
</td>
<td>
04 16H TC9271FS
@@ -917,18 +897,28 @@ A E
</tr>
</tbody></table>
</div>
-<h2 id="tocanch19" class="tvis">Things to do besides imitating ZUN</h2>
+<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="tocanch20" 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="n15" href="#note15" class="note">[15]</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="n16" href="#note16" class="note">[16]</a> SOUND Canvas / STUDIO Canvas product line years ago. So no more Roland sound modules for me I guess.</p>
-<h2 id="tocanch21" class="tvis">If you want to learn more ...</h2>
+<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>
@@ -936,7 +926,7 @@ A E
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>: The SD-90 do have <em>almost</em> the same level of editability as the SD-80, which can be achived 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="note7" href="#n7">[7]</a>: One on each stereo channel.<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: Vibrato uses a seprate LFO, so technically it's three.<br></span><span class="TText"><a id="note9" href="#n9">[9]</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="note10" href="#n10">[10]</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="note11" href="#n11">[11]</a>: The problem found in QMidiPlayer can be solved by simply lowering buffer size. <br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: In case you haven't yet noticed, there are two of those chips on the board.<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sh/kernel/cpu/sh3/clock-sh7706.c" class="uri">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="note14" href="#n14">[14]</a>: Data for all models except the SD-80 are from their service notes.<br></span><span class="TText"><a id="note15" href="#n15">[15]</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="note16" href="#n16">[16]</a>: compared to their JV/XV products.<br></span></div>
+ <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>
diff --git a/blog/post/2021-06-03.html b/blog/post/2021-06-03.html
new file mode 100644
index 0000000..de0f1c5
--- /dev/null
+++ b/blog/post/2021-06-03.html
@@ -0,0 +1,102 @@
+<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>
+<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></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="Privacy.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>(https://github.com/chirs241097/jline4mcdsrv)[My first Minecraft mod] (server only, and unrelated to gameplay – so probably uninteresting to anyone but server maintainers)</li>
+<li>(https://github.com/FluidSynth/fluidsynth/commits?author=chirs241097)[A few fluidsynth commits]</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>
+</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