明日こそ早起きする

興味あるものはなんでも

win7のvscodeからgitのbashを使う

仕事中にgit操作のためにいちいちAlt+Tabで探すのがめんどくさかったのでやってみた。

やることとしては下記の2step * cmd.exeが設定されているのでbash.exeに変える * 起動しやすいようにショートカットを変える(お好み)

とても簡単。というかMSのVSCode公式にすでに方法書いてある

https://code.visualstudio.com/docs/editor/integrated-terminal

gitを入れるときにインストールフォルダ変えたりとかしていないなら、
File -> Preference -> Settings で下記を設定すればいいだけ
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

あとはお好みでキーのショートカットを変える
{ "key": "ctrl+n", "command": "workbench.action.terminal.focus", "when": "editorFocus" }

terminalから抜けるときはいつもexitで抜けちゃう
toggleにしようと思ったけどできなかったのであきらめた

LinqのSelectManyを使って、ListでCountを持っているObjectの型をListにしてCount分増やす

なにを言っているかわからないと思うが、俺もわからない
下のコード見てどうにか理解してほしい

using System;
using System.Linq;
using System.Collection.Generic;

class Hoge{
    class Item{
        public string name;
        public int count;
    }

    static void Main(){
        List<Item> items = new List<Item>{
            new Item(){name = "水", count = 1},
            new Item(){name = "剣", count = 3},
            new Item(){name = "肉", count = 4}
        };
    }
}

Itemというクラスは名前と数をもっている
itemsというリストにはどこの誰かの持ち物が入っている

このitemsから名前だけをListにしたい
ただし、複数個(count > 1)持っている場合にはその数分Listに詰めたい
という状況

Linqを使わないで書くとこんな感じ

using System;
using System.Linq;
using System.Collection.Generic;

class Hoge{
    class Item{
        public string name;
        public int count;
    }

    static void Main(){
        List<Item> items = new List<Item>{
            new Item(){name = "水", count = 1},
            new Item(){name = "剣", count = 3},
            new Item(){name = "肉", count = 4}
        };

        List<string> itemsName = new List<string>();
        foreach(var item in items){
            for(int i = 0; i < item.count; i++){
                itemsName.Add(item.name);
            }
        }

        itemsName.ForEach(x => Console.WriteLine(x));
    }
}

結果で

水
剣
剣
剣
肉
肉
肉
肉

と出るはず。 これをLinqでやろうとすると多分一番簡単なのがこれ

using System;
using System.Linq;
using System.Collection.Generic;

class Hoge{
    class Item{
        public string name;
        public int count;
    }

    static void Main(){
        List<Item> items = new List<Item>{
            new Item(){name = "水", count = 1},
            new Item(){name = "剣", count = 3},
            new Item(){name = "肉", count = 4}
        };

        List<string> itemsName = items.SelectMany(x => Enumerable.Repeat(x.name, x.count)).ToList();

        itemsName.ForEach(x => Console.WriteLine(x));
    }
}

めっちゃ簡単
SelectManyとか初めて知った

CocoaPodsのuse_frameworks

はじめに

昨日記事投稿忘れていた。
PodでRxSwift入れようとしたときに、use_framework!入れろみたいなエラーがでた。
とりあえず入れたらpod installできたが、これはなにか気になった。

use_frameworks

参考: http://qiita.com/taketin/items/8264aeebc5a626c6d48f
上の記事を読んで英語わかる人はissue飛べばきっとすべてわかるんだろうと思う。

わかんないんで調べたらこの記事を見つけた。
参考: http://easyramble.com/cocoapods-use-frameworks.html

「Swift で書かれた Pods(ライブラリ)は、frameworks としてのみ統合できるので、Podfile に use_frameworks! の行を加えてね」とある。

なるほど。
swiftで書かれたものはすべてframeworkとして動くんですねー
それ以外のものはlibraryかframeworkどちらかなんですかね。

でもこれわざわざ指定しなきゃいけない理由ってなんだろう?
エラーでるくらいなら勝手に判断してくれればいいのにと思ったら、最新か次期versionでは指定しなくてよくなるとかなんとか。

