/ 最近 .rdf 追記 設定 本棚

脳log[2017-02-14~]



2017年02月14日 (火) たしか、ちょっと前に「ないべき」は変だけどどう書き直したらいいのか悩んだのだった>20110319(6年前)。「「ないべき」の話についてちょっとだけ補足(+否定に関する読書案内第2弾) - dlitの殴り書き」■ぬべきのぬは完了の助動詞なので違う。ざるべきはシェイクスピアなのでちょっと仰々しい。結局、べきでないが自然なのだった。■あと注意したいのが、べきは連体形なのであって、終止形はべしだってこと。これに関してはちょっと前に朝日新聞のミニコラムで取り上げられていた。その欄の前回は、疑問文でないところに現れる疑問符についてだった。たしかにイントネーションを理由にして使ってる。■ブコメで挙がってる「ないです」も要注意なんだよね。つまりつい口にしてしまってから、ありませんと言い直したくなることがしょっちゅう。尊敬語や謙譲語にすると語尾ではなく元から形が変わってしまう動詞が、声に出す前に頭の中で先回りしておかないと対応できないのと同じ。


2017年02月12日 (日) すごくありそうな話で、それがまた怖い。「SIerの下請け開発者ってレベル低すぎない? - UXエンジニアになりたい人のブログ」■例によって茶々だけを入れますけれど、このループ for (int i = 0; i < (int) ((bigArray.length + 99) /100); i++) に対してこのコメント「配列を100個ずつに分割するコードなんですよ。えええええ。なんだこれ。99っていったいどこから出てきた?しかもこのコード、コメントなしなんですよ?このコードがコメントなしで伝わるコードなわけないだろと」。書き直させたのがこのループ for (int i = 0; i < bigArray.length; i+=100)(x+N-1)/N (ただし 0<=x, 0<N) っていうのは切り捨て除算で端数を切り上げる定型なのであって、書き直し前と後のループの違いは、ループカウンタが分割後の配列のインデックスになってるか分割前の配列のインデックスになってるかであり、どちらに着目しても結局両方のインデックスを使うのだから大差はない。どちらのループも書ける下請けの人の方が上等ですな。■思い出話。この定型を初めて見たのってビットマップ配列を処理するコードでのこと。ビットマップの横幅は4バイトアラインのためパディングが入ることがあって端数を切り上げたものが実際のバイト幅……みたいなことをよっちゃんいかの人(今はひよこ将棋とかやねうら王の人?)の古いサイト(BM98'S ROOMつう)のどこかで読んだと思う(※嘘を書いてたらそれは俺の記憶違い)。■「たとえば、関数を書くとなると、なにをするにしても、int process() { String str; int i, j; ・・・ return 0; } という書式で書きたがる。まるでそういう決まりがあるかのように。ここで、変数str、i、jは処理の最中にどんどん意味合いが変わる。intでは表現できない情報を返す必要がある場合は戻り値はStringになる。複数の情報を返す場合は、Stringの中にカンマ区切りで情報を記載すし、呼び出し側でカンマ分割して復元する、なんてことを平気でやる。構造体ってなんのためにあるか知ってますか。」 Stringを使ってる時点で言い逃れはできない感じだけど、構造体はレジスタに入らないから関数の戻り値にはできないとか、そういう制限のあるコンパイラがあったと思うんだよね。まさしくそういう決まりがあった。変数の使い回しはスタックの節約とか? 一度たたき込まれたことを律儀に守ってるんじゃあないでしょうか。■「for (int i =0; i < length; i++) { } 繰り返しもこう書かなくてはいけないという明確な意思があるようだ。」 eachだ forEachだ mapだ someだ anyだ everyだ reduceだ selectだと目的ごとにメソッドを選ぶのがわかりやすいか、たったひとつの道具(forループ)を使うのがわかりやすいかは見かたにより判断が分かれる。知識レベルが大きく違っていたり平均レベルが低かったりする多人数が理解できる最大公約数的存在がどちらかといえば……。自分の身の丈をよく知っている。■しかしこの節操のなさは擁護できない。「急にモダンなスタイルのコードが出現した場合、それはどっかからのコピペである。」■「要素に対して加工処理を実行します - function elementProcess(elm)」 あかん、笑う。つくづく思うけど、今どきの言語は識別子に大概の Unicode文字が使えるから、低レベルでドメスティックな現場では日本語を使わないとダメよ。しかしそれであっても、母語であっても、理路整然と矛盾のない文章をすべての人間が書けるというわけではないのだけど(それでも英語で書かせるよりはまし)。■「なぜかパラメータ名に10とかShiftJisとかの値が入ってる。この、パラメータ名とそこに入れる値が区別ついてないっていうパターンは驚くことにかなり頻発する。」 園児や発達障害者ではあったと思うけど、こういう間違い方の事例を集めたものが面白そう。自分を例にして間違えたわけではない理由を考えると、パラメータが取り得る値のひとつを代表値として名前に使用することで、その変数の具体的イメージが掴みやすくはなる。変数名を「文字コード」という総称にするより「シフトJIS(など)」とした方が具体的でわかりやすいという傾向があるのでは? 数学者に関する笑い話のようなエピソードを読んだ。「済みませんが,もう少しわかり易く抽象的に説明して頂けませんか」 自分らは数学者ではないので……。■「「有効状態のものだけを取得」したい場合、isEnabledFalseにはなにを指定すれば良いのだろうか。だれにもわからない。多分本人ですらわからないんじゃないか。繰り返して言うけど、頭がおかしいんだとおもいます。」 あかん、腹がよじれる。車の運転だけじゃない。たぶんコンピュータの方が(平均すると)よっぽどましなプログラミングをする。■ところで仁王っていうゲームの実況動画を見ていたら「装備の重さの、上限に対する比率が100%を超えています」というメッセージが出てきていた。日本語に不自由していますか? 「装備の重さが上限を超えています」ではいかんの? ひょっとして 100%、75%、50%とかの数字に意味があるの? ←「上限」というのと「比率」というのがステータス画面で使用されているキーワードだった。じゃあ……まあ……。


2017年02月11日 (土) 馬鹿な au。以前からのサポートURL(kddi.com)にアクセスするとログインのために au.comに飛ばされ、すぐに kddi.comに戻される。どうしてそんな移動をいちいち気にするのかというと、たかだかログインのためだけに au.comにスクリプトの実行許可を求められ、請求書を確認するためにも(こちらはもう前からなので諦めているが) kddi.comに対してスクリプトの実行を許可しなければいけないからだ。以前は au.comへのアクセスはなかった。利用者の利便ではなく実装者の利便のために認証の委譲をやってるんだろうか。どうして IDとパスワードを送信するだけのために JavaScriptを要求するような無駄をするのだろうか。携帯電話を初めて持った当初から毎月の紙の請求書の送付は無駄だとメール通知を利用していたが、こんなていたらくでは、オンラインでの確認がデフォルトになり紙の請求書が有料化された今こそ毎月無駄紙を送付させなければいけないだろう。無駄が無駄を呼ぶ愚かしさ。■au.comに関しては、CSSを切ればサポートIDを使う方のログインフォームを表示させられることがわかったので、CSSもスクリプトもなしだ。スクリプトで表示したいなら、最初にスクリプトで隠すんだよ。ページ構築がチラ見えするぐらい機能しないよりよっぽどましだし、嫌なら隠さんでいい。サポートIDと auIDという俺には区別のできない2つの IDが併存していることが諸悪の根源。だから片方を隠したくなる。auIDなんていらんよ。■auは www.au.com/supportを新しいサポートページのフロントにしたいみたいだけど、そのページは役に立たないファサードだし、もっといえば新しくログインを受け持つ au.com自体が無用の存在だ。だって結局俺の用があるのも、au.comを経由して行き着く先も、cs.kddi.comであり cs3.kddi.comなんだから、最初から目的地にアクセスさせろと。以前はそうだったろと。■■■「KDDIが2文字ドメイン「au.com」を買収していた | スラド IT


2017年02月09日 (木) 注意書きや案内を「読まない人」は本当に読まない。フォントサイズを変えようが下線を引こうがとにかく読まない。そして「聞いてない!」と言う。 - Togetterまとめ」■わりと一方的な流れになってるけど……。説明書の類は喜々としてゲームや機械を触る前に隅々まで読む方だけど、壁に貼られた注意書きはまるで目に入ってこない。行列も目に入らない>20130228。■すべては最適化の結果なのです。自分に関係がないもの(基本はすべてこれ)に向ける注意はないのです。■それに、あちこちにぺたぺたぺたぺたと張り紙をするだけして、そこに書いてある気づかない方が悪いと言われても困るんです。張り紙(マニュアル)はないよりましだし、うまく使えばバカでも仕事に投入できるようになるツールだけど、同時に3つも4つもの張り紙に注意を向けることは不可能なんで、人間の性質振る舞い限界について学んでほしいところ。■人間(自分)中心主義の意見としては、注意や案内が必要な状況、それ自体が解消されるべきものであって、人間に指図して対応を求めるのは筋違い……とまではいかなくても、安易なその場しのぎではないかと一度は自問してみたか問いたい。auについて過去に愚痴った>20110120。■どこかのサービスエリアでのこと。販売機で食券を先に買う方式だった。その食券をあなたはどうするだろうか。俺はほとんど外食をしないので他と比べることはできないんだけど、自分の注文分を待つあいだ観察していたところ、ほとんどの客がカウンター越しにおばちゃんに食券を提示しようとして、「券を買った時点で機械から注文が通ってるので、そのまま席でお待ちください」というような案内を受けていた。見回すと同じ内容の張り紙が3枚は見つかった。つまりこれはそういう機械を入れたときから繰り返されている光景で、張り紙は全くの無力なんだな、と。自分がたくさんの張り紙に気がついたのだって、席について周りを見渡す余裕ができてからだったし。おばちゃんの対応が慣れていて苦にしていない風だったので、何を責めるべきでもないというのが良い。張り紙があるからって、あなたが案内をしてはいけない理由、忌避する理由にはならないんじゃないの。それが自分の仕事として評価されない時間の浪費だというならつらいけど、その不満をぶつけるべき相手を考えようね。黙ってシステムの一部になったときあなたは不満をぶつける側ではなくぶつけられる側の共犯になるんですよ。


2017年02月08日 (水) 本を買って、届くまでに評判と感想をチェックしておこうと検索したら、Reader Storeで今まさに半額セールやってんの>「【Reader Store】Game Programming Patterns(Robert Nystrom,武舎広幸,阿部和也,上西昌弘) : インプレス - 電子書籍」。なんだよ知らないよ、メールマガジン登録してるのに……。あった、メールの件名>「【最大50%OFF】スキルUP応援!プログラミングフェア/【50%OFF】お金の不安を解消する本フェア」 中まで読まなくても件名くらい読みましょうね。ただまあ、文庫新書漫画以外の本を電書で買うふんぎりはまだついていないのだけど。■他にも目を付けていてまだ買っていない「【Reader Store】APIデザインの極意 Java/NetBeansアーキテクト探究ノート(Jaroslav Tulach,柴田 芳樹) : インプレス - 電子書籍」が半額。読み捨てにするにはもったいない内容だからこそ紙の本で買いたいんだけど、半額ならそうなってもいいかって気にさせる。


2017年02月07日 (火) 立法っていうのは自然言語でプログラミングを行うようなものなんだろうか。国語より算数が好きな人間だったので、そういう、道具も対象もふわふわしてる中で積み上げていく行為は気が遠くなっていけない(ここは賽の河原か)。プロフェッショナルのお仕事ですよ(無関係宣言)。■ブコメは散々だけど面白いと思った>「法学の方が『理系』で、工学の方が『文系』という話 ~本当の理系と本当の文系について~ - 雪見、月見、花見。


2017年02月06日 (月) パソコンに入力するからには再利用を考えたい。なのでバイナリフォーマットを避けたい。そのとき限りの装飾を分けたい。■レベル1。TSVファイルが便利。手入力するにもタブキーとエンターキーで区切るだけなので無駄がない。再利用はエクセルかちょっと加工して JSONか、なくなりそうだけど IE+TDCか。でも忘れられてはいない>「Anniversary Update における TDC コントロールの制限 (Windows 10) – Japan IE Support Team Blog」■レベル2。改行がデータに入ると TSVでは扱いにくい。エスケープシークエンスを導入したりしたくない。タグを手入力するのは手間だけど XMLにしてみようか。再利用は XSLT+ブラウザか MSXML+JScriptか。■レベルDB。SQLite+SQL。でもデータベースを利用したい“ちょっとした”理由ってなんだろう。プログラムがデータを引き出す方法として SQLを利用したいことはあったけど。■レベル3。TeXとかグラフ化(2次元・3次元)とか、できないんだよなー。R言語なんだろうか。グラフといえば graphvizはインストールした。でも特にインストールする必要がないっていうのも重要な要素なんよね。


2017年02月03日 (金) [C++] 全然知らないことばっかりだけど、最初に目にとまったのがこれ。「C++1z タプルを展開して関数呼び出しするapply関数」(C++1zの言語拡張まとめ - Faith and Brave - C++で遊ぼう)■つまり、引数リストがオブジェクトになり、プログラムから操作可能な対象になるということ。ごく最近のことだけどこれ(BugReport/211 正規表現キーワードで dll がエラーを返すと落ちる)に関連してソースを見たときに、BMatchという APIと BMatchExという拡張された APIが目に入って、引数がひとつだけ追加されているという違いがあるんだけど、それがために2つの APIを呼び分けるためにはソースコード上で if や条件演算子を使って、ベタに呼び出しコードを書いて並べなければいけなかったりする。そういう分岐を、局所化してまとめたり外部に追い出したりできるのが嬉しい。■もうひとつしょうもないことに目がとまった。「非推奨だったbool型に対するインクリメント演算子を削除」未初期化の bool変数をインクリメントすると必ず trueになるっていうの、2か月前(20161214)にパッチを読むにあたって(パッチの内容とは関係ないけど)初めて知ったんだけど、使えなくなるのか。使わないけど。■タプルと applyに戻る。「C++14で追加されたコンパイル時整数シーケンスを使用した最初の標準ライブラリ実装になります」 コンパイル時? 整数? やっぱり bindしかないの?■整数型と対比されるものがなんなのかわかっていない。だって例では std::stringを含むタプルを渡してるもの。


2017年01月31日 (火) [正規表現][SakuraEditor]「BoSubst() で置換時、patternp に NULL を指定し substp に NULL 以外を指定することで、前回の patternp のコンパイル結果を流用することができます。しかし逆に patternp に NULL 以外を指定し substp に NULL を指定することはできません。」■すでにこれ(20100907p01.01)が存在していたとはね。そして過去の俺はおかしなことを書いてるぞ。Expandは「Matchや Searchの結果を用いて $変数(またはその類)を展開したフォーマット文字列を返す」が正しいし、Replaceは Search & Expandでまかなうのが正しい。■正規表現リテラルの要素を複数の引数に分離するのがもう済んでるのは知ってた。■あとは、キャプチャ結果のスタックを得る方法があるもんだと思って bregonig.dllのヘルプを見てたんだけど、見つけられなかった。検索パターンでネストレベル付き後方参照というのが使えるから原理的に情報は保存されてるはずなんだけど、旧来の BREGEXP構造体にはそれを受け渡すためのフィールドがない、と。■キャプチャのスタックが必要だった理由>「Request/533 正規表現検索でサブマッチにも個別の検索色を」。本当にそれで満足?と俺は疑問に思ってしまうのだけど、自分で実装してしまうほど熱心な提案者。実装を .cppに書いてヘッダで宣言に inlineって書いても、ヘッダをインクルードする利用者側コードのコンパイル時に関数の中身が見えていなければインライン展開のしようがないと思うのだけど、いまどきはリンク時コード生成とかで似たような結果が得られるんだろうかと思ったり(※でもそれはたぶん inlineって書いたからではない)。スクリーンショットを見て疑問だったのが、引数リストの型名部分がハイライトされているように見えて、最後の引数しかハイライトされていないこと。パターンでキャプチャの繰り返しを使ったのだけど最後のキャプチャ位置しか取り出せなかったんだな、と理解した。bregexp.dllや bregexp.dll for SAKURA(※そうなのです。拡張された別物なのです)ではなく bregonig.dllを利用してるユーザー(※たぶん多数派)にはボーナスとして bregonig.dllの独自 APIを利用したサブパターンハイライトがあってもいいんじゃないかと考えたんだけど、APIとのやりとりが同じ BREGEXP構造体だった。■Mery同梱の正規表現ライブラリ名は onig.dllなんだよね。(じか)に鬼雲を使えってことだよ……。素材はもうあるんだよ……。■「直」って読み方多すぎない?(多すぎじゃない? 多すぎなくない?) じか、す(ぐ)、チョク、なお、ジキ、ただ、ひた、ね、あたい。「とのい」とか「のうし」とかの熟語は源氏物語の世界だなあ。由緒があるってことなんか。


2017年01月29日 (日) natsuko ozakiさんのツイート: "妹が姪2歳0ヶ月のために100均で買ったという英語の本がじわじわきている。 https://t.co/FwF44Wze3Z"」■onionも tunnelも辞書に発音注意って書いてあるの初めて知った。トンネルはタノーとかタネオとしか聞こえない。強勢のある O がだいたい ア なのは想像できるけど、アニィァン みたいなのはわかりませんて。■こういうときスペルと発音がきっちり対応してる(アニオン、アニアン)のがイギリスさんで、大胆に手を抜いてショートカットする(アニャン)のがアメリカさんってイメージ>「インスリン(インシュリン)がインサランだったり(英式はまた違うみたい)(20131007p01)」■以前 TVで見た光景。たくさんの子供がいて猿(monkey)のカードが提示されました。英語でなんて言うでしょうか。「マンキー」「モンキー」「モンキー」「モンキー」「モンキー」「モンキー」「モンキー」「モンキー」「モンキー」。ひときわ元気が良かった一人を除いてカタカナ英語は齢数年の子供にも浸透していたのだった。■スマスマで SMAPとゲスト(外人さん)が曲名「Let it be」をコールした瞬間がおもしろかった。日本人は、つまり俺もその例に漏れないわけだけど、レット、イット、ビーって3つに分けちゃうけど、そのゲストはレットのあいだにもう be まで言い終わってたもんね。「(あっ……)」っていうゲストの心の声(つまりは表情のことだな)が聞こえた。


2017年01月28日 (土) [SakuraEditor]「Sakura Editor / PatchUnicode / #1096 static変数削除」■SetWindowLongPtr/GetWindowLongPtr をあっちでもこっちでも使いたいってときは SetProp/GetProp なんて方法もあるらしいよ。ちらっと名前を見かけたことがあるだけで、使ったことはないし、典型的な使い所も知らないけども。WindowLong、WindowLongPtr ってフリーアクセスだからなーんか不安になるんだよね。考えすぎだとしても reinterpret_cast が破滅への入り口に見えてしかたがない。アクセスするデータに名前がついてるとちょっとだけ安心できる。■「フリーアクセス」と思ったんだけど、呼び出し元スレッドとウィンドウとが同じプロセスに属していないと失敗するらしい。じゃあ dllを作ったりしないといけないのかな。ハードルが上がって不安の種は身内のコードだけに。


2017年01月27日 (金) 「歩行者 地元車輌 最優先」という看板。車にステッカーでも貼ってわかるようにしてくれてるんだろうか。■同じ通りにもう少し前からある看板には「新興住宅地のため……(忘れたけど安全運転とかスピード控えめとかそういう内容)」。■溢れんばかりの自己愛地元愛が脳のピントをぼけさせるのだろうか。■■■看板に○○工業とも書かれてたから、工事関係車輌に向けたメッセージだったのかもしれない。じゃあ俺が地元車輌の振りをしてもいいってことだ。よかった。■この看板の主役は黄色い園帽をかぶったグレーのスマートな猫なんだけど、幼さの記号とお上品なセクシーさとのミスマッチが背徳的でたいへん良い。毎回まじまじと見つめてしまう。


2017年01月26日 (木) J-LISと、JPKI利用団体の双方が、開発、運用、保守コストの最適化を目指した結果、官民各所からソフトをバラバラにインストールする必要があるなど、ユーザー目線から見ると極めてハードルが高いシステムになってしまったとみることができる。」■実際のところ国の上の方はアホじゃないと思うんだよね(小並感)。正しいことを正しい方法でやろうとしていて、でも結果がアホみたいなことになることがあって、理由のひとつには手足となる人間のふるまいを掴みきれずに現実離れした運用手順を定めてしまうなんてことがありそうだけど。頭がついてるなら、それで給料をもらってるなら、末端が無能だからなんて言い訳は通用しませんよ。