bar_1

contents_map

2017年11月19日日曜日

[Ruby]モジュールに継承/派生っぽいことをさせてみる試み

組み込みライブラリもしくは既存のクラスclassやモジュールmoduleを, 特定の用途向けに一部だけ改変したいことがある. その際, できればモンキーパッチはしたくない.
このような場合, クラスならば class DerivedKlass < OriginalKlass として継承を使える. 派生クラスを作ることで, 元のクラスのコピーを作り, それを改変すればいい.
ではモジュールの場合は, どうしたらよいだろう? ここでは, Mathを取り上げて考えてみる.
最初に, include/extend/refineという既存の方法の検討をおこない問題点を明らかにする. 次に, これらの問題点を解決する Module#module_compose の導入を提案する.

2017年11月16日木曜日

Rubyの実験: Moduleのprivateインスタンスメソッド

Moduleのprivateインスタンスメソッド, 具体的にはModule::module_functionのふるまいで, 腑に落ちない点があった. 派生先のClassクラス (ひいては一般に定義されたクラス) からなぜ使えないのか? ということで, 実験した. 結論的には 仕様だった, という落ちでした……w

2017年11月8日水曜日

Rubyの実験: Object/Class/Module/Kernelにメソッドを追加するとどうなるか?

Object/Class/Module/Kernelにメソッドを追加すると, これらや一般のクラス, モジュールやインスタンスに対してどのような影響があるか, 調べるコードを書いてみた. 追加するメソッドはインスタンスメソッドと特異メソッドで, 両方publicの可視属性です.

2017年11月2日木曜日