ありがたや~

swiftはじめました

いまごろ

そろそろswift3がでるっぽいですね。
swiftって実は僕と同じ3年目なんですよね。
仕事も落ち着いてきたし、親近感がでてきたしで始めました

swiftを始めてすぐに戸惑ったこと

toの部分を_(under score)にすればto:さえ必要ないです。 ※ swift3.0以降では第一引数も上記のようになるらしい

  • まだ3年目なのに資料が豊富
    かなりコミュニティ大きいですよね。
    ホント助かります。

3年目になって

とうとうこの業界で3年目になった。
それなりに知識も増え、書くコードも仕事で使う言語は見れるようになってきたと思う。
だが、就職して間もない頃に思い描いていた3年目のスキルとは隔絶した差がある。

なので、少し色々挑戦してみようと思う。
とりあえず30日頑張ってみよう。
土日休日はお休み

技術ブログの記事で日付が表示されていないのは困る

記事の日付の重要性

記事に日付がないというのは説明しているソフトのversionが書いてないのと同じくらいの重さだと考えている。
日付が新しければその記事の参考優先度が上がるし、古ければさらにそれについて探すだろうから。

それで

今回nginxのことについて調べていた。
nginxは2004年からあるので、膨大な量の情報が出てくる。
その中に求めている情報が書いてある記事を2つ見つけたが、若干の相違があり、どちらを先に試そうか日付を見たのだが...
案の定片方には日付が書いてなかった。

そのため、もう一度その部分に関して調べることとなった。

調べる方法

最終更新日を調べるツールは色々あるみたいで、「記事 更新日 調べる方法」なんて打つと色々出てきたが、そのブログ全体の更新日を調べるという求めているものとは違うものだったり、ツールをわざわざ入れなきゃいけない面倒なものだった。

ふと思ったのはページの情報見ればわかるんじゃない?という至極単純なものに落ち着いた。
chromeなら右クリック→ページのソースを表示→そこでctrl+Fで検索で20なんて数字を入力すると大抵ひっかかる。

こんなことに20分程度もかかってしまった自分にちょっと残念になる\(^o^)/

pythonのfrom importでフォルダが認識されない

フォルダにも__init__が必要

同じ階層にあるファイルで、その.py中に__init__関数が定義してあれば、
from hoge import Hoge
でいいが、違う階層にあるファイルだと間にフォルダを挟むことになる。

例.

 main.py  
    tools  
      L hoge.py  

こんな構成の場合は、main.pyfrom tools.hoge import Hogeと書くことになるが、この時点ではtoolsを指定してもエラーになる。
toolsはフォルダなのに__init__が必要になる。

例.

 main.py  
    tools  
      L __init__.py  
      L hoge.py  

こういうふうに中身が空の__init__.pyというファイルを用意してやるとちゃんと扱えるようになる。

この方法が普通の方法なのか、はたまた裏ワザ的なものなのかpython3日目の私は判断できないのであった...

python奥が深すぎる

お試しJenkins

Jenkinsとpythonの連携をしなくてはいけなくなった。
とりあえずJenkinsとはなんぞや?

Jenkinsとは

CI(continuous integration)ツールらしい。
CIとは継続的インテグレーションということで、アプリケーションを作るときの工程短縮や、ヒューマンエラーを少なくするための習慣のこと。
そういった習慣を提供するよ!てきなものの一つがjenkins。

何ができるの?

自動化してのビルドやテストなどができるので、属人制(あの人がいないとむりだー)を減らせる
スケジューラーみたいなもの

とりあえず動かしてみたい

こことか見れば解決

Jenkinsチュートリアル初級編 | Knowledge Note | Developers AppKitBox

非常に簡単にJenkinsを使ってみるテスト - 雑記帳

その他参考にしたサイト

Jenkinsとチーム開発の素敵な関係 | geechs magazine

Jenkinsの使い方 ‹ 技術の犬小屋