タグ

ブックマーク / nekogata.hatenablog.com (5)

  • プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    <追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそこを差し引いて読んでいただければ、それなりに有用ではある記事だと思うので、このまま残しておきます</追記> プログラミングに限らない話かもしれませんが、ふだんの生活で触れないような概念というのは、一度わかってしまえば便利なんだけど、どうしてもとらえどころがない、というようなことが多いと思います。プログラミングにもそういう概念はたくさんあって、わたしのような凡人は新しい概念にぶち当たるたびに苦労しています。今日はそんな中で「抽象化」という言葉について、「昔の自分にこうやって説明してあげたかったな〜」という説明をします。 プログラミングを学んでいく中で、「とり

    プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    まずはこちらをごらんください。 shinh.hatenablog.com すごすぎる……。恐ろしいですね。 なぜこんなことになるのか、解説していきましょう。まずはPerlの気持ちになりましょう。 Perlの気持ち編 ポイントその1 barewordを数値コンテキストで評価するとどうなるのかということ 件のプログラムは、base64 っぽい文字列が書かれていますが、これを前からPerlコードとして読んでいくと、大きく2つのパートに分かれることに気づきます。というのも、前から一文字ずつ読んでいくと、「+」という演算子にぶつかるわけですね。 それに気づくと、このコードは前半部分 dXNlIE1JTUU6OkJhc2U2NDtwcmludCBlbmNvZGVfYmFzZTY0IGpvaW4nJyw8PjsKX19FTkRfXwo と、 s//v62/e+s//v60/e+s//v44/e+s//v

    Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    syan0
    syan0 2015/05/08
  • 読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限だけついてるファイルは実行可能です。でも、「読み込めないのに実行できる」というのは直感に反するような気もしますね。だって、実行するためにはプログラムをメモリに読み込む必要がありますから!ではなぜ実行権限だけのファイルが実行できるのか、その仕組みを解説します。 実行とはなにか、どういう仕組みなのか Linux において実行とは「forkしてexecする」です(そのへんの詳しい話は プロセスさん を読もう!)。 fork も exec もシステムコール(正確には execve がシステムコールで exec はそのフロントエンドだけ

    読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • アニメーションgifを殺して静止画にしたらかっこよかったはなし - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    アニメーション gif って一枚一枚の画像を高速で切り替えてアニメにしてるわけだけど、じゃあ、何枚も画像を切り替えるんじゃなくて、一枚の画像の中で上から順に表示させたらかっこいいんじゃないかなーって思って(伝われ)やってみたら案の定かっこよかったので置いておきます(だれかがもうすでにやってそうな気もする)。 これらが こうなる。 画面全体がすごいうごくみたいなやつはグリッチっぽくなって、画面の一部が動いてるみたいなやつだとミュワンって感じになる。 活きのいいアニメーション gif をフレーム一枚一枚にバラバラ殺人して、さらに個々のフレームもバラバラ殺人して、部品を上から順に並べるみたいな感じなので、anigif_killer.rb という名前にしました。スクリプトを貼っておくので魔改造なりなんなりしてください。

  • 状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    たとえば、今、「ユーザーが方向を入力したらプレイヤーが動くゲーム作りたい」みたいなはなしがあるとする。その場合、モデルクラスはまあシンプルな実装として下のようなものが考えられると思う。 「できたよー」って見せにいったら、今度は「あのさー、『高速移動モード』っていうモード欲しいんだよね。そのモードだと二倍速で動くの」って言われたとする。シンプルにやるとこうなりますね。 「できたよー」って見せにいったら、今度は「なあ、すげえ面白いこと考えたんだけど、『蟹モード』って面白くない?横は4倍速で動くんだけど縦は半分の速度で動くの」とか言われたわけです。あなたは「お、おう」と言って、以下のようにコードを修正しました。 これ、ヤバい感じしますね。破滅の匂いがする。「今度は『よっぱらいモード』欲しいな〜。入力に関係なくランダムに動くの」みたいなこと言われたら確実に複雑さが爆発してメンテ不能になりになり死

    状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • 1