タグ

ブックマーク / shinh.hatenablog.com (13)

  • 開発イテレーション偏重 - 兼雑記

    開発イテレーションを早くすれば、かなりの問題が勝手に解決される、と信じています。なんか最近、他の要素を軽視しすぎていたり、特にイテレーション速度に影響しなさそうなことすらしている気がしていて、信仰とかのレベルかもしれない、という気がしてきたので、ちょっと書いてみようかなと。主に C++ の話です。 仕事とかしてると良い判断力が求められたりしますが、判断というのは結構難しいですよね。アプローチ A と B で悩んだ時に、手が速ければ両方できたりします。開発イテレーションを無限に速くすると、必要とされる判断力はゼロに漸近していきます。やったね。 2手で変更の正当性を高速に確認できるようにする make (かその他のビルドコマンド)てやったらビルドができて、 make check (かその他のテストスクリプト)てやったら遅くないテストが全部走る、という体勢が好きです。試すためにはあっちのディレク

    開発イテレーション偏重 - 兼雑記
    zetamatta
    zetamatta 2019/09/13
    曰く「auto 、書いてる時はラクなんですが、読んでる時にかかるコストが増えるので、損益分岐点は 20 文字くらい、かなあと思っています」
  • kati について - 兼雑記

    https://github.com/google/kati kati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやるのが少し大変で。 動機 kati は GNU make のクローンです。いずれ完全なコンパチになると嬉しいですが、なかなか難しいだろうと個人的には諦めています。用途に対して実用的ならば良いかなと。 動機としては、 Android platform のビルドシステムが、なかなかシュールな GNU make 黒魔術で構成されていて、 make が実際になんかしはじめるまでが遅かったので、そこを高速化したいというものでした。 ビルドシステムが遅いという時、まずだいたいヌルビルドとフルビルドの2点を考えます。ヌルビルドてのは生

    kati について - 兼雑記
    zetamatta
    zetamatta 2015/10/01
    「GNU make が遅い。特に生成物がゼロの時でも100秒かかってしまう。それゆえ、超高速 GNU make クローン kati を作ったのだッ」「なんだってーー」
  • Python 2/3 で小文字アルファベットと丸括弧だけでプログラムを書く - 兼雑記

    http://d.hatena.ne.jp/nishiohirokazu/20120906/1346938523 を読んで、なるほどー、でもカンマが必要というのは説得力が弱いな、と思ったので頑張ってみました。任意の Python コードを小文字アルファベットと丸括弧だけに変換できます。 http://shinh.skr.jp/obf/ppencode_py.html 根っこの部分 は西尾さんのコードと同じ、つまり print(bytearray((XXX)for(x)in(YYY))) です。これ正直私の Python 力では自力では出てこないと思いますね。。 西尾さんは YYY の部分が大雑把に ASCII コードに対応する物体の tuple になってます。ここに tuple が必要だというのが、西尾さんの「カンマを使わずにイテレート可能なオブジェクトを作ろうとすると…」の元だと思うので

    Python 2/3 で小文字アルファベットと丸括弧だけでプログラムを書く - 兼雑記
    zetamatta
    zetamatta 2015/05/11
    gkbr
  • robust_quine.pl - 2014-02-20 - 兼雑記

    Ruby にできて Perl にできないことは無いという格言があります。 http://d.hatena.ne.jp/ku-ma-me/20140219/p1 $$qq.=q';printf"\$\$qq.=q%c%s%c;;##%c;\n\$\$uu.=q%c%s%c;;##%c;\n\n\$\$ii||=%c\$_;;\$\$\$ii.=\$\$qq;;s#^;.{217}\$#\$\$qq#ee;;#;#^^;\n\$\$nn||=%c\$_;;\$\$\$nn.=\$\$uu;;s#;.{217}\$#\$\$uu#ee;#;",39,$&,39,39,39,$&,39,39,92,92;exit';;##'; $$uu.=q';printf"\$\$qq.=q%c%s%c;;##%c;\n\$\$uu.=q%c%s%c;;##%c;\n\n\$\$ii||=%c\$_;;\$\$

    robust_quine.pl - 2014-02-20 - 兼雑記
    zetamatta
    zetamatta 2014/02/22
    「Ruby にできて Perl にできないことは無いという格言があります」-カッコイイ!
  • 中二病の話の続き - 兼雑記

    そこはかとなくどうでもいいことを色々。まとめるとか大変なので、関係あること無いこと散慢と。 バカさが重要という話 よく話してるバカさが重要ですよねーという話とかと近いなあと思った。年喰うと経験積んだおかげで要領良くなるけど、バカな時にあった一気にガーとやるような勢いが損われてる、みたいな話。近いっていうか中二病が包含してる気がするな。要は若気の至りみたいなのがあるといいみたいな話なので。 例えば http://d.hatena.ne.jp/shinichiro_h/20041204#p1 あたりに書いたような話。 ABAさんのこの反応とかはそいう話に近い気がする。 にはさんの中二病ドリブンってのもこっち系かな。 中二病を維持するのはどうすればいいのかなぁ…同じことずっとやってるとなかなかうぬぼれを持続するのは難しいので、時々やること変えるとか大事な気がするな。 自信と誇り http://b

    中二病の話の続き - 兼雑記
    zetamatta
    zetamatta 2010/11/02
    プログラマがかかる中二病についての考察
  • StringPiece というライブラリの話 - 兼雑記

    例えばこう、ディレクトリの名前とその中のファイル名を / でくぎって結合する関数を書くとします。引数が std::string でも使いたいし const char* でも使いたい、ということで、たいていは void JoinFilePathStr(const string& dir, const string& base, string* out) { out->clear(); out->append(dir); out->push_back('/'); out->append(base); }なんてのを書くんじゃないかと思います。この関数で問題になるのは const char* を渡すと不要な string object が一度できることで、敬虔な C++ 屋さんだと、 void JoinFilePathStr(const string& dir, const char* base,

    StringPiece というライブラリの話 - 兼雑記
    zetamatta
    zetamatta 2010/08/27
    引数が std::string でも使いたいし const char* でも使いたいという時に、あまりオーバーヘッドなく両方使えるようにするクラス StringPiece の紹介
  • プログラミング言語 wake - 2010-07-09 - 兼雑記

    Makefile と正規表現とパターンマッチを混ぜたような、トイ言語を作ってみました。 http://shinh.skr.jp/wake/wake.tgz Hello, world! all: "Hello, world!" wake のプログラムは Makefile のように書きます。つまり、 : で区切って左辺にターゲットを書いて、右辺にアクションを書く感じです。上記のように、 "" で修飾された文字列があると、その文字列を出力します。 Makefile のように、右辺には複数のターゲットを書けますし、文字列以外にも、他のターゲットを action として書くこともできます。 all: "Hello, " world world: "world!" 正規表現 左辺のターゲットは、正規表現で書けます。例えば、 all: hoge hige fuga .*: "yay!\n" とすれば y

    プログラミング言語 wake - 2010-07-09 - 兼雑記
    zetamatta
    zetamatta 2010/07/09
    曰く『Makefile と正規表現とパターンマッチを混ぜたような、トイ言語を作ってみました』
  • buzziness - 兼雑記

    ビジネス用語は難しいです。例えば適当に拾ってきた下記記事。 http://it.impressbm.co.jp/e/2008/11/15/245 ITホールディングスグループのTISとEDI(電子データ交換)ソフトウェアでのトップシェアを誇るDAL(データ・アプリケーション)は11月14日、女性下着などを中心としたアパレルメーカー大手ワコールの「流通BMS」に対応したEDIシステムの通信環境をDALのACMSで構築したと発表した。 一体どれが固有名詞でどれが一般名詞なのやらわかりません。正直わかる単語は女性下着くらいです。ちょっと下の方まで読んでみると、例えば ACMS は Advanced Communication Management System の略らしいです。依然としてよくわかりません。 このままでは昨今の大不況を乗り越えられない気がするので、ビジネス用語を次々と表示してくれる

    buzziness - 兼雑記
    zetamatta
    zetamatta 2009/01/25
    確かに分かりにくいですよね。この手の単語を使いすぎると、単なるええかっこしいの会社と思われるので、気をつけねばならないのですが、アホが多いのでどうしようもない。。。。
  • fizzbuzz.gif - 兼雑記

    もんだいです。このファイルはなんでしょうか。 http://shinh.skr.jp/obf/fizzbuzz.gif

    fizzbuzz.gif - 兼雑記
    zetamatta
    zetamatta 2008/10/12
    曰く 『もんだいです。このファイルはなんでしょうか』― 少なくとも gif と ruby ということだけは分かった
  • 全ての定理 - 2008-07-16 - 兼雑記

    そいやこんな話を会社でしました。 なんか true == false を証明したら全ての定理を証明できると聞きましたが、困ったことに私はそれを証明できたみたいです! 以下に Perl による証明を書きます! > perl -le 'print 0==1' > perl -le 'print 0==0' 1つまり Perl は真は 1 として表示されるみたいです。 > perl -le 'print true==false' 1つまり真! true == false が証明されました! PHP によっても証明できます。 > php5 -r 'print false=="false";' (1) > php5 -r 'print false==0;' (2) 1 > php5 -r 'print 0=="false";' (3) 1 > php5 -r 'print true=="false"

    全ての定理 - 2008-07-16 - 兼雑記
    zetamatta
    zetamatta 2008/07/16
    最初は bareword だから両方 undef なのかなと思ったら…そうか、数値用の比較演算子を使ったトリックだったのか。Perl ならでは
  • 2008-01-03

    ずっとある程度まとめて勉強したことが無かった、 SSL について軽く調べてみた。あんま深く調べてないので真に受けんで下さい。 まずはとりあえずクライアントとサーバーを作る。 OpenSSL というとオレオレ認証局を作るのがめんどいという感じだけど、 Debian だと # apt-get install ssl-cert # make-ssl-cert generate-default-snakeoilこんだけで /etc/ssl/certs/ssl-cert-snakeoil.pem と /etc/ssl/private/ssl-cert-snakeoil.key ができる。ちゃんと作るなら /usr/share/ssl-cert/ssleay.cnf を編集して使えばいいんだけど、これもまぁすごい簡単で、いずれにせよずいぶん楽にできるんだなぁと思った(なんか昔 expect とかで作っ

    2008-01-03
    zetamatta
    zetamatta 2008/01/03
    SSLの利用方法まとめ
  • 更新履歴兼雑記 - Python はいかんのじゃないかという

    少なくとも好きにはなれない。まぁまぁ書きやすいのですが、書きやすいからって好きにはならないなぁと。 以前ケチつけてた len とか del とかは、キモいなーとは思うのですが、まぁ許せないことは無いのですが、やはりどうも。 なんていうか何がしたいかわからない、特に「やり方は一つ」っていう哲学を守る意思があるようにどうも思えないのです。 >>> 2 not in [1,2] False >>> not 2 in [1,2] False ここ追記: これも比較すると結構イヤな気分に。 >>> type("") is not str False >>> not type("") is str False >>> type("") not is str File "<stdin>", line 1 type("") not is str ^ SyntaxError: invalid syntax

    更新履歴兼雑記 - Python はいかんのじゃないかという
    zetamatta
    zetamatta 2007/06/10
    曰く『「やり方は一つ」っていう哲学を守る意思があるようにどうも思えないのです』―― いや、確かに、ほんとにそうですね。
  • rdic server - 兼雑記

    普段 rdic という辞書を使っています。 http://www.yasgursfarm.us/rdic/ これはとても便利なのですが、コマンドラインからも使いたいということで安易にサーバ化。 --- rdic.orig 2005-04-20 16:44:27.000000000 +0900 +++ rdic 2006-11-19 21:37:08.000000000 +0900 @@ -4649,6 +4649,28 @@ } GC.start end + + Thread.start { + require 'socket' + dic = DictionaryMgr.instance() + serv = TCPServer.open('localhost', 52628) + while true + Thread.start(serv.accept) do |s| + while

    rdic server - 兼雑記
    zetamatta
    zetamatta 2006/11/20
    rdic という辞書をサーバ化。Ruby による TCP クライアントのサンプルもあるでよー
  • 1