OSDN Git Service

いろんなファイルを追加(最初)
authorhayao <shun819.mail@gmail.com>
Fri, 12 Apr 2019 10:30:39 +0000 (19:30 +0900)
committerhayao <shun819.mail@gmail.com>
Fri, 12 Apr 2019 10:30:47 +0000 (19:30 +0900)
31 files changed:
code/highlight.pack.js [new file with mode: 0644]
code/vs2015.css [new file with mode: 0644]
images/basix_grub.PNG [new file with mode: 0644]
images/basix_install1.PNG [new file with mode: 0644]
images/basix_install2.PNG [new file with mode: 0644]
images/basix_install3.PNG [new file with mode: 0644]
images/basix_install_done.PNG [new file with mode: 0644]
images/basix_installicon.PNG [new file with mode: 0644]
images/bodhibuilder1.PNG [new file with mode: 0644]
images/leafpad_bodhibuilder.PNG [new file with mode: 0644]
images/leafpad_linenumber.PNG [new file with mode: 0644]
images/virtualbox_done.PNG [new file with mode: 0644]
images/virtualbox_download_1.PNG [new file with mode: 0644]
images/virtualbox_download_2.PNG [new file with mode: 0644]
images/virtualbox_newmachine1.PNG [new file with mode: 0644]
images/virtualbox_newmachine2.PNG [new file with mode: 0644]
images/virtualbox_newmachine3.PNG [new file with mode: 0644]
images/virtualbox_newmachine4.PNG [new file with mode: 0644]
images/virtualbox_newmachine5.PNG [new file with mode: 0644]
images/virtualbox_newmachine6.PNG [new file with mode: 0644]
images/virtualbox_setting1.PNG [new file with mode: 0644]
images/virtualbox_setting2.PNG [new file with mode: 0644]
images/virtualbox_setting3.PNG [new file with mode: 0644]
page/about.html [new file with mode: 0644]
page/customize.html [new file with mode: 0644]
page/distribution.html [new file with mode: 0644]
page/makeiso.html [new file with mode: 0644]
page/preparation.html [new file with mode: 0644]
page/template.html [new file with mode: 0644]
style/main-resp.css [new file with mode: 0644]
style/main.css [new file with mode: 0644]

