タグ

ブックマーク / zenn.dev (272)

  • 現代暗号とP≠NP予想

    この記事は? 現代暗号とP≠NP予想は切っても切り離せない関係にあります。それがどういうことなのか?を解説しようと思います。 RSA暗号やPythonなどがでてきますが、詳しくなくても読めると思います(たぶん) P≠NP予想 P≠NP予想 はミレニアム懸賞問題のひとつで、重要な未解決問題です。以下のP問題とNP問題が果たして、P=NPなのかP\neq NPなのかを問う問題です。 P(Polynomial Time) ある判定問題がPに属するなら 多項式時間で解くことが出来る。 同値な定義として、決定性チューリングマシンで多項式時間で解くことが出来る。 NP(Non-Deterministic Polynomial Time) ある判定問題がNPに属するなら 問題に対する証拠wが与えられたとき、その証拠wが当に正しいかどうかを多項式時間で判定できる。 同値な定義として、非決定性チューリング

    現代暗号とP≠NP予想
    mizchi
    mizchi 2020/09/28
  • blitz-js prisma rails 倒し方

    この記事の内容 blitz-js が生まれた背景 prisma の紹介 blitz で簡単なブログを作ってみる blitz を vercel にデプロイしてみる tldr blitz-js は next.js + prisma で rails を再現しようとしているフレームワーク Prisma ORM それ自体が良い。blitz の理解のためにも、まず Prisma を学べ blitz-js 自体はまだ α 品質だけど、今から注目しておく価値はある。デファクトになるかは不明。思想は継承されそう。 はじめに next.js はとても良いフレームワークだが、永続層を持たない。なのでフロントエンドとフロントサーバーに閉じている。 永続層、つまり DB を持たないので、初学者や流行りのプログラミングスクールの教材に選ばれない。また、JavaScript の学習資料が散らばっている。 要は Rail

    blitz-js prisma rails 倒し方
    mizchi
    mizchi 2020/09/28
    書いた
  • マルチスレッド・プログラミングの道具箱

    まえがき クラウド上の仮想サーバから手元のスマートフォンまで、いまや複数のCPUコアを搭載するマルチコアはどこにでもある環境になりました。ハードウェア側が並列(Parallel)・並行(Concurrent)処理に向けて急速に進化する一方で、ソフトウェア側つまりプログラミング言語の進化はさほど追い付いていません。並行処理記述の手軽さを求めた Go言語 や、マルチスレッド処理の安全性を重視する Rust言語 などが登場してはいるものの、「普通にプログラムを記述するだけで複数CPUコア環境で高速に走るプログラミング言語」は遠い夢物語のままです。 モダンなプログラミング言語や並列・並行処理ライブラリは、複雑で難解なマルチスレッド処理を直接記述しなくてすむよう、安全性・利便性の高い抽象化レイヤを提供します(例:Go言語のgoroutineとchannel、Rust言語の Rayonライブラリ)。し

    マルチスレッド・プログラミングの道具箱
    mizchi
    mizchi 2020/09/28
  • Webアクセシビリティ難しすぎる問題

    はじめに 私はデザイナー兼フロントエンドエンジニアというような立ち位置で、勤務するfreee株式会社のアクセシビリティガイドラインの作成に関わったり、アクセシビリティまわりの仕組みの整備や社内エバンジェリストみたいなことをしています。 もともと私はWebアクセシビリティという分野が、重要なものである以上に技術や考え方として面白いと思ってやっているうちに気付いたら仕事で大きなウェイトを占めるようになってしまったタイプの人です。しかし、そうではない人たちにその重要さを説明したり、対応をお願いしたり、そのための資料を作ったりしているうちに、「やっぱWebアクセシビリティって難しいんだなぁ」と思うようになってきたので、それについて書いてみようと思います。 なお、背景を説明するうえで必要なので社名を出しましたが、あくまでこの文章は個人の見解であり、所属組織とは関係がありません。 誰のためにやるのかが

    Webアクセシビリティ難しすぎる問題
    mizchi
    mizchi 2020/09/27
  • テクニカルサポートに的確に問い合わせる技術

    テクニカルサポートを活用するために はじめまして、ひよこ大佐と申します。Red Hatという会社でAnsibleのテクニカルサポートエンジニアをしています。 我々テクニカルサポートエンジニアがどのようなことをしているのかは、以下の登壇資料にまとめていますので、一読いただければ幸いです。 何かサービスや製品を使用していると、問題に遭遇することがあります。設定方法が不明だったり、思ったような挙動にならなかったり、サービスが停止してしまうケースもあります。そのような場合に一生懸命がんばって自己解決しようとしても、運用担当者だけではうまくいかないことも多々あります。 そのような場合でも、テクニカルサポート窓口に相談し、サポートスコープの範囲内で支援を受けることができます。しかし、適切な問い合わせ方を知らないと問題解決まで時間がかかってしまったり、支援を断られたり、うまくコミュニケーションが取れずに

    テクニカルサポートに的確に問い合わせる技術
    mizchi
    mizchi 2020/09/27
  • 古典的ゲームループからECSアーキテクチャまで

    はじめに ゲームエンジンアーキテクチャ、というと代表的名著と被ってしまって畏れ多いのですが、昨今のゲームエンジンがどのような経緯でアーキテクチャの形を変えていったのか、まとめたくなったのでまとめたものです。 ゲームループとオブジェクト どんなゲームでも「状態更新・描画」のループ構造を持ちます。 ゲーム中に出てくる要素を「ゲームオブジェクト」という形で表現して、このループ構造を再利用しようとしたのが、ゲームエンジンの始まりと言えます。 Window window; std::vector<GameObject> objects; while (window.draw()) { for (auto&& obj : objects) { obj.update(); } } これであなたもゲームエンジンの開発者です。おめでとうございます! 継承と包含 ゲームオブジェクトというのは偉大な発明ですが、

    古典的ゲームループからECSアーキテクチャまで
    mizchi
    mizchi 2020/09/26
  • React17におけるJSXの新しい変換を理解する

    今日発表された公式ブログの記事によれば、React17では新しいJSXの変換がサポートされます。これはどういうことなのか、我々にどういう影響があるのかをまとめました。 JSXの変換とは ほとんどの人は、Reactを使う際に以下のようなJSX記法を使っているはずです。具体的には次のようなもので、<div>のようなHTMLに近い記法がJSXです。 const Foo = () => { return <div> <p id="a">I am foo</p> <p key="b">I am foo2</p>> </div>; } これらは純粋なJavaScriptではないため、そのままでは実行できません。そのため、何らかの方法でただのJavaScriptに変換する必要があります。現代では、それを担うのはBabelやTypeScriptです。これらによって、上記のJSXを含むコードは次のように変換

    React17におけるJSXの新しい変換を理解する
    mizchi
    mizchi 2020/09/23
  • 有料記事の技術ライターで食っていけるか

    2020年版: なぜ仮想 DOM / 宣言的 UI という概念が、あのときの俺達の魂を震えさせたのか | Zenn という記事を500円で販売しました。その経緯と現時点での結果について。 なぜ書いたか Qiita の開発から離れて久しいのですが、 もし Qiita で有料記事を出せたらどういう体験になるんだろう、というのは当時からずっと考えていました。 zenn に搭載された Qiita にはない機能を使うことで、それを感じてみたかった、というのが一番の理由です。 優れたプログラマ、そして優れた書き手には相応の対価があるべきです。 オープンなコミュニティでは、それが称賛や承認となって返ってきますが、人間はそれだけでは生きていけません。 今までのエンジニア界隈では伝統的にオープンなコミュニティで稼いだ名声を使って、良い企業への転職で高い給与をもらう、というのが今までの実質的な「稼ぎ方」でした

    有料記事の技術ライターで食っていけるか
    mizchi
    mizchi 2020/09/22
    書いた
  • 僕らは何故Kubernetesを使うのか

    最初に お仕事で「Kubernetesはいいので、次のプロジェクトで使いたい」と言うと 「何がいいんですか?」とか「何ができるの?」とか聞かれてうまく答えれない事がまぁまぁあったので自分なりにKubernetesがなぜ生まれたのか、なんで使いたいのかと何ができるかをまとめてみた リソース調達の歴史から見るKubernetesが現在の地位につくまで リソース(アプリケーションを動かすためのサーバなど)調達の視点から、Kuberenetes誕生までを見ていきます。 物理サーバを調達する時代 原初のアプリケーション開発では、アプリケーションを開発してキャパシティを予測して、リソース見積もりを行い、サーバ購入を行っていました。 この方法では以下のような課題がありました。 リソースを用意するのに、数週間から数ヶ月かかる サーバを注文してから、到着するまでの時間もかかりました。 またその前のリソース見

    僕らは何故Kubernetesを使うのか
    mizchi
    mizchi 2020/09/21
  • zenn で有料記事を作ってみた感想

    zenn 体へのフィードバックです。 この記事を書いた感想です。 Article で有料にしたい note などで有料記事を書く場合のテンプレートはほぼ決まっています。 前書き 無料公開範囲 有料公開範囲 です。今回は Book の作法に則り分割しましたが、煩わしかったので、このテンプレートで有料記事を作れると楽です。 有料記事を買われた際は push 通知してほしい serviceWorker の push notification で通知してほしいです。これでかなりモチベーションを刺激することができると思います。普通に作るとうざい機能ですが、この用途ならアリだと思います。 未決済の金額で他人の記事を買いたい 法律関係で難しいと思いますが、自分の口座と紐付けてお金をおろすのが面倒に感じたので、その場で全部散財できないか考えました。無理でした。 あるいは、金の代わりに貯めた Like で

    zenn で有料記事を作ってみた感想
    mizchi
    mizchi 2020/09/20
    書いた
  • 2020年版: なぜ仮想 DOM / 宣言的 UI という概念が、あのときの俺達の魂を震えさせたのか

    記事は、 「なぜ仮想 DOM という概念が俺達の魂を震えさせるのか」 https://qiita.com/mizchi/items/4d25bc26def1719d52e6 の 2020 年版のリライトです。 2014 年当時、日においては React は未だ知る人ぞ知るライブラリ、という位置づけでした。それが、この記事によって一気にメジャーになったように思います。 オリジナルは2014 年末の情報によって書かれたもので、さすがに 6 年経った今では情報が古くなっており、当時の暗黙のコンテキスト、古いリソースの参照、初学者の混乱を招く表現が残ったままになってしまっています。 定期的に更新しようとも思いましたが、そうすると 2014 年末の歴史的な背景を失ってしまうため、あえてそのまま残し、新しい記事を投稿することにしました。増補改訂版というより、ほぼ書き直しです。 この記事は来なら

    2020年版: なぜ仮想 DOM / 宣言的 UI という概念が、あのときの俺達の魂を震えさせたのか
    mizchi
    mizchi 2020/09/20
    zenn で500円の有料記事書いてみた。魂震えるやつのリライト版です
  • Zennを支える技術とサービス構成

    Zennという技術情報共有サービスを作りました。有益な知見をシェアした開発者が、その見返りを得られるようなサービスにしたいと思います。気合いを入れつつも、時間をたっぷりかけて地道に育てていきます。 このページでは、Zennを支えている技術やサービスを紹介します。 フロントエンド Next.js フロントエンドにはNext.jsReact)を使っています。開発当初はNuxt.jsを使っていたのですが、TypeScriptとの相性を考えてNext.jsへ移行しました。 技術情報共有サービスなので、主要な流入元はいずれ検索エンジンに落ち着くと予想しています。そのため、検索エンジンにインデックスしてもらいたいページはサーバーサイドレンダリング(SSR)しています。 動的コンテンツもキャッシュ Next.js 9.4からIncremental Static Regenerationという最高の機能

    Zennを支える技術とサービス構成
    mizchi
    mizchi 2020/09/18