パスワードを忘れた? アカウント作成
690246 journal

SOggyの日記: デバッグ中 / Mozillaの\d{8}\.(s|w)ファイルとuser.js 8

日記 by SOggy

39度 晴れ [2]

ちょいと放ってあったcgiを、二週間ぶりにデバッグ&&リファイン中。しばらく放っておくと見えないところが見えてくるもんだ。きっと「他人の目」で見れるからですね。ま、仕事じゃそんなわけにはいかないんだけれど。

perlの好きなわけ

  • 柔軟だから

perlが嫌いなわけ

  • 柔軟すぎだから :p

タレコミのNetscape7.02リリースのスレッド中にあったリンク先のプロファイルディレクトリーの中のファイル達を読んでて思い付いたんだけれど、パスワードとフォーム入力を保存している\d{8}\.(s|w)ファイルはuser.jsでoverrideできそう。about:configで調べると、signon.SingonFileNameとwallet.SchemaValueFileNameがビンゴ。

セキュリティー対策でランダムなファイルネームになっているのだろうけれど、1.3bの追試でドカドカとプロファイルを作ってテストするから、一時的にでも同一にしておければ、使い回しが楽そう。あとで試してみよう。

Vimは6.1.350までいった。

少し前の日記でThe Long Kiss GoodnightのDVDの事を書いて、直後にAmazonのDVDリリースお知らせメールを頼んでおいたら、今日お知らせありました。4,080円!!。願いは叶わなかったので、リージョン2版は購入断念。$14.99のリージョン1版を買おう。3,000円超えるDVDは、内容が余程じゃないと買わないんで、そこんとこよろしくです。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • >perlの好きなわけ
    >柔軟だから
    >
    >perlが嫌いなわけ
    >柔軟すぎだから :p

    同感です。うーん。
    でもワタシは ダミアン・コンウェイの"オブジェクト指向Perlマスターコース" [amazon.co.jp]を読んでから
    180度印象が変わりました。
    サンプルにあるのは実に硬いコード。
    柔軟すぎだから....硬く書く事も可能という。Perlらしい :)
    • by SOggy (10951) on 2003年02月23日 23時07分 (#266046) 日記

      perlを始めるときに最初に買ったのがラマ本、その後ラクダ本に移って、今でもこの二冊だけが紙媒体のリファレンスです。頻度はぐっと落ちたとは言え、今でも月に一度はラマ本を読み返さざるを得ないヘタレなレベルである、ということで読んでもらうとして…。

      (速いマシンなら)必要十分なスピードで実行してくれるし、誰かからの要望や自分の欲求の八割はperlでカバーできたりと、私にとってperlは、超一級ではないけれど、十分な品質の工具がつまった工具箱って感じで愛用しています。

      ただ今まで、「この関数はリストコンテキストだと何返してくれるんだっけ? -> おっと予想外にも○○だった」とか、「なんか変な値になってるぞ -> おや、スカラーコンテキストで評価されてるぞ」とか、柔軟な記法を許しているが故に、「予想とは違うインタープリットをされた」などの苦い経験をしています。

      # 苦い経験を「している」であって「させられている」ではないです。
      # そのへん、ちゃんと自覚があります、ハイ。 :)

      痛い思いをする原因の多くが自分の知識不足であるのは間違いないんです。ただそういうのを覚えるよりは、括弧をどんどん使って演算子の順位を明確にしたり、scalar()使って明示的に型変換(ちょっと違うな)するなど、暗黙の(=perlの常識的な)インタープリットをさせない記法で痛い思いを回避するようになりました。制限のきつい不自由なプログラミングを積極的に心掛けています。

      参考にあげて下さった本のコードの「硬さ」と、私の「積極的不自由記法」とは方向性が違うかもしれませんけれど、参考になりそうなところがありそうなので、読んでみたいと思います。どうもありがとうございした。

      親コメント
      • by SOggy (10951) on 2003年02月24日 1時33分 (#266167) 日記

        scalar()使って明示的に型変換(ちょっと違うな)
        コンテキストを整える、に言い直します。

        何が嫌いで何が好きなのか、perlが柔軟ってどういうことなんだろうか、と考えを巡らせたはずなのに、いま読み返すと記法の柔軟性についてしか、書いていませんね。

        そもそも自分の問いがしっかりしていないので、答えは出ませんけれど、いいきっかけを作って下さったことに感謝です。

        # 隣の芝生から眺めてみるってのも、有効だよ、きっと。pythonあたり行ってみよーか > 自分

        親コメント
        • 慣れるまではコンテキストには混乱しますよね。
          私も困ってしまいました。

          sub which_context { print wantarray ? "array" : "scalar"}
          grep { which_context () } 1;

          なんて書いてコマめに確認してました (:
          いろいろ本を読んでみましたが、個人的なお勧めは前出のとEffective Perl [amazon.co.jp]です。
          特にEffective Perlを読んでいなかったら、Perlを嫌いになってたかもしれません。
          親コメント
          • by SOggy (10951) on 2003年02月24日 23時25分 (#266961) 日記

            sub which_context{
            print( wantarray() ? 'array' : 'scalar' );
            }

            grep { &which_context } 1;

            アホだから、関数は関数に、サブルーチンはサブルーチンに見えないと思考が止まるんです。

            親コメント
            • 確かにこの場所ではサブルーチンを&で呼んだ方が見やすいですね。

              ちょっと話がそれるんですが、サブルーチンを&記法+括弧なしで呼んだ
              場合、特殊変数@_の値が引き継がれるのを思い出しました。
              Perlでは
              some_sub() # 空の引数が(@_として)渡される
              &some_sub # 現行スコープの@_がそのまま引き継がれる

              の意味が違う、という。昔見事にハマッてしまいました。
              関数が引数を取る時は要注意です。

              あとwantarrayは演算子ですよ~。
              でもwantarray()でもちゃんとインタープリットしてくれるんですね :p
              # やはりPerlは柔軟でした
              親コメント
              • 違うかな。確かに関数として引数を取らないというのは、奇妙にも感じますが。目grepすると、waitも引数を取りませんね。枝葉ですけれど、楽しいので突っ込み返します。

                • perlfunc(1)で説明されていること(当然ラクダ本も三章の関数のところ)
                • perlop(1)には記述がなく、演算子の優先順位表にももちろんなし
                • 演算子であった場合、作用する相手がいないこと

                などと書いて、さらなる補強材料を探していたら、ラクダ本「2.5.1 項とリスト演算子(左方向)にはこんなことが書いてありますね。perlop(1)の「Terms and List Operators (Leftward)」の相当部分です。

                項(term)は、Perlでは最も高い優先順位を持っている。項には、変数、クォート、クォート風の演算子、カッコで囲んだ式、引数をカッコで囲んだ関数が含まれる。実際には、この意味では関数と言うものは存在しない。存在するのは、引数の回りにカッコを置くことによって、関数のような振る舞いをするリスト演算子と単項演算子である。

                壊れそうです。perlがまた分からなくなりました。「wantarryは関数である」は撤回します。(自分であとで読み返せるように、ここから上は書き換えません)

                泣きたくなってきました。母さん、ラクダは凶暴です。

                もしお時間があったら、おつきあい下さいますか。放置や、Larryに聞け!!も可 :) 。

                ラクダ本「2.5 演算子」冒頭には、演算子とは項を組み合わせたり、修飾するものである(要約)とあります。

                (単|二|三)項演算子という分類方法がありますが、修飾する項の一切の引数を取らないwantarray演算子は、どんな項を修飾しているんでしょうね。

                例えば、chopだと次のようなシンタックスです。三番目の記法は、一番目の記法で$_を省略した記法なわけで、どちらも単項演算子です。さて、wantarrayは?

                • chop VARIABLE
                • chop LIST
                • chop

                ### 以下完全に独り言(読み返し用) ###
                # whatarray( @_ )はsyntax error
                # リストをchopできるってさ、フム
                # 「3章関数」P161 「関数のことを前置の演算子と考えることもできる。われわれは2回に1回の割合で、関数のことを演算子と呼んでいる。」フムフム
                # 落ち着け、「知らなくたってへっちゃらサ」だ

                親コメント
          • by SOggy (10951) on 2003年02月24日 23時51分 (#266986) 日記

            プレビューのつもりで送ってしまったです。

            sub which_context{
            print( wantarray() ? 'array' : 'scalar' );
            }
            grep { &which_context( $_ ) } 1;

            アホだから、関数は関数に、サブルーチンはサブルーチンに見えないと思考が止まります。$_はgrepかmapの中くらいでしか使わないし省略しません。m///のmは、$_相手でも省略しません。変数を評価したい時にしか、ダブルクウォートしません(たぶんbashで痛い目にあってるから)。

            # 寄った本屋には無かったです。残念。

            親コメント
typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...