投稿

ラベル(日報)が付いた投稿を表示しています

2017-09-15 日報

コーディング作業が一段落したのでドキュメント作成を進める。 先日下書きしてたので半日で書きあがった。 あとはテストだが、データ準備とか環境整備とか面倒くさい… 今日調べたこと [Webデザイン] iPhoneXの画面について iPhone X の Safari における Web コンテンツの表示 – ONO TAKEHIKO – Medium iPhoneXのディスプレイ上部に出っぱった部分があったり、上部・下部はシステム領域的な扱いになっているのにも関わらず、Safari (というかViewport) の設定でシステム領域的な箇所にまで表示領域を広げる事が可能になっている。 システム領域的な箇所のタッチイベントは iOS がキャッチしてしまいブラウザ側には届かないので、操作できない箇所が生じてしまう、という問題。 CSSでシステム領域的な箇所のサイズが取得できるから padding なり margin なりを設定しろ、という事みたいだけど、そのプロパティをSafari以外が解釈できなかったら意味なくね?という話。 iPhoneXでのAutoLayoutをきれいに書くための試行錯誤 - Qiita iPhoneXが出てきたらディスプレイ解像度のパターンも増えるのでAutoLayoutきちんと実装しなきゃね、という内容。 [PWA] pwa_study アウトラインメモ | Web Scratch PWA難しいなー Android/iOSでアプリの配布や前述のディスプレイ解像度なんかの問題があるから、Webアプリの方が展開・運用・保守が楽だと思う。 Webアプリ化の問題点はオフライン状態で使用できない事だけど、PWAにすればその課題も解消できるはず。 …なんだけど、僕の知識不足で記事が理解しきれない。なんとか時間を作ってHelloWorld的なものを作ってみたいなー。

2017-09-14 日報

Twitterの埋め込みテストも兼ねて… GTDの簡易版をチームで回す、って感じ。これWebサービス化すればいいんじゃない? / “プロジェクトの残業を50%削減したタスク管理手法を惜しみなく公開する - Qiita” https://t.co/Vwzf7bmUlY — きむら (@KazunoriJs) 2017年9月14日 今日調べたこと [Jersey] 単純なHashMapを返すAPI わざわざ Pojo を作るまでもない、単純なデータ形式を返したかった。 以下を参考に実装。 java - HashMap to JSON response in Jersey 2 - Stack Overflow

2017-09-13 日報

昨日投稿できなかったので2日分をまとめて投稿。 今日調べたこと [Java] Map -> List 変換 Map<Object, T>#values() を取得して List<T> にしたかった。 ArrayList のコンストラクタにあるのね。一発でした。 List<T> list = new ArrayList<T>(map.values()); 【Java実践】Map→List、List→Map変換方法まとめ | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト [Java] Java で LeftPad / RightPad Commons Lang の StringUtils にあるけど、わざわざ Commons Lang を導入するほどでもないので自作。 実際には RightPad しか必要なかったんだけど、どうせなので LeftPad も実装しておいた。 public class StringUtility { /** * 方向 */ public enum Direction { Left, Right } /** * 文字列が空か判定します * * @param str * @return */ public static boolean isEmpty (String str) { if (str == null ) { return true ; } if ( "" .equals(str)) { return true ; } return false ; } /** * 対象文字列が指定された桁数になるまで左側に文字列を追加します * * @param source 対象文字列 * @param length ...

2017-09-12 日報

