ファイル関連でよく使うコマンド

はじめに

ファイル関連でよく使うんだけど、いつも忘れてしまうコマンドをメモ。 ゼロから考えて作っているわけではないので、参考サイトも載せておきます。

ファイル名を検索

# ファイル一覧を取得
$ find .  | grep 'keyword'
# ファイルの個数をカウント
$ ls -1 . | wc -l

ポイント: lsは オプション -1 で実行コマンドのファイル出力を一行ごとに出力

ファイルにあるキーワードを検索する

# ファイル一覧を標準出力
$ grep "keyword" -rl .
# ファイル名を標準出力
$ grep "keyword" -r .
# ファイル名+行を標準出力
$ grep "keyword" -r .
# 正規表現を使って検索
$ grep -e "keyword$" .

参考にさせて頂いた箇所

【find・grep】特定の文字列を含むファイルのリストを取得する方法。 - Qiita

NuxtでCSVダウンロードを行うには

はじめに

先日、仕事でrails(API) + Nuxtでファイルダウンロード機能を作ったのでメモしておきます。

業務で実装したCSVダウンロードの実装手順をざっくり説明すると、以下のような形となります。

# 実装手順
- 1.nuxtからAPI(rails)を叩く
- 2.text/csv形式のデータをrailsから返す
- 3.nuxtから返ってきたapiレスポンスデータをダウンロードさせる

今回は3のNuxtからファイルダウンロード処理だけを説明します。

いきなり、結論

フロントエンドの方に教えてもらったのですが、 この記事 が参考になります。(というかそのまんまコピペでイケますね。。)

// バイナリ形式で作成
const blob = new Blob([response.data], { type: "text/csv" });
const url = (window.URL || window.webkitURL).createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
// download属性をつける
a.download = "download.csv";
// aタグ要素を画面に一時的に追加
document.body.appendChild(a);
// クリックさせて保存させる
a.click();

(参考) download属性とは

aタグにdownload属性をつけて、aタグをクリックするとhrefに指定したファイルをダウンロード出来ます

<a href="./dowload.csv" download>CSVを保存</a>
<a href="./hoge.csv" download="download.csv">CSVをdownload.csvという名前で保存</a>

参考リンク

Nuxt.jsでファイルダウンロードしようとしてつまずいた

DynamoDB テーブル作成手順

テーブルの作り方

テーブルは以下のやり方で作成ができます。

  • AWS ログインを行う。
  • ログイン後、DynamoDBの画面、テーブル作成画面へ移る
  • テーブル名とパーティションキーを設定する画面があるので下の画像の赤字 のように入力を行い、作成ボタンを押すとテーブルができます。

f:id:jesushill:20200316214843p:plain

データの作成方法はググるといろいろあります。

AWS cli使い方

テーブルの作り方

awscliで作ると、以下のような形になります。

# cliで作成

$ aws dynamodb create-table \
    --table-name Tests \
    --attribute-definitions AttributeName=id,AttributeType=N \
    --key-schema AttributeName=id,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

データ追加方法

$ aws dynamodb put-item \
  --table-name Tests \
  --item '{ 
            "id": { "N": "1" }, 
            "name": { "S": "ユーザー" }
          }'

データ取得方法

# 全データ取得
$ aws dynamodb scan \
  --table-name Tests

参考文献

コンセプトから学ぶAmazon DynamoDB【ハッシュキーテーブル篇】 | Developers.IO

AWS DynamoDBについて

最近、個人開発でDynamoDBを使った開発をしていて、勉強になったことが多かったので、 何回に分けて自分なりに説明していこうと思います。

まずはざっくりした特徴を説明していきます。

特徴

ぐぐると色々とDynamoDBの特徴がわかるので、この記事では自分が気になった特徴を 抜粋して説明していきます。

特徴(フルマネージドシステム)

この記事 によると、 「運用に関わる作業」をクラウド業者が行ってくれる形態のサービス(コンピュータ障害監視など) だそうです。

特徴(key-value ストア)

key-valueストアの基礎知識 が非常に参考になりました。

こちらを自分なりに抜粋すると、以下の特徴があるようです。

- keyとvalueの値で書き込み
- 読み込みはkeyを指定
- 高いスケーラビリティと性能

Key-Valueストアの最大の特徴かもしれませんが、読み込みをキーに絞ることで 複数台への分散、高いスループットを実現しています。

DynamoDBのKey Value

AWSのDynamoDBは以下のようなデータ構造となっています。 PrimaryキーはPartition keyとSortKeyでDynamoDBのテーブル内はユニークになるように作成されます。 f:id:jesushill:20200308154943p:plain

AWSの公式の記事から抜粋

特徴(ドキュメントデータベース)

AWSの公式ページ によると、データをJSONのように保存できます。 このような形で保存すると、RDBのようなキーは関係なく、柔軟にデータを保存することができます。

未経験からエンジニアになるには?(34才からエンジニアになったケース)

はじめに

この記事は ジーズアカデミー Advent Calendar 2018 の25日目です。

ジーズPro1期卒業生のやまもとです! ( 去年もジーズのアドベントカレンダー書きました )

