ハッカーウォーズに出てきました。
そういえば最近ブログ書いてなかったなーと思い、ハッカソンに参加してきたので久しぶりに書こうと思います。
11月27-28でスローガンさん主催のハッカーウォーズに参加してきました。
今回のハッカソンでは、新しく以下の2つのことを試しつつハッカソンに挑みました。
- 付箋を用いたチケット管理
- githubのプルリクエスト機能を用いてレビュー
付箋を用いたチケット管理では、To Do、In Progress、In Review、Doneの4状態を作り管理しました。今回のチケット管理についてどう思ったかをメンバーに聞いたところ、以下のような感じでした。
- 誰が何をやってるのかわかるのがいい
- 残タスクがわかるのでいい
- どんどんタスクが右に移っていくのが気持ちいい
githubのプルリクエスト機能を用いてレビューした感じは以下のような感じでした。
- 各自作業してるとバグが出てるのに気付かず最後の最後で気づくことがあるのでほかの人に見てもらえるのはいい。
- 開発スピードが少し遅くなる。
付箋を用いたチケット管理に関しては、右に移っていくのが気持ちよかったのでこれからハッカソンに参加するときには積極的にやっていきたいと思います
プルリクレビューに関しては開発スピード自体が落ちているように思えるが、最後の最後にバグに気付いて修正する時間がないとかなるよりはましなので、メンバーによっては導入していこうと思います。一人でレビューしてるととにかくつらい。。。。
まぁ今回のハッカソンは賞とかはもらえなかったけど一年前と比べて成長を感じられたり、いろいろ試して成果があったし、楽しいいいハッカソンでした。
PHPで配列の結合
phpでデータベースから取得してきたデータをidをkey、nameをvalueとする連想配列に挿入するという処理を書いていました。その後、複数の同じ形式の連想配列を結合しようと思い、array_mergeを用いて複数の連想配列を結合しました。その処理をテストしたところうまくいっていたようだったのですが、実際に運用してみると問題が生じてしまいました。idとkeyが一致していないことがあったのである。
原因はphpのarray_mergeはkeyを自動的に1,2,3といったように振り直してくれるという機能でした。テストした時に用いたデータのidが規則的に1から並んでしまっているものを使用したのがまずかったです。テストする時には無作為なデータを用いなくてはいけませんね。
対処法としてはarra_mergeとか複雑なものを使わずにただ”+”で足し合わせればいいだけでした。
ファイルのダウンロード先の指定
サーバーからデータを出力して、ユーザーのpcに保存する処理を作成しているときに少し詰まったのでまとめ。
よくある処理としてダウンロードボタンを押すとファイル名と保存先を指定してダウンロードみたいな処理があると思います。それをサーバーから指定しようとしていたのですが、ブラウザの機能としてそれがあるみたいなのでわざわざサーバーから指定する必要ありませんでした。ブラウザの設定いじろうな。おわり
エンジニアが学ぶUI/UX講座
今日、外部講師の方に来ていただいき「エンジニアが学ぶUI/UX講座」と題して講座をやっていただきました。
参加人数は20人ほどで3サークル+友達が来てくれました。今まで外部講師の方に来ていただいてやった講習の中で最多人数になったのではないかと思います。宣伝頑張ったかいがありましたね。参加者の皆様、ご参加いただきありがとうございました。
今回のUI/UX講座は最近自分がUI/UX関連で四苦八苦していることが多いので自分からお願いさせていただきました。今回参加してくれた方たちに感想を聞いた所結構好評だったみたいなので開催した側として大満足です。今月の頭にさらっと決まって、短い間で講習資料を作成していただいた講師の方に大感謝です。
そのうちまた開催したいと思っているので、今回参加してくれた方たちはまた参加していただけると本当にありがたいです。なにかやってほしい講義とかあれば事前に言って頂ければ対応してもらえる場合もあるかも。
Javaの配列の挙動を調べてみた
JavaにはCとかC++のようなポインタと言われるものは存在しません。メモリの開放であったりはガベージコレクタがやってくれてしまうので、基本的にJavaではメモリを気にせずにプログラムを書くことができます。しかし、オブジェクトを別の変数に代入したりするときに参照渡しをしていて、同じ実体を複数の変数から参照することがあります。その時の挙動に自信がなかったため配列でその挙動を確かめてみました。
JavaではC、C++のように参照値を直接取得することができないため、ObjectクラスのhashCodeメソッドを用いて参照値を取得します。hashCodeを用いて参照値を取得するプログラムを以下のように書きました。
public class Main { public static void main(String[] args) { int[] num1 = {1,2,3}; System.out.println(num1.hashCode()); int[] num2 = num1; System.out.println(num2.hashCode()); int[] num3 = test(num1); System.out.println(num3.hashCode()); } private static int[] test(int[] num){ System.out.println(num.hashCode()); return num; } }
実行結果
366712642 366712642 366712642 366712642
結果として、配列を他の変数に渡したり、メソッドの引数、返り値として受け取っても参照値は変わりませんでした。このことから基本的にJavaでは配列の受け渡しには参照値を受け渡していることがわかりました。
合同LT会
大学で技術系の3サークル合同でLT会を主催させてもらいました。
鍵関連や開催時間の調整だったりグダッてしまったりした部分があり、参加者の皆様大変申し訳有りませんでした。いっそのこと、発表者が少ないのであれば開催自体を見合わせるなどの調整をすべきだったかもしれません。もともとLTをする予定ではなかったのにLTをしてくれたり、複数回LTをして時間を調整してくれた方々ありがとうございました。
しかし、発表内容自体は水素水LTだったり、バーコードLTだったり面白い内容が多く全体的に楽しい会になったのではないかと個人的には思っています。
次回以降開催する場合は今回の反省を活かしてスムーズな司会進行をしていけるようにしようと思います。今回参加してくれた方々本当にありがとうございます。次回以降も参加していただけるように願っています。