2018/06/04

単語一括選択

VSCodeの単語一括選択は、vim の Normalモードを維持してくれるので、そのままインサートできる。

1) 単語選択(VSCode) shift + cmd + L

2) インサート(vim) i

単語随時選択

単語選択「cmd + D」で選択した場合、Multi Cursorモードになる為、Normalモードに戻す必要がある。

1) 単語選択(VSCode) cmd + D

2) Normalモード v

3) インサート(vim) i

  2018/05/14

フレームワークや独自のライブラリの利用で、VSCode標準でない拡張子を利用することがある。 デフォルトでは任意のフォーマットできないため、ユーザ設定に「拡張子」「フォーマッタ」を記述する。


{
    "files.associations": {
        "*.phtml":"html"
    }
}

  2018/05/08

VScode(Mac High Sierra)で PHP7 に対応(コード補完など)させるためには、PHP7をインストールして設定する。 brew か phpenv か迷うが自分は MacでWebサーバを利用せず bin だけ利用できればよいので brew にした。 XAMPPは起動とか面倒そうなのでやめた。

php7インストール(brew版)

phpenvは Warning がでていたので、とりあえず brew でインストール

$ brew update $ brew upgrade $ brew install gcc re2c mcrypt libmcrypt autoconf automake libiconv $ brew install php@7.2

.bash_profile にパスを記述

$ vi ~/.bash_profile
export PATH="/usr/local/opt/php@7.2/bin:$PATH"
export PATH="/usr/local/opt/php@7.2/sbin:$PATH"

php7インストール(phpenv版)

git clone https://github.com/CHH/phpenv.git sh ./phpenv/bin/phpenv-install.sh

bash_profile にパスを記述 $ vi ~/.bash_profile

export PATH="$HOME/.phpenv/bin:$PATH"
eval "$(phpenv init -)"

ターミナル再起動後、php-buildインストール

$ git clone https://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build

PHP7と関係パッケージインストール

$ brew install libevent libjpeg libpng mcrypt libtool openssl autoconf libxml2 lemon re2c $ phpenv install -l $ phpenv install 7.2.5

phpenv で PHPバージョン切替

$ phpenv global 7.2.5 $ phpenv versions

パス設定

.bash_profile にパスを記述

export PATH="/Users/yoo/.phpenv/bin:$PATH"
eval "$(phpenv init -)"

VScodeユーザ設定

php7のパスを設定

$ which php /usr/local/opt/php@7.2/bin/php

    "php.executablePath": "/usr/local/opt/php@7.2/bin/php",
    "php.validate.executablePath": "/usr/local/opt/php@7.2/bin/php",
    "php.validate.enable": true,

VScode拡張プラグイン

差し当たり自分にあったPHPプラグインをインストール - PHP IntelliSense - PHP Intelephense - PHP DocBlocker - PHP Debug *「PHP Intelephense」はコード整形が動作しなかった。 *「 PHP Intellisense - Crane」は定義ジャンプが自分向きでなかった。 *「php cs fixer」はエラーになるので利用しない。

  2018/04/28

OSX(High Sieera)でRcmdr をインストールしてもエラーとなった。

> install.packages("Rcmdr", dependencies = TRUE) .... > library(Rcmdr) Error : .onAttach は attachNamespace()('Rcmdr' に対する)の中で失敗しました、詳細は: call: structure(.External(.C_dotTclObjv, objv), class = "tclObj") error: [tcl] invalid command name "image".

XQuartz インストール

Rcmdr はX11アプリで起動するため、XQuartzをインストール&起動しておかなければいけない。 https://www.xquartz.org/ RStudioを再起動し、XQuartzを起動した状態で、Rcmdr を読み込むと起動した。 Rcmdr

  2018/04/10

Debian の最新バージョンは python3 が Universe Repository に含まれている。

# aptitude update
# aptitude install python3

pip インストール

# aptitude install python3-pip

pyenv インストール

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash

.bashrc に環境変数追加

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

pyenv 動作確認

$ pyenv
...
Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable
...

Anaconda インストール

