nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

Python + Selenium + ChromeでGoogleの検索を自動化する [非headlessモード]

はじめに 本記事は、Python + Selenium + ChromeでGoogleの検索を自動化する手法について記載したものです。 ChromeのWeb操作は、ChromeDriverを用います。 ChromeDriverを導入する方法として、以下の2つの方法がありますが、本記事は前者の方法を使用しま…

Python データ構造学習

リストを使って記載してみる def names(name_and_grouplist, group_name): _names = [] for name_and_group in name_and_group_list: if name_and_group[0] == group_name: name = name_and_group[1] if name not in _names: _names.append(name) return _na…

C++のコードレビューまとめ

C++のコードレビューのまとめを行います 派生される可能性があるクラスの場合、デストラクタにvirtualをつけよう ポリモーフィズムを利用すべく作った基底クラスのデストラクタはvirtualが必要であるためです。 基底クラスのデストラクタにvirtualを付けない…

Pythonを使って株価情報を取得しましょう

はじめに Pythonを使って自動で株価情報を取得しましょう 環境 Windows version : 1903 (Windows 10 Home) conda version : 4.7.12 conda-build version : 3.18.8 python version : 3.7.3.final.0 selenium : 3.141.0 手順 (1) 必要なモジュールをインストー…

Anaconda3で作成した仮想環境上で、Seleniumを使ってブラウザを操作する [Windows]

はじめに PythonとSeleniumを使ってブラウザを操作する作業を行いたいと思います。 Pythonのバージョンやインストールするモジュールのバージョンによって、プログラム動作が変わる可能性があります。 そのため、仮想環境上でPythonやSeleniumのモジュールを…

template関数でsplit関数を実装する (空白文字列区切り)

C++

template関数でsplit関数を実装する (空白文字列区切り) template関数を使用することで、複数の型を同じ関数で扱うことができるようになります。 使い方 関数呼び出し時には、通常の関数呼び出しとは異なり、型を指定する必要があります。 const std::vector<std::string></std::string>…

Modern_C++_leet文字列変換

C++

#include <string> #include <iostream> #include <map> #include <algorithm> // transform #include <vector> #include <numeric> //iota, accumulate // leetマップ変数 (グローバル変数) std::map<char, char> leet { {'A', '4'}, {'E', '3'}, {'G', '6'}, {'I', '1'}, {'O', '0'}, {'S', '5'}, {'Z', '2'} }; /** * @fn *</char,></numeric></vector></algorithm></map></iostream></string>…

UML学習まとめ

UML

UML学習全般を記載する記事です 関連端名(ロール名) 関連の両端にそれぞれのクラスのロール名を記述することができます。 ロール名は相手方クラスとの関連における自分のクラスの役割(role)を示します。 以下の記事を参照ください。 以下の記事を参照くだ…

