タグ

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

  • VS CodeがDOMによるターミナル実装のパフォーマンスを改善できなかったためCanvasに変更

    Integrated Terminal Performance Improvements Electronという史上まれに見るそびえ立つクソのようなGUIプラットフォーム上で実装されているVS Codeが、ターミナルの実装をDOMによるものからCanvasによるものに変更したそうだ。これは、DOMによる実装ではパフォーマンスの改善が十分にできなかったからだという。 DOMでターミナルを実装する際の問題ごととして、テキスト選択、テキストアライメント、GC、パフォーマンスを上げている。 テキスト選択:ターミナルのテキスト選択を実現するためにDOMのテキスト選択の挙動をだいぶ上書きしなければならない。 テキストアライメント:一部の文字はモノスペースになってくれず、workaroundとして一文字ごとに固定長のspanで包む必要があるが、これはパフォーマンス上よろしくない。 GC:DOMでターミナ

    gikazigo
    gikazigo 2017/10/06
  • 濫用に当たる職務質問を受けたと考えたので弁護士に相談して訴訟を起こすことになった話

    去る7月3日の午後の通勤途中に、私は職務質問を受けた。その次第は以下のブログ記事に職務質問を受けた当日書いて投稿した。ただし、投稿時に日付を超えてしまったので投稿日時は7月4日になっている。 の虫: 警察官に職務質問をされた話 さて、振り返って見るに、私は先日の職務質問が警察官職務執行法第一条に規定された、「目的のため必要な最小の限度」を超えていて、「濫用」にあたるのではないかと考える。というのも、 「下を向いて歩いていた」、「帽子を目深にかぶっていた」という理由は、同法二条にある「合理的に判断して何らかの犯罪を犯し、若しくは犯そうとしていると疑うに足りる相当な理由」にはならない。 仮に「疑うに足りる相当な理由」であったとしても、職務質問を開始してかなり早い段階で、その疑いに対して「重い荷物を背負って長距離を歩いたので疲れたのではないか」、「人間は下ぐらい向くものだ」、「日差しが強く帽子

    gikazigo
    gikazigo 2017/07/14
  • ミニミニ入居安心サービスはクソだ

    今いる賃貸物件は、私の嫁と大家との間に、株式会社ミニミニ中央という不動産屋が仲介に入って賃貸契約したものだ。なぜ私の名義で契約していないかと言うと、私は電話番号を所有していないため、保証会社が審査を拒否したためだ。審査に落ちるどころではない。審査の拒否だ。しかし、なぜか私の嫁名義で保証会社の審査を出したら、私を保証人に加えろと言ってきた。審査を拒否するほどの信用のない人間を保証人には加えるほど信用するのは不思議だ。 引っ越して2年たち、事前の契約通りに更新手続きの書類が株式会社ミニミニ中央から送られてきた。内訳は不動産業界の謎の慣習に従って、以下の通りだ。 更新料(契約を維持して住み続けるだけで借り主がカネを払うのかよ? 更新料があるために引っ越されたら大家も家賃をとりっぱぐれて損するんだぞ?) 火災保険料(俺が所有していない不動産の保険を借り主たる俺が払うのかよ?) 保証料(家賃不払いの

    gikazigo
    gikazigo 2017/06/05
  • マストドンが直面している問題はすでにP2P技術が15年前に遭遇した問題だ

    Media content caching strategy · Issue #1847 · tootsuite/mastodon勢がマストドンに目をつけ始め、Pixivがマストドンのインスタンスを立ち上げてからというもの、マストドンは2つの問題に直面している。 日国内で合法である現実に基づかない純粋な思想の表現である絵が海外基準では児童ポルノであり違法なデータである 画像投稿を主目的とするPixivの利用形態により大量のトラフィックとストレージがキャッシュとして消費されるため貧弱なインフラでは耐えられない これにより、Pixivによるマストドンのインスタンスは海外で主流のマストドンのインスタンスから遮断された。 現在、マストドンのコミュニティではこの問題に対する議論が行われているが、この問題には見覚えがある。15年前のP2P技術が流行した時代と同じ問題だ。我々は歴史に学ぶべきであ

    gikazigo
    gikazigo 2017/04/16
  • PornhubはWebSocketを使ってAdBlockを回避している

    BugReplay あるWeb開発者が、開発のためにchromeで通信内容をキャプチャしたいと考えchrome.webRequestを使ったが、WebSocket経由の通信は得られないことを発見した。さっそくこれをバグ報告した。 その後、インターネット上でわいせつ動画を頒布する大手Webサイトとして有名なPornhubの運営会社であるMindGeek社の社員がこのバグを修正しないようコメントした。 不思議に思って調べてみると、PornhubはWebSocketを使って広告データをやり取りすることで、AdBlock系のブラウザー拡張による広告除去を回避していることが判明した。 なお、この記事を公開して程なくして、AdBlock PlusとuBlock OriginはPornhubに対するWebSocket経由の広告除去も実装した。 技術的に可能であることを示すことと、実際に労力を割いてまで実

    gikazigo
    gikazigo 2016/11/04
  • npm、一見無意味なパッケージを消したら1000件ものパッケージが依存するパッケージであったことが判明

    npm、一見無意味なパッケージを消したら1000件ものパッケージが依存するパッケージであったことが判明 npmが一見無意味に思えるfsというパッケージをSPAMとみなして削除したところ、1000件ほどのパッケージが依存するパッケージだったので、削除を取り消した。 npm, Inc. Status - "fs" unpublished and restored 今日、数分ほど、"fs"というパッケージが、ユーザーからSPAMであるという報告を受けて、レジストリから非公開にされた。これは現在復旧されている。これは私(@seldo)による人為的なミスである。私は非公開が安全であるかを確認する内部のガイドラインに従っていなかった。ビルドが阻害されたユーザーに謝罪する。 詳細:"fs"というパッケージは、無意味なパッケージである。これは単に"I am fs"をログに残して終了する。このパッケージが何

    gikazigo
    gikazigo 2016/08/25
  • 公益財団法人日本生産性本部のヨーゼフ・ゲッベルスが平成28年度の新入社員のタイプは「ドローン型」であるとの報告書を発表した

    公益財団法人日生産性部のヨーゼフ・ゲッベルスが平成28年度の新入社員のタイプは「ドローン型」であるとの報告書を発表した 世界に冠たる優れた人種であるアーリア人の中でもナチ党の国民啓蒙宣伝大臣であるパウル・ヨーゼフ・ゲッベルスは、平成28年度の極東の新入社員(極東における同年に学位を得て同時に雇用契約を結ぶ労働者の謂)は、ドローン型であるとの報告書を発表した。 公益財団法人日生産性部の「職業のあり方研究会」(座長 ライズコーポレーション株式会社 代表取締役 岩間 夏樹)は、平成28年度の新入社員の特徴をまとめた。「職業のあり方研究会」は、若年者の就労支援や教育の専門家などで構成され、多くの企業や学校等の就職・採用関係者の協力を得ながら、新入社員の特徴や就職・採用環境の動向などについて調査研究を行っている。 公益財団法人日生産性部 - 平成28年度 新入社員のタイプは「ドローン型」

    gikazigo
    gikazigo 2016/08/23
  • ダイヤルQ2風の電話番号でInstagramやGoogleやMicrosoftから金をむしりとれる脆弱性

    セキュリティ研究者が、とても興味深い脆弱性を報告して報奨金をもらった記事が上がっている。 How I Could Steal Money from Instagram, Google and Microsoft – Arne Swinnen's Security Blog プレミアムナンバーという電話上のサービスがある。これは一時期日で行われていたダイヤルQ2と同等の仕組みを持つサービスで、プレミアムナンバーという電話番号にかけた電話の通話料は、通常より高い。通話料の差分は、電話サービスの提供元に支払われる。 ダイヤルQ2は電話越しに何らかのサービスを提供して、電話料金で利用料を徴収できる、手軽な仕組みだった。その利用例は、投資顧問、アダルト、占い人生相談、義援金、ダイヤルアップISPなどに利用されていた。ダイヤルQ2自体は2014年に終わったが、海外ではまだ同等の仕組みをもつサービス

    gikazigo
    gikazigo 2016/07/18
    本の虫: ダイヤルQ2風の電話番号でInstagramやGoogleやMicrosoftから金をむしりとれる脆弱性
  • BitKeeperがオープンソース化された付記DVCSの歴史

    BitKeeper BitKeeperは最初の分散ソース管理システムである。今後はオープンソースのApache 2.0ライセンスとして提供される。 BitKeeperは高速で、エンタープライズレディな、分散ソースコード管理であり、大きなプロジェクトから小さなプロジェクトまでスケールする。 「最初の」という主張には語弊があるが、DVCSの歴史を考えると、あながち間違いでもない。 DVCS(分散バージョン管理システム)を最初に実装したのは、Sun WorkShop TeamWareである。 Sun WorkShop TeamWare - Wikipedia, the free encyclopedia これは名前通り、Sun Microsystemsによって開発されたDVCSで、その主要な開発者として、Larry McVoyがいる。 Larry McVoy - Wikipedia, the f

    gikazigo
    gikazigo 2016/05/11
  • MITがSICPを教えなくなった理由

    Programming by poking: why MIT stopped teaching SICP | posterior science このNYC Lisp meetupの動画で、Gerry Sussmanに対する質問として、SussmanとAbelsonの古典、The Structure and Interpretation of Computer Programs(SICP)に基づく、伝説的な6.001講義をなぜMITはやめたのかと聞かれている。 Sussmanの回答としては、SussmanとHal Abelsonは1980年代から延々と教え続けるに嫌気が差し、1997年に、学部長の事務所に行って、「俺らはやめる。後どうするからは勝手に考えろ」と宣言した。より重要なこととしては、SICPのカリキュラムは、今日のエンジニアリングに求められるエンジニアを育てることができないからで

    gikazigo
    gikazigo 2016/05/06
  • Linuxにleftpad()というシステムコールを入れる提案

    LKML: Richard Weinberger: New syscall: leftpad() Linuxカーネルに興味深い日付でleftpad()というシステムコールが提案されている。 最近のnode.js業界の事件を振り返るに、leftpadのような基的なアルゴリズムの依存はソフトウェアを脆弱にすることが判明した。ledpad[原文ママ]を提供するnode.jsパッケージが消失し、多くのソフトウェアが動かなくなった。 この事件に注目すると、node.jsベースのソフトウェアがLinuxの「ユーザースペースは壊さない」原則に将来的に頼ることができるので、このような機能を提供するのはカーネルの役目であるという結論に至った。 glibcとAndoid[原文ママ]のbionicは、早急にこの新しいシステムコールのラッパー関数を提供してくれることを望む。 leftpadをカーネルに入れたのは

    gikazigo
    gikazigo 2016/04/03
  • 普通のコンピューターからAMラジオを鳴らそう

    読者の持っている至って普通のコンピューターは、実はAMラジオを鳴らす発信装置が備わっている。 ラジオを鳴らすコードは以下にある。 https://github.com/fulldecent/system-bus-radio ただしこれはMac OS Xでしか動かないので、C++11に移植したコードが以下になる。また、このコードはスレッドを回して消費電力を上げることにより、オリジナルより出力も上げてある。 https://github.com/EzoeRyou/system-bus-radio 動かし方(GCCの場合) git clone git@github.com:EzoeRyou/system-bus-radio.git cd system-bus-radio make gmain make grun Clangの場合、以下のようにする。 make cmain make crun そし

    gikazigo
    gikazigo 2016/03/02
  • とても賢いコンパイラーの逆襲

    The Hacks of Life: The Dangers of Super Smart Compilers Clangの最適化が未定義の挙動を検出してコード片を消し去ってしまったことに引っかかった開発者の嘆き。 今日初めて、RenderFarmのDSF render(global scenaryを作成するのに使っている内部ツール)をClangで最適化コンパイルして実行した。 結果はsegfaultだった。これは驚きだ(そして自身消失だ)。というのも、最適化していないデバッグビルドは問題なく動くし、GCCでコンパイルされた最適化ビルドも正しく動く。-O0ではバグがない(つまり#if DEVコードのバグではない)ので、「最適化は何をやっているんだ」の時間だ。 大量のprintfと試行錯誤の結果、最適化は以下のようなコード片を丸ごとすっ飛ばしていることが判明した。 for(vector<me

    gikazigo
    gikazigo 2015/12/21
  • 500マイル以上離れた場所にメールが送れないのだが

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

    gikazigo
    gikazigo 2015/04/10
  • gitの10周年を記念したLinus Torvalsへのインタビューの翻訳

    10 Years of Git: An Interview with Git Creator Linus Torvalds | Linux.com gitの10週年を記念して、リーナス・トーバルズがインタビューに答えている。以下はその翻訳である。 なぜGitを作ったのか? トーバルズ:俺はソース管理ツールなんて作りたくなかったし、コンピューターの業界において最も興味がないものだと見なしていた(データベースは別だが)。それにソース管理ツールなんてどれも嫌いだった。しかし、BitKeeperがやってきてからというもの、ソース管理に対する見方が変わったね。BitKeeperは大抵のことを正しく行っていた。レポジトリのローカルコピーがあることと、分散マージはでかかった。分散ソース管理の何がいいかというと、ソース管理ツールの問題を吹っ飛ばせることだ。「誰が変更を行えるか」といった政治問題があるが、B

    gikazigo
    gikazigo 2015/04/08
  • コンパイラーを負かす

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

    gikazigo
    gikazigo 2015/03/30
  • アンチウイルスソフトウェアの脆弱性

    Breaking av software 市場に出回っているアンチウイルスソフトウェアの脆弱性についての研究発表のスライド資料が公開されている。 アンチウイルスソフトウェアは、セキュリティ向上のために重要だという意見があるが、このスライド著者は疑問を投げかけている。そもそも、ソフトウェアの追加は、攻撃できる箇所が増えるということだ。アンチウイルスソフトウェアは果たしてセキュアに作られているのか。 特に、多くのアンチウイルスソフトウェアは、カーネルドライバーを使ったりしている。もし脆弱性があればとんでもないことだ。 アンチウイルスソフトウェアの攻撃手段としては、細工されたファイルフォーマットをスキャンさせる事が大半だ。アンチウイルスソフトウェアは、様々なフォーマットのファイルをパースする必要がある。もし、そのパーサーにバッファーオーバーフローなどの不具合があれば任意のコードを実行させることが

    gikazigo
    gikazigo 2015/01/13
  • The Old New Thing: 実行ファイルのベースアドレスが0x00400000である理由

    古参MS社員のRaymond Chenが、なぜWindowsのデフォルトのベースアドレスは0x00400000に配置されているのか。最初の4MBは何だという質問に答えている。 Why is 0x00400000 the default base address for an executable? - The Old New Thing - Site Home - MSDN Blogs DLLのデフォルトのベースアドレスは0x10000000だが、なぜEXEのデフォルトのベースアドレスは0x00400000なのか。なぜこの値なのか。4メガバイトに何の意味があるのか。 これには、x86のディレクトリエントリひとつでマップできるアドレス空間であることと、1987年に決められた設計のためだ。 EXEのベースアドレスの制約としては、64KBの倍数であることのみだ。しかし、ベースアドレスを選ぶ理由に

    gikazigo
    gikazigo 2014/10/06
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    gikazigo
    gikazigo 2014/08/21
  • 8086のバイナリが汚すぎる

    池袋バイナリ勉強会に参加して、8086の逆アセンブラーを作成しようとしているのだが、これが思いの外に難しい。いや、めんどくさい。 筆者は、これまでx86アセンブリには、ニーモニック経由でしか触れてこなかった。movはmovであり、それ以外の何者でもなかった。 mov ax, bx などと書いたら、これをアセンブラーにビット列に変換させて、その後は何も考えなかった。 既存のバイナリを逆アセンブラーにかけて読む場合でも、やはり逆アセンブラーがバイナリをニーモニックに変換してくれるので、やはりビット列による表現方法に関しては、考えたこともなかった。 さて、池袋バイナリ勉強会に参加したので、この機会に、逆アセンブラーでも実装しようと思い立った。そこで、Intelの当時の8086の資料を読んでみた。 Index of /Intel/x86/808x/datashts/8086 そして、絶望した。80

    gikazigo
    gikazigo 2014/06/15