ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

PowerShellでWPFとかイベントとか ~ 枠組みをC#で書く ~

この頃、ブログの更新がおろそかでしたが、ネタはあったのです。

今回は大したものではないですが、この前書いた記事「PowerShellで.NETのウィンドウを生成する」の続編的な内容を綴りたいと思います。

そのため、あちらの記事を読んでからこちらを読むこと推奨です。

最近、昔の記事と同じネタを使いまわすばっかりで、やっぱりネタないんだろとか言ってはいけない。



上記リンクの記事では、ウィンドウの生成と表示までをメインに書いてあり、
ボタンを押したら〇〇するみたいなイベントハンドラというかロジックの部分はかなり適当でした。


一応、前にイベントハンドラについて言及したことをまとめましょう。

XAMLでたとえば、Windowの要素としてButtonがあるというときに、PowerShell上でButton.Clickイベントのハンドラを書きたいなというときは、

まず、PowerShellでButtonのインスタンスを取得できるようにするため、XAMLのほうでButton要素に適当なx:Name属性を設定しておきます。

そして、Windowのインスタンスはすでに例のXamlReader.Parseメソッドから取得できているので、
そのWindowのFindNameメソッドにButtonのx:Nameを与えればインスタンスを探して返してくれます。


そして、そのインスタンスのメンバに、PowerShell専用の普段は使えないメソッドですが、Add_(イベント名)というメソッドがあるので、それを呼びます。

引数に { ... } と書くスクリプトブロックを与えれば、たとえばAdd_Clickを呼んだなら、そのあとボタンがクリックされたときにスクリプトブロックが呼ばれるということになります。

ちなみにAdd_(イベント名)じゃなくて、Register-ObjectEventというコマンドレットでもPowerShell的なスタイルでイベントハンドラを登録できるのですが、
これは厳密にいうとイベントハンドラとはちょっと違うPowerShellのジョブというものであるようで、実験してみたところおそらくジョブを扱うスレッドはGUIスレッドと違うという問題で上手いことハンドラが呼ばれませんでした。



このように、
1. XAMLにx:Nameを書いておく
2. FindName
3. Add_(イベント名)
と、三つの工程を踏まなければならないので、イベントを登録するコントロールがひとつならいいですが、たくさんあるともう大変です。

つまりイベントハンドラがたくさんあるような本格的なGUIを、PowerShellから構築することは考えないほうがいいでしょう。

続きを読む

tag: Windows PowerShell C# イベント WPF XAML テンプレート スクリプト

命題論理の意味論まとめ (前編)

記事「集合と写像の勉強まとめ」なんかも書きましたが、
昨年末から論理学の勉強を継続的にしていて、京都大学の教授の方のサイトをずっと見ています。

そういえばこの前、このサイトが書籍化されたらしい本を見かけました。


今回、命題論理、とくに意味論について書かれてある部分を、ようやく読破しましたので、そのまとめとしてお書きしようと思います。


そういえば昔も論理学について放送大学で学んで、記事「記号論理学という学問を知ってみたが」を書いたことがありました。

あのときは今回の命題論理よりハイグレードな述語論理だったんですが、数学的で厳密な定義はおいといて実用的な論理学をやるみたいなものでしたので、

今回は厳密な部分をとばさずに再挑戦しているみたいな感じですね。

記事の書き方も、あの記事ではトップダウン的な説明でしたが、今回はボトムアップ的であると思います。


ところで、意味論とか構文論ってどういうことなのかイマイチ入ってこないのですが、“命題論理の意味論”なのか“意味論の命題論理”なのか、どっちなんでしょうか。

一応、“命題論理の意味論”と書いてあったので、そういうことにしておきますが…。


あと、記事「集合と写像の勉強まとめ」と続編記事「続・集合と写像の勉強まとめ ~ブール代数も~」、
で書いた数学の知識は正直ほとんど使わなかったと思うのですが、最初の根源的な定義をするところで少しその知識がいりますね。


少なくとも演算というのが何なのか理解する必要がありますし、演算というのがなんのか理解するには写像についての理解、ひいては集合とは何か…

数学は少しずつ積み上げる学問なので、学校で嫌われるんですね。


今回、ひとつの記事に収めるつもりだったのですが、すごく基本的な話をしただけで無駄に長くしてしまったので、これを前編として次回、後編を書こうと思います。

お楽しみにしていてください。

続きを読む

tag: 数学 論理学 演算 論理式 命題 命題論理 集合 意味論

命題論理の意味論まとめ (後編)

昨日は命題論理について勉強したことのまとめとして、記事「命題論理の意味論まとめ (前編)」を書きましたが、

今回はより話が本格的になってくる後編を書いてまいります。


なお前編で、集合{ T, F }の要素としてのT, Fと、論理式の構成要素としてのT, Fは別物だということに注意しなければならないと触れましたが、

