2018年10月19日金曜日

CoreDataでExternal Storage使ってたら死んだ話

久しぶりの投稿です。

問題発生

仕事でiOSアプリの受託開発をしているのですが、顧客から「iOS 12にアップデートしたらアプリが動かなくなった」と指摘がありました。
クラッシュダンプを見ていると、CoreDataにExternal Storageとして保存していたNSData?をForce Unwrapしたところ、nilになっているためFatal Errorという状態でした。

2017年5月26日金曜日

なるべくクリーンにrails newする

rbenv等でインストールしたてのまっさらなRuby環境に、なるべく無駄なgemを入れずにrails newを叩くための備忘録

2016年9月28日水曜日

ChainerでMNISTするまで

1. なるべく最新のPythonを用意する
2. pip install chainerする
3. 以下を実行



以前Chainer使ったときは学習の設定とかなんだかんだ面倒くさいところがあったけど、
MNISTはデータを直接取りに行ける + trainer使うと学習の部分を簡単にかけるので、こういうMNISTとかはかなり簡単にかけるようになった印象。

30行もあればMNISTの学習ができてしまうというのは、デモンストレーションとかでは非常に良いのでは?

2015年12月27日日曜日

ご注文はPythonですか??

Pythonを書くことになった。


理由

元々機械学習には興味があったが、最近Chainer然りTensorFlow然り、深層学習のライブラリが軒並みPythonで実装されているので、これらを利用するためにPythonを学ばなければいけなくなった。

Pythonに対する印象

最初見た時は、メソッドを書くときにいちいちselfとか書かないといけないのが辛かったけど、変数と関数の名前空間が同じなのは良い。強力なスクリプト言語の一つなので、これまでちょっと使っていたRubyと同様に、色々な作業をさせられそう。ただ、モジュールシステムが割りと複雑な印象を受けた。パッと見。

今後の方針

とりあえず本を数冊読みたい。「パーフェクトPython」とか、最近出た「実践Python3」あたり。
あとはGithubでトレンドに入っているソースを読んで勉強していきたい。

2015年4月12日日曜日

Javaの書きたくなさ

業務でおそらくAndroidアプリを書くことになるっぽいので、重い腰を上げてJavaを勉強し始めようかと思った。

なんというか、型推論が無いとかそういう部分も置いといて、検査例外とかそういうシステムのせいもあるけども、全体的に冗長な記法になりやすいような気がします。入出力とかでもBufferdReaderとかScannerとか出てきて、もっと簡単に書けないのかよっていう。

その点、JVMで動くJavaじゃない言語とかも割りと多い印象。

Java

JVMの基本、Java。Java8あたりではラムダ式とかも取り込んで入るけど、やはり後方互換を意識しているためか、言語そのものが書きやすい方向には変化していないような気がする。環境によっては他の言語とかも動かないことがあるらしいので、その点ではJavaが一番安定?

Scala

JVMで関数型プログラミング言語と言えばScala。Scalaは関数型プログラミング言語ではないという議論はさておき。型推論とかあるし、Haskellに比べると弱いかもしれないけど、関数型プログラミングの機能もある程度充実しているし、オブジェクト指向っぽくも書けるので、割りとやってみたさはある。コップ本は持ってるし。

Clojure

Lisp on JVM。イミュータブルなデータとSTMなんかの機能が特徴?とりあえず勉強中ではあるけど、Javaのエコシステムあまり詳しくなかったりとか、ビルドシステムがよく分かっていないので、あまり進んでいない。

Groovy

この言語、実はClojure、Scalaよりもあとに知ったんだけど、JVM上で動く動的型言語として有名らしい。Gradleという最近のJavaのビルドシステムとかでも使われているらしく、Javaのプロジェクトに携わるならやっておいて損はなさそう。

JRuby, Jython

RubyやPythonのJVM実装。それぞれの言語を利用していて、かつJava系のツールとかが必要になった時に。

Kotlin

最近知ったんだけど、Intellijで有名なJetBrainsが作った言語らしく、静的型の言語で、Javaよりも書きやすそう。Android開発にも普通に使えるらしいので、もしJavaが嫌いだけどAndroidやることになったときにいいかもしれない。

