サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
qiita.com/yohhoy
参考資料 次期C標準 (C23) の内容が固まったらしい cppreference.com - C23 🙇 Q. これはC++の記事というよりも、Cの記事ではないですか? A. 「お前がそう思うんならそうなんだろう お前ん中ではな」 C99言語機能では_Boolキーワードとして導入され、ヘッダstdbool.hによりbool型とtrue/false定数が有効となっていた。C23以降は常にbool/true/falseとして利用可能となる。 ↩ C99言語機能では_Static_assertキーワードとして導入され、ヘッダassert.hによりstatic_assertが有効となっていた。C23以降は常にstatic_assertとして利用可能となる。またC23からC++17同様に第2引数を省略可能となる。 ↩ C99言語機能では_Thread_localキーワードとして導入され、ヘッダt
“こんなゾンビだらけの言語に居られるか!俺は他の言語に出て行くぜ!” -- 行方知れずのプログラマー 🧟Zombie Names📛 C++17標準ライブラリ仕様から「Zombie names」というセクションが追加され、過去バージョンで利用していた識別子(クラス名や関数名など)が予約済みとして列挙されるようになりました。1 ...嘘じゃないよ:https://eel.is/c++draft/zombie.names C互換ライブラリ[C++11で非推奨, C++14で削除] gets バッファオーバーラン脆弱性につながるため、今すぐ利用停止してください。バッファサイズを明示指定するfgets関数で代替可能です。 スマートポインタauto_ptr<T>[C++11で非推奨, C++17で削除] auto_ptr auto_ptr_ref C++11以降はunique_ptrクラスで代替可
C++20 では全C++プログラマ待望[要出展]の「コンセプト(Concepts)」が正式導入されました。 この記事では“入門以前”と称して、C++コンセプトのメリットをざっくりと説明します。詳細な仕様説明は行わないことを予めご了承ください。 後日追記: 2020-12-15付けで国際標準規格 ISO/IEC 14882:2020 としてC++20が正式発行されました。 C++コンセプトって何? 例えば cppreference.com(日本語版) 冒頭では下記のように説明されます。なるほど分からん。言語仕様の説明としては間違いありませんが、これだけでC++コンセプトを理解するのはさすがに難しいでしょう。 クラステンプレート、関数テンプレート、および非テンプレート関数 (一般的にはクラステンプレートのメンバ) は、制約と紐付けることができます。 制約はテンプレート引数に対する制限を指定しま
H.266/VVC(Versatile Video Coding) ITU-T Rec. H.266 Versatile video coding ISO/IEC 23090-3 MPEG-I Versatile Video Coding H.264/AVC および H.265/HEVC の直接後継となる動画像コーデック国際標準規格。 "Versatile"=多用途 とあるように、HD~UHD(4K,8K)解像度をもつSDR/HDR(Standard/High Dynamic Range)動画像、360°パノラマ動画像、Light-fieldカメラ、スクリーンコンテンツまで広範な用途での利用を目指している。 コーデック性能比較 新しい H.266/VVC コーデックは、一世代前の H.265/HEVC コーデックにくらべると1: 同等の客観的画品質(PSNR-Y)であれば、ビットレートを
はじめに C++プログラミングにコンパイルエラーは付き物です。コンパイラからのメッセージに頼らずに、正しいC++プログラムを書き上げることなど不可能です。(ここでは脳内C++コンパイラ搭載型超人の存在は無視します:D) C++標準ライブラリは便利なアルゴリズムを数多く提供しており(通称 "STL")、大部分のC++プログラマはその恩恵を受けています。しかしSTLを駆使したコードのコンパイルエラーは、時として長大で難解なメッセージを出力することがあります。 この記事ではソートアルゴリズムsortを題材にして、現状(C++17)エラーメッセージの問題点を確認し、きたるC++20時代のエラーメッセージを読み解いていきます。 C++17時代のエラーメッセージ 下記ソースコード片をコンパイルすると、どんなエラーメッセージが出力されるでしょう? 注:このコードはコンパイルに失敗します。 #includ
https://mpeg.chiariglione.org/standards/mpeg-5/essential-video-coding 正式名称「MPEG-5 Part 1 Essential Video Coding」 ISO/IEC 23094-1 Essential video coding 特許問題により普及しないH.265/HEVCコーデックの代替を狙った、ライセンス・フレンドリ(licensing-friendly)な動画像コーデック。 目的 ロイヤリティフリー(RF; Royalty-Free)な枯れた技術1のみを用いる Baseline Profile と、特許技術を用いてより高効率を目指す Main Profile という2オプションを提供する。 ロイヤリティフリー・コーデック運用ができるよう、任意の Main Profile 向け符号化ツールは選択的に無効化可能。
Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Where have all the declarations gone? 某日某所、3人のプログラマの雑談より: Xさん「C言語って関数先頭でしか変数宣言できないから面倒だよねぇ。」 Yさん「何いってんすか、{~}ブロックの先頭ならいつでも変数宣言できるしょ。」 Zさん「いやいや、イマドキのC言語ならどこでも変数宣言できますから。」 さて3名のプログラマのうち、誰の主張が正しいのでしょう?もしかして、過去には彼らが言うような制限も実在したのでしょうか?これってトリビアになりませんか? このトリビアの種、つまりこういうことになります:
template <auto N> auto func(auto x) { auto r = N + x; return r; } // 呼出し例 assert( func<1>(0.5) == 1.5 ); この記事では、C++言語仕様改定により導入された各autoキーワードの役割を説明します。同時に、該当用法が存在しなかった時代でもコンパイル可能なソースコードへの書換えも行います。 C++20時代 C++20では 関数パラメータ型にautoを書ける ようになります。これはC++言語仕様へのコンセプト(Concept)導入とともに追加された、関数テンプレート定義の短縮記法 です。
低レイテンシ(low-latency)で計算コストの小さい(lightweight)、視覚的ロスレス(visually lossless)品質のデジタル静止画像圧縮技術(コーデック)。 特徴と応用先 JPEG XSコーデックの特徴は下記の通り: 最大解像度: 8K フレームレート: 24 ~ 120fps 色空間: RGB, YCbCr(YUV)系 品質劣化の小さい視覚的ロスレス 圧縮率 1/2 ~ 1/6 で7回の反復エンコード後 [IIS-INTRO] 軽量な画像処理のため低消費電力 低レイテンシなエンコード/デコード処理 処理レイテンシ=32ライン未満 [IIS-INTRO] 比較的簡易なアルゴリズムのため実装が容易 小さなASIC/FPGAハードウェア実装面積 SIMD命令やGPU利用による高速なソフトウェア実装 JPEG XSコーデックは、低計算量・低レイテンシが要求されるアプリ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Alliance for Open Media(AOM) により開発されているロイヤリティ・フリー(Royalty-Free)な動画像コーデック「AV1」と、同コーデックにおける特許(Patent)の考え方についての情報収集メモ。 超要約: コーデック仕様 と エンコーダ/デコーダ実装 の ロイヤリティ・フリーを保証する。 この保証が 現在から将来に渡って担保される よう最大限配慮されている。特に 防御的解除 条件により特許訴訟への対抗策が明示されている。 防御的解除=(発端の)訴訟を起こした団体/個人に対して、即時のライセンス解除を発
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ソース画像ファイル{source}から生のHEVCビットストリームへエンコードし、続いてHEIFファイル形式に格納する。 $ ffmpeg -i {source} -vcodec -pix_fmt yuv420p -codec:v libx265 ¥ -crf 15 -preset placebo -x265-params info=0 -f hevc temp.hvc -y $ MP4Box -add-image temp.hvc -ab heic -new output.heic 上記コマンド中の-crfで画質とファイサイズのトレードオフを制御する。値が小さいほど高画質だがファイルサイズが大きくなり、値が大きいほどファイサイズが小さくなるが画質は劣化する。 HEIFファイルの表示 NokiaによるJavaScript実装を利用すると、既存のWebブラウザ上でHEIFファイルを画像表示で
MPEG議長Leonardo Chiariglione氏のブログ記事によると、2020年6月現在の権利者は45企業・団体に急増しており、うち2/3は3つの特許プールいずれかに所属するが、残り1/3はいずれにも属さないという分布状況です。日本でもBS4K/8K実用放送が開始されたように放送業界ではH.265/HEVCコーデック利用が本格化し始めましたが、ストリーミングや双方向Web会議など動画像コーデック需要が急騰しているWeb業界での利用はわずか12%程度に留まるため、MPEG系コーデックのプレゼンス低下は避けられないと予測しています。 MPEG動画像コーデックの歴史を振り返ると、特許問題はそれぞれの商業的成否に強い影響を与えてきました。 MPEG-2 Videoコーデックは2020年現在の日本でもテレビ放送に使われ続けており、明らかな成功モデルとなっています。ちなみにMPEG-2 Vid
変換前は画像全体で 180000ビット だったものが、ピクセル値とビット列の対応を変更した だけで 143602ビット へと縮みました。変換前後でのビット量比は 1:1.25 (1÷1.25=80%)、わずか20%ですがデータサイズ削減に成功しました。このとき、デジタル画像を構成するピクセル値は一切変化していませんから、この変換こそが可逆圧縮です!...納得できるまで読み返してくださいね。 ここで使った対応表は、JPEGコーデックでも利用する「[ハフマン符号(Huffman coding)][wp.huffmancoding]」によるものです4。ハフマン符号は[エントロピー符号(entropy coding)][wp.entropycoding]の一種であり、前節で説明したエントロピーつまり "データの統計的な偏り" を利用した可逆圧縮アルゴリズムです。5 偏ったデータ Is Awesom
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? デジタル画像の基礎 JPEGエンコーダやデコーダは、その入出力データとして画像を取り扱うプログラムです。その実装にあたっては、コンピュータが扱えるよう数値化された画像、つまり「デジタル画像(digital image)」に関する知識が不可欠です。本記事ではJPEGコーデックの理解と、JPEGデコーダ実装に必要となる知識を中心に解説していきます。 画像=波(なみ) あらゆる画像(image)、普段何気なく目に入ってくる風景・人物、書籍やキャンバスに書かれた文字・絵画は、空間的に広がるアナログデータ(アナログ画像)です。簡単のため、まずはモ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Webを席巻し続ける JPEG(じぇいぺぐ) 画像圧縮。あのJPEGファイルからフルカラー画像へと変換する JPEGデコーダ を、あなたの手で一から作り上げよう!「週刊 JPEGデコーダをつくる」創刊。創刊号は特製バインダー付きで特別定価290円。 …ごめん。ほとんど冗談です。 週1ペースは無理なので不定期、特製バインダーは付きませんし、そもそもお代は頂きません(あ、貰えるならいつでもウェルカム)。全体構想もぼやーっとしかないので何分割するかも未定ですが、少なくとも実装だけは終わっています(後述)。 まえがき 本連載記事では、JPEGフ
2017年3月にGoogleから発表された新しいJPEGエンコーダ「Guetzli」と、同エンコーダが用いる画品質評価アルゴリズム「Butteraugli」について思うところとか。 Announcing Guetzli: A New Open Source JPEG Encoder GitHub google/guetzli GitHub google/butteraugli 多くのニュースサイトで『Google、JPEGを35%小さくできるエンコーダー「Guetzli」をオープンソースで公開』のようにセンセーショナルに紹介され、またGoogle社の手によるネームバリューもあったのか、世間の強い興味を引いたように思います。OSS方式にてソースコード公開されており、実際にエンコーダを動してみた方による良い/悪い評価結果が出てきています。 この記事では、同エンコーダ作者 Jyrki Alaku
int a = /*...*/; int b = /*...*/; // 変数a, bの値を交換 a ^= b; b ^= a; a ^= b; この記事の1行まとめ:あのC/C++言語もプログラマ・フレンドリに変化しているよ。それでも自分の足を撃ち抜きたくなければ、小賢しいコードは書かないように。 おことわり 本記事は、はてなダイアリーの記事でも利用した draw.io サービスを使ってお絵かきしたい欲求(8割)と、同記事をまとめた後に気づいた内容の整理(1割)と、昨年(2016)のC++ Advent Calendar残り1枠を埋める目的(1割)で書かれました。 このように不純な動機にもとづくため、あまり丁寧な解説を行っていません。特に後半C++11以降の説明では、Cryoliteさんによる一連の連載記事を前提とします。もし未読であれば連載記事を一読してから、本記事に戻られることを強く
本記事は C言語 Advent Calendar 2016 22日目(2週間ぶり3度目) にエントリしています。 当初、12/1で参加した時は4エントリしか参加表明がなかったのに、自転車操業のごとく2度目の参加につながり、気が付いたら25日分全てのエントリが埋まったようです。おめでとうございます。みなさんC言語好きなんですね(?) プログラミング言語Cの sizeof演算子 に関するネタを、基本の"キ"から重箱の隅つつきまで揃えました。1 各話題にはマニアック度(=どうでも良い度合い)を独断と偏見で3段階評価してあります。★が少ないほど広くC言語プログラマに知っておいて欲しい事項(=重要)です。...普通のランキングと逆じゃねーか。 なお本記事の内容は、特に断りがない限りISO/IEC 9899言語仕様(C90/C99/C11)に準じます。また用語の日本語訳はJIS X 3010規格票に合
時は2016年、プログラミング言語Cの言語仕様は2度のメジャーバージョンアップを経て、"ISO/IEC 9899:2011"(通称 C11)にたどり着きました。ところで誰か使ってるの? もちろん、これでC言語の進化が止まったわけではありません。次世代標準 C2x に向けた検討が始まっているのです。C2xリリーススケジュールとして、2021年末までの検討作業、2022年末までの国際標準(IS)発行が予定されています。 C2x憲章 ISO/IEC JTC1/SC22/WG14 N2086 "Programming Language C - C2x Charter"より、プログラミング言語Cの 次世代標準 C2x に向けて、基本原則として考慮される15項目のリストを訳出しました。各項目では冒頭の要約文のみを訳出しているため、詳細について知りたければ原文を参照ください。 オリジナル原則 1. Ex
#include <cstdio> #define NUMBER 42 static void func(int& rv) { int local = rv; if (local == NUMBER) { std::puts("hit"); } else { std::puts("stay"); } } int main() { int v; // indeterminate value func(v); } 答え: gcc 6.1, -O2オプション: stay clang 3.9.0, -O2オプション: hit は?clangなにやってんの? clangの場合、マクロNUMBERを任意の数値にかえたとしても結果はhitになります。 一方のgccは何となく正しいようにも思えますかね? コンパイラのバグだろ? いいえ、C++ソースコードのバグです。悔い改めてください。 変数vは不定値(i
C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?)C#非同期処理StackOverflowマルチスレッド翻訳 StackExchange/Code Reviewでの質問"Exporting doc types using queues and multithreading"へのEric Lippert氏による回答より訳出。回答内容はオリジナル投稿"What are the best practices with multithreading in C#?"に呼応するため、編集前のタイトルを採用。原文および訳文のライセンスは引用元サイト規約の通り CC-BY-SA 3.0 に従う。 (補足:回答内容のトーンに合わせて口語調かつ意訳気味に訳出しました。誤訳指摘および訳出改善は歓迎
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? cppreference.comサイト "History of C" ページ(2015年12月時点)より訳出。1 本文書は訳出元に準じたCC BY-SA 3.0ラインセンスとする。 補足:"TR"は技術報告書(Technical Report)、"TS"は技術仕様書(Technical Specification)、"Draft"は草案文書の意味。TRとTSの扱いはほぼ同じ。"FP"は浮動小数点(Floating-Point)の略記。 初期のC(Early C) 1969: Unix向けシステムプログラミング言語としてPDP-7アセンブ
プログラミング言語Cの特徴ってなんでしょうか?この質問に対して「ポインタ(Pointer)」を挙げる人はそれなりに居るでしょう。…たぶん居るよね。居ることにします。 他のプログラミング言語にもポインタに相当する概念(「参照(Reference)」と呼ばれることが多い)はありますが、とりわけC言語のポインタは難しいと言われること多いようです。時にはこんなコーディング規約を持ち出して、ポインタ使用が禁止されることもあるそうです。 (俺がコードを理解できないから)ポインタの使用は禁止する。 なんだか心の声が漏れ聞こえる気もしますが、そこは大人な対応で迎えましょう。ええまあ、この記事は大人げないんですけど。ルールがポインタを使うなと言うなら、私だってちゃんと従いますよ。*とか&とか危なくて使えませんよね。 準備編 ここから本題。この記事では、プログラミング言語Cでポインタを一切利用しない「ポインタ
#include <iostream> #include <opencv2/opencv.hpp> int main() { const char * const window = "Capture (Press ESC to exit)"; const double scale = 0.75; const int delay = 32; // [msec] cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cerr << "fail to open cv::VideoCapture" << std::endl; return 2; } const double width = cap.get(cv::CAP_PROP_FRAME_WIDTH) * scale; const double height = cap.get(cv::CA
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? T/O マルチスレッド・プログラミングの文脈では、「データ競合(data race)」と「競合状態(race condition)」は直交した異なる概念を表す1。両者ともに回避すべき事象だが、問題を取り扱うレイヤは明確に区別されるべき。 データ競合(data race)は、マルチスレッド・プログラム実装上の問題である。 競合状態(race condition)は、並行処理システム設計上の問題である。 ここではJava, C#, C++あたりのマルチスレッド対応手続き型ベースのプログラミング言語を取り上げるが、言語パラダイムによらずマルチ
次のページ
このページを最初にブックマークしてみませんか?
『@yohhoyのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く