Add new...Clone CompilerExecutor From ThisOpt RemarksStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph
TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日本に住んで日本の仕事をしていると国内時差もなく1 夏時間もない2 日本標準時 (Japa
少しプログラミングが出来るようになると、それはそれでまた伸び悩むこともある。始めたばかりの頃は、プログラムが動くだけで楽しかったけれど、実用的で、少し複雑で難しいものを作ろうとすると、途端に時間がかかってしまう。 プログラミングがうまくなる近道などないとはいえ、経験者だからこそ伝えられることもあるのではないか。そう言えば、私も若い頃に先輩から、コードを書くこと以外にも、プログラミングをする上での姿勢や習慣などを教わった。 私もプログラミングを再開したがブランクがあるので、今となっては古い習慣もあるかもしれないが、私が先達から学んだことを伝えておくために残しておこう。もしかしたら、抽象化すればビジネスにも通じる習慣もあるかもしれない。 エラーが出ても慌てず、メッセージを読もう プログラミングをしていてエラーに出会わないことはないだろう。うまく出来たと思って実行ボタンを押したけど動かない、落ち
この記事は Akatsuki Advent Calendar 2017 の 9 日目の記事です。 8日目: システム障害解析におけるログのあれこれ 概要 今年読んだ記事・本の中で、個人的に最もためになったのがマイクロソフト公式解説書の「C#実践開発手法」でした。 内容としては、変化に容易に適応できるコード(アダプティブコード)を実現するために、以下の手法をC#でどのように実践するかを解説する本です。 アジャイル開発 デザインパターン SOLID原則 C#に携わって1~2年ぐらいの方には是非おすすめしたいのですが、440ページあったりしてサラッと読むには若干辛いです。 というわけで、宣伝・復習用にUnityのサンプルプロジェクトと共に基本の要点をまとめました。 ※ あくまで自分にとって役に立った部分をまとめたもので、書籍より基礎的かつ部分的になります。 ※ 興味のある方は本屋さんとかで手にと
依存がなく、テスト可能であり、クリーン。 Uncle Bobのクリーンアーキテクチャの概念を読んだので、これを私はGoで実装してみたいと思います。このアーキテクチャは、自分たちの会社である Kurio – App Berita Indonesia で使っていたものに似ていますが、少し違っています。大きな違いはなく、概念は一緒なのですが、フォルダ構造が違っています。 サンプルのプロジェクトとして、記事をCRUDで管理するリポジトリを https://github.com/bxcodec/go-clean-arch にpushしてあります。 * 免責条項 ここで使われているどのライブラリあるいはフレームワークも、利用を特別推奨しているものではありませんので、ご自身あるいはサードパーティによる同じ機能のものと入れ替えることが可能です。 基本的な考え方 ご存知のように、クリーンアーキテクチャで設計
TL; DR 「プログラマの三大美徳」はソフトウェアに向けるものであり,人に向けるものではない. 「HRT」は人に向けるものであり,ソフトウェアに向けるものではない. プログラマの三大美徳 プログラマの三大美徳というものがある.Perl を開発した Larry Wall が提唱したもので,「怠慢」「短気」「傲慢」からなる. 詳しくは上述のリンクにある各解説記事に譲るのだけど,例えば「怠慢」とは,「エンジニアとして手間を省くために最大限の努力をする気質」を指す.元の Larry Wall の記述では当たり前過ぎて省略されているのだけど,「最大限の努力」とは「仕事をしないために交渉する努力」ではなく「技術で手間を解決する努力」を指すものだと思われる (勿論,場合によっては前者が大事になるケースも有るのだけれど) . 「プログラマの三大美徳は "怠慢", "短気", "傲慢" である」というワー
Introduction This book gives some guides for C++ programmers who wish to learn Rust in a quick and informal way. Rust is aimed to give an alternative to C++ in system programming. Most C++ programmers expect learning Rust to be easy, but it turns out to be a bit more difficult. The syntax of Rust is a bit alien to C++ programmers, but this might not be the cause of the difficulty. Rust introduces
tl;drコードレビューが上手く回って無くてチームが疲弊して辛かったよレビュアーの言い方を変えるだけで大体解決するよ立場とかで例外を許さず、みんながレビューしてレビューされると良いよはじめにあるプロジェクトでGitHubのPRベースでのコードレビューを導入をしました。いかんせんチーム開発が初めてレベルの新人さんが多く、何かと苦労しました。特にレビュイーに対して不効率な指摘はそのまま指示の不明確さに繋がり、チーム全体の開発生産性を下げるので、レビュアーはレビュイー以上に気を使う必要があると感じました。下手をすると、レビュイーのメンタルが弱って闇堕ちするので、チームメンバーの最も大人な人がメンタルケアしたりします。大人な人は大体がリーダー格なので、その人の時間が奪われると何かと開発現場が疲弊しちゃいますね。コードレビューってそんなに難しいものだっけと思ったりもしますが、反省の意味も込めて実際に
PySpa統合思念体です。これからJavaScriptを覚えるなら、「この書き方はもう覚えなくていい」(よりよい代替がある)というものを集めてみました。 ES6以降の難しさは、旧来の書き方にプラスが増えただけではなく、大量の「旧来の書き方は間違いを誘発しやすいから非推奨」というものを作り出した点にあります。5年前、10年前の本やウェブがあまり役に立たちません。なお、書き方が複数あるものは、好き嫌いは当然あると思いますが、あえて過激に1つに絞っているところもあります。なお、これはこれから新規に学ぶ人が、過去のドキュメントやコードを見た時に古い情報を選別するためのまとめです。残念ながら、今時の書き方のみで構成された書籍などが存在しないからです。 たぶん明示的に書いていても読み飛ばす人はいると思いますが、すでに書いている人向けではありません。これから書くコードをこのスタイルにしていくのは別にいい
この記事はGunosy Advent Calendar 2017の13日目の記事です。 広告技術部の@harahenikuです。 主な業務はGoによる広告配信APIの開発です。たまにPythonとかDjangoとかもやってます。 Goは速いですが遅いコードをかけば当然遅くなってしまいます。 この記事ではGoのプログラムを遅くしないために、実際に行ったチューニングを幾つか紹介したいと思います。 スライスの処理長さを指定するスライスの初期化は次のようなコードはappendでallocが発生します。 feature := []VectorEntry{} for i, v := range vec { e := VectorEntry{ ID: i+stride, Value: v, } feature = append(feature, e) }appendでallocされないように、makeで
メディア 連載一覧 連載まとめ読み@IT eBook 記事ランキング @IT Special セミナー ホワイトペーパー クラウド AI IoT アジャイル/DevOps セキュリティ キャリア&スキル Windows 初・中級者向けAI その他 Server & Storage HTML5 + UX Smart & Social Coding Edge Java Agile Database Expert Linux & OSS Master of IP Network Security & Trust System Design Test & Tools Insider.NET ブログ AI for エンジニアリング ローコード/ノーコード クラウドネイティブ Windows 11/365 その他の特集 @IT アジャイル/DevOps Insider.NET NETマルチスレッド・プ
クラスは参照型ですが、構造体は値型です。 参照型はヒープ上に割り当てられ、メモリ管理はガベージ コレクターによって処理されます。 値型はスタックまたはインライン上に割り当てられ、スコープの外に出たときに解放されます。 一般に、割り当てや解放は値型の方が簡単です。 ただし、大量のボックス化とボックス化解除が必要なシナリオで使用すると、参照型と比べてパフォーマンスが低くなります。 詳細については、「ボックス化とボックス化解除 (C# プログラミング ガイド)」を参照してください。 値型と参照型の詳細については、「共通型システム」を参照してください。 型のインスタンスが小さく有効期間が一般に短い場合や、型のインスタンスが一般に他のオブジェクト内に埋め込まれる場合は、クラスではなく、構造体を定義することを検討します。 型が次に挙げるすべての特性を持たない場合、構造体は定義しません。 プリミティブ型
初心者C++Advent Calendar 2017 この記事は初心者C++Advent Calendar 2017 15日目の記事です << 14日目|C++を学ぶにあたって参考にした書籍・Webサイト || 16日目|何か書きます >> 今週3本目、このAdCでも3本目の記事です。期限に間に合わなかったでござる・・・。 今年の初心者AdC++は平和ですね・・・。 はじめに みなさま、ナマステ。さて、この記事のタイトルを見て、「時代・・・サトウキビ・・・忍者・・・うぅ、頭が」となった人は私と趣味が似ています・・・って話をするのは何回目だろうか。 先日ニコニコ(デクレッシェンド)が発表されましたが、Qiitaはクレッシェンドしていって貰いたいものです(なおデザイン改悪)。 (追記:と、この記事を書いていたら百花繚乱氏が登場した動画と生放送サービスに対する意見交換会が開かれましたね。われこそ
こんにちは。COUNTERWORKSアドベントカレンダー13日目担当の疋田です。 先月からエンジニアとしてJOINしました。現在、業務ではshopcounterというサービスのRailsアプリケーション開発や日々の運用、データ集計や分析を元にしたプロダクトの改善などをメインで行っています。 スタートアップのエンジニアを経験していく中で、常に素早くPDCA回してユーザからのフィードバックをプロダクトに反映することが重要になってくるため、エンジニアとしてはコードの変更のしやすさとか捨てやすさ、読みやすさってかなり重要だなーと改めて強く思ってます。 今回は3年くらいRailsやってきた中でちょっとずつ溜まってきたメンテするときこういうコード辛かったなって部分を共有できたらなと思います。 ちなみに、これらはすべて今までの自分自身もやっていた時期があるコードであり、反省の意味も込めて書いてみます。
ゲームなどのコンテンツにおいて、「当たり判定」から逃れることはできません。オブジェクトとオブジェクトが衝突したかどうかという判定は、インタラクティブコンテンツにおいて最も重要な部分になるからです。 当たり判定の実装自体は難しくありません。ですが、素朴な実装ですと、対象となるオブジェクトが大量である場合に、十分なパフォーマンスが出ません。これはオブジェクトの多い、現代的なゲームでしたり、弾幕シューティングなどを作るときに大きな障害となります。 この記事では、大量のオブジェクトの当たり判定を処理する、効率的な方法について紹介します。 まずは素朴に実装してみる 当たり判定の処理を語るには、ある程度ゲームの骨組みのようなものが必要になってきます。もちろんクラスなどを使わないベタ書きでもよいのですが、大変読みにくくなってしまいます。ですので、今回は、まず簡易的なゲームエンジンのようなものを作って、そ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く