ブログ「サイバー少年」

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

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

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

tag:

基本情報技術者試験の勉強、経過報告

基本情報技術者試験が4月15日と差し迫っているサイバー少年です。

まったりと一日に1時間程度、勉強の時間を設けているのですが、そろそろ本気出さないと駄目ですかね。

数学みたいな考える勉強は数時間、考え込むことが出来るのですが、FE対策みたいな暗記モノは1時間くらいで脳みそパンクしちゃうんですよね~。


勉強してみて思ったこととして、まず覚えることが多い!
用語が多いです。

しかも、用語の意味が地味に複雑なロジックをはらんでいたりするので、意味まで覚えるとなると結構キツいですね。
4択で用語の意味を答えるとかなら、希望は持てるのですが…そういう問題が出ることを期待します。


そして、それよりも厄介なのが計算問題です。
単純に私は数値計算が嫌いです。

論理的な推論も突き詰めれば機械的な計算でありますが、数値計算はそれよりも個人的には頭を使います。

それが、データ量とか計算しまくりますからねぇ。
ただ、ちょっと楽だなと思ったのは、

(3 * 10^6) / (4 * 10^4) = 3/4 * 100 = 75
みたいに指数法則が使える問題が、かなり多いことです。

根本的な解決にはなりませんが、少しは楽できますよね。

スポンサーサイト
続きを読む

tag: 情報 FE 勉強 目標 単位 暗号 署名 計算

タッチパネル時代のプログラミング

この前、Scratchっていう、ビジュアルプログラミングの開発環境のひとつで流行しているものがあるようなので、ちょっと遊んでみたのですが、
正直プログラミングに飽きていた私にも、久しぶりにワクワク感を味わえてなかなか楽しかったです。

主に子供向けのプログラミング学習用の開発環境なんですよね。
同じ類としては日本の文部科学省が提供している「プログラミン」っていうのも遊んでみたことありましたが、こちらも面白いですが、

Scratchのほうが断然自由度があって、そのうえフレームワークが優れていて思ったことを直感的にプログラムにしやすいです。


Scratchを遊びながら、ちょっと考えたのですが、まず前提として現在のプログラマはテキストでコードを書くほうが圧倒的に快適にプログラミングできるので、
ターゲットのデバイスがタッチパネルであろうと、開発はパソコンでコードを書いて行うというのは流儀のひとつとして長く存在しつづけると思います。

しかしながら、タッチパネルでプログラムの要素を組み立てられるビジュアルプログラミングが、遊びや教育用の範疇を超えた新たな開発の流儀として、キテいるのではないでしょうか。


ましてや、今後の子供たちはScratchなどのビジュアルプログラミングで教育を受けてくるわけですから、プロになってもビジュアルプログラミングのほうが馴染みがある状態になるのは容易に想像できます。

そうなると、なおさらビジュアルプログラミングの市民権は大きくなります。

強めの表現を使うと、今後は少なくともアマチュアのプログラマの間ではコードを書くよりビジュアルプログラミングが覇権を握ると思います。


また、言語機能の面でも今まではコードを書くことを想定して作られていたので、多少なりともビジュアルプログラミングには向かない仕様があるはずです。
ビジュアルプログラミングは文字列ではないので、言語と称していいのかは微妙ですが…。

例えばScratchは変数の管理が面倒だなと思いました。
変数はビジュアルプログラミングには向いていないので、どのようなアイデアかは分かりませんが、新たなアイデアで解決に向かうと思います。

あと、関数とかも色々な画面を行ったり来たりして読むなんてやってられないので、廃れるんじゃないですかね。

さらに、Scratchはこの点では優れてるなと思ったのですが、一箇所に多くのオブジェクトを管理する処理を書くのは向いていないので、オブジェクトごとに自分自身を管理する処理を書くことになると思います。

まあ、それはオブジェクト指向設計の理想形なので、コードを書く場合と同じことなんですけどね。
さらにその必要が迫られるという。


最初は今までのプログラミング言語を視覚化するだけだと思いますが、徐々にビジュアルプログラミングが流行るにつれて、少しずつ、結果的には大規模にパラダイムシフトが行われる気がしますね~。