AltJavaと言われる言語は多いけども、結局はJavaのライブラリやJVM周りの知識とかは必要になってくると思うので、そういう点でJava自体もある程度勉強していきたい。

2015年3月27日金曜日

2015年3月14日土曜日

自分をダメにするのをやめよう

というタイトルの自己啓発とか誰かが書いていそうだけども。

これは今後の人生を作っていくにあたっての戒めであって、決意表明です。

 これまでの人生で、一体どれだけの時間を無駄にしてきたかと考えると、やはり恐ろしい物がある。小学生の頃は勉強せず遊んでいたし、中学の頃は勉強せず引きこもってたし、高校の頃はやはり勉強せず遊んでいた。高校の時に情報系の道を志した割には、5年経って(まともにプログラミングやり始めてからは2〜3年程度だけど)未だにまともにプログラムを作ったりしていないし、最後に完成させたソフトウェアって多分SDL使って作ったテトリスだったりする。去年のやつ。
 プログラマのバイトを初めて、情報系では実務の経験を積んでいるように見えるけれども、あまり会社で得られている経験が大きいものとも思えないし、バイトを初めてからめっきりブログもgistも書かなくなって、これは非常にまずい。
 最近37signalsに感化されて、単にエンジニアリングだけで勝負するよりも、一人のプログラマとして現実の問題を相手にビジネスしていかないといけないとは思ってはいるけど、そもそも自分の理想のエンジニア像っていうのは、何らかの分野で高い技術力を持っていて、常人の何倍もの生産性で仕事を片付けてさっさと帰るような人であって、今の自分がそこまで技術を深く習得出来る気がしない。
 ここ最近、というか高校のころからだけど、あまり計算機科学だったりITだったりに熱中したことがなくて、周りの人たちはハックに熱中してる分どんどん伸びていって、年下の人にも追い越されたりして、その部分がコンプレックスであったりはするんだけど、

 やっぱり面白いことは面白いんだよね。Ruby on Railsでどうやってアプリケーションを高速に開発するのかとか、豪華になったJavaScript周りの環境でフロントエンドをどう構築するかとか、どうやったら高速で快適なLinux環境を構築できるのかとか、どうやって立体形状とその名前を結びつけるのかとか。興味のある対象はあって、ただそれに払う情熱が足りていない。

 情熱が足りていないというのは知的好奇心が何か別のリソースに対して払われているということ。体力が何か他のことに使われているということ。何か本当はどうでもいいはずのことのせいで疲れているということ。反省してみると、さして意味はないけども惰性で続けていることというのは思いの外多くて、振り返ってみるとただネット見てたり、ただゲームしてたり、ただテレビ見てたりしている。時間の浪費はやめるべき。ゲームするのを悪いとは思わないけど、それが惰性で行っていることなら続けるべきではない。なんとなくやっていることを続けるよりは、今明確にやるべきだと思えることに注意を払いたい。

 自分をダメにするのはやめよう。(戒め)




それはそうと、最近ブログ書かなすぎなのでは…… 対外的に発表することがモチベーションにつながったりするので、なるべくブログを書く頻度を上げていきたい。
あとWinタブが欲しい。

2015年1月5日月曜日

今年の抱負とか

このブログ、気づいたら3ヶ月とか放置してましたが、そろそろ更新のペースを上げていきたいところ。
というか技術系ブログのつもりでやってるのに技術の話が全然無いのもアレ。

今年の目標

  • Railsある程度出来るようになる
  • Lisp書けるようにする
  • OSSとかにコミットしたい
  • バイトしてるのでバイトを6割くらいの力で頑張る
  • PC環境整える
  • TOEIC 700800点超え
  • 院試に向けて勉強する

去年の反省

去年は大学にも慣れてきてそろそろ情報系に本気だそうとは思っていたけど、結局具体的な目標も無くだらだらと過ごしてしまった。
本をわざわざ買ったのに読まないということが多すぎた。
そもそも時間の使い方が悪い。
今はとりあえずプログラマのバイトをしているので、技術力を上げつつ機械学習とか計算機科学の理解を深めていきたい。あと数学とかちゃんと勉強する。

