タグ

ブックマーク / qiita.com (1,104)

  • RustでGUI 〜azul編〜 - Qiita

    azul(version 0.1.0)はRust1.28以降をサポートしているので、rustc -vVであなたのRustコンパイラのバージョンがサポートされているか確認してください。 どんなクレートか azulはMozillaのブラウザーのレンダリングエンジンを元にRustで書かれているIMGUI指向の(つまり"Immediate Mode GUI"と呼ばれるパラダイムを採用した)GUIフレームワークです。IMGUI指向を簡単にいうと"要求されたときに要求されたことだけを処理する"という感じ(間違っているかも)になります。 azulはHTMLのようなDOMスタイルを使いwidgetの構造を表し、(azul用の)CSSで装飾を処理するという形を取っています。 詳しくはazulのTutorial(英語)や公式サイトを参照してみてください。 コード カウントアッププログラムを書いていきます。 #

    RustでGUI 〜azul編〜 - Qiita
    rydot
    rydot 2019/10/05
  • RustでGUI 〜conrod編〜 - Qiita

    今回はこちらを参考にしてそこに挙げられている例の指定の通りのバージョン0.53.0を使用しています。 どんなクレートか conrodはpistonというゲームエンジンを開発しているところが作成しているRust純正のGUIライブラリです。widgetの構成や管理、widgetに対するイベントの伝播などの基的な機能を担当できます。しかし、実際の描画やOSからのイベントの受取はconrodは、conrodに用意されている描画用のglium(OpenGL)、イベントの管理用のwinitのバックエンドが用意されているので、そちらを使うことになります。 conrodで作られたGUIRustらしくマルチプラットフォームで動作するので簡単にほかのOSに対応できます。 conrodはwidget毎にIdを用意して管理します。複雑になればなるほどIdの用意が大変になって管理しづらくなってくるのですが、Id

    RustでGUI 〜conrod編〜 - Qiita
    rydot
    rydot 2019/10/05
  • RustでWebGL2 - Qiita

    Rust Advent Calendar 2017の1日目です。 初日から変化球という感じですが、申込み時点で初日と最終日しか空いていなかったのでご容赦ください。 はじめに WebAssemblyによるRustでのWebフロントエンド開発に興味があり、ちょっとだけ記事を書いたりしてきました。 RustでWebフロントエンド開発 RustでFetch API with Emscripten つい先日、Emscriptenに依存せずにWebAssemblyを生成するwasm32-unknown-unknownというターゲットが公式に追加されたりもして(参考:wasm32-unknown-unknown landed & enabled)、Webフロントエンド開発でRustWebAssemblyが実用的に使われる日が徐々に近づいているように感じます。 WebAssemblyが盛り上がっていると

    RustでWebGL2 - Qiita
  • WebGL でテッセレーションして、曲面パッチ間が滑らかに繋がった物体を表示(1) - Qiita

    WebGL テッセレーション ビューワ 「独自の高次元曲面パッチデータを WebGL 上でリアルタイムにテッセレーションし、ウェブブラウザに表示する 3Dモデルビューワ」を作ってみました。 と、突然言われても意味が分からないと思われるので、下記にデモのリンクを貼りました。(Netlify を使用) リンクをクリックすると、デモの 3Dモデルビューワが開きます。 Beziex_We : (https://beziex.netlify.com/beziex_we/) キャッシュが無い時の起動は遅いかもしれませんが、気長に待っていただけると助かります。ちなみにスクリーンショットは、こんな感じです。(元データは クールなびじゅつかん館長さんのツイート を使わせていただきました。CC0 1.0 です) 左が Windows 上、右が Android 上(縦向きのみ対応)で、どちらも Chrome

    WebGL でテッセレーションして、曲面パッチ間が滑らかに繋がった物体を表示(1) - Qiita
    rydot
    rydot 2019/10/04
  • EmscriptenでC言語をJavaScriptに変換する - Qiita

    C言語は使うべきではない言葉なので修正してくださいのクロスプラットフォーム言語だと思っていて、 iOSもObjective-Cの中でC言語が使えるし、 AndroidもNDKでC言語が使えるので、 UI以外のロジックはすべてC言語で書けば、それはすべてのプラットフォームで使えるのではないかと思っていました。 しかし、FireFoxOSでは、それができなくて、基JavaScriptAPIを呼び出すという形になってC言語が使えませんでした。 失意のどん底に陥っていたのですが、 そこの打開策に、Emscriptenがあったのです! !!! Emscriptenとは EmscriptenはC/C++言語からLLVMを生成し、それをJavaScriptに変換するコンパイラのことです。 C言語の標準ライブラリやPOSIXの一部もサポートし、OpenGL ES2.0も使えるそうです。 Emscrip

    EmscriptenでC言語をJavaScriptに変換する - Qiita
    rydot
    rydot 2019/10/03
  • EmscriptenでWebGL 2.0+おまけ - Qiita

    WebGLとは まず、WebGLはブラウザ上でOpenGL ESをレンダリングするAPIPCのみならず、スマートフォンブラウザで動作します。 Unityなどのゲームエンジンがブラウザ上で動作するのはこのWebGL APIのおかげです。 WebGLは今年2月にバージョンアップが行われ、WebGL 1.0はOpenGL ES 2.0相当だったのですが、 WebGL 2.0ではOpenGL ES 3.0相当となります。 OpenGL ES 3.0はOpenGL ES 2.0との互換性を保ちつつ、新規APIが実装され3DCGの表現力やパフォーマンスの向上が期待されます。 スマートフォンにおいては2017年12月現在Androidの約半数がOpenGL ES 3.0の描画に対応しており、今はOpenGL ES 2.0からOpenGL ES 3.0への過渡期ともいえます。 WebGL 2.0ではOp

    EmscriptenでWebGL 2.0+おまけ - Qiita
    rydot
    rydot 2019/10/03
  • 汎用言語表現モデルBERTの内部動作を解明してみる - Qiita

    100Mコーパスで訓練したBERT 500Mコーパスで訓練したBERT 2500Mコーパスで訓練したBERT BERTの訓練に使うコーパスサイズが小さい時は単語が入り混じって分布していますが、コーパスサイズを上げていくにつれてクラスター分布がはっきりしていく様子がわかります。 同じ単語でも一点に収束せず、文章の数だけ違う点にマッピングされているのがBERTの特徴です。それでは多義語はどのようにマッピングされるかを観察してみます。 今回は「首」という単語をマッピングしてみることにします。 首には大きく三つの語義があります。 人体の一部の意の「首」 解雇、リストラの意の「首」 市長、知事などリーダーの意の「首」 「知事」「市長」「解雇」「退職」を検索単語として追加します。マッピング空間の位置関係を保つために、一個前の実験で使用した主要単語も一緒に空間に配置しておきます。 1.知事、市長の周りに

    汎用言語表現モデルBERTの内部動作を解明してみる - Qiita
    rydot
    rydot 2019/09/24
  • 最速という噂のFlatbuffersの速度のヒミツと、導入方法の紹介(Go) - Qiita

    GoCon 2015 Winterでは、社内での取り組みとしてExcelのパースの時間のロスを避けるために、簡易データ構造を使ってMessagePack + LZ4で圧縮して高速化したことを紹介しました。それでも十分速くはなったのですが、LTで発表のあったシリアライズ系のライブラリのベンチマーク比較でFlatbuffersが最速だったので、ちょっと試してみました。 ↑のグラフは、こちらのベンチマークの結果をExcelでグラフにしてみたものです。Gobがダントツ遅かったのでそちらは振りきっています(Gobに合わせると他のものの比較がしにくくなるので範囲を狭めた)。GoConで発表した通り、今MessagePackを使っているのはデータのキャッシュです。作成に多少がかかっても、後の読み出しが速い方がトータルとしてはうれしい領域なので、Unmarshalが最速のFlatbuffersに俄然興味を

    最速という噂のFlatbuffersの速度のヒミツと、導入方法の紹介(Go) - Qiita
  • 『アドラー心理学』をエンジニアの目線で解釈すると? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Ateam Hikkoshi Samurai Inc. Advent Calendar 2017 24日目です。 日はエイチーム引越し侍 おじさんエンジニアの@keki(37)が担当します。 この年齢になってくると、人の気持ちとか感情、考え方というところに興味がわいてくるんですね。 そんな中、数年前に出会ったのが今回のタイトルにもある『アドラー心理学』です。 エンジニアはプログラミングという専門的な業務に専念することもあり、人とのコミュニケーションが苦手だ、チームの輪に加わるのが下手だと言われることがあると思います。 また、人間関係に

    『アドラー心理学』をエンジニアの目線で解釈すると? - Qiita
    rydot
    rydot 2019/09/16
  • 二部グラフの最小点被覆、最大安定集合 (最大独立集合)、最小辺被覆を総整理! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに、二部マッチングに関してこちらの記事を読んでいただければと思います。 実世界で超頻出!二部マッチング(輸送問題、ネットワークフロー問題)の解法を総整理! 早見表 二部グラフの最大マッチング、最小点被覆、最大安定集合、最小辺被覆についての結論を最初にまとめます。$|V|$ はグラフの頂点数、$|M|$ は最大マッチングのサイズです。 なお、記事の内容のあらすじは簡単に以下のスライドにまとめました。 https://www.slideshare.net/drken1215/ss-86894312 1. はじめに グラフ上の最適化問

    二部グラフの最小点被覆、最大安定集合 (最大独立集合)、最小辺被覆を総整理! - Qiita
    rydot
    rydot 2019/09/12
  • 最適化問題ソルバーのGLPKを使ってみた - Qiita

    さっそく使ってみる。 解きたい問題 カードを合成することでカードを強化していくタイプのゲームをプレイしていた。 システムは次のようなものであった。 各カードはそれぞれ経験値を持っており、経験値が多いカードほど強い。 経験値は合成によってのみ増やすことができる。カードAにカードBを合成することでカードBは消え、カードAの経験値にカードBの経験値が加算される。 経験値は一定の値に達するとカンストする。 今手持ちのカードが13枚あり、それぞれ次のような経験値を持っているとする。 223066 301999 225993 249157 348192 317660 282072 449708 87473 278373 310193 207917 170856 そして、経験値は1000000でカンストするとする。 最初の3枚を限界まで強化したいが、カンスト分を上回って無駄になる経験値ができるだけ出ない

    最適化問題ソルバーのGLPKを使ってみた - Qiita
    rydot
    rydot 2019/09/12
  • モグラたたき開発を卒業しよう 対策編 その2 - Qiita

    以下の記事は「モグラたたき開発を卒業しよう 対策編」の後半に書いていた部分を独立させ追記したものです。 品質を確保するうえで参考になりそうな記事を引用しています。最近の流れをつかんで、必要な情報を自分で見つけていって、職場のみなさんに紹介してくださると幸いです。 失敗百選 まずは、どのような失敗が製品開発の分野ではあって、そのような典型例から何を学ばなければならないのか、自分の感覚を研ぎ澄ましてください。 宇宙開発の分野でも失敗は起きています。 メートル法とポンド・ヤード法の勘違い、火星探査計画は水の泡 1996年6月4日――『アリアン5』フライト501 宇宙開発の分野では、O-ring(オーリング)1つでさえ、7名の乗組員が死亡した事故を引き起こしている。チャレンジャー号爆発事故 最も突出した要因は、NASAとサイオコール社が共に、接合部の設計不良が及ぼす危険に対して適切に対処しなかった

    モグラたたき開発を卒業しよう 対策編 その2 - Qiita
    rydot
    rydot 2019/09/09
  • 継続的インテグレーション(デリバリー)サービスを利用しないという罪悪 :ビルドのたびに手動でテストを実行させ続けるという罪悪 - Qiita

    継続的インテグレーション(デリバリー)サービスを利用しないという罪悪 :ビルドのたびに手動でテストを実行させ続けるという罪悪C++リファクタリング単体テストプログラム設計ソフトウェア開発 継続的インテグレーション(デリバリー)サービス を利用するようになって思ったことを、いまさらながら記す。 継続的インテグレーション(デリバリー)サービスを利用しないという罪悪 手動でのテストを各人のローカル環境で実行することの問題点 ものごとは、数量が10倍になるとやり方を変えなければならないことは多い。 同時開発する開発者の数が増えてくれば、自分の変更の数よりも、他の人の変更の数が格段に増えてくる。 その分、自分の理解していない部分で変更が加わって、いつの間にか破綻する可能性は出てくる。 手作業でそれぞれの人の環境でテストしていると、テストにかかる時間が増大していって、自分の担当しているコード自体の作業

    継続的インテグレーション(デリバリー)サービスを利用しないという罪悪 :ビルドのたびに手動でテストを実行させ続けるという罪悪 - Qiita
    rydot
    rydot 2019/09/09
  • モグラたたき開発を卒業しよう 対策編 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? モグラたたき開発を卒業しようの対策部分がそれなりの記述量になってきたので、別記事にいたします。 モグラたたき開発の現場を作り出してしまっているのは、その組織のマネジメント自体、組織の運営者(開発者自身も含みます)の意識です。この対策編に書いている作業に特別なことは何も記載されていません。地味な作業の積み重ねだと言って差し支えないでしょう。モグラたたき開発の最中にあって苦労している人は、自分の担当の作業に影響する前段の部分の作業が適切に反映できているのかどうか、前段の作業の担当者に確認を取ることです。確認を怠ると、実行したデータがまったく

    モグラたたき開発を卒業しよう 対策編 - Qiita
    rydot
    rydot 2019/09/09
  • モグラたたき開発を卒業しよう - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ソフトウェア開発をしているとデバッグは必須の作業です。とはいうもののデバッグ作業に苦しみたくはないはずです。 テスト駆動開発をしていないプロジェクトで、しかも単体テストを重視していないプロジェクトの場合、モグラたたき開発になっている可能性があります。 モグラたたき開発は、きちんとした自動化した単体テストを積み重ねていくのではなく、そのつど、気になった不具合を、気になった順番に解決しようとするアプローチです。 プロジェクト・マネジャーが知るべき97のこと モグラたたき開発を避けよう モグラたたき開発の特徴 ソフトウェアの世代が変わったとき

    モグラたたき開発を卒業しよう - Qiita
    rydot
    rydot 2019/09/09
  • 可能性の枝切りができない開発は必ず失敗する。 - Qiita

    開発は、有限の時間で有限のリソースで行うものです。 少ない差し手で勝負を決めなければならないものです。 ですから主張します。 「可能性の枝切りができない開発は必ず失敗する。」と。 「全ての項目をきちんと評価して」、「最適な選択を」、「それぞれの可能性を最大限に見積もって」、「誰にでも分かりやすく」など、できると思ってはいけません。それは必ず泥沼にはまり込みます。 枝切りができれば必ず正解にたどりつく種類のゲーム 話は変わりますが、倉庫番というゲームをしたことがありますか。それを例に、枝切りの重要性を示したいと思います。 荷物は押すことしかできません。荷物を引くことはできません。 荷物は1個しか押すことができません。2個以上の荷物を押すことはできません。 そこで、すべての荷物をゴール地点に運ぶことが目的です。 このゲームでは、そのつど選択肢があって、木構造でその選択肢を示していくことができま

    可能性の枝切りができない開発は必ず失敗する。 - Qiita
    rydot
    rydot 2019/09/09
  • 問題を難しくするな。 - Qiita

    問題を難しくするな。 ほんの少しの厄介さも、数が増えれば手に負えなくなる。 そのような厄介さを確実に減らしていこう。 フールプルーフを考えていないシステムは、複雑度が上がりすぎると手に負えなくなる。 UIが利用者にとって不可思議な前提を要求したり、押し間違いなどへの対策がないなど、そういう項目が増えすぎると手に負えなくなる。32桁の英数字をタイプすることを考えてみよう。これは128桁などのなったときには、タイプミスを生じないことは考えにくい。そのようなときには、来の操作をすることには無関係のところで手に負えなくなってしまう。 性能がこういう状態では出にくくなるとわかっているギリギリのところで動作させようとするな。 雪道で、道の端っこを歩こうとするようなものです。いずれ側溝に足を突っ込むことになります。 ものごとが100%精度でうまくいくようにはできない種類の問題に対して、100%の精度が

    問題を難しくするな。 - Qiita
    rydot
    rydot 2019/09/09
  • 品質は作りこまないかぎり実現できない - Qiita

    品質は作りこまない限り実現できない。品質を作りこんでこそプロだ。難しいことを実現しようとしていれば、なおさらだ。「うまくいくときだけ、うまくいく」なんて代物は、いつまでたっても実用にならない。 その当たり前のことをやれていない組織が増えてきているのではないか? 特に今の50代は、上の世代が作った枠組みで少し仕事したときの成果を、自分の実力と勘違いしている可能性がある。 品質へのこだわりを持とう 半導体プロセスでは、その品質確保に対してどれだけ労力が払われているか理解できますか。 クリーンルームでのプロセスで、汚染(コンタミネーション)を減らすことがどれだけ重要か理解できますか。 いっけん、違いのないような操作でも、わずかの違いでコンタミネーションが残ってしまって、実験がうまくいかなくなります。 クリーンルーム内での一つ一つの手順がどれだけ面倒であっても、それらを守らないと実用になる水準には

    品質は作りこまないかぎり実現できない - Qiita
    rydot
    rydot 2019/09/09
  • 失敗のリスクを減らす目標の設定を - Qiita

    失敗する事例を見ていると、失敗するだけの理由があって失敗しているのが分かる。 「負けに不思議の負けなし」 というように、失敗を繰り返しているときはそれだけの理由がある。 多数の改変を同時に行なえば失敗の率は高くなる。 主旨の異なる改変を5つ同時に行えば、1つずつ行なう場合よりも格段に成功する率は低下する。 ハードウェアの改変とソフトウェアの改変とを同時に実施すれば、それぞれ単独で実施する場合よりも失敗の比率は高まるし、原因の切り分けはできなくなる。 当然、失敗する可能性も高まる。 開発テーマのマネジメントをするリーダーは、そのことを承知して開発目標を立てて欲しい。 開発メンバーの方としては、失敗の可能性を減らす目標の設定を、リーダー対して働きかけよう。 問題の切り分けができるように自分の担当分のコードを書くこと。 単体テストを実施すること。 潜在的な危険についての情報を、他のメンバーと共有

    失敗のリスクを減らす目標の設定を - Qiita
    rydot
    rydot 2019/09/09
  • ドキュメントレビューに対する経験知(レビューを語る夕べのイベントレポート) - Qiita

    いろんな人がいろんな表現で話をして居たが、個人的にまとめると上記な感じになる気がした。 見る順番/指摘する順番としては、上から順の人が多く。 気づく順で言えば、「誤字脱字」が最初に気になる人が多い感じだった。 レビュー技法 ドキュメントの読み方 逐次型 頭から順に読んで行って、不自然な部分に立ち入ると読むのが遅くなる・・・と行った感じのタイプ。 俯瞰型 気になる部分を狙い撃ちでターゲットするタイプ。(天才肌?経験則?) 見て3秒以内に指摘出しちゃう感じ。 自分は? 自分は、逐次型っすね。俯瞰ほど天才肌にはなりきれてない感ある。 ただ、文頭から細かく読み進めるのではなく、以下な感じで見ていく。(ハイブリッド?) ざっと全体を見る(目的理解) 2〜3行の文章と、図表を見る(目的理解) 長い文章を読む(整合性確認) 項目間の整合性を見る(整合性確認) 「3. 長い文章を読む」以降は、「1. ざっ

    ドキュメントレビューに対する経験知(レビューを語る夕べのイベントレポート) - Qiita
    rydot
    rydot 2019/09/09