エンジニアリングとお金の話

都内で働くエンジニアの日記です。投資と技術の話題がメインです。

【技術】swiftを久しぶりに書いた

とある事情でiphoneアプリを作成する必要があり、久しぶりにswiftを書いた。その際に学んだ事をメモ。

・文字列の数字を全て合算する方法

//文字列12345を全て足した結果の取得方法
var num = "12345"

//文字の配列に一旦変換し、その後map関数にてString型→Int型へと変換する
 let tArray = Array(num.characters).map{Int(String($0))!}

//上記配列をreduceにて合算する
 let tSum = String(tArray.reduce(0){(num1,num2) -> Int in
  num1 + num2
 })

・全ての値が数字か確認する方法

var num = "12345"

//正規表現にて判定
let predicate = NSPredicate(format: "SELF MATCHES '\\\\d+'") 
if predicate.evaluate(with: tid.text){
   print("数字")
}else{
   print("数字以外")
}

【技術】Xvimが動かなくなったらすること

Xcodeをアップデートすると毎回XVimが動かなくなり、その都度なんでだろうと思っていた。原因を調査していたらXVimのページ書に理由が書いてあった。

  1. Why XVim may not work on a newly released Xcode version?

Xcode releases have different UUIDs, to make any Xcode plug-in work, the UUID that the plug-in is using must be updated to match >Xcode’s. Usually this takes us less than a day, but you can also do it yourself.

ようは、Xcodeのアップデートを行った際は、プラグインのUUIDを更新する必要があるという事である。なるほど。

という事で、XVimが動かなくなったら以下のコマンドを実行しましょう。

sudo codesign -f -s XcodeSigner /Applications/Xcode.app

【技術】kerasのnp_utils.to_categoricalについて

ディープラーニングの勉強を最近はじめた。手始めに評判がいいkerasを使用している。

参考にしているサイトは以下のサイトでひたすら写経している感じである。

www.procrasist.com

その中でMINISTの求め方について以下のコードが記述されている。

from keras.datasets import mnist
from keras.utils import np_utils
(X_train, y_train),(X_test,y_test) = mnist.load_data()
X_train = X_train.reshape(60000,784).astype('float32')
X_test = X_test.reshape(10000,784).astype('float32')
#[0,255]の値を[0,1]に正規化
X_train /= 255.0
X_test /= 255.0
# 1 of Kのベクトルに変換
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)

ministデータを読み込んで、0 OR 1に正規化しているのだけど、np_utils.to_categoricalで行っている1 OF Kのベクトルに変換がよくわからなかった。調べてみると以下の記事を発見。

may46onez.hatenablog.com

Kerasはラベルを数値ではなく、0or1を要素に持つベクトルで扱うらしい つまりあるサンプルに対するターゲットを「3」だとすると[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]みたいな感じにしなければならない。

np_utils.to_categoricalを使用する事により、ラベルをベクトルに変換出来る。今回のコードは

y_train = np_utils.to_categorical(y_train, 10)

となっているが、第一引数がベクトルに変換したいラベルで、第二引数がベクトル配列の個数となる。今回は0〜9の範囲なので10個の配列が必要となる為、10を設定している。

【投資】最近気になる投資について

最近、新しい投資対象として仮想通貨やソーシャルレンディングが注目を浴びている。

今年はどちらかに投資を行いたく様子を伺っているが、中々踏み込めずにいる。。

多分自分の中で調査と検証が足りない事が自信を持てない原因だと思う。ただ、仮想通貨についてはボラティリティが高すぎる為、どうしてもギャンブル要素が高い気がしてならない。そもそも現在の価値が安いのか高いのかも良く分からない状態である。まだまだ、投資を行うには先が長い気がする。

なお、ソーシャルレンディングについては要は金貸しである事から何となくイメージが湧く感じである。金利水準が高いものが多く、正直心が揺さぶられる商品が多数ある。ただ、元本が保証されている訳では無く、歴史も浅い業界なので始めるとしても少量の金額から初めてみる予定である。

6月中にはどちらかに投資を行いたいと考えている。株式投資以外の武器として知識を深めて行きたい。

【お得】無料でVPSサーバを持つ方法

自分が好き勝手できるサーバがあると非常に便利である。ちょっとしたサービスの公開やハッカソンに参加する際に使用するなど活躍の場は多い。

最近はVPSサーバを手頃な料金で契約する事ができるが、大体維持費が月に1000円ほど掛かる。年で換算すると1万を超える出費である。サーバ契約したいけどそんなに使う訳でも無いのでという理由で躊躇してる人が多いのでは無いかと考える。

続きを読む

【感想】スタートアップ思考で考えるエンジニアのキャリアについて

2月17日に開催されたデブサミ2017に参加して来た。

event.shoeisha.jp

機会学習の話や組織運営の話など色々な話を聞く事が出来たが、一番インパクトが大きかったのは馬田 隆明氏の「逆説のキャリア思考」である。ちなみに、同じ時間帯にpythonに関する公演もあったので非常に悩んだが、この講演を選んで正解だった。

続きを読む

【技術】会社の端末を理想の開発環境にしてみた

自宅ではmacを使用して開発を行っているが、会社ではwindows端末が支給され使用している。基本vimpythonが入っていれば開発は行えるが、自宅での開発と比べると使いづらく不満を感じていた。

ちなみに、自宅では以下の開発環境を使用している。

ターミナル:iterm2
OS    :macOS Sierra
シェル  :zsh
エディタ :vim8
言語   :python3.5

続きを読む