【linux】パフォーマンス確認に使えそうなコマンド メモ

free

メモリの使用状況を表示

オプション

-m メガバイト単位で表示

-t 仮想メモリと物理メモリを表示

仮想メモリ・・・hdd ssdなどのストレージで物理メモリを代替。物理メモリと比較して速度遅い  

vmstat

メモリやCPUの使用状況を表示

watch

定期的にプログラムを実行し、実行結果を出力

オプション -n 間隔を指定

watch -n 5 free #5秒間隔でメモリの使用状況を表示

【python】 numpyメモ

sqrt 平方根

import numpy as np
np.sqrt([1,2,3])
# array([ 1.        ,  1.41421356,  1.73205081])
np.sqrt(2)
# 1.4142135623730951

dot 内積

 v1 = [1,2,3]
 v2 = [2,3,4]
 np.dot(v1,v2) #20

degrees radianを返す

np.degrees(3.14) 
#179.90874767107849
np.degrees(np.pi)
#180
#np.piは円周率 (≒3.1415926)

power 累乗

np.power([1,2,3],2) #配列要素をそれぞれ2乗
#array([1, 4, 9])

正規表現 最短マッチ

最短マッチ

躓くことが多いのでメモ。

最短マッチを考える際には通常マッチから考えるとわかりやすい。

  • 通常マッチは一番長いパターンをマッチ
  • 最短マッチは一番短いパターンをマッチ

通常マッチは一番長いパターンと認識することが重要

例) テキスト例:「hoge」「hoge2」

ケース1 通常マッチケース /「.+」/ →この場合  と の範囲をマッチ。 テキスト例では「と」が一番長い範囲をマッチさせます。

ケース2 最短マッチケース /「.+?」/

→この場合  と のパターンの最短ケースを マッチさせます。 ポイントは量指定子(?や*)の前に? をつけることです。 (量指定子はなれるまであまり考えなくては良いかも)

hoge = "「hoge」「hoge」"

puts hoge.scan(/「.+」/)[0]  #→["「hoge」「hoge2」"]
puts hoge.scan(/「.+?」/)[0] #["「hoge」"]

【rubyメモ】evalメソッド

evalとは

入力された文字列をrubyのコードとして解釈出来ます。 evalはKernel moduleに属しています。 kernel moduleはobjectクラスに属しているため、 全てのクラスで使用出来ます。

コード例

test = "aiueo"
test2 = "test2"

eval("puts test")   #aiueo 
eval("puts 'test2") #test2

【ruby】yieldとブロックの関係

yield

メソッドの中でyieldを実行すると、受け取ったブロックを実行します。

コード例

ブロックとは method do |ブロック変数| ~ end で囲われている処理のことです。

yieldをわかりやすく明記するためにブロック変数を省略した形で書いてみました。

@count = 1

def yield_test
  puts @count # a
  @count += 1 
  yield       # b
  puts @count # c
end

#ブロック
yield_test do #yield_test実行 → a b cの順に実行される
  puts @count #b yieldからブロック処理実行
  @count += 1 #c @countを1増やされる。
end

#1,2,3と出力

yield処理を入れた際はブロック処理をmehodに追加することが出来ます。 追加処理を入れる際、便利な気がします。

ちなみにブロックが渡されたか判別するのは block_given? methodを用います。

@count = 1

def yield_test
  puts @count # a
  @count += 1 
  yield if bloc_given? # true→yield実行 今回はfalseなので実行されない
  puts @count # c
end

#ブロック
yield_test

#1,2と出力

CSS flexbox【日常 個人サービス製作日誌】

flexboxアイテム テキストが長いとはみ出てしまう

例)

<div class = "flex">
  <div class="problem">hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge</div>
  <div class="normal">hoge </div>
</div>
.flex {
    display: flexbox;
    width: 100px
}
.problem {
  flex-grow: 1;
}
.normal {
  flex-grow: 4;
}

フレックボックス幅が100pxとして、2つのフレックスアイテムがある場合を想定します。 それぞれのアイテムの長さ比率は1:4の幅で分割しています(flex-growプロパティ使用)。 テキストが長い場合、はみ出て表示されてしまう。(今回のケースだと .problemは20px幅)

ぐぐっていたら解決方法があった。 こちら