そして、その成果はプロの世界にも入り込んでくると思います。
ビジュアルプログラミングがプロにも流行るということです。

ただ、コードを書くことの利点もありますから、そこらへんでビジュアルプログラミングと競合しちゃって人材が二分化してしまうのは問題ですけどね。


久しぶりにコンピュータについて考えてみて、未来に思いを馳せた瞬間でした。

tag: プログラミング ビジュアルプログラミング Scratch 言語 タッチパネル 教育

GoFデザインパターン解説 THE LAST

今回はGoFデザインパターン解説をします。

この前のGoFデザインパターンの記事「[GoF] クラスで表すパターン解説」で、
もう解説できるようなパターンが、Builderパターン、Bridgeパターン、ChainOfResponsibilityパターン、Proxyパターンぐらいしか残っていないと書きましたが、

今日はそのネタを使いきってしまおうと思います。
4つも書くのはしんどいんですけどね…。

あと、もうあんまり覚えてない…。

というわけで、今回の記事は、当ブログでのGoFデザインパターン解説記事としては最後になります。

続きを読む

tag: プログラミング オブジェクト指向 GoF デザインパターン クラス 継承 プロキシ 条件分岐 リスト 処理

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

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

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


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

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

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

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


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


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

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

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

続きを読む

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

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 テンプレート スクリプト

[GoF] データ構造に関するパターン解説

またGoFデザインパターンの記事を書こうと思います。

前回のGoFの記事「Factory MethodとAbstract Factoryの違いを考える」では、
Template Method、Factory Method、Abstract Factoryについて書きましたが、

今回はデータ構造に関するデザインパターンについて解説していきます。

Iteratorパターン、Compositeパターン、Visitorパターンです。


本当は“データ構造に関するデザインパターン”なんてカテゴリはなくて、これらは別のカテゴリになっているんですが、
私はこの三つをデータ構造に関するパターンと言っていいんじゃないかなと思いますね。

特にIteratorとVisitorは一般に、比較されるようです。

続きを読む

tag: プログラミング オブジェクト指向 GoF デザインパターン データ構造 イテレータ ツリー ディスパッチ

PowerShellで.NETのウィンドウを生成する

ずっとブログのトップ記事がギャラリーになっていて、もう鏡開きなのでそろそろ普通の記事を出さないといけないと思っていたのですが、

なにしろネタがありませんでして、更新するにも出来ない状態だったのですが、今日は例によって祝日ではありませんか。

祝日は更新しなければならないという謎の使命感が今宵もクソ記事を生み出します。


最近、PowerShellを触っていたわけでもないのですが、ネタをひねり出した結果、PowerShellの記事を書くことにしました。


PowerShellでは.NET Frameworkのライブラリをコールできるので、もちろんWindows FormsやWPFなどGUI用のライブラリも使用できます。

これを使って、PowerShellからウィンドウを生成して表示することができるわけでして、
GUIで使える使い捨てツールを作りたいときとかいいんじゃないかと思いましたので、その方法について簡単に紹介していきます。


まあ、GUIで使える使い捨てツールは、記事「シェルスクリプトとかExcelとか」で書いたように、Excelで作るのもなかなかよい選択なんじゃないかと思ったりもしますけどね。


それでも今回はPowershellと.NETで、
・Windows Forms
・WPF(コード)
・WPF(XAML)
の三編でお送りします。

おまけとしてイベントハンドラについても述べます。
続きを読む

tag: PowerShell プログラム GUI WindowsForms WPF XAML スレッド イベント

Factory MethodとAbstract Factoryの違いを考える

前回記事「円柱を傾けて転がすことについて考察」は、祝日、文化の日に書きました。

そろそろまた記事を書こうと思ったら、なんと今日は勤労感謝の日ではありませんか。

祝日限定更新とかにしますか…。


さて、今回はデザインパターンの話です。
この前はパターンマッチングの記事を書いて、パターンの話ばかりしています。


この前、GoFデザインパターン23種類をひととおり学んだのですが、なんということでしょう、ほぼ忘れてしまいました。

まあ23個もあったら無理はないかもしれませんが。

