hatakeのブログ

社会人ひよこプログラマのtil

匿名クラスをシリアライズするときの奇妙な挙動について

TL;DR 非staticのコンテキストで宣言された匿名クラスはエンクロージングインスタンスへの非transientな参照を持つ 匿名クラスでオブジェクトの初期化 Javaでは匿名クラスと初期化ブロックを組み合わせて以下のような書き方ができます。 User user = new Use…

C#で最長増加部分列(LIS)の実装サンプル

競プロTips勉強メモです。 今日の一問は、トランプ挿入ソート!現代AtCoderでは出づらいストレートな知識勝負。問題の言い換え→アルゴリズムによる計算量の最適化、という流れは、まさに競プロ的。問題の言い換えまでは頑張ってみよう!#chokudai今日の一問h…

DICOMでJPEGを扱うときの注意点

DICOMを知っている人向けです。 DICOMでは転送構文というものが定義されており、一般でいうところのエンコーディング規則に相当します。転送構文にはJPEGコーデック指すものが含まれていますが、その中には特殊な形式のJPEGが存在するので扱いには気を付けな…

Javaからexeを起動したらデッドロックしてしまった話

TL;DR 下記の条件をすべて満たすとデッドロックします。 呼び出されるexeが標準出力や標準エラー出力に何か書き込むプログラムを持つ ProcessBuilder.start()やRuntime.exec()の後に何もせずProcess.waitFor()する 解決策はProcessが持つストリームのバッフ…

WSL(旧:Bash on Windows)のルートディレクトリが無い

ものごっつハマったので備忘録です。Ubuntu 18.04を再インストールしていた時の出来事。 昔ルートディレクトリがあった場所 C:\Users\%USERNAME%\AppData\Local\lxss 今(2018/07/25時点)ルートディレクトリがある場所 C:\Users\%USERNAME%\AppData\Local\Pac…

C#で競プロするときの標準入力取得コード(LINQ)

コピペ用です。 実行速度よりも提出速度を速めたいのでそっち系のコードです。 /* 入力系 */ // S string S = Console.ReadLine(); // N int N = int.Parse(Console.ReadLine()); // A1,A2,A3,... int[] an = Console.ReadLine() .Split(' ') .Select(int.Pa…

メソッドグループとは

C#

int→string変換のコードを書きます。 int i = 10; string s = i.ToString; このコードは以下のコンパイルエラーが出ます。 CS0428 メソッド グループ 'ToString' を非デリゲート型 'string' に変換することはできません。このメソッドを呼び出しますか? 上記…

競プロの問題を考える(期待値の線形性):続き

続きです。けりを付けます。相変わらず適当なこと言ってるかもしれません。 silatori.hatenablog.com 問題文 数列 ( ) の 美しさ を、隣り合う 2 項の組であって、 差の絶対値が d であるものの個数として定義します。 例えば、d=1 であるとき、数列 (3,2,3,…

競プロの問題を考える(期待値の線形性)

昨日の続きです。ただしく理解できているかあやしいですが、脳内を公開しておきます。 silatori.hatenablog.com 問題文 数列 ( ) の 美しさ を、隣り合う 2 項の組であって、 差の絶対値が d であるものの個数として定義します。 例えば、d=1 であるとき、数…

和の期待値は期待値の和

某所で話題になった問題を調べていたらおもしろかったので紹介します。 問題文 数列 ( ) の 美しさ を、隣り合う 2 項の組であって、 差の絶対値が d であるものの個数として定義します。 例えば、d=1 であるとき、数列 (3,2,3,10,9) の美しさは 3 です。各…

DataTemplateの中からDataContextのプロパティにバインドできなくてハマったこと

WPF

コレクションをItemSourceにバインドするとコレクションの要素にアクセスできる代わりにDataContextのプロパティが見えなくなりました。よく考えると当たり前ですけどハマりました。 RelativeSource こんな感じでバインドの設定をすると親のDataContextにア…

WPFで画面とロジックを分離する(ICommand 理論編)

WPF

ICommandとは何者か。という覚書きメモです。下記の実装編のコードがなぜ動くかの補足です。 silatori.hatenablog.com ICommandインターフェース ICommandは標準ライブラリにあるインターフェースです。このICommand型のプロパティをViewModelで作成、Viewに…

WPFで画面とロジックを分離する(ICommand 実装編)

WPF

描画とドメインロジックを一緒の場所に書くとすぐスパゲッティができます。(体験談) VisualStudioのイベントハンドラ自動生成機能はすごく直感的にGUIプログラミングができますが、代償としてイベントハンドラが生成されるコードビハインドが非常に大きくな…

WPFでプロパティの変更をトリガーにしてアニメーションするときにハマったこと

WPF

DataTriggerを使ってアニメーションをするスタイルを作ってハマってしまった。以下が間違ったコード。これだと初期化したときしかアニメーションしなかった。 <Style x:Key="animetionStyle" TargetType="StackPanel"> <Style.Triggers> <DataTrigger Binding="{Binding IsChecked}" Value="true"> <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> </storyboard></beginstoryboard></datatrigger.enteractions></datatrigger></style.triggers>

技術ブログはじめました

新人扱いされなくなってきた今日この頃… 仕事で勉強したことの備忘録として、ついにブログはじめました。 Today I Learnedな自分用メモなので内容は薄めです。 SNSに書けないオタ活も書きます。 しらとり(@silatori) 2016年新卒でソフトウェア開発会社に入社…