Android(Java)でXMLをParseする #65
今日やったこと
AndroidでXMLをParseする
昨日までJavaScriptを書いていたのに今日は突如としてJavaです。クソな方のJavaです(炎上)
学校の講義の課題でカンタンなAndroidアプリを作っています。
カンタンとは言ったものの開発経験がほぼ皆無なので、右も左もわからず。とりあえずXMLをパースしてフィードリーダー的なものを作ることにしたので、その解析部分を。
XmlPullParser | Android Developers
これを使うらしい。
サンプルコードも載っているので、なんとか私にも分かりそう。
やってみましょう。
// とコードを書いてましたが、終わらなそうなので今日はこのまま記事公開しちゃお…w
雑談
今日は初研究室に行ってきました。
強そうな人がたくさんでした。
ReduxでTODOアプリにリベンジした。 #64
今日やったこと
ReduxでTODOアプリにリベンジ
Redux公式やら諸々の解説記事やらでよく見られるのがTodoアプリの作成。
確かに、実行済み⇔未実行とかの状態があったり、諸々Reduxの練習には最適な題材…なんですかね?
昔、Reduxを勉強し始めた当初、挫折したのでリベンジです。
コードはココに。
Reduxの公式を写経しても面白くないので、ライブラリ使ったりlocalstrageに保存したりする機能も付けていけたらと思って始めたのですが、タイムアップ。フィルターの実装とlocalstrageへの保存は間に合いませんでした。
現時点での動作はこんな感じ。
見た目は別として概ねいい感じかと。
工夫した点としては、
- lodashを使ってループさせたりしている
- _.filterを使ってフィルタ機能を実装するつもりでlodash入れた
redux-devtools-extension
を使ってみた- ドロップダウンリストでフィルターの状態を指定
とかですかね。
lodashについては、なんというかクセの強いライブラリみたいな印象を勝手に持っていてあんまり使いたくなかったのですが、ドキュメント流し読みしてると結構便利そうなのがたくさんあって面白いなぁという印象でした。
雑談
ちょっとおもしろい挙動にも遭遇したりしました。
うわあああ pic.twitter.com/9VHKTmajRz
— ううたろ (@uutarou10) 2017年7月17日
900近くエラー吐くのに何故動くw
Webデザインやってみたい、という話 #63
今日やったこと
手を動かすことはできなさそうなので、移動時間にスマホでぽちぽち調べたり読んだりしてた。
今日の技術日誌は僕のばやきなので暇で仕方ない場合だけお読みください…。
Webデザインやってみたい。
Bootstrapとかmaterial-uiとか使ってきたわけですが、ほんと簡単にイケてるデザインのサイトが作れて素敵ですよね。
ただ、Bootstrap臭なんて言われたりするように、どうしても似たり寄ったりなデザインになっちゃうんですよね…
それでも、素人が作るよりはマシかなんて思っているし、実際そんな気がしますが、それでもWebデザイン的なことしてみたいなぁなんて思ったり。
毎回、ポートフォリオサイトを作り始めては挫折して頓挫してるので一回本腰入れてゴリゴリ作ってみるかななんて。
ちゃんとワイヤーフレーム組んで要件定義して…みたいなことをしたい。
「手を止めてちょっとすると自動保存するアレ」 #62
今日やったこと
今日はいちにちコードを書くお仕事でした。
学んだことはたくさんあるんですが、コードをポンとアップするわけにもいかないのがアレなところ。
「手を止めてちょっとすると自動保存するアレ」を作ったので作り方を忘れないように書いておきます。
手を止めてちょっとすると自動保存するアレ?
Googleドキュメント的な。タタタッと文字を打って、ちょこっと手を止めると勝手に保存の処理が走るやつ。
どうやって実装するのがいいかなぁなんて思ってる人の役に立てば幸いです。
ちなみにコードは置けないので作り方の方針だけ。
どうするか
setTimeoutを使います。
文字を入力すると同時onChangeかなにかでにsetTimeoutを作る。
で、また文字を打つと、前のsetTimeoutを破棄して次のsetTimeoutを作ると。
そうすることで最後に手を止めてから一定の時間が経過したタイミングで好きな処理を走らせることができますよね。
終わってみれば簡単なことだったんですが、作ってる間はウンウン悩んでしまいました。
雑談
いやぁ、8時間コードゴリゴリたのしいですね。疲れるけど。
明日はコード書かない方のバイトです。(結局月2から3くらいでこっちも続けることになった)
朝から晩までお外にいるのでそれはそれで疲れる。勉強する時間取れるといいけど…。
React+Reduxだぞオラオラ #61
今日やったこと
React+Redux!!!
今日は特段新しいことをしたということはないのですが、react-reduxでWebアプリ的な何かを作っていました。(講義の課題です。)
なにかをモクモクと作るのはたのしいですね。
先日の記事で書いたmaterial-uiのSnackbarも実装しました。こんな感じ。
これは業務コードではないので掲載できますねw
だんだんReduxわかるようになってきた。嬉しい。
material-uiの他にも諸々使っていて、課題が完全に業務のための練習台になりつつあります。
雑談
Amazonギフト券7000円分もらいました。
IoTしたい欲がすごいのでIRKitでも買っちゃおうかなぁ。
SimpleDateFormatのparseでコケるときに確認すること #60
今日やったこと
SimpleDateFormatのparse
今日は講義で作らされている作っているAndroidアプリ開発について。(というよりJavaのオハナシです。)
Javaで Thu, 13 Jul 2017 18:00:15 +0900
こういう形式の文字列をDate型に変換したいとき、ありませんか?
こんな感じで
public class Main { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); System.out.println(sdf.parse("Thu, 13 Jul 2017 18:00:15 +0900")); } }
SimpleDateFormatのparseメソッドを使うと実現できる…といろんな記事に書いているのですが、実際に実行すると
Exception in thread "main" java.text.ParseException: Unparseable date: "Thu, 13 Jul 2017 18:00:15 +0900" at java.text.DateFormat.parse(DateFormat.java:366) at Main.main(Main.java:15) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Unparseableですって奥さん…。
おかしいなーと数時間も頭を悩ませてしまいましたが、正解はこうでした。
public class Main { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH); System.out.println(sdf.parse("Thu, 13 Jul 2017 18:00:15 +0900")); } }
3行目、SimpleDateFormatのコンストラクタの第二引数にLocaleを渡しています。
これでちゃんと Thu Jul 13 18:00:15 JST 2017
という出力が得られます。ヤッタネ。
どういうことなの
勘のいい方はどういうことかすでにお分かりかと思いますが、なんでLocaleを指定すると動いたかというと、先程のLocaleの指定なしsdfでformatしてみると 木, 13 7 2017 22:08:43 +0900
という出力が返ってきます。
木…。これが犯人でした。
パターン文字列 EEE
ってLocaleによって出力が変わっちゃうんですね。環境依存にならないためにもLocaleの指定はした方が良さそうですね。
なんとなくQiitaにも投げました。内容同じです。
雑談
この講義のためだけに週1回だけJava書いてるわけですが、やっぱりこういうかっちりした言語はそれはそれでたのしいです。
研究室、自己推薦通りました👍
hubコマンド入れた #59
今日やったこと
hubコマンドを入れた。
いやね、開いてるプロジェクトのGithubのページがコマンドラインから開けたら便利だなっておもったんですよ。
remoteのURL取ってくるのなんて簡単だし、そういうコマンド作ろうと思えばすぐ作れそうな割に需要ありそうじゃない?天才では?…と思って作るぞ〜と息巻いていたんですが、ぼくのような凡人が思いつくようなものはすでにこの世に存在していました😔
それがhubコマンド。
てか、いま気がついたけど公式ですねこれ…。
Go言語で書かれている模様。
当初の目的であったGithubのページをコマンドラインから開くのは
(プロジェクト下で) $ hub browse
でいけます。最初だけユーザー名とかパスワード聞かれた気がするけど、プライベートリポジトリだったからかも。
ちなみにbrowseコマンドの実装は多分コレ。
Go全然わからないけど余裕ができたら読みたい。(そんなに難しい実装じゃない…気がする)
他にもusername/reponameとかでcloneしたりとかGithubを便利にコマンドラインから使えるツールっぽいのでうまいこと便利なところは使いこなしていければな、と。
雑談
今日は1日お出かけしていました。
内容がお粗末、つらいなぁ。