白猫のメモ帳

JavaとかJavaScriptとかHTMLとか機械学習とか。

Java

staticでないネストクラス

こんばんは。昔は海の日から夏休みが始まった気がするのですが、 最近はハッピーマンデーの関係でそうでもないんですよね。さて、前回のつづきです。 前回はstaticなネストクラスについて書きましたが、 今回は「でない」方です。 Java Javaにおけるstaticで…

staticなネストクラス

こんばんは。液晶保護シートが上手に張れないわたしです。 剥がして使ってみたらすごく快適なので、もう張らなくていい気もしてきました。さて、JavaにもC#にもネストクラスという仕組みがありますが、 ちょっと挙動が違うので整理してみようかと思います。…

JJUG CCC 2017 Spring

こんばんは。今日は「夏」でしたね。 ひぃひぃ。さて、今年もやってきました。 「JJUG CCC」の季節が。(年2回ですけど)もはや業務でJavaは全然使っていないのですが、 せっかくだから参加してきましたよ。 今回は4コマだけ。 e1 ふつうのJavaコーディング …

C#を勉強する 小ネタ② IDEのショートカット

こんばんは。今年度も残すところあと二日ですね。 新年度の準備はできましたか。わたしは4月からまた会社員に戻りますよ。 いつか転職エントリとか書きますかね…?さて、最近はVisualStudioを使うことが多いのですが、 いつまでたってもショートカットを覚え…

Java使いがC#を勉強する その⑪ LINQ

table.compare_table {width: 100%; font-size:90%;} table.compare_table th {background-color: cornsilk;} table.compare_table th:nth-child(3n+1) {width: 40%;} table.compare_table th:nth-child(3n+2) {width: 30%;} table.compare_table th:nth-chi…

Java使いがC#を勉強する その⑩ ラムダ式

こんばんは。なんだかんだで10回目まで来ました。 環境依存文字の丸で囲んだ数字が⑳まであってよかったね!今回はラムダ式について見ていきます。 delegateなんてなかったのだ ラムダ式は要するに匿名関数なのですが、 delegateって何?匿名クラスは?関数オ…

Java使いがC#を勉強する その⑨ 演算子オーバーロード

こんばんは。眠いのは春のせいです。いつも眠いのはきっと気のせいです。しゅんみん は あかつき を おぼえた! てってれー。 さて、今回は演算子オーバーロードについて見ていきます。 この機能はJavaを使っているときからうらやましかったですね。 特にベ…

Java使いがC#を勉強する その⑧ 例外処理

こんばんは。平穏無事な日々を送りたいわたしです。 でも、世の中には思いがけないことも多いものです。 そんなわけで今日は例外処理です。 例外の比較 ひとまずJavaとC#の例外を比較してみましょう。 一般的な例外(Javaでは非検査例外) 説明 C# Java null…

ダブルディスパッチってちょっとかっこよくない?

こんばんは。昼間は割と暖かいですが、 朝晩は寒いので服装選びに失敗します。わたしです。オブジェクト指向プログラミングにおいて利用されるテクニックに、 ダブルディスパッチというものがあります。名前がかっこいい! フィギュアスケートの技にありそう…

Java使いがC#を勉強する その⑦ アクセス修飾子

こんばんは。本棚がいっぱいになって困っています。わたしです。 今回はアクセス修飾子について見ていきます。 基本 アクセス修飾子は型および型のメンバーにつけることができます。 アクセス修飾子の種類は以下の通りです。 修飾子 Java C# public どこから…

Java使いがC#を勉強する その⑥ 拡張メソッド

こんばんは。何やら今日は妙に温かかったですね。 そして明日は寒いらしいですね。体調に気をつけましょう。さて、C#には拡張メソッドというデンジャラスな機能があります。 今回はこれを見ていきます。 拡張ってどういうことだ 通常、あるクラスにメソッド…

Java使いがC#を勉強する その⑤ 継承とインタフェース

こんばんは。今回はクラスとインタフェースについて比較します。 オブジェクト指向なので、だいたいクラスでしょといってしまえばおしまいなのですが、 それはそれということで。 命名規則 クラスはJavaもC#もパスカル記法(キャメルケースの先頭も大文字)…

お前もFunctionalInterfaceにしてやろうか

