Giter VIP home page Giter VIP logo

tips's Introduction

■ 開発環境の構築 (windows)

環境変数の設定方法

コマンドプロンプト用

  • PATH 確認: echo %PATH:;=&echo.%
  • PYTHONPATH に c:\hoge を追加: set PYTHONPATH=%PYTHONPATH%;C:\hoge
  • PYTHONPATH を PATH に追加: set PATH = %PATH%;%PYTHONPATH

python

CUDA

WSL2 + VcXsrv

WSL

WSL から Windows のバイナリを実行する方法

  • WSL から Windows 側の GUI アプリを実行

  • WSL で Windows のバイナリを実行する方法

    1. vim ~/.bashrc
    2. python on Windows 側の alias コメント反映 (下記の設定コードをコピペ)
    3. source ~/.bashrc
    # alias pip='pip3'
    ##### python on Windows
    alias pip='/mnt/c/Python/Python37/Scripts/pip.exe'
    alias pipenv='/mnt/c/Python/Python37/Scripts/pipenv.exe'
    alias python='/mnt/c/Python/Python37/python.exe'
    
    # WSLの環境変数をexportで設定しても python.exe はWindowsの環境変数を参照するため、
    # この方法の使い道はあまりない

Git

VSCode

VSCode (Remote WSL)

Terminal

Windows Terminal (ws)

  • インストール方法

    • Microsoft Store から、Windows Terminal をインストール
  • カレントディレクトリで起動する方法

    • アドレスバーに wt -d . を入力
  • ws に Git Bash を追加する方法

    • ココ を参照
    • C:\\Program Files\\Git\\bin\\bash.exe --login -i で色表示が可能
  • 画面分割 分割方向 | ショートカット ---------|----------|--------- 右側に新しいペイン | [Alt]+[Shift]+[+]キー 下側に新しいペイン | [Alt]+[Shift]+[-]キー

  • WS の設定 (setting.json)

    • 以下、デフォルトから追加した情報
      // Global
      "initialCols": 100,
      "initialRows": 25,
    
      "profiles": {
        "defaults": {
          "fontSize": 9
        },
        "list": [
          {
            "name": "Windows PowerShell",
            "colorScheme": "Campbell Powershell"
          },
          {
            "name": "コマンド プロンプト",
            "colorScheme": "Campbell"
          },
          {
            "name": "Ubuntu-18.04",
            "colorScheme": "Ubuntu"
          },
          {
            "guid": "{db9c05bb-a391-4798-8bfc-3e14fbd74f4d}",
            "name": "Git Bash",
            "acrylicOpacity": 0.5,
            "closeOnExit": true,
            "colorScheme": "Campbell",
            "commandline": "C:\\Program Files\\Git\\bin\\bash.exe --login -i",
            "cursorColor": "#FFFFFF",
            "cursorShape": "bar",
            "fontFace": "consolas",
            "historySize": 9001,
            "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
            "padding": "0, 0, 0, 0",
            "snapOnInput": true,
            "startingDirectory": "%USERPROFILE%",
            "useAcrylic": true
          },
        ]
      },
    
      "schemes": [
        {
          // Ubuntu-like
          "name": "Ubuntu",
          "background": "#322931",
          "foreground": "#B9B5B8",
          "black": "#322931",
          "blue": "#1290BF",
          "brightBlack": "#797379",
          "brightBlue": "#1290BF",
          "brightCyan": "#149B93",
          "brightGreen": "#8FC13E",
          "brightPurple": "#C85E7C",
          "brightRed": "#DD464C",
          "brightWhite": "#FFFFFF",
          "brightYellow": "#FDCC59",
          "cyan": "#149B93",
          "green": "#8FC13E",
          "purple": "#C85E7C",
          "red": "#DD464C",
          "white": "#B9B5B8",
          "yellow": "#FDCC59"
        }
      ]
    }

サクラエディタ

  • 初期設定
  • 長いクエリ文を "&" で改行する方法
    • 置換ウインドウを開く(Ctrl + r)
    • 置換後の文字を「\r\n」にする。正規表現にチェックを付ける。

共有フォルダのアクセス

右クリックのカスタマイズ

jq

タッチキーボード

  • iPad でリモデス App から windows を操作する時に便利
  • [表示方法]:タスクバー右クリック -> タッチキーボードボタンを表示
  • [基本設定]:以下の機能をオン
    • 「タブレットモードでなく、キーボードが接続されていない場合に、タッチキーボードを表示する」
    • 多言語ヒント -> ヒントを表示する

