ソフトウェア」カテゴリーアーカイブ

ブログにそーしゃるねっとわーく。

みむらです。つけてみました。

なかなかにごっちゃごっちゃするよね、っていうか、してるよね。

でも、こんなにそういうサービスがあったんだーっていうのも見てびっくり。

多分、RSS と、そこから転載してる Facebook さんの方には飛びません。あしからず。

 

なんとなく、こういうのがないと、ブログがぼっち過ぎるので、

付けてみたわけですが、んー。んー。んー。

 

ってことで、何言ってるのかわかんねーよってひとは、

http://mimumimu.net/blog/

こっちみてください。はい。

Prolog を Excel で使う。

またしても、不思議なことをしてみました。

359779196

今回解かせたのは、
http://www.geocities.jp/m_hiroi/prolog/prolog01.html#chap4
こちらのウェブサイトで紹介されている、「家系図」の問題。

ダウンロードに関して
ソースコード: https://github.com/mimura1133/mm_Prolog_for_Excel
バイナリ:http://mimumimu.net/beta/programs/PrologExcel.zip

コードの紹介は今回は割愛しますが、
導入の方法について、かなり変態的なので紹介します。


導入編。

image

ファイルを展開すると、このようなファイルが入っています。

image

この中から、 install.bat を探し、右クリック –> 管理者として実行

実行したら、 Excel を立ち上げます。

image

ファイルメニュー内の「オプション」をクリック

image

開いたダイアログから、「アドイン」を選び、
一番下の管理について、「Excel アドイン」を選んで、「設定」を押します。

image

そして、オートメーションをクリック。

image

中から、PrologExcel.PrologExcel を選んで、OK を押す。

image

PrologExcel.PrologExcel が追加されるので、チェックを付けて OK を押す。


利用編

このアドインには大きく2つの関数があります。

1.Prolog_List 関数

Prolog_List()

Input : Excel List
Output: Prolog List

この関数は、

male taro
male ichiro
male jiro
male saburo

というような一覧が存在したとき、

male(taro).
male(ichiro).
male(jiro).
male(saburo).

このような、Prolog のリスト形式に変換してくれます。

さんぷる:
image

また、下記のように、いくつもリストがある場合、

image

特に難しい事はしていませんので、 Excel の通常の文字列結合同様、
「&」マークで結合すれば問題ありません。

image

2.Prolog 関数

Prolog()

Input : Program, Query
Output : Answer

第一引数に、リスト定義などを与え、
第二引数に、クエリを与えます。

image

クエリを投げる際は、

:- parents_of(X, ichiro).

のように、「?-」 ではなく、「:-」として投げるようです。

(・・私は Prolog を使う人じゃ無いのでよく分かりません・・。)

なお、この関数が実行される際、多少ラグが発生するのでご了承下さい。


とりあえず、こんな感じで。であであ。

Excel のマクロを Python で書く。

みむらです。IronPython ってのがあるので、ちょちょいと。

仕組みとしては、Visual Studio の VSTO (Visual Studio Tools for Office) を使って、
Office 向けのアドインを作って、その中で IronPython を動かそうーってこと。

359870206

結果としてはこんな感じ!

とりあえず、VSTO の書き方とかは割愛して。

ソースはここに:
https://github.com/mimura1133/mm_Python_for_Excel

using Microsoft.Scripting.Hosting;
using IronPython.Hosting;

namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        public static string Code = "";

        static ScriptEngine _python;
        static ScriptScope _python_scope;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            _python = Python.CreateEngine();
            _python_scope = _python.CreateScope();
            _python_scope.SetVariable("Application", Application);
            _python_scope.SetVariable("Function", Application.WorksheetFunction);
            _python_scope.SetVariable("Cells", Application.Cells);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        public static void Run()
        {
            var cc =_python.CreateScriptSourceFromString(Code);
            cc.Execute(_python_scope);
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}

メインソースはこんな感じ!

Python.CreateEngine() で、 Python のエンジン作って、

Scope に対して、 SetVariable を使って、参照をがしがし。( python で言うところの、 import )

あと、どこかから Run が実行されたらコンパイルして実行する仕掛け。

動作例ですと、「Run」 ボタンですね。

