タグ

ブックマーク / nowokay.hatenablog.com (28)

  • Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena

    みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近はIDEでmain[tab]と入力すれば補完してくれるとはいえ、コードを読むときには目に入ってきたりしますね。 そんなパブリックスタティックヴォイドメインの呪文から解放される日が近づいています。 TL; DR 9月リリースのJava 21の試用機能として void main() { System.out.println("Hello"); } をhello.javaで保存したら、java hello.javaで実行できるようになります。 (Java 21では--enable-preview --source 21が必要) Javaではプログラムを開始するときにpublicなclassなどにStringの配列を受け取るpublicでs

    Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena
    gayou
    gayou 2023/06/13
    ヴォイドメイン
  • Web記事の本文をJavaで抽出する - きしだのHatena

    指定したURLの記事文を取ってくる処理がほしいなぁと思って、しかしいろいろ考えるのは面倒と思ったけど、少なくともJavaで簡単に使えるものがなさそうなので実装した。 参考にしたのはこちら。 HTMLからの文自動抽出 - アドファイブ日記(ミラー版) テキストが長いタグは文、直下のタグは文への寄与が多い、のようにしてスコアを求め、そして全体テキストに対してスコアが高ければ文だろう、という感じ。 上記サイトと変えたところは、<li>タグの点数をさげているところ。読売の記事が最後に各カテゴリの説明をもっていて、記事より長くなりがちでそちらが抽出されることが多そうなので、点数をさげた。 前回のブログ記事で試すとちゃんと取れている。 ソースはこんな感じ。HTML処理にはjsoupを使っている。 https://jsoup.org/ import java.io.IOException; i

    Web記事の本文をJavaで抽出する - きしだのHatena
    gayou
    gayou 2023/03/07
  • JavaScriptはJavaのScript版(であろうと努力はした) - きしだのHatena

    JavaJavaScriptを混同する人に、名前がかぶってるだけの別モノという指摘がされることもあります。間違いではない。 技術的にも実務的にもコミュニティ的にもそのとおりではあります。 ただ、そう言い続けられた結果、ほんとに単にLiveScriptの名前にJavaをもってきてJavaScriptにしただけという誤解があるようです。 JavaScriptJavaのScript版、少なくともそうであろうという努力はされていました。 JavaScriptリリース時のCNETの記事には「JavaScript is based on Java」という記述があります。 Netscape and Sun Unveil JavaScript - CNET 実際には、LiveScriptにJavaから文法やライブラリなどを持ち込んでリリースにこぎつけたというのがあります。 JavaScriptのDat

    JavaScriptはJavaのScript版(であろうと努力はした) - きしだのHatena
    gayou
    gayou 2022/02/09
    javascriptの歴史
  • PHPカスタムタグ - きしだのHatena

    過去に作ったものを掘り起こそう週間です。 PHPカスタムタグ。Javaのカスタムタグの仕組みをPHPでも使えるようにしよう企画です。 http://www.fk.urban.ne.jp/home/kishida/phptag/index.html サンプルを見ると、2001年10月4日くらいに作ってたみたいです。 なんか、PHPはカスタムタグみたいな仕組みがないからダメとかいうやりとりをしてるときに、PHP用のカスタムタグってすぐ作れるんじゃね?ピコーンって思いついて、8時間くらいで一気に書き上げた思い出が。 これ、式言語を使えるようにして、ディレクティブを無視するようにしたら、JavaのJSPがPHPでそのまま使えるようになるんですよね〜。式言語もたぶんドットを->に変えて変数名に$を付けるようにすれば当面大丈夫だったり。 あと、これってJavaのカスタムタグをそのまま使えることを目標に

    PHPカスタムタグ - きしだのHatena
    gayou
    gayou 2020/10/18
    phpカスタムタグは昔使ってた。お世話になりました。
  • 厚生労働省の都道府県別陽性者のフォーマットががらっと変わってしまった - きしだのHatena

    こんな感じで都道府県別の感染者数を表示できるようにしてるわけですが、厚生労働省のフォーマットが変わってしまったのでまとめておく。 nowokay.hatenablog.com 新しいものはこれ https://www.mhlw.go.jp/content/10906000/000628667.pdf いままでのはこれ https://www.mhlw.go.jp/content/10906000/000627630.pdf いままでも連番が入るとか数値にカンマが入るとかちょこちょこ変更は入ってたのだけど、今回はデータの意味も結構かわってしまった。 重症者やPCR検査数も入ったので、データとしては よりよくなったわけではあるけど。 東京のデータも都の発表値と一致するようになって、改めて都のデータをとりにいく必要がなくなったのもいいですね。 ということで困ったところ 「不明」・・・いままでゼロ

    厚生労働省の都道府県別陽性者のフォーマットががらっと変わってしまった - きしだのHatena
    gayou
    gayou 2020/05/11
    康煕部首の「長」かと思ったらまた違うコードっぽい。unicodeの世界は広い。
  • Javaスクリプト入門 - きしだのHatena

    みんなでJavaスクリプトに入門しましょう! クラスをちゃんと定義する それでは、まずはJavaっぽく書いてみましょう。 public class Main { public static void main(String[] args) { System.out.println("Hello!"); } } これを、任意のファイル名で保存します。たとえばhello。 実行するにはJava 11以降が必要です。みなさんすでにSDKMANを入れてると思うのでOracle OpenJDKの12.0.1を使ってみましょう。 $ sdk use java 12.0.1-open では実行します $ java --source 12 hello Hello! 実行できました! これではちょっと面白くないので、先ほどのファイルの先頭にちょっとなにか追加しておきます。 #! /home/naoki/.s

    Javaスクリプト入門 - きしだのHatena
    gayou
    gayou 2019/06/30
    なるほど。たしかにJavaをスクリプト言語っぽつ使うことができる。
  • GraalVMはどれだけ遅いか - きしだのHatena

    GraalVM流行ってますね。 そして、多くの人はGraalをAOTとして使うnative-imageのことだけをGraalVMと言ってたりします。 ご安心を。このエントリではGraalをJITとして使うHotSpotモードとGraalをAOTとして使うnative-imageの両方が遅いという話です。 GraalVMは速い、と言われてますが、残念ながらHotSpotモードでC2より速い結果を手元では出せていません。 公式ブログでは1.7倍から5倍速くなると書いてますけど、手元では再現できてません。 Under the hood of GraalVM JIT optimizations - graalvm - Medium native-imageは速い、というのはよくありますが、これはネイティブ化によりJVMの起動時間や最適化の時間、最適化されずに動く時間が省略されるので起動が速い、とい

    GraalVMはどれだけ遅いか - きしだのHatena
  • JavaのマイクロサービスフレームワークHelidonを試す - きしだのはてな

    HelidonはMicroProfileに対応したフレームワークです。 Helidon このあたりで紹介されていますね。 OracleJava用のマイクロサービスフレームワーク「Helidon」を発表 - Computerworldニュース:Computerworld HelidonにはシンプルなSEとMicroProfile対応のMPがあります。Maven Archetypeが用意されているので、こちらを使うと楽です。 SEだと関数を登録する感じで、MPだとJAX-RSやCDIを使ったアノテーションベースのコードになります。 ちょっと試すにはSE、大きめのプロジェクトを作る場合はMPがよさげ。 面白いのは、Dockerfileが用意されているので、ビルドしてそのままDockerイメージが作れるところです。 FROM openjdk:8-jre-alpine RUN mkdir /app

    JavaのマイクロサービスフレームワークHelidonを試す - きしだのはてな
    gayou
    gayou 2018/11/24
  • JDK12は3/19リリース。あとOpenJDKのGithubリポジトリができた - きしだのHatena

    9/25のJDK11リリースまで1週間となりました。 JDK12のスケジュール提案 そんな中、JDK12のスケジュールの提案が出てますね。2019/3/19リリースの予定です。 2018/12/13 Rampdown Phase One 2019/01/17 Rampdown Phase Two 2019/01/31 Release-Candidate Phase 2019/03/19 General Availability Proposed schedule for JDK 12 OpenJDKのGithubリポジトリができた ところで、OpenJDKのソース管理はMercurialで行われ、レビューはメーリングリストで行われています。 これをGitに移行してGithubを使ってみようという流れが起きています。 OpenJDK Commiter's Workshopでも長い時間をとって

    JDK12は3/19リリース。あとOpenJDKのGithubリポジトリができた - きしだのHatena
  • Java11でのAPI変更を雑に列挙 - きしだのHatena

    先月末でJDK11はRampdownフェーズに入って、機能凍結されました。 なので、今後はAPIの追加・削除・変更はほとんどないと思われます。 おそらく、機能的には現在でているea20とほとんど同じものがJava11としてリリースされることになると思います。 JDK 11 Early-Access Builds 大きな機能変更としては、ここでJEPとしてまとまっています。 「JDK 11」 http://openjdk.java.net/projects/jdk/11/ Raw String Literalが間に合わなかったのはとても残念です。JDK11トレインに乗り遅れるからがんばるぞ!みたいな投稿があって仕様をまとめてからML上は音沙汰なしですが、Rampdownフェーズが始まってから機能追加するLate Enhancement Request Processというのがあるようなので、

    Java11でのAPI変更を雑に列挙 - きしだのHatena
    gayou
    gayou 2018/07/05
    list.toArray(new String[list.size())]) じゃなくて、list.toArray(new String[0]) てするだけもOKだったかと。
  • Java9から三項演算子でのunboxingの挙動がJava8とは変わっている - きしだのHatena

    Java9からJDK11-ea18まで、三項演算子でのunboxingの挙動がJava8とは変わっているようです。 Double d = false ? 1.0 : new HashMap <String, Double>() .get("1"); yields null in #Java8, but NullPointerException in #Java10. Why?https://t.co/MUaql1vd9e— Nicolai Parlog (@nipafx) 2018年6月10日 次のようなコードの挙動がJava8でコンパイルしたときとJava9以降でコンパイルしたときとで変わっています。 Double d = false ? 1.0 : new HashMap<String, Double>().get("a"); 試しに次のようなコードを実行してみます。 import j

    Java9から三項演算子でのunboxingの挙動がJava8とは変わっている - きしだのHatena
    gayou
    gayou 2018/06/19
  • Java9、10でStringの+=に副作用があるバグ - きしだのHatena

    Java 9、10でStringの+=にバグがあるということがStack OverFlowで報告されていました。 Why does array[idx++]+="a" increase idx once in Java 8 but twice in Java 9 and 10? - Stack Overflow どういうバグかというと「s[i++] += i + ""」のようなコードが正しく動かないというものです。 次のコードを実行してみます。 public class PlusEqual { public static void main(String[] args) { System.out.print(System.getProperty("java.version")); String[] s = {"aa", "bb"}; int i = 0; s[i++] += i + "";

    Java9、10でStringの+=に副作用があるバグ - きしだのHatena
    gayou
    gayou 2018/06/12
  • マイクロサービスフレームワークArmeriaを始める - きしだのHatena

    Armeriaのチュートリアルを書いてみる https://line.github.io/armeria/index.html RESTサーバーとして使う まずは、プロジェクトを用意します。 dependencyにcom.linecorp.armeria:armeria:0.62.0を追加します。 mavenの場合、次のようなpom.xmlを用意します。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.or

    マイクロサービスフレームワークArmeriaを始める - きしだのHatena
  • JDK 11で2つメソッドが削除されてHTTP Clientが正式に入る - きしだのHatena

    JDK9でincubatedでJDK10でもincubatedなHTTP Clientが、ようやくJDK11でjava.net.httpパッケージで入るらしい。 JDK HTTP Client - JEP 321 - Update あと、 1.2からDeplicatedだったrunFinalizersOnExitメソッドが削除される。Runtime.runFinalizersOnExitとSystem.runFinalizersOnExit。 (11) RFR JDK-8198249: Remove deprecated Runtime::runFinalizersOnExit and System::runFinalizersOnExit Java 9でforRemoval=trueになってますね。 https://docs.oracle.com/javase/jp/9/docs/api

    JDK 11で2つメソッドが削除されてHTTP Clientが正式に入る - きしだのHatena
    gayou
    gayou 2018/02/22
  • Java8日付時刻APIの使いづらさと凄さ - きしだのHatena

    いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし

    Java8日付時刻APIの使いづらさと凄さ - きしだのHatena
    gayou
    gayou 2017/05/16
    Java 8で和暦サポートしてんのか。
  • 作って理解するWebフレームワーク - きしだのHatena

    前回、簡単なDIコンテナを作ってみたので、次はこれを使ってWebフレームワークを作ってみたいと思います。 Webサーバーをつくる まず、WebフレームワークなのでHTTPサーバーが必要ですね。なので簡単なものを作ります。 とりあえずブラウザからリクエストを受け取ったら200 OKとHTMLを返すだけのサーバーです。 今回は、そこらのブラウザからアクセスできればいいや、ということで、RFCとかの仕様に準拠することは考えません。 public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSoc = new ServerSocket(8989); for (;;) { Socket s = serverSoc.accept(); new Thread((

    作って理解するWebフレームワーク - きしだのHatena
  • ぼくの実装した最弱のディープラーニング - きしだのHatena

    8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。 プログラマのための数学勉強会@福岡 - connpass ぼくの実装した最弱のディープラーニング from なおき きしだ ※追記 2023/4/12 SpeakerDeckにも置いてます https://speakerdeck.com/kishida/weakest-deep-learning-i-implemented GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。 ちゃんと学習してくれないこと以外は。 ソースはこんな感じになってきています。 https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN GPU対応にはaparapiを使っています。JavaGPUコードが書けるスグレモノです。 ap

    ぼくの実装した最弱のディープラーニング - きしだのHatena
  • パーセプトロンからSVMでの画像認識まで、機械学習エントリのまとめ - きしだのHatena

    なんかJJUGナイトセミナーで機械学習をやるっぽくて、定員100人が40人キャンセル待ちとかになってますね。 【東京】JJUG ナイト・セミナー「機械学習・自然言語処理特集!」12/17(水)開催 - 日Javaユーザーグループ | Doorkeeper ということで、予習用だか復習(になるかわかんないけど)用に、2008年になんか機械学習をやってたときのエントリをまとめてみます。 今でこそ機械学習はなんかもりあがってるけど、2008年にぼくがやってたとき「ところで機械学習やってなんになるの?」ってよく言われてました。ぼくも「いや、なんかそこに機械学習ってものがあるから実装してる」みたいな答えをしてた気がします。特に目的はありませんでした。 たまたま サポートベクターマシン入門 というを見かけて、なんか実装してみたくなっただけです。 変な力がありあまってたっぽい。 機械学習ことはじめ

    パーセプトロンからSVMでの画像認識まで、機械学習エントリのまとめ - きしだのHatena
  • きしだのHatena

    Qiitaのほうに「Java 23新機能まとめ」を書きました。 Chicoryを使ってRustをコンパイルしたwasmJavaから呼び出してみました。 JVMでWebAssemblyにコンパイルしたRustのコードを動かす - きしだのHatena ただ、結構呼び出しがめんどいので、Javaインタフェースを定義したらなんかメソッド呼び出しで使える、というよく見かけるやつを作ってみます。 Rustのコードはこう。 #[no_mangle] pub fn add(left: i32, right: i32) -> i32 { left + right } #[no_mangle] pub fn sub(left: i32, right: i32) -> i32 { left - right } #[no_mangle] pub fn mul(left: i32, right: i32) ->

    きしだのHatena
    gayou
    gayou 2015/04/28
    getLoggerが稀にnullを返す。って。。
  • JavaOne報告会福岡。あと飛行機に乗り遅れた。 - きしだのHatena

    一週間、ツイートしたURLをまとめる試み。 菅原文太さん亡くなった。はやぶさ2飛んだ。 Java-ja忘年会やら、JavaOne報告会福岡。 あと飛行機に乗り遅れた。(リンクなし) Java アドベントカレンダーが始まった。 すげー行きたいが 【東京】JJUG ナイト・セミナー「機械学習・自然言語処理特集!」12/17(水)開催 - 日Javaユーザーグループ | Doorkeeper 2014/12/06 23:02:23 Fav:1 RT:1 「困ったときのJSRを確認」 大事だなー JPQLでハマった話 - Java EE 事始め! 2014/12/06 20:25:53 Fav:4 RT:3 「きしださんにデジタルペーパーを触らせてもらいました。」 「まとめると、Kindle買おうかなという気持ちになりました。」 ですよねーw java-ja忘年会2014へ行ってきた - 虎塚

    JavaOne報告会福岡。あと飛行機に乗り遅れた。 - きしだのHatena
    gayou
    gayou 2014/12/09