CircleCIにSSH debugでログインする方法

Gakuです。

こちらの記事の続きです。

CircleCIへssh debugする方法を覚え書き程度に書きます。

まずはssh debug

circleCI上のビルド画面にある[Debug via SSH]タブをクリックし、その中にある[Retry this build with SSH enabled]を押します。
これでSSH接続が30分できる状態になるらしいです。

接続

Retry this build with SSH enabledを押した部分にsshの接続先が表示されていると思うので、
その情報とgithubに登録した秘密鍵で接続をかけます。

ssh -i ~/.ssh/github -p ???? ubuntu@??.??.??.??

これで接続できるようになるはずです(´・ω・`)

おわりに

ここ2日、SSHの設定しかしてねぇ(´・ω・`)
ここらへんの知識が甘いということですね。わかります(´・ω・`)

githubにSSH鍵を登録する方法

Gakuです。

CircleCIでSSH debugする際、githubにSSH鍵登録を行っておく必要があるとのこと。
んじゃ、githubに公開鍵登録すっか(*´﹃`*)
と思った矢先、はまったので、解決方法を覚え書き程度に。

設定方法

鍵の作成

下記コマンドで鍵を作成します。

ssh-keygen -t rsa -C "your_email@example.com"

メールは各自のものを入力下さい。
今回パスフレーズは入力せずに作成しました。

公開鍵の登録

githubにログインし、

[Settings]→[SSH and GPG keys]へ移動します。
んだら、SSHkeyが登録できるところへ遷移できるので、[New SSH key]を押します。
そしたら、先程作成した鍵の末尾「.pub」のファイルの中身をコピペして登録します。

これで設定完了です(*´﹃`*)b

エイリアスの設定

エイリアスも設定しておきます。
~/.ssh/configに下記を追加しておきます。

Host github
 13   User git
 14   Hostname github.com
 15   Port 22
 16   IdentityFile ~/.ssh/各自秘密鍵ファイル名

接続テスト

以下コマンドで接続テストします。

ssh -i ~/.ssh/作成した秘密鍵名 git@github.com

これでこんな感じで出ればOK(´・ω・`)

Hi gaku3601! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

ちなみにエイリアスを登録しているので、こんな感じでも接続できます。

ssh github

以上です。

おわりに

CircleCIの道は険しい。
ただ、設定方法がわかれば無敵になれそう(*´﹃`*)

そして金曜日はなかなかにしんどい。

デザインパターンはアンチパターンなのか

Gakuです( ゚Д゚)

最近、Go言語でシステムを一本作成し、「家宝は寝て待て!」状態でしたので、時間を持て余しておりました。
そこであまりにも暇だったので、GoFのデザインパターン23手を組んでみました。
それがこれです。
[blogcard url=”https://github.com/gaku3601/study-golang-design-pattern”][/blogcard]

Go言語が未熟なため、いろいろ試行錯誤が見えると思いますがあしからず。

さて、度々エンジニアの会話であがる「デザインパターンはアンチパターンであるか」問題ですが、少し考察してみたいと思います。

デザインパターンがアンチパターンであると主張する人の理由

1.最近の言語・フレームワークを使えば「デザインパターン」は必要がない

このように主張する人はいます。

確かにitaratorパターンなどはjavaであれば拡張for文、C#であればforeach文です。
itaratorパターンを理解せずとも、使用することが可能です。
また、FactoryMethodパターンでのDB接続なんかも(厳密にはFactoryMethodが使われているかは定かでないが、僕自身ならこのパターンを使用すると思うので)、フレームワーク上に組み込まれていれば「使用方法」を知っているだけで組むことができるはずです。

余程「大企業」でもない限り、各会社で「オレオレフレームワーク」を作成することはないと思われますし、業務を行う上ではこの主張は正しいと考えます。

2.わざわざ「デザインパターン」を勉強せずとも、普段の書き方で「デザインパターン」の何パターンかは実装している

このように主張する人はいます。

確かに、僕が今まで見てきた数少ない「業務システム」ですが、必ずと言って良いほどFacadeパターンが使われていました。
まぁ、オブジェクト指向を齧った人であれば自ずとFacadeパターンになると思うのですが、一応主張通り「デザインパターンを知らずともデザインパターンで実装している」という主張は正しいです。

業務を行う上ではこの主張は正しいと考えます。

3.デザインパターンで組んでいるコードは読めない人もいる

このように主張する人がいます。

確かに、デザインパターンと言わず、interfaceやabstractを使用し抽象度を上げるとコードを辿れなくなるため「いきなりコードが消失する」感覚に陥るはずです。
「システムはチームで開発するものです」「よって、プログラミング初心者でも読めるコードを心がけるべき」

業務を行う上ではこの主張は正しいと考えます。

反論

いや、まぁ、いいんだけどさ。

「それでいいの?」

って感じるわけですよ。
1の主張であれば「俺フレームワークなんて作らないし、今後も作る予定ないので。いいっす(*´Д`)」
そんな感じ。