Hyper-V / WSL2

VirtualBox

デスクトップ画面録画

thunderbird から Outlook の移行方法

■ Ubuntu インストール

Dual Boot

  1. 準備
    • Bios 設定変更
      • 高速スタートアップ:無効化
      • セキュアブート:無効化
    • Rufus で LiveUSB 作成
  2. 構築手順
    • Windows 側で事前にパーティション操作はしないこと!
  3. 最初にやること

日本語への対応

  • Japanese Team のパッケージレポジトリを追加

  • 以下のコマンドを実行し、GPG 鍵とレポジトリを追加

    Ubuntu 20.04 LTS の場合:

    wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
    wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
    sudo wget https://www.ubuntulinux.jp/sources.list.d/focal.list -O /etc/apt/sources.list.d/ubuntu-ja.list
    sudo apt update

■ 開発環境の構築 (Ubuntu)

python3.7

CUDA install

  • How to install CUDA on Ubuntu 20.04

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
    sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
    wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
    sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
    sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
    sudo apt-get update
    sudo apt-get -y install cuda

windowsOS パーティションの自動マウント

  • 参考 HP

    sudo fdisk -l   # Device確認
    sudo blkid /dev/nvme0n1p3 #UUID, Type確認
    sudo vi /etc/fstab # 起動時に読まれるfstabを編集
        UUID=*****   /media/[username]/Windows   ntfs    default 0       0
    
    sudo mkdir /media/[username]/Windows # マウントポイント作成
    sudo mount /media/[username]/Windows # マウント
    df -Th |grep /media/[username]/Windows # できたか確認
    # マウントできると `/media/[username]/gachan/Windows` で見れる

cifs による NAS の自動マウント

  1. NAS の user,pwd ファイル保存

    sudo apt install cifs-utils
    sudo vi /home/username/.smbcredentials  # NASのuser,pwdファイル保存
    username=USER
    password=PASSWORD
    sudo chmod 400 /home/username/.smbcredentials # 所有者のみreadonly
  2. 起動時に読まれる fstab を編集

    • sudo vi /etc/fstab で開き、以下の一行を追加
    //192.168.**.**/data/    /media/[username]/Ls3_data/ cifs    credentials=/home/[username]/.smbcredentials,vers=1.0       0       0
    
    # vers=1.0 : 古いbaffalo機器の場合
    # vers=3.0 : 共有フォルダの共有元がWindows 10 の場合
  3. 正しくマウントできるかチェック

    • sudo mount -a

cifs による NAS の一時マウント

  • baffalo linkstation の場合
    sudo mount -t cifs -o username=admin,vers=1.0 //192.168.11.9/data /mnt/ls3_data

PATH 設定方法

  1. 環境変数にパスを追加
    echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
    export PATH=/usr/local/bin:$PATH を User/ユーザー名/.bash_profile に書き込んでいます。
  2. bash の設定を再読み込み
    source ~/.bash_profile

起動中の Gnome 端末内のみで PATH 設定

  • 起動中の Gnome 端末内で export コマンドで PATH 設定すればいい
  • 起動中の Gnome 端末内で 反映された PATH 一覧は、export -p で確認できる

Gnome 端末を起動したまま、GNOME Shell を再起動

  • (Alt + F2) → r → Enter

ショートカット

ショートカット 機能
Super + D 全てのウィンドウを最小化
Ctrl + L フォルダウィンドウをパス表示に変更
Ctrl + Shift + T ブラウザで最近閉じたタブの復元
コマンドパレット上で ReloadWindow VSCode のリロード
Ctrl + Shift + I (Linux) コード整形
Shift + Alt + F (Windows) コード整形

マウスの中クリックによる貼り付け無効化

  • Tweaks ⇒ キーボードとマウス ⇒ 中クリックによる貼り付け OFF

時刻設定

  • sudo timedatectl set-local-rtc true
  • sudo apt install -y manpages-ja manpages-ja-dev
  • man date 日本語になっていたら OK

ダウンロードした.deb ファイル

  • /var/cache/apt/archives/ にキャッシュされています。このキャッシュをクリアするには、sudo apt cleanを実行します。

Gnome 端末

  • テキストのコピペ
    • 参考 HP
      • 単語をダブルクリックすると、その単語全体が選択されます。
      • 選択したい行をトリプルクリックすると、その行全体が選択されます。
  • ターミナルのカレントをファイルマネージャーで開く
    nautilus -w 'Ricty Diminished'"

■ Linux でインストールするパッケージ

省電力ツール

  • sudo apt install tlp
  • sudo tlp start

