- 1. jupyter notebookをリモートサーバ(CentOS)に構築
- 2. Windows 10 + Python3 + selenium + geckodriver で headless Firefox を試してみる
- 3. Python初心者がヒープソートを整理する
- 4. MacOS に free コマンドがないので、ほぼ等価な Python3 での実装
- 5. PythonからJuliaを呼ぶ
- 6. クイックソート2|リスト内包表記で簡単に
- 7. クイックソート|大きい順
- 8. マージソート|大きい順のソーティング
- 9. 選択ソート|備忘録
- 10. ゼロから始めるLeetCode Day51 「647. Palindromic Substrings」
- 11. Windows 10 + Python3 + selenium + msedgedriver で headless edge(Chromium) を試してみる
- 12. Python3で画像から文字列の抽出をしてみる
- 13. AWSラムダを全く理解していない人間が練習
- 14. Python3 Windowsのレジストリから不正なキー名候補を検索する
- 15. 蟻本初級編をpythonで解いてみた
- 16. ゼロから始めるLeetCode Day50「739. Daily Temperatures」
- 17. 【やってみた】AtCoder 版!蟻本 (初級編)の 2-1-2と2-1-3に類題にチャレンジ
- 18. Windows 10 + Python3 + selenium + chromedriver + headless chrome で Fessの検索画面を操作してみる
- 19. 自然言語処理の素人が提出レポートの類似度を評価してみた記録
- 20. pygribで気象庁のGRIB2ファイルを読む
jupyter notebookをリモートサーバ(CentOS)に構築
# jupyter notebookをリモートサーバ(CentOS)に構築
### やりたいこと
– 会社のあれやこれやをPythonでやりたい
– GitLabを操作(issue集計したり投稿したり)
– 利用する人はエンジニアの他、開発環境ない人も使用する(マネージャーとか管理系の人)
– 今回はAnacondaというライブライ集を使用する### OS Version
“`
[root@XXX ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
“`## Anacondaのインストール
### AnacodaのInstallerダウンロード
– バージョン指定する場合は[レポジトリ](https://repo.anaconda.com/archive/)から選択可。
“`
[root@XXX tmp]# cd /tmp
[root@XXX tmp]# curl https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux
Windows 10 + Python3 + selenium + geckodriver で headless Firefox を試してみる
#目的
Windows 10 + Python3 + selenium + geckodriver で headless Firefox を試してみる
##WebDriverのインストール
[WebDriver](https://developer.mozilla.org/ja/docs/Web/WebDriver)より geckodriver-v0.26.0-win64.zip をダウンロード後
適藤なフォルダに解凍する -> C:\Dev\Tools\geckodriver-win64
上記のフォルダを環境変数に登録する
##python用のパッケージをインストールする> pip3 install selenium#サンプルコード
“`python
from selenium import webdriver
from selenium.webdriver.firefox.options import Options# ブラウザーを起動
options = Options()
options.binary_location = ‘C:\\P
Python初心者がヒープソートを整理する
###これは備忘録です
基本情報を取って以降まったく触っていなかったのでヒープソートってどんなだっけ?って思い知識の整理をしながらメモをしようと思った。
#~~パクる~~ 引用させていただく
なんにしてもアルゴリズムを一から作ることもできなくはないが正直しんどいので[[参考:A]](https://webbibouroku.com/Blog/Article/py-heapsort)のサイトから引用し、自分で分解しながら整理しようと思う。#そもそもヒープソートって?
大体のルールを画像でメモしました
![heap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650016/bf8c4666-cc72-2a8e-0906-4744817fa102.png)
~~なんでこんなにややこしいことを考えたかは知らないけど~~配列の操作関係上、上下の操作がしやすいらしい。木構造はOracleDBとかでも使っているらしいし(うるおぼえ)、データの検索効率がいいらしい。三つの求め方に関しては覚えるべき点だと思うの
MacOS に free コマンドがないので、ほぼ等価な Python3 での実装
### MacOS に free コマンドがないので、ほぼ等価な Python3 での実装
以下のとおり、sysctl と vm_stat 組み合わせて、極力近づけてみました。厳密には shard
ライブラリのメモリローディングとかありそうだけど、常駐しているわけでもないので、、、“`
chmod a+x free.py
ln -s free.py free
“`しておけば、そのままコマンドとして振る舞います。もちろん引数はサポートしてません 🙂
単発プログラムでライブラリ等の依存もないので、Python 3 実行環境だけあれば、PYTHONPATH
とか気にせずに実行できます。“`
#!/usr/bin/python3“””
free.py – free コマンドの等価プログラムMacOS 用に free コマンドがないので、等価に動作する Python 3 プログラム
“””# インポート
import sys
from subprocess import run, PIPE, Co
PythonからJuliaを呼ぶ
# 事前準備
https://pyjulia.readthedocs.io/en/latest/installation.html
PyJuliaの公式にアクセス
公式にある3段階のinstall手順を行う。– [1] Juliaをインストール
– [2] 以下のコマンドでPyJuliaをインストール“`bash:
$ python3 -m pip install –user julia
“`– [3] 以下のコマンドを実行して完了。
“`bash:
$ python3
>>> import julia
>>> julia.install()
# 結果:自分の環境ではエラーが出た。
# 対処:環境変数に項目PYTHONを追加して、
# pythonの実行exeファイルのパスを指定。
# 再度実行。
“`
※尚、エラー対応後も、windows powershellでは認識されなかった。
GitBashでは正常に動作した。# Example
“`julia:./test/test.jl
Module M1
export substr
function
クイックソート2|リスト内包表記で簡単に
#Pythonの強み
##リスト内包表記でクイックソート
“`Python3:quickSortSimple.py
data = [26,13,32,65,76,22,43,87,14,59]def QuickSort(data):
if len(data) <= 1: # データが1個ならソートする必要ない return data # 基準となるデータ(ピボット)としてリストの先頭の値を使用 pivot = data[0] # ピボット以上のデータでリスト作成 left = [ii for ii in data[1:] if ii >= pivot]
# ピボット未満のデータでリスト作成
right = [ii for ii in data[1:] if ii < pivot] left = QuickSort(left) # 左側のソート right = QuickSort(right) # 右側のソート # ソート済みデータとピボットとを合わせて返す return
クイックソート|大きい順
#クイックソートを実装する
最初に「26」を基準の数(ピボット)とする。
「26」より大きい物をLeftへ
「26」より小さい物をRightへセットする。
左と右に分けられるので
それぞれ分けられたリストを同様の処理をしていく。
Left[32, 65, 76, 43, 87, 59]
Right[13, 22, 14]次にLeftがソーティングされますがピボットは先頭の「32」です。
これを繰り返すことで下の結果の通りになります。“`Python:QuickSort.py
data = [26,13,32,65,76,22,43,87,14,59]def QuickSort(data):
if len(data) <= 1: # データが1個以下ならそのまま値を戻す return data # 基準となるデータ(ピボット)としてリストの先頭の値を使用 pivot = data[0] left, right, same = [], [], 0 # 初期化(リスト、リスト、0) for ii in data:
マージソート|大きい順のソーティング
#マージソートをPythonで
###分割してまた結合(マージ)して
マージソートは、ソートする値が入ったリストを2つに分割することを繰り返し、バラバラにした後、今度は結合(マージ)するときに大きい順(小さい順もOK)に並べ替えていくソーティングアルゴリズムです。
・ソースコードは以下の通りです
“`python:mergeSort.py
data = [6,13,12,65,76,22,43,87,14,9]def merge_Sort(data):
if len(data) <= 1: return data mid = len(data) // 2 # ど真ん中のインデックス取得 # 再帰的に分類 left = merge_So
選択ソート|備忘録
# 大きい順にソーティングしてみた
よく使われる手法で、先頭から順に調べながら、
それまでの要素よりも大きい値が登場したらそのインデックスを記録する方法“`Python:select_sort1.py
data = [6,13,12,65,76,22,43,87,14,9]for ii in range(len(data)):
max = ii
for jj in range( ii + 1, len(data)):
if data[max] < data[jj]: max = jj # ここでSWAP data[ii], data[max] = data[max], data[ii] print(data) # 結果 # [87, 76, 65, 43, 22, 14, 13, 12, 9, 6] ``` この手法は容易に導入しやすい分、for二重ループとなるので、10件、20件程度なら大した差は出ないでしょうが、10万件、20万件といったソーティングでは負荷がかかりやすい。
ゼロから始めるLeetCode Day51 「647. Palindromic Substrings」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day50「739. Daily Temperatures」](https://qiita.com/KueharX/items/eccc225ccab38969e23d)今はTop 100 Liked QuestionsのMediumを優先的
Windows 10 + Python3 + selenium + msedgedriver で headless edge(Chromium) を試してみる
#目的
Windows 10 + Python3 + selenium + msedgedriver で headless edge(Chromium) を試してみる##WebDriverのインストール
ヘルプとフィードバック -> Microsoft Edge よりEdgeのバージョンをチェックする
今日時点では バージョン 83.0.478.45 (公式ビルド) (64 ビット)
[WebDriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)よりバージョンに合わせて edgedriver_win64.zip をダウンロード後
適当なフォルダに解凍する -> C:\Dev\Tools\edgedriver_win64
上記のフォルダを環境変数に登録後動作を確認する\> msedgedriver
Starting MSEdgeDriver 83.0.478.45 (fa71536bbfc4d8c41db9e9b61b8b5f71c6c64f0c) on port 95
Python3で画像から文字列の抽出をしてみる
#最初に。OCRって何?
OCRとは、画像から文字列を抽出するための技術です。
Google翻訳でスマホで読み取った画面を翻訳してくれる技術ありますね。あれがOCRです。あれは、読み取った画像に対してテキストを抽出して、自然言語処理を行っています。#で、OCR使って何できんの?それって日常に便利?
画像から文字を抜くのはわかったけど、他に何に使えるの?って話になります。例えばもらったチラシや会社、学校でのプリント、これらを読み取ってWordファイルなどにすることができます。また、黒板、ホワイトボードでの内容をわざわざメモすることなくテキストに変換できます。
#事前準備
・Python3のインストール
・pyocrのインストール
・Pillowのインストール
・tesseractOCRのインストールPython3のインストールは長いので割愛
Macユーザなので、そっち側の説明のみ行います。Windowsユーザの方は下記リンクの執筆者様から参照ください。
https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
AWSラムダを全く理解していない人間が練習
###あくまで備忘録です
#やりたいことだけ明確に
###まず、目標
※この部分を書いている時点で一切の作業をしていません
AWSのラムダを使うとしてお金がかかるので、ローカル(Windows環境)にダウンロードできるものだけでラムダを作りたい。
htmlで書いた(ここの言語は未定)Webサイトにアクセスし、Pythonの書かれたラムダに投げて帰ってきたデータでhtmlを更新する、なんて形を取れればいいと思っている。
~~静的なWebサイトを作るのであればS3でもいいとか言ってはいけない~~#何をダウンロードしよう
ググったところ[[参考:A]](https://dev.classmethod.jp/articles/invoke-aws-lambda-python-locally/)のサイトを見つけたので内容を確認。**python-lambda-local**というものを使えばいいらしいので早速インストールcmdからpipでダウンロード~~pipがナニか変わらなかった無知な自分は[こちら](https://techacademy.jp/magazine/21161)~~
Python3 Windowsのレジストリから不正なキー名候補を検索する
Windowsのレジストリから不正なキー名候補を検索するコードです。`"\uFEFF"`のeast asian widthが`"N"`(`unicodedata.east_asian_width("\uFEFF") == "N"`)だったので、このような文字を含むキー名をすべて取り出してくるコードです。出力後にレジストリを目視で確認して整理することを目的としています。
Microsoft Payとやらのよく分からないキーがヒットしたのは見なかったことにしています。
```py
import unicodedata
import winreg
from pprint import ppdef str_has_east_asian_width_N(s):
return any((unicodedata.east_asian_width(c) == "N" for c in s))def get_winreg_invalid_candidates(key, path, candidates=[]):
for i in range(0xffffffff):
蟻本初級編をpythonで解いてみた
#蟻本をpythonで解いてみた
##2.1 全探索
###再帰関数
```python:
#階乗
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)#フィボナッチ
def fib(n):
if n <= 1: return n else: return fib(n-1) + fib(n-2) #配列をメモ化することで高速化 def fib_memo(n): memo = [0] * (n+1) def fib_cal(x): if x <= 1: memo[x] = x return x elif memo[x] != 0: return memo[x] else: memo[x] = fib_cal(x-2) + fib_cal(
ゼロから始めるLeetCode Day50「739. Daily Temperatures」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day49 「1323. Maximum 69 Number」](https://qiita.com/KueharX/items/2d18458c80aa39a0c386)今はTop 100 Liked QuestionsのMediumを優先
【やってみた】AtCoder 版!蟻本 (初級編)の 2-1-2と2-1-3に類題にチャレンジ
## 初めに
* 筆者はAtCoderを取り組み始めたアラフォー・Unコーダである(非ソフトウェア職)
* [AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に蟻本記載例題の類似問題が記載されている
* 上記記事著者である、けんちょん (Otsuki)@drken氏に感謝## 目的
* [AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に記載の探索系の問題の類題の回答と解説を掲載する
* 筆者が上記問題を解くことで、上記探索系のアルゴリズムの理解を深める
* 筆者は[過去に同問に挑み道半ばで倒れてしまった]((https://qiita.com/tagtagtag/items/56cc6ff06b514294a1e4))ため、リベンジする
* 諸兄(姉)からの指摘を受けることで見落としていた課題を補完する
## まとめ
* 類題を解き解説をつけることができた。
* 解説を書きな
Windows 10 + Python3 + selenium + chromedriver + headless chrome で Fessの検索画面を操作してみる
#目的
ドロップダウンの操作もかねてFessの検索画面を操作してみる
Freeは[ローカルで動かしているもの](https://qiita.com/tabizou/items/9747d270246c0485b905)を使用
[Windows 10 Pro x64 + Python3 で selenium + chromedriver でFessの検索画面を操作してみる](https://qiita.com/tabizou/items/c74f5bdefdde6a510fa4)
を headless chrome を使用するように書き換えてみる
##サンプルコード
対象とするhtmlの抜粋<h3 id="searchOptionsLabel">
検索オプション
</h3
ドロップダウン
<fieldset class="form-group">
<label for="contentNum">表示件数</label>
<select name="num" id="numSearchOption" class
自然言語処理の素人が提出レポートの類似度を評価してみた記録
### 0. 事前に行ったこと
「AIの医療応用研究事例について一つ調べ、メリットと課題をまとめよ」というレポート課題をgoogle classroom上で課し、gdocで提出してもらったレポートを[前回の記事](https://qiita.com/shigeyuki-m/items/5538824c6c0cd95e51d7)に記載した方法で抽出した。
続いて、類似度評価のために、4種類のよく似たレポートを自作した。表現の改変(改悪)は、エキサイト日英翻訳→google英日再翻訳をした文章をベースに、提出されたレポートを参考にして読みづらい日本語表現アレンジを加えた。
**ダミーレポート1 原本 学籍番号:99999**
*・人工知能の医療応用事例
ゲノム情報と電子カルテ情報から腹部大動脈瘤を予測する研究結果が2018年にスタンフォード大学の研究グループから発表されている。
腹部大動脈瘤は頻度が最も高い大動脈瘤であり、動脈硬化などの原因によって通常直径約2cmの腹部大動脈が3cm以上に膨張した状態を指す。破裂するまで自覚症
pygribで気象庁のGRIB2ファイルを読む
# はじめに
ここでは[気象庁のサンプルデータ一覧](https://www.data.jma.go.jp/developer/gpv_sample.html)のうち、以下のファイルを対象とする。
- 全球数値予報モデルGPV (GSM)
- メソ数値予報モデルGPV (MSM)
- 局所数値予報モデルGPV (LFM)いずれもGRIB2というバイナリ形式が採用されている。
### 検証環境
Anacondaの仮想環境を使用した。
- Windows 10 Home
- conda 4.8.2
- Python 3.7.7# ライブラリインストール
記事タイトルの通り、pygribを利用する。pipやcondaからインストール可能。
```
conda install -c conda-forge pygrib
```# 実装例
気象庁のサンプルファイル(MSM)から各時刻(JST)における神宮球場(35.6745, 139.7169)(に一番近いメッシュ地点)の気温[℃]を取得する。
※有効数字があやしいですが気にしないでください。```pytho