Observerパターン [C#] [pull型]

Observerパターンとは あるオブジェクトの状態に依存するオブジェクトがあるとき、状態の変化をそれらのオブジェクトに依存せずに自動的に通知するパターン push型とpull型 Observerパターンでは,push型とpull型があります。違いは以下のとおり。 push型 : …

Observerパターン [C#] [push型]

Observerパターンとは あるオブジェクトの状態に依存するオブジェクトがあるとき、状態の変化をそれらのオブジェクトに依存せずに自動的に通知するパターン push型とpull型 Observerパターンでは,push型とpull型があります。違いは以下のとおり。 push型 : …

.net Core 3.0学習記事 [WPF]

はじめに .net Core 3.0学習用の情報を集める記事です。 WPF の TreeView で任意の項目が表示されるようにスクロールする https://blog.okazuki.jp/entry/2019/07/25/111424

デバッグ技術

はじめに ソフトウェア評価時では、デバッグは必要不可欠です。 以下のような手順で行うと思います。 手順 バグを記録する (バグレポートを書く) バグを再現する バグを分離する (バグ発生原因を特定するために必要) バグを修正する バグを記録する バグ内容…

Nullチェックを削除する方法 (NullObjectパターンとNull合体演算子)

はじめに Nullチェックを削除する方法はいくつかあります。最適な方法を使用してください。 NullObjectパターン オブジェクト指向プログラミングが使えれば、どの言語でも実現可能 Null合体演算子 言語仕様にNull合体演算子があれば可能 その他の方法 Javaの…

switch文を爆散

はじめに コードのあちこちに同じようなswitch文処理が書かれている場合があります。 機能追加・修正するたびに変更が必要なswitch文処理を探してコード修正しなくてはなりません。 このようなswitch文処理を見つけたら、ポリモーフィズムが使うことで、リフ…

巨大クラスをクラス抽出で爆散

はじめに 巨大クラスを爆散したいときがあります。 その場合は、クラス抽出が便利です。 書籍 新装版 リファクタリング 既存のコードを安全に改善する Martin Fowler [著] 手順 (1) クラスの責務を切り出す方法を決める (2) 切り出された責務を記述する新た…

リファクタリング入門

はじめに 以下の書籍を読んでリファクタリングを学習します。 書籍 新装版 リファクタリング 既存のコードを安全に改善する Martin Fowler [著] リファクタリングの定義 外部から見たときのふるまいを保ちつつ、理解や修正が簡単になるようにソフトウェアの…

JavaScript学習用リンク記事

はじめに JavaScript学習用の記事です。 2019年5月時点 JavaScript初心者が参考にしていいモダンJavaScript解説サイト2つ - Qiita リンク js-primer これからJavaScriptに入門したい人が、ECMAScript 2015以降をベースにして一からJavaScriptを学べる本です。…

UnicodeからUTF-8に変換する方法 [C++] [MFC]

はじめに UnicodeからUTF-8に変換する方法を調べたので、記録します。 Convert Unicode (utf-16) CStringW to utf-8 CStringA CStringA ConvertUnicodeToUTF8(const CStringW& uni) { if (uni.IsEmpty()) return ""; // nothing to do CStringA utf8; int cc…

仮説検証学習

はじめに 仮説検証を学習していきたいと思います。 (1) どうなりたいのか(狙う結果) (2) 何によって確かめるのか(指標)? (3) そのために何をするのか? (4) なぜ狙う効果が得られるのか? ポイント 仮説検証の内容は、具体的な数値にしましょう 各項目で、…

TensorFlow Object Detection APIをWindowsで使ってみた

はじめに 以下のサイトを見てTensorFlow Object Detection APIをWindowsで使ってみようと思います。 TensorFlow Object Detection APIは、TensorFlowを利用して、画像に写っている物体を検出するためのフレームワークです。 インストール手順・実行方法は、S…

リカレントニューラルネットワーク学習 [Python][Keras]

はじめに リカレントニューラルネットワーク学習を学習します。 リンク https://www.infiniteloop.co.jp/blog/2018/02/learning-keras-07/

matplotlib基礎

はじめに matplotlibでグラフを書きます。 図を描いてみる import matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid') import numpy as np %matplotlib inline # numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype…

C++で関数型プログラミング (filter関数の実装)

C++

はじめに C++で、関数型プログラミングでいうfilter関数(抽出の処理を行う関数のこと)を使う場合は、以下のテンプレート関数を使うといいです。 copy_if remove_copy_if コード例 以下のコード例では、ラムダ式と挿入イテレータが使用されています。 挿入イ…

Keras学習入門

はじめに 公式ドキュメントを読みましょう。 Home - Keras Documentation サンプルもあります。 https://github.com/keras-team/keras/tree/master/examples 参考にした記事 無から始めるKeras - Qiita 作りたいもの 適当な5次元のデータ配列を入力すると、…

Pythonで画像データをFlickerで取得する

はじめに Pythonで画像データを取得してみたいと思います。 flickr の画像取得は、flickr API を使用します。 flickrのAPIは以下に記載されています https://www.flickr.com/services/api/ APIを使用して画像情報を取得してみる flickrのAPIを使用して画像の…

ドメイン駆動設計学習

はじめに ドメイン駆動設計学習内容を記録します。 リンク 役割駆動設計で巨大クラスを爆殺する - Qiita

mnist手書き数字画像データ学習モデル活用でjpeg画像を予測します [Python]

はじめに 手書き文字の認識をNeuralnetworkを用いて行います。 Kerasから手書き文字のデータをダウンロードして、そのデータを用いて、NeuralnetworkのTrainingを行い、その後に下記のnumber_fileをTest dataとして数字の認識を実施します。 コード例 from k…

GraphViz'sで可視化する (Windows)

はじめに Windowsで、GraphViz'sで可視化する場合は大変です。 環境 Python 3.6 手順 (1) Anaconda Promptで、以下のようにgraphvizとpydotをインストール conda install graphviz pip install pydotplus (2) graphvizを公式ホームページからインストールし…

TensorFlow GPU導入 [Windows 10] [tensorflow-gpu : version 1.8.0] [GPU : GEFORCE RTX 2060]

本記事の前に Windows環境のTensorFlow GPU導入方法は、 以下の国立研究開発法人 産業技術総合研究所 安全科学研究部門様の記事がとてもわかりやすいです。 WindowsでKerasを用いたDeep Learning開発環境を整備する | 産総研:安全科学研究部門– 持続可能な…

古いマザーボード(Z77X-UD3H)に新しいグラフィックボード(GEFORCE RTX-2060 GAMING Z )を搭載してみた

はじめに 高速なGPUが欲しかったので、古いマザーボード(Z77X-UD3H)に新しいグラフィックボード(GEFORCE RTX-2060 GAMING Z )を搭載してみました。 新しいグラフィックボードを起動するのに、一晩かかりましたので、展開します・・・。 手順 Z77などの70番台…