Synaptic

  • Debian パッケージ管理システムである APT の GUI ツール
  • sudo apt install synaptic
  • synapticで起動

未使用パッケージの削除

  • sudo apt autoclean
  • sudo apt clean
  • sudo apt autoremove

コーデック

  • sudo apt-get -y install ubuntu-restricted-extras

git

  • sudo apt-get install git-all

Gimp

  • sudo apt install gimp

atom

spotify

chrome

  • インストール方法(apt)

    sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
    sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
    sudo apt update
    sudo apt install google-chrome-stable

microsoft リポジトリの登録

  • 以下、公式 HP に載っている方法を記載している

    sudo apt install apt-transport-https # aptでhttpsアクセスするために必要
    # 以下をそのままコピペ
    sudo curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > ~/Desktop/microsoft.gpg
    sudo cp ~/Desktop/microsoft.gpg /etc/apt/trusted.gpg.d/
    cd /
    sudo curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list -o microsoft-prod.list
    cat sources.list.d/microsoft-prod.list
    # 正しく登録されているか確認
    sudo apt update
  • sudo apt update で 以下のような Warning が出た場合の対処法 Warning: ターゲット Packages (main/binary-amd64/Packages) は /etc/apt/sources.list:57 と /etc/apt/sources.list.d/microsoft-prod.list:1 で複数回設定されています

    1. /etc/apt/source.list.d/microsoft-prod.list を残す
    2. /etc/apt/source.list 側の microsoft**** の 2 行を vi で削除
    3. sudo apt update で正しいか確認

apt リポジトリ構成ファイルの場所

  • /etc/apt/sources.list.d

code (vscode)

  • 先に、上記の microsoft リポジトリの apt に登録しておくこと

  • 公式 HP に載っている方法で apt でインストールするのが良い

  • 何をやっているか知りたい場合は、こちらの投稿 を見るとよい

    # マイクロソフトのリポジトリを登録する
    sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
    # インストール
    sudo apt install code
    # codeのバージョン表示
    apt list code

snap 版パッケージ

  • snap 版は日本語入力ができないので、atom や vscode は apt でインストールしたほうが良い
  • snap 版をインストールしたパッケージ一覧 snap list

apt-get update でエラーが出た場合の対処法

git 操作方法

Gnome 端末上の操作

VSCode 上の Git 操作

ubuntu で iphone を usb カメラにする

  • 準備

    • iphone 側 : アプリをインストール

    • ubuntu 側 : このページの install 手順に従ってインストール

      sudo apt install linux-headers-`uname -r`
      # `uname -r` : 現在のカーネルバージョンを返すコマンドが実行されます。
  • 接続

    • 日本語で簡単に接続手順が書いてある

    • iphone 側 : アプリを起動

    • ubuntu 側 : Terminal で droidcam と入力 → Phone IP, Port を入力

      Found driver: /dev/video4 (fd:12)
      connecting to 192.168.11.11:4747
      

      このような表示が出る。
      この場合、camno=4 なので、cv2.VideoCapture(4) で画像取得できる

利用できる Web カメラの情報を取得する

  • 参考 HP

    • sudo apt install v4l-utils
    • v4l2-ctl --list-devices

update-alternatives

  • 必要になったときのために、設定方法を残しておく

    sudo apt install update-alternatives
    which update-alternatives
    echo export PATH='/usr/bin/update-alternatives:$PATH' >> ~/.bash_profile
    echo $PATH
    source ~/.bash_profile

■ コマンド

apt

  • apt-get でパッケージをアンインストール
sudo apt-get install [パッケージ名]
sudo apt-get remove [パッケージ名]  # 設定ファイルを残す場合
sudo apt-get --purge remove [パッケージ名] # 設定ファイル&依存関係にあるパッケージも完全に削除する場合

pip

wget

Windows は WSL で使える。

イントラ内の使用 IP 一覧表示

  • iwconfig
  • sudo arp-scan -l --interface wlp62s0

pyenv

  • pipenv より venv を使う方がいいかも
  • Python で Pipenv を使う
  • pipenv で Locking が終わらないときの対処法
    • Pipfile.lock を生成しないで仮想環境にパッケージインストール
      pipenv install --skip-lock