そして、覚えられない原因として、キッチリ覚えようとしてしまうというのがあるのかなと思いました。


記事の最後のほうでまた書きますが、デザインパターンって別にこれに準拠してガチガチに組み立てていくものじゃなくて、参考程度のものなんですよね。

「GoFの頭いい人はこんな作り方してたけどどう?」みたいな程度です。

そのため覚えるもクソもなくて、考え方のニュアンスというかエッセンスを吸収するだけぐらいの心持ちのほうが、応用も効く頭になっていいと思いました。

というわけで、最近は「結局なにをどうしたくてこうなったのか?」ということを着眼点において、またGoFデザインパターンを学び直しています。


今回は、以前からFactory MethodパターンとAbstract Factoryパターンは何が違うのかよくわからなかったのですが、学び直して分かったような気がしないでもないので、書いていきます。
続きを読む

tag: プログラミング オブジェクト指向 クラス オブジェクト デザインパターン GoF 抽象 設計 ファクトリ

後方参照とか.NETの正規表現考察

一週間程前に正規表現についての記事「正規表現の“否定”について勘違いと、アンカー」を書いたばっかりですが、
その記事の最後で、グループとかキャプチャとか後方参照とかをまだ分かっていないという課題を挙げました。

というわけで、それについて調べたので、記事にします。


先にグループとかキャプチャとかが何なのかを書こうと思うのですが、これらは正規表現におけるひとかたまりの単位のことです。

まず、グループというのは正規表現のパターン文字列でグループ化の記号()を用いてグループ化された部分のこと、すなわちこれは正規表現の構文としての一つの単位だと認識しています。

たとえば"I am the (king|queen)"というパターン文字列において、まず括弧で囲まれた"(king|queen)"というグループがひとつあります。

ただし、括弧で囲まれていませんが、パターン文字列全体はひとつのグループとするという決まりがあるようで、このパターン文字列には2つのグループがあることになります。


このように、本当はグループというのは木構造になっているのですが、グループを木構造として扱わずに平坦に扱うのが普通のようです。

実装によりけりかもしれませんが、ほとんどがグループを平坦に扱っていると思います。

これは、グループを平坦に扱うと、パターン文字列内のすべてのグループに一次元的な番号を割り振ることができて、後述する後方参照という仕組みを簡単に利用できるようになるためだと思います。


グループにはそれぞれ番号が割り振られます。

どのように割り振られるかというと、これも実装によりけりかもしれませんが、普通は幅優先探索の順番だと思います。

続きを読む

tag: 正規表現 パターンマッチ 文字列処理 後方参照 .NET

正規表現の“否定”について勘違いと、アンカー

昔、正規表現の基本を学んで、もう基礎的なことは大丈夫だろうと思っていたんですが、思いがけない重大な勘違いをしていました。

“ある文字列でない文字列”の表現の方法なんですが、正規表現ではこの表現が非常にやりづらいみたいで、私のように躓いている人もいると思うのでメモします。

どういうときにこういう正規表現を書くのかというと、私はHTMLのタグ認識をさせていました。

たとえば、以下はXMLですが、

<Root>
<Element>
なまむぎなまごめなまたまご
</Element>
</Root>


このXMLから、Elementの要素、なまむぎなまごめなまたまごを抜き出すための正規表現みたいなのを書こうとしたわけです。

まず、文字列"<Element>"の直後のアンカーを表す"(?<=<Element>)"を書きます。

アンカーも、実は今までよくわかっていなかったので、これも後でメモします。

そして、Elementの要素はなんでもいいので".*"とします。

そして、".*"だけだと"</Root>"までマッチしてしまうので、"</Element">の直前が最後なのだということを表すため、そのアンカーを表す"(?=</Element>"を書きます。

というわけでパターン文字列は"(?<=<Element>).*(?=</Element>)"となります。


ちなみに、".*"の解釈は行末で終わってしまうというのがデフォルトなので、解析対象に改行があった場合は行の概念を無視するように設定しておきます。
続きを読む

tag: 正規表現 パターンマッチ 文字列処理 XML HTML アンカー

次のページ

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。