$ pyenv install anaconda3-5.1.0 
Downloading Anaconda3-5.1.0-Linux-x86_64.sh...
-> https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
Installing Anaconda3-5.1.0-Linux-x86_64...
Installed Anaconda3-5.1.0-Linux-x86_64 to /home/yoo/.pyenv/versions/anaconda3-5.1.0

*デフォルト /tmp にインストールされるようなので容量には注意 ソースインストールの場合 Download Anaconda Distribution からダウンロードしてインストール

$ wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
For full documentation, see: https://github.com/pyenv/pyenv#readme
$sh Anaconda3-5.1.0-Linux-x86_64.sh

Anaconda 設定/アップデート

$ pyenv global anaconda3-5.1.0
$ pyenv versions
  system
* anaconda3-5.1.0 (set by /home/yoo/.pyenv/version)
 $ conda update conda
Solving environment: done
....
The following packages will be downloaded:
    package                    |            build
    ---------------------------|-----------------
    conda-4.5.0                |           py36_0         1.0 MB
The following packages will be UPDATED:
    conda: 4.4.10-py36_0 --> 4.5.0-py36_0
Proceed ([y]/n)? 
....
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

これで、python コマンドでも python3が利用できる。

$ python --version
Python 3.6.4 :: Anaconda, Inc.

Anaconda でライブラリインストール

pip でなく Anaconda でライブラリをインストールする

$ conda install matplotlib

  2018/04/10

psycopg2 を利用して PostgreSQL に接続する

import numpy as np
import psycopg2 as pg 
import psycopg2.extras

connection = pg.connect("host=localhost port=5432 dbname=db_name user=postgres")

cursor = connection.cursor(cursor_factory=psycopg2.extras.DictCursor)
cursor.execute("SELECT * FROM users")

results = cursor.fetchall()
values = []
for row in results:
    values.append(dict(row))

print(values)

cursor.close()
connection.close()
  • PostgreSQL接続は、psycopg2.connect("DB設定")
  • connection.cursor() で cursor 作成
  • ディクショナリ形式で取得するには、psycopg2.exras.DictCuror を引数にする
  • cursor.execute() でSQLを実行
  • cursor.fetchall() でデータ取得
  • dict() でディクショナリ形式にし、append() で連想配列にする

  2018/04/07

Mac でも R 環境が利用できる。 ただ、XCodeを予めインストールしておいた方が良さそうだ。 (自分は予めXCodeを入れていたので未確認) * 2018/4 時点では「ElCapitan」対応だが、差し当たり「HighSierra」でも動作している。

Rインストール

The Comprehensive R Archive Network

$ R --version R version 3.4.4 (2018-03-15) -- "Someone to Lean On" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit)

RStudioインストール

RStudio コンソール等でプログラムを簡単に確認できる。 RStudio

日本語化

ホームに「.RProfile」を作成し以下を記述する *参考:RStudio for Mac OS X で日本語のプロットが上手くいかない場合の対処法

setHook(packageEvent("grDevices", "onLoad"),
    function(...){
        if(.Platform$OS.type == "windows")
            grDevices::windowsFonts(sans ="MS Gothic",
                                    serif="MS Mincho",
                                    mono ="FixedFont")
        if(capabilities("aqua"))
            grDevices::quartzFonts(
              sans =grDevices::quartzFont(
                c("Hiragino Kaku Gothic Pro W3",
                  "Hiragino Kaku Gothic Pro W6",
                  "Hiragino Kaku Gothic Pro W3",
                  "Hiragino Kaku Gothic Pro W6")),
              serif=grDevices::quartzFont(
                c("Hiragino Mincho Pro W3",
                  "Hiragino Mincho Pro W6",
                  "Hiragino Mincho Pro W3",
                  "Hiragino Mincho Pro W6")))
        if(capabilities("X11"))
            grDevices::X11.options(
                fonts=c("-kochi-gothic-%s-%s-*-*-%d-*-*-*-*-*-*-*",
                        "-adobe-symbol-medium-r-*-*-%d-*-*-*-*-*-*-*"))
        grDevices::pdf.options(family="Japan1GothicBBB")
        grDevices::ps.options(family="Japan1GothicBBB")
        }
)
attach(NULL, name = "JapanEnv")
assign("familyset_hook",
       function() {
            winfontdevs=c("windows","win.metafile",
                          "png","bmp","jpeg","tiff","RStudioGD")
            macfontdevs=c("quartz","quartz_off_screen","RStudioGD")
            devname=strsplit(names(dev.cur()),":")[[1L]][1]
            if ((.Platform$OS.type == "windows") &&
                (devname %in% winfontdevs))
                    par(family="sans")
            if (capabilities("aqua") &&
                devname %in% macfontdevs)
                    par(family="sans")
       },
       pos="JapanEnv")