venv

  • python のバージョンを複数インストールした場合

    • python と入力した時のバージョンは、環境変数で上位に書いた バージョンになります。
    • 環境変数にパスを通す python バージョンは、よく使う方を設定するか、パスを設定しないほうがいいでしょう。
  • venv の使用法

    • c/users/[usrname]/.virtualenvs に py35env などの仮想環境を作っておくと、vscode で実行環境のリストに出てくるため便利です。
    # 1. 仮想環境の作成場所
    cd c/users/[usrname]/.virtualenvs
    
    # 2. バージョン指定した仮想環境の作成
    py -3.5 -m venv py35env
    py -3.7 -m venv py37env
    
    # 3.1. 仮想環境の使用
    source /c/Python/py35env/Scripts/activate
    
    # 3. 2. vscodeでデバッグする場合:
    # vscodeのステータスバーから環境選択 -> F5 デバッグ開始
    
    # 4. 仮想環境の終了
    deactivate

■ コーディング

web アプリ開発ライブラリ

  • jQuery 簡単

  • React 本格的

  • Web 制作者のためのおすすめ Chrome 拡張 15 で検索

GUI ツール

  • PyQt (パイキュート) : Qt という C++の GUI ツールキットを Python で使えるようにしたもの

アノテーションツール

yield

  • return 文でそのまま値を返す関数を作ったとします。一度に大きなリストが返ってくるような関数だと、たくさんのメモリを一度に消費してしまうことになります。
  • そのようなときは、yield を使う事でその莫大な量の戻り値を小分けにして返すことが出来ます。これによって関数の実行をその都度中断し、少量ずつデータを返す事でメモリの消費量を抑えることが出来るようになります。

CSS/JavaScript

  • vscode 拡張機能(Live Server / Live Sass Complier)
  • scss ファイルを live sass complier でコンパイルすると css が自動的に作られる
  • scss は css よりもわかりやすく記述できるが、sccs の記述方法を追加で覚えないといけない

web スクレイピング

BeatuifulSoup

  • 使用例

    r = requests.get(url)
    soup= BeautifulSoup(r.text,"html.parser")
    soup.select('.tile')[0].string

FlikerAPI

pytorch

python 系

python プロジェクトのおすすめフォルダ構成

改行コードの一括置換

コード上での path の書き方

vscode デバッグ構成ファイル(launch.json) の編集

  • 実行 ⇒ 構成を開く ⇒ launch.json が開く
  • 定義済み変数を使うと、楽にパスを設定できる
    このページ内 の引用元 vscode 公式ページに詳しく書かれている
  • Ctrl + Space で設定可能な属性候補を表示
"configurations": [
  {
    //アクティブなファイルを実行する
    "program": "${file}",
    // 実行時のカレントディレクトリを変更する
    "cwd": "${workspaceFolder}/hogedir/hogedir",
    // オプション引数を設定する
    "args": [ "--modelpath", "******.pth", "--config", "*****.json" ]
  }
]

lint(リント)

  • ソースコードの記述に対し、警告を行う静的解析処理のこと
  • 言語毎にツールがある
  • python は、pylint > pep8(ぺぺエイト) > flake8 (左ほど警告ルールが厳しい)
  • vscode は、python 拡張機能をインストールしたら pylint が入る
  • pylint のメッセージを抑制する

Markdown

  • 書き方
  • Qiita のマークダウン記法は、標準の Markdown Preview で確認
  • Github のマークダウン記法は、Markdown Preview Enhanced で確認
  • vscode の拡張機能 Markdownlint を使おう。書き方を自然と覚えます。
  • 無視させたい警告は、 setting.json に下記例のように編集する
"markdownlint.config": {
        "single-title" : false
    },

コーディング環境

