タグ

ブックマーク / cpplover.blogspot.com (51)

  • Shebangという謎な事実上業界標準について

    Shebangとは、UNIXのシェルスクリプトの業界標準で、シェルスクリプトの一行目のコメントの、#!を意味する。sheが短母音か長母音か分からなかったので、英語ネイティブにたずねたところ、人によって意見が違う。短母音の方が多数派のようなので、一応シバンが近いものになるだろう。日語版のWikipediaでも、シバンとしている。この機能には他にも多数の名前があるが、もっとも有名なのが、Shebangだそうだ。 その業界標準的な文法は、以下の通り(ただし、後述するように、この文字列の扱いについては違いがある) #! 文字列 [改行] 普通、実行権限のついたファイルは、標準のシェルで実行されるが、このShebangがある場合は、#!から改行までの間の文字列を、後述するバラバラな方法で解釈して、execで実行し、その際の引数には元のシェルスクリプトファイルへのパスが指定される。 問題は、このsh

    richard_raw
    richard_raw 2016/05/24
    そういえばShebangの詳しい仕様とか全然知らなかったのでブックマーク。
  • Brian Kernighanがプログラミング言語Goの組版に使ったのはなんとtroff

    Ramakrishnan Muthukrishnan - Brian Kernighan on the typesetting of "The Go Programming Language" book L&RのKでありAWKのKでもあるBrian KernighanとAlan Donovanの執筆したThe Go Programming Language(邦訳は丸善からプログラミング言語Goとして6月15日に出版される予定)の組版には、Troff(具体的にはgroff)が使われたそうだ。同の組版に感心した人間が、Brian Kernighanに組版について以下のようなメールを送った。 親愛なるKernighan教授へ プログラミング言語Goのとても組版が美しい。個人的な感想では、LaTexでクマれたものより美しいように思われる。 同の執筆手順との組版について詳しい説明を願いたい

  • HTTPステータスコード451(政治的な検閲)が正式に承認される

    mnot’s blog: Why 451? draft-ietf-httpbis-legally-restricted-status-04 HTTPステータスコード451がIETFで正式に承認された。近いうちにRFCとしても発行される。 元ネタは、Ray BradburyのFahrenheit 451(華氏451)というタイトルの小説で、これはディストピアな検閲社会を描いている。 451の意味は、403(禁止/権限がない)と似ているが、正確な意味は、ドラフトを引用すると、以下の通り。 このドキュメントはサーバーオペレーターが、あるリソース、あるいはあるリソースを含むリソース群に対し、閲覧を検閲するよう法的な命令を受け取った時に使うHypertext Transfer Protocol(HTTP)ステータスコードを規定するものである。 このステータスコードは、法律や一般大衆の雰囲気がサーバー

    richard_raw
    richard_raw 2015/12/21
    抑圧的な国家は華氏なんて使ってないからヘーキヘーキ……おや?こんな時間に誰だ(ry
  • Minecraftクライアントからdockerの管理ができるminecraftサーバー: Dockercraft

    docker/dockercraft 公式の未改変Minecraftクライアントから接続してDockerの管理ができるMinecraft互換サーバー、Dockercraftが公開されている。 Dockercraft Dockercraftの実行方法 1. Minecraftのインストール: Minecraft Minecraftクライアントは改変していないので、公式リリースをそのまま使える。 2. Dockercraftイメージをpullするかビルドする。 docker pull dockercraft もしくは、 git clone git@github.com:docker/dockercraft.git docker build -t dockercraft dockercraft 3. Dockercraftコンテナーを実行する docker run -t -i -d -p 255

    Minecraftクライアントからdockerの管理ができるminecraftサーバー: Dockercraft
    richard_raw
    richard_raw 2015/11/19
    タイトルを「Microsoftクライアントからdockerの管理ができる…」と空目してしまいました。なるほど、「Minecraftで論理回路」の応用なのか。
  • GoogleのエンジニアがAmazonで片っ端からType-C USBケーブルをレビューしている

    Amazon.com: Profile for Benson Leung GoogleChromebook PixelのエンジニアであるBenson Leungが、アマゾンで売られているType-C対応を謳っているUSBケーブルとアダプターを片っ端からレビューしている。 なぜそんなことをしているのか。Googleの製品であるChromebook PixelはUSB Type-Cによる充電ができるが、巷に出回っている自称USB Type-C対応の製品の多くが、USB規格に違反していたり、十分な性能がない欠陥品だったりするからだ。 そもそも、USB Type-C規格は、3A, 5V, 15Wの電力供給ができる。3Aの電力供給は、途中の経路がすべてUSB Type-C対応の製品である場合に限る。例えば、途中にUSB 2.0などのレガシーケーブルを挟む場合は、USB Type-C規格準拠のケーブ

    richard_raw
    richard_raw 2015/11/06
    最強のレビュアーだ!/3Aも出ないケーブルがいっぱいあるんですな。
  • Linuxカーネルを2038年問題に対応させるには

    System call conversion for year 2038 [LWN.net] lwn.netLinuxカーネルを2038年問題に対応させるにはという記事が公開されている。 32bitLinuxカーネルのtime_tはsigned 32 bitなので、現行の32bitLinuxカーネルをそのまま使い続けるシステムは、2038年問題の影響を受ける。 問題の日付が近づくにつれ、32bitシステムは様々な楽しげな理由により障害を起こすことが予測されるので、今日のLWN読者は、退職から呼び戻されて、紀南を救うために英雄的な活躍をするだろう。今対策をしなければの話だが。 さて、32bit Linuxカーネルでも、time_tなどの時間の表現に64bitの値を使えば2038年問題は解決できるか。実は、問題はそれほど単純ではない。 カーネル内部の時間表現を64bitに移行するだけでは

    richard_raw
    richard_raw 2015/05/20
    あと20年ちょっとか。まだ32bitが残って……残ってそうだなあ。
  • 500マイル以上離れた場所にメールが送れないのだが

    http://web.mit.edu/jemorris/humor/500-miles From: Trey Harris <trey@sage.org> 今から私が書く話は、起こりようのない問題についてだ。この話を広く一般に公開してしまうのは惜しい。というのも、いい酒の話のネタになるからだ。この物語は、退屈な詳細や問題を隠すために、多少事実を変えていて、物語を面白く脚色している。 数年前、私はキャンパスのメールシステムを保守する仕事をしていて、統計学部の学部長から電話を受けた。 「大学の外にメールを送るのに不具合が発生しているのだが」 「どんな問題でしょう?」と私はたずねた。 「500マイル以上メールを送れないのだよ」と学部長は説明した。 私はラテを吹き出した。「何だって?」 「ここから500マイル以上離れた場所にメールを送信できないのだよ」と学部長は繰り返した。「実際は、もう少しあるの

    richard_raw
    richard_raw 2015/04/10
    3ミリ秒の壁!やっぱ光速って遅いですよね(棒)
  • コンパイラーを負かす

    roguelazer's website: beating the compiler なかなか面白かったので翻訳して紹介する。 たとえば、97%の場合において、僅かな効率など忘れるべきである。。早すぎる最適化は諸悪の根源である。とはいえ、残りの重要な3%の機会を逃すべからず。 -- Donald Knuth 計測せよ。計測するまで速度の最適化を施してはならぬ。たとえ計測したにせよ、一部のコードが残りを圧倒するまではまだ最適化してはならぬ。 Rob Pike 最新のWebサービスを主体とした技術の業界に長年浸かった我々は、パフォーマンスの問題を忘れがちである。SQLAlchemy ORMの中で行うリクエスト一つが8,9秒かかる中で、関数呼び出しひとつを3ミリ秒最適化したところで何になるというのか。とはいえ、時にはそのような最適化スキルを養っておくのもいいことだ。今回は、ある簡単な課題を最適化

    richard_raw
    richard_raw 2015/03/31
    AVX2ベクトル化!職場の画像処理ツールでやってみたくはあるが、ほぼ素人なのでやめておきます……。
  • GNU/Linuxでコマンドラインから喋らせる方法

    の虫: Pingプログラムの話で、pingが通るたびに合成音声ソフトウェアにpingと喋らせた運用が紹介されている。実際にやってみたくなったので、方法を調べることにした。 まず、音声合成を行うコマンドラインのGNU/Linux用のソフトウェアを探さねばならない。調べると、espeakというソフトウェアが見つかった。 apt-get install espeak espeak "Hello. I am espeak." espeakは、何も引数を指定しない場合、stdinから読み取って音声合成していくれる。完璧だ。 さっそく、ためしてみた。 ping localhost | sed -e "s/.*/ping/g" | espeak なぜか動かない。これはsedの出力がバッファされているためだった。 プログラムのバッファリングの外部から操作するには、stdbufが使える。これはGNUのco

    richard_raw
    richard_raw 2014/10/14
    音鳴らないなーと思ったらミュートになってました。/Macだとsayコマンドが便利です。
  • cpで大量のファイルをコピーした(4億3200万件、39TB)

    GNUのcpを使って大量のファイルをコピーしたところ、cpの設計上の問題で、極めてコピーが遅かったというお話。 My experience with using cp to copy a lot of files (432 millions, 39 TB) よう。俺は最近、大量のファイルをコピーする必要があったんだが、UNIXは20年もやってきた俺の経験からも、cpの挙動には驚かされたし、俺の意見はコミュニティに共有されるべきだと思う。 環境:古いDellのサーバー(2コア、初期メモリ2GB、追加して10GB、Ubuntu Trusty)と、新しいDellのストレージ格納機(MD 1200)にある、12個の4TBディスクでRAID 6が設定してあって、全体で40TBの要領を持ち、二つのドライブが同時に失敗しても問題ない環境。サーバーは遠隔地バックアップに使われていて、ディスクへの書き込みし

    richard_raw
    richard_raw 2014/09/14
    rsyncやtarの場合はどうなるのか気になります。あとどうしてxargsかまさなかったのか。
  • 何でWindowsは俺のワイヤレスキーボードをトースターだと認識するんだ?

    device manager - Why does Windows think that my wireless keyboard is a toaster? - Super User 俺は彼女の父親から古いPCを相続したんだが、プリンターを設定していると、ちょっとおどろきのものが現れた。 画像 さて、二つの疑問がある。 なんでWindowsは俺のワイヤレスキーボードをトースターだと認識するんだ? なんでWindowsはデバイスメニューにトースターのアイコンを持っているんだ? なぜか、質問者のワイヤレスキーボードに、トースターのアイコンが表示されている。Windowsはなぜそんなアイコンを用意しているのだろうか。 答えは。 理由1 Microsoftはトースター用ドライバーというサンプルを作っている。このサンプルでは、<DeviceIconFile>Toaster.ico</DeviceI

    richard_raw
    richard_raw 2014/08/06
    何かの間違いかと思ったらしっかりトースターだった!サンプルのコピペかあ。
  • rm -rfしちゃったけどどうする

    rm -rf remains rm -rfの後に残りしもの 遊びのために、筆者は新しいLinuxサーバーを立ち上げて、rootでrm -rf /を実行して、何が残るかをみてみた。どうやら、今のrmというのは筆者のようなアホを相手にしなければならない未来に生きているようなので、実際に実行するには、--no-preserve-rootをつける必要があった。 # rm -rf --no-preserve-root / かかるおろかなる行為の後では、 /bin/ls /bin/cat /bin/chmod /usr/bin/file のような、偉大なるツールのたぐいはみな消え失せてしまった。まだ、ssh接続とbashセッションは生きているはずだ。つまり、bashの組み込みコマンドであるechoとかは残っているということだ。 Bashマクガイバーたれ root@rmrf:/# ls -bash: /

    rm -rfしちゃったけどどうする
    richard_raw
    richard_raw 2014/06/16
    BusyBoxを動かすのが大変ですな……。
  • 表計算をマジなことに使わないほうがいいよ(マジで)

    You shouldn’t use a spreadsheet for important work (I mean it) 経済学者はうらやましいね。コンピューター科学者とは違って、革新的な研究で、ベストセラーをだせるときている。たとえば、 Capital in the Twenty-First Centuryだ。このはマルクス経済を再認識させるだ。を読んでいない人のために要約すると、資の増加は賃金の増加よりも高いので、資を持つ者はますます富み、ますます強大になる。大多数は貧する。少数のエリート達が、富のすべてをかき集める。一般人には富は残らない。この見方は、彼の専売特許ではない。富の集中という概念には、富める者はますます富み、貧するものはますます貧すというキャッチフレーズまである。 同じ主張をするものはいくらでもいる。しかし、証明するのは難しいし、一部の経済学者は、反証すら

    richard_raw
    richard_raw 2014/05/30
    そういえば画像処理システムのパラメータをExcelでゲフンゲフン
  • ドワンゴの女子マネという過酷な訓練

    ドワンゴ現在、ドワンゴでは「女子マネ弁当」という企画が復活している。 過去の女子マネ弁当の様子については、すでに社外にも相当の情報が出回っているので、例えば以下のような情報を参考にしてもらいたい。 【第1回】ドワンゴ大改革の鍵は、インフラと女子マネージャー。|川上量生の胸のうち|川上量生|cakes(ケイクス) ドワンゴ「助けて! エンジニアが朝出社しないの!」→ 女子マネージャーが弁当を手渡してくれる「女子マネ弁当」システム導入で生活習慣改善へ - ねとらぼ 今回は、その女子マネ弁当の実情に迫る、社内からのレポートをお届けする。 女子マネ弁当の概要とは以下の通りである。 3月17日から、4月25日までの一ヶ月間、午前10時30分までに出社すると、以下の特典がある 午前10時30分から、エンジ色のジャージを来た女子マネ人員(なぜか若い女性のみで構成されている男女比率の偏った集団)が、エンジ

    richard_raw
    richard_raw 2014/03/25
    「女子マネとどんな訓練してるんだ」と反応してしまい、異性に飢えてるのかと慨嘆するなど。/ドワンゴにもエクセル方眼紙とかIEでしか動作しないシステムとかあるんですな……。
  • ドワンゴに入社した

    そう。タイトル通りだ。筆者、江添亮はドワンゴに雇用された。一体、どのような経緯でドワンゴに入社するに至ったのか。また、どんな仕事をしているのか。それを説明するには、時系列を追って書いたほうがいいだろう。 2013年8月21日 ふとみると、以下のようなサブジェクトのメールが届いていた。 【ご相談】ドワンゴ主催の C++11, 14 に関する勉強会にスピーカーとしてご参加頂けないでしょうか C++11? C++14? なんと、日C++14などという単語を知っている企業があったのか。しかし・・・ドワンゴ? SPAMだろうか。いや、こんなにピンポイントなSPAMがあるわけがない。 それにしても解せないメールだ。ドワンゴといえば、もちろん、あの有名なニコニコ動画の企業だ。ニコニコ動画と言えばWebサイトだ。ニコニコ動画やその関連サービスの開発にC++を使っているのだろうか。いやまて、たしか子会社

    richard_raw
    richard_raw 2014/02/14
    太っ腹や……。ドワンゴは現代のパトロンなのか。
  • 本の虫: Clang VS 自由ソフトウェア

    オープンソースで有名なEric S. Raymondが、自由ソフトウェアで有名なRichard Stallmanに、GCCのアンチプラグインポリシーについて突っ込んでいる。 GCCは、長年、コンパイラーのモジュール化を政治的な理由で行っていなかった。もし、例えばパーサーや意味解析だけを分離して使えるようにしたり、内部表現を規格化したりしてしまうと、GCCの一部が、不自由なソフトウェアに取り込まれたり、あるいは不自由なソフトウェアがGCCのプラグインという形で入り込むことになってしまう。これは、利用者の自由を第一とする自由ソフトウェアにとって、悪夢のような未来である。そのような未来を未然に防ぐために、政治的な理由で、GCCのはプラグインに反対するポリシーを採用している。もし、GCCを改良したければ、自由なソフトウェアとなるべきなのだ。そして、GCCのプロジェクトに参加するべきなのだ。 とはい

    richard_raw
    richard_raw 2014/01/28
    「GCCの一部が、不自由なソフトウェアに取り込まれたり、あるいは不自由なソフトウェアがGCCのプラグインという形で入り込むことになってしまう。」使いにくいという意味で不自由になってますがな。
  • ババア補完計画

    書はクッキー・クリッカーについて先に成し遂げられし預言書、クッキー・クリッカーについての続編である。読者は前編を読み、またクッキー・クリッカーを反物質変換装置を購入した時点まで進めることが強く推奨されている。今回は、並行してゲームを行うことは推奨しない。書は将来の備えと覚悟のために読んでもらいたい。読者はいずれ到達しなければならない未来なのだから。 クッキー・クリッカー の虫: クッキー・クリッカーについて 読者よ。クッキーの忠実なる臣にして生産者よ。汝はついに、クッキー生産の頂点、反物質変換装置を購入するに到れり。何ぞや。反物質変換装置はV.1.0.36における最終ビルディングにして、これより購入クッキー額高き、またCpS高きビルディングなし。されど、汝はさらなるクッキーを求めんと欲す。汝はさらなるクッキーを生産を望まんと欲す。その意思、まことに偉大なり。如何となれば、世にクッキー

    richard_raw
    richard_raw 2013/09/18
    続編きたー。アルカンの糖って何だろと思ったら綴りが違いました。/まさかババアとは、偉大なる(削除されました
  • クッキー・クリッカーについて

    昨日、筆者はクッキー・クリッカーなるゲームを体験した。このゲームは、ゲーム質を非常によく抽象化している。ここではそのゲームについて述べるが、読者には実感のため、並行してゲームを行なってもらいたい。 このゲームのプログラムはHTML/CSS/JavaScriptと、その他のリソースで構成されていて、ストールマンの自由四原則に合致する自由ソフトウェアではないが、一応は、制限的ながら、forkや改変を許諾している。このプログラムを動作させるには、まともなブラウザーが必要である。 Cookie Clicker まずみると、左に素晴らしくうまそうなクッキー、中央によくわからない列、右によくわからない小物が並んでいる。操作方法がよくわからない。まず、左にこれみよがしに配置してある、うまそうなクッキーをクリックしてみよう。 +1 なんと、クッキーが一枚得られた。続けてどんどんクリックしていくと、数十

    richard_raw
    richard_raw 2013/09/17
    私のtumblrのダッシュボードにクッキーとババアが増えたなーと思ったらこれか!
  • 各種GNU/Linuxベースのディストロのダウンロードの分かりやすさ調査

    Linuxディストリビューションのisoイメージのダウンロードリンクはなんでどこもわかりにくくしてんの?Firefoxのトップページくらいわかりやすくしてくれよ — かずー氏 (@kazoo04) May 8, 2013 このつぶやきにピンときたので、各種GNU/Linuxベースのディストロの公式サイトから、ISOイメージのダウンロードの分かりやすさを主観的に比較してみた。 まずそのまえに、わかりやすいという触れ込みのFirefoxの公式サイトをみてみよう。 Mozilla — Home of the Mozilla Project — mozilla.org たしかに、これ以上にないというぐらい分かりやすい。上部にダウンロードと書かれており、クリックするとダウンロードが始まる。利用者の環境は自動的に判定し、私の環境の場合、GNU/Linux用のビルド済みのバイナリがダウンロードされた。そ

    richard_raw
    richard_raw 2013/05/09
    ちょこちょこ知らないディストロが。まだまだ不親切ですよねえ。
  • 様々なUNIX環境のecho.cの比較

    UNIX V5, OpenBSD, Plan 9, FreeBSD, and GNU coreutils implementations of echo.c UNIX Fifth Editionのecho.cは、以下のような実装になっている。 main(argc, argv) int argc; char *argv[]; { int i; argc--; for(i=1; i<=argc; i++) printf("%s%c", argv[i], i==argc? '\n': ' '); } いかにも昔のC言語らしいコードだ。ヘッダーの#includeはなく、関数の戻り値の型も指定されない。仮引数の型も、今となっては物珍しいだろうが後書きだ。 OpenBSDのコードは以下の通り。 /* $OpenBSD: echo.c,v 1.7 2009/10/27 23:59:21 deraadt

    richard_raw
    richard_raw 2013/04/11
    こんなに実装が違うのか……、というかオチが。