今までこのブログは日々、気づいた技術的な内容(些細ですが、自分の頭の整理のため) を書き留めてました。

が、ジーズ在校生の方から 未経験からエンジニアになるには? という質問をよく受けるので、自分が簡単にエンジニアになった経緯、エンジニアになるためにするべきことを書こうと思います。

経歴

元々は製鉄会社に勤めていた

経済学の大学院を卒業し、鉄鋼メーカー(JFEスチール)というところで 6年ほど勤務した後、退職。ジーズに入りました。

退職した理由はいろいろとあるのですが、もっと小さな組織で働くことに興味があったり、大学院へ戻りたいなーと漠然と考えて退職いたしました!

ジーズに入った経緯

一言で言うとジーズの人の熱気に押されてといったところでしょうか。 さらに(2016年4月から)新しくエンジニア転職を前提としたコースが刺激的で面白そうだったので勢いで入学しました。

エンジニアになった経緯〜現在

エンジニアになった経緯

今のジーズの全日コース(Lab)と違い、当時の全日コース(Proと呼ばれていた) はjavascriptPHP学習後から卒業制作まではスケジュール的に余裕があったので何気なく、求人サイトからエンジニア(データ分析系)の応募をしたところ、運良くエンジニアとして採用されることが出来ました。

現在

スタートアップかつFintechの会社でエンジニアをやっています。 エンジニアとしては3年目なのでまだまだ若手です(年はベテランですが爆)

未経験がエンジニアとして就職するには?

で。本題となります。

IT未経験の方の履歴書は参考程度です。

まずはエンジニアとしてどのレベルなのか面接官にわかってもらうことに注力すべきです。

具体的には以下のことが出来ていれば、なんとかなると思います。

ブログやQiitaの技術記事

内容は自分が勉強した内容(教科書)や、調べたことを書き留める位のレベルでも問題ないと思います。 面接する側からしてもブログがあれば、どういった趣向か、技術レベルかなどなどわかることができます。

重要なこと は継続的にアウトプットしていくことだと思います。(継続的にアウトプット出来る人は非常に少ない!)

サービスやライブラリ作り

一番手っ取り早く技術が伸びるので、オススメです。 ちなみに今働いてる会社はウェブ系の会社で、転職の際に自分で2本しっかりめのサービスを作っていたことが評価されて入社することが出来ました (それまでに働いていた会社とは分野が違う、かつ経験年数が不足していたので普通に受けてれば落ちてたと思います。)

(余裕があれば)面接へ行ってみる

面接に行くことでマンネリ化を防げること、自分が興味ある技術分野・事業を考える良いきっかけとなります。

もしかしたら、面接受けた会社の人手が少なくて職を得られるかもしれません。

補足 ジーズ卒業前でも、(可能であれば)仕事をしながら、卒業制作した方が外部からの刺激・ノウハウを得られるので、より早く良いサービスが作れると考えてます。

以上となります!

【Python Ruby】組み合わせ

最近、暇な時にアルゴリズムの本( プログラマ脳を鍛える数学パズル) 読んでいます。 その際、順列(組合わせ)のメソッドがあることを知りました。 以下備忘録として書いておきます。

Ruby

RubyではArrayクラスのcombinationメソッドが 使えるようです。

ary = ['1', '2', '3', '4']
# 組み合わせの重複なし:1,2,3,4の中から2つの数字を選ぶ
ary.combination(2).to_a
# 戻り値 [["1", "2"], ["1", "3"], ["1", "4"], ["2", "3"], ["2", "4"], ["3", "4"]]
# 順序の重複なし
ary.permutation(2).to_a
# 戻り値  [["1", "2"], ["1", "3"], ["1", "4"], ["2", "1"], ["2", "3"], ["2", "4"], ["3", "1"], ["3", "2"], ["3", "4"], ["4", "1"], ["4", "2"], ["4", "3"]]

Python

Python では itertoolsモジュールのcombinationsメソッドが 使えるようです。

import itertools
ary = ['1', '2', '3', '4']
combinations = itertools.combinations(ary, 2)
print(list(combinations))
# [('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]

permutations = itertools.permutations(ary, 2)
print(list(permutations))
# [('1', '2'), ('1', '3'), ('1', '4'), ('2', '1'), ('2', '3'), ('2', '4'), ('3', '1'), ('3', '2'), ('3', '4'), ('4', '1'), ('4', '2'), ('4', '3')]

参考

permutation (Array) - Rubyリファレンス

10.1. itertools — 効率的なループ実行のためのイテレータ生成関数 — Python 3.6.5 ドキュメント

docker image 全削除

はじめに

dockerでいらないimageが最近、増えてきた。 一括で削除する際、dockerに良いコマンドないかな〜と思って調べてみた。

コマンド

一番お手軽なのは、docker image一覧を出力して、xargsで出力した結果をdocker削除コマンドに引数に渡して削除すれば良い。

# docker images [options] : -a all-file , -q image IDのみ出力
# docker rmi: イメージ削除
$ docker images -aq | xargs docker rmi -f