神話の「真話」—biteとbyteのはなし。

 

 

こんにちは!鳩豆です!

前回の「小数点」の話からすっかり時間が空いておりますが、
前回少し出たBitの話題に続き今回は単位の話。

—PCを新たに買うとき、
—Macを新調するとき、
スペックやメモリで見かけるあのByteのお話です。
(余談ですが、、自分は世間が1TBパソコンになっても、かなりの間256GB+4GBメモリのPCで頑張っていました。)

さてPC購入時のスペックに関係することもあり、
ベースとなる単位は 1 byte = 8 bit であることは皆さんご存知の通りです。

数字、アルファベット、各種記号、のパターンを
並んだビットで表現するには最低でも6bit必要で、そこに+-用にもう1bit。
さらに通信用パリティビットで8bit!

それで
「1 byte = 8 bit で行くと、色々わかりやすいよ、きっと・・」 みたいに決まっとったわけです。
そう、、とっくの昔のPC黎明期にそう決まったんだと思っていたら・・・

正式に決まったのは割と最近でした!!

2008年に正式に決まったようです。
約10年前・・・自分は「1byteは8bitって決まってるの!!」ってその当時かなり強気に言っていたような・・・・・

そしてやはりその当時によく言われたいたbyteとbiteのappleロゴのグッとくる話。

