Anaconda+Django+VSCodeでストレスレスな環境構築②
こんにちは。talosです。
今回はAnacondaでDjangoをインストールし、VSCodeでコーディングできるように環境構築していきたいと思います。
②ではVSCodeでDjangoアプリのデバッグをできるようにします。
Djangoのインストールがまだの方は①から読んでください。
拡張機能のインストール
VSCodeでDjangoアプリのデバッグをできるようにします。
次に以下のワードをそれぞれ検索窓に打ち込み、インストールしてください。
- Python
- Anaconda Extension Pack
AnacondaのPathを通す
AnacondaをインストールしたときにPathを通していない人は、ユーザー環境変数のPathに以下を追加してください。
(ユーザー名のところはご自身のユーザー名に置き換えてください)
- C:\Users\ユーザー名\Anaconda3
- C:\Users\ユーザー名\Anaconda3\Scripts
- C:\Users\ユーザー名\Anaconda3\Library\bin
VSCodeのターミナルで仮想環境に入る
まずVSCodeを再起動してください。
立ち上がったらCtrl+Shift+Pでコマンドパレットを開き、「Python: インタープリターを選択」と入力して選択します。
すると、以下のような選択肢が出てくるので先程作成した仮想環境を選択します。
そうしたら、Ctrl+Shift+@でターミナルを開きます。
うまくいけば仮想環境が開くはずです。
仮想環境が開かなかった場合は再起動したり、再びインタープリターを選択してみたりしてください。
スポンサーリンク
デバッグ用のアプリを作る
Djangoの公式チュートリアルを基にデバッグをするための最低限のアプリを作ります。
仮想環境に入ったら、前回作ったプロジェクト(mysite)のディレクトリに移動します。
mysiteに入ったら以下のコマンドを実行します。
python manage.py startapp polls
これでPollsアプリケーションが作られました。
まず、mysiteディレクトリ内のmysiteのurls.py(mysite/mysite/urls.py)を編集します。
mysite/urls.py
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
次にpollsディレクトリに移動し、views.pyを編集します。
polls/views.py
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
pollsにもurls.pyを作成します。
polls/urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
デバッグをしてみる
ファイル⇒フォルダーを開くからmysiteを選択してください。
次に虫のマークを押下し、「launch.jsonファイルを作成します」をクリックします。
Pythonを選択します。
Djangoを選択します。
次にブレークポイントを設置します。
が、その前に、今回はデバッグしているところをわかりやすくするためにコードを追加します。
polls/views.py
from django.http import HttpResponse def index(request): print(1) print(2) print(3) return HttpResponse("Hello, world. You're at the polls index.")
そうしたら、5行目の左側にカーソルを合わせると赤い丸が出るので、クリックします。
カーソルを外しても赤い丸が出たままになっていればOKです。
あとは実行ボタンを押下するとサーバーが立ち上がるので、http://localhost:8000/pollsにアクセスします。
ステップオーバーボタンを押すと、コンソールに1と出力されたと思います。
さらにもう1回押すと2が出力され、もう1回押すと3が出力されます。
Anaconda+Django+VSCodeでストレスレスな環境構築①
こんにちは。talosです。
今回はAnacondaでDjangoをインストールし、VSCodeでコーディングできるように環境構築していきたいと思います。
①ではDjangoの準備を行います。
Djangoをインストール済みの方は②から読んでください。
前提条件
OS:Windows
Anacondaインストール済み
VSCodeインストール済み
※VSCodeのインストール方法は以下のページで説明しています。(日本語化までで大丈夫です)
talosta.hatenablog.com
仮想環境を作成
すでに仮想環境がある人は読み飛ばしてください。
Anaconda Promptを開き、以下のコマンドを実行します。
conda create -n django python=3.7
「-n」の後は仮想環境の名前ですが、任意の名前をつけてください。
また、pythonのバージョンは3.7ならどのDjangoのバージョンでも動くので今回はこれを使います。
別のバージョンを使いたいという方は以下のページを参考にしてください。
Djangoをインストール
先程作った仮想環境に入りましょう。
conda activate django
仮想環境に入ったら以下のコマンドを実行してDjangoをインストールします。
conda install -c conda-forge django
スポンサーリンク
Djangoの動作確認
VSCodeの設定の前にDjangoの動作確認をしておきましょう。
以下のコマンドでプロジェクトを作成します。
django-admin startproject mysite
プロジェクトを作成したら、
cd mysite
でプロジェクトのディレクトリに移動し、サーバを起動させます。
python manage.py runserver
以下のようなメッセージが出てきたらブラウザでhttp://127.0.0.1:8000/にアクセスしてみてください。
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. November 15, 2020 - 11:37:20 Django version 3.1.3, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
このページが出てきたら成功です。
令和2年度10月の情報処理技術者試験は返金されないってマジ?
こんにちは。talosです。
いまTwitterではこのような噂が流れています。
『次回の情報処理技術者試験は中止になっても返金されない』
マジ?
いやいやいや、まさかそんなわけ、、、
とりあえず情報処理技術者試験のページを見てみることにしました。
そこにはこのような一文が、、、
『受理した受験手数料は、理由のいかんにかかわらず返還できません』
がーん
これはつらいですね、、、
でも待ってください。
この一文、結構前から書いてありました。
それを読んでいなかった一部の人が勝手に騒いでいるのでは?
と思い、よくよく読んでみるとこのようなことが書いてありました。
(1)~(3)をご承知おきの上、受験申込みいただきますようお願いいたします。
受理した受験手数料は、理由のいかんにかかわらず返還できませんので、ご注意ください。なお、(1) のように経済産業省及び当機構の判断で試験実施を中止した場合などには、代替措置等を講じる場合もあります。
また、新型コロナウイルス感染症拡大防止の観点から、早期の受験を迫られていない方につきましては、なるべく今回の受験申込みを自粛していただきますよう、ご協力をお願いします。(1) 試験の中止について
新型コロナウイルス感染症の感染状況によっては、受験申込みを受け付けた後でも、試験を中止する場合があります。
スポンサーリンク
Q.「受理した受験手数料は、理由のいかんにかかわらず返還できません」とのことですが、試験実施が中止になった場合はどうなるのでしょうか。
A.地震、台風などのやむを得ない事情や、新型コロナウイルス感染症の感染状況によっては、受験申込みを受け付けた後でも、経済産業省及びIPAの判断で試験実施を中止することがあります。その場合、代替措置等を講じる場合もあります。
この「代替措置等」は、状況により、別日程での試験実施(振替)または受験手数料の返還の措置を行います。
一見するとどっちつかずに聞こえますが、私はこういうことだと思います。
『中止の場合は返金するけど、あなたが新型コロナにかかって試験受けられなくても返金しないよ』
もちろん『代替措置等を講じる場合もあります。』とあるので返金されない可能性も無きにしも非ずですが、今までの対応を見るとその可能性は低いでしょう。
ということで、そこらへんは心配ないと思います。
あとは自分は絶対新型コロナにかからないという自信がある人だけ申し込みましょう。
JavaServer FacesでWebアプリ開発 ~基本編~
今回はJSFを使って簡単なWebアプリを作ります。
環境構築がまだの方はこちらの記事から読んでみてください。
テーブルの作成
開いたら前回設定したパスワードを入力します。
プロンプトが表示されたら
create database sample; use sample; create table user (id integer primary key, name varchar(30) not null); insert into user values (1, "Ito"); insert into user values (2, "Sato"); insert into user values (3, "Muto"); select * from user;
と打ち込んでください。
このような出力があるはずです。
今回はSQLの意味については触れません。
IDと名前のカラムを持つテーブルを作ったことだけは覚えておいてください。
プロジェクトの作成
Eclipseを開き、ファイル→新規→動的Webプロジェクトを選択してください。
今回のプロジェクト名は「JsfSample」とします。
次にターゲット・ランタイムをWildFly 11.0にします。
最後に構成の欄の変更ボタンを押し、JavaServer Facesにチェックを付けます。
OKと完了を押します。
JDBCドライバを入れる
C:\Program Files(x86)\MySQL\Connector J 8.0にあるmysql-connector-java-8.0.20.jarをWebContent/WEB-INF/libに入れます。
スポンサーリンク
JavaBeansを作成
まず、Javaリソースのsrc上で右クリックし、新規→クラスと進みます。
パッケージ名を「javabeans」、クラス名を「User」とし、インターフェースに「java.io.Serializable」を持ちます。
package javabeans; import java.io.Serializable; public class User implements Serializable { private int id; private String name; public User() { } public User(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
DAOを作成
DAOはData Access Objectの略です。
基本的にはデータベース操作を行うクラスを指します。
JavaBeansと同様にクラスを作成します。
パッケージ名を「dao」、クラス名を「UserDao」とします。
package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import javabeans.User; public class UserDao { private final String URL ="jdbc:mysql://localhost:3306/sample?serverTimezone=JST"; private final String USER = "root"; private final String PASSWORD = "root"; // 全件取得 public ArrayList<User> getAllUsers() { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; ArrayList<User> users = new ArrayList<>(); try { con = DriverManager.getConnection(URL, USER, PASSWORD); String sql = "select * from user"; ps = con.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); users.add(user); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (con != null) { con.close(); } } catch (SQLException se) { se.printStackTrace(); } } return users; } }
バッキングビーンを作成
バッキングビーンとはJSFで作られたページとやりとりをできるJavaプログラムです。
アノテーションを付けることでJSFページとやりとりができます。
アノテーションについては後ほど説明します。
また、バッキングビーンはJavaBeansと同じくカプセル化されています。
それでは作ってみましょう。
パッケージ名は「backingbeans」、クラス名は「UsersBean」とします。
package backingbeans; import java.io.Serializable; import java.util.ArrayList; import javax.enterprise.context.RequestScoped; import javax.inject.Named; import dao.UserDao; import javabeans.User; @Named @RequestScoped public class UsersBean implements Serializable { private ArrayList<User> users; public UsersBean() { UserDao userDao = new UserDao(); users = userDao.getAllUsers(); } public ArrayList<User> getUsers() { return users; } public void setUsers(ArrayList<User> users) { this.users = users; } }
@Namedと@RequestScopedがアノテーションと呼ばれるものです。
@Namedはクラスに任意の名前を付けるものですが、指定しなければクラス名の1文字目を小文字にした名前が付けられます。
UserBeanクラスの場合はuserBeanとなります。
これがないとJSFページからアクセスできないので必ず付ける必要があります。
また、バッキングビーンはnewすることができません。
その代わり、オブジェクトの生成と廃棄をJavaEEシステムが自動で行ってくれます。
そのタイミングを指定しているのが@RequestScopedです。
@RequestScopedはリクエストが発生した時にオブジェクトが自動生成され、レスポンスが完了すると破棄されます。
他にも@SessionScopedや@ApplicationScopedなどがあり、@SessionScopedはユーザーがログインしてからログアウトするまでの過程に相当し、@ApplicationScopedはアプリケーションが起動してから停止するまでの過程に相当します。
xhtmlファイルの作成
WebContentフォルダ上で右クリックし、新規→XHTMLページへと進みます。
ファイル名は「index.xhtml」とします。
次へを押し、Blank JSF Pageを選択して完了を押します。
できたらこのように書いてみましょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>ユーザー一覧</title> </h:head> <body> <h1>ユーザー一覧</h1> <h:dataTable value="#{usersBean.users}" var="user" border="1"> <h:column> <f:facet name="header">ID</f:facet> #{user.id} </h:column> <h:column> <f:facet name="header">名前</f:facet> #{user.name} </h:column> </h:dataTable> </body> </html>
#{usersBean.users}はEL式と呼ばれます。
これはUserBeanクラスをのusersフィールドを表しています。
また、dataTableタグは拡張for文のように使い、表を作ることができます。
userという変数はusersリストの各行を表し、繰返し出力します。
実行する
index.xhtml上で右クリックし、実行→サーバーで実行を選択します。
ウィンドウが開いたら完了を押します。
すると以下のようなページが開くはずです。
なお、コードを変更したときは一度サーバーを停止してから実行してください。
JavaServer FacesでWebアプリ開発 ~環境構築編~
最近、JSF(JavaServer Faces)をやっているのですが、参考になるWebサイトが少ないので書いていこうと思います。
今回は環境構築をしていきます。
MySQLインストールの準備
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads
上記ページからMicrosoft Visual C++ 2019 Redistributable Packageをダウンロードします。
ダウンロードしたら実行してインストールしてください。
MySQLのインストール
https://dev.mysql.com/downloads/windows/installer/8.0.html
上記ページからインストーラをダウンロードします。
ダウンロードできたら実行しましょう。
最初にこのウィンドウが出るのでデフォルトのままNextを押します。
次にこのウィンドウが出るのでNextを押します。
ダイアログが出るのでYesを押します。
このウィンドウが出るのでExecuteを押します。
以降初期設定が始まりますが、基本的にはデフォルトで大丈夫なのでNextを押し続けます。
ここまできたらパスワードを設定します。
パスワードを打ち込んだらまたNextを押し続けます。
このウィンドウに到達したらExecuteを押しましょう。
終わったらFinishを押し、その後Nextを押し続けます。
このウィンドウが出たら、先程設定したパスワードを入力し、Check→Nextを押します。
次のウィンドウでExecuteを押し、終わったらFinishを押します。
その後のウィンドウではNextを押し、このウィンドウに到達したらFinishを押します。
ユーザー環境変数のPathに以下をjdkのパスとMySQLのパスを追加します。
下記は例です。
C:\pleiades-2020-03-java-win-64bit-jre_20200322\pleiades\java\11\bin
C:\Program Files\MySQL\MySQL Server 8.0\bin
それぞれ、
java -version mysql --version
でバージョンが表示されればOKです。
サーバの準備
Eclipseを開き、ヘルプ→Eclipseマーケットプレースへと進みます。
「JBoss」で検索し、「JBossツール 4.15.0.Final」をインストールします。
警告が出たらインストールを選択します。
ソフトウェア更新が表示されたら、今すぐ再起動を押しましょう。
再起動したらウィンドウ→ビューの表示→その他と進み、サーバーを選択します。
サーバービューが表示されたら、「使用可能なサーバーがありません。・・・」というところをクリックします。
ウィンドウが表示されたら「WildFly11」を選択します。
その後、次へを押し続け、以下のウィンドウが表示されたら「ダウンロードしてランタイムをインストール」を押します。
WildFly 11.0.0 Finalを選択し、完了を押します。
インストールが終わったら完了を押します。
とうとうWindows Terminalが登場!インストール方法と使い方を解説
先日「Window Terminal」が正式リリースされました。
Window Terminalはタブ機能を持っているので、コマンドプロンプト、PowerShell、WSLなどのコマンドラインツールを複数開くことができます。
WSLなどを使って開発している人はぜひインストールしてみてください。
Windows Terminalをインストール
まず、Microsoft Storeを開きましょう。
開いたら検索窓で「Windows Terminal」と打ち込みます。
Preview版ではない方をインストールしましょう。
GitHubからもインストールできますが、自動で更新されないためMicrosoft Storeからのインストールをおすすめします。
使い方
早速Window Terminalを開いてみましょう。
デフォルトではPowerShellになっています。
新しいタブを開く
+を押すと新しいタブを開けます。
「Ctrl+Shift+t」でも開けます。
他のコマンドラインツールを開くには、+の右隣にあるvを押します。
WSLなどがインストールされている場合、ここから開けます。
新しいペインを開く
「Alt+Shift++」(AltとShiftと+を同時押し)で垂直方向に分割できます。
また、「Alt+Shift+-」で水平方向に分割できます。
はじめてのC++ ~クラス編~
このあたりから急に難しくなり、挫折する人も多いのでしっかり学びましょう。
オブジェクト指向についてまだ勉強していない人は、先にこちらを読んでみてください。
クラスの宣言
「myclass.h」というファイルを作り、以下のようなコードを書いてみてください。
class myclass { int age; public: void set_age(int n); int get_age(); };
まず、
class myclass{
}
でクラス名を指定します。
次に
int age;
はメンバ変数の宣言です。
アクセス指定子が書いていない場合はprivateです。
つまり、変数ageは他のクラスからは見えません。
アクセスの範囲を変えたい場合は
public:
のように書きます。
"public:"と書かれた場所以降のすべてのメンバは、他のクラスからアクセス可能になります。
void set_age(int n); int get_age();
は関数のプロトタイプ宣言と呼ばれます。
というように書きます。
ヘッダファイルの概要
C++ではクラスの定義やメンバ関数のプロトタイプ宣言、メンバ変数の宣言をヘッダファイルに書き、メンバ関数の定義はソースファイルに書くのが一般的です。
ヘッダファイルには「.h」拡張子を付けます。
また、対応するソースファイルと拡張子以前のファイル名を同じにします。
(ソースファイルがfile.cppならヘッダファイルはfile.hとする)
関数の定義
今のままでは関数の中身が定義されていません。
「myclass.cpp」ファイルに以下のコードを記述してください。
#include "myclass.h" void myclass::set_age(int n) { age = n; } int myclass::get_age() { return age; }
ヘッダファイルをインクルードするのを忘れないようにしましょう。
main関数
main関数は一番最初に実行される関数です。
「main.cpp」というファイルに以下のコードを記述してください。
#include <iostream> #include "myclass.h" int main() { myclass yamada; yamada.set_age(20); int age = yamada.get_age(); std::cout << age << "\n"; }
まず、
myclass yamada;
でmyclass型のyamadaオブジェクトを宣言します。
次に、メンバ関数を呼び出す際は、「オブジェクト名.関数名」で行います。
yamada.set_age(20); int age = yamada.get_age();
上のコードはそれぞれメンバ関数を呼び出しています。
コンパイルは以下のように行います。
g++ main.cpp myclass.cpp -o main
実行すると「20」と表示されるはずです。