ゼミ ブロッコリー
1.横井ページの添付ファイルから、最新版のブロックが入っているzipファイルとWine ~red4
.csvをダウンロードする。
2.エクスプローラーで「\\WSl$」を打つ。アクセス許可がないと言われたら許可する。エクスプローラーのどこにあるか
3.Ubuntu > var > www > html ...①
Ubuntu > usr > lib > cgi-bin...2⃣
両方を右クリックで「クイックアクセスにピン止めする」
4.Ubuntuを開いて、①のwwwまでアクセス(cd)する
sudo chmod 777 -R html
※「ls -l」を入力すると"-rwxrwxrwx"と表示されていれば大常備
2⃣も同様にする(libまでアクセス)
sudo chmod 777 -R cgi-bin
⑤Ubuntuで、Ubuntu > var > logにアクセスする。
sudo chmod 777 -R apache2
⑥apache2の中の「error.log」にAjax通信に関するエラーのみ表示される
⑦cgi-binの中にある
pip install matplotlibでインストール
sudo service apache2 restartで更新
⑭課題のブロックは3つのフィル
ビジュアルプログラミングによるデータ処理を行う。Blocklyというオープンソースのビジュアルプログラミングを用いる。使用するプログラミング言語は主にJavascriptである。
とりあえず、WSL2のインストールから始める。以下のサイト見ながらでできる。 https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
一応ここにその内容を記す。まず、管理者権限でPowerShellを開き、次のコマンドを入力する。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。
systeminfo | Select-String "システムの種類"
コマンドプロンプトの場合はこれ
systeminfo | find "システムの種類"
次にwindowsのバージョンを確認する。バージョンとビルド番号を確認するには、 Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択します。 (または、Windows コマンド プロンプトで ver コマンドを入力します)。 一つ前の手順で調べたシステムに必要な最新の Windows バージョンを満たしてない場合、更新します。
WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要があります。管理者として PowerShell を開き、以下を実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
お使いのパソコンを再起動して WSL のインストールを完了し、WSL 2 に更新します。
次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。
ダウンロード後、ダウンロードしたファイルを実行する。
次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定します。
wsl --set-default-version 2
次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。
複数のデバイスで使うか聞かれたら必要ないと答える。
その後、起動し、ユーザー名とパスワードを設定する。もちろん、どちらも覚えるか記録しておく。
このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。 ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。 このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。
ここから、Ubuntuで作業する。Ubuntuで次のコマンドを実行する。
sudo apt update sudo apt -yV upgrade
WSL2を再起動する。再起動後次のコマンドを実行する。このコマンドはapache2というWebサーバーソフトウェアをインストールしている。インターネット上で企業や官公庁の公式サイトで情報を入手したり、動画やSNSを利用したりする場合には、必ずWebサーバーソフトウェアのお世話になる。そのうち半数でApacheが稼働している。
sudo apt install apache2 apache2 -v
以下のコマンドはpythonを使用するために必要な機能をインストールしている。
sudo apt install -y build-essential # c++コンパイラ sudo apt install -y libffi-dev sudo apt install -y libssl-dev # openssl sudo apt install -y zlib1g-dev sudo apt install -y liblzma-dev sudo apt install -y libbz2-dev libreadline-dev libsqlite3-dev # bz2, readline, sqlite3 sudo apt install -y git sudo apt install -y net-tools
ここでWSL2(Ubuntu)を再起動。 次に以下のコマンドでpyenv本体のダウンロードとインストールをする。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
次に、以下のコマンドで.bashrcの更新をする。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc
WSL2(Ubuntu)を再起動。再起動後に次へ
以下のコマンドでpyenvがインストールできたかを確認(pyenvはLinuxにおいて、Pythonの実行環境を管理するツール。つまりいろんなバージョンのpythonを管理する有能)
pyenv -v
以下のコマンドでpythonのインストール
pyenv install 3.8.5 # 例えば,version 3.8.5 pyenv versions # インストール済みのpyenvのバージョンを確認できる pyenv global 3.8.5
これにて、pythonのインストールは完了である。
ダウンロードすべきファイルを以下のzipファイルにまとめたので、これをダウンロードし任意のフォルダに置く。
エクスプローラーのパスのところで、\\wsl$と入力しEnter。そしてまず、/var/www/html内に先ほどダウンロードしたhtmlの中身を、/usr/lib/cgi-bin内に cgi-binの中身を入れる。htmlはサイトを構成するファイルが入っていて、cgi-binはpythonで動かすデータ処理の部分のファイルが入っている
次に、CSVファイル入れるところ作る。
cd mkdir kaiki sudo chmod 777 kaiki
入れるとき拒否られたら次のコマンドをubuntuで。chmodで読み込みや書き込みを他の人からでもできるようにしている。
sudo chmod 777 /var/www/html sudo chmod 777 /usr/lib/cgi-bin
cgi-binなかったら次のコマンド。cgi-binディレクトリを作成している
mkdir /usr/lib/cgi-bin
その後以下を実行。ファイルの権限を変えてる。755にするのは、この後のウェブ上のサイトから他のパソコンからでも使えるようにするため。(しかし書き込みはできない。これについて知りたかったらchmodについて調べて)
sudo chmod 755 /usr/lib/cgi-bin sudo chmod 755 /usr/lib/cgi-bin/kaiki.cgi
python -m pip install pandas python -m pip install scikit-learn
以下のコマンドでエディタ開ける。
sudo nano /usr/lib/cgi-bin/kaiki.cgi
上のコマンドで開いた後、以下の二つの部分のzetaというところを自分のUbuntuのユーザー名に変える
#!/home/zeta/.pyenv/shims/python
wine.to_csv('/home/zeta/kaiki/123456.csv', header=False, index=False)
「Ctrl+X」→「y」→「Enter」で保存する。
次のコマンドでCGIモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。
sudo a2enmod cgid
次のコマンドをWSL2上で実行するとサーバーが立ち上がる。
sudo service apache2 start
自分のWSL2のIPアドレスを調べるためにWSL2上で次のコマンドを実行する。
ifconfig
WSL2のIPアドレスはeth0のinetのところに書かれているIPアドレスである。次に自分のWindowsでそのIPアドレスをGoogle Chromeに入力し移動すると、Blocklyを開くことができる。
次のリンクを右クリックして名前を付けてリンク先を保存を選択する。
そして、ファイルを選択するブロックにこのファイルを入れる。 その後、回帰分析のブロックの中にそのブロックを入れ実行するとUbuntuのpythonで行われた回帰分析の結果がコンソールに返ってくる。コンソールはGoogle ChromeをアクティブにしてF12を押すと見れる。
ダウンロードしたフォルダ中に入っている、average.jsとaverage_block.jsと index.htmlを主に編集して作っていく。
average.jsには実行ボタンを押したときの動きが定義されている。
平均値を出すブロックとconsole.logを出すブロックの定義の仕方が以下である。
average_block.jsには、ブロックの見た目と表示されたときの動作が定義されている。
平均値を出すブロックとconsole.logを出すブロックの定義の仕方が以下である。
index.htmlにはページの構成と使うjavascriptファイルが定義されている。
toolbox.xmlにブロックを書くことによって初めて使えるようになる。
こちらからデータを送ってそのデータに基づいてサーバで処理を行ない、結果を返すものをCGIという。今回は、CGIプログラムをpythonで作る。pythonを使う理由は、機械学習やデータ処理の部分を書くことが簡単だからである。以下がpythonで書かれた拡張子.cgiのプログラムである。
このプログラムを実行できるようにjavascript内で記述することで実行できる。 実行すると、単回帰分析ができる。
今回、入力出力に使うファイルの形式が決まっているので説明する。
まず、拡張子は.csvである。そしてファイルの中身は以下のようになっている。
まず、このcsvファイルの一行目はデータ数を表す。
二行目は、回帰分析であれば、左が説明変数、右が目的変数など、入力と出力のような関係を表す。
三行目は、その列のデータのラベルである。文字であれば何でもよい。
四行目は、その列のデータの型である。例えば、intやfloat、stringなどが入る。
それ以下の行は、データである。
このファイルの入力で動作して、この形式のファイルで出力するように、pythonのデータ分析等のプログラムを作成してほしい。
作ってほしいものは、回帰分析などのデータ分析ができるものである。とりあえず、pythonで出来るデータ分析を調べて、 通常のpythonで動かしてみる。できるだけ、csvファイルやjsonファイルを使っているものが好ましい。
そして、次に入力出力を上記で説明したcsvファイルに対応させて動作させる。
入出力を変更して動いたら.cgiのプログラムを作成して先ほどのpythonのコードをコピーペーストする。
pythonのcgiプログラム(といかajaxを使ってPOST通信で動かすときのpythonプログラム)は以下のようなプログラムの形にする必要がある。コメントに書いてあるように動作する。
kaiki_yosoku.cgi
cgiプログラムの上に以下のようなおまじないをつける。zetaの部分を自分の名前に変える。これは、上が自分の使うプログラミング言語の実行コマンド(今回はpython)を入力している。下が、このcgiプログラムの文字コードを記述する。UTF-8が楽なのでUTF-8を推奨する。
#!/home/zeta/.pyenv/shims/python # -*- coding: utf-8 -*-
これは、上が自分の使うプログラミング言語の実行コマンド(今回はpython)を入力している。下が、このcgiプログラムの文字コードを記述する。UTF-8が楽なのでUTF-8を推奨する。
そしてmoduleをimportした後のところに次のおまじないをつける。
print("Content-type: application/json")
print("\n\n")
このおまじないは、ajax通信で送られてきたものがjson形式で書かれていることをcgiプログラムに認識させている。
そして下のコードに送られてきたデータが入る。
data = sys.stdin.read()
最後にクライアントに返すためのおまじないをつける。resultの部分がクライアントに送信するものである。JSONにエンコードしているのは、ajax通信ではjsonで送られてきたものはjsonで返信しなければならない掟があるからである。
print(json.JSONEncoder().encode(result))
print('\n')
まずVisual Studio Codeを入れる。以下にリンクを貼った。
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
リンクを開いたら、今すぐダウンロードをクリックし、次の画面で自分のOSに合わせてクリックする。
すると、インストーラのダウンロードが始まるので、完了後そのファイルを実行する。
インストールは適当で良い。
インストール後、実行し拡張機能を入れる。
拡張機能は左にある箱が4つあって1つだけ離れているものである。
そして、拡張機能の検索バーでLive Serverを検索してインストールする。
ダウンロードしたフォルダのindex.htmlを開いてVS Code右下に表示される「Go Live」をクリックすると、ブラウザで http://127.0.0.1:5500/ が実行される。
##サーバー
https://qiita.com/S-Masakatsu/items/63b9e0e7a869d2aafc4b
https://qiita.com/salt_field/items/3e255c3356006a1e020f
https://qiita.com/ksugawara61/items/ba9a51ebfdaf8d1a1b48
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git libffi-devel