vscode 基本設定

  • setting.json を編集

    {
      ////////////// Font.. //////////////
      "window.zoomLevel": 0,
      "files.eol": "\n", // デフォルト改行コード LF
      "editor.renderLineHighlight": "all",
      // "workbench.iconTheme": "vscode-icons",
      "workbench.editor.tabSizing": "shrink",
      "editor.fontSize": 12.5,
      "editor.fontFamily": "Consolas, Meiryo, 'Courier New', monospace",
      // "editor.fontFamily": "Source Han Code ",
      // "editor.fontFamily": "MeiryoKe_Gothic",
      // "editor.fontFamily": "Ricty Diminished",
      // "editor.fontFamily": "Source Han Code JP",
      // "editor.fontWeight": "300",
      // "editor.fontFamily": "Iosevka Medium, Migu 1M",
    
      ////////////// Indent, Spaces, Colors //////////////
      "trailing-spaces.showStatusBarMessage": false,
      "trailing-spaces.includeEmptyLines": false,
      "trailing-spaces.logLevel": "log",
      "indentRainbow.errorColor": "rgba(128,32,32,0.4)",
      "editor.renderIndentGuides": false,
    
      ////////////// HTML //////////////
      "[html]": {
        "editor.defaultFormatter": "HookyQR.beautify",
        "editor.tabSize": 2,
        "editor.suggest.insertMode": "replace"
      },
      "html.format.enable": false,
      "html.format.wrapAttributes": "auto",
      "html.format.wrapLineLength": 140,
      "html.format.contentUnformatted": "pre,code,textarea",
      "html.format.endWithNewline": false,
      "html.format.extraLiners": "head, body, /html",
      "html.format.indentHandlebars": false,
      "html.format.indentInnerHtml": false,
      "html.format.maxPreserveNewLines": null,
      "html.format.preserveNewLines": true,
      "html.format.unformatted": "wbr",
      "liveServer.settings.CustomBrowser": "chrome",
      "liveServer.settings.donotShowInfoMsg": true,
      "liveServer.settings.donotVerifyTags": true,
      ////////////// JS //////////////
      "[javascript]": {
        "editor.defaultFormatter": "HookyQR.beautify",
        "editor.suggest.insertMode": "replace"
      },
      ////////////// Markdown //////////////
      "markdownlint.config": {
        "single-title": true,
        //"ol-prefix" : false
        "MD001": false,
        "MD025": false
      },
      "[markdown]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      },
      "markdownShortcuts.icons.image": true,
      "markdownShortcuts.icons.link": true,
      "instantmarkdown.autoOpenBrowser": false,
      "markdown.preview.fontSize": 10,
      "markdown.preview.fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'Ubuntu', 'Droid Sans', sans-serif, 'Ricty Diminished'",
      "files.autoSave": "off",
    
      ////////////// Terminal //////////////
      // Terminal (on Windows)
      "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
      "terminal.integrated.automationShell.linux": "",
      "terminal.integrated.automationShell.windows": "",
      "terminal.integrated.fontSize": 13,
      "terminal.integrated.fontFamily": "Consolas, Meiryo, 'Courier New', monospace",
      // Terminal (on Linux)
      // "terminal.integrated.shell.linux": "/usr/bin/bash",
    
      ////////////// Select a color theme //////////////
      // https://glitchbone.github.io/vscode-base16-term/
      // [Theme Name: Hopscotch]
      "workbench.colorCustomizations": {
        "terminal.background": "#322931",
        "terminal.foreground": "#B9B5B8",
        "terminalCursor.background": "#B9B5B8",
        "terminalCursor.foreground": "#B9B5B8",
        "terminal.ansiBlack": "#322931",
        "terminal.ansiBlue": "#1290BF",
        "terminal.ansiBrightBlack": "#797379",
        "terminal.ansiBrightBlue": "#1290BF",
        "terminal.ansiBrightCyan": "#149B93",
        "terminal.ansiBrightGreen": "#8FC13E",
        "terminal.ansiBrightMagenta": "#C85E7C",
        "terminal.ansiBrightRed": "#DD464C",
        "terminal.ansiBrightWhite": "#FFFFFF",
        "terminal.ansiBrightYellow": "#FDCC59",
        "terminal.ansiCyan": "#149B93",
        "terminal.ansiGreen": "#8FC13E",
        "terminal.ansiMagenta": "#C85E7C",
        "terminal.ansiRed": "#DD464C",
        "terminal.ansiWhite": "#B9B5B8",
        "terminal.ansiYellow": "#FDCC59"
      },
    
      ////////////// 非表示にするファイル //////////////
      "files.exclude": {
        "**/__pycache__": true,
        "**/.git": true,
        "**/.DS_Store": true,
        "**/*.pyc": true,
        "**/bin": true,
        "**/*.o": true,
        "**/*.obj": true,
        "**/*.ilk": true,
        "**/*.pdb": true,
        "**/*.tlog": true,
        "**/*.idb": true,
        "**/*.dll": true
      },
    
      ////////////// Intellisense //////////////
      // "python.analysis.typeCheckingMode": "basic",
      // "python.jediEnabled": false,
      "python.languageServer": "Microsoft", // Noneだとインテリセンスが効かなくなる
      "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
      "editor.suggestSelection": "recentlyUsedByPrefix",
      "editor.snippetSuggestions": "bottom", // Snippets
    
      "[python]": {
        "editor.suggest.insertMode": "replace"
      },
    
      ////////////// Linting //////////////
      "python.linting.enabled": true,
      "python.linting.pylintEnabled": false,
      "python.linting.flake8Enabled": true,
      "python.linting.lintOnSave": true,
      "editor.formatOnType": true,
      "editor.formatOnSave": true, // ショートカットを使いましょう ==> Shift + Alt + F (Windows)
      "editor.rulers": [100, 120], // 100,120列目に縦線を入れる
      "path-autocomplete.extensionOnImport": true,
      "python.dataScience.sendSelectionToInteractiveWindow": true,
      "vsintellicode.sql.completionsEnabled": false,
    
      ////////////// Linting. pylint //////////////
      "python.linting.pylintArgs": [
        "--disable",
        "W0621,C0111,C0103",
        // "--indent-string=\"  \"",
        // "--indent-after-paren=\"  \"",
        "--extension-pkg-whitelist",
        "numpy",
        "--generated-members",
        "torch.*",
        "--extension-pkg-whitelist=cv2" // cv2インテリセンスを有効化するため
      ],
      ////////////// Linting. flake8 //////////////
      "python.linting.flake8Args": [
        //"--ignore=E501",
        "--max-line-length=120",
        "--ignore=E402,E266,W504"
      ],
      "python.formatting.autopep8Args": ["--ignore=E501,E402"],
      ////////////// Linting. mypy //////////////
      "python.linting.mypyEnabled": false,
      "python.linting.mypyArgs": [
        "--ignore-missing-imports",
        "--follow-imports=silent",
        "--show-column-numbers",
        "--cache-dir=/home/gachan/.cache/mypy_cache" // 設定しない場合、プロジェクト毎にキャッシュが生成される
      ],
      ////////////// Project //////////////
      "projectManager.git.baseFolders": ["C:/local"],
    
      ////////////// Microsoft //////////////
      "telemetry.enableTelemetry": false,
      "telemetry.enableCrashReporter": false,
      ////////////// Live Share Code //////////////
      "liveshare.presence": false
    }