今回はそれを区別するために、論理式の構成要素として使うのはT, Fなんですが、
命題論理で使う集合の{ T, F }のほうは{ 1, 0 }に改めます。

もちろん1が真で0が偽なので、そのように読みかえてください。



前編で言った∨, ∧, ¬の三種類の演算があれば、実は残りの→, ↔は代用可能であるということの、理由については言及しませんでしたが、

まずa→bは、aならばbであり、aでなければあらゆる場合に真ということでしたからaかつb、またはaでないのどちらかで、(a∧b)∨¬aといえます。

つまり代用可能です。

しかしよく考えれば、(a∧b)¬aは満たす条件が排他的ですが、わざわざ排他的にする必要もありません。

つまり、aがなんであれbが真ならばこの演算は真であって、ようするにb∨¬aというふうに、よりスリム化できます。


今、日本語でグダグダと説明しましたが、もちろん厳密にそれを言うためには、前編で触れたように表を用いて確認します。

ただ、今の話のように、演算子の日本語としてのイメージを捉えたうえでわかることというのを考えて、最後に表で確認するという方法は悪くないですね。


まあこの先、それでどんどん法則が増えていって、ほとんど法則とかで同値変形していく感じになって、今後は日本語を使うことなんてほぼないですが…。


なお、a↔bについては、aならばbだしbならばa、ということになるので、これも日本語的に考えて(a→b)∧(b→a)となります。

二つの演算は前述のようにで代用できるので、それをで結んでいるだけなので、結局も三つの演算で代用できることになりますね。

続きを読む

tag: 数学 論理学 法則 標準形 論理式 命題 命題論理 意味論

[GoF] クラスで表すパターン解説

ネタがないときはGoFデザインパターンの記事を書くのが鉄板になりそうですが、

GoFデザインパターンは23種あるようにみえて、実は記事にするほどでもないクソみたいなパターンも多いので、わりと弾薬は減っています。


そういえば、そもそも私がGoFデザインパターンの勉強に使った本は、「Java言語で学ぶデザインパターン入門」という本で、
Java使えませんが、ほとんどC#と同じだし、書いてある内容は言語に依存しないものなので、読んでいたんですが

この本の著者の結城浩という方、数学にも精通していて「数学ガール」という本で、すごく有名なんですね。
読んだことはないですが、私でもたまに耳にしていた本です。

数学の色々なテーマについてのシリーズ本になっているみたいで、なんかよく分かりませんが高校生の女の子とかがなぜか数学詳しくて、取り巻きと一緒に数学について考察するストーリーものなんでしょうか。

私が現在勉強している論理学の「ゲーテルの不完全性定理」について扱っている巻もあるようなので、ぜひ機会があれば読んでみたいですね。


さて今回は、あまりクラスで表現しようと思わないものをクラスで表現してみました、というコンセプトのデザインパターンがいくつかあるので、それを紹介します。


具体的には、Stateパターン、Mementoパターン、Commandパターンです。

クラスで表すというカテゴライズでやるなら、StrategyパターンとInterpreterパターンも取り上げるべきだと思うのですが、
Strategyパターンは単純すぎるのと、Interpreterパターンは需要がニッチすぎるので、やめておきます。

まあ正直に言うと面倒臭いだけなんだがな!

続きを読む

tag: プログラミング オブジェクト指向 GoF デザインパターン クラス ステート 処理 カプセル化

4年目を振り返る

もうすぐ3月31日に当ブログは、なんとも早いもので4周年を迎えてしまいます。

これまでも一年過ぎるごとに、その一年を通したブログ活動について振り返ってきましたので、今回もやります。


早かったものの、しかしまあ、ブログを開設してから今までの期間が、まだあっという間だと思っているのかというと、
さすがにそうではなく、そろそろ長いことやってる感は出てきました。


ただ4年という時間の長さに相応する印象があるのかと思うと、4年も経っているのに「4年ってこれだけ!?」と言いたくなりますね。

4年なんてそんなもんなんでしょうか。
よく考えてみたら人生で、まだ4年を4回しか経験していないので、4年を語るには早いかもしれないですが…。

というか、今気づいたのですが、私の人生のだいたい4分の1はこのブログをやっている期間なんですね。


しかも、私とこのブログが一緒に年をとるにつれて、どんどんこのブログが人生を占める割合が増えていくわけで、

そういえば意識したことありませんでしたが、以前から言っているようにこのブログを終えようとしている6周年のとき
私は18歳なので、人生に占めるこのブログをやっている期間の割合は、なんと3分の1ということになりますね。

恐ろしい、このブログなめてました。

続きを読む

tag: ブログ「サイバー少年」 周年 自分史 勉強 目標 モチベーション

ブログ4周年記念画像を掲載!