2014年9月26日金曜日

2014年9月8日月曜日

Windowsを捨てよう

プログラミングを始めるとき、HSPとかVisualStudioとかある事を考えれば、確かにWindowsでは簡単にプログラミングを始める環境はあるとは思うけれども、今後プログラミングで仕事をしていく事を考えるなら、プロプライエタリなOSであるWindowsに頼りっきりになるわけにもいかない。(OS Xも同じですよ)
Windowsだと言語の処理系を入れるのにも四苦八苦するし。

そこで、ここではプロプライエタリではないフリーなOSとして、Linuxをインストールしてみる事を勧めたい。WindowsやOS Xがいつまでも存在するとは思っていないのと同じように、Linuxだって時の流れに消えていくかも知れないし、Unix系のOS自体が無くなってしまうことだって考えられるけれど、それでもフリーなOSを利用する経験を積んでおけば、WindowsやOS Xしか触ったことが無いよりは新しいOSに順応出来ると思う。

2014年8月22日金曜日

クイックソートを書く

Haskellのクイックソートが5行で書ける問題、結局あのコードってIn Placeで無かったり、Pivotingをしてなかったりするわけで、その部分が他の言語と比べて効率悪いとか言われたりするわけだけども、中には「Haskellでメモリとか効率気にしなくてもいいやろ」っていう人も居るわけで。
そんなんだったらD言語でもクイックソート短く書けるわっ。と思ったので、



実装はこんな感じで、Haskellで5行で書いたクイックソートと同じやり方で書いた。
Dは一行にいくつも文を書ける言語なので、どんな長いコードでも1行と主張することはできるけど、このコードは1文だし明らかに3行で書けてる。
まぁHaskellはこういうリスト周りの表現とか言語に揃ってるので、簡潔さで言えば負けてる部分はあるけども。

2014年8月13日水曜日

グラフ関係のコードいくつか

ようやく大学が夏季休業に入ったので、学校で使った離散数学の本読んでグラフ理論とオートマトンの勉強をしている。
グラフ理論の部分で出てきたアルゴリズムとかでコード書いたのでいくつか。

2014年7月17日木曜日

2014年6月11日水曜日

僕がプログラミング出来ないのはどう考えてもお前らが悪い

某勉強会以来、

パタヘネ読んでたらPDP-11のインタプリタ作ってました(テヘペロ

みたいなのが結構波紋を呼んでいるけど、ちょっと待って欲しい。

パタヘネって上下巻合わせて9000円するんです。

もう一度言う。

パタヘネって上下巻合わせて9000円もするんですよ。

TAPLも7500円くらいするし、とにかく技術書はどうしても高い。いや、高すぎる(もちろん利益とかの関係で分厚い本とか高くなってしまうのは仕方ない)

なので貧乏学生としてはどうしても図書館で借りるしか無いわけなんですけども、どうにも僕の通う大学は図書があまり揃っている感じではなくて、パタヘネが第2版しか置いてなかったり、機械学習関連の本とかもそんなに置いてなかったりとかする。そのくせプログラミングC#の第7版とか3〜4冊置いてあるのはもう意味が分からない。

バイトしないの?

逆に聞くけどバイトしてそれでいつプログラミングすんの?

早く東京とかIT企業いっぱいあるところに行ってプログラマのバイトとかしつつ好きなだけ技術書買えるようになりたい。

2014年4月15日火曜日

ネットワークスペシャリスト合格体験記

昨年の10月に、ネットワークスペシャリスト試験(NW)を受験し、合格していたので、その体験記を今更ですが書きます。

2014年4月14日月曜日

入学式はめでたい日何だから祝日として休めるようにすべき

最近、自分の子供の入学式に出席するため、自分が担任する新入生の入学式を欠席したという教師が問題になっているようだ。

2014年4月7日月曜日

2014年4月4日金曜日

Scala触ってみて思ったこと

Androidアプリが書きたくなり、しかし型推論すら無いJavaを書く気にはなれず、仕方がないので、オブジェクト指向&関数型なマルチパラダイムのScalaを覚えてみることにした。
一応参考書としてコップ本を買って読んでいるけど、まだ8章くらいまでしか読めてない。