アノテーションコメント

  • コメントにメタデータを付加するもの
  • コードの欠陥がわかりやすくなる
# TODO: 変数aがNoneの時、呼び出すときにエラーを吐くことの対応
  • よく使われる記法と意味

    記法 意味
    TODO: あとで追加、修正するべき機能がある。
    FIXME: 既知の不具合があるコード。修正が必要。
    HACK: あまりきれいじゃないコード。リファクタリングが必要。
    XXX: 危険!動くけどなぜうごくかわからない。
    REVIEW: 意図した通りに動くか、見直す必要がある。
    OPTIMIZE: 無駄が多く、ボトルネックになっている。
    CHANGED: コードをどのように変更したか。
    NOTE: なぜ、こうなったという情報を残す。
    WARNING: 注意が必要。

関数変数の命名

jupyter-notebook

numpy.view によるサブクラス化

flask

  • Flask 基本

  • サンプルコード 1

  • サンプルコード 2

  • ここで ジェネレーター関数が複数の結果を順番に返すことができることがわかります。Flask は、ジェネレーター関数のこの特性を使用してストリーミングを実装します。

  • Live Streaming コード解説

  • これからは fastapi ?

  • flask の起動

    • http://127.0.0.1:5000/ だとローカル PC からしか接続できない
    • --host=0.0.0.0だと、同じネットワーク内の全ての PC で Listen することができます。
  • flask を HTTPS 化する

WebRTC

  • 公式
  • Firefox で動くが chorme で動かない場合、chrome に chrome://flags/ と入力し必要な機能を Enable にする
  • アプリがカメラとマイクへのアクセスを可能にする JavaScript API(getUserMedia)

MessagePack for Python

  • pip install -U msgpack-python
  • pip install msgpack-numpy

ZMQ

imutils

  • 基本的な画像処理関数を OpenCV の関数を組み合わせて作られたモジュール
  • 使い方

■ 用語解説

Web アプリケーション学習ロードマップ

Nginx(エンジンエックス)

  • web サーバー

npm

  • Node.js のパッケージを管理するもの。Node Package Manager の略

Node.js

  • JavaScript は本来クライアントサイドで動く言語で HTML で書かれたページに動きをつけたりするのに対して、Node.js はサーバサイドで動く JavaScript である。
  • 非同期型のイベント駆動の JavaScript 環境で、たくさんの接続を同時に処理することができます。

react.js

  • JavaScript で書かれたライブラリ。react.js をインクルードして使う。 (MVC で言うところの)View のみを担当する。
  • JavaScript のコード中に(PHP の様に)「HTML タグ(っぽいもの)」を書ける。

