A mere hateblo

単なるはてブロです。

FreeBSD 9-STABLEを10-STABLEへ更新した。

さくらのVPSで使っているFreeBSD 9-STABLEを10-STABLEへ更新した。/usr/src以下を事前にSubversionへ切り替えていたので、手順はsvn switchで10-STABLEのURLへ変更したあと、いつものようにOSを更新しただけ。 具体的にはこんな感じ。make buildworld以降は/…

複数のクライアントから接続を受ける際のselect(2)の動作を確認した

ソケットを使ったサーバー・クライアントを実装するとして、サーバーに複数のクライアントから接続を求められた場合、selectがどのような動作をするのか確かめたくなった。まずはサーバーから: #include <fcntl.h> #include <netinet/in.h> #include <signal.h> #include <stdio.h> #include <sys/select.h> #include <sys/socket.h></sys/socket.h></sys/select.h></stdio.h></signal.h></netinet/in.h></fcntl.h>…

はてなブログおみくじ2014

はてなブログおみくじ2014

C++の参照の使い方を間違えた

C++の参照を「ポインタと見た目が違うだけで似たようなもの」などと覚えたせいでバグを作ってしまった。なんだかくやしいので、未来の自分に対して書き留めておく。 例えばポインタを使った例として、こう書いて: #include <iostream> int main() { int a = 1; int b =</iostream>…

関数(メソッド)の再定義と多重定義

昨日ごりごりRuby書いているときに他の言語の感覚のままでハマったこと - 日々の御伽噺を読んで、C++ではどうかと思い確認した。 int foo(int a, int b) { return 1; } int foo(int a, int b, int c = 0) { return 0; } int main() { return foo(1, 2); }% g…

Google C++ Testing FrameworkをVisual Studio Express 2012 for Windows Desktopでビルドした

ちょっと必要になったのでGoogle C++ Testing Framework(以下gtest)をVisual Studio Express 2012 for Windows Desktop(以下msvc11)でビルドしました。といっても、やったのはソリューションファイルとプロジェクトファイルを用意しただけ。差分はgistにあげ…

C#でMessagePackを使う(その後)

先日の記事(C#でMessagePackを使う - A mere hateblo)の続き。その後アレコレ調べたり試しましたが自分の理解や経験ではなんともならず、MessagePack互換のクラスを自作しました。実のところ、相手側のC++の方も配布されているソースコードをそのままコンパ…

C#でMessagePackを使う

C++で書いたアプリとC#で書いたアプリの間でMessagePackを使ってデータをやりとりできないかな、とやってます。C++の方はなんとか使い方を覚えましたが、C#の方はC#自体ここ一ヶ月くらいしか経験がないせいもあって苦労してます。どこかに質問しようにも頭の…

ケアレスミス

どうしても直せない不具合があった。ifの条件が真ではないことが明らかなのに真とみなされてしまう。かなり頭を抱えたが、よくよくソースを見たらなんてことはない(以下は適当な再現コード)。 bool ret = true; if (!ret); // ← ここに謎のセミコロンがある …

ODSファイル内のシートのデータが大きくなりすぎた時の対処方法

仕事のデータを作成するのにLibreOffice Calcを利用しています。具体的には数値や文字列などCalcで入力してODSファイルとして保存、ODSファイルの内容をRubyから読み取ってバイナリファイルやC言語のヘッダファイルを作成しています。普段はとくに問題ありま…

Cygwinでスタックサイズが足りなくなった

昨日、Cygwinのshがスタックが足りないなどと言い異常終了するようになった。エラーメッセージは記録し忘れたが、以下のリンク先にある「can't commit memory for stack」というのがそれ。 "cant commit memory for stack" error with perlこのエラーは初め…

hub alias

hub

ここ最近zsh起動時に以下のメッセージが出るようになった: (eval):1: parse error near `then' 原因は~/.zshrcで以下のように実行したからだった: eval `hub alias -s zsh` たしかhub導入時は上記を実行するよう言われてたと記憶しているが、どうやらhubの最…

FreeBSD portsのdevel/boost-libsが1.45.0のままな件について

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=ports/156253現状send-prされたものでopenなものはこれだけで、どうもboost 1.46.1へのアップデートを提案したところ関連portで不具合が起き、対処している間にboostのバージョンが上がっていった、と。現在はbo…

nested repeat operator + and ? was replaced with '*'

仕事でアセンブリ言語のソース間の依存関係を調べるべく、Rubyでスクリプトを書き、その中で正規表現を使った。その時に出た警告についてメモしておく。 例えば行頭にあるラベルを判別するために: /^\S+\s+/ と書いた。\S+がラベル、\s+はラベルの直後の空白…

gperfが生成するソースコードの扱いについて

gperfが生成するソースコードの扱いについて、gperf 3.0.4のHTMLやinfoでは"The Copyright of the Output"として説明されている。しかし手元にあるgperf 3.0.1~3.0.3のドキュメントには同様の記述を見つけられなかった。僕自身はgperf 3.0.4での説明と同じ…

Magic Mouseの右半分でスクロールしないようにした

Digital Performerを使っていると不意にウィンドウ内が上下左右にスクロールしてしまう。これはMagic Mouseを握っている自分の右手の中指がついマウス表面に触ってしまうことが原因なので、上記のようにMagic Mouseの右半分ではタッチの反応を無くした。これ…

Ninjaのテストにgtest 1.6.0以降を使う

NinjaはテストのためにGoogle C++ Testing Framework(以下gtest)が使われているが、当初はシステムにインストールされたgtestをテストプログラム(ninja_test)のビルドに利用されていた。しかしgtestの最新版である1.6.0以降はシステムへのインストールできな…

「見たまま編集」と「はてな記法」の両立

はてな >|| はてな ||< 現在のところ見たまま編集モードにおいてもはてな記法が有効のようだ。 インラインな記法はそのまま使えるが、ブロックな記法は「見たまま編集」タブで一度でも編集を行うと崩れてしまう(プレーンなテキストとして扱われる)ためはてな…

始めた

運良く利用申し込み受付開始の記事を見つけられたので、早速申し込んだ次第。 試した感想はあとで書く。