syntax on と syntax enableの違い
syntax on vs syntax enable
syntax enable コマンドは、現在の色の設定を保持します。これにより、 :highlight コマンドを使用して、このコマンドを使用する前または使用した後に好みの色を設定することができます。Vim にデフォルトの設定を上書きさせたい場合は、次のコマンドを使用してください。
:syntax on
vim helpには以下のような記述がある。
":syntax enable" コマンドは、現在のカラー設定を維持します。 この コマンドを使用することで、「:highlight」コマンドを使用して このコマンドを使用した後に コマンドを使って Vim に設定を上書きさせたい場合は デフォルトでは、使用します。>
:syntax on
Vimのexpression register とは
expression register ("=")を使用することで式を実行することができる。これは例を出すとわかりやすい。挿入モードで、Ctrl-r =と入力すると、コマンドラインに「=」の記号が表示されます。そして、2+2 <エンター>と入力すると、4が出力されます。これを使って、あらゆる種類の式を実行し、外部コマンドを呼び出すこともできる。別の例として、Ctrl-r = と入力した後、コマンドラインで system('ls')
http://vimcasts.org/episodes/simple-calculations-with-vims-expression-register/
sizeを指定してtermコマンド
termの++cols/++rowsオプションを使う
:vertical term ++cols=100
比率でsplitしたい場合はprintfなどを使うと
exe printf("vertical terminal ++cols=%d<CR>",winheight(0) * 2/3)
pandasでgroupbyしたオブジェクトの中身をみよう
groupbyオブジェクトをprintする方法
groupbyしたあとは「DataFrameGroupBy」オブジェクトになる。その中身をみるには以下のような方法がある
df = pd.DataFrame([{"a" : 1,"b" : 2 , "c" : 3 },{"a" : 2 , "b" : 3, "c" : 5},{"a" : 1 , "b" : 9, "c" : 5} ] ,index=['1','2','3']) # df a b c 1 1 2 3 2 2 3 5 3 1 9 5 df2 = df.groupby('a') # df2 <pandas.core.groupby.generic.DataFrameGroupBy object at 0x114688588> # df2.first() b c a 1 2 3 2 3 5 # df2.last() b c a 1 9 5 2 3 5
>>> for key, item in df2: ... print(df2.get_group(key), "\n\n") ... b c 1 2 3 3 9 5 b c
※ pandas インデックスオブジェクトは重複値をサポートしています。groupby操作でグループキーとして一意ではないインデックスを使用した場合、同じインデックス値に対するすべての値が1つのグループ内にあるとみなされるため、集約関数の出力には一意なインデックス値のみが含まれることになります。
pandasでDataFrameで差分をとる
以下のようなDataframeを考えよう。
df = pd.DataFrame([{"a" : 1,"b" : 2 , "c" : 3 },{"a" : 2 , "b" : 3, "c" : 5},{"a" : 1 , "b" : 9, "c" : 5} ] ,index=['1','2','3']) # df a b c 1 1 2 3 2 2 3 5 3 1 9 5
このとき、a列の値ごとに差分をとりたい場合を考える。すでにindexされてる行で区別して差分をとることは簡単だが、a列の値ごとに差分を求めたい場合は少しばかり工夫がいる
ここで仮に普通にdf.diffしてしまうと、1行ごとに差分をとってしまいうまくかない。
df.diff() a b c 1 NaN NaN NaN 2 1.0 1.0 2.0 3 -1.0 6.0 0.0
そこでgroupbyをかませる。
df.groupby('a').diff() b c 1 NaN NaN 2 NaN NaN 3 7.0 2.0
provider.iamRoleStatementsでLambdaの権限を追加
LambdaのIAM Roleの設定
Serverless frameworkのLambda関数のIAM Roleの設定を行う。
設定は設定ファイルserverless.yml
で行う。
デフォルトIAM Role
デフォルトでは、1つのIAM Roleはサービス*1内のすべてのLambda関数で共有されます。また、デフォルトでは、Lambda関数はCloudWatchログの作成と書き込みの権限を持っている。VPC設定が提供されている場合、VPCリソースと通信するためにデフォルトのAWS AWSLambdaVPCAccessExecutionRoleが関連付けられる。
このサービス全体のロールに特定の権利を追加するには、生成されたポリシーにマージされるステートメントをprovider.iamRoleStatementsで定義する。これらのステートメントは CloudFormation テンプレートにマージされるので、Join、Ref、その他の CloudFormation メソッドや機能を使用することができる。
service: new-service provider: name: aws iamRoleStatements: - Effect: 'Allow' Action: - 's3:ListBucket' Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: ServerlessDeploymentBucket - Effect: 'Allow' Action: - 's3:PutObject' Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: ServerlessDeploymentBucket - '/*'
*1:Serverlessはサービスという単位で実行環境を作る
「serverless create」でテンプレからのserverless framework入門
serverless frameworkのテンプレ機能を使って気軽に入門
serverless create --template aws-python3 --name hello-world
このコマンドを実行後ファイルは以下のようになる
.gitignore handler.py serverless.yml