しらたまのコミッタ日記

2011-04-20

[]OSC神戸2011 01:58

参加してきました。

私は午後からの参加でしたが、はあまりなでしこユーザーの方はいませんでした。

しかし、紹介&説明の中で興味を持っていただいた方は多かったので、まだまだこういったイベントでアピールするのは有効だなと感じました。

特に、オフィス連携の機能の食いつきが良かったです。また、文法機能に興味を示されることも多くありました。

#来場者の中に高専の先生がおられて、少し驚きました;;

 

説明の中でなでしこ2をC#作成していることを言うのですが、まだβ公開などが出来るほどモノがないので、開発協力していきたいところです。

ただ、のためには仕様や構成について、もっと細かく定めておく必要あると思います。

いうわけで、以下、なでしこ2のしようについて話したことと、個人的所感など。

オブジェクト指向

参加者の中で話した限りでは、「あった方がいい」のではないかという見方でした。

私も、「あった方がいい」の立場です。

ただし、出来る限りの仕組みは、普通に使っている分には(特に初心者には)、見えないようにしてあるのが望ましいと考えます。

なぜなら、開発MLでも指摘されているように、初心者にとっては取っつきにくいものと感じてしまう可能性があるためです。

しかし、完全にオブジェクト指向的なものを排除してしまうと、ある程度プログラムを書けるようになったとき、

処理をまとめようとするときなど手続き的な仕組みだけでは物足りなくなって、なでしこから離れていってしまうことが懸念されます。

*加筆するかも*

名前

のなでしこでは基本的に名前はファイル単位でしか存在しません。

私は、これに加えて少なくともプラグインごと、出来れば各プラグインの命令ごとに必要だと思います。

利点としては、例えばデータベースやオフィスなど、対象と接頭語が違うだけで意味は変わらない命令群などは、

接頭語を削除して定義し、名前を指定するようにすれば、名前を変えるだけで、まとめて動作を変えられて便利ということがあります

また、接頭語が削除されることで命令が普通の動詞っぽくなって日本語らしさ向上すると思います。

グループでも代用できますが……

コードの形式

コード生成の難易度は上がりますが、MSILで出力するのがよいかと思います。

独自コードの方がコード生成自体の手は下がりますが、実行系は.NET/monoに投げられます。

これらに投げれば、少なくともWin/Mac/Linuxでは一通り動きます。レンタルサーバでもVPS(月1000程度)ならmonoでいけます。

デバッガ

現在デバッガはvnako組み込みとなっていますが、ここは世の開発環境にならってエディタ側に組み込むべきだと思います。

利点としては、以前に少し話題になったexeに固めたけどデバッグウインドウでソースが見えるということが無くなります。

また、実行ファイル組み込みではそれぞれの実行ファイル(cnakoとか)でデバッガを作らなければなりませんが、エディタ側だと1作ればOKです。

ブレークポイントの処理の対応も取りやすいですし、エディタ組み込みにしない手はないと思います。

エラー処理

現在のエラー監視では、エラーメッセージから、どの命令でエラーが起きたのかわかりにくい・finallyに相当する物がないいう不便な点が存在します。

これを解消するために、エラーオブジェクトかエラー番号の導入と、finally節を導入した方がいいと思います。

例:

エラー監視

  「」でエラー発生

エラーオブジェクト1のエラーならば

  「エラー2」と表示

エラーオブジェクト2のエラーならば

  「エラー2」と表示

最後に

  「監視から抜けます」と表示

文字列と(二次元)配列の関係(変換)

A=「1,2,3,4

5,6,7,8」

Aの変数型確認して表示#=>文字列

A[0]を表示/*=>1

2

3

4

*/

Aの変数型確認して表示#=>配列

文字列からの各種自動変換は便利なのですが、たまにとまどう挙動を見せます。

文字列<=>配列の例では、文字列Aの一行目を取得しようとA[0]とすると、2次元配列に変換され、Aは以降配列として扱われてしまいます。

