JavaScriptでコードを記述する際、配列の各要素について処理をするケースは頻出します。開発の現場で配列操作の処理を見ていると、次のようなケースがよくあります。 配列の非破壊の望まれる場面が増えているが、元の配列を破壊操作している filter()やevery()など配列のメソッドで書けるところを、forEach()メソッドやfor ... of文を使ってコードを記載し、冗長になっている 記述しても効果のないArray.from()を使用している コード的には問題なく、アプリケーションは意図的に動作しているかもしれません。しかし、冗長な記述は可読性が低下し、予期せぬバグを誘発する可能性があるでしょう。 本記事では、配列操作でよく見かける冗長な記述を、簡潔な記述で置き換える方法について解説します。 本記事で紹介するJavaScriptの配列操作のチートシートを用意したので、まとめて読みた
以下はDuomly ( Webサイト / Twitter )による記事、13 useful JavaScript array tips and tricks you should knowの日本語訳です。 Duomlyはプログラミング学習コースを提供しているWebサイトです。 ただランディングページにたいしたことが書いてないので、詳細はよくわかりません。 ここはもう少し書いておいてほしいところ。 13 useful JavaScript array tips and tricks you should know 配列はJavaScriptで最も一般的な概念のひとつであり、内部に格納されたデータを操作する手段は多数存在します。 配列はJavaScriptの最も基本的なトピックであり、プログラミング学習パスの最初に学習するものだという前提のうえで、この記事ではあなたが知らないかもしれない、しか
みなさん、 lodash で消耗してますか? 私は消耗しています。 なぜ lodash で消耗するかというと、とにかく思考停止でインストールされ、 node_modules 下で大量に重複します。サイズが大きいlodashが複数バンドルされてビルドされると、重篤なパフォーマンス上の問題を引き起こします。 lodash には実装上の問題もあり、異様に丁寧に、そして富豪的に作られており、その結果ビルドサイズが無駄に大きいです。丁寧に作られて入るのですが、現代のフロントエンド水準や一般的なポリフィルと噛み合っていません。というわけで、常々やめたいと思っています。 ちゃんとES201xを追ってる人からすると、ほとんどの lodash のメソッドは不要に見えるはずです。本エントリは、思考停止で lodash で実装しようとする人に、ちょっと考え直しては? と投げつける用の記事になります。 現代におい
PHP 7.0のリリースから約5年が経過し、そろそろPHP 8.0のリリースも見えてきました。人によっては使い始めて5年目になるはずのPHP 7.xですが、いまだに新しい発見があったりして面白いですね。 本稿ではPHP 7.0から入った定数配列に関する性能改善について紹介します。 PHP 5時代は配列の組み立てコストが大きかった プログラミング上のテクニックとして、辞書データを連想配列としてプログラム中に記述し、これを必要に応じて使うというものがあります。たとえば次のコード例を見てみましょう。このような連想配列を持っておけば、プログラム中で国名コードをを扱う際に実在するかをチェックしたり、国名の日本語表記に変換したりといった処理ができるわけです。 <?php $country_name = [ 'jp' => '日本', 'us' => 'アメリカ合衆国', 'ru' => 'ロシア連邦'
既に Stage 4 になっているので諦めていたんですが、流石に見逃せないかなと思ったので TC39 の Discourse にトピックをたててみました。意見がある方はこちらにお願いします。 https://es.discourse.group/t/fix-at/983 議論に伴って私が実際に欲しかったものをモジュールにして公開してみました。 https://github.com/petamoriken/safe-at それといまいちユーザーからの声が伝わっていない感じがしたのでハッシュタグ #fix_ecmascript_at を用意してみました。協力をよろしくおねがいします。 String#char{At, CodeAt} という存在を忘れてたんですが、この似た名前のメソッドたちが引数を整数に丸めるのに String#at が丸めないのはたしかに変だということに気づいてしまったので、自
JavaScriptでオブジェクトの配列を操作するためにもっとも有用な配列メソッドとコードを紹介します。 JavaScript Array Methods: A Comprehensive Guide by Luca Spezzano 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに filter()メソッド: オブジェクトの配列からキーstatusがactiveと等しいオブジェクトの配列を取得する find()メソッド: 配列内から特定のidを持つオブジェクトを検索する findIndex()メソッド: 配列内の特定のキーを持つオブジェクトのインデックスを検索する reduce()メソッド: オブジェクトの配列内にある特定のキーの値を合計する map()メソッド: オブジェクトの配列内に含まれる特定のキーに対応する一意
2021/04/20にリリースされたNode.js v16の主な変更点を紹介します。 nodejs.org M1 MacでもNode.jsが使えるようになります V8 v9.0 Atomics.waitAsync RegExp match indices Timers Promises APIが安定版になりました fs.rmdirのrecursiveオプションがDeprecatedになりました Node.js v15の機能がLTSとして使えるようになる 最後に 参考記事 変更履歴 M1 MacでもNode.jsが使えるようになります Node.js v16.0.0は、Apple Silicon、いわゆるM1チップと呼ばれるAppleの新しいチップに対応したNode.jsの実行ファイルが公式で配布される最初のバージョンになります。 v15.xでもソースコードからのビルドでM1 MacでもNo
はじめに ブンブン Hello world. どうもこんにちは。開発です。 前回「もし新人プログラマが「プリンシプル・オブ・プログラミング」を読んだら」の記事を書かせて頂いたあの開発です。 プログラマ界隈では「1年に1言語」とは言いますが、かくいう私も一念発起して新しい言語を学ぼうと思った次第でございます。 しかし、ただ学ぶだけではペースも落ちますし、やる気の上下も大きいと考えました。 そこで、”学んだ内容を記事にする”というタスクを自分に課すことで学習効率を無理やり持ち上げようと画策致しました 。 そんなわけで今回は、「新人プログラマがどのように未収得の言語を学習するか」について津々浦々と文字列を列挙したいと思います。 はじめに What's TypeScript 概要 JavaScriptとの違い 詳細 文法 型宣言 型推論 実際にやってみた 何はともあれ書いてみましょう 差分進化(D
計測方法は、(10**6).times{ }のような最小限のコードです。 実際、制限時間が2秒だとして、10の7乗台前後から、想定解法でも厳しくなってくる印象です。 それ以前の1,000,000回(10の6乗)で2秒超えてTLEするなら、自分の書いたアルゴリズムを疑いましょう。 今のC++は10の7乗だと「余裕をもって間に合う」レベルらしいので、C++と比べるとRubyは10倍遅い感じです。 競技プログラミングでは、問題に与えられた要素数も 方針・アルゴリズムを考えるヒントになるので、このあたりの感覚はもっておくとよさそうです。 高速化手法のまとめ・見方 先に高速化のまとめがあった方が親切かと思い、簡単にまとめておきます。 (まとめの方にしか書いてないのもあります……) 本記事は、アルゴリズムの話も少し混じっていますが、アルゴリズムはRubyに限らないので、ほぼ触れてません。 「アルゴリズ
To take a look at how rewrites look using regex or wildcard paths, take a look at this next.config.js file. Tip 3: Next.js Preview ModePreview Mode allows you to see a draft of your statically-generated content prior to publishing it to the web. Next.js has the ability to generate these draft pages at request time instead of build time so that developers can see what their content will look like w
If you’ve ever had the need to query or transform large amounts of JSON data, you’ve undoubtedly turned to the phenomenal and ubiquitous tool jq. Yet your first experience trying out jq was probably a bit challenging. Its syntax is powerful but also terse and arguably a little too clever. It’s kind of like a Unix pipeline but not really. Don’t get me wrong. jq is awesomely useful. But overall, it
fullstack TSなアプリケーションも増えてきた昨今、TSでvalidatorを実装する際に何を採用するかは一大トピックです。今回は、その中でも新しめなライブラリでありBlitzも採用しているZodについて見ていきます。 Zodとは Zodの特徴として、Schema firstなvalidationライブラリであるというのがあります。 validateするschema(単一のschemaからobject, arrayまで)を定義し、それをベースにparseするというものです。 公式にあるexampleを見てみましょう。 import { z } from "zod"; // creating a schema for strings const mySchema = z.string(); mySchema.parse("tuna"); // => "tuna" mySchema.p
// コンパイルエラー const numbers: NonEmptyArray<number> = []; // これはコンパイルが通る const numbers: NonEmptyArray<number> = [1]; const needNonEmpty = (arr: NonEmptyArray<number>) => arr.length const a: number[] = [1,2,3]; const b: NonEmptyArray<number> = [1,2,3]; const isNonEmptyArray = <T>(arr: T[]): arr is NonEmptyArray<T> => arr.length > 0; // コンパイルエラー needNonEmpty(a); // これはコンパイルが通る needNonEmpty(b); // これはコン
The common theme in many time-travel movies is to go back in time to find out what went wrong and fix it. Developers also have that desire to go back in time and find why the code broke and fix it. But, often, that crucial step where everything went wrong happened long ago, and the information is no longer available. The rr project lets programmers examine the entire life of a C or C++ program run
0.はじめに 競技プログラミングでは制限時間内に解を求めるようなプログラムが求められます。競技プログラミングでなくとも、必要に応じてプログラムを高速化したい場面は無数にあります。逐次処理のプログラムを並行化することで処理を高速化する、並行プログラミング/マルチスレッドプログラミングを活用できる機会は多いのではないでしょうか。1 本記事は Golang で逐次処理で計算できる処理を並行化/高速化することで、並行処理の威力や Golang の並行化の書きやすさを体感することを目標とします。 1.様々な計算の高速化 Go at Google: Language Design in the Service of Software Engineering にもあるように Golang の並行処理は CSP をベースにしており、並行処理が書きやすい言語と言えます。 Golang に組み込まれている g
NOTE(s): The article is in “draft” status. The content was originally written in 2017. The intended audience for this article is undergrad students or seasoned developers who want to refresh their knowledge on the subject. The reader should already be familiar with C (pointers, pointer functions, macros, memory management) and basic data structures knowledge (e.g., arrays, linked lists, and binary
Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.
はじめに デジタルイノベーション部の浅田です。 クラウドを利用した開発を行うにあたって、クラウドを上手く利用しようとすればするほど、ローカル開発環境と本番環境(クラウド環境)とでの実装方法の差分を少なくすることが効率的に開発を行う上で重要になってきます。 例えば、Amazon DynamoDBを利用してサービスを開発しようとすると、ローカル開発環境でどのように開発を進めるか?という課題が生まれます。DynamoDBであれば、ローカルのエミュレータが提供されているので、それを利用するという解決策が考えられます。 機械学習においても、ローカル開発環境と本番環境とのやり方を統一できたほうが、効率的に開発ができます。 その一つのやり方が、Amazon SageMaker(以下SageMaker)を利用することで、ローカル環境と本番環境とで差分の少ない、統一的な方法で開発することです。 また、機械学
If you transmit a number whereas an integer encoded on 64 bits is expected you will get an exception: let run = async () => { try { let bytecode = await fetch("add/add.wasm"); let wasm = await WebAssembly.instantiateStreaming(bytecode); console.log(wasm.instance.exports.addInt64(1,2)); } catch(e) { console.error(e); } }; > run().then(); TypeError: wasm function signature contains illegal type Call
開発方針 形態素解析器を開発するにあたり、既存のコスト計算済みのモデルを使用することも可能だったのですが、今回は実用的な形態素解析器を作るというよりは、Swiftの習得が目的であったため、できるだけフルスクラッチしてしまおうと思いました。誰に迷惑をかけるわけでもないので。 ゴールまでの道のりは、最終的に以下になりました。開発中は試行錯誤しながらだったので、前後しながら開発していました。先に進んでは、別のところに戻って再実装・テストを繰り返していました。 ・辞書 ・ダブル配列 ・学習データ ・ラティス構築 ・コスト計算 ・形態素予測辞書 形態素解析器を使用したことがある人は、ご存知だと思いますが、形態素解析器自体は辞書を内部で保持しているわけではないので、辞書を変更して使用することができます。よく使用される辞書としてはIPAdic・NEologd・UniDicなどがあり、どの辞書を選ぶかはそ
調べたのでメモ。 TypedArray TypedArray - JavaScript | MDN いわゆる型付き配列。 通常の配列と違って型が固定できる分、内部的に最適化がしやすいとか諸々で住み分けられてる。 そういう意味で一般的なフロントエンドのJavaScriptコードで出てくることはそうそうない。 たとえばWebAudioとか、CanvasとかWebGLとか、いわゆるバイナリに近い処理をブラウザでやる場合に必要になるAPIたち。 Node.jsだと、`Buffer`っていうそれ用のクラスがあったりする。 種類 Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array BigInt64Array BigUint64Arra
皆さんは JSON Schema 使ってますか? 現在では、Web APIのペイロード定義・検証、モックサーバー作成、ユーザー入力フォーム検証、設定ファイルのスキーマ定義・検証・IDEでのエラー表示など、多くの場面で、また多くの言語でライブラリが整備され利用されています。 JSON Schemaの強み Internet draftのフォーマットで仕様が公開されている 多くの言語での多くの実装(言語によっては複数)が存在する 1回書けば、フロントエンド、複数のバックエンドすべてで利用できる可能性が高い 代替実装が存在すると競争原理が働く JSON Schemaの嫌いなところ 見辛い 書き辛い 数行の小さなスキーマならばともかく、JSON Schemaって本当に苦痛。汎用のデータフォーマットを人が直接記述するレイヤーのDSLにするのは正直辛い。ヒューマンリーダブルだからといって人が読めるとは限
原文(投稿日:2020/05/19)へのリンク 新ライブラリのHegelは、JavaScriptで高度な静的型チェックを実現しようという試みだ。強い型推測と完全な型システムを提供するという。現在はまだアルファ版だが、専用のオンライン・プレイグラウンドで動作を確かめることができる。 Hegelは型アノテーションを備えたJavaScript用の型チェッカである。TypeScriptの場合のように、新たなプログラム言語構造を学ぶ必要はないが、アノテーション記法についての学習は必要だ。Hegelは強い、完全な型システム(Sound File System)を使うことで、実行時の型エラーを防止する。 const numbers: Array<number> = []; // HegelError: Type "Array<number>" is incompatible with type "Arr
GMO NIKKOのT.Iです。 今回は当社のTRUE データフィードで使用している正規表現検索の効率化についての記事となります。 前提(背景と目的) まずは宣伝(笑) 当社公式サイトでは上記となっていますが、簡単にいうと ・クライアントからデータを預かる ・預かったデータを広告媒体毎のフォーマットの変換する ・変換したデータを指定された場所に送信する ということをやっています。 その中のデータの変換時に禁止文言が入ったデータを行ごと除外するということをやっています。 大量のデータに禁止文言が入っているかをチェックする必要があるのですが、 初期想定では精々10万件に対して100~1000個の禁止文言をチェックする程度(1億回程度)で十分と判断していました。 ですが運用後に禁止文言が3万を超えてしまい、チェック処理が10万件×3万=30億回のチェックを行う場合があり、処理時間がかなり長くなっ
As one of the most popular programming languages and the staple of web development, JavaScript is constantly evolving and with each iteration it gets some fresh internal changes. Let’s check out some of the new proposed features of ES2019 that could soon find a way into our everyday code: Array.flat() You can now flatten nested arrays recursively up to a specified depth. The default value is 1 and
WordPress5.5.0から追加された新しい機能についてご紹介します。 この記事を執筆中のWordPressの最新バージョンは5.8.2なので、なんで今更と思われてしまうかもしれませんが、少し驚いた機能だったのでこうして記事にしてしまいました。 WordPressはXMLサイトマップを標準で出力する? しない? これまでWordPressではXMLサイトマップはそのままでは出力されませんでしたので、プラグインを利用したり、または自前で用意したりといったかたちで対応をしてきたと思います。あるとき、WordPressをいじっているとまだ準備していないはずのXMLサイトマップが出力されていることに気づきました。 WordPress5.5からはデフォルトでXMLサイトマップが出力されるようになっていたのです。それがどのような機能なのかを簡単に見ていきたいと思います。 XMLサイトマップには、設
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
The Rust team is happy to announce a new version of Rust, 1.53.0. Rust is a programming language that is empowering everyone to build reliable and efficient software. If you have a previous version of Rust installed via rustup, getting Rust 1.53.0 is as easy as: $ rustup update stable If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detai
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く