以下抜粋(こんな会話をおしゃれなバーのカウンターで、世の男子が、女子にしていたと思われる

「それで今説明したみたいに、8bit=1byteを最初単位で考えようとなったわけ。
で、byteは造語で(バイト)って読むじゃない。・・バイトってさ、英語で(かじる)って意味のbiteと音が同じなんよ。
それでほら、かじられてるでしょ、appleのロゴ」
(髪をかきあげる)

「きゃーすっごーい〜〜」

「いやー、よく考えてるよね。やっぱり。appleは。」
(髪をかきあげる)(カクテルのグラスを一口)(遠い目)

「かっこい〜〜♡」

 

という説もロゴのデザイナーさん曰く
「何のフルーツか一目でわかってもらうために、かじった絵にした」

 

ぬおおおお!シンプル!!!

 

 

今更感の話題ですが、自分のための備忘録として掲載しました。
ではまた!!

ちょっとした裏技★【これってワードプレスのサイト?】

こんにちは!bibiです。

そろそろ熱くなってきた昨今、皆さまどうお過ごしでしょうか?

僕は家の冷房をつけずにシャワー上がりに
ハッカ水+扇風機でしのぐというドMっぷりで今夏3年目に入りました。笑
ハッカ水はハッカ油をペットボトルや空のスプレーなんかに水を入れて
数滴垂らすだけで、超フレッシュ&クールになります!
満タンの湯舟でも、5滴も入れれば十分さわやか!皆さまお試しをを~

 

さてさて、本日は裏技をひとつ。

 

かっこいいサイトを見たときに、

「このページ、どうやって作ってるんだろう・・・?」

って思いますよね?そんなあなたは、ズバリ、職業病!

 

・・・まあ、自分ですけどね。

 

なんとなくこのサイトワードプレスっぽいなー、っていう感じがあるんですよ。
ビンビン来るんです。そんな時に試すことが、これ。。

 

サイトURLの最後に「wp-admin」とつける。

 

もしワードプレスのサイトなら、ログイン画面に遷移します。

もしhtmlベースのサイトなら、not found やTOPにリダイレクトされるなどの挙動となります。

 

これ、もちろん100%ではないのですが、体感で70%くらいの確率で確認できますね。
※wp-adminは隠すこともできるので。

 

ちなみに当サイトは・・・ヤダ///恥ずかしいんで////見ないでね////////

 

これを使って、気になるあの娘のあのサイトが、ワードプレスかそうじゃないかわかる可能性が上がる!
これは試して見るべきですゾ★

 

それでは皆様、快適な社畜ライフを☆彡

【Unity】C#で学ぶFlyweightパターン!^o^【メモリ削減、リソース節約】【オブジェクト生成の効率化】

 

こんにちは!河条です!
今回はUnityとC#でFlyweightというプログラム設計について学びましょう!

※事前知識:C#の基本構文、オブジェクト指向の知識

Flyweightパターンって?🤔

余分なオブジェクトの生成を防止、効率化するのに使えます!

例えばモンスターの絵柄は全部同じなのに、10体生成した数だけ同じように絵を生成してたら処理は重いしメモリ使うしであまりよくないですよね!

このモンスターのモデルデータやテクスチャデータを共有しよう!というのがFlyweightパターンです!

ひとまずどれくらい節約されるか結果から🤔

用途としてはあまり適切ではないですが、スライムそのものを10体普通に生成するパターンとFlyweight設計で生成したパターンでメモリの使用量を見てみましょ(わかりやすさ重視で)
 

まずは10体普通に生成するメイン処理!

 
結果!

  
次はFlyWeight設計で10体生成したパターンのメイン処理!!

 
結果!


普通の生成だとメモリ20Kバイト使っているのに対してFlyweight設計だと8Kバイトですね!
1つのオブジェクトのメモリ使用量と、生成数によってはもっともっと大きな効果が出そうです!

 

上のメイン処理って結局裏で何やっているの🤔

最低限必要なのは以下の2つです!
スライムそのもののクラス
スライムを生成するFactory(工場)

実際のコードを見てみましょう!
ただメイン処理では使ってないですが、Factoryクラスの利便性も紹介するために、スライムだけでなくキングスライムやメタルスライムのクラスも作ります!

 

ここは特に説明いらないですかね🤔
それぞれのスライムのクラスを作ってインターフェースを用意させてます

 
肝は次のスライム工場です

 

解説フェイズ🤔


やっていることは単純に3つです
1、工場クラスで共有化させたいオブジェクト(今回だとスライム、メタルスライム、キングスライム)をDictionaryに登録
2、工場クラスで生成されたオブジェクトを呼び出し側に渡す
3、呼び出し側は工場クラスを介してオブジェクトを操作する


オブジェクトの共有化と聞いて難しそうな処理してそうな感じでしたが、案外クラスもロジックも少ないですね!
実際にFlyweightパターン使うなら冒頭で書いた通りスライムオブジェクトのグラフィック等のが適切ですが
(^o^)


Flyweightパターンは中規模以上のゲーム制作なら必ず必要な場面あると思います!ぜひ使ってみましょー!
^o^
ちなみに他にもObjectPoolというオブジェクトの生成、破棄のコストを下げる設計もあるのですが、これは長くなりそうなのでまた。。。

【Unity】Unityで学ぶStrategyパターン!モンスターに色んな技を使わせよう!【C#】【プログラム設計】

 

こんにちは!河条です!
今回はC#でStrategyというプログラム設計について学びましょう!

今回はPHPじゃなくてC#だよ!こういう設計の知識はオブジェクト指向プログラムであれば他の言語でも使えるから知らない人はぜひ覚えてみてね🤗

※事前知識:C#の基本構文、オブジェクト指向の知識

今回やること

1、技をいくつか用意する
2、何体かのモンスターを生成する
3、モンスターは技を2つまで覚えられる
4、モンスターに1で作った技を使わせてみる

※ 今回はとりあえず機能の確認とStrategyがどんなものかを知るのが目的なので、モンスターの絵とかダメージ計算もなくDebug.Logに出力させるだけです

パッと思い浮かぶやり方

モンスターごとに技のメソッドを用意して、アルゴリズムをかく!となると思います!
ただしこのやり方は思いついただけでも2つ問題があります

1、異なるモンスターが同じ技を持っていても、それぞれモンスタークラスごとに同じ技のメソッドを書かなくてはいけない🤔

技の仕様変更あったらモンスターごとに書いていた同じ技のロジックを全部書き換えていくという作業が必要になり面倒ですね😇チーン

2、今覚えている2つの技をフラグか何かで管理する羽目になる🤔

技の数だけ条件分岐が必要という面倒くささになります。まあList使えば何とかできそうな気もするけど😇チンチーン

Strategyパターンとは

ではどうすれば良いか!ということでStrategyパターンです!
Strategyパターンはいろんな状況、仕様に応じてアルゴリズム(今回でいうモンスターの技)を簡単に変更することができます!
これを使って上記の2点の問題を解決しましょう!

ザックリとした考え方

実装方法としては、技クラスという抽象クラスを継承させた技固有のクラスを何個も作り、インスタンス化させたモンスターに2つ技を持たせるイメージです!

これでモンスターごとに同じ技を記述する必要は無くなりますし、技の仕様が変更になってもそれ1つだけ直せば大丈夫です!
また、モンスターには1番目 or 2番目の技を使え!という命令だけで条件分岐もなく持たせている技を使わせることができます!

実際のコード

まずはいきなりメイン処理を!割とスッキリしていると思います!
条件分岐も一切使わずに、また技の切り替えも簡単にできますね!
また新しい技が増えたとしてもモンスタークラスは触る必要なく、技クラスを増やしてインスタンス化するだけで対応できます!(依存関係のないプラグラムってやつですね!)

上のコードの実行結果(技効果も載せてます)

ではメイン処理のようなプログラム組むための準備となる技クラスとモンスタークラスを作っていきましょう!

まずは冒頭でも書いた技の抽象クラスからです!

次に技クラスを継承させて実際の技のクラスを書きましょう!

最後にモンスタークラスです!

ざっくりまとめ


モンスタークラスにprivateな技の変数を2つ用意し、メイン処理で代入しています!
攻撃時は代入した技に応じてAttack関数とSkilleffect関数が動いてくれます!

今回はカワノバナとカワノカゲのモンスター二匹だけだけど、三匹になっても四匹になっても同じようにモンスタークラスを生成して、技を代入すればいいです!
新しく技を増やしたかったら(水鉄砲とか)その都度、技クラスを作ればモンスタークラスはそのままで拡張できます!
依存関係のないプログラムの意味はこれで何となくわかると思います!

ただあくまでもStrategyの一番の特徴は簡単にアルゴリズムの切り替えができることです!
結構汎用性高いと思うのでぜひ使ってみてください!!!!(^o^)人(^o^)