sai’s diary

プログラミング関連の備忘録とつぶやきを書いています。

C - 配列変数のアドレス参照方法の違い(配列要素のアドレスと配列自体のアドレス)

配列のポインタを取得したい場合 a)配列名のみ b)&配列名[0] c)&配列名 の3通りの書き方があります。 アドレスはいずれも同じになるためあまり気にしていませんでしたが人に聞かれて調べてみたところ演算結果に差異があったのでメモ。 a)、b)は配列に含まれ…

shape形式の読み込み

国土数値情報で公開されているshape形式のデータを見てみようとしたら手ごろなビューワーが見つからなかったので調べたところ、Rubyでcsv形式に出力出来ました。 どの様なデータが公開されているかは以下で見てみると分かりやすいと思います。 国土情報ウェ…

MacでIntelliJ IDEA14を動かす

システムテスト自動化のワークショップ参加に向けてMacにJDK8とIntelliJ IDEA14を入れたのですが 起動したらJDK6以前でないと起動出来ないとエラーが出ました。 ググってみるとアプリのInfo.plistを編集すると起動出来るというコメントを見つけたので 試して…

Windows用のloopbackアドレス簡易パケットキャプチャ

WindowsだとWiresharkでloopbackアドレス宛の通信がキャプチャ出来ない、ということでrawソケットを利用した簡易版pcapファイル作成プログラムを作成してみました。 C#でもunsafeを利用するとポインタが扱える、 pcapファイルは意外とフォーマットが単純だっ…

雑多 - Windows8.1が不調なのでシステムファイルチェッカーを使ってみました。

自宅のPC(Windows 8.1)が度々ブルースクリーンになる様になってしまったのでOS再インストール以外に手はないかとググったところ、システムファイルチェッカーなるものがあると知り、試してみました。 実施方法はマイクロソフトのサイトで説明されている様に…

C# - Windows サービス アプリケーションのお試し

C#を扱うことになりそうなので、勉強のためWindowsのサービスアプリを動かしてみました。 ビルド環境の準備 ビルド環境はフリーのSharpDevelop 4.4を利用。 SharpDevelop 4.3用の日本語化パッチがあり、適用してみたところ大丈夫そうでした。 日本語化パッチ…

Ruby on Rails - メールアドレスの取り扱いについての疑問。

Ruby on Railsチュートリアルの6.2.5一意性を検証するで紹介されていたテクニックで、メールアドレスをDBに登録する際にDB登録前のコールバック処理でメールアドレスをすべて小文字にする処理が紹介されていましたが、ローカルパート(@より前の部分)まで小…

IPsec(ISAKMP、ESP)の復号化手順

仕事が忙しくRuby on Railsの勉強が滞っています。。。 なのでまたネットワークネタです。 今回はLinux+strongswanでのISAKMP、ESPの復号化手順です。 環境 環境は以下を使用しています。 CentOS release 6.5 (Final) + strongswan-5.1.3-1.el6.i686 + Wires…

IPv6 - 送信元アドレスの選択

ネットワークネタですが、IPv6の場合、単一インタフェースにリンクローカルアドレスやグローバルユニキャストアドレスといった複数のアドレスを設定し、利用することになります。 複数のアドレスを持つ場合、通信時に送信元アドレスを決定する必要があります…

iptables - おすすめのチュートリアル

ネットワーク関連の投稿になりますが、LinuxにはフィルタやNAT/NAPT機能を実現するnetfilterという強力なフレームワークがあり、ユーザはiptablesまたはip6tablesコマンドで操作することが可能です。 Iptablesチュートリアル 1.2.2は「チェーンって何?」「…

Ruby on Rails - 良さそうなチュートリアル

Ruby on Railsのアプリを作るにあたり、良いチュートリアルがないかと調べたところ下記サイトに辿り着きました。 Ruby on Rails チュートリアル:実例を使って Rails を学ぼう ななめ読みですが良いと思った点は「Bundlerの動作」や「gitリポジトリの作成、…

Ruby on Rails - railsのインストール

railsのインストール Rubyのインストールは終わったので次はrailsをインストールします。 railsはgemコマンドでインストールするだけなのでとても簡単でした。 gemにもsearchコマンドがあったので事前にrailsのバージョンを確認してみると4.1.5がインストー…

Ruby - 環境構築

これまでC言語、シェルスクリプトがメインでしたが、技術の幅を持たせようと思いRubyの勉強を始めました。 なぜ、Rubyかというと以前、簡単なツールを作成する際に興味本位でRubyを利用してみたところコーディングの手軽さと ライブラリによる拡張機能の豊富…

バインドマウント

mountコマンドの--bindオプションを使用するとマウントポイントを別のディレクトリにバインドマウントすることが出来ます。 マウントポイントにはマウントプロパゲーションという概念があり、以下の設定により、 マウントイベント(マウントポイント配下のマ…

malloc_usable_size() - malloc()で確保したサイズを取得したい場合。

当時、何の用途で調べていたか忘れてしまいましたが、 malloc_usable_size()を使用するとmalloc()で確保したアドレスからサイズを取得出来ます。 #include <stdio.h> #include <stdlib.h> #include <malloc.h> int main( int argc, char **argv ) { if ( 2 != argc ) { printf("%s size\n"</malloc.h></stdlib.h></stdio.h>…

bootchart - Linuxの起動に関する時間、CPU、I/O負荷を可視化。

組み込み系の開発をしていると装置の起動時間が重要になってきます。 起動時間を短縮するには処理に時間がかかっている箇所を特定する必要がありますが、 Linuxでgrubを使用している環境であればbootchartというツールを使用すれば ログを埋め込まなくてもLi…

スタックの保護・破壊検出について

試験中にある関数からreturnするとプロセスがSEGVで落ちるということがありますがコンパイラがGCCであれば "-fstack-protector"というオプションを利用するとSEGV発生時にバックトレースを表示し、発生個所を特定することが可能です。 リリース版にも適用す…