ラベル ネタ の投稿を表示しています。 すべての投稿を表示
ラベル ネタ の投稿を表示しています。 すべての投稿を表示

2012年6月8日金曜日

C++でFizz Buzz

C++なんて使ったことねーよ
ってことで
たぶんこれよりうまい方法はいっぱいあると思うけど
めんどくせーんでこれでいいよね(

もうちっとややこしい方法も考えてみたんだけど
動かなかったのでifをネストしました

まぁ 動作は
みりゃわかるよね これくらい

では ノシ

2012年2月14日火曜日

B言語

懐かしきB言語です
使った事無いですけど

さて
某コンパイラのヘッダ見てたらこんなのがありました

int putc (auto char c, auto FILE *f);

auto?
なにそれ 美味しい物?
んで 調べてみると
どうやらB言語の名残でC言語では見ることはないらしい
(組み込みCコンパイラのstdio.hにふっつーに書いてあったけどな!)

んで B言語を調べてて 面白そうなコードを発見
Wikipediaに書いてあるんだけど与えた数値を与えた進数で表示するコード

んで C言語に移植したコード


Wikipediaのコードは最大10進数まで(※)なので
改造して36進数まで対応させました
36以上は数字もアルファベットも使い切るので
これ以上は実用性なくなるなぁ
256進数なんて誰も使わねぇよ...

んで 実行するとこうなる

左から 10進/16進/36進
もうちょっと機能を足したら
プログラムの動き方の説明とかで使えるかな?

ただこのコード
PICとかで使うのはやめたほうがいいと思います
PICのプログラムカウンタは通常の場合8レベルでスタックされるので
関数が8回くらい以上呼び出されるとマズイです
int型の場合は最大で10回くらい呼び出される可能性があるので
それよりも少ない数 たとえば120で3回としても
それ以前に複数回呼び出されていないとも限りません
なので PICでこのコードはマズイと思います
(ここらへんの動作は試していないのでテキトーに書いてるだけですけども)
まぁわざわざPICでこういうコードを使う必要もないと思いますが…


とりあえず 暇つぶしにB言語をC言語に移植(コラ)してみましたというお話

B言語ってぐぐってもC言語しか出てこないんだよなぁ




※)/* 以下 読み飛ばしても大丈夫な感じの記述 */
 アスキーコードで数字は'0'(0x30)から続いてることを利用した処理
 結構な頻度で使われる
 ただし9からAは連続していないから
 元のコードでは9までを使う10進しか対応していない
 そこでifを使って10以上は+=7で7個の記号を飛ばしてAにしている
 小文字を使いたい場合は+=39とすればいい
 んで今回はZ以降の処理をしていないので37進数を使うと36に'['が使われる
 そして42に'a'が来る
 ASCIIでは71(~)まで対応していてそれ以上はおかしな表示になる
 (半角カタカナでも表示されるかと思ったらされなかった)

2012年2月13日月曜日

クラウド上にOS

Chromeとはまた違った感じの
HDDみたいなデータ保存領域が一切無いPC というのは可能なのかな
という疑問

例えば
PCが出た頃の
まだAドライブとBドライブしか無かった頃
それくらいの時代と比較すれば
インターネットも十分高速だと言っていいと思います
容量は 言うに及びませんね
Gmailは1人あたり7GBを超えています
リソースに縛られないのがインターネットの利点でしょうかね

でもまぁ Aドライブとかなんのこっちゃ みたいな人もいるでしょうし
そもそもそんなOSといえるかどうかわからないような代物は誰も納得しないでしょう
(ちなみに僕が最初に触ったPCはWin3.1 FDDが1個でHDDと光学ドライブが搭載されてる時代)

んで BIOSを固定しちゃえば
ROMだけで書き込みが一切できないPC

そーいや BIOSってネットワーク起動みたいな項目もあるよね
ってことはクラウド上のものでもBIOSレベルから読みだして起動することも可能じゃね? みたいな

んで
例えばOSに100GB使ったとします
これを瞬時に読み込むのはまぁさすがに現代技術じゃ無理があるので
必要な部分だけ読み出すことにします 5GB
まだ重いかなぁ
しかし 画像ファイルを読み込む
120bpsFHDです
無圧縮だと秒間474.7メガバイト ちょっと重いよなぁ
ってことで 圧縮率40 そうすると200バイト
何が言いたいかってグラフィックもクラウドで処理させる
120fpsFHDというのは FHD画面で120fpsの動画 もしくはFHD画面で60fpsの3D映像 FHD画面2枚で60fps くらいです
文字データは文字として送ってくる という方法を使えばかなり情報量を減らすことができますが
ChromeOSみたいな感じで面白くない

