【読書感想】いちばんやさしいGit&GitHubの教本
育休ボケでGitをだいぶ忘れてしまった私。「とりあえずpullするんだっけ?」と、もはや生中との区別もあやしくなっていたそんな時に @syobochimさんと @ihcomega さんが執筆された「いちばんやさしいGit&GitHubの教本」をいただきました。
いちばんやさしいGit&GitHubの教本 人気講師が教えるバージョン管理&共有入門 (「いちばんやさしい教本」シリーズ)
- 作者: 横田紋奈,宇賀神みずき
- 出版社/メーカー: インプレス
- 発売日: 2018/12/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
一言で感想を述べるならば
やさしい
さながら風邪をひいた時に食べるおうどんのようにやさしいです。
ここがやさしい「いちやさGit本」
はじめにリポジトリの説明から入ります。ローカルとは?リモートとは?も説明されます。やさしい。
ワークツリーからステージングへ、そしてリポジトリへという流れのあと、ブランチを使った開発に入ります。一つのブランチでの説明のあとに複数のブランチとなり、ひとつずつ丁寧にステップアップしていきます。
Git運用での最難関(?)、コンフリクトについては一章まるごと使って解説されています。
最後にOSSへの参画について書かれています。ここは私自身未経験の部分なので、ほほう〜と興味深く読みました。
また、実際の開発を想定したストーリーベースで書かれているので、「間違えてコミットしちゃった」や「先にバグ対応のブランチをリリースしたい」とかどの現場でも起こりそうなケースについても書かれています。ありがたい。
- プルリクのコメントってどんなことを書けばいいの?
- ブランチはどのくらいの単位で作ればいい?
これらの疑問には正解はありませんが、実際に開発していると悩むポイントですよね。
- プロキシサーバーを経由してリモートリポジトリに接続する方法
- .gitignore ファイルのような . で始まるファイルを作る際の注意
読みながら「あるある〜」とうなずきました。まさにバファリンを超えるやさしさ成分。
やさしさに包まれすぎて目に映るすべてのものがコミットメッセージに見えてきます。
こんな人におすすめしたい
- 今年こそGitを始めたい
- 雰囲気でGitを使っている
- コマンドは使えるけれど仕組みも理解したい
- やさしさに飢えている
『ドメイン駆動設計のためのオブジェクト指向入門』で発表してきました
増田さんが「亀岡温泉に行きたい」とおっしゃったので京都になった。
会場が見つからなくて、すんでのところでガレリア亀岡になりかけた。
それはそれで面白かったかも。
直前に補欠から繰り上がった方まで全員参加いただいて、とても盛況な場になったと思う。
ご参加いただいた方々、増田さん、本当にありがとうございました!
フロントエンドはDDDの夢を見るか
- タイトルつっこみなしで寂しい
- JavaScriptのところが一番悩んだ
- DDD初実践のよいふりかえりになった
発表後、リアルやネットで色んな意見がいただけてとても嬉しかった。 中でも多かったのが以下の2つ。
TypeScript使わないの?
「ユーザー定義型が作れないとDDDは無理じゃない?」という意見を複数の方からいただいた。まったくそのとおりだ。
導入"できなかった"理由は一つ、導入を考えたタイミングで、Gradleに組み込むためのnode.jsのプラグインが死んでいたのだ。
すでに開発は中盤に入っていて、クライアントさん、デザイナーさんそれぞれがリモートでプロダクトの開発・検証を進めていた。
この状況でbootrunでまるっと起動できる開発環境を捨てたくはなかった。
同じ理由でsassのコンパイルもnode.jsではなくgemを使っていたのだが、後日今度はそのgemが失踪した。
フロントエンド周りの開発環境マジやばい。パない。こわい。
ビューモデル作らないの?
今回の開発ではあえて「ビューモデル禁止縛り」していた。
ビューモデルは便利なのだ。ともすれば、ドメインモデルにやらせるべき仕事がビューモデルに染み出しそうになる。そこを適切に設計できるか、DDD未経験だった当時の私には自信がなかった。
言わばDDD養成ギプスとしての「ビューモデル禁止縛り」だった。
といっても、発表資料中にもあるように、要所要所でそれっぽいクラスは作っていた。レイヤーとしてビューモデルは作らなかった、というのが正しい。
余談
最大32名の部屋に対して30名募集し、おかげさまであれよあれよと申込みいただいたあとになって、ある重要なことに気がついた。
登壇者(3名)を数に入れてなくない?
でもまぁ、なんとかなるか〜と挑んだ当日の結果…
イスが足りなくなったので @s_kozake さんにまさかの立ち見いただいています!ごめんなさい! #kandddj
— 全力バタンきゆーん (@yukieen) 2016年3月5日
こざけさん、本当にごめんなさい!そしてありがとうございました。
VPC上のELBにsubnet が設定できない
エラー
AWSでELB(Elastic Load Balancer)をCREATEしようとすると、以下のメッセージが出た。
At least one subnet must be specified for a VPC load balancer.
(VPCロードバランサーには少なくとも1つのサブネットが必要です)
それならということで、一つ前の画面に戻り「Edit Subnets」から
設定したいサブネットを選択するも
元の画面まで戻ってくるとアレ?選択したサブネットが反映されていない。
解決策
「Create Load Balancer」の最初の画面、「1.Define Load Balancer」で"Enable advanced VPC configuration"にチェックを入れる。
すると、作成手順に「3.Select Subnets」が増えて
CREATE手前の画面でも設定が確認できるようになる。
作成成功
どういうこと?
デフォルト VPC での基本的なロードバランサーの作成に上記でチェックした"Enable advanced VPC configuration"の説明がある。
[Enable advanced VPC configuration:] オプションでは、独自のサブネットを指定できます。このオプションは、独自のサブネットを作成済みでデフォルトサブネットの代わりに使用したい場合に選択します。
つまりこのオプションをONにしておかないと、デフォルトサブネットが設定される仕組みだった。私はデフォルトサブネットを削除していたので、このような挙動不審におちいってしまったらしい。
でもこれManagement Consoleのバグっぽい気がするのでそのうち修正されるかも?
インスタンス作るときには「デフォルトサブネットがないのでサブネット選択必須ですよ!」って警告でるし、同じようにしてくれればいいのにな。
関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会
関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会
JavaOne 2014 サンフランシスコの最新レポートについて
@yoshioteradaさん
#てらだよしおがんばれ でおなじみ、国民的エバンジェリストの寺田さんです。今回ハッシュタグつぶやきそびれた…
CREATE THE FUTURE Java
企業主体で先導してきた時代から、コミュニティの活性化により変わってきているようです。個人的に気になったのは@jyukutyoさんのこの発言。
関ジャバは正式にはユーザグループではないんだろうなあ。なにか申請的なこととか認定して貰う必要があるのかな(知らなかったりする #kanjava
— Koichi Sakata (@jyukutyo) 2014, 11月 22
関Java、JUGs入り?
Lambda
ゴールドマン・サックスが自社で開発したコレクション・フレームワークをLambdaに置き換えて9%のコード削減に成功したそうです。もともと置き換え想定で実装していたらしいですけど。あとで調べたらこのあたりに記事(pdf)がありました。
Duke 2014 デロリアンのデモ動画
基調講演でデモされたJava SE, ME, EEすべてを駆使してJavaで構築したドライブシミュレータ…もといデロリアンの動画です。
始めは動かなかったらしく、途中でリブートされたとか。
作っている人楽しかっただろうなー
Advanced Management Console (AMC) 1.0
- 企業システムにおけるjava Applet, Java Web Start の利用状況の収集
- アクセス制限をかけられる
- 一部のアプリケーションのみ古いJREで動作させられる
私は業務アプリケーションエンジニアなので、将来的に使うこともあるかも?とちょっと興味をそそられました。利用にはライセンス料が必要とのこと。ランニングコストが気になります。
JDK Enhancement-Proposal
「Javaの今後についてはJEPを見てね!」という話に、さくらばさんから「Open JDKだけだよ」というツッコミが。
JEP 182:Policy for Retiring javac -source and -target
javacには実行バージョンと対象バージョンを指定できるオプションがあるのですが、ここでの話題は「JDK 9では1.5/5は実行できなくなりますよ」とのこと。"one plus three back"…三世代前までしかサポートせんよってことですね。
Java EE 8
JSR366で仕様策定中。
アピールポイントに「かんたん開発」というワードが上がっていましたが、日本には「かんたん」「らくらく」「超高速」と聞くとトラウマがよみがえるエンジニアもいるので、ネーミングは要検討ではないでしょうか。
"かんたん開発"に拒否反応が出るワタクシ #kanjava
— irof@Javarista (@irof) 2014, 11月 22
Java SE 7
- 2015年の4月に死にます
- 知ってた
学生がJavaOneに初参加して得たもの
@bitter_foxさん
いつも発表を拝見するたび生きるのが辛くなる学生さんです。最近、OpenJDK Project Lambda の Authorにジョインされました。おめでとうございます。『Javaエンジニア養成読本』にサインをいただきました。ありがとうございます。なんかもうまぶしすぎてお顔を直視できない。
Java
- ニッチなJavaのセッションに出会える
- 豊富なセッション数〜自分の興味がある分野のセッションがかならずある!
JEP 222: Java Read-Eval-Print Loop (REPL)
なんとJavaにREPLが
JEP 225: Javadoc Search
JavaDocのサーチ機能が強化。HTML5が使用できるようになるらしいです。これは楽しみです。
日本人
- 5日間行動をともにすることになるので、日本にいるときより深く交流できる
- 毎晩開催されるパーティーが楽しい
OracleOpenWorld/JavaOne
じんさん&岡本さん
- ハンバーガー、ハンバーガー、ハンバーガー
- あとカニ
写真が多く、見ていて楽しかったです。5日間なにを食べて過ごすの?どんなとこで寝るの?そういう疑問がわかりやすい発表でした。
OOWの様子が見られたのも良かったな。
The Good Parts of JavaOne
@tomo_taka01さん
2年連続、2回目の参加となるともたかさん。
英語難しい!と言いながら、現地でめいっぱい交流されている姿勢には頭が下がります。いつも発表資料がJavaFX製なのもすごい。
- 英語難しい!セッションハードル高い!
- でも色んなエンジニアと交流できるのはとても楽しい
- 一人で参加している人も多いので、とりあえずこちらから話しかけてみる
- ネイティブスピーカーでない人も多いので、片言の英語でも相手してもらえる
- きっかけは「Where do you from?」や「May I interrupt you?」(ちょっといいですか?)
JavaOne 2014 では Java SE について何が語られたのか
@skrbさん
日本で唯一のJava チャンピオン&スイーツ王のさくらばさん。
Project Valhalla
『ジェネリクスにプリミティブ型が使えるようになるよ』という話です。
List<int> list = new ArrayList<>();
これが書けるようになる。
実装はまだまだ先に(Java SE 10以降?)なりそうですが、ゆくゆくはプリミティブ型に特化したクラスは不要になるかも。IntStreamとか。
- Value Types
オブジェクト型の配列を作ると配列にはオブジェクトへの参照が格納されます。これをオブジェクトを直接格納することでヒープメモリを節約しよう、という試み。
実装イメージは
value class Point { final int x; final int y; }
こんなかんじですが、「valueを予約語にすると多くの開発現場で悲鳴があがるであろう。実際はvalue以外になるんじゃないか」と、さくらばさん談。
個人的には使いどころが思いつかないです。100万個を超える要素を配列に格納しなければならなくなった場合、まず自分の頬を殴ってから設計を見直します。
Project Panama
ネイティブコードをコールするには、JNI→JNAと来てJNRが実装されつつあるようです。JNAに比べると10倍速いらしいです。
GitHubはもう上がっているとか。
Project Jigsaw
Javaのモジュールシステム化を実現し、依存関係をより柔軟にコントロールできる仕組み。今まで固定販売だった幕の内弁当のおかずを、量も種類も好きに選べるようなかんじです。
言わずもがなJavaのスペックリード、Mark Reinholdさんがチーフアーキテクトです。
資料に写っていたJDKの依存関係図は、見ているだけで不安定な気持ちになりました…
Java SE 9には入る!と信じているのですが、だいじょうぶかな…ともあれ、9で一番楽しみにしている実装です。
いろふさんの来年を考えてみる
こんにちは。いろふ型駆逐艦12番艦のゆきーんです。
これはいろふ Advent Calendar 2013の24日目の記事です。
前の日は@hajikamiさんのirof history i18n 対応への第一歩でした。
およそ1年ぶりの記事ですね。私のブログはいろふ Advent Calendarを書くためだけに存在しているみたいですね。まぁ良いでしょう。
2013年のいろふさんをふりかえる
いやぁ、今年もいろふさんは大躍進でしたね!
そんないろふさんの来年とおなかの調子が気になりますよね?
そこでご用意したのがこちらのLirofe Gameとなります。
Lirofe Gameとは?
ライフゲーム + irofさんな融合合体型未来感覚セル・オートマトンです。
何はともあれご覧あれ。
いかがでしたでしょうか?
飛び交うグライダー、花火のようなパルサー…どれもこれもいろふさんの平穏無事な2014年を表していましたね。
これで来年も武運長久まちがいなし!
おまけ
綺麗な多重配列だろう…手書きなんだぜ…
いろふさん絵描き歌
いろふ Advent Calendarの12日目担当、ゆきーんです。
前日は@masafumi_ohtaさんのI don”t know ‘irof-san’ but I know ‘roifadm’.(Just kidding for Japan Java UG :-p)です。
歌います。
これっくらいの♪canvasにっ♪
var canvas = document.getElementById('irof'); if ( ! canvas || ! canvas.getContext ) { return false; } var ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.lineWidth = 5; ctx.fillStyle = "#FFF"; ctx.strokeRect(0, 0, 300, 300);
ぐるっと輪郭ちょっと描いて♪
ctx.beginPath();
ctx.lineWidth = 10;
ctx.arc(242,250,117,172 * Math.PI / 180, 214 * Math.PI / 180,true);
ctx.stroke();
ふっきだっしはっ♪ベッジェきょっくせんっ♪
ctx.beginPath(); ctx.moveTo(50, 30); ctx.lineTo(153, 30); ctx.arc(153, 60, 30, 270 * Math.PI / 180, 90 * Math.PI / 180, false); ctx.lineTo(105, 90); ctx.bezierCurveTo(105, 90, 90, 105, 129, 141); ctx.bezierCurveTo(90, 135, 66, 120, 81, 90); ctx.lineTo(57,90); ctx.arc(50, 60, 30, 90 * Math.PI / 180, 270 * Math.PI / 180, false); ctx.stroke();
点、点、点、点、つっぶやっいて♪
ctx.beginPath(); ctx.fillStyle = "#000"; ctx.arc(51, 60, 5, 0, Math.PI * 2 ,true); ctx.arc(84, 60, 5, 0, Math.PI * 2 ,true); ctx.arc(120, 60, 5, 0, Math.PI * 2 ,true); ctx.arc(154, 60, 5, 0, Math.PI * 2 ,true); ctx.fill();
本物
座標計算には@kawakawaさんのExcel方眼紙の世界にいろふさん(@irof)をご招待してみようを参考にさせていただきました。
やはりExcel方眼紙は素晴らしいですね!
明日は@bufferingsさんです。
SQL Server 2005 エラー番号
環境
- SQL Server 2005
エラー番号
- 一意エラー:2627
- ロックエラー:1222
例(VB.NET Framework2.0)
Try Dim dao As New SampleDao dao.insertSample() Catch ex As SqlClient.SqlException If ex.Number = 2627 Then '一意エラー Console.WriteLine("一意エラーが発生しました。") ElseIf ex.Number = 1222 Then 'ロックエラー Console.WriteLine("対象データにロックがかかっていました。") End If Throw ex End Try
エラー番号を調べる
SQL Serverのsys.messagesを参照する(全67941件,うち日本語7549件)。
SELECT * FROM sys.messages WHERE language_id = 1041
"1041"は日本語のlanguage_id。英語は"1033"。