Windows」カテゴリーアーカイブ

Unix と Windows 世界の融合 プロ生勉強会 第10回@品川

しゃべってきました。

 

内容は、
Windows 環境が好きだ-! という人向けに、
UNIX も使いたいんだけどどうしようという内容。

Cygwin との比較をして、
速度が速いけどライブラリが足りないよ! なんてのも。

 

以前書いた記事としては、
GNU系ツールもばっちり使える、Windows の UNIX 互換環境を試してみる。
との連携記事ですね。はい。

あと、GnuWin32 については、
Windows で GNU Tools を使う。 GnuWin32
とかとか。

あと、プレゼン中は runas コマンドを知らないという失態をしていたので、
sudo ほしいー! とか言ってましたが、
Windows の sudo / su は runas で!
これ見てください。

・・・でも、んー・・。んー・・。su さんほしい(ぁ

 

プレゼン資料:

プレゼンの動画:



その他、動画中に上がっていた質問を2つ。

1.X で動作するアプリケーションの画像あげてよ!

image

手頃に思いついたのが xterm ということで、 xterm の画像をあげておきます。
xeye などを動かせればよかったのですが、ちょっと動かなかったので、入れ直して再実験してみます。

 

2.ハルマゲドンコマンド動かしたらどうなるの

image

起動できなくなりましたとさ。

 

そんなわけで、であであー!

Windows で フォルダをドライブにする。

同じくメモ書き程度に。

特定のフォルダをドライブにする場合。
subst コマンドを使います。

古いアプリケーションで、スペースの入ったパスが使えない場合や、
そもそも長いパスをどうにかしたい場合に、mklink に並んで有用です。

 

作成:

subst ドライブ: パス

 

削除:

subst /d ドライブ:

 

例として、コマンドプロンプトのカレントディレクトリを Zドライブ に割り当てたい場合。

Windows Vista 以降であれば、フォルダを Shift キーを押しながら右クリックすると
「コマンド ウィンドウをここで開く」というメニューが追加されるので、それで行う場合を想定して。

追加:

subst z: .

削除:

subst /d z:

 

C:\Users\Test\Desktop\Hello を X ドライブにする場合。

追加:

subst x: C:\Users\Test\Desktop\Hello

削除:

subst /d x:

Windows の sudo / su は runas

2014/12/11 update:
本記事の方法より、良い方法が見つかりましたので、次の記事を参照されることをおすすめします:

Windows で sudo なことをする – みむらの手記手帳


 

覚え書き程度に。

linux や unix の su コマンドや sudo コマンドに該当するコマンドとして、
Windows には runas コマンドが存在します。

ヘルプ:

RUNAS 使用法:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
        /user:<ユーザー名> プログラム

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
        /smartcard [/user:<ユーザー名>] プログラム

RUNAS /trustlevel:<信頼レベル> プログラム

   /noprofile        ユーザーのプロファイルを読み込まないように指定します。
                     この結果、アプリケーションをより速く読み込むことができま
                     すが、一部のアプリケーションが正しく動作しない可能性があ
                     ります。
   /profile          ユーザーのプロファイルを読み込むように指定します。
                     これは既定値です。
   /env              ユーザーの環境ではなく、現在の環境を使用する場合に使います
   /netonly          指定された資格情報をリモート アクセスのみで使用する場合に
                     使います。
   /savecred         ユーザーが以前に保存した資格情報を使います。
                     このオプションは Windows 7 Home Edition または Windows 7 Starter Edition では使用できません
                     Edition では利用できないので無視されます。
   /smartcard        資格情報がスマート カードから提供される場合に使います。

   /user             <ユーザー名> の形式は、"ユーザー@ドメイン" または
                     "ドメイン\ユーザー" です
   /showtrustlevels  /trustlevel に対して引数として使用できるレベルを表示し
                     ます。
   /trustlevel       <レベル> は /showtrustlevels に列挙されているレベルの
                     いずれかです。
   プログラム        実行可能なコマンドラインです。下の例を参照してください。

例:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

注意:  要求されたときのみ、ユーザーのパスワードを入力してください。
注意:  /profile は /netonly と互換性がありません。
注意:  /savecred は /smartcard と互換性がありません。

 

ということで、要は任意のユーザ権限で動かせます。

 

使い方。

runas /user:administrator cmd

これで、 administrator で cmd (コマンドプロンプト) が立ち上がります。

 

同様に、TEST というユーザで calc (電卓) を立ち上げたいときは、

runas /user:TEST calc

というような要領で。

 

要は、

runas /user:(USERNAME) (COMMAND)

というところ。ひとまずメモまで。

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分だから、とっても汚くて、実装がふざけた感じになっているけど、許してね。