iPadの解像度なら30fpsで秒間20メガバイトくらいなので
タブレット端末で箱○とかハイスペックPCでプレイするような高画質のゲームを遊ぶことも可能

HTML5を使ったリモートデスクトップとかありますが あんな感じになるのかな
(HTML5を使ってるから他のPCからだけじゃなくiPadとかからもリモート接続ができるというのが売りだった)


んで クラウド上にOSをおいてローカルに保存領域を一切使わないのは可能か? という疑問の結論
「現場技術でも十分可能じゃね?」
まぁArduinoにEthernetShieldつけてそれでグラフィック液晶をつないで
家にあるサーバーにアクセスする とかなら 十分個人でも作れるけど
さすがに実用的なものになると辛いかなぁ

インターネット止まったら使いものにならないとかの問題もあるし

まずはインターネットの普及が先だよなぁw

2011年12月30日金曜日

ビット長と最大数の関係


みずらいけど 各ビット長での符号あり/なしの最小値と最大値の表

Excelの内部計算がIEEE 754だから 36bitくらいまでしかちゃんと表現できない
どうやったらちゃんと表現できるだろうね
一番手っ取り早いのは頭で倍々して行ってメモ帳とかで打ち込むのかw

とりあえず計算方法

符号あり最小値:((2^(ビット長 - 1)) * -1)
符号あり最大値:((2^(ビット長 - 1))-1)
符号なし最小値:0
符号なし最大値:((2^(ビット長))-1)
という感じ

符号ありは1bitが符号に割り当てられるので使えるビット長-1の長さが実際に使える範囲です
符号なしは2進のn乗を計算して1減算するだけです



#ifdef nonsns

掛け算とか割り算って 足し算とか引き算を繰り返すだけだから
数百桁の足し算とか引き算をできる関数を作ってやれば
128bitの最大値とかも計算できるだろうけど
足し算引き算掛け算割り算をする関数を作った所で
使い道が無いのが欠点だよね
超大規模な予算とか
天文学的数字の計算にしか使えない

Cで書いて
アセンブラに移植して
「PIC アセンブラでも1.8446744e+019位余裕で扱えます!」
とか? いらねぇよ…

#endif

とりあえずIEEE 754 と言うか 浮動小数点数とかが まだよくわかってないから
そこら辺も勉強し直さねば

Amazonから本とかいろいろ来て積み本もどんどん増えてるし...

2011年11月8日火曜日

LoLシールドみたいなデカイLED板


LoLシールドみたいなLEDが大量に並んだ基板を考えている
これは秋月A基板に載せたもの
14x18で252個のLEDを搭載できる計算
キリが悪いけどしかたない
ちなみにこの大きさになるとLEDだけで11340円もする
さすがに遊びで作るものに仕事用の超高輝度を使うわけにはいかない
もっと安いLEDを探さないと
仕事用だと1個36cdだから9kcdっていうめちゃくちゃ明るくなるんだけど
大体1cd≒ろうそく1本だから
9kcdはろうそく9千本分くらいの照明
でもこの量になると配線だけでもものすごい量になりそう
消費電力も1個あたり20mAとして5.04A
eneloopを直列6並列4で7.2V7.6A電源として使えば3時間くらいは使えるか

2011年10月14日金曜日

ミニスカ宇宙海賊6の表紙のおねーさんがエロ過ぎるんですが



たぶんおねーさんって年齢じゃないけどね

とりあえずミニスカ宇宙海賊6巻まで突入
エスコンやりすぎたかなぁ 気持ち悪いorz


モーレツ宇宙海賊の局更新されたね
例のごとく北海道じゃ見れないらしいけど
BSはどうだろうな
一応地デジ+BS/CSチューナーあるけど
PCソフトがAero非対応だから使いたくない
めちゃくちゃ重いし
どうしよう


/* *** */

