タグ

algorithmとstudyに関するraimon49のブックマーク (50)

  • アメリカでソフトウェアエンジニアの職を探した - pco2699’s blog

    はじめに 前提 アメリカで働くためのビザ 業務経験 2023年のアメリカのテック業界の状況 具体的な就活のステップ ソフトウェアエンジニアのインタビューで求められることの抽象的な理解 レジュメ Job Descriptionから逆算してレジュメを作る 一枚におさめる 数字を用いてスケールとビジネスインパクトを示す なるべく隙間を埋める フォーマット添削ツールにかける レビューを受ける ネットワーキング・リファラル 応募する アメリカの就活はNumber Game 採用のトレンドを追う 時期を見計らう Linkedinで最新の求人を見つける方法 Promotedをすべて非表示にする "Most Recent"順にする 検索クエリを工夫する 設定をブックマークする 時間を決めて巡回する コーディングインタビュー対策 アルゴリズムの地図を脳内に作る 大学やCouseraでアルゴリズムの授業を取る

    アメリカでソフトウェアエンジニアの職を探した - pco2699’s blog
  • ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita

    pictBLandとpictSQUAREに対する不正アクセスがあり、パスワードがソルトなしのMD5ハッシュで保存されていたことが話題になっています。 2023年8月16日に外部のフォーラムにpictSQUAREより窃取した情報と主張するデータ販売の取引を持ち掛ける投稿が行われた(中略)パスワードはMD5によるハッシュ化は行われているもののソルト付与は行われていなかったため、単純なパスワードが使用されていた29万4512件は元の文字列が判明していると投稿。(それ以外の26万8172件はまだMD5ハッシュ化されたままと説明。) 不正アクセスによるpictBLand、pictSQUAREの情報流出の可能性についてまとめてみた - piyolog より引用 これに関連してMD5ハッシュやソルトに関するツイート(post)を観察したところ、どうもソルトの理解が間違っている方が多いような気がしました。

    ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita
  • macOSの暗号化zipの話の続き - NFLabs. エンジニアブログ

    はじめに こんにちは。事業推進部でOffensive Teamを担当する永井です。 今回はアドベントカレンダーの11日目として、前回投稿した「macOSの暗号化zipファイルはパスワードなしで解凍できる」という記事に寄せられたコメントのうち、特筆すべきものをピックアップして回答していきます。 前回の記事を読んでいない方や、もう覚えてないという方は是非前回の記事を見てから続きを読んでいただければと思います。 Q. 正解するまでbkcrackを回さなくてもzip内のCRC32値と比較すれば良いのでは? はい、その通りです。 筆者が前回の記事を書いている時には完全に失念していましたが、zip内にはファイル破損を検出するためにCRC32形式のハッシュ値が含まれています。そのため、bkcrackを正解パターンを引くまで都度回さなくても簡単に正解の.DS_Storeを見つけ出すことができます。 実際に

    macOSの暗号化zipの話の続き - NFLabs. エンジニアブログ
  • macOSの暗号化zipファイルはパスワード無しで解凍できる - NFLabs. エンジニアブログ

    はじめに こんにちは。事業推進部でOffensive Teamを担当する永井です。 先日のApple発表会では新型のiPhoneApple Watchなど心躍る製品が色々と発表されましたね。筆者は特に新型iPad miniが心に刺さっています。 さて、今回はApple関連の話として「macOSの暗号化zipファイルはパスワード無しで解凍できる」というネタについて書いていきます。 解凍できる条件 何を言っているんだと思われるかもしれませんが、macOSで作られた暗号化zipファイルは以下の2つの条件を満たす場合にパスワード無しで容易に解凍が可能です。 zipの暗号化方式がzipcryptoである (通常の暗号化zipファイルは基的にzipcryptoが利用されています) zip内のいずれかのディレクトリの中身が.DS_Storeファイルおよび何らかのファイル1つである このうち1.は基

    macOSの暗号化zipファイルはパスワード無しで解凍できる - NFLabs. エンジニアブログ
    raimon49
    raimon49 2021/10/06
    新しいパスワードで暗号化されたzipが手に入る。へぇ。
  • コミットはスナップショットであり差分ではない

    Git は紛らわしいという評判です。用語や言い回しが意味するものと、そこから想像する挙動が違ってユーザーが混乱すると言われます。これは、git cherry-pick や git rebase のような「履歴を書き換える」コマンドに最も顕著です。私の経験では、この混乱の根的な原因は、コミットは 差分 であり順番を入れ替えることができるという解釈にあります。しかし、コミットはスナップショットであって、差分ではありません! Git がリポジトリデータをどのように保存しているかを見てみると、Git を理解しやすくなります。このモデルを調べた後に、この新しい視点が git cherry-pick や git rebase のようなコマンドを理解するのにどのように役立つのかを探っていきます。 当に深く 掘り下げたいのであれば、Pro Git という書籍の Git Internals の章を読むと

    コミットはスナップショットであり差分ではない
  • 人生を豊かにする文字列diff入門 | フューチャー技術ブログ

    春の入門祭りの8日目です。 文字列の新旧の違いを表現する時によくdiffをとるとか言いますよね。そこで実行されるのが差分アルゴリズムです。差分のアルゴリズムって結構知れば知るほど難しいやつです。「より良い差分」という基準が、状況によって変わるからです。ヒューリスティックなやつです。例えば、HTMLの説明の文章を書いていたとします。タイトルをテーブルに書き換えてみたとします。 どちらも間違ってはおらず、この差分を元にパッチを当てたりも可能です。ただ、読んだ時の読みやすさが違います。 これはもちろん前者と答える人の方が多いでしょう。だって、タグという意味の塊が維持されていますからね。 これは究極的にはわかりやすいdiffというのは「意味」を理解しないと作れないということを意味します。これがdiffは簡単なようで難しいと書いた理由です。もちろん、ほどほどの工数で、ほどほどの見た目のdiffも作成

    人生を豊かにする文字列diff入門 | フューチャー技術ブログ
  • JVM入門
 -Javaプログラムが動く仕組み-

    2019/11/23 JJUG CCC 2019 Fall - 日Javaユーザーグループ 登壇資料です。

    JVM入門
 -Javaプログラムが動く仕組み-
    raimon49
    raimon49 2019/11/24
    ゆるい絵がいい
  • 様々なrate limitアルゴリズム - Carpe Diem

    概要 インターネットに晒されているWebサービスでは TV等で紹介されたことによる大量流入 悪意ある人物からの攻撃 クライアントのバグに依る大量リクエスト など、来想定していた以上のトラフィックが来ることはよくあります。 単純にシステムを構築すると大規模トラフィックに対応できずシステムがスローダウンしてしまうため、何かしらrate limitをかけておいた方が良いです。 ただしrate limitと一口に入っても色々あるため、今回は主なrate limitアルゴリズムを紹介します。 Leaky bucket Leaky bucketはデータ転送レートを一定にする(=上限を設定する)アルゴリズムです。 下の図のように、様々な流量の水流がそのバケツに流れ込んでも小さな穴からは一定の水流が流れ出す仕組みです。 ref: What is the difference between token

    様々なrate limitアルゴリズム - Carpe Diem
    raimon49
    raimon49 2019/11/11
    勉強になった。
  • ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 今回はソートについて記します。 0. はじめに データ構造とアルゴリズムを学ぶと一番最初に「線形探索」や「ソート」が出て来ます。これらのテーマは応用情報技術者試験などでも頻出のテーマであり、アルゴリズムの Hello World とも呼ぶべきものです。 特にソートは、 計算量の改善 ($O(n^2)$ から $O(n\log{n})$ へ) 分割統治法 ヒープ、バケットなどのデータ構造 乱択アルゴリズムの思想 といった様々なアルゴリズム技法を学ぶことができるため、大学の授業でも、アルゴリズム関連の入門書籍でも、何種類ものソートアルゴリズムが詳細に解説される傾向にあります。記事でも、様々なソートアルゴリズムを一通り解説してみました。 しかしながら様々な種類のソートを勉強するのもよいが、「ソートの使い方」や

    ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita
  • ブロックチェ-ンを構築しながら学ぶ | POSTD

    ブロックチェ-ンの仕組みを知るには構築するのが最短の方法 この記事を読んでいるということは、仮想通貨の拡大に興奮しているということですね。ブロックチェ-ンの仕組み、背後にある基的なテクノロジーについて知りたいのでしょう。 しかしブロックチェ-ンを理解するのは簡単ではありません。少なくとも私にはそうでした。大量の動画の中をさまよい、抜けだらけのチュートリアルに従い、結局、実例が少なすぎてフラストレーションが大きくなりました。 私は手を動かして学ぶのが好きです。コードのレベルで内容を扱わざるを得なくなり、そうすることで身に付くからです。同じようにやってもらえば、この解説が終わる頃には、機能するブロックチェーンが出来上がり、どのように動くかがしっかりと把握できるようになるでしょう。 準備 ブロックチェ-ンとはブロックという名の 不変でシーケンシャルな 一連のレコードだということを覚えてください

    ブロックチェ-ンを構築しながら学ぶ | POSTD
    raimon49
    raimon49 2017/12/08
    休暇中に書いてみよう。
  • 画像処理入門講座 : OpenCVとPythonで始める画像処理 | POSTD

    この記事を書くに至ったきっかけ Recruse Centerでは、私は、画像処理の勉強に時間を費やしていました。独学をし始めた頃は、何をするものなのか全く理解しておらず、ただ、文字や輪郭、模様などを識別するのに役立ち、これらで面白いことができる、ということくらいの知識しかありませんでした。 私の情報源は、主にWikipediaや書籍、公開されている大学の講義ノートです。これらの資料に慣れ親しんでくるにつれ、画像処理の世界における基礎を伝えられる「入門向け画像処理」を望むようになりました。 これが、この記事を書こうと思ったきっかけです。 前提条件 この記事は、Pythonが扱えるということを前提に書いています。その他の事前知識は必要ありませんが、NumPyや行列計算に慣れていると理解しやすいでしょう。 初めに 使用するのは、PythonOpenCVPython 2.7 ^(1) 、iPy

    画像処理入門講座 : OpenCVとPythonで始める画像処理 | POSTD
  • scryptがGPUに破られる時 | びりあるの研究ノート

    一般的によく知られている SHA-256 や MD5 などのハッシュ関数は非常に単純な設計となっており、非力なパソコンや組み込み機器、スマフォなどでも高速に計算できます。 しかしながらその一方で、ハッシュ関数を手当たり次第に計算し、もとの入力値を復元するいわゆる「ブルートフォース攻撃」が容易であるというデメリットがあります。 特にこのような SHA-256 や MD5 といったハッシュ関数は、GPU を用いるか、もしくは専用のハードウェア (FPGA もしくは ASIC) を製作することで非常に高い効率で計算(攻撃)ができてしまうことが知られています。 そのため、GPU ないし専用ハードウェアを用いたとしても、攻撃効率の改善が難しくなるような新たなハッシュ関数がいくつか提案されています。 その中で比較的古く (2012年ごろ) に開発され、他のハッシュ関数にも影響を与えている「scrypt

    scryptがGPUに破られる時 | びりあるの研究ノート
  • 非同期処理の基礎

    MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。

    非同期処理の基礎
    raimon49
    raimon49 2014/05/12
    スレッドよりもタスクキュー。.NETの新実装Interlocked命令も。
  • Gitの「もしかしてコレ?」の実装を読む | Webシステム開発/教育ソリューションのタイムインターメディア

    疑問 Gitを使っていると時々コマンドを入力し損ねたまま実行してしまうことがあります。 この時、Gitは親切にも近い名前のコマンドを列挙してくれます: $ git clone git@github.com:git/git.git $ cd git $ git grep -n 'Did you mean' -- '*.c' help.c:385: Q_("\nDid you mean this?", help.c:386: "\nDid you mean one of these?", help.c:444: Q_("\nDid you mean this?", help.c:445: "\nDid you mean one of these?", sha1_name.c:1234: "Did you mean '%.*s:%s' aka '%.*s:./%s'?", sha1_name.c

    Gitの「もしかしてコレ?」の実装を読む | Webシステム開発/教育ソリューションのタイムインターメディア
  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

    raimon49
    raimon49 2013/11/16
    CPythonは参照カウント方式。その2には世代別GCの話題も。
  • プログラミング .NET Framework 第4版座談会でGCの話をしてきました - 銀の光と碧い空

    というわけで、GCの話をしてきました。自分にとっては、ここまで言語機能というかRuntimeの中身について話したのは始めてかなあという感じです。 発売初日に買って、今日までGCの章だけずっと読んでいました。 参考文献です。 プログラミング.NET Framework 第4版 (プログラミングシリーズ) 作者: Jeffrey Richter,藤原雄介出版社/メーカー: 日経BP社発売日: 2013/10/10メディア: 単行(ソフトカバー)この商品を含むブログ (4件) を見る C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) 作者: Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー,株式会社プロシステムエルオーシー出版社/メーカー:

    raimon49
    raimon49 2013/10/27
    ファイナライザとDispose、WeakReference
  • パスワード保存とソルトの話

    先日、twitterへのハッキング行為が発見された、という発表がなされました。一部のユーザのデータが漏洩したということです。 この件について個人的に懸念を感じたため、それをこちらに書いておきました。原文では encrypted/salted password と呼ばれていたものが、日語の公式ブログでは「暗号化されたパスワード」となり、これが朝日新聞では「パスワード」と表記されているという問題です。 専門知識があれば、ここにどういう違いがあるかはわかるのですが、そうでなければわからないのも無理はありません。しかし、わからないからといって省略して良いわけでもありません。パスワードと encrypted/salted password は大きく異なります。 ではどう違うのか? この話について、ひと通りの解説をしてみるのも良いのではないかな、と思ったのでしてみます。 「パスワード」は保存されない

    raimon49
    raimon49 2013/02/23
    非常に分かり易いソルトの解説と、それを報道しないことへの疑問の提示。良い記事。
  • ブラウザのしくみ: 最新ウェブブラウザの内部構造 - HTML5 Rocks

    How browsers work Stay organized with collections Save and categorize content based on your preferences. Preface This comprehensive primer on the internal operations of WebKit and Gecko is the result of much research done by Israeli developer Tali Garsiel. Over a few years, she reviewed all the published data about browser internals and spent a lot of time reading web browser source code. She wrot

    ブラウザのしくみ: 最新ウェブブラウザの内部構造 - HTML5 Rocks
    raimon49
    raimon49 2012/09/15
    レンダリングフロー、DOMツリーとスタイル解析、リフローの概要
  • uu59のメモ | Linkedinに学ぶウェブサービスのパスワード管理手法(saltとストレッチング)

    Linkedinがパスワード漏洩事件を起こしたわけですが、saltもストレッチングもせずベタにsha1したものを使っていたようです。様々な立場から様々な意見が考えられますが、ここではサービス運営者としてsaltやストレッチングをしていれば何がどうなっていたのかという点を考えていきます。 ちなみに、なんでもかんでも脆弱なパスワードを設定するユーザーが悪いと言うのはサービス提供者による責任転嫁だと考えていますので、提供者はたとえユーザーに脆弱なパスワードを設定されたとしても、可能な限りユーザーのパスワードが奪取される危険性を小さくする努力をすべきでしょう。 SHA1の計算 hashgpuによると、どこのご家庭にもあるような数千円のGPUを使えば秒間23億回の試行が可能らしいです。 ASCIIコードのうち制御文字以外の印字可能文字は95種あるので、任意の桁数のパスワードを解析するのに総当たりでど

    raimon49
    raimon49 2012/06/10
    sha1(user_input + db_stored_salt) * ストレッチングの必要性について。「123456」を例に。
  • 言語のGC機能と参照カウント (前編) - moriyoshiの日記

    たまにはちゃんと書いたほうがいいかなと思って書いてみる。 あらまし 原始的な参照カウントベースのガーベジコレクションは、循環参照が発生すると、その参照に含まれるオブジェクトを回収できないという厄介な問題を抱えている。循環参照とは、1つ以上のオブジェクトが環状の参照関係を形成している状態のことで、このような参照を持つオブジェクトは、やがてルート (ある時点で言語ランタイムが管理しているすべてのスコープと考えてもいい) から辿りつけなくなって、解放されずにリークしてしまう。 この問題はいろんな LL 言語に見られる。 Perl の場合 use Devel::Peek qw(Dump); sub make_circular { my $foo = {}; my $bar = {}; my $baz = {}; $foo->{'bar'} = $bar; $bar->{'baz'} = $baz;

    言語のGC機能と参照カウント (前編) - moriyoshiの日記
    raimon49
    raimon49 2012/04/05
    循環参照 参照カウント or mark and sweep