タグ

programmingとJavaに関するstealthinuのブックマーク (55)

  • Android開発を受注したからKotlinをガッツリ使ってみたら最高だった - Qiita

    関連記事 この記事も古くなりましたね。執筆時の実装バージョンKotlin 0.12から1.0.2へのアップグレード対応をした際の知見を記事にしました。 Kotlinを実案件で使いました 先日、僕の勤め先のQonceptは『リアル鬼ごっこ』×富士急ハイランド 巨大遊園地からの逃走を開発、リリースしました。 富士急ハイランドで実際に鬼ごっこをする企画で、一般のお客さんがスマホで専用アプリを使いながらクリアを目指します。園内には鬼役のスタッフや、ゲーム進行に関わる設備などがあり、これらとスマホがiBeacon(BluetoothLE)を用いて連動することで、ダメージを受けたり、アイテムを使用したり、クイズを解いたりなどします。 Qonceptの開発範囲は、iOSアプリ(とAppleWatchアプリ)、Androidアプリ、サーバサイドでした。 受注確定となった時点で、残り日数と開発者リソースに対

    Android開発を受注したからKotlinをガッツリ使ってみたら最高だった - Qiita
    stealthinu
    stealthinu 2015/10/05
    KotlinとSwiftとJavaの比較をしながらKotlinの良い所紹介。アンドロイド開発はJavaだからやだな…という印象だったけどKotlinだったらSwiftと同じくらい?/KotlinのほうがSwiftより先なのね!Swiftがまねたのか。
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
    stealthinu
    stealthinu 2015/06/24
    javaのジェネリクスについてのまとめ。C++からオブジェクト指向入ったもんでこの書式を見るとつい「テンプレート」と呼んでしまう。んでテンプレートの理解をしてしまうので良くない。
  • Unicodeの似た文字を整理してみた - y-kawazの日記

    XMLやCSV等のデータをJavaで色々加工して出力したりといったことをしてると必ずハマるのが波線などの文字化け問題です。 文字化けが発覚するたびにググって場当たり的な対処を繰り返すのに疲れたのでよく問題になる文字と形が似た文字をリストアップして、更にそれをJavaで各種エンコーディングに変換したらどの文字になるかを頑張って纏めました。 ついでに文字化けしないよう上手いこと出力可能な文字に置換する関数も作ってみました。 Javaの変換テーブル 表中の U,S,W,E,J はそれぞれ、UTF-8、Shift_JIS、Windows-31J、EUC-JP、ISO-2022-JP で出力した際の文字です。 見た目で分からないくらい似た文字ばかりなので、各セルにマウスカーソルを乗せたらツールチップで確認できるようtitleにコードポイントを書いておきました。 分かりやすいよう、青は文字化けなし、黄

    Unicodeの似た文字を整理してみた - y-kawazの日記
    stealthinu
    stealthinu 2015/06/01
    JavaでUTF-8の全角ダッシュ\u2015とかをISO-2022-JPに変換すると「?」になっちゃうのを良さそうなのに変換してくれる関数
  • Apache Commons Lang – StringEscapeUtils(HTML / XML) | TK Factory

    引き続き、StringEscapeUtilsクラスの説明です。 今回は、HTMLとXMLの文字列のエスケープ・アンエスケープについてです。 escapeHtml public static java.lang.String escapeHtml(java.lang.String str) HTML特殊文字にエスケープします。 日語も「あいうえお」⇒「あいうえお」のようにエスケープされてしまいます。 パラメータ: str – エスケープする文字列 戻り値: エスケープされた文字列 StringEscapeUtils.escapeHtml("\"bread\" & \"butter\"") = ""bread" & "butter"" escapeHtml public static void escapeHtml(java.io.Writer

    stealthinu
    stealthinu 2015/05/26
    javaでHTML特殊文字をエスケープ/アンエスケープするにはStringEscapeUtilsのescapeHtml/unescapeHtmlを使う
  • JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum

    はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ

    JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum
    stealthinu
    stealthinu 2015/05/08
    charsetを複数切り替えて使うような特殊なアプリだとcharsetのキャッシュが効かなくてStringのコンストラクタにすんごい負荷がかかってた、という話。これはなかなか気がつけんわな。
  • エラー処理の方針とString#equalsの書き方 - 2009-02-19 - きしだのはてな

    String#equalsを使った文字列リテラルとの比較の書き方として、str.equals("リテラル")と書くのがいいか、"リテラル".equlas(str)と書くのがいいかという論争がありました。 そこで、この問題について、エラー処理の方針と絡めて考えてみようと思います。 エラー処理の方針として、エラーパッシングとエラーリカバリーという考え方があります。 エラーパッシングは、エラーがあってもそれを無視して処理を行うという考え方です。例えば音楽データの再生時に、データの一部が欠けていたとしてもそこを適当に補完を行って再生を続けるような考え方です。 人間相手の処理では、エラーによって処理が止まるよりも、それなりの対処を行って処理を続けることのほうが求められるので、ユーザーインタフェースやコンテンツのプログラムではエラーパッシングで考えることが多いと思います。 エラーリカバリーは、エラーが

    エラー処理の方針とString#equalsの書き方 - 2009-02-19 - きしだのはてな
    stealthinu
    stealthinu 2015/04/09
    javaで"hoge".equals(foo)みたいな書き方、ずっと気持ち悪いなあと思ってたんだけどfooがnullでもぬるぽにならないための簡潔な書き方なのね。使うようにする。
  • JSONIC - simple json encoder/decoder for java

    2018/7/1 重要なお知らせ JSONIC はリポジトリを GitHub に移動させるとともに、今後機能強化が行われることがないメンテナンスモードに移行します。Java 新バージョンで動作できなくなった場合への対応は要望があれば考えますが、可能であれば、機能、パフォーマンス共に優れた jackson への移行をおすすめいたします。 JSONICとは JSONICは、Java用のシンプルかつ高機能なJSONエンコーダー/デコーダーライブラリです。 Java用のJSONライブラリはすでに多数存在しますが、JSONICはRFC 7159に従った正式なJSON形式でのデコード/エンコードを行いながらも、プログラミング言語に依存する情報をJSON内に含めることなくPOJO(Plain Old Java Object)と自然な変換を行える点に特徴があります。 使い方も非常に簡単です。 import

    stealthinu
    stealthinu 2015/04/07
    JSONデータのエスケープするベストプラクティス探してて辿り着いたのだが最初からこれ使えばよかったじゃん… orz オブジェクトをそのままJSON化してくれる。JS内直接出力用のescapeScriptメソッドがある。良すぎ。
  • では、わたくしめが知っている範囲でServletの辛さについてご説明申し上げます。

    Jxck @Jxck_ Servlet は結構普通というか、余計なもののない素直なイメージだったけど Play とか Servlet 捨ててた気がする。どういう判断だったんだろ。 2015-03-26 12:28:27

    では、わたくしめが知っている範囲でServletの辛さについてご説明申し上げます。
    stealthinu
    stealthinu 2015/03/27
    servletの辛さ。multipart、認証系、Cookie API、HttpSessionは使いやすいのだがスケールできなくなる、など。
  • 株式会社プロズサービス

    ”人とのつながりを大切にする” 当社が最も大事にしているキーワードです。 システム開発では関係者とのコミュニケーションに多くの時間を割いています。 この時間を省略して、質の高いシステムを提供することは難しいでしょう。 その上で、過去の経験や技術動向を踏まえ、プロフェッショナルな IT技術者として お客様の求めていることを実現する。 これが当社全員の目指す姿です。 人との関わり方に物足りなさを感じている方、 ご自身の経験をフル活用してお客様にサービスを提供したい方、 是非当社までご連絡ください。 まずはカジュアルに話をしましょう!

    株式会社プロズサービス
    stealthinu
    stealthinu 2015/02/27
    javaの変数にはポインタが保持されてるというイメージが正しいのか。なんで文字列比較で頑なに「==」での比較ではなくequalsでやるのかなと思ってたが「==」はあくまで同一オブジェクト指してるかに使いたいのか。
  • IntelliJでLombok - しおしお

    この投稿はIntelliJ IDEA Advent Calendar 2013 - Qiita [キータ]の23日目の投稿です。 IntelliJでProject Lombokを使うための手順などなどです。 ※IntelliJ13.0.1を使っています。 Lombokプラグインをインストールする プラグインは設定画面からインストールできます。下の画像のような手順でインストールできます。 Lombokのライブラリをクラスパスに設定する Project Lombokからlombok.jarをダウンロードして依存関係に設定してあげましょう。 または、GradleやMavenプロジェクトで依存ライブラリにLombokを追加してあげましょう。 Annotation Processorsを有効にする 設定画面からAnnotation Processorsを有効に変更してあげます。下の画像のようにEna

    IntelliJでLombok - しおしお
    stealthinu
    stealthinu 2015/01/27
    IntelliJでLombok使うための設定
  • Java特有の冗長なコードを簡潔に記述する「Lombok」

    Javaは言語仕様上の制約により、ボイラープレートコード(自明だが省略できないお決まりのコード断片)がいくつかあります。例えば、メンバ変数を読み書きするだけのgetterメソッドやsetterメソッドがこれにあたります。Lombokを使えば、これらJava特有の冗長なコードを、見やすく簡潔なものにすることができます。記事ではLombokを利用して、ボイラープレートコードをシンプルに記述する方法について解説します。 はじめに 今やJava開発に必要不可欠となったものの一つに、IDEの存在があります。例えばEclipseではメンバ変数さえ定義すれば、getter/setterの自動生成や、equalsメソッドやhashCodeメソッド、toStringメソッドなどの自動生成などさまざまな場面でコーディングを強力にサポートしてくれます。 これは大変便利な機能ですが、裏を返せばJavaの言語仕様

    Java特有の冗長なコードを簡潔に記述する「Lombok」
    stealthinu
    stealthinu 2015/01/27
    Lombokを使うとgetter/setterの自動生成とかをやらずにアノテーションで同様のことが出来る。
  • Java SE 再入門

    Apache Kafka Meetup Japan #3 https://kafka-apache-jp.connpass.com/event/58619/ 発表資料

    Java SE 再入門
    stealthinu
    stealthinu 2015/01/14
    もう7あたりからよく知らん項目がたくさんある… 8は関数型の取り込みが進められたけどもまだ中途半端な印象あるな。
  • Log4j 2にも採用されたLMAX Disruptorはなぜ狂ったように速いのか?

    LMAXという会社はおそらくFX業者で、筆者はLMAXの開発者の講演を、InfoQの動画で何度か見たことがあった。 彼らは非常に特異な集団で、さしずめ「Javaのスピード狂」という感じだ。 印象的なのは、シングルスレッドで仕事を片付けることを強調している点だ。 「Javaならマルチスレッドで並列処理すれば性能が出ると広く思われているが、我々の仕事においてはシングルスレッドが最速だ」というような主張を何度も見た。 ゴールドマンサックスといいLMAXといい、やはり多額の金が動く会社でガチでJavaをやっている連中はカリカリにチューニングするため、技術的には非常に面白い。 彼らがコアのライブラリをOSS化してくれるというのは、金融業界を否定的な目で見る筆者からすると複雑だが、悔しいことに参考になる。 LMAX DisruptorはJavaのライブラリだ。Producer/Consumerパターン

    Log4j 2にも採用されたLMAX Disruptorはなぜ狂ったように速いのか?
    stealthinu
    stealthinu 2015/01/05
    リングバッファ使ってロックを減らす…とか聞くと過去の記憶でうわあああってなる。うわあああって。ネトゲで他の人のアイテム保管庫が出てきちゃったりするバグなの…
  • syboos.jp

    stealthinu
    stealthinu 2014/12/26
    イテレータを使わずにremoveしようと思うとリストの後ろから消さないといけない。まあCとかC++とかでだと普通の感覚なんだけどjavaでもそうなんだな。
  • opencsv –

    Opencsv is an easy-to-use CSV (comma-separated values) parser library for Java. It was developed because all the CSV parsers at the time didn’t have commercial-friendly licenses. Java 8 is currently the minimum supported version.

    stealthinu
    stealthinu 2014/12/18
    JavaのシンプルなCSVパーサ。最近パッケージ名が「com.opencsv」に変わったのね。どうりで…
  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

    stealthinu
    stealthinu 2014/10/01
    例外を握りつぶさない、try-with-resourcesを使う、FindBugsを使う、など。Java力のない僕に一番必要なのは「Effective Javaを読もう」だろうな…
  • 半角カタカナを全角カタカナに変換する(Javaマスター)

    半角カタカナから全角カタカナへの変換時に問題になるのが、 濁点や半濁点記号の処理です。 このサンプルでは、濁点・半濁点記号が出現した際に、直前の文字に合成する処理を 行っています。 package samples.string.japanese; public class HankakuKatakanaToZenkakuKatakana { private static final char[] HANKAKU_KATAKANA = { '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト',

    stealthinu
    stealthinu 2014/08/25
    Normalizer.normalで半角カナ変換すると全角チルダやマイナスも副作用的に変換されてしまう問題が解決出来ない。のでこの古の技術を使って半角カナ変換する…ことになるのか…
  • NetBeansとScalaを使ってAppEngineたんといちゃいちゃする方法 - ( ꒪⌓꒪) ゆるよろ日記

    俺「新しいアプリだよ。さぁ、デプロイするからAppSlotを解放するんだ…!」 appengineたん「で、でぷろい…ですか…?こんなおっきなあぷり…は、入るかな…?」 俺「今日はScalaを使ったアプリケーションなんだよ」 appengineたん「Scalaなんて…そんな変態的なこと…で、できません ///」 俺「もう遅いよ。どうだ? どんどんアプリがアップロードされていくぞ!」 appengineたん「は、入りました…。こんなおっきなアプリケーション…あついです…」 俺「よしテストだ。どんどんリクエストをおくってやるからな」 appengineたん「そ、そんなにリクエストされたら…らめぇっ!!SpinUpしちゃうぅっ!!」 俺「まだまだいくぞ。おらっ!データストアにputしてやるっ!」 appengineたん「らめぇぇ!あっ、あふれちゃうっ!!データが…quotaからあふれちゃうよぉぉ

    NetBeansとScalaを使ってAppEngineたんといちゃいちゃする方法 - ( ꒪⌓꒪) ゆるよろ日記
    stealthinu
    stealthinu 2014/05/30
    NetBeansでscalaの環境作るのの参考に。出だしでだいぶもってかれるがその後はちゃんと参考になります。
  • Javaトラブルに備えよう #jjug_ccc #ccc_h2

    1. 【JJUG CCC 2014 Spring H-­‐2】 Javaトラブルに備えよう 日Javaユーザグループ 上 宜人 (あげつま のりと) はてなブログ : n-agetsuma.hatenablog.com 2. 自己紹介 上 宜人 (あげつま のりと) n  電話の裏側を作っている会社で働いています n  Java/APサーバの社内技術サポート、トラブル解析 n  Blog 『見習いプログラミング日記』 【JJUG CCC 2014 Spring H-­‐2】

    Javaトラブルに備えよう #jjug_ccc #ccc_h2
    stealthinu
    stealthinu 2014/05/19
    javaトラブル対応まとめ。とても参考になる。ログの出力オプションやダンプのコマンドとかまとまってて便利。Evernoteにコピーしておこう。
  • DbUtils – JDBC Utility Component -- Examples

    DbUtils Overview Download Examples Release Notes Dependencies Wiki Development Mailing Lists Issue Tracking Source Repository Building Javadoc Javadoc Archive Project Documentation Project Information Project Reports Commons Home License Components Sandbox Dormant General Information Security Volunteering Contributing Patches Building Components Commons Parent POM Commons Build Plugin Commons Rele

    stealthinu
    stealthinu 2014/05/16
    これはいいな。こういう書き方ができれば確かにだいぶシンプルにきれいに書ける。これは他のコンポーネントも全部眺めといたほうがよいな。