タグ

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

  • C言語でインクルードするだけで使えるNon-movingで正確なコピーGCを作った - Qiita

    インクルードするだけで使えるNon-movingで正確なGCをC言語用に作りました。 行数がコメントを除いて100行に満たない非常に小さなライブラリです。 GCのアルゴリズムとしてはCheneyのコピーGCを採用しています。 通常のCheneyのコピーGCではメモリ空間のうち半分が無駄になってしまいメモリ効率が悪かったり、 GC発生時にオブジェクトが移動してしまいC言語のようなポインタを直接触れる言語との相性が悪いという欠点がありました。 今回はヒープ全体を二重連結リストとして管理することでそのような問題を解決しています。 ちなみにこれはTreadmill GCのアイデアと同じです。(が、アルゴリズム自体はTreadmill GCではありません。) APILinuxのlist.hに非常に近い見た目になっています。 ある構造体をgcで管理したい場合はstruct gc_head型のメンバを

    C言語でインクルードするだけで使えるNon-movingで正確なコピーGCを作った - Qiita
  • さいきんの.NETのこととかNuGetとかCoreとかよく分からないよねーって話 - Qiita

    Visual Studio 2017 RC が出たのでいろいろ遊んでみましたが、やばいですね!ちょっと変なことしようとするとすぐ変になったり動かなくなったりします!リリース前のアプリで遊ぶのめっちゃ楽しい……! 時代は.NET Coreですよ! みたいに言われてたので、2017RC出たことだしそろそろ.NET Coreのことちゃんと調べるかーって思ったら、なんか予想以上にカオスなことになってたので、せっかくなので備忘録的に整理してみました。 昨日からの一夜漬けの知識量で錯綜しているネットの情報を漁りつつ書いてるので、何か間違いがあったら指摘してください。よろしくお願いします。 .NETのなんかいろいろ用語集 Coreがどうのこうのとか.NETCoreが.NETでなんだかもうよく分からないので書いてあること片っ端から読んでおぼえた。.NET Coreについて調べるときぽろぽろ出てくる単語を片

    さいきんの.NETのこととかNuGetとかCoreとかよく分からないよねーって話 - Qiita
  • gitのaliasコマンドに引数を渡す方法 - Qiita

    [alias] command1 = "!sh -c 'echo $1 $2' -" command2 = "!f(){ echo $1 $2;};f"

    gitのaliasコマンドに引数を渡す方法 - Qiita
  • Windows Subsystem for Linuxとguest/native Ubuntuの性能をざっくりと比較 - Qiita

    (2017年12月25日注) 記事より新しいバージョンのWindowsについての類似記事を書きましたので、記事のかわりにそちらをごらんください。 はじめに わたしの手持ちのノートPCにはWindows10が入っています。もっぱらWindows Subsystem for Linux(WSL, いわゆるbash on Ubuntu on Windows)上で作業をしています。次のような小規模なプログラムの実行については全く問題無く使えており、WSLが無かったころに比べると、Windows端末を使った開発が非常に楽になりました。 ちょっとしたプログラムの動作確認 sshでリモートの開発マシンにログイン 小規模ソースの読解(タグジャンプ、grep検索、git操作など) その一方で、次のような操作においては、そこそこのスペックのマシンのはずなのに、やや「もっさり感」を感じることがあります。 長

    Windows Subsystem for Linuxとguest/native Ubuntuの性能をざっくりと比較 - Qiita
  • GAE/Go で Google Cloud Spanner を操作する(前編) - Qiita

    こんにちは。今日はネコの日(2017 年 2 月 22 日)ですね 昨年(2016)の 10 月ぐらいから Go 言語を勉強し始めた @wezardnet です。新しい言語はまだまだ慣れませんw さて、今回は Go 言語の学習がてら先日ローンチされた Google Cloud Spanner を触ってみようと思います。具体的には Go で Cloud Spanner のインスタンスを作成/削除したり、データベースを作ったりをしてみたので、忘れないように書いておこうと思います。タイトルに「(前編)」と入れましたが、後編があるかどうかは未定です 1. Cloud Spanner ってなに? ネットなどのニュース記事を読むと、要はスケールアウトするリレーショナルデータベースって感じでしょうか。グーグルのコアサービスでも使われているそうです。現在はベータ版で Google Cloud Platfo

    GAE/Go で Google Cloud Spanner を操作する(前編) - Qiita
  • 遂にFirebase Admin SDK Goが登場! - Qiita

    サービスアカウントの鍵の作成 まず認証にはGCPのサービスアカウントを利用します。 https://console.cloud.google.com/iam-admin/serviceaccounts/project?project={projectID}&authuser=0 に アクセスして鍵を作成します。 ダウンロードした鍵はservice_account.jsonとして保存しました。 セットアップ 次のコードで鍵ファイルを読み込んでFirebaseのセットアップができます。 import ( firebase "firebase.google.com/go" "google.golang.org/api/option" ) opt := option.WithCredentialsFile("service_account.json") app, err := firebase.N

    遂にFirebase Admin SDK Goが登場! - Qiita
  • Direct3D 12 & Vulkan ラッパーライブラリ 「a3d」 - Qiita

    この記事は,「ゲームエンジン・ライブラリ・ツールの開発 Advent Calendar」の16日目の記事です。 皆さん,こんにちわ。Pocolです。 D3D12&Vulkanラッパーライブラリ「a3d」 …というものを作ってみました。 Githubでソースコードを公開中です。 https://github.com/ProjectAsura/asura-SDK/tree/master/a3d a3dライブラリのライセンスは MITライセンスです。 Nugetパッケージも用意しています。 https://www.nuget.org/packages/a3d/ ゲームアプリケーションを作成する場合,ゲームエンジンなどで用意されているAPIを使用するか,DirectXやOpenGLのようにプラットフォームごとに用意されているグラフィックスAPIを直接叩いて作成する方法が考えれます。A3Dは,ゲーム

    Direct3D 12 & Vulkan ラッパーライブラリ 「a3d」 - Qiita
  • OSカーネルを0から作り始めてみた - Qiita

    1. 概要 OSカーネル[^1]をフルスクラッチで(0から)作り始めてみました。 稿では下記について記載します。 カーネルを自作し始めた背景 カーネル自作における方針 稿執筆時カーネルの機能概要 カーネルの実行方法 プロセスを起動してみる 今後の課題 2. 背景 私がカーネルを自作し始めた理由は次の2点です。 1.コンピュータがどの様に動いてるのか知りたかった 2.使用しているOSに不満があった 2.1 コンピュータがどの様に動いてるのか知りたかった かれこれ10年以上前に遡りますが、私が大学に入学した頃、VisualBasicやBasic、Cなどの言語を使って簡単なソフトウェアを作ることが出来ましたが、どうして簡単なコードでウィンドウが表示できるのか、どうしてprintf文を書けばコンソールに文字が出力できるのか、コンピュータはいったいどんな風に動いてるのか全く分からず、不思議で仕方

    OSカーネルを0から作り始めてみた - Qiita
  • x86でdoubleがfloatより速いかどうかを検証してみた - Qiita

    昔話 それは昔々のこと。 x86には浮動小数点演算を行う手段がなく、外付けの浮動小数点演算ユニットを接続するという手法で、浮動小数点演算を実現していたのであった。 x87と呼ばれたそれはとてもエクセレントなシステムで…という話はwikipediaに譲ろう。 https://ja.wikipedia.org/wiki/Intel_8087 重要なのは、x87が内部表現として80bitの拡張倍精度を使っている、ということ。 これのおかげで、x87においては、確かにdoubleのほうが速かった (floatだとdoubleへのキャストコストが発生するため) 嘘だろそれ。ASM見たら別にキャストとかしてなかったわ。 どっちかというと丸めの影響で精度が異なることのほうが重要だわ。 改めて調べてみると、doubleが速いとされている資料についてはあんまりないことに気付く。 (同等としている資料はher

    x86でdoubleがfloatより速いかどうかを検証してみた - Qiita
  • ユニフォームブロックのメモリレイアウト @ゲームプログラマの小話[開発:グラフィックス] - Qiita

    OpenGLやVulkanのシェーディング言語であるGLSL。そのGLSLの機能の1つであるユニフォームブロック(CPUから渡すデータのかたまり)のメモリレイアウトの仕様がややこしく、筆者もこれがらみで時々ミスをすることがあります。 そんなメモリレイアウトについて情報をまとめてみました。 メモリレイアウトと std140 ユニフォームブロックのメモリレイアウトとは、ユニフォームブロックとして渡される構造体に含まれる変数のアドレス配置のことを言います。例えば vec4 は必ず16の倍数のオフセットアドレスに格納される、といったものです。 もしかすると、メモリレイアウトよりもメモリアライメントと呼んだ方がしっくりくる人もいるかもしれません。公式のマニュアルでは Memory Layout と呼んでいるので、記事の表記もそれにあわせることとします。 さて、そんなメモリレイアウトですが std1

    ユニフォームブロックのメモリレイアウト @ゲームプログラマの小話[開発:グラフィックス] - Qiita
  • Chrome M60 で Native ES Modules + ServiceWorker を試して未来へのマイグレーションを見積もる - Qiita

    Chrome M60 で Native ES Modules + ServiceWorker を試して未来へのマイグレーションを見積もるServiceWorkerbabeles2015ESModules 目的 Chrome M60(Canary) でフラグ付きで ES 2015 の ES Modules が動くようになったので、試す。 ServiceWorker と Babel 前提で、エッジな構成で今のバンドル環境を無理矢理シミュレートしてみて、今との比較で現実的なマイグレーションパスを探しておくことにした。 成果物 uupaaさんの WebApp2 をスケルトンとしてお借りしました。 なにができるか まるで browserify/webpack でビルドしてるかのようにこのコードが動く。ブラウザ上だけど babel も動く。 /* @flow */ import { combineRe

    Chrome M60 で Native ES Modules + ServiceWorker を試して未来へのマイグレーションを見積もる - Qiita
  • XYZ色空間に迫る(1) - Qiita

    ここで、$ v_a $ $ v_b $はそれぞれ物質の中での波の速度を示し、$ \frac { v_a }{ v_b } $ を屈折率(refraction index)とも呼びます 少し変形してやれば、 \frac { \sin { \theta _{ a } } }{ \sin { \theta _{ b } } } =\frac { v_{ a } }{ v_{ b } } \\ \sin { \theta _{ a } } =\frac { v_{ a } }{ v_{ b } } \sin { \theta _{ b } } \\ \frac { v_{ b } }{ v_{ a } } \sin { \theta _{ a } } =\sin { \theta _{ b } } \\ \theta _{ b }=\arcsin { \frac { v_{ b } }{ v_{

    XYZ色空間に迫る(1) - Qiita
  • Wandboxを支える技術(2017年版) - Qiita

    Wandbox は、オンラインでコンパイルや実行が試せるサービスで、主に私(@melponn) と @kikairoya で作っています。 以前 Wandboxを支える技術 というのを書いていたのですが、そこからかなり変わっているため、改めて今の中身がどうなってるかについて書いていきます。 Wandbox は、Wandbox 体と、各種コンパイラをビルドするための Wandbox Builder に分かれています。 ソースコードは wandbox と wandbox-builder にあります。 2019/9/26 追記: Wandbox のビルドを CMake に移行した話 を書きました 犬小屋と牛舎 Wandboxはバックエンドとフロントエンドで分かれていて、フロントエンド側が 犬小屋(kennel) 、バックエンド側が 牛舎(cattleshed) という名前になっています。 犬小

    Wandboxを支える技術(2017年版) - Qiita
  • エンジニアのための「Sketch入門!」 1時間コース - Qiita

    ※「Sketch」はMac専用アプリです。Windows版はありません。 「演習ファイル+動画+演習付き」で記事を書いてます。 エンジニアの人から「Sketch使ってみたい」「日語の記事が少ない」という声を聞いて、最近社内で勉強会しました。 Sketchについて日語の記事を調べてみたところ、このレベルの記事はけっこうありました。 ただ、学びやすいか?といえばそうではないらしいので、少し工夫して学びやすいように書いてみました。 ハンズオン用などにご利用ください。 Sketchとは Sketchについて一応さらっと書いておきます。 ・アプリやWebのデザイン・UI設計などに使われるMac用アプリケーション IllustratorやFireworksのようなツールです。 ・$99 買いきり(2016/02 現在) 有料です。 ちなみにApp Storeでは買えなくなりました。ショバ代かかるか

    エンジニアのための「Sketch入門!」 1時間コース - Qiita
  • Flowtype導入のための指針・実際の運用について - Qiita

    このドキュメントの目的 自分は趣味でFlowをずっと使っていて、またプロダクションでも今まで3プロジェクトほどにFlowを導入した。その知見。 「Flow は便利そうだけど、怖い」「いれてみたら色々ハマったからクソ」「わからん、なにもかも…」という人に対し、自分がいままで出くわしたパターンや、聞かれた疑問について、メジャーな解法を提示する。 なぜFlowを導入するか Babel から段階的に導入することが出来る React の JSX にも推論を入れることができる 部分的に適用できる ASTがES準拠であり、ESLintなどがツールが使える(TSは独自AST) それ自身ランタイムに全く影響はないので落とすのも簡単 実際にはReactと一緒に使うのが、エコシステムもユースケースも揃っていて、一番効果を発揮するだろう。それか、小さい npm モジュールを自分で書くとき。 型のメリット/デメリッ

    Flowtype導入のための指針・実際の運用について - Qiita
  • ソルトとハッシュ関数だけでパスワードをハッシュ化するのが微妙な理由 - Qiita

    2019/12/29 追記 いまでもこの記事が時々参照されています。Googleなどからこの記事へとやってきた方は、パスワードか何か重要な情報をどう保存するか?ということを考えておられるかもしれません。もしそうであれば、ぜひこの記事のコメントも記事を読んだあとに参照していただきたいと思います。徳丸さんをはじめとして僕よりもはるかに知見のある方の考えなどもあります。ハッシュ化されたパスワードは、もしかしたら今これを読もうとしておられる方が作っているアプリケーションよりも長きにわたって利用されるかもしれません。少々の時間をいただきますが、そういう理由でぜひコメントのディスカッションも参考にしたうえで今できる最良のセキュリティーを実装していってください はじめに この記事ではパスワードを保存する際によく用いられるソルトとハッシュ関数を使うやり方について、なぜそれが微妙であるかを解説した後に、それ

    ソルトとハッシュ関数だけでパスワードをハッシュ化するのが微妙な理由 - Qiita
  • 全てのWindowsユーザを幸せにするツールたち - Qiita

    僕個人がWindowsマシンにインストールしていて、 これが無くなったら困るなあ・・・という、 そこに当たり前に存在する幸せ(ツール)を紹介します。 プログラマでなくても幸せになれるツールを選びたかったので、 敢えてプログラマ向けとせず「全てのWindowsユーザ」としております。 Clover Chrome風のエクスプローラーです。 標準のエクスプローラーはフォルダごとにウィンドウが表示されるので、 気づいたらいくつもウィンドウが無数に増えて、 今見たいフォルダがどこにあるかわからなくなることが多々あります。 Cloverを使えば、タブで管理されるのでウィンドウは1つ(任意で増やせます)、 目当てのフォルダもすぐに見つかってイライラから解消されます。 さらに、Chromeのショートカットも使えるため、 例えば、一度消してしまったタブをShift+Ctrl+Tで復活、なんてこともできます。

    全てのWindowsユーザを幸せにするツールたち - Qiita
  • Rustで書いたWebAssemblyでフィボナッチを計算したらJSより3倍速かった - Qiita

    Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are curr

    Rustで書いたWebAssemblyでフィボナッチを計算したらJSより3倍速かった - Qiita
  • ゼロから始めるWebAssembly - Qiita

    学習記録 WebAssemblyとは ブラウザ上でクライアントサイドのスクリプトとして効率的に動くバイナリフォーマットです。 現在JavaScriptより軽量で高速な処理を提供するためにベンダー各社で開発されています。 現時点ではDOM, WebAPIへのアクセスとかできません。GCもない。なので現状使いどころは重い処理をWebAssembly部分に投げ出すイメージです。 スレッドとかもFuture Workらしい。 https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#threads もちろんWebを意識しているが、最終的にはWeb以外でも使えるような思想です。一つのバイナリを作ってしまえばどんなところでも動くようなReact Nativeのようなところを目指しています。 https://github.co

    ゼロから始めるWebAssembly - Qiita
  • LaTeX の「アレなデフォルト」 傾向と対策 - Qiita

    これは「TeX & LaTeX Advent Caleandar 2015」の25日目の記事です。 (24日目は golden_luckyさん です。) TeXが“長い歴史のある”(要するに“思いきり古い”)ソフトウェアであることは皆さんご存知でしょう。現在使われているTeX実装について最初の公開版がリリースされたのは1982年1なので、それから実に30年以上の時が過ぎています。 この事実に比べるとあまり知られてないことですが、LaTeXやp(La)TeXが現れたのはTeX歴史の非常に早い段階のことであり、つまり、LaTeXも“相当に古い”ソフトウェアなのです。TeXがアレなのに比べると、LaTeXの仕様は大体においてマトモなものですが、その古さゆえに、今から考えると不合理な方法が使われて、それがそのまま「デフォルトの設定」として現在まで続いてしまっている、という点が随所に見られます。こ

    LaTeX の「アレなデフォルト」 傾向と対策 - Qiita