2なんて典型的な「思考停止」している主張だし。
「Facadeパターン」しか使用してないってことは、それはデザインパターン23手の中の1手、つまり5%以下しか知らないわけだし。
良くそれで「デザインパターンの何パターンかは勉強せずとも書いている」と言えたものだなと。。。

極めつけは3ですよ。

「はい。3です!」

この主張する人は「デザインパターン」という言葉さえ知らない人が多いです。
読めないってwそれオブジェクト指向でさえ書いてねぇからw

おわりに

いろいろ書いてきましたが、確かに「デザインパターン」は古い技術であり、最近の関数型言語等々には合致しない点も多いかと思います。
ただ、今回Go言語で23手組んでみてGo言語での記述パターンの見通しが良くなったというか、気持ちよく書けるようになったのは事実です。

プログラミングにおいて
「書いてて気持ちいかどうか」
というのは非常に大切な要素だと思うので、結構鬼畜でしたが23手組んで良かったと思ってます。

デザインパターンをアンチ視する人もいることは事実です。
その際は「郷にいては郷に従え」精神でひっそり暮らします。

プログラミングをはじめたいけど、何をしたら良いのかわからない人へ

どうもGakuです。
プログラミングって何?って思ってる人はいっぱいいると思う。
なんか作ろうと思ったら、まずはやりたい言語の環境構築をしないとなんだけど、今回は環境構築なしでプログラミングに触れてみる。
対象の人はこんな感じ。

・プログラミングやりたいけど何なの?
・環境構築わからんけど、プログラミング触れてみたい。
・基本構文(´・ω・`)?

とりあえず、ファイル作ってみる

デスクトップにテキストファイルからプログラム.htmlってのを作る。
これだけで終わり。

git2

環境構築終了!

しいて言えば、拡張子をtxt→htmlにしたことだけ。(わかんない人は「拡張子 表示」でぐぐってね(´・ω・`))

プログラミング書いてみる

さっき作ったプログラム.htmlをメモ帳で開いてみる。
簡単なwebサイト作るために、以下のように記述。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
</html>

で、chromeのアイコンやIEのアイコンにファイルがなっている場合、ダブルクリックで起動!
Animation

はい。これでwebサイト完成しました!

プログラミングっぽいことしてみる

さっきの作ったファイルを以下のような形で修正する。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
<script>
alert("ababa")
</script>
</html>

script部分追加しました。ここにプログラミング書いていきます。
これを実行するとポップアップが出せるようになります。

プログラミングで演算してみる

さっきの作ったファイルを以下のような形で修正する。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
<script>
var x = 1
var y = 1
alert(x+y)
</script>
</html>

起動してみたらポップアップに1+1された2が表示されます。
簡単な電卓が作れちゃいます。

おわりに

これがプログラミングです。すごい簡単ですけどプログラムです!

「何にもできないじゃん!」

おっしゃる通りです。今の状態では何にもできません!
ただ、ここから基本構文やオブジェクト指向を勉強して、いろいろ作れるようになるのです。

プログラミングの道は果てしないので、今回やったことが楽しいと思える方はプログラミングを突き進んでみて、面白くないと思った人は、悪いこと言わないから勉強時間ももったいないし、プログラミングは触れない方が身のためだよって言っとく(´・ω・`)