フロントエンド

SlackのプレゼンスAPI(presence_change)の仕様が変更(presence_sub)になっていたので対策した件

Slack APIのUser Presence APIが変更になり、従来の方法ではユーザーのプレゼンス(ACTIVE,AWAY)変化を検出できなくなったので、対策したときのメモです。 Javaベースのコード例も掲載します この記事でも触れたSlacklet Javaライブラリにも反映しました。 Presence APIの変化点 いままで ユーザーのプレゼンス状態が変化したときに、presence_change イベントが発生していた。 これから(2017年11月15日以降) ユーザーのプレゼンス状態が変化したときに、presence_change イベントを受...

Android と Java では SimpleDateFormat の書き方がこう違う

みなさんご存じのとおり、 Android API と Java API は微妙に違います。 java.text.SimpleDateFormatも、違っているものの1つです。 タームゾーンや曜日などを指定するパターンが違います。 使えるパターンを使わないと例外が発生します。 Java6とJava7との間にも違いがあるので、抽出しておきました。* 項目名 Java6 Java7 Android API**/*** タイムゾーン(-0800)(RFC 822) Z Z Z, ZZ, ZZZ タイムゾーン(-08, -0800, -08:00)(ISO 8601) なし X ZZZZZ**** タイムゾーン(上記以外色々ま...

SpringBoot×DOMA2 チュートリアル 環境構築から実行まで

はじめに SpringBootでDOMA2使ってみようと思い環境構築してたら、意外と躓いたので、手順を記述しておきます。 環境 SpringBoot2 DOMA2 H2 Eclipse4.7 設定 プロジェクト作成 Eclipse開いて パッケージ・エクスプローラーで右クリック 新規 プロジェクト Springスターター・プロジェクト 名前に「sample」と入力 ※任意 グループに「jp.co.sample」と入力 ※任意 パッケージに「jp.co.sample」と入力 ※任意 「次へ」を押下 「web」にチェック 「次へ」を押下 「完了」を押下 ※ここまで...

Androidでmarkdown(raw)を読み込む [Java / Kotlin]

AndroidでMarkdownを読み込む JavaでMarkdownを読み込むにはres/raw/hoge.mdにmarkdownを配置して private String readMarkdown(@RawRes int rawId) { final Resources resources = getResources(); BufferedReader bufferedReader = null; StringBuilder stringBuilder = new StringBuilder(); try { try { InputStream inputStream = resources.openRawResource(rawId); bufferedReader = new Buffere...

UTF-8のBOMにはまった話

テキストファイルを読み取りたかった  こんなテキストファイルを読み取ろうと思いました。 Data.txt 1,あああ 2,いいい 3,ううう  例としてこれをWindows標準のメモ帳でutf-8で保存しました。  それをJavaのStringへと読み込んで、カンマ区切りで分けました。  splitLine[0][0] = 1、splitLine[0][1] = あああ  みたいにString形式で保存する形です。  そして、このsplitLine[0][0]を数値に変換しようとしてInteger.parseInt()をしたのですが、なぜかNumberFormatExceptionが発...

マインクラフトプラグインでホバーテキストや、クリックでコマンド実行できるテキストを表示する方法

// マインクラフトチャットに、ホバーテキストや、クリックコマンドを設定する関数 // [例1] sendHoverText(player,"ここをクリック",null,"/say おはまん"); // [例2] sendHoverText(player,"カーソルをあわせて","ヘルプメッセージとか",null); // [例3] sendHoverText(player,"カーソルをあわせてクリック","ヘルプメッセージとか","/say おはまん"); public static void sendHoverText(Player p,String text,String hoverText,String command){ ////////////////////////////...

【Java】2種類の基本挿入法の実装

基本挿入法 大きい順または小さい順に並んでいる数列に、ある数を順に 比較しながらその数列に挿入し並び替えていくソートプログラムの1つこと。 これを2種類の方法で実装。 【方法①】 ・挿入すべき位置を探す(ソートされている範囲の先頭から、挿入したいデータと値を比較し、挿入したいデータより大きい値が現われるまで右に移動する) ・右側にあるデータを1つ右に移動する(ソートされている範囲のうち、挿入位置より右側にあるデータを1つ右に移動して、挿入する場所を確保する...

iOS/Swift→Android/Javaの移植ガイドライン

このドキュメントについて 本ドキュメントは Swift で書かれた iOS アプリを Android にポーティングする際のQoncept社内用ガイドライン を公開したものです。社内での利用を主目的としているため役に立つかわかりませんが、何かしら参考になれば幸いです。 ※ 本ドキュメントは Swift から Java への移植を対象としていますが、 Swift から移植する場合、 Java ではなく Kotlin に移植すると幸せになれるかもしれません(特に Optional type とかクロージャとか)。 Java への移植を決...

Android Java ネットワーク状況の判定 オフラインか!?オンラインか!?

Androidでオフライン判定オンライン判定をしたくて検索かけてみたら色々関係無いものがいっぱい出てくるもんで、 調べ方が悪いんだろうけど。 自分のためのメモ書きって事で。 HOW TO まずは、マニフェストに以下の機能を使いますよって記述 AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission> 判定クラスみたいなんを作ってそこに記述 Decision.java public class Decision { // オンライン、オフラ...

java.util.Stream#allMatch() を使うときの注意

public static void main(String[] args) { boolean isAllOfFruitsAreApple_1 = Arrays.stream(new String[] {"apple", "apple"}).allMatch(s -> s.equals("apple")); System.out.println(isAllOfFruitsAreApple_1); boolean isAllOfFruitsAreApple_2 = Arrays.stream(new String[] {"apple", "orange"}).allMatch(s -> s.equals("apple")); System.out.println(isAllOfFruitsAreApple_2); boolean isAllOfFruitsAreApple_3 = Stream.empty().allMatch(s...

簡易RSSリーダーを作ってみた 〜 Java編 〜

Cで書いた簡易RSSリーダーと同じ機能のものをJava逆引きレシピを参考にして、Javaでも書いてみました。JavaのXMLパーサーは、URLを直接指定できたりするので、RSSフィードをダウンロードする処理を書く必要がありませんでした。 サンプルコード DocumentBuilderでアップルのRSSフィードを取得して、サマリを表示します。 import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserCo...

Javaデザインパターンを適用してどのように抽象化し、依存性を排除してゆくかを解説する

はじめに クラス設計に悩む人向けの内容です。 どのように抽象化して依存性を排除してゆくかを解説していきます。 デザインパターンを駆使したクラス設計とリファクタリングをエンジニア歴9年目にしてほぼ初めて行って、しかもいい感じの結果だったのでまとめていこうと思います。 Facade, Abstract Factory, Builderの3パターンを扱います。 ソースコードの全体はGithubのリポジトリを参照してください。 また、各デザインパターンのクラス図はこちらのサイトが詳しいので、クラス図...

電話着信したら、その番号宛にSMSを送る

AndroidManifest.xmlに追記するもの <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.SEND_SMS" /> 書いてあるままだけれど、 + READ_PHONE_STATEは電話に関して + SEND_SMSはSMSに関して の権限。こいつを付与しておく。 Java 電話に関する記述 TelephonyManagerさんとPhoneStateListenerさんが何とかしてくれる。 TelephonyManager telephonyManager = (TelephonyManager) getSystemServic...

系列1つの棒グラフを描画するサンプル

JavaFXで棒グラフを描画したいと思い、調べた結果、以下のURLにたどりつきました。 https://docs.oracle.com/javase/jp/8/javafx/user-interface-tutorial/bar-chart.htm しかし、系列3つのサンプルでした。なので系列1つのサンプルを作ってみました。 以下、段階を追って説明します。 棒グラフの縦、横 棒グラフを描画するにはBarChartクラスを使います。ジェネリックスにはNumberとStringの組み合わせを書くのが基本のようです。NumberとString順序ははグラフを縦にするか、横にする...

オブジェクト指向で作るFizzBuzz

FizzBuzzはみなご存知の通り、初心者向けのアルゴリズムの課題である。 そのFizzBuzzをオブジェクト指向で作ってみようと思ってやってみた。 普通のFizzBuzzのソース 誰が作ってもだいたいこんなソースになると思う。 リスト1 public class Game { public static void main(String[] args) { for (int i = 1; i < 50; i++) { if (i % 3 == 0 && i % 5 == 0) { System.out.println("FizzBuzz"); } else if (i % 5 == 0...

結局のところgetter/setterは要るのか?要らないのか?

Javaを勉強するに当たって表題通りの疑問が湧いたので、色々と調べました。 getter/setterが必要とされる理由に関しては各所で散々解説されているので、"不要派"の意見を重点的にまとめています。 まずオブジェクト指向プログラミングの定石 フィールド=private、メソッド=public フィールドを操作するためにgetterメソッドとsetterメソッドを用意する = カプセル化である。 カプセル化が好まれる理由 メンバ変数のアクセス制御ができるようになる クラス内部のデータ表現を変え...

Google App Engine [Java] で異なる App ID 環境でソースファイルを使い回す方法

こんにちは wezardnet です。今回は備忘録的な内容を書くことにします。 弊社内の某プロジェクトでは、テスト環境と本番環境を異なる App ID で分けています。テスト環境で動作確認して OK であれば本番環境にソースファイルを移すようにしています。このとき、以下のようなケースでコード内に自身の URL をベタ書きしていると、単純にソースファイルを移すことができません。 JavaScript, CSS や画像ファイルを参照している場合(相対パスが使えないガジェットなど) Ajax などで Web...

AndroidでDCIM、Pictureディレクトリのパスを取得する

概要 AndroidでDCIM,Pictureディレクトリのパスを取得する方法の備忘録です。 Environmentクラス パッケージ import android.os.Environment; Android端末の各環境変数を管理するクラス。 Environment.getExternalStorageDirectory()で内部ストレージのパスが取得できる。 DCIM Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/"; Picture Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_PICTURES + "/";

OVal(アノテーションベースのバリデーションFW)のコード例

OValというアノテーションベースのアノテーションによる入力制限を付けれるバリデーションFWを使ってみました。 そのときのコード例をメモします。 依存関係 pom.xml <!-- https://mvnrepository.com/artifact/net.sf.oval/oval --> <dependency> <groupId>net.sf.oval</groupId> <artifactId>oval</artifactId> <version>1.90</version> </dependency> build.gradle // https://mvnrepository.com/artifact/net.s...

CircleCI で Java8 プロジェクトのビルドを通す

プロジェクトルートに circle.yml を配置して、使用する JDK を指定するだけです。 なお、とくに指定がない場合、Java7 でビルドされる模様。 circle.yml machine: java: version: oraclejdk8 Java8 プロジェクトをこの指定なしでビルドしようとすると、以下のような例外が出て、mvn integration-test で Fail する。 参考まで。 [INFO] Compiling 5 source files to /home/ubuntu/winchester/target/classes [INFO] ---------------------------------------------------------...