出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

リングバッファの識別子にビットマスクを用いる

言語によらず、プログラムを書くときの実装技術の1つ。
特にメモリの制約がゆるく、リングサイズに強い制約が無いときは
(リングサイズが特定の値である必要が無く、一定以上であればよいとき)
リングサイズを2のるい乗とし、識別子にはリングサイズ-1とする。

当然知識としては知っているけど、
とっさにリングバッファを実装するときには実践できていなかったのでメモ。

続きを読む

書評:シェルスクリプト高速開発手法入門

シェルスクリプトCMSを構築してしまう、という内容の濃さに惹かれて手に取った。
実際に業務において簡単な検証にはシェルスクリプトを多用するため、
よりシェルスクリプトを使いこなせるようになる上で参考になればと期待した。

実際に大いに参考になりそうで、今後記載された技術を活用していきたいと思いつつも、
あくまで一部を参考にする程度で思っていたほどには満足できなかった。

続きを読む

実行環境に応じてログの動作を切り替える

ローカル環境では標準出力(または標準エラー出力)にデバッグプリント文を出力し、
リモート環境ではなにもして欲しくない。
これをすべて自動で実現させるための方法についてまとめておく。

具体的には、プログラミングコンテストデバッグコードの除去ミスがあったので
同じミスを二度と起こさないようにするための方法。

続きを読む

SRM619Div2Medium ChooseTheBestOne

アルゴリズム的に何か難しいわけではないけど、
実装上の工夫?として必須だと感じたのでメモ。

TopCoder Statistics - Problem Statement

問題の概要は以下の通り。
N人を円状に並べ、1〜Nで番号付けする。
1番目の人から時計回りに以下の操作を繰り返す。
t番目の操作に対して、t^3番目の人を円から削除する。
t+1番目の操作は削除した人の次の人から開始する。
このとき最後まで残された人の番号を求める。

続きを読む

オブジェクトの比較に'=='演算子は使ってはいけないというあたりまえの話

Javaのようなオブジェクト指向言語を学べば1〜2日で習うであろう事に
オブジェクトの比較に==は使ってはいけないということ。

あろうことか、Javaを5年以上使っていながら
このミスを犯してしまったので、そのミスをまとめておく。

続きを読む

読書記: ソースコードリーディングから学ぶJavaの設計と実装 (第1章)

2014年はJavaをしっかりと学び直そう、という目的の元に
いろいろなJavaに関連する技術書を勉強する。
まず第一弾として、ずっと気になっているソースコードリーディングに関するこの本。

ソースコードリーディングから学ぶ Javaの設計と実装

ソースコードリーディングから学ぶ Javaの設計と実装

とりあえず第1章を読んだので、そのまとめ。

続きを読む