こんばんは。タイトルの元ネタ、誰のセリフか知らなかったのですが、デーモン閣下だったのですね。 あと、藁人形だと思ってたけど蝋人形でした。ごめんなさい。しばらくC#ネタを書いていましたが、たまにはJavaネタを。 安心感。で、Java8で追加された機能に…

Java使いがC#を勉強する その④ インデクサ

こんばんは。なんだか雪みたいなものが降りましたね。 寒いわけです。さて、前回はプロパティについて書きましたが、 今回はその延長でインデクサについて見ていきます。 インデクサ インデクサはインスタンスに添え字を指定してアクセスできる機能です。Jav…

Java使いがC#を勉強する その③ プロパティ

こんばんは。スマホの液晶シートが上手に貼れない私です。 今日はプロパティについてみていきます。 アクセサ オブジェクト指向プログラミングでは、オブジェクト内部のメンバ変数に外部からアクセスするためには、 「アクセサ」と呼ばれるメソッドを利用し…

Java使いがC#を勉強する その② 配列

こんばんは。久しぶりに雨が降りましたね。 雨が好きなわけではないですが、湿度が高いのはありがたいです。さて、前回はデータ型について比較したので、 今回はそのついでのような形で配列について見ていきます。 1次元配列 1次元配列に関しては、あまり大…

Java使いがC#を勉強する その① データ型

こんばんは。今日は節分ですね。 恵方巻き食べましたか?豆まきしましたか? 私はこれからまきます…。さて、C#の言語仕様をJavaと比較してみるシリーズ始めます。 最初はデータ型について比較してみましょう。 値型(プリミティブ型) C# Java 説明 sbyte by…

ハノイの塔

こんばんは。肩こりがひどい人なので最近ストレッチをしているのですが、 伸ばし過ぎてむしろ体が痛くなりました私です。今日はハノイの塔で遊びます。 ハノイの塔 - Wikipedia インドのガンジス河の畔のヴァラナシ(ベナレス)に、世界の中心を表すという巨…

ラムダ式をメモ化する部品を作ろうとして混乱したお話

こんばんは。クリスマス直前とは思えない暖かさですね。 大掃除は進んでいますでしょうか。 メモ化とフィボナッチ数列 さて、今回はメモ化のお話です。メモ化とは、簡単に言えば、参照透過性を持つ関数の計算量を削減するためのキャッシュです。 引数に対す…

TF-IDFでニュースを要約する

こんばんは。猫様に椅子を取られて座るところがありません。さて、今回はTF-IDFを使って文章要約を試してみます。 要約と謳ってはいますが、重要な文を抜き出すだけなのでご注意を。 TF-IDFってなんだ 今回のポイント、TF-IDFについて簡単に説明します。TF-I…

JJUG CCC 2016 Fallに参加してきました

こんばんは。年2回開催されているJJUG(日本Javaユーザグループ)のカンファレンスに参加してきました。 なんだかんだでもう3回目の参加です。 だいぶ慣れた気はしますが、周りの人が全てスーパープログラマーに見えるのは相変わらずです。で、あの・・・え…

Comparatorの型推論

こんばんは。雪、降りましたね。 寒い…。 さて、Streamなお話。Streamを処理する際、ソートには中間メソッドのsortedを使います。 このメソッドの引数はComparatorですが、自然順序付けを使わないような場合には、 comparingやcomparingIntなどのメソッドを…

JavaでTwitterBotをつくってみたよ

こんばんは。最近VBAが多くて、あまりJavaを書いていない気がするわたしです。 あ、このブログのプロフィール欄をTwitterとかで使っている名前と写真に合わせました。 なんか混乱してきたので。さてさて、 結構前にさくらVPSにJavaやらMySQLやらJenkinsやら…

OCJP SE8 Goldに合格しました

こんばんは。新しいiPohoneに変えようかちょっと悩んでいます。 5sユーザなのでサイズが大きくなるのが・・・。 さて、少し前の話ですが、オラクル認定Javaプログラマの試験に合格しました。 (※写真差し替えてます。わたしはネコ科ではない。)Goldは参考書…

うちのコンソールには勝手にFizzBuzzしてくれる妖精が住んでいる

こんばんは。暑さ寒さも彼岸から。 変に暑かったり寒かったり困りますね。 体調がもうだめです。ところで、 「FizzBuzz」 知ってますよね。できますよね。え、できない?いやいやいや。 System.out.printlnするだけですよ。 import java.io.PrintStream; pub…