現行システムのRedis対応を進めていて、他人が書いた画面のLogicクラスなんかを見てるんだけど、コレ何がやりたいの?とか、明らかに別Logicクラスからコピペしてきたメソッドをちょろっと修正してるんだけど、コメントはそのままなので処理内容とコメントが合っていないとか、1つのメソッドにダラダラと200〜300行くらい処理を書いていて、やってる内容はあるPojoクラスから別のPojoクラスにデータの中身をコピーしてる (つまり entity1.setProp(entity2.getProp()) がメソッド内の半分くらいある) とかを見ていて、ちょっとコメント書けばわかりやすくなるのに、priveteメソッドに分割すればスッキリするのに、とかいうのがいっぱいでストレス溜まる。 リファクタリングする際にペアプログラミングすればスキルアップになりそうだけど、別に僕の同僚でもなんでもないのでコッチで直してしまう。 今日調べたこと Jersey と Apache Tomcat を使って RESTful な Web サービスを作成する POST (create) した時のResponseに採番したIDをセットしたいなぁ、みたいな。 model#create(Object entity) すると採番した id が返ってくるとして… int id = model.create(entity); URI uri = uriInfo.getAbsolutePathBuilder().path(id).build(); return Response.created(uri).build(); みたいな感じ。定型パターンだな。 IBM Knowledge Center - UriInfo オブジェクトを使用した URI に関する情報の取得

2017-09-08 日報

デブサミ関西に行くつもりだったけどプロジェクトの進捗が芳しくないので作業。 他人に振ったタスクが思ったより重たかったので、一部巻取り。 今日調べたこと [Jersey] 単純なGETのAPIでエラーコードを返す 他人が作ったAPIを見てて、Exceptionを捨てて空のEntityを返している箇所が多数あったので、適切にエラー処理をするよう修正。 WebApplicationException をthrowして、メッセージに Exception の内容をセットした。 JSON・XMLを返すけどエラー時はステータスコードやメッセージを選びたい - edgegram [Redis] Pub/Subの説明 Redisを知らない人向けにPub/Subとはなんぞや、という説明が必要になった。 チャットアプリの例が直感的かな。 3分でRedisのpub/subを使ってみる【redis】 - DRYな備忘録 [Eclipse] プロジェクトごとにインデント設定を変える 同じシステムの異なるプロジェクトにおいて、インデントの文字がタブだったりスペースだったり。 案件の初期に統一しなかった僕が悪いので、プロジェクトごとにエディタ設定を変えるようにした。 Eclipseではプロジェクトのプロパティから Java コード・スタイル -> フォーマッター を プロジェクト固有の設定を可能にする とすれば設定可能。 Eclipse のエディタでタブ幅を指定する / タブ文字ではなく空白を利用する方法

2017-09-06 日報