Heroku

  • クラウド上のサーバの一種 です。
  • 簡単にサーバをたてられて、Web サイトを作れます。
  • 厳密には、PaaS(Platform as a Service: アプリケーションを実行するためのプラットフォームをインターネットを介して提供するサービス)の一種です。
  • サーバや OS、データベースなどのプラットフォームを、インターネットを介して利用することができます。
  • heroku の一番良いところは、ほぼ 無料 で使える点です。
  • プライベートで利用する分には無料プランで十分済むので、自分はプライベートでよく使っています。
  • Heroku を使いこなす術

リバースプロキシ

  • 参考元 img
    • インターネットと Web サーバーの間に設置
      • インターネットからは、あたかも Web サーバーに直接アクセスしているかようになります。
    • Web サーバーを複数設置可能
      • 複数ある Web サーバーをリバースプロキシが振り分けるため、各 Web サーバーの負担が軽くなり、安定したサービスを継続して提供できます。
    • 防御壁(ファイアウォール)として機能する

tqdm

  • コンソールにプログレスバー表示できる python パッケージ

eel

  • GUI を HTML/CSS/JavaScript の WEB 技術で作ることができる Python の GUI ライブラリ
  • Electron ライクな GUI ライブラリで、Numpy や Pandas などデータ処理に秀でている

WebSocket

  • WebSocket 通信とは

    • コンピュータネットワーク用のプロトコルのひとつで、リアルタイムかつ双方向な通信を実現するためのプロトコルです。
    • コネクション確立時に従来の HTTP 通信から WebSocket へのプロトコルの upgrade を要求し、1 度コネクションが確立されると、「ws://」あるいは「wss://」から始まる URI スキーム上でクライアント・サーバ間のデータのやりとりを連続して行うことができます。
  • HTTP 通信との違い

    • HTTP 通信がリクエストを出す度に新しくコネクションを確立しなければならないのに対し、WebSocket 通信は一度コネクションを確立させると、クライアント・サーバ間のデータのやり取りを連続して行うことができます。
    • また、HTTP よりも軽量なヘッダを扱うことから、通信コストが低く、よりリアルタイム性の高いプロトコルであると言えます。
    • そのため、利用例としては、複数の人と同時に対戦するゲームや SNS などリアルタイム性が求められるアプリケーションに多く見られます。
  • WebSocket のわかりやすい説明

WSGI(ウィズギー)

  • 参考元
  • Python で Web アプリケーションと Web サーバーを接続する際に考案されたインターフェース定義
  • Python の Web フレームワークごとに、サーバーと接続するためのインターフェースが異なっていたため、接続できるサーバーが制限されるという事態が生じてしまった
  • インターフェースを統一して、どのフレームワークでも同じように各種サーバーに接続できるようにしよう、ということで生まれたのが WSGI

Werkzeug(ヴェルクツォイク)

  • flask にも使われている非常にシンプルな WSGI ユーティリティライブラリ
  • WSGI に準拠したアプリケーションを簡単に作ることができる

■ クラウドサービス

Github

public repogitory なら wiki が使える

box.net

10GB まで無料

■ エンターテイメント

■ その他

Excel

  • 100 マス計算 ⇒ 複合参照 を使う 例) =$A2+B$1

google 検索

  • " "で囲むキーワードは、必ず検索結果に含まれる

vscode 拡張機能一覧

code --install-extension alefragnani.Bookmarks
code --install-extension alefragnani.project-manager
code --install-extension austin.code-gnu-global
code --install-extension bierner.markdown-preview-github-styles
code --install-extension christian-kohler.path-intellisense
code --install-extension codezombiech.gitignore
code --install-extension CoenraadS.bracket-pair-colorizer
code --install-extension CoenraadS.bracket-pair-colorizer-2
code --install-extension DavidAnson.vscode-markdownlint
code --install-extension dbaeumer.vscode-eslint
code --install-extension dbankier.vscode-instant-markdown
code --install-extension donjayamanne.githistory
code --install-extension eamodio.gitlens
code --install-extension esbenp.prettier-vscode
code --install-extension felipecaputo.git-project-manager
code --install-extension giflens.giflens
code --install-extension HookyQR.beautify
code --install-extension IBM.output-colorizer
code --install-extension ionutvmi.path-autocomplete
code --install-extension KevinRose.vsc-python-indent
code --install-extension kisstkondoros.vscode-gutter-preview
code --install-extension mdickin.markdown-shortcuts
code --install-extension mechatroner.rainbow-csv
code --install-extension mhutchie.git-graph
code --install-extension MS-CEINTL.vscode-language-pack-ja
code --install-extension ms-python.python
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension ms-vscode-remote.remote-ssh-edit
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
code --install-extension ms-vscode.cpptools
code --install-extension njpwerner.autodocstring
code --install-extension oderwat.indent-rainbow
code --install-extension ritwickdey.live-sass
code --install-extension ritwickdey.LiveServer
code --install-extension shardulm94.trailing-spaces
code --install-extension shd101wyy.markdown-preview-enhanced
code --install-extension spywhere.guides
code --install-extension svipas.control-snippets
code --install-extension tushortz.python-extended-snippets
code --install-extension VisualStudioExptTeam.vscodeintellicode
code --install-extension vscode-icons-team.vscode-icons
code --install-extension yzhang.markdown-all-in-one

