Chonaso's Commentary

InternetやIT技術などについて知ったこと、試したこと、考えたことを書いていきます。

PHP Exceptionクラスの聖域

PHPのExceptionのフィールドtraceがprivateなので仕方なくThrowableを実装したクラスをイチから書くなど。— ちょなそ (@chonaso) 2018年9月3日 うわああああ・・・ pic.twitter.com/tSOsanOxHx— ちょなそ (@chonaso) 2018年9月3日 PHPの触れてはいけない部分…

PHPのfalseの闇

PHPで闇深いといわれる代表選手は == ですが、これについては使わなければいいだけですので、そこまで目くじらを立てる必要はなさそうです。 個人的に闇深いと感じたのが false の使われ方です。 規定の型 or false アノテーション お前どっちのfalseよ!? …

PHPの配列とハッシュ

これは当時の憤りから漏れ出たtweetですが、PHPあるあるの一つなんでしょうけどこれにはクラッと来ました。 実際気をつけないとハマることもあるでしょう。 これが通るPHPはやっぱクソだわ。 pic.twitter.com/TnFvZDcclR— ちょなそ (@chonaso) 2018年1月25日…

PHP浦島太郎

PHP

2017年夏頃から2019年初頭まであるゲームのサーバサイド担当としてPHP業に勤しんでいました。 PHPに最初に触ったのは学生時代で、その頃のPHPに対する認識は print "Content-type: text/html\n\n"; を自動でつけてくれるPerlのエイリアス(しかもCGIより速い)…

近況など(2019年末)

一昨年・昨年に引き続き、異動先のグループ会社で働いています。 昨年書いたときは別の会社のスマホゲームを作っていましたが、2019年2月いっぱいで開発チームから抜けて自社の仕事をしています。 ちなみにそのスマホゲームはすでにサービス終了しています。…

ORA-02287

たまによく踏む。 ORA-02287 ここでは順序番号は使用できません。 sequence number not allowed here -- ORA-02287になる insert into HOGE values ( (select SEQ_HOGE.nextval from dual),SYSDATE) -- OK insert into HOGE select SEQ_HOGE.nextval,SYSDATE…

RundeckのSlack通知テンプレート更新

Rundeckはシンプルなジョブコントローラーですがプラグインによる機能拡張が可能です。 Rundeckのジョブ実行に関する通知をSlackへ飛ばすには公式GitHubにあるslack-incoming-webhook-pluginというプラグインを使用します。 インストール自体はJARファイルを…

AWS EC2のインスタンスIDからグローバルIPを取得する

AWS

開発環境など常時起動しないインスタンスでElastic IPをケチるため。 要AWS-CLI。 aws ec2 describe-instances --profile AWSプロファイル --instance-ids インスタンスID --query 'Reservations[].Instances[].PublicIpAddress' --output text

実録 緊急JVMチューニング

発端 メモリ設定の確認 メモリ使用状況の確認 必要メモリを決める Native領域 Heap領域 ヒープが足りているかの判断 Full GC頻度/時間 Old使用量の増加トレンド メモリリークしていないか その後 追記 発端 Amazon EC2でTomcat/Java8を運用していたとあるサ…

Apple Watchに複数のタイムゾーン時刻を表示させる(2019/11/1 追記)

先日海外出張で台湾へ行ってきました。 初めての海外ということもあり準備の勝手がわからない状況でしたが、現地でちょっと困ったのが時計でした。 現在時刻が分かる持ち込み機器はスマートフォン(数種)、iPad、Apple Watch、Macbookと条件によって自動的に…

近況など(2018年末)