LocalDate#ofの引数はゼロ埋めしないよ

こんばんは。急に涼しくなっていまいち体調が悪いです。 しかもまた暑くなるとか・・・無理・・・。 さて、Java8でDate/Time APIが刷新されて使いやすくなりました。 ローカライズされた日付を扱いたいときにはLocalDateクラスを使います。parseメソッドを使…

List<Integer>をremoveするとどうなる?

こんばんは。だいぶ涼しくなってきましたね。 その分朝に布団から出るのがつらくなってきました。 さて、割と有名かもしれませんが、Listのremoveのお話です。これを実行すると、 List<String> list1 = new ArrayList<>(Arrays.asList("hoge", "fuga", "piyo")); lis</string>…

ベイジアンフィルタでニュースのカテゴリ分けをしてみる

こんばんは。ここ数日は涼しい日が続きましたが、明日からまた暑いようですね。 秋の気配は微妙でも、お店の品揃えはあっという間に秋モードです。 さて、今日はベイジアンフィルタを使って文章のカテゴリ分けをしてみようかと思います。迷惑メールフィルタ…

enum+ラムダ=おしゃれ

こんばんは。オリンピックが始まりましたね。 夜更かししすぎないように気をつけねば。 ところで、enumって便利ですよね。 使いますよね。 数が限られているようなときに便利です。 Java7でStringがswitchに対応したので、switchに使えるというメリットはち…

単純パーセプトロンをJavaで作る その③

こんばんは。関東甲信越も梅雨明けして、いよいよ夏本番ですね。 学生さんは夏休みを満喫していますでしょうか?さて、単純パーセプトロンについての記事の3つ目です。その① 機械学習の基本とパーセプトロンでできること その② 単純パーセプトロンの仕組みを…

単純パーセプトロンをJavaで作る その②

こんばんは。歩きながらスマホを見るのは危ないのでやめましょうね。さて、単純パーセプトロンについての記事の2つ目です。その① 機械学習の基本とパーセプトロンでできること その② 単純パーセプトロンの仕組みを簡単に解説 ←今回はコレ その③ 単純パーセプ…

単純パーセプトロンをJavaで作る その①

こんばんは。猫が網戸を開けるので、家の中に蚊が入って困っています。 さて、今回は単純パーセプトロンを作ってみようと思います。 が、あれもこれもと書いていたら結構長くなりそうなので3つの記事に分けます。その① 機械学習の基本とパーセプトロンででき…

WhileStreamってないの?

こんばんは。今日から数日は少し涼しいみたいですね。 30℃を超えると仮死状態になるので、ありがたいです。 最近ちょっと自然言語処理をしたかったのでKuromojiを使っているのですが、 JapaneseTokenizerがstream化できなくてなんかもやもやするんです。やっ…

ラムダ内の例外処理はもう少しおしゃれであってほしい

こんにちは。今日から3連休ですね。 学生の皆様はもうそろそろ夏休みでしょうか? さて、タイトルの通りなのですが、 Javaでは言語仕様上、ラムダ内での検査例外を投げることができないので、 せっかくのラムダが全然おしゃれじゃない感じになってしまいます…

ラムダを引数にとるメソッドのオーバーロードってどうなるの?

こんにちは。そんなに雨が好きなわけでもないですが、 こう暑さを実感すると、雨が降っていても涼しい方が幸せな気がします。 水不足ですしね。さて、タイトルの通りです。 関数インタフェースのラッパーをつくろうかと思ったら、参照があいまいとか怒られて…

k近傍法をJavaで実装する

こんばんは。暑いですね。 とろけてしまいそうです。さて、前回は最近傍法を試してみましたが、今回はk近傍法を実装してみましょう。別のクラスにしてもいいのですが、 最近傍法はk=1ですので、共通化しておきましょう。kはコンストラクタ引数で渡すことにし…

最近傍法をJavaで試してみる