setHook("plot.new", get("familyset_hook", pos="JapanEnv"))
setHook("persp", get("familyset_hook", pos="JapanEnv"))

パッケージのインストール

RStudio のコマンド

install.packages("パッケージ名")

でパッケージをインストールできる。 例)

install.packages("knitr")

MeCabインストール

オープンソースの形態素解析エンジン 文法を解析できる。 MeCabから「mecab-0.996.tar.gz」(2018/3時点)をダウンロードしてソースインストール

$ tar zxvf mecab-0.996.tar.gz $ cd mecab-0.996 $ ./configure --with-charset=utf-8 $ make $ sudo make install
$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz $ cd mecab-ipadic-2.7.0-20070801 $ ./configure --with-charset=utf-8 $ make $ sudo make install
$ mecab 日本 日本 名詞,固有名詞,地域,国,*,*,日本,ニッポン,ニッポン EOS

RMeCabインストール

RStudio のコンソールで以下を実行する

> install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")

  2018/04/06

Mac(OSX)で gem install するとデフォルトではエラーになるので、XCodeコマンドラインをインストールしておく。

XCodeコマンドラインインストール

$ sudo xcode-select --install

/usr/local/bin 環境変数登録

$ echo 'export PATH=/usr/local/bin:$PATH' >> .bash_profile $ source .bash_profile

最新 ruby を利用したり、sudo など省きたい場合は、brew で別途 ruby をインストール・設定する。

gem 環境確認

$ gem environment - RUBYGEMS VERSION: 2.4.6 - RUBY VERSION: 2.0.0 (2015-12-16 patchlevel 648) [universal.x86_64-darwin16] - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0 - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby - EXECUTABLE DIRECTORY: /usr/bin - SPEC CACHE DIRECTORY: /Users/yoo/.gem/specs - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site - RUBYGEMS PLATFORMS: - ruby - universal-darwin-16 - GEM PATHS: - /Library/Ruby/Gems/2.0.0 - /Users/yoo/.gem/ruby/2.0.0 - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /Users/yoo/.rbenv/shims - /Users/yoo/.rbenv/bin - /Users/yoo/.nodebrew/current/bin - /usr/local/bin - /usr/bin - /bin - /usr/sbin - /sbin - /opt/X11/bin - /usr/local/share/dotnet - /Library/Frameworks/Mono.framework/Versions/Current/Commands

Sassインストール

$ sudo gem install -n /usr/local/bin sass

gemリスト

$ gem list *** LOCAL GEMS *** bigdecimal (1.2.7, 1.2.0) CFPropertyList (2.3.0, 2.2.8) chunky_png (1.3.4) compass (1.0.3) compass-core (1.0.3) compass-import-once (1.0.5) daemons (1.2.4) ffi (1.9.8) io-console (0.4.2) json (1.7.7) libxml-ruby (2.8.0, 2.6.0) mini_portile (0.6.2) minitest (5.5.1, 4.3.2) multi_json (1.11.0) nokogiri (1.5.6) oauth (0.5.4) power_assert (0.2.3) psych (2.0.0) rake (10.4.2, 0.9.6) rb-fsevent (0.9.4) rb-inotify (0.9.10, 0.9.5) rdoc (4.2.0, 4.0.0) rubygems-update (2.4.6) sass (3.5.6, 3.4.13) sass-listen (4.0.0) sqlite3 (1.3.10, 1.3.7) test-unit (3.0.9, 2.0.0.0)

  2018/03/07

PHP7.1 で JpGraph4.2.0 を利用すると gd_image.inc.php でエラーになる。