diff --git a/code/highlight.pack.js b/code/highlight.pack.js
new file mode 100644 (file)
index 0000000..cb5bed9
--- /dev/null
@@ -0,0 +1,2 @@
+/*! highlight.js v9.15.6 | BSD3 License | git.io/hljslicense */
+!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var E=[],u=Object.keys,N={},g={},n=/^(no-?highlight|plain|text)$/i,R=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="</span>",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function d(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function p(e){return n.test(e)}function l(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function M(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),d(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(c){function s(e){return e&&e.source||e}function o(e,n){return new RegExp(s(e),"m"+(c.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){var r={},a=function(t,e){c.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");r[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof t.k?a("keyword",t.k):u(t.k).forEach(function(e){a(e,t.k[e])}),t.k=r}t.lR=o(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=o(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=o(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=o(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return(n="self"===e?t:e).v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return l(n,{v:null},e)})),n.cached_variants||n.eW&&[l(n)]||[n];var n})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?o(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i<e.length;i++){var c=r,o=s(e[i]);for(0<i&&(a+=n);0<o.length;){var u=t.exec(o);if(null==u){a+=o;break}a+=o.substring(0,u.index),o=o.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?a+="\\"+String(Number(u[1])+c):(a+=u[0],"("==u[0]&&r++)}}return a}(i,"|"),!0):{exec:function(){return null}}}}(c)}function C(e,n,o,t){function u(e,n,t,r){var a='<span class="'+(r?"":h.classPrefix);return(a+=e+'">')+n+(t?"":b)}function s(){g+=null!=E.sL?function(){var e="string"==typeof E.sL;if(e&&!N[E.sL])return _(R);var n=e?C(E.sL,R,!0,i[E.sL]):O(R,E.sL.length?E.sL:void 0);return 0<E.r&&(d+=n.r),e&&(i[E.sL]=n.top),u(n.language,n.value,!1,!0)}():function(){var e,n,t,r,a,i,c;if(!E.k)return _(R);for(r="",n=0,E.lR.lastIndex=0,t=E.lR.exec(R);t;)r+=_(R.substring(n,t.index)),a=E,i=t,c=f.cI?i[0].toLowerCase():i[0],(e=a.k.hasOwnProperty(c)&&a.k[c])?(d+=e[1],r+=u(e[0],_(t[0]))):r+=_(t[0]),n=E.lR.lastIndex,t=E.lR.exec(R);return r+_(R.substr(n))}(),R=""}function l(e){g+=e.cN?u(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function r(e,n){if(R+=e,null==n)return s(),0;var t=function(e,n){var t,r,a;for(t=0,r=n.c.length;t<r;t++)if(v(n.c[t].bR,e))return n.c[t].endSameAsBegin&&(n.c[t].eR=(a=n.c[t].bR.exec(e)[0],new RegExp(a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m"))),n.c[t]}(n,E);if(t)return t.skip?R+=n:(t.eB&&(R+=n),s(),t.rB||t.eB||(R=n)),l(t),t.rB?0:n.length;var r,a,i=function e(n,t){if(v(n.eR,t)){for(;n.endsParent&&n.parent;)n=n.parent;return n}if(n.eW)return e(n.parent,t)}(E,n);if(i){var c=E;for(c.skip?R+=n:(c.rE||c.eE||(R+=n),s(),c.eE&&(R=n));E.cN&&(g+=b),E.skip||E.sL||(d+=E.r),(E=E.parent)!==i.parent;);return i.starts&&(i.endSameAsBegin&&(i.starts.eR=i.eR),l(i.starts)),c.rE?0:n.length}if(r=n,a=E,!o&&v(a.iR,r))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"<unnamed>")+'"');return R+=n,n.length||1}var f=S(e);if(!f)throw new Error('Unknown language: "'+e+'"');m(f);var a,E=t||f,i={},g="";for(a=E;a!==f;a=a.parent)a.cN&&(g=u(a.cN,"",!0)+g);var R="",d=0;try{for(var c,p,M=0;E.t.lastIndex=M,c=E.t.exec(n);)p=r(n.substring(M,c.index),c[0]),M=c.index+p;for(r(n.substr(M)),a=E;a.parent;a=a.parent)a.cN&&(g+=b);return{r:d,value:g,language:e,top:E}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(S).filter(s).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function B(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"<br>":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function c(e){var n,t,r,a,i,c,o,u,s,l,f=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=R.exec(i))return S(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n<r;n++)if(p(a=i[n])||S(a))return a}(e);p(f)||(h.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,i=n.textContent,r=f?C(f,i,!0):O(i),(t=M(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function c(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function o(e){a+="<"+d(e)+E.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+_(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function u(e){a+="</"+d(e)+">"}function s(e){("start"===e.event?o:u)(e.node)}for(;e.length||n.length;){var l=c();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=c())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(o)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,M(a),i)),r.value=B(r.value),e.innerHTML=r.value,e.className=(c=e.className,o=f,u=r.language,s=o?g[o]:u,l=[c.trim()],c.match(/\bhljs\b/)||l.push("hljs"),-1===c.indexOf(s)&&l.push(s),l.join(" ").trim()),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function o(){if(!o.called){o.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,c)}}function S(e){return e=(e||"").toLowerCase(),N[e]||N[g[e]]}function s(e){var n=S(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=B,a.highlightBlock=c,a.configure=function(e){h=l(h,e)},a.initHighlighting=o,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",o,!1),addEventListener("load",o,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){g[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=S,a.autoDetection=s,a.inherit=l,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,_="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},l:t,i:"</",c:[{cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[e.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"meta",b:"#",e:"$",c:[{cN:"meta-string",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+_.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:_,l:t,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},t={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a=e.inherit(t,{i:/\n/}),c={cN:"subst",b:"{",e:"}",k:i},n=e.inherit(c,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,n]},b={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},c]},l=e.inherit(b,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},n]});c.c=[b,s,t,e.ASM,e.QSM,r,e.CBCM],n.c=[l,s,a,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\n/})];var o={v:[b,s,t,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"\x3c!--|--\x3e"},{b:"</?",e:">"}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},o,r,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[o,r,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,{cN:"string",b:/'/,e:/'/},t]}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%<?\^\+\*]/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,i]},a={cN:"variable",b:/\$\([\w-]+\s/,e:/\)/,k:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},c:[i]},n={b:"^"+e.UIR+"\\s*[:+?]?=",i:"\\n",rB:!0,c:[{b:"^"+e.UIR,e:"[:+?]?=",eE:!0}]},t={cN:"section",b:/^[^\s]+:/,e:/$/,c:[i]};return{aliases:["mk","mak"],k:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",l:/[\w-]+/,c:[e.HCM,i,r,a,n,{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},t]}});hljs.registerLanguage("properties",function(r){var t="[ \\t\\f]*",e="("+t+"[:=]"+t+"|[ \\t\\f]+)",s="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",n="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={e:e,r:0,starts:{cN:"string",e:/$/,r:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[r.C("^\\s*[!#]","$"),{b:s+e,rB:!0,c:[{cN:"attr",b:s,endsParent:!0,r:0}],starts:a},{b:n+e,rB:!0,r:0,c:[{cN:"meta",b:n,endsParent:!0,r:0}],starts:a},{cN:"attr",r:0,b:n+t+"$"}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:"</?",e:">"},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s.c=o}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,c]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,c]},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},l={cN:"params",b:/\(/,e:/\)/,c:["self",b,i,a]};return c.c=[a,i,b],{aliases:["py","gyp","ipython"],k:r,i:/(<\/|->|\?)|=>/,c:[b,i,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,l,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("xml",function(s){var e={eW:!0,i:/</,r:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},s.inherit(s.ASM,{i:null,cN:null,c:null,skip:!0}),s.inherit(s.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[e],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[e],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},e]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[t.BE]},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"</",c:n.concat([i,{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e,{b:/\(/,e:/\)/,k:c,r:0,c:["self",t.CLCM,t.CBCM,r,s,e]}]},t.CLCM,t.CBCM,i]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b:/</,e:/>/,c:["self"]},t.TM]}]),exports:{preprocessor:i,strings:r,k:c}}});hljs.registerLanguage("css",function(e){var c={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,c]}]}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_\7f-ÿ][a-zA-Z0-9_\7f-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d;var l=[{b:/^\s*=>/,starts:{e:"$",c:i.c=d}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(l).concat(d)}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_\.-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("java",function(e){var a="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",t={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},t,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.initHighlightingOnLoad() ;
\ No newline at end of file
diff --git a/code/vs2015.css b/code/vs2015.css
new file mode 100644 (file)
index 0000000..d1d9be3
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Visual Studio 2015 dark style
+ * Author: Nicolas LLOBERA <nllobera@gmail.com>
+ */
+
+.hljs {
+  display: block;
+  overflow-x: auto;
+  padding: 0.5em;
+  background: #1E1E1E;
+  color: #DCDCDC;
+}
+
+.hljs-keyword,
+.hljs-literal,
+.hljs-symbol,
+.hljs-name {
+  color: #569CD6;
+}
+.hljs-link {
+  color: #569CD6;
+  text-decoration: underline;
+}
+
+.hljs-built_in,
+.hljs-type {
+  color: #4EC9B0;
+}
+
+.hljs-number,
+.hljs-class {
+  color: #B8D7A3;
+}
+
+.hljs-string,
+.hljs-meta-string {
+  color: #D69D85;
+}
+
+.hljs-regexp,
+.hljs-template-tag {
+  color: #9A5334;
+}
+
+.hljs-subst,
+.hljs-function,
+.hljs-title,
+.hljs-params,
+.hljs-formula {
+  color: #DCDCDC;
+}
+
+.hljs-comment,
+.hljs-quote {
+  color: #57A64A;
+  font-style: italic;
+}
+
+.hljs-doctag {
+  color: #608B4E;
+}
+
+.hljs-meta,
+.hljs-meta-keyword,
+.hljs-tag {
+  color: #9B9B9B;
+}
+
+.hljs-variable,
+.hljs-template-variable {
+  color: #BD63C5;
+}
+
+.hljs-attr,
+.hljs-attribute,
+.hljs-builtin-name {
+  color: #9CDCFE;
+}
+
+.hljs-section {
+  color: gold;
+}
+
+.hljs-emphasis {
+  font-style: italic;
+}
+
+.hljs-strong {
+  font-weight: bold;
+}
+
+/*.hljs-code {
+  font-family:'Monospace';
+}*/
+
+.hljs-bullet,
+.hljs-selector-tag,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #D7BA7D;
+}
+
+.hljs-addition {
+  background-color: #144212;
+  display: inline-block;
+  width: 100%;
+}
+
+.hljs-deletion {
+  background-color: #600;
+  display: inline-block;
+  width: 100%;
+}
diff --git a/images/basix_grub.PNG b/images/basix_grub.PNG
new file mode 100644 (file)
index 0000000..e5cd757
Binary files /dev/null and b/images/basix_grub.PNG differ
diff --git a/images/basix_install1.PNG b/images/basix_install1.PNG
new file mode 100644 (file)
index 0000000..9f2d91c
Binary files /dev/null and b/images/basix_install1.PNG differ
diff --git a/images/basix_install2.PNG b/images/basix_install2.PNG
new file mode 100644 (file)
index 0000000..965ccc1
Binary files /dev/null and b/images/basix_install2.PNG differ
diff --git a/images/basix_install3.PNG b/images/basix_install3.PNG
new file mode 100644 (file)
index 0000000..c9da77d
Binary files /dev/null and b/images/basix_install3.PNG differ
diff --git a/images/basix_install_done.PNG b/images/basix_install_done.PNG
new file mode 100644 (file)
index 0000000..93f9eb8
Binary files /dev/null and b/images/basix_install_done.PNG differ
diff --git a/images/basix_installicon.PNG b/images/basix_installicon.PNG
new file mode 100644 (file)
index 0000000..489f805
Binary files /dev/null and b/images/basix_installicon.PNG differ
diff --git a/images/bodhibuilder1.PNG b/images/bodhibuilder1.PNG
new file mode 100644 (file)
index 0000000..9cf5f7d
Binary files /dev/null and b/images/bodhibuilder1.PNG differ
diff --git a/images/leafpad_bodhibuilder.PNG b/images/leafpad_bodhibuilder.PNG
new file mode 100644 (file)
index 0000000..8493469
Binary files /dev/null and b/images/leafpad_bodhibuilder.PNG differ
diff --git a/images/leafpad_linenumber.PNG b/images/leafpad_linenumber.PNG
new file mode 100644 (file)
index 0000000..51f6979
Binary files /dev/null and b/images/leafpad_linenumber.PNG differ
diff --git a/images/virtualbox_done.PNG b/images/virtualbox_done.PNG
new file mode 100644 (file)
index 0000000..f7c4423
Binary files /dev/null and b/images/virtualbox_done.PNG differ
diff --git a/images/virtualbox_download_1.PNG b/images/virtualbox_download_1.PNG
new file mode 100644 (file)
index 0000000..a79cf11
Binary files /dev/null and b/images/virtualbox_download_1.PNG differ
diff --git a/images/virtualbox_download_2.PNG b/images/virtualbox_download_2.PNG
new file mode 100644 (file)
index 0000000..e893c36
Binary files /dev/null and b/images/virtualbox_download_2.PNG differ
diff --git a/images/virtualbox_newmachine1.PNG b/images/virtualbox_newmachine1.PNG
new file mode 100644 (file)
index 0000000..8c7d27c
Binary files /dev/null and b/images/virtualbox_newmachine1.PNG differ
diff --git a/images/virtualbox_newmachine2.PNG b/images/virtualbox_newmachine2.PNG
new file mode 100644 (file)
index 0000000..85ef49f
Binary files /dev/null and b/images/virtualbox_newmachine2.PNG differ
diff --git a/images/virtualbox_newmachine3.PNG b/images/virtualbox_newmachine3.PNG
new file mode 100644 (file)
index 0000000..9646cdb
Binary files /dev/null and b/images/virtualbox_newmachine3.PNG differ
diff --git a/images/virtualbox_newmachine4.PNG b/images/virtualbox_newmachine4.PNG
new file mode 100644 (file)
index 0000000..a68afe0
Binary files /dev/null and b/images/virtualbox_newmachine4.PNG differ
diff --git a/images/virtualbox_newmachine5.PNG b/images/virtualbox_newmachine5.PNG
new file mode 100644 (file)
index 0000000..b5d6a7a
Binary files /dev/null and b/images/virtualbox_newmachine5.PNG differ
diff --git a/images/virtualbox_newmachine6.PNG b/images/virtualbox_newmachine6.PNG
new file mode 100644 (file)
index 0000000..b438053
Binary files /dev/null and b/images/virtualbox_newmachine6.PNG differ
diff --git a/images/virtualbox_setting1.PNG b/images/virtualbox_setting1.PNG
new file mode 100644 (file)
index 0000000..271a177
Binary files /dev/null and b/images/virtualbox_setting1.PNG differ
diff --git a/images/virtualbox_setting2.PNG b/images/virtualbox_setting2.PNG
new file mode 100644 (file)
index 0000000..0fc4149
Binary files /dev/null and b/images/virtualbox_setting2.PNG differ
diff --git a/images/virtualbox_setting3.PNG b/images/virtualbox_setting3.PNG
new file mode 100644 (file)
index 0000000..9fe784b
Binary files /dev/null and b/images/virtualbox_setting3.PNG differ
diff --git a/page/about.html b/page/about.html
new file mode 100644 (file)
index 0000000..90678dc
--- /dev/null
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      このサイトに関する情報を書いている場所です。
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+    <link rel="shortcut icon" href="../favicon.ico">
+
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- <pre><code class="prettyprint linenums"></code></pre> -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a href="preparation.html">準備編</a></li>
+            <li><a href="customize.html">カスタマイズ編</a></li>
+            <li><a href="makeiso.html">ISO作成編</a></li>
+            <li><a href="distribution.html">配布編</a></li>
+            <li class="right"><a href="about.html"  class="active">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+
+      <h2>
+        このサイトの概要的なやつ
+      </h2>
+      <p>
+        SereneLinuxの開発者が、SereneLinux開発中に困ったことを中心に初心者にわかりやすいように書いていくサイトです
+      </p>
+      <p>
+        CMSとかはあまり好きじゃないのでHTMLとCSSの手打ちで作ってます
+      </p>
+      <p>
+        JavaScriptは使っていないと胸を張って言いたいですが、コードの色付けに使用しています
+      </p>
+      <h2>
+        SereneLinuxってなんぞや
+      </h2>
+      <p>
+        現在開発されているBasix派生のディストリビューションです
+      </p>
+      <p>
+        このサイトの方法で開発されており、Xfce4を採用している軽量OS
+      </p>
+      <p>
+        現在はStandard版だけだが、今後はPro版やLite版もリリースしたいと考えています
+      </p>
+      <p>
+        <a href="serenelinux.xyz">公式サイト</a>からBeta版のダウンロード、開発チームへの参加ができるのでぜひ試してみてください
+      </p>
+
+      <h2>
+        TALLinuxについて
+      </h2>
+      <p>
+        SereneLinuxをベースにTALLinuxTeamが開発を行っているLinuxです
+      </p>
+      <p>
+        軽量志向のSereneLinuxとは違い、KDEを搭載してリッチになっています
+      </p>
+      <p>
+        Lxde版も作成したようでアンケートを行うようです
+      </p>
+      <p>
+        Beta4から配布されており、現在
+        <a href="https://t.co/wV9HeJQa4O">
+          公式サイト
+        </a>
+        からダウンロードできるようです
+      </p>
+      <p>
+        TALLinuxへの技術提供もSereneTeamが行っていますのでぜひ使ってみてください
+      </p>
+      <h2>
+        NXLinuxについて
+      </h2>
+      <p>
+        Basixをベースに開発が行われているLinuxです
+      </p>
+      <p>
+        筆者もNXLinuxの開発へ参加しています
+      </p>
+      <p>
+        詳しくは後で追記します...
+      </p>
+      <h2>
+        筆者について
+      </h2>
+      <p>
+        トップページと内容が一緒じゃねぇかボケェ って思った人いると思いますがもう少し詳しく自己紹介しようと思います
+      </p>
+      <p>
+        SereneTeamの3人目のメンバーの@Hayao0819です
+      </p>
+      <p>
+        SereneTeamでは、ファイルサーバ、BodhiBuilder、UI、Lite版を担当しています
+      </p>
+      <p>
+        出身はド田舎代表のグンマー帝国です
+      </p>
+
+      <h2>
+        このサイトを作った理由
+      </h2>
+      <p>
+        SereneLinuxの開発の際、BodhiBUilderの情報がものすごく少なかったのでこれからディストリビューションを作ろうと考えている人のために作りました
+      </p>
+      <p>
+        これからも随時更新していこうと思います
+      </p>
+
+      <h2>
+        以下更新履歴
+      </h2>
+      <h3>
+        2019/04/10
+      </h3>
+      <p>
+        <ul>
+          <li>
+            カスタマイズ編のテーマ選びについての続きを書いた
+          </li>
+        </ul>
+      </p>
+      <h3>
+        2019/04/08
+      </h3>
+      <p>
+        <ul>
+          <li>
+            カスタマイズ編の1~2を追加
+          </li>
+          <li>
+            このページにNXLinuxに関する情報を追記
+          </li>
+        </ul>
+      </p>
+      <h3>
+        2019/04/07
+      </h3>
+      <p>
+        <ul>
+          <li>誤字の修正(指摘してくださった方ありがとうございます)</li>
+          <li>BodhiBuilderの修正内容の誤字の修正(一番肝心な部分を間違えました すみませんm(_ _)m)</li>
+        </ul>
+      </p>
+      <h3>
+        2019/04/04
+      </h3>
+      <p>
+          <ul>
+            <li>
+              ISO作成編を追加
+            </li>
+            <li>
+              アクセスカウンター設置
+            </li>
+            <li>
+              メニューバー設置
+            </li>
+            <li>
+              Aboutの追加
+            </li>
+            <li>
+              誤字修正
+            </li>
+            <li>
+              トップページの作成
+            </li>
+            <li>
+                highlight.jsの設置、利用
+            </li>
+            <li>
+              中途半端にレスポンシブ対応
+            </li>
+          </ul>
+        </p>
+      <h3>
+        2019/04/02
+      </h3>
+      <p>
+        <ul>
+          <li>
+            作成
+          </li>
+        </ul>
+      </p>
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/page/customize.html b/page/customize.html
new file mode 100644 (file)
index 0000000..da075ba
--- /dev/null
@@ -0,0 +1,545 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう カスタマイズ編
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      SereneLinuxの開発者が初心者でもできるUbuntu派生OSの作成方法を画像つきで解説します。
+      BodhiBuilderにあるバグの修正方法を解説しているのはここだけ!
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+    <link rel="shortcut icon" href="../favicon.ico">
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- <pre><code class="prettyprint linenums"></code></pre> -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう カスタマイズ編
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a href="preparation.html">準備編</a></li>
+            <li><a class="active" href="customize.html">カスタマイズ編</a></li>
+            <li><a href="makeiso.html">ISO作成編</a></li>
+            <li><a href="distribution.html">配布編</a></li>
+            <li class="right"><a href="about.html">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+      <h2>
+        カスタマイズしよう
+      </h2>
+      <p>
+        実際にBasixをカスタマイズしていきましょう。
+      </p>
+      <p>
+        基本的なカスタマイズは以下のとおりです
+      </p>
+      <p>
+        <ol>
+          <li>
+            デスクトップ環境の選択
+          </li>
+          <li>
+            ディスプレイマネージャの選択
+          </li>
+          <li>
+            テーマの選択
+          </li>
+          <li>
+            アイコンの選択
+          </li>
+          <li>
+            パッケージの削除
+          </li>
+          <li>
+            パッケージのインストール
+          </li>
+          <li>
+            デスクトップのカスタマイズ
+          </li>
+          <li>
+            設定ファイルの保存
+          </li>
+          <li>
+            インストールスライドの変更
+          </li>
+          <li>
+            OS名の変更
+          </li>
+        </ol>
+      </p>
+      <p>
+        非常に長くなるので頑張って読んでください...
+      </p>
+      <p>
+        カスタマイズくらいできるわ!って人は8から読んでください
+      </p>
+      <p>
+        8以降はOS作成だけのカスタマイズなので知らない人もいるかもしれません
+      </p>
+
+
+      <h2>
+        1.デスクトップ環境の選択
+      </h2>
+      <p>
+        まずはデスクトップ環境を決めます
+      </p>
+      <p>
+        デスクトップ環境を決める上で重要になるのが「ターゲットにするユーザー」です
+      </p>
+      <p>
+        準備編で決めたことがここで重要になってきます
+      </p>
+      <p>
+        以下にそれぞれのデスクトップ環境の特徴を書いていくので好きなものを選んでください
+      </p>
+      <p>
+        重くはなりますが、複数のデスクトップ環境を搭載することもできます
+      </p>
+      <table>
+        <thead>
+          <tr>
+            <th>デスクトップ環境</th>
+            <th>標準ディストリビューション</th>
+            <th>特徴</th>
+            <th>重さ</th>
+          </tr>
+        </thead>
+        <tbody>
+
+
+          <tr>
+            <th>
+              Gnome3
+            </th>
+            <td label="標準ディストリビューション">
+                Ubuntu
+            </td>
+            <td label="特徴">
+              <p>
+                操作が独特
+                <br>
+                洗練されている
+              </p>
+            </td>
+            <td label="重さ">
+                やや重い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              Xfce4
+            </th>
+            <td label="標準ディストリビューション">
+                Xubuntu
+            </td>
+            <td label="特徴">
+              <p>
+                標準のパネル設定はMac風になっている
+                <br>
+                細かいカスタマイズが可能
+                <br>
+                標準のテーマ、アイコンがダサい
+              </p>
+            </td>
+            <td label="重さ">
+                軽い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              KDE
+            </th>
+            <td label="標準ディストリビューション">
+              Kubuntu
+            </td>
+            <td label="特徴">
+              <p>
+                非常に高機能で、美しいUI
+                <br>
+                比較的カスタマイズしにくい
+              </p>
+            </td>
+            <td label="重さ">
+              最も重い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              Lxde
+            </th>
+            <td label="標準ディストリビューション">
+              Lubuntu
+              <br>
+              Basix
+            </td>
+            <td label="特徴">
+              <p>
+                 Windows風のUI
+                <br>
+                ものすごく軽量
+                <br>
+                標準のテーマ、アイコンが汚い
+              </p>
+            </td>
+            <td label="重さ">
+              最も軽い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              Lxqt
+            </th>
+            <td label="標準ディストリビューション">
+              ---
+            </td>
+            <td label="特徴">
+              <p>
+                Lxdeと非常に似ている
+                <br>
+                細かいカスタマイズが可能
+                <br>
+                標準のテーマ、アイコンがダサい
+              </p>
+            </td>
+            <td label="重さ">
+              最も軽い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+               Unity
+            </th>
+            <td label="標準ディストリビューション">
+                Ubuntu(17.10まで)
+            </td>
+            <td label="特徴">
+              <p>
+                Ubuntu版のGnomeと似たUI
+                <br>
+                殆どカスタマイズできない
+                <br>
+                今後サポートされるか不明
+              </p>
+            </td>
+            <td label="重さ">
+              最も重い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              Cinnamon
+            </th>
+            <td label="標準ディストリビューション">
+              ---
+            </td>
+            <td label="特徴">
+              <p>
+                Windows風のUI
+                <br>
+                あまりカスタマイズできない
+                <br>
+                高機能で美しい
+              </p>
+            </td>
+            <td label="重さ">
+              やや重い
+            </td>
+          </tr>
+
+          <tr>
+            <th>
+              Mate
+            </th>
+            <td label="標準ディストリビューション">
+              Ubuntu Mate
+            </td>
+            <td label="特徴">
+              <p>
+                Windows風のUI
+                <br>
+                Gnome2(Ubuntu 10.10までのUI)からフォーク
+                <br>
+                シンプル
+              </p>
+            </td>
+            <td label="重さ">
+              やや軽い
+            </td>
+          </tr>
+
+          
+        </tbody>
+      </table>
+
+      <p>
+        おすすめはXfce4です
+      </p>
+      <p>
+        軽量でカスタマイズ性が高いので自由に改造することができます
+      </p>
+      <p>
+        SereneLinuxもXfce4をベースにしています
+      </p>
+      <p>
+        今回はXfce4を選んだとして関節を勧めていこうと思います
+      </p>
+
+
+
+      <h2>
+        2.ディスプレイマネージャの選択
+      </h2>
+      <p>
+        ディスプレイマネージャとは、いわゆるログイン画面です
+      </p>
+      <p>
+        以下の様なものがあります
+      </p>
+      <table>
+        <thead>
+          <tr>
+            <th>ディスプレイマネージャ</th>
+            <th>標準ディストリビューション</th>
+            <th>特徴</th>
+            <th>重さ</th>
+          </tr>
+        </thead>
+        <tbody>
+
+
+          <tr>
+            <th>
+              GDM3
+            </th>
+            <td label="標準ディストリビューション">
+                Ubuntu
+            </td>
+            <td label="特徴">
+              <p>
+                Gnomeのディスプレイマネージャ
+                <br>
+                洗練されており、美しいUI
+                <br>
+                カスタマイズしにくい
+              </p>
+            </td>
+            <td label="重さ">
+              やや重い
+            </td>
+          </tr>
+
+
+          <tr>
+            <th>
+              LightDM
+            </th>
+            <td label="標準ディストリビューション">
+                Xubuntu、Lubuntu、Ubuntu(17.10まで)
+            </td>
+            <td label="特徴">
+              <p>
+                非常に軽い
+                <br>
+                カスタマイズが可能
+                <br>
+                標準のテーマ、アイコンがダサい
+              </p>
+            </td>
+            <td label="重さ">
+              軽い
+            </td>
+          </tr>
+
+          <tr>
+            <th>
+              KDM
+            </th>
+            <td label="標準ディストリビューション">
+                Kubuntu
+            </td>
+            <td label="特徴">
+              <p>
+                リッチなUI
+                <br>
+                KDEのディスプレイマネージャ
+              </p>
+            </td>
+            <td label="重さ">
+              ---
+            </td>
+          </tr>
+
+          <tr>
+            <th>
+              SDDM
+            </th>
+            <td label="標準ディストリビューション">
+              Lxqt
+            </td>
+            <td label="特徴">
+              <p>
+                Qtのみで書かれている
+              </p>
+            </td>
+            <td label="重さ">
+              ---
+            </td>
+          </tr>
+
+          
+        </tbody>
+      </table>
+
+      <p>
+        今回は最も一般的なLightDMを使用していきます
+      </p>
+      <p>
+        (筆者はLightDMとGDMしか使用したこと無いのでSDDMやKDMはわからないです)
+      </p>
+      <h3>
+        Greeterについて
+      </h3>
+      <p>
+        LightDMには「Greeter」と呼ばれるテーマを適用させる機能があります(他のDMにもあるのかな?)
+      </p>
+      <p>
+        SereneLinuxではUbuntu17.10まで使われていた「unity-greeter」を適用させています
+      </p>
+      <p>
+        この「Unity-Greeter」はインストール後に手動で設定をする必要があります
+      </p>
+      <p>
+        参考にしたのは以下のサイトです
+      </p>
+      <p>
+        <a href="https://cialu.net/how-to-solve-failed-to-start-session-with-lightdm-and-xfce/" target="_blank">How to solve ‘Failed to start session’ with LightDM and Xfce</a>
+      </p>
+      <p>
+        上のサイトと同じになってしまいますが、一応こちらでも解説しようと思います
+      </p>
+      <p>
+        <ol>
+          <li>
+            unity-greeterをインストールする
+          </li>
+          <p>
+            これがないと始まりませんね
+          </p>
+          <pre><code>$ sudo apt-get -y install unity-greeter</code></pre>
+          <li>
+            設定ファイルを削除する
+          </li>
+          <p>
+            以下のコマンドを実行して設定ファイルを削除します
+          </p>
+          <p>
+            <pre><code>$ sudo rm /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf</code></pre>
+          </p>
+          <li>
+            新しい設定ファイルを作成する
+          </li>
+          <p>
+            以下のコマンドを実行するだけです
+          </p>
+          <p>
+            <pre><code>$ sudo touch /usr/share/lightdm/lightdm.conf.d/50-xfce-greeter.conf</code></pre>
+          </p>
+          <li>
+            設定ファイルを記述する
+          </li>
+          <p>
+            nanoを起動します
+          </p>
+          <pre><code>$ sudo nano /usr/share/lightdm/lightdm.conf.d/50-xfce-greeter.conf</code></pre>
+          <p>
+            以下のコードを書き込んで「Ctrl + O」を押して保存し、「Ctrl + X」で終了します
+          </p>
+          <pre><code>[SeatDefaults]
+greeter-session=unity-greeter
+user-session=xfce</code></pre>
+          <li>
+            再起動します
+          </li>
+          <pre><code>$ sudo reboot</code></pre>
+
+        </ol>
+      </p>
+
+      <h2>
+        テーマの選択
+      </h2>
+      <h3>
+        自分の好きなテーマを探す
+      </h3>
+      <p>
+        自分の好きなテーマをネット上で探して自分のOSのデフォルトにしましょう
+      </p>
+      <p>
+        テーマのライセンスさえOKで、現在のGTK3に準拠しているテーマなら何でも適用できます
+      </p>
+      <p>
+        SereneLinuxでは「Numix」というテーマを採用しています
+      </p>
+      <p>
+        テーマによってディストリビューションの印象を大きく変えることになるので慎重にに選んでください
+      </p>
+      <p>
+        テーマは以下のサイトから探すと簡単に見つけることができます
+      </p>
+      <ul>
+        <li></li>
+        <li></li>
+      </ul>
+      <p>
+        自分の考えたユーザのターゲットに合ったテーマを選ぶといいでしょう
+      </p>
+      <p>ライセンスをよく読み、再配布が可能かどうかを確かめてください</p>
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/page/distribution.html b/page/distribution.html
new file mode 100644 (file)
index 0000000..7a4ebe7
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう 配布編
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      SereneLinuxの開発者が初心者でもできるUbuntu派生OSの作成方法を画像つきで解説します。
+      BodhiBuilderにあるバグの修正方法を解説しているのはここだけ!
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+    <link rel="shortcut icon" href="../favicon.ico">
+
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- <pre><code class="prettyprint linenums"></code></pre> -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう 配布編
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a href="preparation.html">準備編</a></li>
+            <li><a href="customize.html">カスタマイズ編</a></li>
+            <li><a href="makeiso.html">ISO作成編</a></li>
+            <li><a  class="active" href="distribution.html">配布編</a></li>
+            <li class="right"><a href="about.html">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+
+      配布編現在準備中
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/page/makeiso.html b/page/makeiso.html
new file mode 100644 (file)
index 0000000..27b7536
--- /dev/null
@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう ISO作成編
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      SereneLinuxの開発者が初心者でもできるUbuntu派生OSの作成方法を画像つきで解説します。
+      BodhiBuilderにあるバグの修正方法を解説しているのはここだけ!
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="shortcut icon" href="../favicon.ico">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- '<pre><code class="prettyprint linenums"></code></pre>' -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう ISO作成編
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a href="preparation.html">準備編</a></li>
+            <li><a href="customize.html">カスタマイズ編</a></li>
+            <li><a class="active" href="makeiso.html">ISO作成編</a></li>
+            <li><a href="distribution.html">配布編</a></li>
+            <li class="right"><a href="about.html">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+
+      <h2>
+        ISO作成について
+      </h2>
+      <p>
+        いよいよISOを作成していきます
+      </p>
+      <p>
+        ISO作成には『BodhiBuilder』というフリーソフトを使用していきます
+      </p>
+      <p>
+        ですが、このソフト実はバグがあり正常にISOを作成することができません
+      </p>
+      <p>
+        このサイトはそのバグ回避の解説を行っている唯一のサイトです
+      </p>
+
+
+      <h2>
+        Basixに付属しているBodhiBuilderを削除する
+      </h2>
+      <p>
+        Basixに付属しているBodhiBuilderは少しバージョンが違い、正常に動作しない可能性があるので削除します
+      </p>
+      <p>
+        以下のコマンドで簡単に削除できます
+      </p>
+      <p>
+        <pre><code>$ sudo apt-get -y purge bodhibuilder
+$ sudo apt-get -y auoremove</code></pre>
+      </p>
+      
+
+      <h2>
+        公式バージョンのBodhiBuilderをインストールする
+      </h2>
+      <h3>
+        パッケージをダウンロードする
+      </h3>
+      <p>
+        <a href="https://sourceforge.net/projects/bodhibuilder/" target="_blank">
+          SOURCEFORGE
+        </a>
+        からダウンロードします
+      </p>
+      <p>
+        緑色のでっかい「ダウンロード」ボタンでダウンロードできます
+      </p>
+      <p>
+        Ubuntu16.04などの過去のバージョンのUbuntuを使用している人はそれに合ったバージョンをダウンロードしてください
+      </p>
+      <p>
+        ダウンロードしたファイルをデスクトップに移動させて、名前を「bodhibuilder.deb」に変更してください
+      </p>
+      <h3>
+        パッケージをインストールする
+      </h3>
+      <p>
+        パッケージをインストールします
+      </p>
+      <p>
+        以下のコマンドを実行すれば大丈夫です
+      </p>
+      <p>
+        <pre><code>$ sudo apt-get update && sudo apt-get -y upgrade
+$ sudo apt-get -y install `find ~/ -name "bodhibuilder.deb"`</code></pre>
+      </p>
+      <p>
+        細かいコマンドの説明は省きますが、一行目でパッケージリストの同期とパッケージの更新を行い、二行目でユーザディレクトリ内を検索して「bodhibuilder.deb」のパスを取得してaptに渡してインストールしています
+      </p>
+      <p>
+        途中で設定ファイルがウンタラカンタラという質問が何回か来ますが基本的に「N」と入力してエンターキーを押せば大丈夫です
+      </p>
+      <p>
+        設定ファイルとかにこだわりがある人は各自で設定お願いします
+      </p>
+      <p>
+        なお、このコマンドはダウンロードしたファイルの名前を「bodhibuilder.deb」に変更しておかないとエラーが出て正常に実行できません
+      </p>
+      <p>
+        <pre><code>$ sudo rm `find ~/ -name "bodhibuilder.deb"`</code></pre>
+      </p>
+      <p>でダウンロードしたファイルを削除できます(インストール後は使わないので)</p>
+
+
+      <h2>BodhiBuilderを修正して動作するようにする</h2>
+      <p>
+        このサイトで一番の重要ポイントです
+      </p>
+      <p>
+        bodhibuilderは、ISOを作成するスクリプトとGUIで分離しています
+      </p>
+      <p>
+        今回はBodhibuilderのISO作成のスクリプトの方をいじっていきます
+      </p>
+      <p>
+        まず、Root権限でテキストエディターを起動します
+      </p>
+      <p>
+        <pre><code>$ gksu leafpad /usr/bin/bodhibuilder</code></pre>
+      </p>
+      <p>
+        出てきたウィンドウにパスワードを入力するとbodhibuilderのスクリプトを開いたテキストエディターが起動するはずです
+      </p>
+      <p>
+        この中には「シェルスクリプト」という言語でISO作成の内容が書かれています
+      </p>
+      <p>
+        難しいので理解する必要はないです
+      </p>
+      <p>
+        まず、LeafPadの設定を変更して行数を表示させましょう
+      </p>
+      <p>
+        「オプション」→「行番号を表示」にチェックを入れます
+      </p>
+      <p>
+        <img src="../images/leafpad_linenumber.PNG" alt="行数の表示設定">
+      </p>
+      <p>
+        そしたら、913行目を削除して以下のコードに置き換えます(失敗しないようにバックアップを取ることをおすすめします)
+      </p>
+      <p>
+        <pre><code>VESAMENU=`find /usr/lib/syslinux/modules/bios/ -name "vesamenu.c32" | grep "vesamenu.c32"` </code></pre>
+      </p>
+      <p>
+        その後、「ファイル」→「保存」で保存して閉じます
+      </p>
+      <p>
+        <img src="../images/leafpad_bodhibuilder.PNG" alt="">
+      </p>
+      <h2>
+        bodhibuilderを実行してISOを作成する
+      </h2>
+      <p>
+        いよいよスクリプトを走らせます
+      </p>
+      <p>
+        ターミナルエミュレーターを起動して以下のコマンドで起動します
+      </p>
+      <p>
+        <pre><code>$ gksu bodhibuilder-gtk</code></pre>
+      </p>
+      <p>
+        「OK」をクリックします
+      </p>
+      <p>
+        <img src="../images/bodhibuilder1.PNG" alt="bodhibuilder起動直後">
+      </p>
+      <p>
+        「Settings」タブに移動して、それぞれの項目を入力します
+      </p>
+      <p>
+        「Username」には、インストール時と同じ名前を入力してください
+      </p>
+      <p>
+        「CD Label」では、32文字以内で入力してください
+      </p>
+      <p>
+        それ以上はエラーになります
+      </p>
+      <p>
+        「Squashfs options」には「-no-recovery -always-use-fragments -b 1M -no-duplicates」と入力してください
+      </p>
+      <p>
+        (筆者もこれの意味はわかっていませんがBasixではこのオプションがつけられていたらしいです)
+      </p>
+      <p>
+        あとは自由で構いません
+      </p>
+      <p>
+        設定が終わったら、「Actions」タブに戻って「Dist」ボタンをクリックし、ISO作成を開始します
+      </p>
+      <p>
+        すると、Outputタブへ自動で移動し、いろいろログが出力されます
+      </p>
+      <p>
+        ISO作成が終わるとまたダイアログが出るので、それまで待ちます
+      </p>
+      <p>
+        作成中はCPUをたくさん使用するので注意してください
+      </p>
+      <h2>
+        作成したISOの場所
+      </h2>
+      <p>
+        作成が終わったら、ISOを確認しましょう
+      </p>
+      <p>
+        初期設定のままなら下のパスに保存されています
+      </p>
+      <p>
+        <pre><code>/home/bodhibuilder/bodhibuilder</code></pre>
+      </p>
+      <p>
+        このパスの中に.isoや.md5、.sha256などがあるはずです
+      </p>
+      <p>
+        この3つのファイルを配布するので、クラウドサービスなどを使うなり共有フォルダを使うなりしてホスト環境(仮想マシンの外)に持ってきておいてください
+      </p>
+      <h2>
+        起動チェック
+      </h2>
+      <p>
+        ISOが起動するか確かめましょう
+      </p>
+      <p>
+        最初に準備した実験用DVD-RWにISOを書き込んで実機で実験するか、仮想マシンで動作させます
+      </p>
+      <p>
+        <a href="preparation.html">
+          準備編
+        </a>
+        の「仮想環境にBasixをインストールする」と同じ方法で仮想マシンにインストールします
+      </p>
+      <p>
+        自分の思ったとおりのインストールスライドや、アイコン、テーマになっていれば成功です
+      </p>
+      <p>
+        うまくできなかったら、
+        <a href="customize.html">
+          カスタマイズ編
+        </a>
+        で確認するか、私のTwitter(
+        <a href="../index.html">
+          トップページ
+        </a>
+        )の私のTwitterのDMに来てください
+      </p>
+      <h2>
+        配布編へ続く
+      </h2>
+      <p>
+        自分用のISOを作った人はこれで終わりですね。お疲れ様でした
+      </p>
+      <p>
+        配布するためのOSを作った人は一番最後の「OSを配布する」という作業が残っています^^;
+      </p>
+      <p>
+        それでは、また次回。
+      </p>
+      <h3 class="goto">
+        <a href="distribution.html" class="goto">配布編へ行く</a>
+      </h3>
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/page/preparation.html b/page/preparation.html
new file mode 100644 (file)
index 0000000..0321d5f
--- /dev/null
@@ -0,0 +1,595 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう ~準備編~
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      まずは準備編ということでベースとなるOSを決めたり、開発環境を構築したりしていきます
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+    <link rel="shortcut icon" href="../favicon.ico">
+
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- <pre><code class="prettyprint linenums"></code></pre> -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう 準備編
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a class="active" href="preparation.html">準備編</a></li>
+            <li><a href="customize.html">カスタマイズ編</a></li>
+            <li><a href="makeiso.html">ISO作成編</a></li>
+            <li><a href="distribution.html">配布編</a></li>
+            <li class="right"><a href="about.html">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+
+
+      <h2 class="msr_h203">
+        OSのコンセプトを決める
+      </h2>
+      <p>
+        まずはOSのコンセプトを考えます。
+      </p>
+      <p>
+        <ul>
+          <li>
+            軽量なOS
+          </li>
+          <li>
+            自由度の高いOS
+          </li>
+          <li>
+            初心者向けなOS
+          </li>
+          <li>
+            Windowsからの移行を狙ったOS
+          </li>
+        </ul>
+        などの『ターゲットにするユーザ』と同時に考えるとすぐに思い浮かぶと思います。
+      </p>
+      <p>
+        「自分専用のOS」というのもありですね♪。
+      </p>
+      <p>
+        SereneLinuxでは、『軽量で美しくわかりやすいUI』をコンセプトに開発を進めています。
+      </p>
+
+
+      <h2 class="msr_h203">開発環境を準備する。
+
+      </h2>
+        <p>
+          実際に開発を行っていく際に必要な物を準備します。
+        </p>
+        <p>
+          必要なものは
+          <ul>
+            <li>
+              開発用の高性能なパソコン
+            </li>
+            <li>
+              データを保存する大容量のHDD
+            </li>
+            <li>
+              ベースになるOSのISOイメージ
+            </li>
+            <li>
+              仮想化ソフトウェア
+            </li>
+            <li>
+              実験用のDVD-RW
+            </li>
+            <li>
+              定期的に更新していく時間(配布用のものを作成する場合のみ)
+            </li>
+            <li>
+              LinuxをGUIである程度カスタマイズできる能力(これから学ぶこともできます)
+            </li>
+            <li>
+              問題があったときに自分で検索したり、コミュニティに質問したりできる能力
+            </li>
+          </ul>
+          たったのこれだけです。
+        </p>
+      <p>一つづつ見ていきましょう。
+
+      </p>
+
+      <h3>
+        開発用の高性能なパソコンとデータを保存する大容量のHDD
+      </h3>
+        <p>
+          まずは、
+          <strong>
+            開発用の高性能なパソコン
+          </strong>
+          と
+          <strong>
+            データを保存する大容量のHDD
+          </strong>
+          ですが、『高性能』と言うのには理由があります。
+        </p>
+        <p>
+          それは、主な開発を仮想環境上で行うからです。
+        </p>
+        <p>
+          仮想環境とはパソコンの中に仮想的に作られた環境のことを指します。
+        </p>
+        <p>
+          あくまで『仮想』なのでバックアップや性能の上げ下げを簡単に行うことができ、
+          <strong>
+            容量が許す限り
+          </strong>
+          無限に作成できます。
+        </p>
+        <p>
+          また、過去のバージョンなどを保存するためにもたくさんの容量が必要です。
+        </p>
+        <p>
+          っと、HDDがたくさん必要な方法はわかったと思いますが、高性能なパソコンが必要な理由がまだでしたね。
+        </p>
+        <p>
+          仮想環境ではパソコンの中にパソコンを作るわけです。(細かい仕組みは違いますが)なのでその仮想的なパソコンの分までをカバーする性能が必要です。
+        </p>
+        <p>
+          なので高性能なパソコンが必要になります。
+        </p>
+        <h4>
+          SereneLinuxの開発に使われているPCの性能
+        </h4>
+          <p>
+            余談ですが、参考としてSereneLinuxの開発に使われている筆者のメインPCを紹介します。
+          </p>
+          <p>
+            このPCは7~8年前の古いPCですが現役でバリバリ動作しています。
+          </p>
+          <p>
+            CPU:Xeon E3-1275 3.4GHz
+            <br>
+            RAM:DDR3-12800 4GB x 2
+            <br>
+            GPU:NVIDIA GeForce GTX 645
+            <br>
+            SSD:SPCC SSD 239GB
+            <br> 
+            OS:Windows 10 19H1 Insider Preview Pro 64bit
+            <br>
+          </p>
+
+
+      <h3>
+        ベースになるOSのISOイメージ
+      </h3>
+      <p>
+        次にソフトウェア面を準備していきます。
+      </p>
+      <p>
+        難しいように見えますが簡単です。
+      </p>
+      <p>
+        まず、ベースとなるOSのISOイメージです
+      </p>
+      <p>
+        ベースになるISOイメージを準備するにはベースになるOSを決める必要があります。
+      </p>
+      <h4>
+        ベースのOSを決めよう。
+      </h4>
+      <p>
+        ベースになるOSはUbuntu系が簡単でおすすめです(というかUbuntu系以外はこのサイトの方法ではできません)。
+      </p>
+      <p>
+        UbuntuのISOを直接改変してもいいですが、余分なソフトが多く含まれており自分のOSも重くなってしまいます。
+      </p>
+      <p>
+        逆に、MinimalISOという超最低限のUbuntuから作成してもいいですが、設定系のソフトウェアが一切入っていないので自分で調べて入れる必要があります。(入れなくてもいいですが、ユーザにとっては非常に面倒です。)
+      </p>
+      <h4>
+        じゃあどれを使えばいいの?
+      </h4>
+      <p>
+        そこで、日本人の方が作成した「OS作成用のOS」があります。
+      </p>
+      <p>
+        そのOSは
+        <strong>
+          Basix
+        </strong>
+        と言い、日本のLinux界隈で有名な
+        <a href="http://simosnet.com/livecdroom/">
+          ライブCDの部屋
+        </a>
+        の管理人さんが作成、公開しています。
+      </p>
+      <p>
+        ISOのダウンロード先は
+        <a href="http://simosnet.com/livecd/basix/">
+          こちら
+        </a>
+        です。
+      </p>
+      <p>
+        今回はbasix-4.0_x86_64.isoを利用して作成していきます。(SereneLinuxもこれで作成されています。)
+      </p>
+      <p>このDLしたISOは削除せずにとっておいてください。
+
+      </p>
+
+      <h3>
+        仮想化ソフトウェア
+      </h3>
+      <p>
+        また難しそうな名前が出てきました。
+      </p>
+      <p>
+        これも簡単なので大丈夫です。
+      </p>
+      <p>
+        今回は仮想化ソフトウェアとしてオープンソース(ソフトウェアの中身が公開されていること)で開発されているOracle製の
+        <strong>
+          VirtualBox
+        </strong>
+        を利用していきます。
+      </p>
+      <p>
+        仮想化ソフトウェアには他にもVMware Workstation PlayerやHyper-V、QEMUなどがあります。
+      </p>
+      <p>
+        (自分のお気に入りの仮想化ソフトウェアがあるならそちらを使っていただいて結構です。)
+      </p>
+      <h4>
+        ダウンロード
+      </h4>
+      <p>
+        <a href="https://www.virtualbox.org/wiki/Downloads">
+          こちら
+        </a>
+        からダウンロードします。
+      </p>
+      <p>
+        <img src="../images/virtualbox_download_1.PNG" alt="VirtualBoxのダウンロードする場所">
+      </p>
+      <p>
+        Windowsを使っている人はWindows hostsから、macOSの方はOS X hostsからダウンロードしてください。
+      </p>
+      <p>
+        Linuxを使っている方はそれぞれのディストリビューションのパッケージ管理システムからインストールしてください。
+      </p>
+      <p>
+        Ubuntu系なら
+        <pre><code>$ sudo apt-get -y install virtualbox</code></pre>
+      </p>
+      <p>
+        でインストールできます。
+      </p>
+      <p>
+        ダウンロード後はWindowsの場合はそのままウィザードに沿ってインストールしてください。
+      </p>
+      <p>
+        macOSのほうはわかりません。(環境がないので) すみませんm(_ _)m
+      </p>
+      <h4>
+        エクステンションパックの導入
+      </h4>
+      <p>
+        カタカナが並んでいますが、すぐに終わります。
+      </p>
+      <p>
+        <a href="https://www.virtualbox.org/wiki/Downloads">
+          先程のサイト
+        </a>
+        の下にある
+      </p>
+      <p>
+        <img src="../images/virtualbox_download_2.PNG" alt="エクステンションパックのダウンロードする場所">
+      </p>
+      <p>
+        からダウンロードしてください。
+      </p>
+      <p>
+        こちらはWindowsとかMacとか関係ないです。
+      </p>
+      <p>
+        ダウンロード後はそこままダウンロードしたファイルをVirtualBoxで読み込んで完了です。
+      </p>
+      <h4>
+        確認
+      </h4>
+      <p>
+        メニューからVirtualBoxを選んで、以下の画面が起動すればインストール完了です。
+      </p>
+      <p>
+        <img src="../images/virtualbox_done.PNG" alt="VirtualBox">
+      </p>
+      <p>これで仮想化ソフトウェアの準備も完了です。
+
+      </p>
+
+      <h3>
+        実験用のDVD-RW
+      </h3>
+      <p>
+        作成したISOイメージを実際に書き込んで起動するかどうかのチェックに使用します。
+      </p>
+      <p>
+        仮想環境だけではチェックできないドライバ(マウスなどの周辺機器を使うためのソフトウェア)の問題などの確認に使用します。
+      </p>
+      <p>
+        DVD-Rだと繰り返し使用できないのでDVD-RWを選んでください。
+      </p>
+      <p>
+        100円ショップで買えます。
+      </p>
+
+      <h3>
+        定期的に更新していく時間
+      </h3>
+      <p>
+        自分専用なら必要ないですね。
+      </p>
+      <p>
+        Ubuntuは年に2回アップデート版がリリースされます。
+      </p>
+      <p>
+        そのたびに自分のOSも更新させる必要があります。
+      </p>
+      <p>
+        しかし、実際のところは2年に1回リリースされる長期サポート版(LTS版)でのみ更新するディストリビューションがほとんどです。
+      </p>
+      <p>
+        実際にベースにするBasixも2年に1回の更新になります。
+      </p>
+      <p>
+        なので、2年に1回だけ開発の時間が確保できればOKです。
+      </p>
+
+      <h3>
+        LinuxをGUIである程度カスタマイズできる能力
+      </h3>
+      <p>
+        Linuxをカスタマイズするので必須ですね。
+      </p>
+      <p>
+        自分で設定を変更したり、アイコンやテーマを変更します。
+      </p>
+      <p>
+        これに関してはそれぞれによって違いがあるので各自で調べてください。
+      </p>
+      <p>
+        どうしてもわからなければ
+        <a href="https://twitter.com/Hayao0819?lang=ja">
+          作者のTwitter
+        </a>
+        のDMまで来てください。
+      </p>
+
+      <h3>
+        問題があったときに自分で検索したり、コミュニティに質問したりできる能力
+      </h3>
+      <p>
+        これはLinux共通です。
+      </p>
+      <p>
+        上と関連していますが、Linuxはフリーであるがゆえにサポートもありません。
+      </p>
+      <p>
+        TwitterやYahoo知恵袋などで誰かに質問するか、自力でググることが大切です 。
+      </p>
+      <p>
+        どうしてもわからなかったら日本のコミュニティに質問することもできますが、ISO作成などは情報が少ないため知っている人も殆どいません。
+      </p>
+      <p>
+        場合によっては英語のサイトを参考にすることもあります(Google翻訳は便利ですがプログラムのコードが変なふうに空白が空いたりしてしまうこともあるので注意してください。)
+      </p>
+
+      <h2>
+        仮想環境にBasixをインストールする
+      </h2>
+      <p>
+        先程インストールしたVirtualBoxにBasixをインストールしていきます。
+      </p>
+      <h3>
+        仮想マシンを作成す
+        る</h3>
+      <ol>
+        <li>
+          VirtualBOxを起動して「新規」をクリック。
+        </li>
+        <li>
+          下の画面で名前を自分の好きに打ち、タイプをLinux、バージョンをUbuntu(64bit)にする。
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine1.PNG" alt="新規作成画面">
+        </p>
+        <li>
+          次へをクリックして、メモリサイズを自分のパソコンの半分を割り当てる。(自分のパソコンのメモリサイズはタスクマネージャで確認。)
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine2.PNG" alt="メモリ割り当て">
+        </p>
+        <li>
+          そのまま作成をクリック。
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine3.PNG" alt="ディスク作成">
+        </p>
+        <li>
+          そのまま次へをクリック。
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine4.PNG" alt="ディスク形式">
+        </p>
+        <li>
+          そのまま次へをクリック。
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine5.PNG" alt="ディスクタイプ(可変or固定)">
+        </p>
+        <li>
+          右のボックスに「32GB」と入力して、作成をクリック。
+        </li>
+        <p>
+          <img src="../images/virtualbox_newmachine6.PNG" alt="ディスクサイズ">
+        </p>
+        <li>
+          「設定」をクリック。
+        </li>
+        <li>
+          システム→プロセッサーと移動してプロセッサー数を警告が出るギリギリまで上げる
+          。</li>
+        <li>
+          PAE/NXの有効化にチェックを入れる。
+        </li>
+        <p>
+          <img src="../images/virtualbox_setting1.PNG" alt="CPU設定">
+        </p>
+        <li>
+          ディスプレイに移動後、ビデオメモリーを128mbに設定し、3Dアクセラレーションを有効化にチェックを入れる。
+        </li>
+        <p>
+          <img src="../images/virtualbox_setting2.PNG" alt="グラフィック設定">
+        </p>
+        <li>
+          設定を閉じて、[光学ドライブ]をクリック。
+        </li>
+        <p>
+          <img src="../images/virtualbox_setting3.PNG" alt="DVD設定">
+        </p>
+        <li>
+          ディスクイメージを選択→ダウンロードしたBasixのISOを選択→開く。
+        </li>
+      </ol>
+
+
+      <h3>Basixをインストールする
+        
+      </h3>
+      <ol>
+        <li>
+          「起動」ボタンを押して起動する。
+        </li>
+        <li>
+          メニューが出たら一番上を選択する。
+        </li>
+        <p>
+          <img src="../images/basix_grub.PNG" alt="BasixのGrub画面">
+        </p>
+        <li>
+          「Basix 4.0をインストールする」をダブルクリックしてインストーラを起動する。
+        </li>
+        <p>
+          <img src="../images/basix_installicon.PNG" alt="インストーラのアイコン">
+        </p>
+        <li>
+          「続ける」をクリック。
+        </li>
+        <li>
+          キーボードが打てることを確認して「続ける」をクリック。
+        </li>
+        <li>
+          「グラフィックスとWi-Fiハードウェアと追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする」にチェックを入れて「次へ」をクリック。
+        </li>
+        <p>
+          <img src="../images/basix_install1.PNG" alt="アップデートと他のソフトウェア">
+        </p>
+        <li>
+          何も変更せずに「インストール」をクリック。
+        </li>
+        <p>
+          <img src="../images/basix_install2.PNG" alt="インストールの種類">
+        </p>
+        <li>
+          しばらく時間がかかるので待つ。
+        </li>
+        <li>
+          そのまま「続ける」をクリック。(北海道に住んでいようが沖縄に住んでいようが東京を選んでください。)
+        </li>
+        <li>
+          たまにここでフリーズっぽくなるのですが、放置して大丈夫。
+        </li>
+        <li>
+          あなたの名前の部分にディストリビューションの簡易名を(SereneLinuxではserene。)入力。
+        </li>
+        <li>
+          コンピュータの名前に簡易名+「-PC」と入力。(SereneLinuxではSerene-PC。)
+        </li>
+        <li>
+          パスワードに自分のパスワードを入力。
+        </li>
+        <li>
+          同じパスワードを下にも入力。
+        </li>
+        <li>
+          <strong>
+            「自動的にログインする」にチェックを入れる。
+          </strong>
+        </li>
+        <p>
+          <img src="../images/basix_install3.PNG" alt="ユーザ情報">
+        </p>
+        <li>
+          しばらく放置。
+        </li>
+        <li>
+          「今すぐ再起動する」をクリックして再起動
+        </li>
+        <p>
+          <img src="../images/basix_install_done.PNG" alt="インストール完了">
+        </p>
+
+
+      </ol>
+      <h2>
+        次回へ続く
+      </h2>
+      <p>本当は1ページで終わらせたかったのですが、あまりにも長くなりそうなので次回へ続けたいと思います。
+
+      </p>
+      <p>
+        <a href="https://twitter.com/Hayao0819?lang=ja">
+          作者のTwitter
+        </a>
+        をフォローしてくれるととても喜びます。(宣伝は忘れない。)
+      </p>
+      <h3  class="goto">
+        <a href="customize.html">カスタマイズ編へ行く</a>
+      </h3>
+
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/page/template.html b/page/template.html
new file mode 100644 (file)
index 0000000..fb65222
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="ja">
+  <head>
+    <meta charset="utf-8">
+    <title>
+      【2019年版】Ubuntu系のLinuxディストリビューションを自作しよう 編
+    </title>
+    <meta name="description" content="
+      Ubuntu派生のLinux系OSの自作方法を解説したサイトです。
+      SereneLinuxの開発者が初心者でもできるUbuntu派生OSの作成方法を画像つきで解説します。
+      BodhiBuilderにあるバグの修正方法を解説しているのはここだけ!
+    ">
+    <link rel="stylesheet" href="../style/main-resp.css" media="screen and (max-width: 699px)">
+    <link rel="stylesheet" href="../style/main.css" media="screen and (min-width: 700px)">
+    <link rel="stylesheet" href="../code/vs2015.css">
+    <script src="../code/highlight.pack.js"></script>
+    <link rel="shortcut icon" href="../favicon.ico">
+
+    <!-- class="prettyprint linenums" でコードに色付け -->
+    <!-- <pre><code class="prettyprint linenums"></code></pre> -->
+  </head>
+  <body>
+    <header>
+      <h1>
+        【2019年版】Ubuntu系のOSを自作しよう 編
+      </h1>
+        <p>
+          BodhiBuilderを用いてオリジナルのOSを作成します。
+        </p>
+        <p>
+          自分の好きなデスクトップ環境やソフトウェアを入れてオリジナルのOSを作成しましょう。
+        </p>
+        <p>
+          実際に製作中のOS『SereneLinux』の実例を挙げながらわかりやすく解説していきます。
+          
+        </p>
+        <nav>
+          <ul class="topnav">
+            <li><a href="../index.html">トップページ</a></li>
+            <li><a class="active" href="preparation.html">準備編</a></li>
+            <li><a href="#contact">カスタマイズ編</a></li>
+            <li><a href="">ISO作成編</a></li>
+            <li><a href="">配布編</a></li>
+            <li class="right"><a href="#about">About</a></li>
+          </ul>
+        </nav>
+    </header>
+
+    <main>
+
+    </main>
+
+
+    <footer>
+      It is provided by SereneLinux.
+      <br>
+      Copyright
+      &copy; 2019 SereneTeam All Rights Reserved.
+      <img src="http://www.rays-counter.com/d432_f6_022/5ca3768641891/" alt="アクセスカウンター">
+    </footer>
+
+
+  </body>
+</html>
diff --git a/style/main-resp.css b/style/main-resp.css
new file mode 100644 (file)
index 0000000..45a60a6
--- /dev/null
@@ -0,0 +1,158 @@
+
+ul.topnav {
+       overflow: hidden;
+       margin: 0;
+       padding: 0;
+       list-style-type: none;
+  background-color: #1b2538;
+}
+ul.topnav li {
+       float: left;
+}
+ul.topnav li a {
+       display: block;
+       padding: 2px 3px;
+       text-align: center;
+       text-decoration: none;
+       color: white;
+}
+ul.topnav li a:hover:not(.active) {
+  /*background-color: #a9bce2;*/
+  background-color: #1B73BA;
+}
+ul.topnav li a.active {
+       background-color: #1B73BA;
+}
+ul.topnav li.right {
+       float: right;
+}
+@media screen and (max-width: 699px) {
+       ul.topnav li.right, ul.topnav li {
+               float: none;
+       }
+}
+nav {
+  
+  margin-bottom: 5%;
+  border-top: solid 5px #1B73BA;
+  /*border-bottom: solid 5px #1B73BA;*/
+  margin-left: -1%;
+  margin-right: -1%;
+}
+
+/*見出し系*/
+h2 {
+  background: #F8F8F8;
+  border-top: 2px solid #1B73BA;
+  box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  -moz-box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  box-sizing: border-box;
+  color: #1B73BA;
+  font-size: 110%;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding: 10px 15px 10px;
+}
+h1 {
+  color: #1B73BA;
+  /*
+  text-shadow: 2px 2px 0 #fff,
+               -2px 2px 0 #fff,
+               2px -2px 0 #fff,
+               -2px -2px 0 #fff;
+  */
+  margin-left: 0%;
+  margin-right: 0%;
+  font-size: 110%;
+}
+h3 {
+  border-bottom: 2px solid #1B73BA;
+  font-size: 18px;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding-bottom: 5px;
+}
+h4 {
+  border-left: 2px solid #1B73BA;
+  font-size: 16px;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding-left: 5px;
+}
+
+/*プログラムコード*/
+code {
+  font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace;
+  font-size: 14px
+}
+
+/* 背景 */
+body {
+  background-color: #fff;
+}
+
+
+/* 箇条書き*/
+ul li {
+  line-height: 2
+}
+
+/*フッター*/
+footer{
+  background-color: gray;
+  margin-left: -1%;
+  margin-right: -1%;
+}
+
+/*画像サイズ調整*/
+img {
+  max-width: 60%;
+  height: auto;
+}
+
+pre {
+  max-width: 100%;
+}
+
+/*~へ行く*/
+.goto {
+  text-align: center;
+  max-width: 100%;
+  margin-left: -1%;
+  margin-right: -1%;
+  padding-left: 25%;
+  padding-right: 25%;
+}
+
+/*本文フォントサイズ*/
+p {
+  font-size: 80%;
+}
+
+/*テーブル*/
+table {
+  border: 1px solid #ddd;
+  width: 100%;
+  text-align: left;
+}
+td, th {
+  padding: 2px 2px;
+  text-align: center;
+}
+thead tr {
+  background-color: #1B73BA;
+}
+thead tr th {
+  color: #fff;
+  text-align: center;
+}
+tfoot {
+  border-top: 1px solid #ddd;
+}
+tbody tr th {
+  font-weight: bold;
+}
+tbody tr:nth-of-type(2n) {
+  background: #f5f5f5;
+}
\ No newline at end of file
diff --git a/style/main.css b/style/main.css
new file mode 100644 (file)
index 0000000..4cd2710
--- /dev/null
@@ -0,0 +1,160 @@
+
+ul.topnav {
+       overflow: hidden;
+       margin: 0;
+       padding: 0;
+       list-style-type: none;
+  background-color: #1b2538;
+}
+ul.topnav li {
+       float: left;
+}
+ul.topnav li a {
+       display: block;
+       padding: 14px 16px;
+       text-align: center;
+       text-decoration: none;
+       color: white;
+}
+ul.topnav li a:hover:not(.active) {
+  /*background-color: #a9bce2;*/
+  background-color: #1B73BA;
+}
+ul.topnav li a.active {
+       background-color: #1B73BA;
+}
+ul.topnav li.right {
+       float: right;
+}
+@media screen and (max-width: 699px) {
+       ul.topnav li.right, ul.topnav li {
+               float: none;
+       }
+}
+nav {
+  
+  margin-bottom: 7%;
+  border-top: solid 5px #1B73BA;
+  /*border-bottom: solid 5px #1B73BA;*/
+  margin-left: -4%;
+  margin-right: -4%;
+}
+
+/*見出し系*/
+h2 {
+  background: #F8F8F8;
+  border-top: 2px solid #1B73BA;
+  box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  -moz-box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px 0px;
+  box-sizing: border-box;
+  color: #1B73BA;
+  font-size: 20px;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding: 10px 15px 10px;
+}
+h1 {
+  color: #1B73BA;
+  /*
+  text-shadow: 2px 2px 0 #fff,
+               -2px 2px 0 #fff,
+               2px -2px 0 #fff,
+               -2px -2px 0 #fff;
+  */
+  margin-left: -4%;
+  margin-right: -4%;
+  margin-top: -3%;
+}
+h3 {
+  border-bottom: 2px solid rgb(68, 71, 73);
+  font-size: 18px;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding-bottom: 5px;
+}
+h4 {
+  border-left: 2px solid #1B73BA;
+  font-size: 16px;
+  font-weight: bold;
+  margin: 0 0 20px;
+  padding-left: 5px;
+}
+
+/*プログラムコード*/
+code {
+  font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace;
+  font-size: 14px
+}
+
+/* 背景 */
+html {
+  background-color: #f0f0f0;
+}
+
+body {
+  background-color: #fff;
+  margin-left: 10%;
+  margin-right: 10%;
+  padding: 3% 3%;
+}
+
+
+/* 箇条書き*/
+ul li {
+  line-height: 2
+}
+
+/*フッター*/
+footer{
+  background-color: gray;
+  margin-left: -4%;
+  margin-right: -4%;
+}
+
+/*画像サイズ調整*/
+img {
+  max-width: 60%;
+  height: auto;
+}
+
+pre {
+  max-width: 100%;
+}
+
+/*~へ行く*/
+.goto {
+  text-align: center;
+  max-width: 100%;
+  margin-left: -4%;
+  margin-right: -4%;
+  padding-left: 25%;
+  padding-right: 25%;
+}
+
+/*テーブル*/
+table {
+  border: 1px solid #ddd;
+  width: 100%;
+  text-align: left;
+}
+td, th {
+  padding: 2px 2px;
+  text-align: center;
+}
+thead tr {
+  background-color: #1B73BA;
+}
+thead tr th {
+  color: #fff;
+  text-align: center;
+}
+tfoot {
+  border-top: 1px solid #ddd;
+}
+tbody tr th {
+  font-weight: bold;
+}
+tbody tr:nth-of-type(2n) {
+  background: #f5f5f5;
+}
\ No newline at end of file