ここでさらに「Aを表示」などとすると、最初にAへ代入したもの次第で、微妙に文字列に戻したときの表示が異なってきます。

これを抑制するため、この自動変換をオプションで切り替えられるようにした方がよいと思います。

(デフォルトをどちらにするかは更に議論する必要あると思います。)

インデクサ

グリッドへのアイテム設定がデータ全部をセッターで設定するようになっているため、毎全部のデータを更新していて効率が悪い上、グリッドの選択位置がリセットされてしまいます。

なのでインデクサのような仕組みを用意し、ゲッターセッターの先が配列のようなものでも、個別に値を取得設定できるようになったら便利かなと思います。

例:

A実体とは配列

●A設定(V,I)

 A[I]=V

●取得(I)

 _=A[I]

Aとは配列 ←A設定 →A取得

A[1]は100

文字列の中のインデント無視

インデントされた行で複数行の文字列を書く場合、2行目以降で先頭のインデントを削除しないといけないので、少々見づらいです。

  「あああ

いいい

ううう」と表示

これを、一行目と同じインデントの分の白は2行目以降でも無視するようにすると、多少なりとも見やすくなるのではないでしょうか。

エディタの自動インデント挿入とも相性が良いはずです。

  「あああ

  いいい

  ううう」と表示

 

余談ですが、ヒアドキュメントって私の手元のメモでは「元々改行含めた文字列がいけるからいらない?」って書いてありますけど、実装されていますね。

まあ、かぎ括弧含む文字列には有効ですが。

ハッシュのアクセス

ハッシュへのアクセスである@は左辺に変数しか取ることが出来ません。

これを拡張して、左辺に式が来てもハッシュへのアクセスと見なすようにした方がいいのではないかと思います。

そうすると、「A@B@C」を「(A@B)@C」と解釈可能になるので、ハッシュハッシュが実現できます。

さらに配列へのアクセス[]も左辺に指揮を執れるようにすると、「(A@B)[0]」のように配列へのハッシュも実現できます。

ゲッターセッター変数での「それ」の変更

ゲッターセッター変数関数と同じように動作していますが、使い方は普通の変数と同じなので、

普通の変数のつもりで使うと、ゲッターセッター変数の参照のあとで「それ」が書き換わってしまうので、「それ」が変わらないと思いこんでのうっかりミスに繋がる可能性があります

これをなくすために、なんとか普通の変数と同じように「それ」が書き換わらないように出来ないものかと思います。

akaginoyamaakaginoyama2011/04/20 09:10OSC神戸2011お疲れ様です。
ここに書かれてあることには激しく同意です!!

改行をそのまま配列にするモードと
CSVなどの利用する際にシンプルに処理できるように
明示的に配列の区切り文字を選べるモードなどの切り替えなどもあれば良いと思います。

2010-04-02

[]HMAC-SHA1 03:48

OAuthやxAuthなどで使うHMAC-SHA1について、一部で要望があるようなので書いてみた。

一応NYSL書いてますが、ようは自由に使ってもらって結構使って何があっても知らんよ、と言うことなのであんまり気にしないで下さい。

 

12:18追記:鍵が規定より長かったときの処理がおかしかったので修正。

http://www.ipa.go.jp/security/rfc/RFC2104JA.htmlを参考に作成

/*

NYSL Version 0.9982

A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、

ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。

A-1. フリーウェアです。作者からは使用料等を要求しません。

A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。

A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。

A-4. 変更したものや部分的に使用したものは、あなたのものになります。

公開する場合は、あなたの名前の下で行って下さい。

B. このソフトを利用することによって生じた損害等について、作者は

責任を負わないものとします。各自の責任においてご利用下さい。

C. 著作者人格権は しらたま/whiteball に帰属します。著作権は放棄します。

D. 以上の3項は、ソース・実行バイナリの双方に適用されます。

しらたま

http://whiteball.m7.coreserver.jp/

white_ball_11/hotmail.com

#*/

