Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
![JVMの比較を目的とする新しいパフォーマンスベンチマーク”Renaissance”](https://cdn-ak-scissors.b.st-hatena.com/image/square/1dea079f3c8eee49f636638a061b722d42b294d5/height=288;version=1;width=512/https%3A%2F%2Fcdn.infoq.com%2Fstatics_s1_20240521072209%2Fstyles%2Fstatic%2Fimages%2Flogo%2Flogo-big.jpg)
In a previous post I introduced the MNIST dataset and the problem of classifying handwritten digits. In this post I’ll be using the code I wrote in that post to port a simple neural network implementation to rust. My goal is to explore performance and ergonomics for data science workflows in rust. The Python Implementation Chapter 1 of the book describes a very simple single-layer Neural Network t
暗号解読 | サイモン・シン | Amazon サイモン・シンの「暗号解読」を読んでいたら、エニグマの仕組みについて説明があり、意外と実装できそうだったので作ってみた。 ソースコードは GitHub にあげています。 ※以降、識別がしやすいように平文は小文字、暗号文は大文字で表記している 単一換字式暗号 エニグマは、キーボードで入力された1文字を別の1文字に変換して暗号化する。 このように入力された文字を別の文字に変換する暗号を換字式暗号という。 同じ換字式暗号としては、シーザー暗号が有名。 シーザー暗号では、文字を一定数だけずらすことで暗号化する。 たとえば、3文字ずらすシーザー暗号では、「a -> X」「b -> Y」「c -> Z」「d -> A」のように文字を変換する。 3文字ずらすシーザー暗号の変換表 変換表が一種類しか存在しないので、シーザー暗号のような暗号は単一換字式暗号と呼
所有権(ownership)と借用(borrowing)とライフタイム(lifetime)はRust特有の言語仕様として有名である。 Rustではガベージコレクション(GC)を使用せずにメモリ安全性を確保するために所有権と借用とライフタイムの仕様を採用している。 この機構によって、Rustではプログラマが変数の値が有効である範囲を意識する必要がある代わりに、GCに関する実行時のオーバーヘッドがなくともメモリ安全でありスレッドセーフであるプログラムを記述することができる。 一方で、所有権は「『変数が値の所有権を持っている』というのは結局何のことなのかわからない」という混乱を生む要因でもある。 単純に考えると、変数に値が入っているのだから、変数が値を持っているのは当然のことのように思える。 そうすると、「値の所有権を持つ」とは一体何のことを言っているのかがはっきりとしなくなってしまう。 この混
弊社では「筋肉の人」*1として知られるRichard FeldmanはElmの創造神ことEvan擁するNoRedInkに所属するエンジニア。 Evanが比較的キーノート的なElmの未来やらビジョンを語るトークをする一方で、RichardはどちらかといえばElmをプロダクションで使うにあたって、どのように書くことでスケーラブルにできるか、のようなはなしをメインに据えている感じがある。 彼はアメリカで開催されているelm-confや、ヨーロッパのelm Europeなどで割と長尺のトークを務めることが多く、その内容もElm中上級者になるにはうってつけの内容ばかり。どのトークもElmの基礎的な文法や紹介は完全に端折られていて、Elmを使うこと前提でどのようにうまく使うかにフォーカスしている。 彼の動画は会社のElmメンの会(?)の中で一気に集中して見たことがあり、僕含めみんなにとって非常に学びが
概要: 生存期間の関係で、ループでは書けないが末尾再帰では書けるアルゴリズムの例を挙げる。 単方向リンクリスト 次のような単純なリンクリストを考える。 struct List<T> { root: Option<Box<Node<T>>>, } struct Node<T> { value: T, next: Option<Box<Node<T>>>, } backの実装 単方向リンクリストの末尾要素の取得は O(n) である。これは次のように書くことができる。 impl<T> List<T> { fn back(&self) -> Option<&T> { let mut node = if let Some(ref b) = self.root { b.as_ref() } else { return None; }; while let Some(ref b) = node.next
追記(2019/11/2) 今回の記事で深く扱えなかったリファクタリングに関する記事を書きました。 「汚いコード、綺麗なコードって何?」リファクタリングを考えてみる テスト駆動開発とは テスト駆動開発とは、「テスト => 実装 => リファクタリング」という流れを何回も何回も繰り返してプロダクトを成長させていく開発手法です。 もう少し詳しく説明します。次の3段階を繰り返します。 1. テストケースを考えるフェーズ これは設計を考えることに等しいフェーズです。このオブジェクトがどんな機能を持っていて欲しいか、どういう風に使われるか、そしてその時にどんな結果を返して欲しいか、という思いをテストケースに込めます。 重要なのはこの時に実装のことは一切考えず、どう使われるかを考えることです。 2. 実装するフェーズ テストをパスするためだけの最低限度の実装をします。この時も抽象化やキレイなコードなど
Slack アプリフレームワーク Bolt for JavaScript を Cloud Functions for Firebase で動かそうSlackslackbotBoltslack-api 重要なお知らせ Bolt for JavaScript を Google Cloud Functions や AWS Lambda で Bolt アプリを動かす際は以下のような問題に当たる可能性があります。 FaaS 全般に関する課題 FaaS での Events API 利用に関する課題 シンプルな応答をするだけのアプリであればおそらく問題なく動かすことができますが、Events API のハンドリング、非同期処理の開始を含むアプリの場合はご注意ください。 2020 年 6 月更新:Bolt for JS v2 から processBeforeResponse というオプションが導入されまし
Markdownというマークアップ言語がエンジニア界隈で広く使われている。もともとはHTMLをもっと簡単に記述したいという意図で開発されたものだそうで、<h1>タイトル</h1>と書くかわりに# タイトルと書けたりするので、記述が少し簡単になるというメリットがある。太字(<b>)やリスト(<ul><li>)なども簡単に書ける。 Markdownに慣れたエンジニアがよく「何故ScrapboxはMarkdownを採用しないんだ」と言ってくる。「Markdownを採用しないとか馬鹿じゃないの?」とまで言う人もいる。こういう人々は完全にMarkdown脳というか、自分がタマタマ慣れているものがサイコーだと考えているだけに思える。 ScrapboxのようなWikiで一番大事なのはページ間リンクの記述であり、ここに[...]という単純な記法を使っているためMarkdownとは異なる記法になっているのだ
2019年6月29日に開催されたCivic Tech Forum 2019の資料です。
Alternatives 結局 WebSocket が TCP に縛られていなければ良いのではという点に注目すると、 WebSocket over HTTP/3 が実現できれば HoLB などの問題は解決しそうだ。 しかし、仮にそこに複数のストリームを束ねようとしても、 WS の特徴上ストリームごとに 1RTT のハンドシェイクが必要となる。また、サーバから Stream を開始することができない(本当にそれが必要なのかは疑問だが)という問題があげられている。 また、 WebRTC の文脈で進んでいる RTCQuicTransport が、非常にというかあるケースではほぼ同じことを提供することになる点が指摘される。(策定者も同じ) これもやはり、 WebRTC が P2P 前提の仕様でスタートした点と Client-Server ユースケースとの乖離をベースに説明されており、すでに RTC
はじめに Reactを中心としたフロントエンド開発において、以下のような構成を見かけることが多いと思います。 UIライブラリとしてReact 型のある言語としてTypeScript スタイル定義としてstyled-components コンポーネントの開発環境としてStorybook LinterとしてESLint FormatterとしてPrettier この記事では、各種ライブラリについて紹介したのち、それらを使う場合の環境構築についてハンズオン形式で説明します。 ※ アプリケーションを開発する際に必要になる設定が抜けていたので、追記しました。 各種ライブラリの紹介 まず、各ライブラリがどのようなものなのかを簡単に紹介します。 ライブラリの使い方などは公式ドキュメントなどを参照するようにしてください。 ドキュメント ReactはUI(ボタンやフォームなど)コンポーネントを作成するための
はじめに 先日、エンジニアの能力と今どきの難しさというタイトルの記事(2018年)を読んで、「これはほんとにその通り」と思う一方で、具体例がないためにピンと来ない人や、マウント取りではという意見も多数見られた。というわけで、自分が比較的得意な、プログラミング言語の構文解析といった分野に関して、この記事の言わんとしていることを補足するような記事を書こうと思い至った。 記事中では、エンジニアに必要な知識や経験を、「ベース」「カテゴリ」「実行環境」という形(以下)に分けて論じている。 ①ベース コンピュータサイエンス(CS)などの理論的なもの 低レイヤー ②カテゴリ フロントエンド / バックエンド / クライアントアプリなど ③実行環境 特定のプログラミング言語や開発環境やツール、フレームワークやライブラリなど この中で、特に印象的であり、かつ「よくわかる」と思ったのは以下の記述だ。 ③は比較
あと、S3のバケットも準備しておきます ソース フォームデザインは↓こんな感じ IDとパスワードを入力して、Loginボタンを押すと何かが起こる感じにしておきます。 Loginボタンクリック時は非同期で実行します。 /* ここで使う変数 wwRegion :: Cognitoのリージョン wwUserPoolID ::CognitoのユーザプールID wwAppClientID ::CognitoのアプリケーションクライアントID txtID.Text ::フォーム上のIDテキストボックス txtPass.Text ::フォーム上のPasswordテキストボックス wwIdPoolID ::CognitoのIDプールのID wwS3BucketName::S3バケット名 */ private async void btnLogin_ClickAsync(object sender, Eve
Metric Learning について Metric Learning は、データの教師情報を基にデータ間の距離や類似度などの Metric を学習する手法です。日本語で手軽に読める記事だと、*1, *2 などが詳しいです。 このたび、phalanx さんの tweet *3で、 Metric Learning の基礎的なアルゴリズムのいくつかが scikit-learn-contrib *4に搭載されていると知りました。 本記事では、scikit-learn-contrib の metric-learn パッケージを用いて、簡単にMetric Learning を試します。 インストール README や PyPI *5 に記載のある通り、次の通りにインストールします。 pip install metric-learn 利用するデータセット 今回は、sklearn に含まれている lo
Git開発チームの濱野純氏は8月16日(現地時間)、分散型バージョン管理ツール「Git」の最新版「Git v2.23.0」をリリースしたことを発表しました(Phoronix、GitHub Blog)。 Git v2.23.0はv2.22.0以来、新規26人を含む77人のコントリビューターによって作成された505個の非マージコミットで構成されるリリースで、多数の新機能の追加や修正が行われています。 最も注目の新機能は「git switch」および「git restore」コマンドの追加です。2つのコマンドはこれまで「git checkout」にまとめられていた操作をブランチの変更とファイルを変更する操作に分離することを目的とするものです。 新コマンドの具体例などはGitHub Blogで説明されています。またその他サブコマンドの修正など、新機能の詳細はアナウンスに含まれるリリースノートで確認
40ギガのピカチュウ画像をやりとり、社内データはテラバイト級――ポケモン社が「Box」「Googleドライブ」を使い分ける理由(1/2 ページ) 「ポケットモンスター」シリーズの版権管理を手掛ける「株式会社ポケモン」(以下「ポケモン社」)。ピカチュウなどおなじみのキャラクターが米Nianticの「Pokemon GO」など他社のゲームに登場するのは、ポケモン社がIPを提供しているためだ。同社は他にも多様なパートナー企業と組み、ポケモンを起用した商品・サービスの展開を支援している。だが、保有するポケモンの画像・動画のデータ量が膨大であるため、共有や管理に苦労する場合が多いという。 40GBのピカチュウ画像をやりとり ポケモン社テクニカルディレクターの関剛さんは、Box Japanがこのほど開いた年次カンファレンス「Box World Tour Tokyo 2019」に登壇し、「キャラクターご
はじめに この記事では、UnixのプロセスのことやUnix環境のことについてチョットワカッタ気持ちになっていただくことを目的に、RubyをつかってUnixプロセスについて触れていきます。読み終わったあと、チョットワカッタカモという気持ちになっていただけたり、著者が訳者として関わっている『なるほどUNIXプロセス』を手に取ってもらえたりすると幸いです。 なお、この記事の内容は、オープンソースカンファレンス2015 Hokkaido での jus 研究会で行った発表内容をまとめ、原稿におこしたものになります。 それでは、さっそく本題に入っていきましょう。 コマンドを実行する ふだん、みなさんは作業中にターミナルからたくさんのコマンドを実行しているはずです。まずは、この「ターミナルからコマンドを実行する」ことについて見ていきましょう。 コマンドとプロセス Unixでは、あらゆるコマンド、プログラ
github.blog GitHub Actions の新バージョンが 8/8 に発表されました。 www.kaizenprogrammer.com 自分は過去にも旧バージョン時に GitHub Actions の入門記事を書いていたのですが、新バージョンがこれまでと大きく変わってしまっているので、この記事ではあらためて GitHub Actions についていろいろ調べたり動かしてみたりした内容をまとめます。 目次 注意事項 GitHub Actions とは これまでの GitHub Actions とどこが変わったか コンセプト マルチプラットフォーム対応 HCL から YAML へ 料金 その他 GitHub Actions と Azure Pipelines 簡単な例 (Hello, World) ワークフローの設定 ワークフローとは ワークフローを実行するイベント ワークフロー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く