とりあえずそろそろ缶サットも頭の片隅に入れておかないとなぁと
YACに交渉してもらってるけど 担当の人が。。。
釧路分団所属なわけですけど
どうやら釧路高専に「缶サット同好会」ってのがあって
そこと共同でやるみたい
まぁそれとは別に個人でやってもいいかなぁと思いつつ
Dr Pepperの缶に電池ボックスとかmbedとか入れて大きさ確認してるんだけど
GPSとXBeeを入れた場合どちらを優先するかという問題が
XBeeは外部アンテナでも いいんだけどね
(電波法気にしなければ)
打ち上げ手段は
CAMUIに乗っけてくれないかなぁ とか思いつつ
まぁペットボトルロケットかモデルロケットで
衝撃を気にしないなら迫撃砲みたいな感じでもいいしね
パラフォイルをどうしようかとか考えてるけど
海外から輸入もできるだろうし
自分で作ってもいいし
いろいろやり方はあるから 今年中にある程度形決めたいな
というレベル


うーん このブログ読んでる人とか いるのか?
大体アクセスカウンタ回してるの海外のbotみたいだし



2011年10月7日金曜日

例えばiPhone4を使って

Magic Mouseっぽいものを作ることも可能だよね
ガラスとかの上では動作しないけど
木の板の上とかでも動作は可能だし
マルチタッチも精度よく作れるし
少なくともMagic Mouseの精度よりは高いはずだし
まぁiPod touchとかをマウスにするってやつも使ったことはあるけど
うーん… ってかんじだったからな…

とりあえずMac miniに仮想化とか入れて開発環境構築してもいいかなぁと妄想したりもするんだけど
何が怖いって停電が怖いんだよなぁ
いきなり電源落ちて 保存してないコードが消えるくらいならまだいいんだけど
データが飛んだ♪屋根まで飛んだ♪ とかはさすがに嫌だから
まぁ停電でWinの調子が悪くなったりはあるけどデータが飛んだとかはまだ経験ないから大丈夫だと思うけど

そういうこと考えるとUPSとか
でもそうなるとノーパのほうがいろいろ楽だしなぁ…

iPadでPICの開発が出来れば買うんですけどねw
ブートローダをPICに入れて音声出力で昔の4ビットマイコンみたいにして
・・・?
もしかして
当時のヤツって16進で機械語入れるけど iPadでコンパイラとか作ってる人いたりする?

2011年9月30日金曜日

SFっぽい「先進個人装備システム」

「防衛省のガンダム」とまで言われた先進個人装備システム
本家は+α的な感じだけど
SFっぽいタイプを妄想してみる

1. 照準には赤外/可視光のカメラを使用
2. HMDで照準やその他情報を表示
3. 高速無線通信により個人が装備している銃やアイカメラの映像を司令部等に送信
4. 高精度位置測定システム等を併用し最適な位置配置を実現

って感じの
実際にはもっと複雑でいろいろな機能がある
例えばレーザーは照準だけじゃなくて距離測定に使ったりとか

大型の兵器を相手にするのには不向きだけど
敵基地の破壊工作とかには最適
もちろん対テロの市街地戦とかにも有用

まぁここまでのは本家でも似たようなことができるけど

更に上を行って
例えば的地上施設の攻撃なら
まず4人程度のチームで偵察して
送られた位置にGPS誘導の艦砲なり航空機のレールガンで攻撃するなり
とか

まぁそんなテクノロジーあってなんで戦争してんだよって話だけどねぇ
そこはあくまで「SFですから」と

シューティングゲームとか 作ってみたいよなぁ
MGSとかCoDのクオリティでは無理だけどさ

2011年8月29日月曜日

挿すそして祈れ

よくある洒落ですね
PnP(Plug and Play)は挿したら実行するみたいな意味ですけど
Play を
Pray にして
挿したら祈れ みたいな意味になるように

前置きが長くなりましたが
FT232RLで遊んでいます
というかUSB<=>TTLRS232のコンバータのTXがなぜか動作しなくなって
急遽秋月で買いました
0.65mmピッチです
大して難しくなかったです

んでPCで色々設定いじりながら
USBのケーブルが切れそうだったので
木工ボンドで止めてみたんですよね
そしたら認識してくれなくなりました

水が45%のものを使ったのでたぶん水の電気抵抗で必要な電位差が稼げなかったとかだと思うんですけど
どっかに木工ボンドの抵抗値のデータとか無いんですかね?w