Kroutonのブックマーク (112)

  • 正規表現の脆弱性 (ReDoS) を JavaScript で学ぶ

    先日、このようなツイートを書いたところ、かなりの反響がありました。 JavaScript の正規表現の脆弱性の例でいうと、例えば /\s+$/ は脆弱性があると言える console.time(); /\s+$/.test(" ".repeat(65536) + "a"); console.timeEnd(); 結構時間がかかるのがわかる。でも /\s+$/ を見て「これは危険だな」と理解出来る人はそんなにいない。JavaScript に限らないけれど。 — Takuo Kihira (@tkihira) February 17, 2022 これは一般に ReDoS (Regular expression Denial of Service) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ

    Krouton
    Krouton 2022/06/30
  • スタートアップに転職する時に最低限知っておくべき株の話

    身の回りで大企業からスタートアップに転職するエンジニアの話をよく耳にするようになりましたが、転職に際して株に関して深く考えていない人がかなり多いことに気づきました。最低限この程度は知っておいたほうがいい、という点を自分の視点からまとめてみました。 スタートアップの金銭的な成功 スタートアップの株は「非公開株」です。非公開株というのは、東証などの証券取引所で取引されていない株全般のことを指します。おおっぴらに取引されていないので、非公開株を貰ったところで即座に現金化出来るわけではありません。特に外部から投資を受けるようなスタートアップ企業は、(例外はいくつかあるものの)この非公開株を現金化させることが一つのゴールになります。 非公開株を現金化させる方法は大きく2つあります。一つは株式公開(IPO)で、証券取引所の審査を経て自社株を自由に売買出来るようにすることです。いわゆるマザーズ上場、東証

    Krouton
    Krouton 2022/06/30
  • スナップショットテストの向き不向きについて考えてみる - mizdra's blog

    ふとスナップショットテストってなんだろう、どういう場面で向いていて、どういう場面には向いていないんだろうと考える機会があって色々調べてました。丁寧な記事にしようとしたのですが、上手くまとまらなくて挫折してしまった… とはいえこのまま手元に置き続けておくのも勿体ないので、下書き段階のものを公開して供養します。 スナップショットテストとは スナップショットテストとは、あるプログラムの出力を以前の出力と比較し、両者に差分があるかをテストする手法のことです。予め以前のバージョンのプログラムの出力 (スナップショット) のどこかに保存しておき、新しいバージョンのプログラムの出力と比較し、差分があったら fail させます。これにより、プログラムの出力内容が予期せぬうちに変わってしまっていた場合に気づくことができます。 例: React コンポーネントのテストへの適用 代表的な利用例が Jest を使

    スナップショットテストの向き不向きについて考えてみる - mizdra's blog
    Krouton
    Krouton 2022/06/09
  • Region-Based Memory Management in Cyclone を読んだ その1

  • Can you explain that Tokio vs crossbeam vs rayon a bit more? Should I default to... | Hacker News

    Can you explain that Tokio vs crossbeam vs rayon a bit more? Should I default to rayon or crossbeam because of that? It depends on what you want to do. If you are doing io-bound work, Tokio would be what you want -- you would use it as a runtime for the async capabilities in Rust. If you have cpu-bound work, then rayon is what you want to use. Rayon is a work-stealing parallelism crate -- it will

    Krouton
    Krouton 2022/01/20
  • リモートワーク環境とゲーミング環境をコスパ良く同時に快適にした - 下林明正のブログ

    普段はリモートワークゲームを別々のPCでやっているんだけど、ふとUSB切替器を使って両方のPCでデバイスを使えるようにしたらコスパが良いのでは?と思い試してみたところ、うまくいった。 USB切替器 DAC+イヤフォン マイク+骨伝導ヘッドセット ウェブカメラ まとめ USB切替器 今回の肝。 UGREEN 切替器 USB 切り替え PC2台用 プリンタ マウス キーボード ハブなどを切替 手動切替器 プリンタ 切り替え機 USBケーブル×2 1.5m (附属品) (パソコン2:USB機器4) UGREENAmazon USB3.0のものではなく、あえて枯れてそうなUSB2.0の切替器を買ってみた。 正直USB切替器がまともに動くイメージが無かったのだけど、今の所完全に期待通りに動いているように見える。 切り替えボタンだけ分離しているタイプもあって悩んだけど、結局今がどっちのPCに繋がって

    リモートワーク環境とゲーミング環境をコスパ良く同時に快適にした - 下林明正のブログ
    Krouton
    Krouton 2021/10/14
  • 新卒のソフトウェアエンジニアになるまで

    流れに便乗して私がソフトウェアエンジニアになるまでにやってきたことを書いてみます。学生を想定読者にしています。進路を考える時の参考になると嬉しいです。 私は修士一年の 2010 年に Google Japan の Chrome OS チームでインターンし、 2012 年に新卒のソフトウェアエンジニアとして入社しました。現在は東京オフィスの Chrome ブラウザの開発チームにいます。インターン中や入社後の仕事については以前「就職して 6 年過ぎた」という記事に書いたのでそちらも是非見てください。 記事では学生時代に何を学び、それがどのように現在へと繋がっていったのか紹介します。ソフトウェアエンジニアとしての能力や経験をどのように磨いてきたかが中心です。面接を含む Google 固有の話題は他の記事で十分語られているのであまり書きません。 長文です。結論だけ読みたい人は『最後に』を読んでく

    新卒のソフトウェアエンジニアになるまで
    Krouton
    Krouton 2021/08/05
  • 凛として時雨 全楽曲レビュー ~時雨の「歴史」と「これから」を語りたい~ - 霏々

    さて、ついに凛として時雨について記事を書く時がやってきました。 これまでの様々な記事の中にも、度々凛として時雨に関する内容を盛り込んできたように思いますが、「はて、凛として時雨の音楽をどうやって言語化すればよいのか?」という苦悩がずっと付き纏っていて、凛として時雨を中心においた記事を書くには至りませんでした。 今でも凛として時雨(以下、時雨)の音楽に散りばめられた要素を言語化する自信なんて微塵もありません。しかし、あるいは切り口を変えれば、一つの形を成す記事にすることは可能ではないか、と思い、PCと向き合っている次第でございます。 というわけで、今回の記事では、とりあえず時雨の「歴史」について書けるだけ書いてみようと思います。4thアルバムである「still a Sigure virgin?(通称、時雨処女)」辺りからのファンなので、歴はまぁ浅いのですが、可能な限り過去に遡りながら色々と時

    凛として時雨 全楽曲レビュー ~時雨の「歴史」と「これから」を語りたい~ - 霏々
    Krouton
    Krouton 2021/07/29
  • 陰謀論にハマっている人達は、たぶん、ものすごく知的な活動をしていると思ってる

    今から15年ほど前、ロジカル・シンキングというものが流行っていた。 ロジカル・シンキングを紹介していた達は「論理的に物事を考えられれば、自由な発想がいくらでもできるようになる」といった事を謳っていたように記憶している。 僕も興味をもって何冊か読んでみたのだけど、これがまるで役にたたなかった。 コンサルファームあたりで激詰めされながら職業訓練をうければまた話は違うのかもしれないけど、少なくとも素人が論理的に物事を考えた所で何も変わらない。 少なくとも僕に限って言えばだが、論理的に物事を考えてもまったく思考は展開しなかった。 「なんか違うんだよな」と随分長い間考えていたのだけど、最近ようやくその違和感の正体がつかめた。 今日はその話をしようかと思う。 アイディアは論理的思考では積み上がらない かつて僕はアイディアというものは論理的思考の積み重ねでもって展開するものだと思っていた。 図解すると

    陰謀論にハマっている人達は、たぶん、ものすごく知的な活動をしていると思ってる
    Krouton
    Krouton 2021/07/08
  • Is there a well-defined difference between "normalizing" and "canonicalizing" data?

    Krouton
    Krouton 2021/07/03
    後で読む
  • ポルノ動画共有サイトのXvideosに音楽ビデオをアップロードするとどうなるのか~ポルノと非ポルノの境界を裏側から見る - nomolkのブログ

    最近インターネット探検家(インターネット・エクスプローラ)としての活動をさぼり気味でしたが、久しぶりに活動報告させていただきます。 ツイートがメインであとは補足です。読みにくかったら先にツイート部分だけガーっと読んでいった方が論旨がわかりやすいかもしれない。なお特に注釈がない場合、違法アップロードではなく自分の作品をアップロードする場合の話をしています。 ※記事中には過激なポルノ画像は登場しませんが、リンク先にはガチのポルノサイトが存在しますのでご注意ください Xvideosにポルノ以外の動画をアップロードすると消される xvideosに痴漢ものAVと日の80年代のテレビCMをコラージュしたvaporwave動画が上がっててあとで周辺掘ろうと思ってたんだけど、今日見たらxvideosの考えるポルノ動画の基準に満たなかったのか動画が審査中で見られなくなっていた— メルセデスベン子 (@n

    ポルノ動画共有サイトのXvideosに音楽ビデオをアップロードするとどうなるのか~ポルノと非ポルノの境界を裏側から見る - nomolkのブログ
    Krouton
    Krouton 2021/06/28
  • 6.2 SML#コンパイラの構造とブートストラップ ‣ Chapter 6 SML#プログラミング環境の準備 ‣ Part II チュートリアル ‣ プログラミング言語SML#解説 4.0.0版 - SML#プロジェクト

    この節の内容は,SML#コンパイラをインストールし使用する上で 理解する必要はありませんが,やや時間がかかるSML#コンパイラのインス トール処理の理解や,さらにコンパイラの一般的な構造を理解する上で有用と思 います. SML#4.0.0版コンパイラは,SML#言語で書かれた ファイルを分割コンパイルし,ネイティブコードを生成します. 対話型モードも,このコンパイラを使い, (1) 現在の環境下で分割コンパイル, (2) システムとのリンク, (3) オブジェクトファイルの動的ロード を繰り返すことによって実現しています. SML#コンパイラはSML#言語,C言語,およびC++言語 で書かれており,さらに自分自身のコンパイル時に以下のツールを使用していま す. •

    Krouton
    Krouton 2021/06/22
    “ SML#コンパイラはSML#言語,C言語,およびC++言語 で書かれており,さらに自分自身のコンパイル時に以下のツールを使用していま す. • ml-lex,ml-yacc.字句解析および構文解析ツール.” ml-lex, ml-yaccだからできそう?
  • Jason Williams - A Possible New Backend for Rust

    Apr 14, 2020 So typically when you want to make your own compiled language you need a compiler to.. well.. compile it into something useful. Then making it work across a wide range of operating systems and CPU architectures is a huge effort, let alone having it be performant. This is where LLVM comes in. You can scan through your source code, parse it into an Abstract Syntax Tree (AST) then genera

    Krouton
    Krouton 2021/06/20
    読んだ、コンパイル速度自体はCraneliftの方が早いっぽい
  • APIとかABIとかシステムコールとか - 覚書

    はじめに 記事はLinux環境における次のようなことをざっくり理解するための記事です。 Application Programming Interface(API)って何? Application Binary Interface(ABI)って何? システムコールとAPIとABIの関係って? それぞれ何がどう違うの? この手の情報はググればwikipediaやらにいろいろ情報が載ってるんですが、初心者が理解するには細かいことまで書かれすぎていて、かつ、それぞれの関係がわかりにくいです。なので、用語を逐一解説するのではなく、ありがちな質問のQAという形をとりました。人によって用語の意味の揺らぎがあったりするんですが、私の解釈ということで。あからさまに間違っていたら指摘していただけると嬉しいです。 これを書こうと思ったきっかけは、以前こんなtweetを見かけたことです。それから「そういえば最

    APIとかABIとかシステムコールとか - 覚書
    Krouton
    Krouton 2021/06/20
  • Ruby の正規表現で素数かどうかを確認する方法

    Ruby の正規表現で素数かどうかを確認する方法 作成日 2018.09.11 更新日 2018.09.13 Regex Ruby Ruby の正規表現を使って, 素数かどうかを確認するメソッドを作ってみました. パフォーマンスは正直全然良くないのですが, 余興の様なものとしては面白いのではないかと思います. 正規表現の説明もします. そもそも素数というのは, どの様な数なのでしょうか. Wikipedia によりますと次のように定義されています: 素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。正の約数の個数が 2 である自然数と言い換えることもできる。 なので 0, 1, 4, 6, 8, 9, 10, 12 といった数は素数ではなく, 2, 3, 5, 7, 11, 13 といった数が素数になります.

    Krouton
    Krouton 2021/06/15
    すごい
  • Evan Priestley 氏がどうやってプログラミングを学んだかを教えてください - Knoh (ノウ) | The Knowledge Hub

    人による回答です。Evan Priestley 氏は知る人ぞ知る、Facebook を代表する (元) エンジニアの一人です。Facebook には 2007 年から 2011 年の間に在籍していました。 手短かに言えば: 何年もの歳月の賜物というか。ぼくはただひたすらプログラミングが大好きで、(フェイスブックで働いていた) 過去4年間、ほとんど他のことをしていない。その前も2.5年ほどプログラマーとして働いていたし、そのさらに前も6年くらい趣味でプログラミングをしていた。ぼくは高校も大学も中退しているので、それで空いた時間もプログラミングに費やした。つい最近フェイスブックを辞めたけど、未だに起きている時間のほとんどはプログラミングだ。 もっと詳しく言えば: 月並みだが、ぼくはちっちゃい頃からコンピューターが好きで、我が家にあったヤツで(最初はMac Plusで途中からIIsiになった)

    Krouton
    Krouton 2021/05/20
  • パケットキャプチャの実装方法 - Plan9日記

    ネットワークアプリケーションの解析やデバッグなどにパケットキャプチャ(もしくはスニファ)は必須の機能で、UNIXであればtcpdump、snoop、wireshark*1、Plan 9であればsnoopyなどが存在する。パケットを横から盗み見するために、OSごとにいろんなアプローチを取っている。ある機能をどのように実装するかで、そのOSの設計哲学が透けて見えてくるかもしれない。ということで、今日はパケットキャプチャの実装方法について調べてみたい。 libpcap tcpdumpのパケットキャプチャ処理はlibpcapとして独立したライブラリになっていて、OS依存部分を隠蔽している。例えば、BSD系UNIXはBPF(Berkeley Packet Filter)、LinuxはPF_PACKETを利用してパケットキャプチャを実現している。より正確にはBPFはキャプチャとフィルタリングするのに対

    パケットキャプチャの実装方法 - Plan9日記
    Krouton
    Krouton 2021/05/19
  • リングフィットアドベンチャーの運動ログをほぼ自動的に収集・可視化する - public note

    目的は自己管理と習慣化 システム要件 完成図 必要なもの 運用コスト グラフ Goプログラム help ツイート検索 画像内のテキスト解析 解析結果の登録 これからやりたいこと pixelaで草を生やす 過去データ移行 GCP Secret Manager 対応 英語対応 風来のシレン5 Plus 対応 目的は自己管理と習慣化 リングフィットアドベンチャーは、家にいながらにして運動ができるという素晴らしいゲームです。 ただ一点、個人的に気になっていることがあります。それは、運動ログがソフトウェア内に閉じていることです。 もし出力することができれば、過去の実績や継続日数を記録として残し、PCやスマホで可視化できます。これにより習慣化につながったり、「もしかして私、アームツイストばかりやってる...?」みたいなトレーニングの偏りに気づくことができるのではないかと考えました。 システム要件 そう

    リングフィットアドベンチャーの運動ログをほぼ自動的に収集・可視化する - public note
    Krouton
    Krouton 2021/04/18
    SSから出来そうだな〜とは思ってたけど先行研究があって良い
  • プロジェクト初期は理想日見積もりし、徐々に相対見積もりへ移行する - $shibayu36->blog;

    プロジェクトマネジメントにおいて、見積もりをどのように行うかは結構難しい。僕は理想日見積もりの形式も、相対見積もり(ストーリーポイント)の形式も試したことがあるが、どちらも一長一短であった。 最近色々試す中で、プロジェクト初期は理想日見積もりし、徐々に相対見積もりへ移行するという方式がやりやすいと感じた。今回はその様子を紹介してみる。 理想日見積もりと相対見積もりそれぞれのメリット・デメリット 見積もりの基礎知識と「ストーリーポイント vs 理想日」の考察の記事を読むと、理想日見積もりと相対見積もり(ストーリーポイント)それぞれのメリット・デメリットがさっと把握しやすい。自分としては、それぞれ以下のように思っている。 理想日見積もり : 他の割り込みが全くなく、1日中タスクに取り組んだ場合を1理想日とする見積もり方式 メリット: 他に基準となるタスクがなくてもとりあえず雑に出せる。相対見積

    プロジェクト初期は理想日見積もりし、徐々に相対見積もりへ移行する - $shibayu36->blog;
    Krouton
    Krouton 2021/04/06
    友情出演しました
  • GitHub - sfackler/scheduled-thread-pool