引き続き、昨年異動したグループ会社で働いています。 といいながら事実上別のグループ会社に派遣状態になっています。 資本関係がややこしく、出向先は自分の籍を置いている会社の孫会社、作業場所は自分の籍をおいている会社の子会社(最近になって子会社じ…

JJUG CCC 2018 Fallに行ってきました #jjug_ccc

ここのところ、仕事の大半がPHPなのでJavaの話題に触れたい&刺激をもらいにJJUG CCC 2018 Fallに足を運びました。 所用があったので後半からでしたが非常に興味深い内容ばかりでした。 Deep dive into instanceof #ccc_a5 Deep dive into instanceof 広告配…

近況など(2017年末)

今年夏ごろに異動しましてグループ会社で働いています。 転職後、配属部署→グループ会社に出向→帰任、からの出向なので新卒入社を会社から通算して感覚的には5社目です。 それまでは新規事業のシステム担当でした。 ロクに要件も無い中から開発1年でローンチ…

JJUG CCC 2017 Spring #jjug_ccc に行ってきました

ここ1年、業務へのモチベーションが全く上がらず、それにつられて業務外での情報収集も怠っておりました。 環境も変わる兆しが見えてきたところで少しはモチベーション上げていかないとなぁ、ということで刺激を求めてJJUG CCC 2017 Springへ参加してきまし…

Doma勉強会 in 東京に行ってきました #doma_tokyo #eventdots

Doma は Java のDBアクセスフレームワークです。(Welcome to Doma — Doma 2.0 ドキュメントより) 私が仕切る案件では基本的にDomaを使っています。 部門的にはSeasar2+S2JDBCがスタンダードでしたが、Seasar2が公式アップデートはぼちぼち終了になるので、 …

Domaで複数データベースを扱う

きちんと探せばサンプルありそうな気がするんですが、こんな感じで解決しました、という一例として残しておきます。 Domaを使い始めて2年以上経ってるはずなんですが、振り返ると複数データソースは初めてでした。 daoやentityのパッケージングはどうしたも…

S2DBCPのコネクションプール状態の取得

今さらSeasar2関連です。 HikariCPのデバッグログではコネクションプールの状況を逐一ログに出してくれるのですが、 S2DBCPはそういう機能が見つからなかったので作ってみました。 SAStrutsのアクションとして実装しています。 一つのアプリで複数のプールを…

Zabbix アクションが発動しない時にチェックする項目

自分用メモ。徐々に追記していきます。 アクションが発動しない(メールが飛ばない、など) アイテム 正しく取得できているか 有効/無効 実行間隔 種別は正しいか(数値、文字列、ログ...) トリガー イベントが発生しているか (ログの場合) ステータスが正常状…

Bootstrapのbtnとdisabled

BootstrapのCSSを適用するとbutton以外のタグでもボタン化することが可能です。 さらにdisabledなどの状態も含めたCSSがセットになっているのでデザインにこだわらないWebアプリを開発する際には非常に重宝します。 これにAngularJSのng-clickやng-disabled…

BeanValidatorをJava8 Streamで書く

コードレビューしてて思ったのが、BeanValidatorの処理ってJava8ならもうちょっとスマートに書けるのではないか、ということ。 どうせみんなコピペしてるんでしょ?と思ったので書いてみました。 ちょこっとスッキリしました。 後で自分がコピペして使う用と…

AngularJS & Jerseyでファイルアップロード&JSONでパラメータ連携

Jerseyでのファイルアップロードって、よく見かけるサンプルではファイルもパラメータもmultipart/form-dataで一緒くたにされてしまいますが、実際にはパラメータ内に配列やオブジェクトが含まれていることが多いので、やっぱりいつも通りJSON経由で一撃でバ…

今年買ったガジェット振り返り

昔からガジェット好きを公言してる割には、ここ数年はあんまり変なものは買わなくなった気がします。 以前は様々な機器を駆使して目的を達成させていましたが、最近はスマートフォンやタブレットでほぼ要件が満たせてしまっていて、便利になったのはいいです…

mavenデプロイで軽くハマった件

初期開発ベンダーの秘伝のタレのようなbuild.xmlから脱却して、コモディティ化されたビルド・依存性管理とビルド成果物の管理をきちんとやらなきゃダメ、ってアジし続けて最近になってようやく許しが出たのでSonatype Nexusをセットアップして既存プロジェク…

Seasar2使いがこの先生きのこるには

(手前ツイートですが) ひが氏「Seasar2から卒業して欲しい&Seasar2サポートは2016.9.26で打ち切る 」#seasarcon— ちょなそ (@chonaso) 2015, 9月 26 当初、色んな考え方を書こうと箇条書きにしてみたらかなり発散しちゃったので、あの場で自分が思ったこと…

Seasar Conference 2015 Not 同窓会 But 卒業式 #seasarcon

というわけで行ってきました。 個人的には技術云々のセッションにはほとんど参加せずいわゆる"エモい"セッションに多く参加しました。 ていうかずっとS405に居ました。

メモリが少ない環境でのJava8使用の注意点

諸般の都合でどうしてもメモリが潤沢ではない環境でのテストを行わなければならない場合があるかと思います。 また、Java7もすでにEOLということでJava8の開発も多くなっているかと思いますが、Java8になって初めて遭遇した問題がありました。 そんなわけでJ…

Seasarに思いを馳せる

思いを馳せるどころか今でも普通に使ってるわけですが。 それどころか、Javaメインで数社・3桁近いプロジェクトに携わってきたのになぜか仕事でSpringやGuiceを使ったコードに全く関わることがありませんでした。(なのでプライベートで書き始めることにしま…

YAPC::Asia Tokyo 2015 2日目 #YAPCAsia

1日目も併せてご覧くださいませ。 YAPC::Asia Tokyo 2015 1日目 #YAPCAsia - Chonaso's Commentary@hatenablog 2日目は午前からどっぷりセッション漬けでした。 色々な刺激を受けつつも非常にリフレッシュできました。

YAPC::Asia Tokyo 2015 1日目 #YAPCAsia

昨年に引き続き、YAPC::Asiaへお邪魔しました。 YAPCは今年で最後とのことで個人スポンサーでの参加です。 なお、午前のセッションを聴き始めたら会社から割と緊急なコールで途中退場→その場で障害対応ってなわけで午後からのセッションからの参加です。 例…

Macbook(Early 2015)レビュー

基本的にガジェヲタなので、こっち系も書いていこうと思います。 持ち運べるPCはとしてLet'snoteS10(12インチ)とMacbook Pro 15"(Mid 2014)を持っていましたが、 Let'sはさすがにブ厚さが目立つようになってきたのでMBPを持ち出すことが多くなっていました。…