function SetAntiAliasing($aFlg=true) {
        $this->use_anti_aliasing = $aFlg;
        if( function_exists('imageantialias') ) {
            imageantialias($this->img,$aFlg);
        }
        else {
            JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')
        }
    }

imageantialias() が利用できないのが原因 PHP : imageantialias()

7.2.0 imageantialias() が常に使えるようになりました。 これまでのバージョンでは、PHP にバンドルされている GD ライブラリでコンパイルした場合にしか使えませんでした。

Debian のPHP7.1パッケージではダメで、PHP7.2 では動作した。

  2017/09/01

Google Apps Script で CSVデータを配列で処理してみる。

サンプルとしてCSVファイルは ・Google Drive内 ・SJISフォーマット ・フォルダとファイル名を指定(フォルダ名はGoogle Drive内でユニーク) ・CSVの内容は、first_name, last_name, email 形式で1行目はタイトル


function main() {
      var rows = csvtoArray('フォルダ名', 'ファイル名');

      for (var i = 1; i < rows.length; i++) {
          var row = rows[i];

          var first_name = row[0];
          var last_name = row[1];
          var email = row[1];
          
          Logger.log(last_name);
          Logger.log(first_name);
          Logger.log(email);
     }
}

function csvtoArray(folder_name, file_name) {
    var folder = DriveApp.getFoldersByName(folder_name).next();
    var file = folder.getFilesByName(file_name).next();

    var csv = file.getBlob().getDataAsString("Shift_JIS");
    var rows = Utilities.parseCsv(csv);
  
    return rows;
}

getFoldersByName()、getFilesByName() のイテレートは横着して next() で最初のアイテムを取得 (GoogleDrive内で重複する場合、それなりの処理が必要)

pngファイルの軽量化
Google DriveのIconを再起的に削除
php-markdownでバニラPHPなコードブロック処理
laravel-ffmpeg を使う
2021年版 Ubuntu + certbot + Let's Encrypt でサーバ証明書設定
GihHub のデフォルトでない master ブランチを checkout する
マルチログインで未認証のリダイレクト
Homebrew で Redis をインストール
CSS だけでスムーズスクロール
EC-CUBE4 で Gmail の smtp を利用する
Amazon Linux 2 の amazon-linux-extras とは
UNIQUE カラムのバリデーションで自分自身を除外して更新
フォーム有効期限切れで Page Expired をリダイレクト
ログを日付でローテーションやクリアや削除
Homebrew で PHP8.0 から PHP7.4 にダウングレード
Big sur で zsh 移行と Homebrew アップグレード
Mac に minikube をインストール
途中から .gitignore に追加する
Larevel 6.x から Laravel 8.x にバージョンアップ
Composer で Allowed memory size (メモリ不足)エラー
Blade でカスタムクラスを利用する
git push git pull にブランチ指定せずに実行する
git pull や git push できなくなったとき
Docker のコンテナからホストOS に接続
Mac で ローカル IP アドレス(ipv4)のみを表示する
ホストOS から Docker の MySQLコンテナに接続
caching_sha2_password のエラー
node-config で環境設定ファイルを利用する
rootパスワードを初期化(再設定)する
Git から clone したときのエラー対処
Mac に MySQL をインストール
Mac に PostgreSQL をインストール
Laravel 環境構築 - Mac ネイティブ編
Firebase 入門 - Firebase とは
Firebase 入門 - CLI インストールとデータベースの設定
AWS 無料枠(t2.micro)で容量とメモリエラー
Cloud9 を起動する -初心者編-
gcloud で GCEインスタンスを起動してみる
AWS CLI と jq でインスタンス一覧を整形して表示
React と Laravel7 のプロジェクトを作成する
Homebrewインストール-2020年版
3直線で囲まれた範囲塗りつぶし
PuLP で線形最適化問題を解く
カスタムのペジネーションを作る
node-sass を使って sass をコンパイルする
Log ファサードでSQLログを分離して書き出す
いちから始める Docker - 複数のコンテナを使う - (2020年)
いちから始める Docker - docker-compose を使う - (2020年)
AWS ECR を使ってみる
Laravel7 でマルチ認証