こんばんは。最近はちょっと機械学習を勉強している私です。機械が学習できれば私は学習しなくていいんですよね。 すばらしいです。 そのために私は勉強します。・・・ん?さておき、とりあえず最初は機械学習アルゴリズムの中でももっとも単純な(ってWikip…

「JJUG CCC 2016 Spring」 に参加してきました

わ、ひさしぶりすぎる。イベントレポートとか書いたことないのですが、 「ブログに書くまでがイベントです」とのことなので。前回「2015 Fall」に続いて2回目の参加になります。 写真撮ったり熱心にメモってたわけでもないので、さっくりと。 詳しくはきっと…

インタフェースのデフォルト実装を使えばenumに共通メソッドを作れるんじゃないの?って話

しばらくPlayFrameworkについて書いてましたが、たまには別のテーマを。 Javaのenumはなかなかに便利なのに、あまり使っているのを見掛けないのは何故なのだろう。 SingletonパターンやStateパターンなんかにはなかなか良いような気がするのだけれど。ただこ…

Play Frameworkで遊びたい④

続き。文字化け編こんな編作りたくなかった…。 ①DBの文字化けを何とかするとりあえずデータを表示してみようと思ったら文字化けした。 A5で2バイト文字を入れて、テーブルを開きなおすとすでにおかしい。1. 現在の文字コード設定を確認するmysqlコンソールで…

Play Frameworkで遊びたい③

続き。EclipseからrunしたらCtrl+Dで止まらないのでバッチを作りました。 でも、エラーはEcliseコンソールに出てほしい人だから、 PIDでjava.exeをkillするバッチを作って無理やり止めてもいいかもしれない。 さておき。今回の目標 「DBアクセスができるよう…

Play Frameworkで遊びたい②

続き。Eclipse使わないとJava書けない人なので、 とりあえずEclipseで編集できるようにするところまでやってみる。 ①Eclipseプロジェクト化「eclipse」コマンドを実行する。 [playPractice] $ eclipse が、なんかエラーが出て実行できない。 エラーメッセー…

Play Frameworkで遊びたい①

あ、どうもお久しぶりです。 いろいろと忙しくて完全に放置でした。最近ちょっとPlayFrameworkというのが気になっているので、 導入してみます。さてじゃあとりあえずインストールしてみますか。 ①JDKをインストールするこれは面倒なのでまぁどこかで調べて…

ワンライナーで書きたい

昨日のコードをJava8という武器を無駄に使ってワンライナーで書きたい。 public class PivotUtil2 { /** * 旋回する */ public static <S, T, U, V extends Pivotable<S, T, U, V>> List<V> pivot(List<V> table) { return table.stream() .collect(Collectors.groupingBy(v -> v.groupBy())) .values().stre</v></v></s,>…

JavaでOracleのPivotみたいなことがしたい

太郎くん、次郎くん、三郎くんはテストの点数を競争していました。しかし、総合点ではなく各教科の点数でそれぞれ順位を決めたくなったため、 集計の方法を変更しました。 このとき、このデータをデータベースに登録していたとすると、 いままで主キーが「人…

Javaで遅延計算

丸めのタイミングって結構問題になることが多くて、 あとから設定できたらいいなと思ったりする。あとついでにそこまでの計算結果が見えたらいいのになとか思って作ってみたもの。 package practice; import java.math.BigDecimal; import java.math.Roundin…

Javaで分数ってどうやって扱う?

ApacheCommonsにFractionという分数モデルがあるらしい。自分で実装してみようかと思って考えていたのは、1. 分子と分母を素因数分解して保持する 2. 素数の取得にはメモ化を利用するってすると約分とかしやすくて、そこそこ早いかなとか思っていたけれど、 …

Mapを一気に初期化したい

たまにマッピング自体を定数で持ちたかったりする。 でもMapはいまいち初期化しづらい。 staticイニシャライザとかでやるのが一般的?こういうのを作って public class MapBuilder<K, V> { private Map<K, V> map = new HashMap<K, V>(); public MapBuilder<K, V> put(K key, V value</k,></k,></k,></k,>…

Arrays.asListは固定長ですよ?

equalsAny - いろいろメモ前回のエントリで何気なくでてきたArrays.asList。 仕様を知らないと意外とはまり、そして仕様を確認してもう一回はまるという代物。どういうことかというと、このメソッドで作ったリストはaddやremoveができない。 これらのメソッ…

equalsAny

意外とないみたい。 public static boolean equalsAny(String str, String... strs) { return Arrays.asList(strs).contains(str); } 第一引数が第二引数以降に含まれるかっていうのはいまいち微妙な引数の取り方なので、 普通に定数をAsListの中に並べたほ…