知っておくと便利系(随時更新)

一つの記事にするほどじゃないけど知っておくと業務がスムーズに進め系のものを備忘録的な感じで記載していきます。

## XLSXをCSVに変換

Linuxのコマンドラインでxlsxをcsvに変換する


Gnumericスプレッドシートアプリケーションには、さまざまなスプレッドシート形式間で変換できるssconvertというコマンドラインユーティリティを使用する

### 導入方法
#### MAC

```bash
$ brew install gnumeric
```

### 変換方法

```bash
$ ssconvert sample.xlsx sample.csv
```

## 正規表現での\bがバックスペースにうまくマッチしない

制御文字のバックスペースがバッチ連携で悪さしていた,
→正規表現でマッチさせて取り除こう

[特殊な文字の入力(エスケープシーケンス)](https://www.javadrive.jp/start/num/index4.html)
エスケープシーケンスで入力する時,バックスペースは`\b`みたいなので
↓確認の為,こんな感じの簡単なトリム処理書く

```py:test_BS_trim.py
# coding: utf-8
import re


before = "hogehoge^H^Hfugafuga"

after = re.sub(r'\b', '', before)

print after
```

#### 実行
- 理想
    - 出力結果: hogehogefugafuga
- 実行結果
    - 出力結果: hogehofugafuga

全然マッチしない......

↓どうやら正規表現では`\b`は**単語境界**？にマッチするみたい(知らない)
[正規表現の基本](https://qiita.com/sea_ship/items/7c8811b5cf37d700adc4)

色々調べると**角括弧 [ ]**で囲むとバックスペースにマッチするようになるみたい
[\bはバックスペースでなく単語境界なので正規表現でうまく動作しない](https://qiita.com/HorieH/items/b62168aa0989acf2d7c5)

なので先ほど処理を修正して

```diff:test_BS_trim.py
# coding: utf-8
import re


before = "hogehoge^H^Hfugafuga"

- after = re.sub(r'\b', '', before)
+ after = re.sub(r'[\b]', '', before)

print after
```

#### 実行
- 理想
    - 出力結果: hogehogefugafuga
- 実行結果
    - 出力結果: hogehogefugafuga

うまくマッチしてトリム処理ができた🎉



## git系
### 1. 間違えてローカルのmasterブランチに色々コミットしてしまった

作業ブランチを間違えてやっちゃった系です.....
リベースとかやってどういう状態かわからなくなった時に便利なもの
※まだpushはしていない状態です

#### ローカルのmasterを、強制的にリモートのmasterに合わせる

```git
1) リモートの最新を取ってきておいて・・
$ git fetch origin master

2) ローカルのmasterを、リモート追跡のmasterに強制的に合わせる！
$ git reset --hard origin/master
```

### 2. コミットまとめ方

切り戻し作業とか発生するとまじで見にくいからcommitをまとめて欲しい

```git
$ git log --oneline
d4ae0d4 (HEAD -> rebase_test_branch) テスト11
7886786 テスト10
81c556d テスト9
9e684f2 テスト8
b6dcb76 テスト7
d54a9e2 テスト6
aa2b39c テスト5
7388fb8 テスト4
de0130d テスト3
698dbd6 テスト2
d4fa3ad テスト
ab55c90 (origin/master, master) 
```

こんな感じのコミットがあるとする

commitID `d4fa3ad` ~ `d4ae0d4` をまとめる

`d4fa3ad`　の一個下の `ab55c90` をrebaseする際に指定する


```git
$

pick d4fa3ad テスト1 
pick 698dbd6 テスト2 
pick de0130d テスト3 
pick 7388fb8 テスト4 
pick aa2b39c テスト5 
pick d54a9e2 テスト6 
pick b6dcb76 テスト7 
pick 9e684f2 テスト8 
pick 81c556d テスト9 
pick 7886786 テスト10 
pick d4ae0d4 テスト11

```

こんなのが出てくるので↓のように修正する

```git
$ git rebase -i ab55c90
pick d4fa3ad テスト1 
s 698dbd6 テスト2 
s de0130d テスト3 
s 7388fb8 テスト4 
s aa2b39c テスト5 
s d54a9e2 テスト6 
s b6dcb76 テスト7 
s 9e684f2 テスト8 
s 81c556d テスト9 
s 7886786 テスト10 
s d4ae0d4 テスト11
```

これを `:wq` で保存するとコミットメッセージの修正が表示されるので↓のようにrebaseのコミットメッセージを入力する
※この時まとめた分のコミットメッセージがしたの方に出てくるか残すか残さないかは個人の判断かなと思います。

```git
# This is a combination of 10 commits. 
コミット内容をまとめた
```

↓ログ確認

```
$ git log --oneline
5477904 (HEAD -> rebase_test_branch) コミット内容をまとめた
ab55c90 (origin/master, master) Merged in feature/infra_task4 (pull request #44)

```



## フォームの自動補完(サジェスト)を無効化する

**autocomplete**という属性に**off**という値を指定するだけ

### formタグに指定して全体に適応

```html

<form method="post" action="/" autocomplete="off">
　　<!-- 省略-->
</form>
```
### inputタグに指定して個別に適応

```html

<form method="post" action="/">
　　　　<!-- 省略-->
  <div>
    <label for="text">氏名:</label>
    <input type="text" id="name" name="text" autocomplete="off">
  </div>
</form>
```

## PHP
### var_dumpで省略しないで文字列表示する

php.iniを変更するのはあれなので


```php
$hoge = "めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列めちゃ長い文字列";

ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);
ini_set('xdebug.var_display_max_depth', -1);
var_dump($hoge);
exit();

```

## npmのversion関連

npmのバージョンを調べたくてhelpでコマンド調べたら3つくらい出てきて?になったのでメモ

```bash
$ npm --help version
```
のコマンドを叩くと以下の3つの候補が出てくる

```
$ npm -v 
$ npm view version
$ npm ls
```

それぞれがどういう時に使うものなのか

### npm -v
*npm自体のバージョン表示*

#### 使い方

```bash
$ npm -v
6.4.1
```
↑みたいな感じでnpm自体のバージョンが表示される

### npm view version

*npmで管理しているパッケージのバージョン表示*

#### 使い方

```bash
$ npm view {パッケージ名} version
```
パッケージ名の部分にパッケージ名を入れることでバージョン情報を表示する。

例: npm require

```bash
$ npm view require version
2.4.20
```

### npm ls

*インストールされているパッケージのバージョンを表示する*

```bash
$ npm ls
```
インストールされているパッケージだけではなく,そのパッケージを動かすために
必要な他のパッケージについても表示される