ランダム穴埋め問題表示
実行サンプル
説明
- HAIKのページ内容を次の「ページの内容」の様にします。問題はJavaScriptのquetion配列変数に文字列データとして記述します。その際に半角の「[[」と「]]」で囲まれた部分が穴(濃い青で文字が隠れる)になります。ここにマウスカーソルを重ねると文字が出ます。
- 一つ一つの問題文はここではダブルコーテーションで囲み、半角カンマで区切ります。問題文中に改行を入れないで下さい。表示で改行したい部分に「<br>」を入れます。
ページの内容
#html{{
<style>
.blankWord {
padding-left:12px;
padding-right:12px;
background-color: rgba(0,0,128,0.8);
color: rgba(0,0,128,0.1);
font-size:150%;
}
.blankWord:hover {
background-color: rgba(255,0,0,0.1);
color:#770000;
}
</style>
<button id="nextQuetion">次(ランダム)</button>
<button id="nextQuetion2">次(順番)</button>
<div id="printArea"></div>
<script>
var
quetion = [
"Ubuntuは[[2]]年毎に、不具合の修正などを提供するサポート期限が長いバージョン(LTS版)がリリースされます。2020年4月にリリースされた Ubuntu [[20.04]]は最新のLTS版です。"
,
"Ubuntuの18.04などでネットワークカードに割り当てられたIPアドレスを表示、確認するコマンドは、[[ip]] コマンドです。これにaddressを1文字に短縮してオプションとして指定し、[[ip a]] と入力すると確認できます。"
,
"Ubuntuでは、新しくソフトウェア(アプリ)を追加する際には、パッケージ管理のaptが利用できる。例えばWEBサーバーのApache2をインストールする場合、作業しているのがrootユーザーでなければ、[[sudo apt install apache2]]としてインストール出来ます。"
,
"Ubuntuでのパッケージ管理の注意点。まず、[[不要なパッケージ]]は入れない。[[dpkg]] や [[aptget]] コマンドを利用してアプリケーションの追加や削除が可能です。"
,
"不要なパッケージの発見と削除<br>[[deborphan]] コマンドを使用すると、パッケージ間の依存関係を分析して、どのパッケージからも依存されていないパッケージを見付けることができます。<br>ただし、依存されてはいないが、[[使用されている重要]]なパッケージである場合もあります。"
,
"リモートメンテナンス<br>SSHが必要な場合、Ubuntu 18.04(bionic beaver) では、[[OpenSSH]] のサーバパッケージをインストールして利用する事が出来ます。<br>ただし、デフォルトではインストールされていません。これは Ubuntuコミュニティによる、システムを[[デフォルト]]でできるだけ安全にしておくための配慮です。<br>[[OpenSSH]] を利用するには以下のコマンドでパッケージをインストールします。<br><br>$ sudo apt install [[openssh-server]]"
,
"OpenSSHがインストールされると [[sshd]] が稼働します。デフォルトではパスワード認証でのログインが有効です。[[管理者権限]]を持つユーザのパスワードが簡単な場合は早急に変更しましょう。"
,
"リモートメンテナンス準備のために (A)[[sshd]] を稼働した後、だれでもアクセスできるようにサーバを開放しておくのは非常に危険です。ネットワークの設定で (A) へのアクセスをコントロールしましょう。"
,
"sshd は [[libwrap]] をリンクしているので TCP Wrappers のアクセスコントロールを利用できます。<br>TCP Wrappers はシステムへのリクエストをモニタするプログラムです。ファイルの、[[/etc/hosts.allow]] と [[/etc/hosts.deny]] にそれぞれ許可、不許可のホスト及びネットワークを記述するこでアクセスコントロールを行うことができます。"
,
"OpenSSH でのリモートメンテナンスは、ネットワークによるアクセス制御と併せて[[認証の強化]]を行うことが推奨されます。"
,
"デフォルトの sshd は[[パスワード]]認証でログインができ、「ユーザ名」と「パスワード」の組み合わせでログインすることができます。ユーザ名とパスワードが同じであったり、予想可能な脆弱なパスワードであった場合には[[辞書]]攻撃などで簡単にシステムを乗っ取られる事もあります。"
,
"公開鍵認証を利用するメリットは、システムへ事前に[[登録]]した[[鍵]]を持つクライアントからのアクセスのみに制限できることです。"
,
"公開鍵認証は 2 つの鍵「キーペア」を作成します。キーペアは(A)「[[秘密鍵]]」と(B)「[[公開鍵]]」からなり、(A)をサーバに登録します。サーバに登録されている(A)のペアである(B)を持つクライアントだけがサーバにログインできるようになります。"
,
"(A)[[公開鍵]]から(B)[[秘密鍵]]を作成することはできませんから誰かに(A)を見られても問題はありません。また(B)を利用するためにパスフレーズを設定できます。これにより、 (1)(A)が登録されている事 (2)キーペアの(B)をもつクライアントである事 (3) (B)を利用する[[パスフレーズ]]を知っている事の条件でシステムへログインができるようになります。<br>設定はキーペアを作成することから始めます。 [[ssh-keygen]] コマンドに t オプションで鍵のタイプを指定します。"
,
"Ubuntuをインストールする際にダウンロード可能なisoイメージが、ダウンロードされた際にエラーや改ざんが無いかをチェックするには、MD5チェックサムの仕組みを利用すると良い。Ubuntuの場合は、次の様に入力して表示される。チェックサム文字とダウンロード画面に表示、公開されているチェックサムの内容を比較します。<br><br>例)<br>$ [[md5sum]] ダウンロードしたisoファイル <br>c8977ce50d175dfce8e309dcaef8f1b3 ダウンロードしたisoファイル"
];
$(function() {
printRandamQuetion();
});
$("#nextQuetion").click(function(){
printRandamQuetion();
});
function printRandamQuetion() {
qMax= quetion.length;
var qNum = getRandomInt(qMax);
var qStr=quetion[qNum];
qStr = cnvCheckBlankCss(qStr);
$("#printArea").html(qStr);
}
var jyunbanNo=-1;
$("#nextQuetion2").click(function(){
var qMax= quetion.length;
jyunbanNo++;
if (jyunbanNo>=qMax) {
jyunbanNo=0;
}
var qStr=quetion[jyunbanNo];
qStr = cnvCheckBlankCss(qStr);
$("#printArea").html(qStr);
});
function cnvCheckBlankCss(st) {
var r=st;
const regex1 = /\[\[/gi;
r = r.replace(regex1, '<span class="blankWord">');
const regex2 = /\]\]/gi;
r = r.replace(regex2, '</span>');
return r;
}
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
</script>
}}
修正履歴
- 2020-05-13 初版を公開
- 2020-05-15 順番に表示するボタンを追加