これ使った場合、 Function 以下に、Excel の関数が存在していて、

Cells 以下に、各セル情報が入っているので、キー入力を捕まえてくれば、Python によるマクロも可能かも。

制作時間30分だから、とっても汚くて、実装がふざけた感じになっているけど、許してね。

Aero Basic と Aero Glass の切り替え。

みむらです。

結構 Windows 7 になって、コントロールパネルをさまよう人が多くなった気が。
とりあえず、マウスでかちかちっとやる人と、一括でやるパターン2つと3種類書いておきます。

余談ですが、私は Aero Glass 好きだったりします。

アニメーション切ると、タスクバーのプレビューを始めとする Windows 7 の機能や、見た目を保持したまま、
非常にきびきびとした動作になります。

もし宜しければぜひ: Windows Aero のアニメーションを切って高速に。


手でやるやり方その1

image

デスクトップ上で右クリックをして、「個人設定」を開く。

image

開いた画面の下の方の、「ベーシックテーマとハイコントラストテーマ」の中に、
「Windows 7 ベーシック」などがあるので、それをクリック。

なお、Aero Glass に戻す際は、同様にして、「Aeroテーマ」の中にあるテーマをクリックすれば戻ります。


手でやるやり方その2 (要:管理者権限)

上記の物とは違い、純粋に Aero だけを切ります。

image

スタートメニュー内の「コンピュータ」を右クリック –> プロパティ

image

システムの詳細設定を開く。

image

詳細設定タブのパフォーマンスの「設定」をクリック。

image

開いた中の、
「デスクトップコンポジションを有効にする」のチェックを外すと、 Aero Glass が取れて、
「ウィンドウとボタンに視覚スタイルを使用する」のチェックを外すと、クラッシック表示になります。


一気にやる方法

単純に、手でやる方法の2をバッチファイルでやるだけです。
管理者権限は不要です。

Aero Basic にする:
http://mimumimu.net/software/blogup/visual_aero_basic.bat

Aero Glass にする:
http://mimumimu.net/software/blogup/visual_aero_glass.bat

ではでは。

Windows Aero のアニメーションを切って高速に。

どうも。みむらです。

Windows って使ってて、遅いなーとか思ってしまうんですが、
そのものが重いんじゃなくて、視覚効果で重さを感じ取っているということが考えられます。

確かに、アニメーションがあった方が楽しいです。視覚上は。
でもそのコンピュータで何をやるんだろうと考えたとき、作業が圧倒的に早く終わった方がありがたいわけです。

作業中は只でさえイライラすることが多いです。知らず知らずのうちに。
あなたが待ち合わせで、相手を待っているとき、
同じ時間に遅れて来るにしても、歩いて来るのと、走ってくるのでは、後者の方が圧倒的に印象が良いですよね。
前者はやる気が感じられない。これと一緒。

閑話休題

というわけで、遅く感じさせるアニメーション効果をすべて落とすバッチファイルを用意しました。
対象は、Windows Aero を使っているユーザ。

中身は、
image

パフォーマンスオプションの設定をいじくりまわすだけ。


1.ダウンロード

http://mimumimu.net/software/blogup/visual_aero_fast.bat

上記URLを右クリック し、 「対象をファイルを保存」 を選び、デスクトップに保存します。
(mime を見てくれるブラウザでは、自動的にダウンロード画面に移行してくれると思います。)

2.作業中のファイルを保存し、アプリケーションを閉じる。

3.ダウンロードしたファイルを実行

image

このようなファイルが保存されますので、ダブルクリック。

4.勝手にログオフするので、ログインし直す。

アニメーション効果がすべて切れるので、最初は不思議な感じになりますが、
すぐに慣れます。


ただこれになれると、普通のアニメーション効果ONの状態のWindows が、
なかなかにとろっとろしたシステムに見えてきます。

多分、XPまでのユーザが、Windows 7 や Vista に移行して、遅い! と言うのは、
ハードウェアスペックの問題もありますが、こういう細かいところで、とろっとろした感じを出したのが、
どうも宜しくないんじゃないのか、と予想しています。

きびきびした Windows で作業したい方は、上記のバッチを使って、設定変更してみてはいかがでしょうか。
設定を変えると、案外 Aero Glass も高速に見えてきますよ。