!B=64

!L=20

●HMACSHA1取得(秘密鍵で内容の)

 #秘密鍵の長さの調整

 秘密鍵のバイト数

 もしそれ>Bならば

  秘密鍵からSHA1取得

  2で行揃え

  反復

   INT(「$」対象)を秘密鍵の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

  秘密鍵は秘密鍵のL バイト左部分

  秘密鍵のバイト数

 もしそれ<Bならば

  「{\0}」を(B-それ)だけリフレイン

  秘密鍵は秘密鍵&それ

 

 #鍵から作る2つの文字列の準備

 鍵Iとは文字列。鍵IにBを確保

 鍵Oとは文字列。鍵OにBを確保

 文字とは整数

 B/4

  秘密鍵の(回数-1)*4+1を「DWORD」でバイナリ取得

  文字はそれ

  XOR(文字,$36363636)を鍵Iの(回数-1)*4+1に「DWORD」でバイナリ設定

  XOR(文字,$5C5C5C5C)を鍵Oの(回数-1)*4+1に「DWORD」でバイナリ設定

 

 #ハッシュ関数の適用

 経過とは文字列

 経過にLを確保

 

 (鍵I内容)からSHA1取得

 2で行揃え

 反復

  INT(「$」対象)を経過の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

 

 (鍵O経過)からSHA1取得

 2で行揃え

 反復

  INT(「$」対象)を経過の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

 

 経過を戻す

出力確認

鍵とは文字列

#適当に鍵生成

鍵にBを確保

B

 回数-1を鍵の回数に「byte」でバイナリ設定

鍵で「こんにちは」のHMACSHA1取得

表示

バイナリダンプ

表示

EviEvi2012/03/26 14:52That saves me. Thanks for being so sesnbile!

2010-02-06

[]なでしこ基礎文法最速マスター 18:27

完全に出遅れた!

結構書くの大変ですね、これ。ツッコミ募集。

参考:

Perl基礎文法最速マスター - Perl入門~サンプルコードによるPerl入門~

http://d.hatena.ne.jp/perlcodesample/20091226/1264257759

Route 477 - Ruby基礎文法最速マスター

http://route477.net/d/?date=20100125

続きを読む

AilinAilin2015/08/31 17:19I feel saiitfsed after reading that one.

AkiraAkira2016/07/01 08:44Nice to meet you!

2009-04-26

[][]イベントの整理 02:33

久しぶりにコミットしました。

vnakoのイベントは実際は動かないのが多かったので、なんとかしたいなぁと思ってたのですが、一気にやっちゃいました。

あと、ついでに確か要望にあったMouseEnterとMouseLeaveのイベントも追加

MouseHoverもあれば良かったんですが、これはちょっと他と勝手が違うので保留に。

2008-12-07

[]pixiv viewer(仮)公開 01:28

なでしこで作ったのでこっちにも。

twitter上でぶちぶち言ってた、pixiv viewerっぽいなにかを公開しました。

ソースも同梱していますが、読みにくいので参考になるかははなはだ疑問。

 

ダウンロードページ

KikiKiki2012/03/27 12:11That's a wise answer to a tirkcy question

ddfgdzrcddfgdzrc2012/03/28 08:014UtyA0 , [url=http://gmuogzgzqcce.com/]gmuogzgzqcce[/url], [link=http://uxpwyysgfjgu.com/]uxpwyysgfjgu[/link], http://dfgqdizihrxf.com/

bghzrsrrbghzrsrr2012/03/29 07:20SEqRJI <a href="http://asxotnuspxyt.com/">asxotnuspxyt</a>

opkesyopkesy2012/03/29 11:48EmntQp , [url=http://kvbdzlsbguda.com/]kvbdzlsbguda[/url], [link=http://txnnkytmliej.com/]txnnkytmliej[/link], http://qffgbamdahnq.com/

200612
200701020304050708101112
20080103040506070912
200904
20100204
201104