Scalaいじり始めてからのコミットがこんな感じのPunch Cardにまとめられてました。
典型的な社会不適合者な感じ。
典型的夜型人間のコミットって感じ… pic.twitter.com/KuBMm8B6Pc
— 大学院進学後の転亡 (@naosuke2dx) July 8, 2015
Scalaいじり始めてからのコミットがこんな感じのPunch Cardにまとめられてました。
典型的な社会不適合者な感じ。
典型的夜型人間のコミットって感じ… pic.twitter.com/KuBMm8B6Pc
— 大学院進学後の転亡 (@naosuke2dx) July 8, 2015
こんばんは。なおすけです。
台風が沖縄に大集合らしいですね。
12日から14日までは東京出張なので、台風が来ないことを祈るばかりです。
研究はJavaを使ったアプリケーションを扱っています。
正確には、Javaを使ったアプリケーション"も"扱っているという感じですが。
2005年にプロトタイプが作られて、そこから10年間、諸先輩方が開発を継続していった秘伝のアプリケーションです。
さすがに一回綺麗にリファクタリングをした方がいいかと思いました。
あと、最近プログラム書くことから離れてたので、リハビリもしないとなという感じだったので…
というわけで、ちょっと気になってたScalaを使って書きなおして見ようと思いました。
作るべきものが明確なので、途中で投げ出しそうにないしいいですね。
Scalaとは、JVM上で動作するマルチパラダイムの言語です。
オブジェクト指向の特徴と、関数型の特徴を統合しているらしい。
現在のバージョンは2.11.6だそうで。
特徴としては、
(´・∀・`)ヘー
実務としては、Twitterがバックエンドを2009年にRubyからScalaに移行したり、 FoursquareがScalaとLiftフレームワークを利用してたり、LinkedInも使ってたり、それなりに利用されてるらしいです。
この4つが適当な割合をもって並んでいます。
Javaっぽい書き方しかまだ出来てないですが、Javaに比べてやっぱり書きやすいし読みやすいです。
例えば、配列の走査について、Javaだと
int[] array = new int[] { 1, 2, 3, 4, 5 } // 添字を利用したループ for ( int i = 0; i < array.length; i++ ) { System.out.println(a[i]); } // 要素を直接取り出すループ for ( int e : a ) { System.out.println(a[i]); }
みたいなのが、Scalaだと
var array = Array(1, 2, 3) // 添字を利用したループ(Scalaは非推奨) for ( i <- 0 until a.length ) { println(array(i)) } // 要素を直接取り出すループ for ( e <- array ) { println(e) } // 要素を直接取り出すループ(こっちでも可) array.foreach(println)
みたいな感じ。割と個人的には読みやすかったです。
Javaっぽい書き方で、とりあえず既存のシステムを書き直そうと思ってます。
その後、再度リファクタリングもかねて関数型っぽく書いてみようかなと思います。
その前に関数型の勉強でHaskelやりそうだなあとふと思いました。
こないだ誕生日でしたので例のアレお願いします。
週に1回はまともに記事を書いていきたいと思います。なおすけです。おはようございます。
月ごとの総括書いてる人がいたので、自分も書いてみようかな、と思いました。
これがいつまで続くかはわかりませんが…w
先月ほどではないが、今月も前半までは忙しくてずっと走り回っていた感じ。
スケジュールに落ち着きがほしいなと思います。
論文執筆が大変でした。
研究で開発しているシステムに新機能を乗せる内容で、どういう機能がいいかという話を顧客(担当教官)と執筆前に話し合って、これが激アツだったです。
まあ、これで卒論の方向性などが大体決まったので、あとは9ヶ月後くらいのゴール向かって実装評価していくだけです。(これが大変なんだけどね)
院試の勉強も周りより少し遅目ですが始めました。やってるとそれなりに記憶が戻ってくるので、復習大事だなと思いました。
あと、過去の授業資料を残してないのが痛かったです。後輩各位は気をつけてください。
今月はだいぶ楽でした。先月がかなりきつかったんですが。
東京出張と書いてますが、特に作業があったわけではなくて、あっちの会社の方との会議がメインでした。
東京出張の土はオケのコンサートでした。
オケでやってた曲はシューマンの1番とリムスキー=コルサコフのシェヘラザード。まあ有名どころでしたがよかったです。
日曜も、のんびりブラブラと。行きたかったアニメの聖地も行けて、いいリフレッシュになりました。
それ以外の趣味はそんなにしてないかな。最近話題になってるイカのゲームはハードウェアが無いので買えないし。
8月末にDQ8の3DS版が出るし、それは買おうと思ってます。
あ、アニメですが、今期は4つくらいみてました。きんモザ終わって難民になりかけました。
響けユーフォニアム? 古傷をえぐられてる気分になるので見てません。
最近、某提督業に復業しました。作業の合間にぽちぽちやってます。
院試で爆死しそうで怖い。
そういえば、例のアレ晒しておきますね。
某氏から、プレゼントをもらいました。
買わないとと言いつつ買ってなかったルームウェアとサンダルです。
感謝感謝。
お久しぶりですなおすけです。
記事のドラフトはいっぱいあるのに完成させてません。
月に1回東京に行っていて、アニメの聖地を巡っているので、写真がいっぱいあります。
例のごとく、そのうち記事書きます。3割くらいしか下書きしてないけど。
というわけで、今日(昨日)参加しました。
結果は3問完答で372チーム中119位。まあまあだった感じがあります。
ちなみに去年は1問完答で326チーム中199位。結構上がってますね。
サークル内では2位でした。なんとか部長の面目を保つ事が出来ました(汗)
以下、雑感などをつらつらと。
ただ、解答内容を書いていいのかわからないので、その辺は伏せておきます。
チームは後輩2人(学部3年)と組んでました。
A問題は後輩にまかせて、自分はB問題を紙に解いていました。
後輩はA問題を30分から40分くらいで解き終わって、自分にバトンタッチ。
自分はB問題を40分くらいで解きました。
自分がB問題を解いている間は、後輩はC問題の問題を読んだりして待機。
1時間ちょっと経過した頃から、C問題に取り組み始めた感じ。
C問題は後輩と協力しながらカチャカチャと。
途中1回、解答コードの全消しをしましたが、終了5分前に何とか解答成功。
後から後輩と話したのですが、お互いに任せた部分に関しては、実装に関することは一切なにも言わなかったのが良かったのかなと。
自己主張をする(そういう意味では)とがった人たちが多いサークルなので、珍しい展開じゃないのかな、と勝手に思ってマス。
例年、7問の出題だったのですが、今年はなぜか8問でした。
ICPCはもともと1問は全チーム解けるように問題が作られているらしいですが、
色々と見ていると、2014年度の予選は1問目が難しかった、とかレビューが有りました。
その影響もあったのか、今年のA問題は易化していた感じがあります(俺は解いてないけど)。
後輩も簡単だと言っていました。
B問題も結構簡単だったんじゃないかな、と解いてると思いました。
あんまり言ってるといっぱい解いた人に刺されそうな気がするのでこの辺でやめときます()
最近論文を書くことが多くて、あんまりコードを書いてなかったのですが、何とかなって一安心です。
たまにはコードも書かないと、とは思ってます。
あと、来週には大学院の入試があるんですが、そっちの進捗がよろしくないです。やばい。
参考リンク
といっても特に何か書くわけではないです()
ネタはあるので、また更新をお待ちください。
__________ <○√ ∥ くく しまった!今は性の6時間だ! オレが止めているうちに耳を塞ぐんだ! 早く!早く!オレに構わずリア充から逃げろ!
この記事はSLP KBIT AdventCalendar2014 24日目の記事です。
Titaniumとは、原子番号22、元素記号はTiの元素です。地球を構成する近くの成分として9番目に多い元素として有名ですね。
酸化物は非常に安定しており、空気中では不導態となるため、白金や金とほぼ同等の耐蝕性を持っています。
これを使って聖なる夜を過ごす方法について簡単に書きたいと思います。
Titaniumとは、Appcelerator社が提供している、JavaScriptでiOS/Android/BlackBerryのネイティブアプリを開発することができる開発環境です。
プラットフォーム別に言語をわけて書く必要がなく、また、Webアプリケーション開発でおなじみな言語ということで、CEM、GMV、ETR関係なくモバイルアプリケーションが開発できるというわけです。
あ、ただしアプリのビルドにSDKが必要なので、WindowsではiOSの開発はできないです。怒るならAppleを怒ってくれ。俺は悪くない。
基本的に、Objective-C
やJava
で開発されたアプリができる処理のほとんどが実装できます。
具体的には
などなど。とても便利。
ただし、3Dゲームのようなものを開発するには余りむいていないです。
あと、メモリ管理の実装をすることが出来ないです。なので、デバイスの性能を100%使いたいという場合は、Titaniumは向いてないです。デバイスそれぞれ用にコード書いてください。
実際にはこんなかんじです。
/ this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open();
これを実行すると、
こんなかんじにアプリが実行されます。
ちなみに、Appcelerator社が公式にKitchenSinkというサンプルアプリケーションが公開しています。
基本的な機能は実装されているので、これを見るとだいたいの問題が解決します。
CoffeeScriptを使った開発も当然可能です。
Rubyとか使っている人にはこっちのほうが馴染みやすいと思います。
あと、IDEを使わず、コマンドラインで開発をすることも出来ます。詳しくはググってください。
モバイルアプリケーションも楽しいですよ。
で、明日は誰が書くの()
参考文献