つぶやき日記2017-11-01 Rubyでいくつか調べていたこと



  • ModuleやClassのインスタンスメソッドの可視性の相違 (例えば Object#extendとModule#includeはパブリックインスタンスメソッド,かたやModule#public/protected/privateはprivateインスタンスメソッド) について.どうやってpublicとprivateを使い分けているのだろう? 思想がよくわからない……外側から使えるか否かなのかな.
  • public/protected/privateは,実は予約語ではない.Moduleのprivateインスタンスメソッドである.このようなメソッドはRuby自前で書けるか? 答え: 書けない.引数を与えない場合の記述が問題になる.仮にdefを再定義できるならば可能となる (defは予約語である).
  • 強引に書きたい場合は,https://stackoverflow.com/questions/28055356/determining-methods-visibility-on-the-fly が参考となる.defに代わるメソッド定義メソッドを用意することになるだろう.


2017年7月6日木曜日

Mac環境でGit GUI経由でgitkを使ったときに発生するエラー: unknown color name "lime"の解決

SourceTreeの品質がおかしくなって以降、GitのGUIツールの代替えアプリをいくつか試してきた. Github Desktop, SmartGitやGitKrakenなどを使ってみた後, GitKrakenに落ち着いたが, 最近処理が重くなってきたのと, ライセンス関連がうざくなってきたので, 代替えの調査を兼ねて, git (Xcode Command Line Toolsではなく, brewでインストールした方) が標準で用意しているGUIを試してみた.

git guiコマンドでGit Gui.app経由でgitkを起動したとき, Mac OS X El Capitan (10.11.6)環境ではエラーが発生しうまく動かない現象があったが, 解決した. /usr/local/bin/gitkのコードは, いじらなくていい.

(以下の記事は, brewとbrew caskの環境が整っていることを前提としている)

2017年7月2日日曜日

つぶやき2017-07-01



  • Mac miniの新しいの, 出て欲しいなぁ.
  • 少し古い文献について写経をしていて, 漢字のフォント表示がなにかおかしいことに気づいた. 調べたところ, iTerm2で機種依存文字を表示させると新字として表示されてしまう場合があることに気づいた: 例えば「神」と「神」(旧字の方. 示へん. UTF-8にも関わらずBloggerが勝手に文字コードを新字の神#x795Eのほうに変換してしまうので数値文字参照#xFA19で埋め込みました). 標準アプリの「ターミナル」(Terminal.app)ではきちんと表示されるのだ.
  • iTerm2では両方とも新字のフォントが表示されてしまう. 念のため, 使用しているデータのコードポイントも調べてみたけども, 当然ながら違う. なぜだ……
  • 編集上はMacVimなどしかるべきエディタを使えば問題ないといえば無いのだが, コンソールからgrepなんかをかけるとき, 思わぬミスにつながりそうで嫌だなぁ.う〜ん, Terminal.appを使ったほうがいいのかなぁ...



2016年12月9日金曜日

LibreOffice Basic のプログラミング: 構文



構文

このセクションでは、LibreOffice Basic の基本的な構文について解説します。詳細情報については、別途用意された『LibreOffice Basic ガイド』を参照してください。
  1. 変数の使用法
    LibreOffice Basic の基本的な変数の使用法について説明します。
  2. オブジェクトの使用法
    オブジェクトカタログには、LibreOffice で作成したモジュールやダイアログの一覧が表示されます。
  3. 手続きおよび関数の使用法
    ここでは、LibreOffice Basic でのプロシージャーおよび関数の基本的な使用法について説明します。
  4. ライブラリ、モジュール、ダイアログ
    ここでは LibreOffice Basic での、ライブラリ、モジュール、ダイアログの基本的な使用法について解説します。

2016年11月28日月曜日

LibreOffice Basic の Option と定数の一覧

LibreOffice BASIC のオプション (Option) と定数 (Constants) について、公式のドキュメントを検索したけど、みつからない。そこで Web 上の情報とソースコードを調べてみた。

2016年11月19日土曜日

LibreOffice Basic のプログラミング: 基本



基本

このセクションでは、LibreOffice Basic の基本について説明します。
LibreOffice Basic のコードは、Sub...End SubFunction...End Function セクションで定義するサブルーチンおよび関数から構成されます。1 つの Sub および Function からは、他の Sub や Function を呼び出すこともできます。Sub や Function を記述する際に、可能な限り汎用的なコードにしておくと、他のプログラムで再利用できる可能性が高まります。プロシージャーおよび関数 も参照してください。
Note.png パブリック変数やサブルーチン、関数の名前にはいくつかの制限が適用されます。同じライブラリのモジュールのいずれかと同じ名前を使ってはいけません。

1. Sub (サブルーチン) の用途

Sub とは、サブルーチン (subroutine) を省略したもので、1 つのプログラム中で実行する特定のタスクをブロック化する際に使用します。 サブルーチンを利用することで、1 つのタスクを複数のプロシージャーに分割することができます。 プログラムの構造を複数のプロシージャーやサブプロシージャーに分割すると、コードの可読性が高まると同時に、エラーの発生を抑える効果も期待できます。 下記の例のように、サブルーチンにはパラメーターとして複数の引数を渡すことも可能ですが、呼び出し元のサブルーチンや関数に戻り値を返すことはできません。
DoSomethingWithTheValues(MyFirstValue,MySecondValue)

2. Function (関数) の用途

Function の基本的な機能はサブルーチンと同じですが、戻り値を返せるという点が異なります。下記の例のように、変数宣言部の右側に関数を配置することも可能で、通常の値の代わりに直接関数を記述することもできます。
MySecondValue = myFunction(MyFirstValue)

3. 大域および局所変数

大域変数とは、1 つのモジュール内にあるすべてのサブルーチンと関数で使用できる変数のことです。これらの宣言は、モジュール内のすべてのサブルーチンや関数より前に記述する必要があります。
個々のサブルーチンや関数の中で宣言した変数は、該当するサブルーチンや関数の内部でのみ使用できます。これらの変数は、上位のサブルーチンや関数から継承した局所変数や大域変数と同じ名前があっても優先的に使用されます。

4. 構造化

プログラムをプロシージャーや関数 (Sub および Function) に分割して記述した場合、個々のプロシージャーや関数をファイルに保存して、他のプロジェクトで再使用することができます。LibreOffice Basic には、モジュールとライブラリ の機能が用意されています。サブルーチンや関数は、常にモジュール内に定義されます。モジュールは、大域的に使用することも、特定ドキュメント内部でのみ使用することもできます。また複数のモジュールをまとめて、1 つのライブラリとすることもできます。
サブルーチン、関数、モジュール、ライブラリは、ダイアログ マクロ を使用することで、ファイル間のコピーおよび移動が行えます。

2016年11月18日金曜日

LibreOffice Basic のプログラミング


Basic ヘルプ > LibreOffice Basic のプログラミング

LibreOffice Basic のプログラミング

(blogspotの記事のパーマリンクでは、アンダースコアを含めても消される)
ここではマクロおよび LibreOffice Basic の一般的な使用法を解説します。
  • 基本
    このセクションでは、LibreOffice Basic の基本について説明します。
  • 構文
    このセクションでは、LibreOffice Basic の基本的な構文について解説します。詳細情報については、別途用意された『LibreOffice Basic ガイド』を参照してください。
  • 統合開発環境 (Integrated Development Environment: IDE)
    このセクションでは、LibreOffice Basic の統合開発環境 (Integrated Development Environment: IDE) について解説します。
  • イベント駆動型マクロ
    このセクションでは、Basic プログラムをプログラムイベントに割り当てる方法について解説します。