タグ

ブックマーク / qiita.com (458)

  • ReactのuseStateについて丁寧に理解する - Qiita

    はじめに useStateはReactの関数コンポーネントで使われる代表的なAPIの1つで、シンプルかつ便利なのでよく使われる馴染み深い機能です。この記事ではそんなuseStateについて踏み込んで解説します。 この記事で述べるコンポーネントとは基的にReactの関数コンポーネントを指します。 状態 useState自体がどのような振る舞いを持つAPIなのかを紹介する前に、useStateを学ぶ時に必要となる状態(State)という概念を紹介します。 状態とはコンポーネントのレンダリング間で保持され、変更することで再レンダリングが起きるような値のことを指します。言い換えると、状態はコンポーネントがアンマウントされる(使われなくなる)までのライフサイクル間で共有され、更新する度にコンポーネントを再計算させるような値です。 レンダリングとはReactが何らかのトリガーを感知した時に対象のコン

    ReactのuseStateについて丁寧に理解する - Qiita
  • 和欧混植 font-sizeの微調整 - Qiita

    この記事の概要 Webサイトにおいて、文字の画面占有率は大きい割に、タイポグラフィの甘さったらないですよね。 組版のための仕組みが整っていないなど、仕方ない部分が大きいとは言えもう少し改善したくなります。 というわけで、和欧混植時に少しでも見た目が良くなる方法を考えてみました。 @font-faceでフォントを定義してsize-adjustで調整 Webフォント、ローカルフォント、どちらでも使えるテクニックです。 ローカルフォントを再定義する方法の方が面白い使い方な気がするので、例はそちらをお見せします。 仮に、ヒラギノ角ゴシックとAvenirを混植するとします。 通常の指定方法だとコードはこのようになります。

    和欧混植 font-sizeの微調整 - Qiita
  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
  • IMEを使う(Windows: IMM編) - Qiita

    WindowsのIMEとのAPIにはいくつかの実装があるのですが、今回は古のWIndows 2000以降ならフルで使えるInput Metod Managerについてです。 非常に優秀なIMEのAPIで、未確定文字列の描画をアプリケーション側で行わない場合には、それを肩代わりしてくれます。 また、変換候補についても自身で表示するかIME側に表示してもらうかを選択できます(たぶん)。 Input Metod Manager概要 アプリケーション側でやることは主に2つです IMEに自身の情報を伝える IME関連のウィンドウメッセージを処理する これだけです。 以降は、縦書きエディタで最低限実装するべきことについてざっくりとリストアップします。 共通 IME関連の処理をする際には HIMC hImc = ImmGetContext(hWnd); hImcを使って色々やる ImmReleaseCo

    IMEを使う(Windows: IMM編) - Qiita
  • IMEを使う(macOS編) - Qiita

    はじめに AppleのIME APIはドキュメントを読んだだけでは実装できないと思うので、わりと有用な記事になるかもしれません。 NSTextInputClient Objective-Cだと10.5以降、Swiftだと10.10以降に対応という楽しいProtocolです。 他のIME APIと同様に、自前のTextViewを作るときくらいにしか使われません。 (https://developer.apple.com/reference/appkit/nstextinputclient?language=objc) 大まかな実装の手順は以下のとおり。 NSView<NSTextInputClient>を継承したViewを作る このView上に編集対象のテキストを表示可能にする NSTextInputClientの関数を実装する これで、IMEを正しく扱うことができます。 WindowsのT

    IMEを使う(macOS編) - Qiita
  • 「究極」の関数型言語 "Iota" を知っているか - Qiita

    TL; DR これが Iota による HelloWorld です。注目すべきなのは、このプログラムはたった一個の組み込み関数 i だけで作られているということです。 i(i(i(i)))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(

    「究極」の関数型言語 "Iota" を知っているか - Qiita
  • Rust Memory Container Cheat-sheet - Qiita

    Repos: https://github.com/usagi/rust-memory-container-cs 文字で読み書きするとやや大変です。しばらく間を開けてRustを触ったりするとスコシ混乱するかもしれません。と、いうわけでRustでメモリーコンテナー系に触れるモードになった時用に1枚絵のチートシートを整理しました。 文字を書けるQiitaにポストするのでちょっとだけチートシートの解説も乗せます。 おまけ解説 Threads; スレッド群 (rev.0 -> rev.1 でこのチートシート上で最初に現れる選択肢に切り替わりました ⇔ Ownership; 所有権) Rustではマルチスレッディング実行の安全性を向上するため、 適当に確保したメモリーをスレッド間でうっかり共有できない(少なくとも簡単にはうっかりできない程度に難しい)仕組みがあります。その仕組みの核心は標準ライブラリ

    Rust Memory Container Cheat-sheet - Qiita
  • Unityで「まとも」なテキスト描画を行いたい [Unityゲームグラフィックス実践] - Qiita

    この記事は KLab Engineer Advent Calendar 2020 24日目の記事です。 Qiitaへの投稿は去年の12/24、つまりきっちり1年前のアドカレに続いて2回目になります suzuna-honda といいます。よろしくお願いします。 はじめに Unityでテキストの描画を行う際、標準で用意されている選択肢には大きく2つ、「uGUI Text」と「TextMesh Pro」があります。 uGUI Text uGUI Textは古くから存在する、Unity標準のテキスト描画システムです。 フォントファイルからビットマップを動的に生成し描画するダイナミックフォントという仕組みのおかげで、とにかく何も考えずにポン置きでテキストを画面に配置できる非常に便利なコンポーネントですが、設計の古さ故か、いくつか頭を抱えてしまう問題点を抱えています。 まず、ダイナミックフォントとはい

    Unityで「まとも」なテキスト描画を行いたい [Unityゲームグラフィックス実践] - Qiita
  • Rustスマートポインタ比較表 - Qiita

    以下補足です。 効率 トレードオフを強調するために、相対的な効率を星の個数で表しています。しかし、効率をことさら気にする必要はありません。他の多くのプログラミング言語では、Rustでいうところの Arc<Mutex<T>> をデフォルトで使っているような状況です。要件にあったものを使うことが大事です。 ライフタイム 「短命」とついているものは基的に、ある関数のスコープに紐付いた形でしか使えません。特に慣れないうちは、これらの型を構造体に入れて使うのはやめておいたほうが無難でしょう。 例外として、グローバル変数 (static, lazy_static!) は &'static 参照として扱うことができます 共有 「ポインタ」と聞くと、参照先が共有されている様子を思い浮かべる人が多いと思いますが、所有権の概念のあるRustでは必ずしもそのイメージは当てはまりません。 &mut T と Bo

    Rustスマートポインタ比較表 - Qiita
  • tmux 上の Emacs で 24-bit color を表示する方法 - Qiita

    TL; DR Emacs 26.1 と iTerm2 v3 以上が前提になります。 以下のファイルを作ります; # Use colon separators. xterm-24bit|xterm with 24-bit direct color mode, use=xterm-256color, setb24=\E[48:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm, setf24=\E[38:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm, # Use semicolon separators. xterm-24bits|xterm with 24-bit direct color mode, use=xterm-256color, setb24=\E[48;2;

    tmux 上の Emacs で 24-bit color を表示する方法 - Qiita
  • Vulkanで描いてDirectCompositionで半透明合成する - Qiita

    リポジトリはこちら: https://github.com/Pctg-x8/vk-noredirect-render これはなに? VulkanでレンダリングしたものをDirectCompositionで直接デスクトップに合成しています。 DirectCompositionではDirectX(というよりDXGI)のスワップチェーンをそのまま合成に利用できる仕組みがあり1、これを用いることでウィンドウ自体がバックバッファを持たなくてもウィンドウに対して描画を行うことが可能です。 ウィンドウがバックバッファを持たない場合、このウィンドウのクライアントエリアは透過したものとして扱われます。そこにDirectCompositionで合成を行うと、スワップチェーンの半透明情報をそのまま利用して合成されます。冒頭の三角形では一部の頂点を半透明にしており、ウィンドウの後ろにあるVisual Studio

    Vulkanで描いてDirectCompositionで半透明合成する - Qiita
  • DirectX12 その1 三角形表示 - Qiita

    はじめに DirectX12完全に理解したいとおもったんでDirectX12始めました。 実行画面 プログラムの流れ 初期化 繰り返す 更新 描画 破棄 初期化 Windowを作成する 省略します。 パイプラインを初期化する デバッグレイヤーを有効にする UINT dxgiFactoryFlags = 0; ComPtr<ID3D12Debug> debugController; if(SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController)))) { debugController->EnableDebugLayer(); } D3D12GetDebugInterfaceでデバッグレイヤーを取得してEnableDebugLayer()でデバッグレイヤーを有効化する。 このプログラムではスマートポインタ使ってるのでRel

    DirectX12 その1 三角形表示 - Qiita
  • 読みやすい=理解しやすい Webの組版を整理してより良い文章を届けよう - Qiita

    この記事はQiita Advent Calendar 2021の12日目の記事で、Qiita株式会社 CX向上グループの綿貫(@xrxoxcxox)が担当します! この記事の概要 Webの組版を現実的な手法で綺麗に整えるためのやり方をまとめました。 同じ内容の文章でも組版次第で読みやすさは変わります。 実は、意識していないとWebサイトの文章は余白がガタガタとかになりやすいんですね。 DTPに比べるとどうしても劣ってしまいますが、HTMLCSSだけでできるだけ綺麗になるようにした & ステップバイステップで説明していますので良ければ真似てみてください! ちなみに今回載せているコードは全てこちらのリポジトリにあります。 解決したいこと(≒よくあるWebの組版) 余白がガタガタ 見出しや文のジャンプ率が適切でなく目が滑る 禁則処理がほぼ何も無い あまり意識したことは無いかもしれませんが、こ

    読みやすい=理解しやすい Webの組版を整理してより良い文章を届けよう - Qiita
  • 独自(root)CA のインストール方法 - Qiita

    独自の root CA 証明書をインストールする必要があり、まとめました。 色々とツールやアプリケーションを使っていると「OS に設定すればひと安心」というわけにはいかず、OS の設定に加えて、それぞれ個別に設定する必要があるものが少なくありません。 この記事では、以下の環境、ツールへの独自 root CA 証明書を設定する方法を記載します。 Ubuntu (18.04) Red Hat / CentOS (7) Python - certifi/requests/ssl Mozilla Firefox Mozilla Thunderbird Windows 10 Splunk Ubuntu (18.04) /usr/share/ca-certificates/ の下に適当な(いい加減な、という意味ではなく)ディレクトリを作成します。 ここでは、mylocal とします。(以下、/usr/

    独自(root)CA のインストール方法 - Qiita
  • ttyから自作ゲームエンジンを起動する - Qiita

    趣味ゲームエンジン1を開発している者です。 ゲームエンジンというからには、やはり排他的なフルスクリーン表示の機能が欲しくなりますね。 近年のWindowsではDXGIによって簡単にフルスクリーン対応ができます。Vulkanを使用している場合でも、VK_EXT_full_screen_exclusiveを使用することでDirectXを使った場合と同じようなことができるようです(まだ使ったことはないですが......)。 macOSではそもそもウィンドウシステム自体が全画面表示に対応していますし(これは「排他的」ではない気がしますが)、Android/iOSなどモバイル端末ではそもそもデフォルトで全画面表示になりますから、特に考えることはありません。 最後の砦となるのがLinuxで、このOSだけは一概に「これ!」という選択肢がありません。現状で考えられるものとして、ざっくり以下のような選択肢

    ttyから自作ゲームエンジンを起動する - Qiita
  • 日本語 LaTeX の新常識 2021 - Qiita

    オリジナルの TeX が誕生してから40年以上の歳月が流れ,そして日語 LaTeX が現在主流の姿 (pLaTeX2e) になってからも25年以上が経過しました.この間 LaTeX は多くの人に使われ続けて来ましたが,その歴史の中でさまざまな変遷を辿り,明示的なドキュメントにはなっていないながらも,ユーザ間ではある意味「常識」として定着した知識が積み重なってきました. 歴史が長く,よくも悪くも「安定している」と評されるために見過ごされているかもしれませんが,日語 LaTeX は今も開発が続く「生きた」ソフトウェアです.そのため歴史の中で培われた常識的な知識が古くなり,新しい知識が必要になる場合があります.そしてその傾向は特にこの数年顕著で,TeX コミュニティに属する人々が多く集まる TeXConf などの会議で,主に中上級者向けに新しい知識が啓蒙されてきました.稿では,そのような日

    日本語 LaTeX の新常識 2021 - Qiita
  • Yoga Layout を使ってゲームのUI構築に flexbox を取り入れる - Qiita

    この記事は『ドワンゴ Advent Calendar 2020』12日目の記事です。 日、2020年12月12日はニコニコ動画の14歳の誕生日です。……14歳!?!?!? そんな誕生日ネタとは一切関係ない1、(ブラウザ)ゲームUIの話です。 3行でおk ゲームのメニュー等のUIの構築は結構たいへん HTML+CSSみたいに勝手にいい感じに並んで欲しい ReactNativeが使っている Yoga Layout が良さそうなので試してみた! Webとゲーム 僕はお仕事でWebフロントをがちゃがちゃといじることが多いです。 Webの画面構築に使われるものといえばHTML/CSSが基ですが、強いインタラクションが必要となるコンテンツの「プレーヤー2」は必ずしもその限りではありません。 例えば、ニコニ立体 の3Dモデルプレーヤーは Unity で開発されていたり、ニコニコQ のクイズプレーヤ

    Yoga Layout を使ってゲームのUI構築に flexbox を取り入れる - Qiita
  • TeX処理系御伽話 - Qiita

    この記事はTeX & LaTeX Advent Calendar 2013の15日目の記事です。 14日目:mskalaさん 16日目:PowerPC7450さん 処理系とは TeXの処理系とはTeXファイルをぶち込むとDVIなりPDFなりが出てくるプログラムのことです。実際に使ったことがなくても、だいたい次のようなものを聞いたことがあるのではないかと思います。 pTeX XeTeX pdfTeX LuaTeX さて、ここで疑問なのがこれらは一体何が違うのかということですね。何を使うかで迷っている人は、とりあえずこれらの違いだけでも説明出来たらいいなと。 pTeXとその仲間たち + e-TeX e-TeXが入っているのは、こっちの方が説明が分かりやすいと思ったからです。 pTeX pTeXTeXに日語向けの様々な機能を追加した処理系です。代表的なものを挙げると、次のようなものが追加さ

    TeX処理系御伽話 - Qiita
  • CGOを含むgolangのプログラムをラズパイ向けにクロスビルドする - Qiita

    Ubuntu 18.04 を使用しています。 CGOを含む以下のプログラムをgolangのプログラムをラズパイ向けにクロスビルドするには package main import ( "fmt" ) // #cgo LDFLAGS: -lm // #include <math.h> import "C" func main() { fmt.Printf("sqrt(3) = %f\n", C.sqrt(C.double(3))) }

    CGOを含むgolangのプログラムをラズパイ向けにクロスビルドする - Qiita
  • x86_64のUbuntuでC/C++のソースコードをARM/ARM64用にクロスコンパイルしてQEMUで実行する方法のまとめ - Qiita

    x86_64のUbuntuでC/C++のソースコードをARM/ARM64用にクロスコンパイルしてQEMUで実行する方法のまとめLinuxGCCARMQEMUarm64 はじめに x86_64のLinux上でQEMUを使ってarm用の実行ファイルを動かす方法は以前に書いたことがあるのですが、最近は「マルチプラットフォームのライブラリをビルドしたときにCIを回す」というユースケースが出てきたので再度まとめてみました。 題材とするソースコードはこれ。

    x86_64のUbuntuでC/C++のソースコードをARM/ARM64用にクロスコンパイルしてQEMUで実行する方法のまとめ - Qiita