Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
yotaroのトモ近況 | スラド
[go: Go Back, main page]



パスワードを忘れた? アカウント作成

yotaroさんのトモダチの日記。

アカウントを作成して、スラドのモデレーションと日記の輪に参加しよう。

13004663 journal
日記

ttの日記: オレオレビットフィールドを作る 4

日記 by tt

人生初のAdvent Calendarをしてみんとしてなんとなく久々に日記など。
C言語 Advent Calendar 2016 の6日目、らしい。

Cの世界にはビットフィールドというのがある。もともとハードウェアレジスタを操作するために作られたと思われるが、今やメモリ削減のために使われている感がある(ex. webkit)。
どうしてこうなったか…というとまあ規格上いろいろと自由度と不自由度がありすぎて、エンディアンとかintの大きさとかによって「実際の」ビットの位置がずれてしまい、移植性のあるコードを書くのがめんどくさいからである。
ハードウェアを触るなんてマシン固有だからどーでもいいじゃん、というのはあるんだが、x86でもx86-64でも動いてほしいとか、ARM BEとARM LEで~とか、いろいろあるのである。

前振りが長くなった。さて本題。

ビットフィールド使えないとなるとレジスタ操作系のコードはこういうのになる
  int reg = MMIO_REG_READ(COMMON_REG_ADDR);
  int busy = (((reg >> STATUS_BIT_POS) & STATUS_BIT_LEN) == STATUS_BUSY);
わかりやすい。というか超べたべただ。

マクロなりなんなりで
  int busy = (extract(reg, STATUS_BIT_POS, STATUS_BIT_LEN) == STATUS_BUSY);
なんて書くのも可能だし、マクロの定義を適度にいじってintのサイズ違いに対処とかもできそうだ。

と、ここまではよく見るんだけど、最近
  extract(reg, STATUS_BIT_POS : STATUS_BIT_LEN)
みたいな書き方があるのを知った。

どーやってるんだろうとおもったら、こういう感じらしい
  # define GETPOS(field) (0 ? field)
  # define GETLEN(field) (1 ? field)
  # extract(reg, field) (((reg)>>GETPOS(field))&((1uGETLEN(field)-1))
そう、三項演算子を使うらしい。

で、これの利点だけど…ハードウェアの仕様書とかではビットフィールドの記述に「:」を使うのは多いため、見た目がわかりやすい、ということ以外にあんまり思い浮かばなかった(笑)。C++はともかく、Cでは三項演算子やラベル名以外で:を使うというのはあんまりないので、他より目立たせることができる、というのもあるだろうか。

あんまり意味がないけど、まあ、面白いのでご紹介、ということで。

6930933 journal
日記

ttの日記: アレもう2012年が終わる… 1

日記 by tt

見事に今年はオンライン上の活動が止まってしまった…隙間時間にtwitterかfacebookするぐらいだけになってしまった。

今年買ったものを思い出す。Eマウント(NEX)のレンズ二本、パナの電子レンジ、スマフォ(XperiaSX)、タブレット(MediasN06D)、…ぐらい?余りモノは買わなかったなあ。

おっとWLAN APも更新してた。あと自分用ではなく母へのプレゼントとしてVAIOとCybershotを購入した。まあ自分が使うものじゃなくても、ちょっとさわってるとやっぱり最新機種はどんどん良くなってるのがわかって新しいのが欲しくなるねえ。

サービスだとCATVのコースを変更してチャネルが増えたのと、VPSを契約したことか。が、VPS全然使えてない・・・

身につけた技術としては近年の最適化技術だったりgccの構造をより深く理解したとかARMプロセッサに詳しくなったとかインターコネクトやマルチプロセッサ環境を学んだとかか。llvmとかwebkitとかjavascriptの知識は進まなかった。ダメダメ…。勉強会で発表するとかいった活動ももう少しやったほうがよさそうである。

失ったのは明らかに体力だな。特に年末の肩こりのひどさは絶望的だった。肩こりで医者に行くのはかなり久々である。

思い切った行動にも出られず、かといってこのままではジリ貧、的な状態で縮小均衡というどうにも手詰まり感が増えた一年であった。来年はこの辺りを改善したいものだけれども、さてどうなるか。

2597228 journal
日記

yourCatの日記: Apple Store: We'll be backなう

日記 by yourCat

おや、Apple StoreがWe'll be backになっている。
特に発表の予定などはなかったと思うので、Mac関係のマイナーアップグレードかしら。
出くわした記念に日記に書いておこう。

追記 2012年4月11日 16:34: 変わったのはWe'll back soonのグラフィックだけだった

2535638 journal
spam

yourCatの日記: Habbo経由を装ったspam?

日記 by yourCat

表題の通り、habbo.comからユーザーが送信したかのように装ったメールが届く。誘導先はポルトガル・ドメインだが、各種セキュリティー情報サイトには特に情報がない。Googleセーフブラウジングでもシロと出た。ふむ。

ところでHabbo Japanは2009年に閉鎖しているのだが、JP鯖はまだある。spamの偽装先に選ばれるくらいだから、復活するかも?

