はてブログ

はてなブックマーク新着エントリーの過去ログサイトです。



タグ String

新着順 人気順 5 users 10 users 50 users 100 users 500 users 1000 users
 
(1 - 25 / 84件)

【C#】文字列の最適化手法について - Annulus Games

2024/12/20 このエントリーをはてなブックマークに追加 14 users Instapaper Pocket Tweet Facebook Share Evernote Clip Annulus Games 文字列 最適化手法 ビーフ UTF

今回はC# Advent Calendar 2024の20日目の記事です。テーマは文字列の最適化について。 C#において文字列を表現するstring型はクラスであり、生成のたびにヒープにアロケーションを行うためパフォーマンス低下の要因になりがちです。また、C#のstringの中身は歴史的経緯からUTF-16となっており、UTF-8を直接扱うことがで... 続きを読む

Next.jsのsearchParamsはas stringせずに必ずバリデーションしてくれ。またはvalibotのちょいテクニック

2024/11/18 このエントリーをはてなブックマークに追加 21 users Instapaper Pocket Tweet Facebook Share Evernote Clip Valibot undefined Promise 型定義

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と弱参照

2024/09/15 このエントリーをはてなブックマークに追加 10 users Instapaper Pocket Tweet Facebook Share Evernote Clip SSA 不変性 内部実装 導入背景 最適化

Asakusa.go#3(@ドクターズプライムさん)で登壇してきました! Go1.23で追加されたuniqueパッケージの内部実装をたどりながら、Goの言語特性や既に存在していた最適化について、新しく導入された弱参照について調べました。 発表内容 stringの割り当てと不変性、SSAによる最適化について学ぶuniqueパッケージの導入背景と... 続きを読む

<T, K extends keyof T> をちゃんと理解する

2024/06/20 このエントリーをはてなブックマークに追加 14 users Instapaper Pocket Tweet Facebook Share Evernote Clip extends Number ライブラリ 制約 継承

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も型安全に

2024/03/21 このエントリーをはてなブックマークに追加 16 users Instapaper Pocket Tweet Facebook Share Evernote Clip filter 述語 undefined null value

結論を先に言うと、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になる!?……わけではなかった

2024/01/23 このエントリーをはてなブックマークに追加 81 users Instapaper Pocket Tweet Facebook Share Evernote Clip Object JavaScript

ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStateme... 続きを読む

Node.js v20 から使える ECMAScript の新機能

2023/04/20 このエントリーをはてなブックマークに追加 8 users Instapaper Pocket Tweet Facebook Share Evernote Clip プラグ ECMAscript バージョン 機能 新機能

Node.js v20 リリースされました。 V8 のバージョンが 11.3 まで上がったことで、いくつかの新しい ECMAScript の機能が使えるようになりました。v フラグが好きなのでうれしいです。 どのバージョンからどの機能が使えるようになったかとか忘れてしまうのでメモしておきます。 String.prototype.isWellFormed / String.... 続きを読む

PHPからJavaScriptにデータを受け渡すときに考えること - Qiita

2023/01/01 このエントリーをはてなブックマークに追加 123 users Instapaper Pocket Tweet Facebook Share Evernote Clip Qiita Array JSON unicode int

PHPのstringは任意のバイト列を扱えますが、JavaScript/JSONはUnicodeで扱える文字しか扱えません PHPのint / floatはプラットフォーム依存ですが、JavaScriptのnumberは整数と小数を型レベルで区別しません JSONのarrayに対応する型はPHPのarrayのうちリストであるものです PHPは配列(リスト)と連想配列を型レベルで区... 続きを読む

ニッチなRustのNicheについて - Qiita

2022/12/28 このエントリーをはてなブックマークに追加 7 users Instapaper Pocket Tweet Facebook Share Evernote Clip Opt num Niche Option core

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 に変換するテクニック

2022/12/24 このエントリーをはてなブックマークに追加 10 users Instapaper Pocket Tweet Facebook Share Evernote Clip char imp cGO コンパイラ テクニック

はじめに 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における配列の共変性

2022/12/15 このエントリーをはてなブックマークに追加 130 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript ANIMAL 配列 Dog オブジェクト

const animal: Animal = { animal: "string", }; const dog: Dog = { animal: "string", dog: "string", }; いま,Dog <: Animalです. <:という記号は2つの型のあいだに書いて,「左の型が右の型のサブタイプである」と読みます. TypeScriptの型システムは構造的なので,2つのオブジェクトがサブタイプ関係にあるには... 続きを読む

【オブジェクト指向プログラミング】誰のもの?で理解するインターフェース

2022/11/12 このエントリーをはてなブックマークに追加 101 users Instapaper Pocket Tweet Facebook Share Evernote Clip インターフェース オブジェクト指向プログラミング args

前置き 背景 オブジェクト指向プログラミングのインターフェースについて、以下のような例で学んだ方は多いのではないでしょうか。 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

2022/10/03 このエントリーをはてなブックマークに追加 11 users Instapaper Pocket Tweet Facebook Share Evernote Clip fsubal TypeScript input ステート 実装

#フロントエンド #TypeScript #React TL;DR input[type=number] には空文字とかも入力できるので、string 型で状態管理をしないと意図しない動きをすることがある ステートの型を縛るより input の value に渡るまでの実装を工夫する方が良い --- input[type=number] のステートを安易に number 型にするとだいたい後悔... 続きを読む

TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)

2022/08/12 このエントリーをはてなブックマークに追加 7 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript Object.create foo

TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に... 続きを読む

TypeScript で string 型の値に自動補完を効かせる: Days on the Moon

2021/09/11 このエントリーをはてなブックマークに追加 28 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript foo IDE bar 自動補完

結論 type X = 'foo' | 'bar' | (string & {}); のように、文字列リテラル型の共用体型に | (string & {}) を付け足した型 X を定義します。X 型は任意の文字列を受け付けますが、IDE (Visual Studio Code など) で X 型の値を入力するときには 'foo' と 'bar' が自動補完の候補として提示されます。 解説 単純に type X... 続きを読む

東京大学、Pythonプログラミング無料入門 pandasやJupyterなど幅広い | Ledge.ai

2021/08/29 このエントリーをはてなブックマークに追加 1298 users Instapaper Pocket Tweet Facebook Share Evernote Clip Ledge.ai Colaboratory 幅広い 東大 教材

画像は公式サイト(HTML)より 今回は東京大学(東大)が無料公開している、Pythonの初心者にもオススメの教材「Pythonプログラミング入門」を紹介する。SNS上では「ホントいい」「初心者にもわかりやすい」などと評判になっている。 本教材では「Colaboratoryによるノートブックの使い方」「文字列(string)」「条件分... 続きを読む

Vue 3 Composition API: ref() vs. reactive() - Markus Oberlehner

2021/06/14 このエントリーをはてなブックマークに追加 5 users Instapaper Pocket Tweet Facebook Share Evernote Clip Reactive boolean ref API

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... 続きを読む

ジェネリクス引数の構文的曖昧性まとめ

2021/05/23 このエントリーをはてなブックマークに追加 9 users Instapaper Pocket Tweet Facebook Share Evernote Clip Convert SCORE ジェネリクス int 括弧

ジェネリクスを持つ多くの言語では括弧の種類が足りなかったり、既存の文法との互換性を保つために <> をジェネリクス引数に使っている。この文字は比較演算子やシフト演算子にも使われるため、多くの場合は構文的曖昧性の問題がある。 // ジェネリクス引数 (convert<int, string>(number)) // 比較演算子 (score < MAX_... 続きを読む

TypeScriptの型定義からバリデーションコードを生成するツールを書いた | Web Scratch

2021/03/26 このエントリーをはてなブックマークに追加 13 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript request response

create-validator-tsというTypeScriptの型定義からJSON Schemaを使ったバリデーションコードを生成するツールを書きました。 モチベーション expressなどでAPIを書くときに、Request/Responseが意図したものかどうかをバリデーションする必要があります。 特にreq.queryなどはStringが入ると予想しますが、オブジェクト... 続きを読む

Template Literal Types で「単位を持つ数値」の文字列型をきれいに扱いたい

2021/03/10 このエントリーをはてなブックマークに追加 10 users Instapaper Pocket Tweet Facebook Share Evernote Clip Template Literal Types 単位 数値

(この記事には一部うまくいってない部分が残ってるので、解決し次第追記します) ブラウザの二次元上の座標を計算するコードを書いていると、 px, rem, flex などの数値が入り乱れて、それらを文字列で管理してると扱いが難しくなります。また、ブラウザの DOM API は、コンテキスト次第で string | number みたいなノリ... 続きを読む

TypeScriptのユニオン型で「あるかもしれない」プロパティを表現するときのTips - uhyo/blog

2020/08/18 このエントリーをはてなブックマークに追加 15 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript uhyo foo プロパティ Tips

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

2020/03/10 このエントリーをはてなブックマークに追加 5 users Instapaper Pocket Tweet Facebook Share Evernote Clip パラメータ AWS CDK Developers.IO 転記

valueFromLookup このメソッドを使うと生成するテンプレートにパラメータストアに格納されていたStringを転記します。テンプレートに転記する為、SecureStringに対して使用する事ができません。SecureStringに対して使用できてしまうと、CloudFormationに対する読み取り権限があれば誰でもテンプレートを閲覧する事で内... 続きを読む

ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成 | Cygames Engineers' Blog

2020/02/19 このエントリーをはてなブックマークに追加 7 users Instapaper Pocket Tweet Facebook Share Evernote Clip Unity メモリアロケーション GitHub Blog 河合

Cy#の河合です。今回、文字列生成におけるメモリアロケーションをゼロにする「ZString」というライブラリを公開しました。そこで、この記事ではZStringの紹介の他に、あらためてC#の文字列についてを深く分解して解説し、Stringの複雑さと落とし穴、そしてZStringの必要性について解説します。 [GitHub – Cysharp/ZStrin... 続きを読む

nilがnilじゃないのでerrorになるのを静的解析で検出する - Qiita

2019/12/17 このエントリーをはてなブックマークに追加 15 users Instapaper Pocket Tweet Facebook Share Evernote Clip Qiita nil fmt func err

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()に食わせると空のオブジェクトになって困るんですけどって時 - その手の平は尻もつかめるさ

2019/11/12 このエントリーをはてなブックマークに追加 39 users Instapaper Pocket Tweet Facebook Share Evernote Clip TypeScript foo map set Body

(TypeScriptに限らずJavaScriptでもだいたいこのような感じだと思いますが) 例えば以下のようなコードを書くと,出力としては {"body":{}} が得られます. const body = new Map<string, string>().set("foo", "bar"); console.log(JSON.stringify({body})); 本当は {"body": {"foo": "bar"}} のような構造がほしいと... 続きを読む

 
(1 - 25 / 84件)