先ほど3月31日になり、当ブログは今日で4周年を迎えます!

実際には昼ごろに作ったブログだったと思うので、まだなんですが、日にちとしては今日がブログ4周年記念日であります!


まあ、前と同じように、そのことを祝う記事は今日中のどこかでまた書きます。

そして、たった今ブログのトップに、いつものような“ブログ4周年記念画像”を貼ってきたので、ご報告とともにこの記事にも掲載します。

トップなので、すでに嫌でもご覧になっていると思いますけどね。


トップに貼った…というか、今回の記念画像はほぼタイトル画像の拡張で、二つ貼るのは冗長なので、
タイトル画像を一時的に、この記念画像にしてしまうという暴挙に出ています。


その画像というのが、こちら

ブログ4周年記念画像
ブログ4周年記念画像


なんとも手抜き感あふれるシンプルイズベストという画像ですね。
今日になって作った画像です。

ずっと背景は真っ黒だったんですが、日が変わる直前に急に「寂しすぎる!」と感じで、めちゃくちゃ急いで背景にグリッド線を設定しました。


さて、そもそものタイトル画像のコンセプトでもありますが、今回もファミコン的デザインで制作しました。

そして、タイトル画像をお披露目したときも記事「ブログタイトル画像リニューアル!!!」で紹介しましたが、

この画像でも文字は「Karmatic Arcade」というフリーフォントを使用しています。

今回も制作者“Vic Fieger”さんのページのリンクを貼っておきます。

Fonts by Vic Fieger | dafont.com
http://www.dafont.com/vic-fieger.d852


上のリンクの記事ではなぜか書いていなかったみたいですが、確かこの時も同じようなことをしていたと思うんですが、

このドット絵風のデザインが大事なのに、MSペイントで文字を打ち込んでしまうと、意に反してアンチエイリアスをかけやがって微妙になるんですよね。


なので、たぶんタイトル画像のほうもそうしていると思うのですが、今回、下の部分の文字を打ち込むさいに、
C#でGDI+を操作して、アンチエイリアスを行わない描画を行ったものを使用しています。

こういうのって、プログラミングができると自由にカスタマイズできたりするので、ちょっとドヤりポイントになりますね。


というわけで、2週間ぐらいしたら撤去というか、タイトル画像を元に戻します。

ここの記事を見ればずっと閲覧可能ですし、
最近は「ブログ画像ギャラリー」という昔の画像の墓場があるので、いずれここにも追加するつもりです。

冒頭でも言いましたが、今日はこのあと寝て、4周年記念の記事をまた書きます。

tag: ブログ「サイバー少年」 画像 季節画像 周年 フォント デザイン ファミコン タイトル

祝!ブログ「サイバー少年」、4周年!!

祝!!
ブログ「サイバー少年」、4周年!!!


当ブログは本日、開始から4周年を迎えました!!
もう4年も経つのです。

このブログの右側に月別記事一覧みたいなのがあって、ここは今まであまり場所とってない印象だったのですが、
さっき、よくよく見てみたらびよーんと伸びていたので、時の流れをまさに“見える化”してくれてますね。


どうでもいいんですが、“見える化”って最近よく言われるのはなんなんでしょうか。
“可視化”じゃ駄目なんですかね?

“可視化”は目が視覚的に認知できるようにするという形而下のもので、“見える化”はもっと広い意味で、把握できるようにするという事なんでしょうかね。

また話が広がりだしたので、元に戻しましょう。


ちょうど一年前の今頃に書いた記事「祝!ブログ「サイバー少年」、3周年!!!!!」では、こんなふうに書いていました。


1周年記念の記事「祝!ブログ「サイバー少年」、1周年!!!」は259件目の記事でした。
2周年記念の記事「
祝!ブログ「サイバー少年」、2周年!!!」は334件目の記事でした。

3周年記念の本記事は400件目…どんどんペースが遅くなっております(笑)


そしてこの記事は、451件目になると思うので、さらにペースは下がっていますが…。
しかし、4年目の一年でも記事を50件くらい書いていたというのは、意外ですね。

続きを読む

tag: ブログ「サイバー少年」 周年 目標

3月

コンピュータ関連で覚えた技術
・PowerShellでのfunctionの定義方法を、パイプライン処理も含めて覚えた。

その他で覚えた技術
・命題論理の導出原理あたりを学んだ。
・述語論理の意味論を学んだ。
・命題論理の形式化について知った。

あったイベント
・当ブログ「サイバー少年」が開始から4周年を迎えた。

コメント
PowerShellのやつは二月と三月をまたぐところでやった、ほぼ二月のものなんですけどね…。論理学で三項目ありますが、まあ普通なら一つにしているところを、今回はジャンルが広いのでわけました。今回で2015年度の月間まとめは最後となります。

tag:

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。