2409920 journal
日記

yourCatの日記: 十二国記 3

日記 by yourCat

小野不由美氏の十二国記シリーズの版権が新潮社へ移った
新作長編の刊行予定もある。

もともとスピンオフ的な作品『魔性の子』が新潮社から出ていたから、分からなくもないが…。
シリーズを本棚に並べた時に奇麗にそろっていてほしい、そういうファンは買い直さないといけないかもね。
表紙は引き続き山田章博氏が手がけるのは一安心といったところ。

1423607 journal
日記

yourCatの日記: ゲーセンで出会った不思議な子の話 2

日記 by yourCat

ゲーセンで出会った不思議な子の話:哲学ニュースnwk
「泣ける2ちゃん」系の話。
このままノベルゲーにしてもいいくらい。

以前にも卵焼きとかSa・Gaの思い出を取り上げたけれど、今回も素直に感動しました。

1380251 journal
スラッシュバック

yourCatの日記: Slashback: メッセサンオーの顧客情報漏洩、原因は化石級の杜撰なCGI 1

日記 by yourCat

メッセサンオーの顧客情報漏洩、原因は化石級の杜撰なCGI』のメッセサンオーが閉店した。ゲーム市場の冷え込みが主原因とされているが、漏洩事件の影響も相当大きいのではないか。
持っているコンシューマー・ゲーム機はスーパーファミコンとメガドライブ、Windowsを持っていないのでエロゲーもできない (興味はあります;)) わたしには縁のないお店だったが、その昔恋人がよく通っていた店だ。まあ、ただそれだけですけれど。

1379154 journal
spam

yourCatの日記: Linked-Inを装ったspam

日記 by yourCat

ここ数日、Linked-In経由を装ったspamが届いている。
本文中にあるアンカーポイントはルーマニアのwebサービスを経由して同じくルーマニアのサーバーに誘導されるのだが、そこはトロイの木馬や違法ドラッグを幅広く手がけるなかなか精力的なサイトだ。かつてtwitterを装ったspamをばらまいていた実績もある。
ご注意を。

1265395 journal
Java

Cubeの日記: 2012: あけおめことよろ

日記 by Cube

T/O

[CentOS メモ]
Oracle(つーかSun)製 JDK をインストールした後,
以下のシェルスクリプトに適当な名前を付けて sudo で実行すると

#!/bin/bash
if [ ! -f /usr/java/latest/man/ja/man1/java.1.gz ]
then

                pushd /usr/java/latest/man/ja/man1 > /dev/null
                for MAN in `ls /usr/java/latest/man/ja/man1/*.1`
                do
                                gzip $MAN
                done
                popd > /dev/null
fi

alternatives --verbose --install /usr/bin/java java /usr/java/latest/bin/java 20000 \
--slave /usr/bin/orbd orbd /usr/java/latest/bin/orbd \
--slave /usr/bin/keytool keytool /usr/java/latest/bin/keytool \
--slave /usr/bin/pack200 pack200 /usr/java/latest/bin/pack200 \
--slave /usr/bin/rmid rmid /usr/java/latest/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/latest/bin/rmiregistry \
--slave /usr/bin/servertool servertool /usr/java/latest/bin/servertool \
--slave /usr/bin/tnameserv tnameserv /usr/java/latest/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 /usr/java/latest/bin/unpack200 \
--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/java/latest/man/ja/man1/java.1.gz \
--slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/java/latest/man/ja/man1/keytool.1.gz \
--slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/java/latest/man/ja/man1/orbd.1.gz \
--slave /usr/share/man/man1/pack200.1.gz pack200.1.gz /usr/java/latest/man/ja/man1/pack200.1.gz \
--slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/java/latest/man/ja/man1/rmid.1.gz \
--slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/java/latest/man/ja/man1/rmiregistry.1.gz \
--slave /usr/share/man/man1/servertool.1.gz servertool.1.gz /usr/java/latest/man/ja/man1/servertool.1.gz \
--slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/java/latest/man/ja/man1/tnameserv.1.gz \
--slave /usr/share/man/man1/unpack200.1.gz unpack200.1.gz /usr/java/latest/man/ja/man1/unpack200.1.gz