tips's People

Contributors

karupagyu avatar

Watchers

 avatar

Forkers

molla1998

tips's Issues

[GitBash] Git Bashコンソール起動時にSSHキーを自動登録する設定

  • SSHキーの自動登録は、3. だけ見ればいい。
  • 念のため、1. Gitの初期設定と 2. SSH接続設定 も載せておく。

1. Gitの初期設定

git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"
git config --global core.quotepath false #日本語ファイル名がエスケープされないように

2. SSH接続設定

このページを参考に設定

  • 秘密鍵・公開鍵生成
  • 公開鍵をGitHubに登録する
  • SSH接続の設定をする

3. SSHキーの自動登録

元記事

  • ~/.bashrcでコンソール起動時の設定をしておく
  • コンソールを開くたびにssh-agentを起動し、秘密鍵を登録しておく。

~/.bashrcに以下を記述

# ssh-agent
eval `ssh-agent`
ssh-add ~/.ssh/[rsa_file]

このままではコンソールを終了してもssh-agentプロセスは終了せず、開き直すたびにプロセスがいくつも立ち上がってしまう。

なので、コンソールが閉じるタイミングでプロセスをkillしてやる。

~/.bash_logoutにコンソール終了時の処理を記述

# ssh-agent
eval `ssh-agent -k`

[PATH] Windows, Linux共通で使えるPath記述方法

階層のseparatorは / で統一する

import os

# 1以外はLinuxで読めない

# 1
if os.path.exists("../Samples/README.md"):
    print("Win: OK, Linux: OK")
# 2
if os.path.exists("..\\Samples\\README.md"):
    print("Win: OK,  Linux: NG")
# 3
if os.path.exists("..//Samples//README.md"):
    print("Win: OK,  Linux: NG")

[VSCode] setting.json フォント, スニペット表示

{
  // フォント
  "editor.fontFamily": "Source Han Code ",
  "editor.fontFamily": "Source Han Code JP", // 源ノ角ゴシック Code JP
  "editor.fontWeight": "300",
  
  // Live Share Code
  "liveshare.presence": false,
 
  // Snippets
  // コード補完の最後にSnippetsを表示する
  "editor.snippetSuggestions": "bottom"
}

[Numpy, Subclass] Numpyのサブクラス化

実装例

import numpy as np

class DetResults(np.ndarray):
    # [person][x,y,w,h,cls,score]
    def __new__(cls, ndarr):
        assert isinstance(ndarr, np.ndarray), \
            'type {} cannot be generated to detresults.'.format(type(ndarr))
        return ndarr.view(cls)  # メモリ参照

    @property
    def tlbr_array(self) -> np.ndarray:
        return np.asarray(self[:, 4])

    @property
    def objectness_sc(self) -> np.ndarray:
        return self[:, 5].view()

[venv] Usage

venv の使用法

  • c/users/[usrname]/.virtualenvs に py35env (仮想環境名の例) などの仮想環境を作っておくと、vscode で実行環境リストに出てくるため便利です。
# 1. 仮想環境の作成場所
cd c/users/[usrname]/.virtualenvs

# 2. バージョン指定した仮想環境の作成
py -3.5 -m venv py35env
py -3.7 -m venv py37env

# 3.1. 仮想環境の使用
source /c/users/.virtualenvs/py35env/Scripts/activate

# 3. 2. vscodeでデバッグする場合:
# vscodeのステータスバーから環境選択 -> F5 デバッグ開始

# 4. 仮想環境の終了
deactivate

[おまけ] python バージョンを複数インストールした時のパス設定について

  • python と入力した時のバージョンは、環境変数で上位に書いた バージョンになります。
  • 環境変数にパスを通す場合はよく使う python バージョンを設定するか、パスを設定しないほうがいいでしょう。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.