読者です 読者をやめる 読者になる 読者になる

Status Code 303 - See Other

Java, C, C++, C#, Objective-C, Swift, bash, perl, ruby, PHP, Python, Scala, Groovy, Go, DevOps, Raspberry Pi など。情報の誤りや指摘・意見などは自由にどうぞ。

FizzBuzz を20言語で頑張って書いてみる。

概要 標準出力・ループ・分岐などの練習のためFizzBuzz 問題を各言語で書いてみる。 知っている人は多いとは思うが、念のためFizzBuzzとは何かを説明する。 15の倍数なら「FizzBuzz」 3 の倍数なら「Fizz」 5 の倍数なら「Buzz」 それ以外は その数値 を言い…

Clojure 開発環境を cygwin 上に作る

概要 LISP の流れを組み、Java VM上で動作する関数言語の Clojure を cygwin 上で使えるようにする。 少し苦戦したため、それをメモ。 構築で参考にした記事 Windows でも Clojure がしたい! - Qiita JDKインストール windows用インストーラダウンロード (l…

Haskell を cygwin 上で動かすのに苦労した話

概要 Haskell の動作環境を用意する。cygwin上で動かそうとすると少し苦労したのでメモ。 インストーラのダウンロード 以下をURLから、Windows版のHaskell Platform のインストーラのうち環境に適したものをダウンロード。 Download Haskell Platform なお、…

RaspberryPi に Rest API を簡単に実装

概要 Raspberry Pi に対して情報を取得する際に HTTPを利用してこれを行いたい場合がある。 ruby のウェブフレームワークで有名なのは、Rails だが、Rails は大規模向けであるため 簡素な実装をするにも、構築時間、学習コストが見合わないことがある。 今回…

シェルスクリプト分岐・ループ構文例

概要 Linux 上で便利な機能やマクロ的に処理を行うためにシェルスクリプトを記述することがある。 その中でも比較的よく見かける分岐・ループ構文をメモ。 ファイル状態によって操作を変える テストコマンドでファイルの状態を確認できる。他にも様々なこと…

RaspberryPi で複数 Wifi 環境に個別設定を行う方法

概要 勉強会参加するときに RaspberryPi3 を持ち歩いているのだが、 自宅・外出先で Wifi のプライベートアドレス構成が微妙に異っており、事前に設定しておかないといけなかった。 もし設定を忘れた場合、その場でディスプレイ・マウス・キーボードを借りて…

VirtualBox+Vagrant+Chef(knife-solo) 環境構築(Windows 7+Cygwin) 苦戦記

前回記事 VirtualBox+Vagrant 環境構築(Windows 7+Cygwin) 苦戦記 - Status Code 303 - See Other 前回記事概要 Windowsでコンソールとして Cygwin を利用し、VirtualBox + Vagrant で仮想環境を作成できるようにした。 このとき、苦戦した内容と解決に至る…

Ruby on Rails チュートリアル2章

概要 Ruby の Web Framework である Ruby on Rails のチュートリアルについてまとめる。 対象読者としては、チュートリアルを一度は読んだけどチュートリアルからいちいちコマンドなどを再確認するのが面倒な場合など。チュートリアル 第1章 ゼロからデプロ…

Ruby on Rails チュートリアル1章

概要 Ruby の Web Framework である Ruby on Rails のチュートリアルについてまとめる。 対象読者としては、チュートリアルを一度は読んだけどチュートリアルからいちいちコマンドなどを再確認するのが面倒な場合など。チュートリアル 第1章 ゼロからデプロ…

VirtualBox+Vagrant 環境構築(Windows 7+Cygwin) 苦戦記

概要 この記事で記述すること Windows+Cygwin 上で Vagrant 環境を作成したときに苦戦した内容をメモったもの。 環境 今回は、Windows + Cygwin 環境で行う。 ※ 構築 PC の CPU が仮想化技術をサポートしていない場合、多分できません。(下記参照) ソフトウ…

オブジェクト返却メソッドの異常系実装

概要 今回は、メソッド仕様の話。 オブジェクト値を返却するメソッドにおいて、入力値・プログラム状態によって異常な結果になったときにそれを示したい。 その方法として、以下の3通りが考えられる。 null 返却 例外発生 NULL オブジェクト返却 (参考:サル…

if-else 文と条件演算子(?:)の使い分け

概要 プログラミングを行ううえで、複数の選択があり基本的にどちらでも実装できる処理は数多くある。 これらは常にどっちを使うではなく、これらはプログラムが対象とする処理の内容に応じて使い分けるべきである。今回は、その中でも分岐を表す方法として …

Seasar2 (導入編)

概要 今回は、DI コンテナという少し特殊な技術を用いる。 この技術を使うと、プログラムをコンパイルせずに、プログラム外部にあるリソースファイルを使いプログラムの挙動を制御できる。 また、デザインパターンで言う Factory や Singleton パターンを容…

Dropbox API を使ってみる

概要 普段何気なく使っているツールに、Dropbox がある。このツールは、様々なデバイス間のファイル変更を自動でマージしてくれる他、 リビジョンも保存するため、間違って上書きした場合などに、前回のファイルを復帰することができる。 また、Dropbox は記…

Zabbix API との通信を暗号化する

概要 前回記事 Javaアプリから Zabbix API を使う - Status Code 303 - See Otherjava アプリケ−ションから通信はできたが、HTTP 通信のため平文で通信している。 外部にこれらを公開することを考慮して、今回は通信を暗号化する。また、Zabbix サーバとの S…

例外仕様設計

概要 プログラムが正しく実行できない状態に陥ったときに、それを処理側に通知するための機構として例外がある。 これによって、もしユーザからの入力が想定外のものだったりしても、安全にプログラムを終了させることができる。しかし、仕様を考慮もせず適…

Javaアプリから Zabbix API を使う

概要 前回 curl で疎通確認を行ったが、今回はこれらを Java で実装する。 前回記事:Zabbix API を使ってみる - Status Code 303 - See OtherZabbix API は、JSON 形式で API と通信するため、JSON 形式で通信できるようセットアップする必要がある。 また…

「プラス・マイナス・ゼロ」問題

概要 CodeIQ で私の解いてた問題で、ブログネタにできそうなものがあったので記述。 課題内容 codeiq.jp 自然数 n に対して、次の等式を考えます。 □1□2□3□4…□n = 0 四角の部分には、プラス(+)またはマイナス(-)の記号が入ります。 等式を成立させる…

Zabbix API を使ってみる

概要 前回の記事で(Raspberry PI に Zabbix Server 導入まで - Status Code 303 - See Other) 作ったZabbix Server に対して、API を発行してみる。今回は、curl で通信してみる。 Zabbix API テスト BEFORE Zabbix コンソールから現状のホストグループ構成…

Raspberry PI に Zabbix Server 導入まで

概要 Raspberry pi に Zabbix Server を追加した経験談。 自身の失敗をメモしておくとともに、自身の失敗が誰かの救いになれば良い。・・知識がないとこれほど大変だとは思わなかった。 事の発端 過去に購入したRaspberry Pi 。Raspberry Pi 2 Model B (1)出…

SSHJ による暗号化通信

概要 様々な処理をサーバに任せ、その処理結果だけをサーバから取得したい場合がある。このような通信を行う際、FTP や TELNET を用いて行うと 通信が暗号化されないため、その内容を第三者に盗聴されるリスクを生んでしまう。ここでは、SSH による暗号化通…

C言語 の long int データ型仕様

概要 今回、開発環境でテストすると正しいが、本番環境では正しい結果が出力できなかった。 あまりにバカらしい理由ではあるが、戒めのために記述する。 起こった事 環境 この案件では、C 言語で記述したプログラムを本番環境に送って実行する。 私は、Windo…

各ケースのデータ選択には分岐より規約に基づいた処理を適用する

概要 分岐処理は、手軽に記述できるため、多くの場面で利用される。しかし、あるデータの値によって、途中のデータを選択する処理を分岐を用いて 実装してしまうと、全てのケースをカバーしなければならないため、 新たなケースの追加や既存のケースの修正に…

テンプレートによるロジックとデザイン切り分け

概要 デザインとロジックを切り分ける内容。 本来これらは全く別個に管理すべきなものであるため、分離させたい場合が多くある。 今回は、Java でこの方法を実現する手順を記述。 デザインとロジックの混在する悪い例 public class Main { public static voi…

Lombok ライブラリ - フィールド関連

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、フィールドに定義可能なアノテーションを記述。 (記事執筆時のバージョン :v1.16.6)(更新中) アクセッサ自動生成 指定されたフィールドのアクセッサを提供する。 @Getter どのような…

Lombok ライブラリ - その他

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、クラスとフィールド以外に関連するアノテーションを記述。 (記事執筆時のバージョン :v1.16.6)(更新中) データ同期 @Synchronized このアノテーションをメソッドに設定すると、メソッ…

Lombok ライブラリ - クラス関連

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、クラスに定義可能なアノテーションを記述。 (記事執筆時のバージョン :v1.16.6) クラス性質 ある性質を有するクラス構造を提供する。 @Data 全てのフィールドに対するゲッタ、全ての …

Lombok ライブラリ

概要 Javaでは、クラスにフィールドを追加することによって、 既存のロジックに影響が出たり、新しく追加する必要があるメソッドが存在する。 各フィールドのアクセッサ(ゲッタ/セッタ) 全フィールドを初期化するコンストラクタ hashCode/equalsメソッド toS…

Java でのマイナンバーのチェックデジット作成メソッド

概要 http://www.soumu.go.jp/main_content/000327387.pdf 上記第五条に定義があり、そこでは、個人番号を構成する11桁の番号 およびその検査用数字(チェックデジット)で構成されるらしい。 そこで、11桁の番号からチェックデジットを計算するメソッドを作成…

Java の switch 構文落とし穴

概要 switch 構文は、ある変数がある値のときに処理を分岐させる命令であり、 数多くの言語でサポートされているが、言語により微妙に仕様が異なっている。言語共通の話題も数多く含まれているが、 今回は、Java を前提に switch 構文について記述する。 詳…

プロパティファイルの使用方法

概要 プログラミングでは、処理内容とデータをファイル的に分断したい場合がある。 例えば、プログラム中にデータを書き込んでいた場合。 データの修正漏れや記述ミスにより、特定箇所のみ動かなくなるバグの原因となり得る。 ステージング環境と本番環境を…

static メソッドによるインスタンス生成

概要 static メソッドとは、オブジェクト指向言語において、インスタンスを生成せずとも 処理を実行できるクラスに関連づけられたメソッドである。使用例としては、便利な機能を提供する Util クラスを作成する場合に用いられ、 Java ライブラリでは、java.l…

Facade - GoF デザインパターン

概要 Facade(ファサードと読むらしい)パターンとは、GoF (Gang of Four)デザインパターンの一つであり、 このパターンが意図することは、サブシステムの簡素なインタフェース提供である。それ故、Facadeパターン はそれ単体では、新しい機能を提供しない。 …