WHITE HACKERACADEMY

自分のパソコンで行う実習 / local-1

操作ログから他人の書類を返した記録を探す

他人の書類を返した操作と、保存が完了した処理を、ログのIDでつないで報告する。確認できない人物や原因は断定しない。

1. 準備する

書類アプリの調査担当として、誤って書類を返した操作と、その後の報告書の保存状況を調べます。架空の10行を一つの調査報告にまとめます。エラーの件数や受付の返事だけでは、何が起きたか確定しません。

本文の知識を、この実習でどう使うか

は処理の記録です。時刻が近いだけで結び付けず、同じ要求・・保存対象のIDをたどります。

左から右へ(狭い画面では上から下へ)処理を追う
  1. 記録のIDと時刻
  2. 同じ処理をつなぐ
  3. 返却と保存完了の証拠

結果が違ったときに考えること:202は受付で、504は待ち時間切れです。保存完了は同じ対象の後続記録で確かめ、人物や全期間の被害は断定しません。

編集するファイルと、確認する結果

自分で編集するもの
analyze.py
提出するもの
analyze.py、findings.json
結果を確認する方法
最後の実行コマンドが結果ファイルを作ります。結果を手で正解に書き換えず、編集元を直して再実行し、最新のファイルを選んで提出します。
編集する箇所をファイル内で見つける

エディターの検索(WindowsはCtrl+F、MacはCommand+F)で下の文字を探します。行番号は配布直後の目安です。行を追加した後は文字や関数名で探してください。下のコードは修正前の見本です。

analyze.py:配布時の9行目付近

selected = [event for event in events if "user" in event and event["status"] >= 400]

analyze.py:配布時の12行目付近

result = {"disclosures": [event["id"] for event in selected], "saved": saved}

Pythonの読み方:defは処理のまとまりを作る、returnは結果を返す、ifは条件で分ける命令です。=は値を入れる、==は等しいか比べる記号です。andは両方、orはどちらかを表します。先頭の空白で同じ処理の範囲を示すので、配布コードの空白を保って編集します。

エディターで変更後はWindowsならCtrl+S、MacならCommand+Sで保存します。コードの記号は半角を使います。エディターの文章に実行コマンドを貼らず、コマンドはPowerShellまたはターミナルへ入力してください。

この実習では、analyze.py、findings.jsonと、予測・変更前後の結果・理由を提出します。

ファイルの取得と端末での実習はこのまま進められます。結果を保存するにはログインが必要です。別タブでログインする(ログイン後はこのページを再読み込みしてください。)

現在、ファイルの確認と履歴の保存が使えます。理由の説明へのAIフィードバックは準備中のため、提出後も未判定になります。

使うパソコン
  1. 実習ファイルをダウンロードして展開します。

    下のZIPを「ダウンロード」フォルダーに保存します。ZIPを右クリックして「すべて展開」を選びます。 展開したフォルダーの中に events.jsonl が見えることを確認します。既に同じ名前のフォルダーがある場合は、前回の編集を上書きしないよう別の名前で展開してください。

    この実習のファイルを受け取る(ZIP)
  2. コマンドを入力する画面を開きます。

    スタートメニューで「PowerShell」と検索して開きます。管理者として実行する必要はありません。 コマンドは上から順に貼り付けてEnterで実行します。先頭の > や $ といった表示は入力しません。

  3. 展開したフォルダーへ移動します。

    通常の保存場所なら、次のコマンドを使えます。違う名前や場所へ展開した場合は、下の対処方法を使ってください。

    Set-Location -LiteralPath "$HOME/Downloads/wha-U-LOG-01"
    Get-ChildItem

    表示された名前に events.jsonl があれば、操作する場所は合っています。

  4. Pythonを準備します。

    Pythonは .py ファイルに書いた処理を動かすソフトです。「python.org」のDownloads → WindowsからPython install manager(公式のインストール管理ソフト)を取得してインストールします。新しくPowerShellを開き直し、pymanager install default を実行してPython本体を用意します。既にPython 3.11以降が使える場合は追加インストールは不要です。 この実習はPython 3.11以降の標準機能だけを使います。追加パッケージや有料サービスは不要です。

    pymanager install default
    py -3 --version

    Python 3.11以上のバージョンが表示されたら、もう一度上の移動コマンドで実習フォルダーへ移動します。

準備で止まったときの確認方法
  • 「フォルダーが見つかりません」:ZIPの中ではなく展開したフォルダーを開きます。エクスプローラーのアドレス欄をクリックしてパスをコピーし、Set-Location -LiteralPath 'コピーしたパス' の引用符内へ貼ります。
  • 「ファイルが見つかりません」:一覧にファイルがなければ、同じ名前の内側のフォルダーを開いていないか確認します。上の移動操作をそのフォルダーへやり直します。
  • 編集したのに変わらない:ファイルを保存し、拡張子が .py.txt や .txt.rtf になっていないか確認します。MacのTextEditでは「フォーマット→標準テキストにする」を選びます。コードを編集するときは「編集→自動置換」のスマート引用符とスマートダッシュをオフにし、半角の記号が別の文字に変わらないようにします。
  • Pythonが見つからない:公式インストールを完了し、ターミナルを開き直します。SyntaxErrorは記号の書き間違い、IndentationErrorは先頭の空白の違いを示します。表示されたファイル名と行番号を見て、全角記号や不要な空白を直してください。

準備に時間がかかっても理解度を下げることはありません。