サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
marycore.jp
Let's Encrypt「DST Root X3」の有効期限が2021年9月30日付けで切れてしまったため、「OS X El Capitan」以前の古いMacデバイスでは、Webページの閲覧時に警告エラーが発生してしまいます。 Chrome:この接続ではプライバシーが保護されません Crome:時計が進んでいます Safari:Web サイト“sample.com”の識別情報を検証できません。 Safari:接続はプライベートではありません 失効された「DST Root X3」は以後利用できなくなり、2021年10月1日以降はLet's Encryptを利用したサイトに繋がらない状態が続きます。この問題は自動的に解消されるようなものではありません(※1)。 そこで今回は「DST Root X3」に代わる最新のルート証明書「ISRG Root X1」を独自にインストールして、この問題に対処
JavaScriptの配列型にはequalsメソッドが存在しません。また比較演算子による比較は、等価の判定に対応していません。 [1, 2] == [1, 2] // false [1, 2].equals([1, 2]) // Uncaught TypeError: [1,2].equals is not a function at <anonymous>:1:8 配列同士の比較を行うためには、各要素を個別に比較したり、配列を文字列化した結果を比較することなどが有効です。 目次 繰り返し文による要素比較(確実な方法) JSON文字列による比較(簡潔な方法。比較的厳格な比較) toStringによる文字列比較(簡易な方法。若干抽象的で曖昧な比較) 繰り返し文による要素比較 for文で個別に要素を比較するのがもっとも確実です。比較の際には!==演算子による厳格な比較が必要となります。!=によ
これらのように数字文字の連番が保証されている環境であれば、以下のような数字判定処理を書くこともできます。 bool isDigit(char c) { return c >= '0' && c <= '9'; } isDigit('8'); // true isDigit('a'); // false ctoi関数の実装方法 範囲チェック付きの変換関数です。数字以外の文字が渡された場合には、戻り値のデフォルト値として0を返します。 int ctoi(char c) { if (c >= '0' && c <= '9') { return c - '0'; } return 0; } assert( 0 == ctoi('0') ); assert( 9 == ctoi('9') ); assert( 0 == ctoi('a') ); assert( 0 == ctoi('A') ); 必
ツイッターなどのSNS上でよく見かける独特の言い回しや、ネット特有の構文や方言、鼻につくようなオタク臭い表現を紹介していく。 特に後半の内容、控えめに言って最高なので無限に読んでほしい。 目次 ツイッタラーがよく使う言い回し 女性がよく使う言い回し 男性がよく使う言い回し オタクや若者がよく使う言い回し ツイッタラーがよく使う言い回し 休日残業に辛みを感じる。 わかる。 この川柳、分かりみが深すぎるんだけど分かってくれる人いるかな。 わかりみがすごすぎて驚愕してる。 それな。 うちの次女、バブみが高すぎでは。 バブみって言葉、人によって解釈が全く異なっていて哲学みが深い。 やたらと「〇〇み」みたいなウザみの高い表現を使いたがる。妙に馴れ馴れしかったり、上から目線だったり、淡々としたような独特の言い回しも多い。 うちの入浴剤、バブみが高すぎでは。 この透明なミルクティー、ディストピアみが高す
煽るプログラミングスクール 現状の働き方に不満を持ち、わらにもすがる思いでエンジニアやフリーランスを目指し、高いお金を払ってプログラミングスクールに通い、途中で挫折し、IT業界の悲惨さを知り、再びドロップアウトする。 そんな人たちを見ているといたたまれなくなる。 最近のプログラミングスクールは、「3ヶ月でフリーランスになれる」だとか「時給4000円」「誰でもできる」「転職成功率98%」「未経験でも月40万円以上」「自宅で仕事ができる」などと誇大で美味い話を言って、未経験者に甘い夢や希望を抱かせて入会や受講を煽ったり、IT業界への転職を扇動したりしているが、果たしてそれが本当に彼らのためになるのか、業界や社会のためになるのか、甚だ疑問に思う。 目次 胡散臭いプログラミングスクール界隈 狙われるプログラミング業界 人手不足という甘い誘惑 プログラマ定年説の真意 フリーランスの蔓延と価格競争 お
HTMLのリスト系タグ(ul/li)の黒丸(・、点、ドット)の表示と非表示を切り替えるためにはCSSプロパティを指定する必要があります。 目次 リストの黒丸を消す方法 リストの黒丸を表示する方法 リストの黒丸を消す方法 リストタグの点を非表示にする場合にはul/olタグ側のCSSプロパティとしてlist-style: none;を指定します。 ul { list-style: none; } list-styleプロパティはliタグ側に指定することも可能です。 HTMLタグのstyle属性に直接CSSを記述する場合には以下のように記述します。 <ul style="list-style: none;"> <li>item</li> </ul> item 黒丸を非表示にしても、左側のパディングは掛かったままとなるため、必要に応じてpadding-left: 0;を指定する必要があります。 <
C言語におけるポインタ変数の書き方には複数の記法あります。 char* p = "s"; // ① charポインタ型の変数p char *p = "s"; // ② char型のポインタ変数p 書き方や言い方が違うだけでいずれも全く同じ意味で同じ動作をします。 私自身はポインターの前にスペースを挿入する②char *p、いわゆるポインタ変数記法を支持していますが、最近は①char* pのポインタ型風の記法も悪くないと思うようになりました。そこで今一度ポインタ型記法の有効性を検証してみましょう。 ただし本来、ポインタは変数に対して与えられる概念であるため、アスタリスクは型側ではなく変数側に寄せるのが自然です。 目次 ポインタ型記法のメリット ポインタ型記法のデメリット そもそもポインタ型記法を使ってる人はいるのか 有名プロジェクトでの使用例 ポインタ型記法のメリット 文字数の削減ができる
C++でオーバーロードや可変長引数に対応した万能print関数を作ります。これでstd::cout << 9 << std::endl;の面倒な記述ともおさらばです。 まずは基本的なprint関数の自作方法です。std::coutをラップしているため、様々な型の出力に対応できます。 #include <iostream> template<class T> void print(const T& value) { std::cout << value << std::endl; } int main() { print("a"); // 出力結果: "a\n" print(999); // 出力結果: "999\n" } 続いて、可変長引数に対応したprint関数です。 // clang++ -std=c++11 print.cpp #include <iostream> void pri
昇順(asc)は小さい順、降順(desc)は大きい順にデータが並ぶという違いがあります。 昇順(asc)は昇っていくイメージ、降順(desc)は降っていくイメージです。 昇順(asc)の意味と読み方、略称について 昇順(しょうじゅん・ascending order) データは小さい方から大きい方の順に並ぶ。 0123456789 abcdefghijklmnopqrstuvwxyz あいうえお 小さい方から大きい方へ昇っていくイメージ。 ascはascendingの略。 ascendには(上る・登る)という意味がある。 ascの読み方は「アスク」、ascendingは「アセンディング」と読むのが一般的。 降順(desc)の意味と読み方、略称について 降順(こうじゅん・descending order) データは大きい方から小さい方の順に並ぶ。 9876543210 zyxwvutsrq
CPUの使用率が過剰に上昇し、Mac(macOS/Mac OS X)やiOS(iPhone/iPad)の動作が重たくなることがあります。アプリケーションの動作が遅くなったり、アニメーションがカクカクしたものになります。もっさりとした動作になり、一時的にフリーズのような状態になる場合もあります。 どうやら「kernel_task」というプロセスがCPUを高負荷状態にしているようです。kernel_taskのCPU使用率が200%を超えた状態が続く場合もあります。 目次 kernel_taskが暴走する原因 対処方法と対策 kernel_taskを強制終了してはいけない kernel_taskが暴走する原因 kernel_taskが暴走する原因はMac側のCPUの発熱です。 熱くなりすぎたCPUを冷ますためのリミッターが働くことによって、今回のような処理低下が引き起こされます。 kernel_
基本動作 第一引数に指定されたメモリブロックのサイズを、第二引数に指定されたメモリサイズへと拡張/縮小します。なお第一引数にNULLポインタが渡された場合には、malloc関数と同等の働きをします(malloc(size)相当)。 void *a = realloc(NULL, 1); // `malloc(1)`と同等(メモリ領域の確保) void *b = realloc(a, 2); // メモリ領域の拡張 仕様 reallocは第一引数に与えられたメモリオブジェクトを解放し、新たなオブジェクトへのポインタを戻り値として返します。その際、元オブジェクトの値は新たなオブジェクトへとコピーされます。 ただし、第一引数に指定したポインタのアドレスと戻り値のアドレスが同一のアドレスになる場合もあります。また、メモリ確保の失敗時にはNULLが返されるため、reallocの使い方にはちょっとした
ソースコードをインデントする際には、4文字幅のタブや空白が使われることが多いですが、2文字幅の人気も根強いように思います。特に熟練のプログラマであるほど、2文字幅による字下げを好む傾向にあるように感じます。今回はそんな2文字幅インデントの有効性や利点・欠点について解説していきます。 目次 2スペースの利点 コードの横幅が小さくなる 眼球運動が抑えられる 条件式とthen節が明確に区別される 文字数制限に強い 少しマニアックな利点 2スペースの欠点 階層を見失いやすい 階層構造の把握に余計な神経を使う 制御文やブロック間の関係性が理解しずらくなる 2スペース活用時の注意点 2スペースの利点 コードの横幅が小さくなる 4スペースの場合はどうしてもテキストエディタの横幅を広く使ってしまいます。 function goo(foo, bar) { return function (array) {
ダングリングポインタ 無効なメモリ領域を指すポインタはダングリングポインタ(dangling pointer)と呼ばれる。とりわけ、本来有効だったメモリ領域が解放処理などによって無効化されたにもかかわらず、そのメモリ領域を参照し続けているポインタのことを、ダングリングポインタと呼ぶ。 例えば、free関数等によって解放されたオブジェクトを参照し続けているポインタ変数などは、無効なメモリアドレスを指していることから、ダングリングポインタの状態にあると言える。このような無効な領域を指すポインタは、誤って利用されると重大なバグを引き起こすことにも繋がる。そのため、そのようなポインタ変数に対しては、空ポインタ(NULL)を代入することで、ダングリングポインタの発生やその影響を回避することなどが求められる。 int *pointer = malloc(8); // メモリ確保 free(pointe
C++にはJava言語のインターフェース(interface)に相当する機能が存在しません。ただし、C++では多重継承や純粋仮想関数を用いることで、インターフェースの仕組みを実現することができます。C++の世界ではこれをインターフェースクラス(Interface Class)と呼びます。 他にもC++ではテンプレートの仕組みを用いることで、インターフェースの役割と目的の一部を果たすことが可能となっています。本記事ではC++でインターフェースを実現するための複数の方法を紹介していきます。 目次 インターフェースクラス(一般的なインターフェースの実現方法) テンプレートによるダックタイピング(現代的な技法でパフォーマンス重視) # インターフェースクラスによる実現が一般的です。ダックタイピングを用いた方法は処理効率が求められるような環境では有効なテクニックですが、完全なポリモーフィズムの実現が
C++の文字列クラスをchar型やchar配列、C言語形式の文字列へ変換またはコピーする方法を紹介します。 目次 std::string → const char*(C言語形式の文字列へ変換) std::string → char*(ヌル終端文字列のコピー) std::string → char[](固定長配列へのコピー) std::string → char[] (部分文字列をコピーする場合) std::string → char(文字型への変換) std::u16string → char16_t(ワイド文字列のコピー) std::string → const char* std::string型のメンバ関数c_strで、C言語スタイルの文字列をポインタとして取得することができます。 std::string str("abc"); const char* cstr = str.c_st
無限ループ 無限ループ(infinite loop)とはプログラムの処理が永遠と繰り返される状態、またはそのような性質をもったコードのことを言います。 C言語やPython、Java、JavaScript, PHPなど多くのプログラミング言語では、無限ループを実現する方法としてfor (;;)記法やwhile (1)、while (true)、while True:といった記述を用いる事ができます。 // C/C++ for (;;) { printf("hello"); } // Java while (true) { System.out.println("hello"); } // JavaScript while (1) alert("hello"); // Python while True: print("hello") いずれのコードもループ文内の処理(printf("hel
std::setprecisionマニピュレータ 入出力ストリームで浮動小数点型の桁数を指定したい場合はsetprecisionマニピュレータを使います。<iomanip>ヘッダーをインクルードする必要があります。 // #include <iomanip> std::cout << std::setprecision(2) << 3.141; // "3.1" 第一引数に浮動小数点数出力時の精度を指定することができます。 注意点 桁数として2を指定しましたが、表示される結果は3.14ではなく3.1となります。整数部も桁数に含まれてしまう点に注意してください。 整数部の桁数が指定した桁数以上の場合、小数部は出力されなくなります。 std::cout << std::setprecision(2) << 12.3; // "12" また小数部のゼロ埋めがされない点にも注意が必要です。 std
using namespace std C++では名前空間の面倒な修飾を省略するためにmain関数の外でusing namespace std;という記述をすることがあります。これによって、std::coutという記述をcoutというstd::を省略した形で簡潔に記述できるようになります。 #include <iostream> using namespace std; // usingディレクティブ int main() { cout << string("便利") << endl; } usingディレクティブ、とりわけusing namespace stdの利用は、サンプルプログラムでの活用や、その場限りの簡単なプログラムを書く分にはそれほど問題にはなりませんが、大規模なコードや継続的な保守・拡張を前提としたコードを書く際には、面倒な問題や複雑な挙動に直面する危険性があるため、できる
32bit/64bit環境におけるデータ型の範囲とサイズ(バイト単位)とビット幅の一覧表です。 一般的な32/64bit環境であれば、long型以外の型については両環境で共通のサイズとなります。long型のサイズについては、32ビット環境では4byte(32bit)、64ビット環境では8byte(64bit)で表現されますが、ただし、64bit版Windowsで採用されているデータモデル「LLP64」ではlong型のサイズがint型と同等の4byte(32bit)になる点に注意が必要です。 文字型 型名サイズビット幅範囲
以前は面倒で複雑な下準備が必要だったObjective-C++ですが、最近はとても手軽に扱えるようになりました。本記事ではObjective-C++の使い方や概念、注意点について解説します。 目次 Objective-C++とは Objective-C++の始め方・使い方 C++関連の処理や宣言は実装ファイル側に書く 関数/変数の公開方法 Objective-C++の注意点 関連知識 Objective-C++とは Objective-C++はObjective-CとC++を混在させたプログラミング言語です。Objective-C上でC++の構文や機能が利用できる他、C++で書かれた既存のライブラリやコードを活用することも可能となっています。 そもそもObjective-C自体は、C言語にSmalltalk風のオブジェクト指向機構を組み込んだサイボーグ言語として知られていますが、Objec
64bit環境におけるデータ型の最大値と最小値の一覧表です。 limits.h(char, int, short long, ...) float.h(float, double) stdint.h(int32_t, int64_t, ...) 基本型は<limits.h>ヘッダに定義されています。実数型は<float.h>、幅指定がされた特殊な整数型については<stdint.h>ヘッダで定義されています。 各データ型のサイズについては以下のページを参考にして下さい。 データ型のサイズ・範囲の一覧【32bit/64bit環境】
// #include <float.h> // FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON // #include <math.h> // fabsf, fabs, fabsl, fmaxf, fmax, fmaxl /* float型(倍精度浮動小数点数) */ if (fabsf(a - b) <= FLT_EPSILON * fmaxf(1.f, fmaxf(fabsf(a), fabsf(b)))) {} /* double型(単精度浮動小数点数) */ if (fabs(a - b) <= DBL_EPSILON * fmax(1, fmax(fabs(a), fabs(b)))) {} /* long double型(四倍精度浮動小数点数) */ if (fabsl(a - b) <= LDBL_EPSILON * fmaxl(1.L, fm
C++開発をスマートに行うためのナウでヤングなコーディングスタイルを紹介していく。C++を職業プログラマ的な目線で安全に扱うためのテクニック集だと思ってもらうとよい。 コーディングスタイル編 マクロは使わない オブジェクトは波括弧で初期化する 一時変数はautoで宣言する ヘルパー関数を使う クラス名や関数名には明確な命名を行う コーディング規約編 typedefではなくusingを使う 演算子オーバーライド時の空白は省略 関連 C++ 軽量コーディングスタイル – 意識低い系コーディング規約への誘い コーディングスタイル編 マクロは使わない マクロ置換やマクロ定数は定義しないように注意する。型検査の強力なテンプレート機能やインライン関数、const修飾子による定数宣言を用いるようにする。 // Before #define HELLO "hello" #define print(v) s
ねねっちの凄いところ キーボードが海外仕様(強いこだわり) MacユーザなのにOSはWindows(ギークかつナード) プログラミング言語はC++を愛用(サイコパス) ゲームエンジンを自作(変態) インデントにスペースを3つ使う(意外と硬派) 双眼鏡ではなくライフルスコープ派(強い) 付箋をページの下側に貼る(合理性と利便性の追求) 私物のパソコンを職場に持ち込む(ガチ勢) 大学受験の年に英検2級を取得(勉強熱心) バイト期間中にちゃっかり自動車免許を取得(MT車) 国立大学 社会学部に通っている(養われたい) 在学中だが既に契約社員として雇用されている(養える) プロポーショナルフォントでプログラミング(養われたい) 最高にぶっ飛んでる。 このNEW GAME!!の「桜ねね」という娘は、とにかく最高にぶっ飛んでる。 MacユーザなのにOSがウィンドウズ ねねっちの何が凄いかって、MacB
NEW GAME!!という組織に所属する「桜 ねね」という人物は、ソースコードのインデントにスペースを3つ使うらしい。 しかもこの通称「ねねっち」と呼ばれる人物は、日本語のWindowsをUSキーボードのMacで運用し、ゲームエンジンをフルスクラッチで自炊してしまう凄腕のC++使いである。(名前空間と範囲ベースfor文、const、参照、スマートポインタを使いこなせるほどの知識、float型の必要性が理解できるほどの知見、フルスクラッチの必然性に辿り着けるほどの経験と判断力。エンジニアとしても相当な手練れであることは確かだ) また、この人物の凄い所は、等幅フォントではなくプロポーショナルフォントでプログラムを書いている所にある。おそらくGoogleとAdobeが共同開発した特殊な日本語フォントを使っている。「源ノ角ゴシック」または「Noto Sans CJK JP」あたりのフォントを使って
金持ちの家はカルピスを原液で飲むらしいな。 私人逮捕したいなー、サンタクロースを不法侵入の現行犯で私人逮捕したいなー。 昔の同級・・・
なにかと嫌われ者のgoto文ですが、周りが悪いと言ってるから悪い物と決めつけるのもいささか問題があります。本記事ではgoto文の概要を説明するとともに、goto文がなぜ良くないのか・禁止するべきなのかを検証していきます。 目次 goto文とは goto文 不要論 処理の流れや値の変化が読み取りづらくなる goto文はプログラマの負担になる 禁止したほうが手っ取り早い goto文には制限が必要 goto文の代替機能が増えている 「goto文は悪」という世間の評価について goto文は教養 goto文とは goto文(goto statement)は処理を指定の位置へと移動させるための制御文です。goto文はジャンプ文の一種であり、同様のジャンプ文には他にreturn/break/continue文が存在します。 int main() { goto label; // 3行目の`label:`
replaceは最初の検索文字しか置き換わらない replaceメソッドを用いた標準の方法では、一番最初にマッチした文字列のみが置き換えられます。replaceFirst的な挙動ですね。 "a b c".replace(' ', '-') // "a-b c" JavaScriptで文字列を全置換する方法 JavaScriptで文字列を全置換するには、正規表現を用いるか、split join メソッドを組み合わせるテクニックを用いる必要があります。 "a b c".replace(/ /g, '-') // "a-b-c" "a b c".split(' ').join('-') // "a-b-c" 前者がreplaceAll処理に相当する「# 正規表現で文字列を全て置き換える」方法です。 後者は「# split と join で文字列をすべて置換する」テクニックです。 より確実でオスス
C#の拡張メソッドやRubyのオープンクラス、Swiftのextension、Objective-Cのカテゴリーの活用例に近い感覚のものを実現させます。 既存のクラスにメソッド(メンバ関数)を追加する方法と関数(フリー関数)で代替する方法、演算子の多重定義を活用する方法の3種類の方法を紹介します。 フリー関数(例:print(std::string("s"));) 演算子関数(例:std::string("s")-print;) メンバ関数(例:std::string("s").print();) オススメはフリー関数版の利用です。その他のイディオムは扱いが難しく、実用性には難があります。 フリー関数 もっとも簡単で手軽な方法です。 フリー関数の第一引数にオブジェクトの参照を渡し、その参照値を元に関数内で独自処理を記述していきます。 void print(const std::string
次のページ
このページを最初にブックマークしてみませんか?
『MaryCore 言語知能総合研究所』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く