alternatives --verbose --install /usr/bin/javac javac /usr/java/latest/bin/javac 20000 \
--slave /usr/bin/appletviewer appletviewer /usr/java/latest/bin/appletviewer \
--slave /usr/bin/apt apt /usr/java/latest/bin/apt \
--slave /usr/bin/extcheck extcheck /usr/java/latest/bin/extcheck \
--slave /usr/bin/jar jar /usr/java/latest/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/java/latest/bin/jarsigner \
--slave /usr/bin/javadoc javadoc /usr/java/latest/bin/javadoc \
--slave /usr/bin/javah javah /usr/java/latest/bin/javah \
--slave /usr/bin/javap javap /usr/java/latest/bin/javap \
--slave /usr/bin/jconsole jconsole /usr/java/latest/bin/jconsole \
--slave /usr/bin/jdb jdb /usr/java/latest/bin/jdb \
--slave /usr/bin/jhat jhat /usr/java/latest/bin/jhat \
--slave /usr/bin/jinfo jinfo /usr/java/latest/bin/jinfo \
--slave /usr/bin/jmap jmap /usr/java/latest/bin/jmap \
--slave /usr/bin/jps jps /usr/java/latest/bin/jps \
--slave /usr/bin/jrunscript jrunscript /usr/java/latest/bin/jrunscript \
--slave /usr/bin/jsadebugd jsadebugd /usr/java/latest/bin/jsadebugd \
--slave /usr/bin/jstack jstack /usr/java/latest/bin/jstack \
--slave /usr/bin/jstat jstat /usr/java/latest/bin/jstat \
--slave /usr/bin/jstatd jstatd /usr/java/latest/bin/jstatd \
--slave /usr/bin/native2ascii native2ascii /usr/java/latest/bin/native2ascii \
--slave /usr/bin/policytool policytool /usr/java/latest/bin/policytool \
--slave /usr/bin/rmic rmic /usr/java/latest/bin/rmic \
--slave /usr/bin/schemagen schemagen /usr/java/latest/bin/schemagen \
--slave /usr/bin/serialver serialver /usr/java/latest/bin/serialver \
--slave /usr/bin/wsgen wsgen /usr/java/latest/bin/wsgen \
--slave /usr/bin/wsimport wsimport /usr/java/latest/bin/wsimport \
--slave /usr/bin/xjc xjc /usr/java/latest/bin/xjc \
--slave /usr/share/man/man1/appletviewer.1.gz appletviewer.1.gz /usr/java/latest/man/ja/man1/appletviewer.1.gz \
--slave /usr/share/man/man1/apt.1.gz apt.1.gz /usr/java/latest/man/ja/man1/apt.1.gz \
--slave /usr/share/man/man1/extcheck.1.gz extcheck.1.gz /usr/java/latest/man/ja/man1/extcheck.1.gz \
--slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/java/latest/man/ja/man1/jar.1.gz \
--slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/java/latest/man/ja/man1/jarsigner.1.gz \
--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/java/latest/man/ja/man1/javac.1.gz \
--slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/java/latest/man/ja/man1/javadoc.1.gz \
--slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/java/latest/man/ja/man1/javah.1.gz \
--slave /usr/share/man/man1/javap.1.gz javap.1.gz /usr/java/latest/man/ja/man1/javap.1.gz \
--slave /usr/share/man/man1/jconsole.1.gz jconsole.1.gz /usr/java/latest/man/ja/man1/jconsole.1.gz \
--slave /usr/share/man/man1/jdb.1.gz jdb.1.gz /usr/java/latest/man/ja/man1/jdb.1.gz \
--slave /usr/share/man/man1/jhat.1.gz jhat.1.gz /usr/java/latest/man/ja/man1/jhat.1.gz \
--slave /usr/share/man/man1/jinfo.1.gz jinfo.1.gz /usr/java/latest/man/ja/man1/jinfo.1.gz \
--slave /usr/share/man/man1/jmap.1.gz jmap.1.gz /usr/java/latest/man/ja/man1/jmap.1.gz \
--slave /usr/share/man/man1/jps.1.gz jps.1.gz /usr/java/latest/man/ja/man1/jps.1.gz \
--slave /usr/share/man/man1/jrunscript.1.gz jrunscript.1.gz /usr/java/latest/man/ja/man1/jrunscript.1.gz \
--slave /usr/share/man/man1/jsadebugd.1.gz jsadebugd.1.gz /usr/java/latest/man/ja/man1/jsadebugd.1.gz \
--slave /usr/share/man/man1/jstack.1.gz jstack.1.gz /usr/java/latest/man/ja/man1/jstack.1.gz \
--slave /usr/share/man/man1/jstat.1.gz jstat.1.gz /usr/java/latest/man/ja/man1/jstat.1.gz \
--slave /usr/share/man/man1/jstatd.1.gz jstatd.1.gz /usr/java/latest/man/ja/man1/jstatd.1.gz \
--slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/java/latest/man/ja/man1/native2ascii.1.gz \
--slave /usr/share/man/man1/policytool.1.gz policytool.1.gz /usr/java/latest/man/ja/man1/policytool.1.gz \
--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/java/latest/man/ja/man1/rmic.1.gz \
--slave /usr/share/man/man1/schemagen.1.gz schemagen.1.gz /usr/java/latest/man/ja/man1/schemagen.1.gz \
--slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/java/latest/man/ja/man1/serialver.1.gz \
--slave /usr/share/man/man1/wsgen.1.gz wsgen.1.gz /usr/java/latest/man/ja/man1/wsgen.1.gz \
--slave /usr/share/man/man1/wsimport.1.gz wsimport.1.gz /usr/java/latest/man/ja/man1/wsimport.1.gz \
--slave /usr/share/man/man1/xjc.1.gz xjc.1.gz /usr/java/latest/man/ja/man1/xjc.1.gz

すると何かと幸せになれる。

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...