タグ

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

  • 意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita

    追記 その後GoConfernce2017で発表させていただき、その内容をまとめた記事を書いたので参考になれば幸いです。 GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang はじめに goroutineはGo言語の大きな特徴である並行処理を支える重要な機能です。 しかし、goroutineの仕組みについてしっかり理解しないままコードを書いてしまうと思わぬ挙動をしてしまうことがあるので注意が必要です。 今回はそんなgoroutineのスケジューリングの挙動についてまとめてみました。 僕自身がgoの書き始めの頃に引っかかった部分なので、初心者のgoroutineへの理解の助けになれば幸いです。 goroutineの特徴 goroutineは最小で2048byteなので、 Windows だと 1 MB、Linux だと 2 MB であるスレッドのデフォル

    意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita
  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita
  • OpenTypeの仕様入門 (前編) - Qiita

    OpenTypeというのは世界中で最も使われているフォントファイル形式の仕様です。 仕様はこことかにあります。 これを理解すればだいたいOKです。 THE END さて、仕様を読むのが面倒な方は下の続きもどうぞ。 OpenTypeフォントの構造 簡単にまとめると以下のような構造です。 ヘッダ データ 簡単ですね。 そして、このヘッダの中には それがどういう情報であるのか 見るべきデータがどこにあるのか が書かれています。 データの中にもまたヘッダがあることがあります。 そこにもやはり、それがどういう情報であるか、次に見るデータがファイル中のどこにあるか、ということが記されています。 冒頭に提示した仕様は、ヘッダがどのような構造体なのか、データがどういう意味を持つかということをまとめたものになります。 OpenTypeテーブル フォントはヘッダとデータで構成されているというお話をしました。

    OpenTypeの仕様入門 (前編) - Qiita
  • Now でクラウドの複雑さから解放されよう、今すぐに - Qiita

    次々に登場するクラウドの新サービスに疲れを感じていたら、これを試してください。 Now は新しいスタイルの PaaS です。 AWS や GAE とは比較にならないくらいシンプルで高速なデプロイができます。 2018年11月19日に Now 2.0 の内容で書き換えました。[差分] TL;DR Now が他とどう違うのかというより、どのように動作するかを書いたほうが分かりやすいでしょう。 Now のデプロイは以下の手順で行います。 now.json をプロジェクトに追加する now を実行する 認証用のメールが届いたらリンクを開く これだけです。 ソースが自動的にデプロイされ、now.json に従ってサーバが走ります。*.now.sh という形式のドメインが自動的に割り当てられて、瞬時に HTTPS で見られるようになります。CDN も有効になっています。独自ドメインを取得していれば、そ

    Now でクラウドの複雑さから解放されよう、今すぐに - Qiita
  • RustでDirectX12を使う - Qiita

    安全性、速度、並行性の3つのゴールにフォーカスしたシステムプログラミング言語Rust1でDirectX陣営のLow-overhead APIとして新たに(けっこう前に)策定されたDirectX12を動かします。(とりあえずメモ的な) Rustはまだまだ初心者なので間違ってたりもっとよくできたりする点があるかもしれませんが暖かい目で見てやってください。 環境 rustcはバージョン1.9.0を使用します。あと、たぶんWindows SDKが入ってるなら入ってると思いますがDebugging Tools for Windows(windbg)も入れておきましょう。D言語を一緒に入れてる人はパスの関係でコマンドラインでwindbgを起動するとD言語付属のやつが起動してしまうかもしれないのでファイル名を変えておくといいと思います。 追記: rustcはMSVC ABIのほうを使用すると安心かと思い

    RustでDirectX12を使う - Qiita
  • goyaccで構文解析を行う - Qiita

    go toolにはyaccというものがある。 これはunixの言語処理系で広く使われるyaccというパーサジェネレータのGoバージョンである。 稿はその使い方を説明するチュートリアルである。 対象読者 goyaccを使う - Qiitaという記事があって、これはgoのyaccを使って簡単な言語の構文解析をして使い方を説明している。 しかし、yaccについての基的な説明が完全ではなく(例えば%%とか)、yaccを触ったことがない人には若干難しい。 従って、私のようなGoの文法は理解しているがyaccを使ったことがない人向けにごく簡単な使い方を説明する。 参考資料 yacc - The Go Programming Languageが公式のドキュメントっぽいが、これもyaccの文法自体は他に任せている。 RHGの速習yaccがとても参考になると思う。 稿はあくまで取っ付き易いチュートリア

    goyaccで構文解析を行う - Qiita
  • go言語のデバッガ(delveとgdb)とcore dump - Qiita

    この記事は、Fujitsu Advent Calenderの3日目の記事です。 はじめに Fujitsu Advent Calenderを作った@YasunoriGoto1です。なんか、予想以上にすごい反響があってびっくりしています。温かい言葉をくれた方には厚く御礼申し上げます。また、厳しい言葉をかけてくださった方にも今後ともよろしくお願いします。 設立に至った経緯は2日目の記事で@tnaotoが書いてくれた内容のとおりです。「社外で実施するのは手続きとか色々ハードル高いよなー」って思っていたところに、@tnaotoや「かっこいい人」を始め、色々な人から背中を押してもらった感じです。 「かっこいい人」が出た時には、「今この瞬間を逃してはならない」とばかりにかなり急いで作ったので、Advent Calendarの趣旨とかQiitaがどういう場所なのかとか、正直色々広報不足で至らなかったところ

    go言語のデバッガ(delveとgdb)とcore dump - Qiita
  • macの環境構築をできるだけ自動化する - Qiita

    この記事はドワンゴ Advent Calendar 2016 3日目の記事です。 昨日は@tanaproさんのEthereumのコントラクトで学ぶ、ポンジースキームの仕組みについて でした。 @regtanです。こんばんは。2016/10にMacBookPro(Late2016)が発表されました。発表直後はESCキーがなくなり、ジョブズの息吹を感じないという話で盛り上がっていました。ここ数週でお手元に届いたユーザーさんも多くなり、みんな大好きなapple storeの店頭でも手に入るようになりました。 最初の評判ではあまり評判の良くなかったtouch barも寿司を流していたりする様子がtwitterで見られるほどに受け入れられ、割とみんな楽しんでいるように思う今日この頃です。わたしも「iOSアプリ開発がんばるぞい」と3回唱えてからMBPを手に入れたのですが、以前のdotfileも古いし、

    macの環境構築をできるだけ自動化する - Qiita
  • 共変戻り値と反変引数 - Qiita

    C#を学習すると共変と反変という用語がでてきます。難しそうな用語ですが、その取っ掛かりとして戻り値と引数に的を絞って図によるイメージで説明します。数学的な知識は前提としませんし、コードも簡単なものしか出て来ません。型周りの知識を整理するのにも役立つでしょう。 この記事で最終的に説明したいことは、次のようにデリゲートから参照するメソッドの戻り値や引数の型を変える規則についてです。 C Foo(A a) { return new C(); } // 戻り値はBの派生クラスC、引数はBの基底クラスA delegate B Delg(B b); // 戻り値と引数ともにB Delg d = Foo; // 型が一致しないのに、なぜ許されるのか? この規則はイメージしにくく混乱を招きがちですが、図による直感的な説明を試みます。 ※ 具体例で用語に慣れることも目的としています。なるべく話を単純にするた

    共変戻り値と反変引数 - Qiita
  • Qt + CMakeメモ - Qiita

    なかなか情報もないので・・・ハマりどころメモとか。 一次情報はこちら。 Qt Creator 4.0系になってから、CMake対応強化がリリースノートに乗ることが増えてきています。実際、そこそこ使える(CLionと互角ぐらい)という印象ではあるんですが、ハマりどころも多そうなので、気づいたらメモしていこうと思います。 CMakeとは メタなMakeです。MakefileやらVisual Studioのプロジェクトファイルやらxcodeのプロジェクトファイルやらを生成し、実際のビルドは他のツールが行います。そういう意味ではQMakeとほぼおなじですね。 CMakeは今後はデファクトになりそうな感じではありますが、結構覚えることも多く、使うのは簡単ではないです。覚悟は必要です。QMakeの方がシンプルです。ただ、Qt以外のプロジェクトでも使われることが多いので、Qt外のライブラリを利用するとか

    Qt + CMakeメモ - Qiita
  • C/C++はnull安全になる前に安全に差の絶対値を計算できるようになるべきではないか - Qiita

    Caution 記事中で符号なし整数の演算結果が負になる場合の挙動をUBとして紹介していますが、定義された動作でした。 N4318の As can be seen, per the standard the negative result wraps around from the maximum positive value for the simple minus operation の文章ちゃんと読んで、執筆時の私・・・ はじめに 最近、ツイッターを見ていると、プログラマの間でnull安全という言葉がバズっていますね。私も次のようなエントリを楽しく眺めていた訳です: null安全でない言語は、もはやレガシー言語だ null安全はいいぞ。だって、型安全はいいぞ。 null安全を誤解している人達へのメッセージ さてそんな中、少しだけ私の心に留まったエントリがこれです: null安全な言語

    C/C++はnull安全になる前に安全に差の絶対値を計算できるようになるべきではないか - Qiita
  • Mac のターミナルに `CAL` と打ち込んだときの挙動を追った話 - Qiita

    みなさん、こんにちは。 最近、曜日や日付の感覚とかがあまり意識できない不健康な生活をしております。 @takano32 です。 そんな私は月曜日とか休日明けとかによくターミナルに cal って打ち込んで日付を確認したりします。 date でもいいし、 Mac なら右上に日付が出ていたりするわけですが、習慣なんだからしょうがない。 ところがですね。今日、Mac の仮想端末に Caps Lock が入ったまま CAL と打ってしまったんですよ。 「ノー、サッチコマ…えっ?なんかカレンダーでてる!」というね。 そこまでなら「あー、HFS+ のファイルシステムってデフォルトのフォーマットでは大文字と小文字を区別しないから、小文字の cal が呼ばれたのかな」って思うわけですが、よく見ると変なんですよ。 小文字 cal と 大文字 CAL の出力 小文字 cal のカレンダーはこんな感じ $ cal

    Mac のターミナルに `CAL` と打ち込んだときの挙動を追った話 - Qiita
  • FLOCSSを使ってCSSファイルを20,000行から9,000行にした話 - Qiita

    入社して僕が最初にアサインされたのがこのプロジェクト。 サービスをスタートさせたのは今年の2月。最初は外注でとりあえずサービスを作ることに集中していたらしい... その結果、どのスタイルがどこに作用するか全く分からないCSSの魔境でした。 これでは簡単なページを追加するにも一苦労。 そこで、20,000行あるCSSファイルのリファクタリングに踏み切りました。 当時の問題 スタートアップのサービスなのでもっと機能を追加したり、変更したりしたいと言う要望は日に日に大きくなっていました。 一方で、実際に機能を作ったとしてもそれを view に反映させるのも日に日に苦しくなっていました。 僕たちを苦しめていた理由は以下の通りです。 どこにスタイルが作用しているか分からないので、CSSを安易に変更ができない。 新しい部品を付け足す時にCSSの影響範囲を考慮しなくてはならず、プロダクトのUI変更が困難

    FLOCSSを使ってCSSファイルを20,000行から9,000行にした話 - Qiita
  • まだ Storyboard で消耗してるの?——Re:ゼロから始める視覚表現(ビジュアルリプリゼンテーション) - Qiita

    まだ Storyboard で消耗してるの?——Re:ゼロから始める視覚表現(ビジュアルリプリゼンテーション)XcodeStoryboardAutoLayoutポエムSwift 煽り全開の dis りタイトルになってしまいましたが、まあそれくらい筆者が不満を抱いたってこととして受け止めていただければ幸いでございます。 ほとんどの iOS 開発の教材はおそらくこのように教えているでしょう。「Xcode 開いて、Main.storyboard をクリックして、blabla…」と。 そしてほとんど(筆者調べ)の開発者たちは、結局最後まで、Storyboard の効率的な使い方が見つからず、多少なりとも心のどこかで「F*ck」とぼやいているのではないかと。 というかそもそもそこまでたどり着く前に「Storyboard の使い方わかりましぇーん」で終わってしまう屍も数多くいるのではないかと。 アップ

    まだ Storyboard で消耗してるの?——Re:ゼロから始める視覚表現(ビジュアルリプリゼンテーション) - Qiita
  • ゲームエンジン・ライブラリ・ツールの開発のカレンダー | Advent Calendar 2016 - Qiita

    ゲーム制作を支援するツールの開発者が、自身のツールや、そこで使われている技術について紹介する Advent Calendar です。 プログラミングに限らず、何らかの形でゲーム制作に役立つツールを募集します。 商用 / 非商用や規模は問いません(オレオレエンジンも歓迎)。400 字程度の簡単な紹介のみでも大丈夫です。 目的 ゲーム開発に興味のある人たちに色々な選択肢を知ってもらう ゲーム制作支援ツール開発への関心を高める ツールの開発者同士が知見を交換する 記事の例 ツールの特徴や活用事例の紹介 ツールの入門記事 ツールを開発して得た知見や技術の解説 ユーザの増やし方、ユーザコミュニティ運営のノウハウ or 失敗したこと

    ゲームエンジン・ライブラリ・ツールの開発のカレンダー | Advent Calendar 2016 - Qiita
  • https://qiita.com/utamaro/items/2557a38580a49fde4fda

  • Hello World WebAssembly - Qiita

    概要 emscriptenと関連ツールでHello worldするC++コードをWebAssembly向けにビルドする。 環境 MacBook Pro OS X Yosemite Google Chrome Canary 51.0.2685.0 canary (64-bit) 準備 emsdk emscripten、clang等々はこいつで一括して入れるのが楽。 Emscripten SDK (emsdk)から入手して、sdk-incoming-64bitを入れる。 cd path/to/emsdk_portable ./emsdk update ./emsdk install sdk-incoming-64bit # 時間かかるよ ./emsdk activate sdk-incoming-64bit

    Hello World WebAssembly - Qiita
  • ゼロから始めるJavaScript生活 - Qiita

    (訳者注: これは、JavaScript Stack from Scratchを翻訳し、まとめて読めるように1ファイルにしたものです。元の翻訳と各種ファイルについては、日語訳forkリポジトリを参照してください。また、原文が活発に更新されているため、訳文も追従して更新されます。ご了承ください。) モダンJavaScriptスタックチュートリアル、ゼロから始めるJavaScript生活へようこそ。 ⚠️️ このチュートリアルのメジャーアップデート版を3月初旬に公開する予定です。ご期待下さい! より詳しく(英語). これはJavaScriptスタックを使い始めるための最短最速のガイドです。このガイドは一般的なプログラミングの知識とJavaScriptの基礎を前提としています。これら全てのツールを一緒につなぎ合わせることにフォーカスしており、各ツールについて可能な限りシンプルな例を提供します。

    ゼロから始めるJavaScript生活 - Qiita
  • Golangでエラー時にスタックトレースを表示する - Qiita

    Golangerrorにはスタックトレース情報はない.基は必要ないと思うし困ったこともない.一方で新しくプロジェクトに入りかつコードベースに慣れてない場合はどこが問題かアタリをつけるためにあっても良いとも思う.pkg/errorsを使ってるならそれはすぐに実現できる. pkg/errorsの基的な考え方についてなどは GoCon 2016 springの後に "Golangのエラー処理とpkg/error"にまとめた(作者のDaveのブログ記事は "Don’t just check errors, handle them gracefully").ここで強調して書いたのはちゃんとエラーをアノテートする(何をしてそのエラーが発生したかの状況を付加する)ことである.特に外部のパッケージとやり取りする場合,つまりまともなエラーメッセージが返ってこないかもしれない場合,pkg/errorsの

    Golangでエラー時にスタックトレースを表示する - Qiita
  • オレの最弱のES6開発環境 - Qiita

    ブラウザのES6サポートが急速に良くなってきています。社内ツールとかElectronとか、ブラウザの普及率を気にしなくていい環境ならそろそろ使えるのではないかと思って調べたり試してみたりしています。 更新 https://caniuse.com/#search=es6 http://kangax.github.io/compat-table/es2016plus/ これを見るともうほぼ実装は完了していますね。Node.jsも対応していますし使えるブラウザが限定できるならもはや変換なんかしなくても大丈夫。注意点としては以下の2つ。 IE11は渋い ES6 modulesはまだまだ ソースをES6で書いて、結果もそのままES6という手抜き開発に使えるツールのメモです。手抜きなので、おそらく経年変化の影響はほとんどないはずです。対象としてはブラウザだったり、ElectronでのSPA開発です。

    オレの最弱のES6開発環境 - Qiita