最近普段自分が利用するIPネットワークが不安定にたまにホストの名前解決に失敗する
ネットワークの構成変更をしたばかりでもあり、一番可能性が疑われるIPアドレスの衝突の調査をしてみる。
BSD系OS/Windows
[1] arpテーブルを全て削除
arp -d # BSD系OSの場合 root権限で
[2] テーブルエントリーの追加のために衝突が疑われるアドレスに対してping
ping dst-address
[3] arpテーブルの表示
arp -a
上記手順を数回繰り返して、[3]で表示されるMACアドレスが複数あれば、IPアドレスが衝突していることになる。
2013年7月30日火曜日
2013年7月23日火曜日
[FreeBSD] GUI環境構築
DM に xfce4 を採用してGUI環境を構築したが、シャットダウン、リブートを一般ユーザーが出来ない
これを解決するためには、/usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla を作成して以下を記述する
そして、シャットダウン、リブートを許可したいユーザーをpowerグループに所属させる
これを解決するためには、/usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla を作成して以下を記述する
[Local restart]
Idendity=unix-group:power
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[Local shutdown]
Idendity=unix-group:power
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[Local restart - multiple]
Idendity=unix-group:power
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[Local shutdown - multiple]
Idendity=unix-group:power
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultAny=yes
ResultInactive=yes
ResultActive=yesそして、シャットダウン、リブートを許可したいユーザーをpowerグループに所属させる
2013年7月8日月曜日
[FreeBSD] ports チェックサム unmatched
portsにてgmakeをコンパイル、インストールしようとしたら、チェックサムが合わないと言われた。
make distclean
でダウンロードしてきたファイルを削除して
make checksum
でハッシュ値を計算しなおしたらいけた。
make distclean
でダウンロードしてきたファイルを削除して
make checksum
でハッシュ値を計算しなおしたらいけた。
[libxml2] XPath によるxmlのパース
APIの多さと初心者向けの情報の少なさで苦戦してますが、ようやく超最低限なパースができたのでメモ
パースするXMLファイル
<?xml version="1.0" encoding="us-ascii" ?>
<orchestra>
<players num="3">
<player>aoki</player>
<player>nakashima</player>
<player>suzuki</player>
</players>
</orchestra>
パースするXMLファイル
<?xml version="1.0" encoding="us-ascii" ?>
<orchestra>
<players num="3">
<player>aoki</player>
<player>nakashima</player>
<player>suzuki</player>
</players>
</orchestra>
コード
#include <stdio.h>
#include <libxml/xmlreader.h>
#include <libxml/xpath.h>
int main(int argc, char **argv){
char *xml;
char *xmlPath;
int i;
xmlXPathContextPtr cntxt;
xmlXPathObjectPtr xmlObj;
xmlDocPtr doc;
xmlNodeSetPtr nodes;
xmlNodePtr node;
struct _xmlAttr *curAttr;
xml = argv[1];
xmlPath = argv[2];
doc = xmlParseFile(xml);
if(!doc) return -1;
cntxt = xmlXPathNewContext(doc);
if(!cntxt) return -1;
xmlObj = xmlXPathEvalExpression((xmlChar *) xmlPath, cntxt);
if(!xmlObj) return -1;
nodes = xmlObj->nodesetval;
// iterate node
for(i=0;i<nodes->nodeNr; i++){
node = xmlXPathNodeSetItem(nodes, i);
// node name
printf("=%s=\n", node->name);
// properties
curAttr = node->properties;
while( curAttr != NULL ){
printf("%s: %s\n", curAttr->name, curAttr->children->content);
curAttr = curAttr->next;
}
if(node->children->content != NULL ){
printf("content= %s\n", node->children->content);
}
}
xmlXPathFreeContext(cntxt);
xmlFreeDoc(doc);
xmlCleanupParser();
return 0;
}
実行
./a.out sample/01.xml "//*"
出力
=orchestra=
content=
=players=
num: 3
content=
=player=
content= aoki
=player=
content= nakashima
=player=
content= suzuki
上記サンプルには、値を含んでいないcontentのケアを含んでいない。
参考サイト: http://d.hatena.ne.jp/hakutoitoi/20090319/1237397160 取っ掛かりのコード
登録:
投稿 (Atom)