電磁パルス攻撃とかされたら仕事できんなー、と思った。 ほとんどの職種で影響甚大なんだろうけど、プログラマーだと顕著だ。PCが壊れると何も出来ない。 サラリーマンだったら電磁パルスの影響中も給料出るのかな? だとしたら、フリーランスは戦争になると収入が無くなるのでサラリーマンに比べてリスクが高いと言える。 今日調べたこと スネークケースをキャメルケースに変換 テーブル定義書からコードを生成するのに、スネークケースからキャメルケースに変換したい事がある。 たいしたコードじゃないけど、毎回実装している気がするのでメモ。 function toLowerCamelCase (str) { return str.replace( /_./g , (s) => { return s.charAt( 1 ).toUpperCase(); }); } function toUpperCamelCase (str) { // 1文字目を大文字にする let val = str.substring( 0 , 1 ).toUpperCase() + str.substring( 1 ); return val.replace( /_./g , (s) => { return s.charAt( 1 ).toUpperCase(); }); } javascriptでキャメルケースとスネークケースの相互変換 - Qiita

2017-09-05 日報

めっちゃコード書いてた。 今日調べたこと [Redis] pipelining と transaction の違い stack overflowに超分かりやすい回答があった。 パイプライン処理は、主にネットワークの最適化です。これは基本的に、クライアントが一連のコマンドをバッファリングし、それらを一度にサーバーに送ることを意味します。これらのコマンドは、トランザクション内で実行される保証はありません。ここでの利点は、すべてのコマンドのネットワークラウンドトリップ時間を節約することです。 Redisはシングルスレッドなので、個々のコマンドは常にアトミックですが、異なるクライアントからの2つのコマンドは、例えば、それらの間で交互に実行できます。 しかし、Multi / execは、他のクライアントがmulti / execシーケンスのコマンド間でコマンドを実行していないことを保証します。 pipelining vs transaction in redis - Stack Overflow [Redis] Jedisでの Pipelineの使い方 AdvancedUsage · xetorthio/jedis Wiki 場合によっては、さまざまなコマンドを送信する必要があります。素朴なやり方よりも優れたパフォーマンスを発揮する、非常にクールな方法は、パイプライニングを使用することです。こうすることで、応答を待たずにコマンドを送信することができ、実際には最後に応答を読むことができます。 Pipeline p = jedis.pipelined(); p.set( "fool" , "bar" ); p.zadd( "foo" , 1 , "barowitch" ); p.zadd( "foo" , 0 , "barinsky" ); p.zadd( "foo" , 0 , "barikoviev" ); Response<String> pipeString = p.get( "fool" );...

2017-09-04 日報

文章を推敲していると余計な時間を食ってしまうので、思いついたことを書き連ねることにした。 ITエンジニアの評価などについて。 食べログみたいにお客さんに「この人と仕事してよかった!」みたいな評価をしてもらい、それを職務経歴書と一緒に公開することでエンジニア能力を客観的に表すことはできないだろうか。 ランサーズとかクラウドワークスではそういう仕組みがあるのかな? 今日調べたこと [Java] 未実装であることを表現する方法 非推奨メソッドとする場合は @Deprecated を付ける。 その操作をサポート (実装) していないというときは UnsupportedOperationException をスローする。 Javaクラス使用メモ(Hishidama’s Java Class use Memo) Java例外の投げ方メモ(Hishidama’s Java throw Memo) [Redis] ZSETでスコアを指定して要素を削除 ZREMRANGEBYSCORE で min と max に同じ値をセットする。 ソート済みセット型 — redis 2.0.3 documentation ZREMRANGEBYSCORE Redis [Redis] LISTのpush/pop 単純なキューを実装するときに右を最新とするのか、左を最新とするのか、どちらが直感的かを考えだしたら分けわかんなくなってきた。 今回は rpush, lpop (右に追加して左から取り出す) にした。 んー、反対な気がするなw 僕は左利きなので、こういう時に他人と反対になっちゃう。 リスト型 — redis 2.0.3 documentation [Redis] Pub/Subしたときに受信したかどうか RedisのPub/Subにおいて、Publishする方で、クライアントがデータを受信できたかどうかを判定する方法。 悩むまでもなく、PUBLISHコマンドの戻り値が受信したクライアントの件数だった。 万が一、Subscribeしてるプロセスが死んでいた場合にデータが時空の狭間に消えていくと困る気がするので、PUBLISHの戻り値が 0 なら LIST に保持することにした。 ...

2017-09-01 日報

他者の作業がボトルネックになって自分の作業が進められない。 影響がなさそうなプログラムから先に実装を進めていくことに。 やっぱりチャットツールがある方が仕事やりやすいなぁ。 事前の登録なんかが容易で チャンネルとかの参加とか退出が手軽で メンションが容易に飛ばせて Botなんかが楽に導入できる って感じのチャットツールないかしら。 今日調べたこと Jersey Clientの使い方 » Jersey Client API : Java でWeb API Client を作成する方法 TECHSCORE BLOG Web API の死活監視がしたいだけだったので、レスポンスをStringで受けることにした。 HTTP Status Codeをチェックしていないので微妙だけど、とりあえず要件は満たしているのでOK。 Propertiesで取得した値の走査 java.util.Properties は Mapインターフェースを実装してるから拡張for文で全要素を走査できるのね。 public class Config { public void function () { Properties prop = new Properties(); InputStream stream = Config.class.getClassLoader().getResourceAsStream( "config.properties" ); try { prop.load(stream); stream.close(); for (Entry<Object, Object> entry : prop.entrySet()) { // なんかの処理 } } catch (IOException e) { e.printStackTrace(); } } } Java Propertiesで習得したプロパティファイルの内容をMapに詰め込み表示する - Code Log Properties (Java Platform SE 8 ) ...

2017-08-31 日報

コーディングする気分じゃなかったので、PowerPointの資料作成を先に進める。 クラス図かシーケンス図があった方が分かりやすいかも、と思ったけど作るの面倒くさいし読んでくれるかどうかも分からないので、ソースからクラス図を自動生成できないか軽く検索。 どうやらEclipseのプラグインで出来そうなので、後日試す。 Web APIの死活監視の実装をどうやろうか検討。 version返すAPIを用意して、それを定期的に呼んでチェックしよう。 今日調べたこと [Java] Jersey Clientの使い方 1年くらい前に実装したんだけど、使い方を忘れたので再度確認。 Chapter 5. Client API JAX-RS Client メモ - REST API を呼び出してレスポンスをBeanにマッピングする - Qiita BaseのURLとpathを別々に渡すんだよね。変な仕様だ。 [Java] HttpClientのサンプル Webアプリの死活監視のためにJavaでHTTP接続する手順。 HTMLの中身が欲しいわけじゃないので HEAD とか OPTION とかでもいいんだけど、まぁ GET しとこう。 JavaでのHttpClientサンプル - CLOVER

2017-08-30 日報

実装が一段落したので、PowerPointで説明資料を作成中。 なにかの資料で「日本語フォントはメイリオ、欧文フォントはSegoe UIがよい」とあったので試してみようと思ったんだけど、 Segoe UI は Windowsにしか入ってないのね。 メイリオ はMacでもOfficeインストール時に一緒に入ってたから Segoe UI もインストールしてくれてると思ってた。 そもそもMac版PowerPointだとフォントを自由に設定できなくて辛い。 おそらくWindows版との互換性のためだと思うけど、もう少しなんとかならんものか。 今日調べたこと [PostgreSQL] setvalしたときにトランザクションはどうなるの? 9.16. シーケンス操作関数 シーケンスはトランザクションとは異なる扱いを受けるため、setvalによる変更は、そのトランザクションがロールバックされたとしても元に戻りません。 なるほど。 [PostgreSQL] truncateしたときにsequenceも一緒にリセットする TRUNCATE RESTART IDENTITY を付ければよい。 デフォルトは CONTINUE IDENTITY (シーケンスの値を変更しない) [PowerPoint] PowerPoint 2016 for Mac でテーマのフォントを変更する MacのPowerPointからは予め用意された「フォントパターン」からしか選択できない。 Theme Fonts フォルダに自作のXMLを配置すると「フォントパターン」の選択肢に追加表示されるので、XMLを書くしかなさげ。 手順は以下を参照 Mac版PowerPointで、テーマの「フォントパターン」をカスタマイズする | It’s Real Intelligence! 7 PowerPoint for Mac 2016でユーザ定義の「テーマのフォント」を作る - Qiita フォントについては以下が参考になった。 パワーポイント関係なく、普通に使えそうな情報。 互換性を考慮した、パワーポイントにおすすめのフォント一覧 [CSS] font-smoothプロパティについて font-sm...

2017-08-29 日報

ここ数日、ソースコードをモリモリ書いてる。 小さい常駐プログラムを3つ、ほぼ実装完了。あとは他人のチケット完了待ち。 よく「在宅ワークで集中して作業できる?」って聞かれるんだけど、やるべきタスクが明確になっていないから作業に集中できないんじゃないか、と、ふと思った。 事務処理なんかも全てチケット駆動にすれば捗るんじゃないかなー。 僕は10年近くGTDを意識して仕事やってるから、チケット駆動的なやり方が染み付いているんじゃないかしら。 今日調べたこと Java enum の要素に String を持たせる 列挙型(Enum)に文字列や数値を利用する備忘録 - Qiita 【8分でわかる】Enumクラスで文字列を使った比較・変換テクニックをわかりやすく解説! | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト public enum DataType { HOGE( "hoge" ), FUGA( "fuga" ), PIYO( "piyo" ), ; private final String text; private DataType (String text) { this .text = text; } @Override public String toString () { return this .text; } public static DataType getDataType (String text) { for (DataType t : values()) { if (t.toString().equals(text)) { return t; } } throw new IllegalArgumentException(String.format( "'%s' is undefined." , text)); } } enumにprivateなコンストラクタを用意し、private finalなインスタンス変数にコンストラクタの引数で与え...

2017-08-28 日報

JavaでWindowsサービスでマルチスレッドな処理を実装。 ざっと実装してみたけど、スレッドが interrupt されたときの動きが自信ない。 RDBへの処理をrollbackしてからスレッドを中断するように実装したつもりだけど… テストが面倒臭いなぁ。 進捗を稼ぐためにも、細かい部分はTODOにしておいて、現状ガリガリ実装できそうな箇所をドンドン進める。 今日調べたこと Threadのinterruptメソッドの使い方 - Qiita for文の中で isInterrupted かどうかをチェックして、trueならrollbackしてから InterruptedException を投げるようにした。 上手く動くか要テスト。 Java 実行しているマシンのホスト名を取得 / Chat&Messenger hostnameじゃなくてaddressを使った [Java] 自分自身のプロセスIDを取得する方法 - Qiita サービスがエラーとかになった時、pidが分かった方が便利そうだったので。 Redisのpub/sub関係 明日使うのでリンクだけメモっとく A Simple Jedis Publish / Subscribe Example パブリッシュ/サブスクライブ — redis 2.0.3 documentation

2017-08-25 日報

作成したModelクラスの動作確認がしたいんだけどPostgreSQLをMacにインストールするの嫌だなー、と思ったのでdockerでpostgresのイメージを起動してテストしてみたら、思いの外簡単便利だった。 今週作ってたORマッパーもどきを搭載したModelクラスは問題なく動いた。 やっぱすげーな、僕。 あとはサービス監視の仕様について検討してテキストにまとめたり。 ちょっと体調悪いので早めに営業終了。 今日調べたこと Postico – a modern PostgreSQL client for the Mac Mac向けのPostgreSQL GUI Client。 使いやすいかどうかは知らんが、接続確認にはちょうど良い。 PostgreSQL JDBC Download PostgreSQLの JDBC Driver は JDKのバージョンに合わせて選択するのが正しい模様。 Maven Repository: org.postgresql » postgresql » 42.1.4 PostgreSQL公式がMavenにアップしているヤツ。 PostgreSQLで検索すると3rd Partyなやつ(バージョン表記がおかしい)が引っかかってくる。 Docker for Mac で 日本語locale設定を含む PostgreSQL を構築 - Qiita dockerでPostgreSQLのイメージを実行する手順。 日本語locale対応はやってない。今回はユニットテストが通ればよいので。 まぁ、必要になったらやればいいか。

2017-08-24 日報

getGeneratedKeys について調査。 commit の前か後ろ、どっちに getGeneratedKeys すればよいかわからなかったので。 commit 前で問題なかった。 java - How to get the insert ID in JDBC? - Stack Overflow java - PLSQL JDBC: How to get last row ID? - Stack Overflow Oracleの場合はどう実装したらいいんだろう? テスト環境とか用意するの面倒なので、後日また調査する。 テーブル定義書のメンテしてて、Excelの便利Tipsを見つけた。 Office TANAKA - Excel Tips[空白行を削除する] 選択セル範囲の中で空白セルだけ選択して削除後、セルを詰める。 Mac版Excel 2016でも問題なく動いた。

2017-08-23 日報

夕方から用事があって、23日中に日報が書けなかった。 スマホからも投稿できるようにしたい。 Modelクラスの実装を進めている。 結局ORマッパーみたいなのを自作してしまった。 これなら最初から commons-dbutil あたりを使った方がよかったなぁ。 参考にしたのは以下。 データベースの値をJavaBeansに入れる - Qiita Javaリフレクションメモ(Hishidama’s Java Reflection Memo)

2017-08-22 日報

作業スケジュール、役割分担についての打ち合わせ。 久々に内容のある打ち合わせが出来た気がする。 Model クラスの abstract クラスを実装中。 フィールドの型情報をどう扱うか悩ましい。 リフレクションを駆使して Pojo のフィールドの型から推測するか… ただ、日時のデータは Pojo に文字列で持ってるんだよなぁ。 誰だよ、こんな設計にしたの。

2017-08-21 日報

RDB(PostgreSQL)の接続を行うDAOのAbstractクラスの実装。 コネクションプールの実装に commons-dbcp2 を使おうと思って色々調査。 まぁ、実装はすんなりできた。動くかどうかは知らん。ってかテストする環境を準備するのがメンドイ... プロパーに作業を振ってくれ、と言われたので実装クラスはお任せする予定。 僕が手を入れていない現行プログラムで、DB周りの処理がボトルネックになってるんだけど コネクションプール使ってないからじゃないか? ## 参考 [Commons DBCPを使ってみる - Murayama blog.](http://murayama.hatenablog.com/entry/20090927/1254034778) この記事の末尾にコネクションプールを使用した際に接続-切断を繰り返した際の所要時間をまとめてるけど、2回目以降の接続は1,000ms以上短くなっている。 なんかプログラムを大幅改造する前に試す価値があったように思う... * [DBCP – Overview](http://commons.apache.org/proper/commons-dbcp/) * [apache/commons-dbcp: Mirror of Apache Commons DBCP](https://github.com/apache/commons-dbcp) * [Maven Repository: org.apache.commons » commons-dbcp2 » 2.1.1](https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2/2.1.1) DB周りの実装時に参考にしたサイト * [postgres crud DAO](https://gist.github.com/jacobandresen/1713081) PostgreSQLで auto increment * [PostgreSQLでMySQLのようなAUTO_INCREMENTをしたいとき。 – こととこネット](http://blog.cototoco.net/work/201503/postgresql%E3%81%A7mysql%E3%81%AE%E3%82%88...

2017-08-19 日報

夏季休暇後、急な発熱でダウン。 予定よりも進捗が芳しくないので、土曜日ながら作業。 常駐プロセスの基本設計。Markdownで書き下す。Excelの仕様書は滅べばよい。 設計書の保存場所はどこにするのが良いか悩ましい。 趣味のプログラムなら、プロジェクト内のreadme.mdなんかに含めるのが分かりやすいと思う。 っていうか、やっぱりドキュメント類がSVN上にあるのはキモチワルイ。 Redmineのチケット整理。 やっとPMがチケットを見直してくれた。あとはチケット見直しを定期的にやってくれればいいんだけど。

2017-08-10 日報

RedisへのIOを隠蔽するための abstractなclass、RedisDaoBase を作成し、それを継承したクラスを2つ作成。 さらに、JUnitのテストコードを作成。 とりあえず Redis <-> Model の超基本的な実装はできたので、夏季休暇明けにゴリゴリと組み込んでいく。 あとはRedisのPub/SubをModelクラスでどう扱うか... ## 参考 * [JUnitで依存関係のあるテストメソッドを順序通りに実行させる方法 - Qiita](http://qiita.com/nikuyoshi/items/e66ea8b1dfadf7ba52c2) * [Eclipse + Maven でソース管理するときの最適解(と思われるもの) - Qiita](http://qiita.com/greencoffeemaker/items/7b57a407c37b8d0a4d2b)