タグ String
人気順 10 users 50 users 100 users 500 users 1000 users【C#】文字列の最適化手法について - Annulus Games
今回はC# Advent Calendar 2024の20日目の記事です。テーマは文字列の最適化について。 C#において文字列を表現するstring型はクラスであり、生成のたびにヒープにアロケーションを行うためパフォーマンス低下の要因になりがちです。また、C#のstringの中身は歴史的経緯からUTF-16となっており、UTF-8を直接扱うことがで... 続きを読む
Next.jsのsearchParamsはas stringせずに必ずバリデーションしてくれ。またはvalibotのちょいテクニック
Next.jsのsearchParamsの型問題 Next.jsのsearchParamsの型は少々厄介です。searchParamsのドキュメントでは次のように型定義が記載されています。 export default async function Page({ searchParams, }: { searchParams: Promise<{ [key: string]: string | string[] | undefined }>; }) { const filters = (await se... 続きを読む
uniqueパッケージから学ぶinterningと弱参照
Asakusa.go#3(@ドクターズプライムさん)で登壇してきました! Go1.23で追加されたuniqueパッケージの内部実装をたどりながら、Goの言語特性や既に存在していた最適化について、新しく導入された弱参照について調べました。 発表内容 stringの割り当てと不変性、SSAによる最適化について学ぶuniqueパッケージの導入背景と... 続きを読む
<T, K extends keyof T> をちゃんと理解する
TL;DR TypeScriptでライブラリなどを覗いているとよく見かける<T, K extends keyof T>について、問題を分解してきちんと理解する試みです。 extends この場合のextendsの役割は継承ではなく、制約です。 例えば以下のようなイメージ。 type StringOrNumber<T extends string | number> = T type A = StringOrNumber<stri... 続きを読む
TypeScript 5.5で型述語を推論できて最高。配列のfilterも型安全に
結論を先に言うと、6月リリース予定のTypeScript 5.5で次のようなコードが型安全になります。 従来: TypeScript 5.4以前 function isNumber(value: number | string): value is number { return typeof value === 'number'; } const result = [12, null, 24, undefined, 48] .filter((value): value is number => value ... 続きを読む
JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStateme... 続きを読む
Node.js v20 から使える ECMAScript の新機能
Node.js v20 リリースされました。 V8 のバージョンが 11.3 まで上がったことで、いくつかの新しい ECMAScript の機能が使えるようになりました。v フラグが好きなのでうれしいです。 どのバージョンからどの機能が使えるようになったかとか忘れてしまうのでメモしておきます。 String.prototype.isWellFormed / String.... 続きを読む
PHPからJavaScriptにデータを受け渡すときに考えること - Qiita
PHPのstringは任意のバイト列を扱えますが、JavaScript/JSONはUnicodeで扱える文字しか扱えません PHPのint / floatはプラットフォーム依存ですが、JavaScriptのnumberは整数と小数を型レベルで区別しません JSONのarrayに対応する型はPHPのarrayのうちリストであるものです PHPは配列(リスト)と連想配列を型レベルで区... 続きを読む
ニッチなRustのNicheについて - Qiita
u8 no: 1 opt: 2 opt2:2 core::num::nonzero::NonZeroU8 no: 1 opt: 1 opt2:2 alloc::string::String no: 24 opt: 24 opt2:32 Optionが増えているのにsizeが変わっていないことがある! これはRustのniche optimizationが働いているからである。 niche nicheとはもともと「隙間」という意味がある。 Rustはその「隙間」... 続きを読む
char* を Go の string に変換するテクニック
はじめに Go には cgo と呼ばれる、Go からC言語を扱う為の機能があります。go build を実行すると、内部でC言語のコンパイラが実行され、ソースの一部が Go に取り込まれます。 cgo とは まずは以下を見て下さい。 //go:build ignore // +build ignore package main /* int add(int a, int b) { return a + b; } */ imp... 続きを読む
TypeScriptにおける配列の共変性
const animal: Animal = { animal: "string", }; const dog: Dog = { animal: "string", dog: "string", }; いま,Dog <: Animalです. <:という記号は2つの型のあいだに書いて,「左の型が右の型のサブタイプである」と読みます. TypeScriptの型システムは構造的なので,2つのオブジェクトがサブタイプ関係にあるには... 続きを読む
【オブジェクト指向プログラミング】誰のもの?で理解するインターフェース
前置き 背景 オブジェクト指向プログラミングのインターフェースについて、以下のような例で学んだ方は多いのではないでしょうか。 public interface Animal { void bark(); } public class Dog implements Animal { void bark() { System.out.println("ワン"); } } public static void main(String[] args){ Animal ani... 続きを読む
input[type=number] のステートを安易に number 型にしない - fsubal
#フロントエンド #TypeScript #React TL;DR input[type=number] には空文字とかも入力できるので、string 型で状態管理をしないと意図しない動きをすることがある ステートの型を縛るより input の value に渡るまでの実装を工夫する方が良い --- input[type=number] のステートを安易に number 型にするとだいたい後悔... 続きを読む
TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)
TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に... 続きを読む
TypeScript で string 型の値に自動補完を効かせる: Days on the Moon
結論 type X = 'foo' | 'bar' | (string & {}); のように、文字列リテラル型の共用体型に | (string & {}) を付け足した型 X を定義します。X 型は任意の文字列を受け付けますが、IDE (Visual Studio Code など) で X 型の値を入力するときには 'foo' と 'bar' が自動補完の候補として提示されます。 解説 単純に type X... 続きを読む
東京大学、Pythonプログラミング無料入門 pandasやJupyterなど幅広い | Ledge.ai
画像は公式サイト(HTML)より 今回は東京大学(東大)が無料公開している、Pythonの初心者にもオススメの教材「Pythonプログラミング入門」を紹介する。SNS上では「ホントいい」「初心者にもわかりやすい」などと評判になっている。 本教材では「Colaboratoryによるノートブックの使い方」「文字列(string)」「条件分... 続きを読む
Vue 3 Composition API: ref() vs. reactive() - Markus Oberlehner
One of the first questions that arise when starting with the new Vue Composition API is ref() or reactive()? The initial instinct is to use ref() for primitives (Boolean, String,…) and reactive() for objects. But there is more to it. When to Use ref() and When to Use reactive()?The Downside of Us... 続きを読む
ジェネリクス引数の構文的曖昧性まとめ
ジェネリクスを持つ多くの言語では括弧の種類が足りなかったり、既存の文法との互換性を保つために <> をジェネリクス引数に使っている。この文字は比較演算子やシフト演算子にも使われるため、多くの場合は構文的曖昧性の問題がある。 // ジェネリクス引数 (convert<int, string>(number)) // 比較演算子 (score < MAX_... 続きを読む
TypeScriptの型定義からバリデーションコードを生成するツールを書いた | Web Scratch
create-validator-tsというTypeScriptの型定義からJSON Schemaを使ったバリデーションコードを生成するツールを書きました。 モチベーション expressなどでAPIを書くときに、Request/Responseが意図したものかどうかをバリデーションする必要があります。 特にreq.queryなどはStringが入ると予想しますが、オブジェクト... 続きを読む
Template Literal Types で「単位を持つ数値」の文字列型をきれいに扱いたい
(この記事には一部うまくいってない部分が残ってるので、解決し次第追記します) ブラウザの二次元上の座標を計算するコードを書いていると、 px, rem, flex などの数値が入り乱れて、それらを文字列で管理してると扱いが難しくなります。また、ブラウザの DOM API は、コンテキスト次第で string | number みたいなノリ... 続きを読む
TypeScriptのユニオン型で「あるかもしれない」プロパティを表現するときのTips - uhyo/blog
TypeScriptのユニオン型はとても強力な機能で、TypeScriptのコードベースでは広く利用されています。 例えば、次のようにすると「fooプロパティを持つオブジェクトまたはbarプロパティを持つオブジェクト」という型を表現できます。 type FooObj = { foo: string }; type BarObj = { bar: number }; type FooOrBar = Foo... 続きを読む
AWS CDKでAWS Systems Manager パラメータストア及びAWS Systems Managerからパラメータを取り込む方法 | Developers.IO
valueFromLookup このメソッドを使うと生成するテンプレートにパラメータストアに格納されていたStringを転記します。テンプレートに転記する為、SecureStringに対して使用する事ができません。SecureStringに対して使用できてしまうと、CloudFormationに対する読み取り権限があれば誰でもテンプレートを閲覧する事で内... 続きを読む
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成 | Cygames Engineers' Blog
Cy#の河合です。今回、文字列生成におけるメモリアロケーションをゼロにする「ZString」というライブラリを公開しました。そこで、この記事ではZStringの紹介の他に、あらためてC#の文字列についてを深く分解して解説し、Stringの複雑さと落とし穴、そしてZStringの必要性について解説します。 [GitHub – Cysharp/ZStrin... 続きを読む
nilがnilじゃないのでerrorになるのを静的解析で検出する - Qiita
package main import "fmt" type MyErr struct{} func (*MyErr) Error() string { return "MyErr" } func F1() *MyErr { return nil } func F2() error { return F1() } func main() { err := F2() if err != nil { fmt.Println("Error!") } } F1()がnilを返しているのでF2()もnilを返すのですが、返ってきたerrはnilに... 続きを読む
TypeScriptのMap<K, V>をJSON.stringify()に食わせると空のオブジェクトになって困るんですけどって時 - その手の平は尻もつかめるさ
(TypeScriptに限らずJavaScriptでもだいたいこのような感じだと思いますが) 例えば以下のようなコードを書くと,出力としては {"body":{}} が得られます. const body = new Map<string, string>().set("foo", "bar"); console.log(JSON.stringify({body})); 本当は {"body": {"foo": "bar"}} のような構造がほしいと... 続きを読む