TTerseでのリストとハッシュの扱い
リスト(配列)
# サーバ側 my $list_hoge = ['mon', 'tue']; # テンプレート側 [% list_hoge.0 %] # mon が表示される
ハッシュ
# サーバ側 my $hash_hoge = { mon => 1, tue => 1 }; # テンプレート側 [% hash_hoge.mon %] # 1 が表示される
テンプレート側で呼び出す際、キーに変数を使いたい場合
# サーバ側 my $hash_hoge = {'1' => 'mon', '2' => 'tue' }; # テンプレート側 [% SET key = 1 %] [% hash_hoge.$key %] # mon が表示される
リスト内に任意の値が含まれているかどうかを確認する
use List::MoreUtils qw/any/; my @list_target = ('my', 'chuno', 'blog'); if (any {$_ eq 'chuno'} @list_target) { # 何らかの処理を書く }
公開鍵によるSSH接続〜異なるユーザーで直接ログインする方法
作業手順
ローカル
公開鍵と秘密鍵の作成
$ cd ~/.ssh $ ssh-keygen -t rsa -b 4096 -f id_rsa_hchuno
リモート
hchunoに変身
$ sudo su - hchuno
公開鍵の設定
$ vi ~/.ssh/authorized_keys
ローカルで作成した公開鍵の中身を貼り付けて保存
#公開鍵の中身をクリップボードにコピーする方法
$ cat id_rsa_hchuno.pub | pbcopy
SSH関連ファイルの権限を変更
$ chmod 700 .ssh $ chmod 600 .ssh/authorized_keys
SSH設定ファイルの確認と変更
$ sudo vi /etc/ssh/sshd_config 以下のコメントアウトを外す #RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys
デーモンをリスタート
$ sudo /etc/init.d/sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
ローカル
サーバサイドエンジニアからiOSエンジニアに転身する案
発端
事あるごとにエンジニアのキャリアパスについて悩んではいるのだが、iOSアプリ開発エンジニアに転身するのはアリかもしれない…
今は(というよりキャリアのほとんどが)サーバサイドエンジニアなのだが、さすがにサーバサイド開発に飽きてきたこともあり違う道を歩んでみたいなーと漠然と考えていたら、上記に思い至った次第。
(仕事でPerl書いててもモチベーションが上がらない)
第一の分岐
- 企画系(非エンジニア)
- やってみたことはあるが、人間関係が面倒で性格的に向いてないなと痛感。そもそも「めちゃくちゃコレが作りたい!」という熱い想いも無いし…
- マネジメント(プロジェクトリーダー含む)
- エンジニアマネージャ的なこともやってみて、それなりにヤリガイは感じたもののコレも性格的に向いてないことを痛感し、そこからやらなくなった
- スペシャリスト
- 上記の理由からコチラを選ばざるを得ない
第二の分岐
- サーバサイド開発を極める
- インフラ方面に手を広げる
- Webフロントエンド
- JavaScriptは面白いと思うが、デザインをガッツリやらない限りそんなに変わらない気がする…
- 「Web」の需要があまり無いような…
- スマホアプリ開発に手を伸ばす
- 開発環境が整ってきて、お金をかけなくても学習可能
- サーバサイドエンジニアとしてAPI開発に携わったこと等が強みになる
第三の分岐
結論
…ということで少しXCode等を触ってみて「Hello world」ぐらいは試してみることにした。
そして「全然合わない」と思ったらソコで終了。
(特に失うものも無いし誰にも迷惑をかけないし、コレぐらい気楽で良いかと)
AirPods Pro購入
特別定額給付金10万円が支給されたこともあり、遂にAirPods Proに手を出した。
MacBook Pro等でも使いたいので、コレを期にOSをCatalinaにすることに。
iPhoneとの接続はびっくりするぐらい簡単で速かったが、他の機器に接続を切り替えたい時はそこまでシームレスじゃないなーという印象。
ノイズキャンセリングや音質はまずまず…
ただ、お値段が税込み3万円程度というのを考えると、もうチョットこの辺りは頑張ってほしいところ…
mapを使って配列をハッシュに変換する
# 以下のようなハッシュの配列(@hoge_list)があるとする [ { 'hoge_key' => 'hash1', 'hoge_id' => 2, 'hoge_name' => "hogehoge", }, { 'hoge_key' => 'hash2', 'hoge_id' => 3, 'hoge_name' => "gehogeho", }, ]; # mapを使ってハッシュのハッシュに変換 my $hoge_hoge = +{ map { $_->{hoge_id} => $_ } @$hoge_list }; # もしくは以下 my %hoge_hoge = map { $_->{hoge_id} => $_ } @$hoge_list; # キー順にソートしたい場合はリストにする my @hoge_hoge = map { $_->{hoge_id} => $_ } @$hoge_list; #変換結果($hoge_hoge) $VAR1 = { '2' => { 'hoge_key' => 'hash1', 'hoge_id' => 2, 'hoge_name' => "hogehoge", }, '3' => { 'hoge_key' => 'hash2', 'hoge_id' => 3, 'hoge_name' => "gehogeho", }, };
Scalaハマりポイント2019
JavaのgetResource()だと「ファイルの」パスしか取得できない
def resourcesDir :String = { val dirPath = getClass.getClassLoader.getResource("resources").toString } resourcesDir.toDirectory.exists // ⇒false
- こう書けば解決
def resourcesDir :String = { val file:File = new File(getClass.getClassLoader.getResource("resources").getFile) file.getAbsolutePath } resourcesDir.toDirectory.exists // ⇒true