「const」を含む日記 RSS

はてなキーワード: constとは

2020-08-19

anond:20200819122438

GitHubのRadarってやつしか見てないけど

あれ日時処理がグダグダなんだよね

/600してたのがいつの間にか消えてたり(600って一体何だったんだろう)

MilliSecとってたりSecとってたり

‐14がハードコードされてるかと思えばconstにも設定されてたり


関数型言語ってやつ?が好きな人が書いたコードなのかな?

泥臭く書いたらいいだろうにモダンな書き方しようとしてバグを埋めてるみたいな印象を持った

2020-08-01

anond:20200801234448

function* fizzBuzzGenerator2() {
  const g = fuzzBuzzGenerator()
  let i = 1;
  while (true) {
    const val = g.next().value
    if (i % 15 === 0) {
      yield 'FizzBuzz'
    } else {
      yield val
    }
    i += 1
  }
}

2020-07-28

anond:20200727185858

プログラムにすると、両者がどうなるか実際に書いてみた

// 共通
const Win = 1, Lose = 2, Draw = 0;
const Gu = 0, Choki = 1, Pa = 2;

function Show(victory, playerHand, cpuHand){
  console.log('あなたの手: ' + ['グー', 'チョキ', 'パー'][playerHand]);
  console.log('CPUの手: ' + ['グー', 'チョキ', 'パー'][cpuHand]);
  console.log(['引き分け', '勝ち', '負け'][victory]);
}

//////////////////////////////////////////////

// 兄の考え関数
function Ani(playerHand){
  var victory = Math.floor(Math.random() * 3); // まず勝敗ランダムで求める
  var cpuHand = (playerHand + victory) % 3; // 勝敗からCPUの手を決定する

  Show(victory, playerHand, cpuHand); // 結果を表示
}

////////////////////////////////////////////////////////////////////////

// 弟の考え関数
function Ototo(playerHand){
  var cpuHand = Math.floor(Math.random() * 3); // まずCPUの手をランダムで求める
  var victory  = (3 + cpuHand - playerHand) % 3; // CPUの手から勝敗を決定する

 Show(victory, playerHand, cpuHand); // 結果を表示
}

こうして書いてみると、どっちも変わらんな

2020-05-22

どちらの副作用のほうが大きいか

意図しないstd::moveがない=だけのmoveコンストラクタが呼ばれる場合

コピーコンストラクトと使い方に差がある

という弊害constなのにmoveコンストなのに所有権を失うというコンストとは違う動作が行われる)である という もとからconst には前コンスト 後コンストの問題はあるが 同じような弊害を生むのではないか

難しいけど ごめんなさい。

2020-04-05

[][][]VORZE A10サイクロンSA遠隔操作するアプリを作った

内容が内容なので匿名ダイアリーに投げ捨てる。

Bluetooth端末で動作する。(CC0 License)

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>A10 Cyclone SA easy controller</title>
</head>

<body>
  <span id="status">initializing...</span>
  <script>
    let status = document.querySelector('span#status');
    let device, characteristic;
    const connect = async _ => {
      try {
        device = await navigator.bluetooth.requestDevice({
          filters: [{ services: ['40ee1111-63ec-4b7f-8ce7-712efd55b90e'] }],
        });
        status.textContent = 'connecting...';
        let server = await device.gatt.connect();
        let service = await server.getPrimaryService('40ee1111-63ec-4b7f-8ce7-712efd55b90e');
        characteristic = await service.getCharacteristic('40ee2222-63ec-4b7f-8ce7-712efd55b90e');
      } catch (e) {
        status.textContent = `failed to connect: ${e.message}`;
        return;
      }

      document.addEventListener('pointermove', evt => {
        evt.preventDefault();
        let y = evt.y / innerHeight * 2 - 1;
        let data = Math.abs(y) * 0x7f | (y < 0 ? 0x80 : 0x00);
        characteristic.writeValue(new Int8Array([0x01, 0x01, data]));
      });
      status.textContent = 'swipe up and down to move';
      document.removeEventListener('click', connect);
    }
    document.addEventListener('click', connect);
    status.textContent = 'tap screen to connect';
  </script>
</body>

</html>

2020-03-20

anond:20200320104602

className *Param = NULL;

int main(int argc,const char *argv)

{

Param = new className();

return 0:

}

 

こういうコードのほうが実は合理的

というか、より簡単にかけるように言語を工夫してるんだから

難しく書いている方が間違い 理屈ちゃんとある

この場合プログラム内部にはかかれておらずカーネル側が処理してくれるから しらないとわからねいけど

カーネルの動きを知ってる場合メモリリークではなく こうしたほうがよいとちゃんとわかる

2020-02-12

anond:20200212143037

MS技術はやめておいた方がいい。…と自分では思っている。

TypeScriptで出力したJSは、MSブラウザしかサポートしない、という未来は十分に予測できる。

それにどういう方針でbetter JSを作ろうとしたのか不明だが

    const color = switch (input) {
        case 1 => 'red'
        case 2 => 'blue'
        default => 'green'
    }

(どうでもいいが、増田スーパーpre記法使えないのか?)

こんな具合の「値を返すswitch」のような文法拡張すら実現できていない。

技術力が窺い知れる。

国内の勢いのあるスタートアップの中で、MS技術を使う会社は本当に「皆無」だし

うちの会社も、MSフリーで固めてる。

2019-10-24

anond:20191024141214

const char text[] = "勝手解釈"; // FIXME: イコール勝手解釈を入れてもかまわないという記号ではないのでバグ

2019-10-03

早期リターンを禁止されるつらさ

転職した会社で早期リターンが禁止されている。

正確に言うと、misraCを踏襲し、関数内ではreturnは末尾に1つだけ、という制約が設けられている。

この他にも関数ポインタ禁止等も色々あるが、早期リターンを禁止されるのは本当に困る。

早期リターンによってどれだけ気持ちよくコーディングできるか分かっていない。

もうこの後の行は読まなくていいんだ、という精神的安堵感。

これをもうこの会社では得られない。

関数ポインタ引数const禁止程の破壊力がある。

地獄のような10重以上のネスト地獄・・・

律儀に守ることによる可読性の低下の方が問題ではなかろうか。

2019-09-06

エラーメッセージの読めない人間がいる」ってよく嘲笑対象にされるけど

例えば以下の文章メッセージで出力されてた時にエラー根本原因が即わかる奴っているのかよ…

[ts]

型 '{ inputs: SymbolicTensor; outputs: (SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)[]; }' の引数を型 'ContainerArgs' のパラメーターに割り当てることはできません。

プロパティ 'outputs' の型に互換性がありません。

型 '(SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)' を型 'SymbolicTensor | SymbolicTensor' に割り当てることはできません。

型 '(SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)' を型 'SymbolicTensor' に割り当てることはできません。

型 'SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor' を型 'SymbolicTensor' に割り当てることはできません。

型 'Tensor<Rank>' を型 'SymbolicTensor' に割り当てることはできません。

型 'Tensor<Rank>' にプロパティ 'sourceLayer' がありません。

const image: tf.SymbolicTensor

2019-08-30

jsコード

以下のコードってどういう意味? imagesって変数探してもそのスコープにおらんのやけど。

const {images: testImages, labels: testLabels} = data.getTestData();

2019-06-08

プログラマ愚痴

大きなシステム開発プロジェクトアサインされて、プログラミングしている。

言語C++なんだけど、構造体同士を比較するのに、memcmp() 使ってて、みんなもそれを使えっていう。

中身を一個一個比較するより早いけど、構造体には内部にギャップができてるかもしれなくて、なので、

そのギャップの部分だけが違う二つの構造体は、「中身が異なる」と判断されてしまうのよね。

から構造体を作って各要素に中身を代入する前に構造体の領域全体を memset() でゼロで塗りつぶしましょう

ってことになってて、毎回それをやるんだけど、塗りつぶし忘れがないかどうか心配だったりする。

構造体メンバとして bool operator==(const T &other) を作るか、あるいは関数として

bool operator==(const T &obj1, const T &obj2) を作って、どちらにしても中身を一個一個比較するべきだとおもうんだよね。

一回書けば次から比較的楽に比較書けるのにな。

2018-12-23

anond:20181223184745

この辺になってくると初心者の人は面倒かな?

解説をつければかなりわかりやす

基本的な書き方


class mystring
{
public:
	char *buffer;
	mystring() 
	{
		buffer = (char*)"";
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer = new char[len + 47];
		strcpy(buffer, t);
	}

	void operator = (const mystring&src)
	{
		int len = strlen(src.buffer);
		buffer = new char[len + 47];
		strcpy(buffer, src.buffer);
	}

	mystring& operator + (const char*t)
	{
		int len = strlen(buffer);
		int len2 = strlen(t);
		char *buffer2 = new char[len + len2 + 47];
		strcpy(buffer2, buffer);
		strcpy(buffer2+len, t);
		buffer = buffer2;
		return *this;
	}
	mystring&  operator + (const mystring&src)
	{
		return ((*this) + src.buffer);
	}

};


STL化したもの

class mystringV
{
public:
	std::vector<char> buffer;
	mystringV()
	{
		buffer.resize(2);
		buffer[0] = ' ';
		buffer[1] = NULL;
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer.resize(len+1);
		strcpy(&buffer.at(0), t);
	}

	void operator = (const mystringV&src)
	{
		buffer = src.buffer;
	}

	mystringV& operator + (const char*t)
	{
		int len = strlen(&buffer.at(0));
		int len2 = strlen(t);

		buffer.resize(len + len2 + 47);

		strcpy(&buffer.at(0) + len, t);

		return *this;
	}
	mystringV&  operator + (const mystringV&src)
	{
		return ((*this) + &src.buffer.at(0));
	}

};

考察

様々な話はあるものSTLの方を使えば

いろんな事をプログラマにかわってライブラリがやってしまうということ

どうなんだろうね。

この辺は あまりしっかり おしえてもらえないところではある。

でも プロならみんな 知っている

anond:20181223183225

初心者

class mystring
{
public:
	char *buffer;
	mystring() 
	{
		buffer = (char*)"";
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer = new char[len + 47];
		strcpy(buffer, t);
	}

	void operator = (const mystring&src)
	{
		int len = strlen(src.buffer);
		buffer = new char[len + 47];
		strcpy(buffer, src.buffer);
	}

	mystring& operator + (const char*t)
	{
		int len = strlen(buffer);
		int len2 = strlen(t);
		char *buffer2 = new char[len + len2 + 47];
		strcpy(buffer2, buffer);
		strcpy(buffer2+len, t);
		buffer = buffer2;
		return *this;
	}
	mystring&  operator + (const mystring&src)
	{
		return ((*this) + src.buffer);
	}

};

	mystring my_space_org;
	for (int i = 0; i < 8; i++) {
		mystring space;
		space = my_space_org + " ";
		printf("%sHello world\n", space.buffer);
		my_space_org = space;
	}

anond:20181223152531

技としてはナイスだけど応用は厳しいよね

	const char *message = "        Hello world\n";

	for (int i = 0; i < 8; i++) {
		printf("%s", message + 8 - i);
	}

サンプルとしては、使いにくい書き方

ハローワールドループだけでも

結構遊べる

あなたは どんな 書き方が好き?

2018-09-07

anond:20180907112858

こんな感じかね。

http://jsfiddle.net/Lhankor_Mhy/jc2wkhes/

<video id="target" type="video/mp4" src="http://etc.dounokouno.com/testmovie/h264/testmovie-480x272.mp4" width="480" height="272" autoplay autobuffer></video>
<div id="_4">4


  

2018-06-03

UserScriptアップデート

もっと良い書き方があったらご指摘ください

const ngWords = [ /安倍/, /低能|低脳/, /麻生太郎はすごいあほだ/ ] ;

if(document.location.href.startsWith("https://anond.hatelabo.jp")) {

sections = document.getElementsByClassName('section');

Array.prototype.slice.call(sections).forEach(function(section, i, all) {

contain = Array.prototype.slice.call(section.children).filter(function(child, j, all) {

return ngWords.filter((ngWord) => {

if(ngWord.test(child.innerText)) {

return true;

}

}).length > 0;

}).length > 0;

if(contain){ section.style.display = 'none'; }

});

}

2018-05-06

ゴッド・オブ・ウォー』(2018)ではC++Luaを使っている?

PlayStation JapanYouTube動画「『 ゴッド・オブ・ウォー』 究極のアクションアドベンチャー創造3 アトレウスができあがるまで」

https://youtu.be/vxUbSuKRs5c?t=1m4s

の1:04あたりでは

const char* stance
const dc::tAIStance
if (!pStance ||
    return luaL_error(L, "Stance %s

RequestQueue* pActiveRequest = L
AISwitchStanceRequest* request = pAc
request->SetStance(pAI, pStance);
return 0;

というコードの断片が映る.(ただ,上から分かる通り,ほとんどの行は途中までしか映っていない.)

コードにあるluaL_errorはLuaのC APIにある関数である.pStanceがnullptrだった場合などに,この関数を呼ぶのだろう.

また,コードには名前空間を示す"::"があるので,CではなくC++が使われているようだ.

2018-04-08

読んだページを全部自動ブクマする

数日前に puppeteer で自動PDF にする試みを書いたブログホッテントリに入ってるのを見た

それに影響されて自動ブクマするもの作ってみた

bg.js

const username = ""
const api_key = ""

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
	if(message.bookmark){
		bookmark(message.bookmark)
	}
})

async function bookmark(url){
	fetch("http://b.hatena.ne.jp/atom/post", {
		method: "POST",
		referrer: "no-referrer",
		headers: {
			Accept: "application/x.atom+xml, application/xml, text/xml, */*",
			"X-WSSE": await createCredential(),
		},
		body: `
			<entry xmlns="http://purl.org/atom/ns#">
				<link rel="related" type="text/html" href="${url}" />
			</entry>
		`.replace(/\t/g, ""),
	}).then(e => {console.log(e)})
}

async function createCredential(){
	const non = Math.random().toString(36).substr(2)
	const now = new Date().toISOString()
	const buf = new TextEncoder().encode(non + now + api_key)
	const u8a = new Uint8Array(await crypto.subtle.digest("SHA-1", buf))
	const str = Array.from(u8a, e => String.fromCharCode(e)).join("")
	const b64 = btoa(str)
	return `UsernameToken Username="${username}", PasswordDigest="${b64}", Nonce="${btoa(non)}", Created="${now}"`
}

username と api_key を埋めてバックグラウンドで動かす

page.js

chrome.runtime.sendMessage({
	bookmark: location.href
})

ページ内で動かすコード

URLバックグラウンドに投げる

今は全部投げるコードになってるが、必要に応じていらないドメインを弾いたりする

2018-03-20

anond:20180320125045

JavaScript で var から const と let を使うようにってなったので Java は逆走している?

2017-09-11

https://anond.hatelabo.jp/20170910205249

まじな話をすると、N予備校プログラミング入門コースやるのがオススメ

https://www.nnn.ed.nico

一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。

月額1000円だけどしっかり勉強すれば一ヶ月の無料間中に終わると思う。

もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラム講師曰く去年はこれで二人エンジニア就職を決めたらしい。

内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職必要な環境構築やセキュリティまでみっちりやる。

http://qiita.com/sifue/items/7e7c7867b64ce9742aee#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%82%92%E3%82%82%E3%81%A8%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%A8%E5%86%85%E5%AE%B9

講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。

↓みたいなことが学べる

----

Webプログラミング入門コース

Web ブラウザとは (Chrome, デベロッパーコンソール, alert)

はじめてのHTML (VSCode, HTML, Emmet)

さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)

HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)

はじめてのJavaScript (JS, ES6, エラー)

JavaScriptでの計算 (値, 算術演算子, 変数, 代入)

JavaScript論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)

JavaScriptループ (ループ, for)

JavaScriptコレクション (コレクション, 配列, 添字, undefined)

JavaScript関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)

JavaScriptオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)

はじめてのCSS (CSS, セレクタ, background-color, border)

CSSを使ったプログラミング (transform, id, class)

Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)

診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)

診断機能組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)

ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)

Linux開発環境構築コース

LinuxというOS (VirtualBox, Vagrant, Ubuntuインストール, OS, CUIの大切さ)

コンピューター構成要素 (ノイマンコンピューター, プロセス, lshw, man, ps, dfの使い方)

ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)

標準出力 (標準入力標準出力標準エラー出力パイプgrep)

vi (vimtutor)

シェルプログラミング (シバン, echo, read, 変数, if)

通信ネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)

サーバークライアント (tmux, nc, telnet)

HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)

通信をするボットの開発 (cron, ログ収集)

GitHubウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)

イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)

GitとGitHub連携 (git, ssh, clone, pull)

GitHubへのpush (init, add, status, インデックス, commit, push, tag)

Gitのブランチ (branch, checkout, merge, gh-pages)

ソーシャルコーディング (コンフリクト、プルリクエスト)

Webアプリ基礎コース

Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)

集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)

アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)

ライブラリ (ライブラリ, パッケージマネージャー, npm)

Slackボット開発 (slack, mention, bot)

HubotとSlackアダプタ (hubot, yo)

モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)

ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)

同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)

例外処理 (try, catch, finally, throw)

HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsイベントループ, リスナー)

ログ (ログ, ログレベル)

HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)

HTMLフォーム (フォームの仕組み, form, input)

テンプレートエンジン (テンプレートエンジン, jade)

HerokuWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)

認証利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)

Cookie を使った秘密匿名掲示板 (Cookie, Set-Cookie, expire)

UI、URI、モジュール設計 (モジュール設計, フォームメソッド制限, リダイレクト, 302)

フォームによる投稿機能の実装 (モジュール性, textarea, 303)

認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)

データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)

トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)

削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)

管理者機能の実装 (Web サービス管理責任, 管理者機能の重要性)

デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)

脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)

XSS脆弱性対策 (XSS, 適切なエスケープ処理, リグレッション)

パスワード脆弱性対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)

セッション固定化攻撃脆弱性対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)

より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)

CSRF脆弱性対策 (CSRF, ワンタイムトークン)

安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)

Webアプリ応用コース

Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)

ExpressのAPI (app, Properties, Request, Response, Router)

GitHubを使った外部認証 (Passport, OAuth)

スティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)

継続的インテグレーション (CircleCI)

クライアントフレームワーク (Webpack, Chrome 以外のブラウザでもES6)

DOM操作フレームワーク (jQuery, jQueryアニメーション, this)

AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)

WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)

RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)

データモデリング (リレーショナルモデル, 正規化)

テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)

インデックス (インデックス, 複合インデックス, Bツリー)

集計とソート (SUM, COUNT, ORDER BY, GROUP BY)

「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計モジュール設計、MVC)

認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)

予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)

予定とユーザーの一覧の表示 (非同期処理, Promise, then)

出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)

出欠とコメント更新 (Promiseチェイン, リファクタリング)

予定の編集と削除 (要件の衝突, 関数再利用)

デザインの改善 (this, グローバルオブジェクト)

セキュリティ対策と公開 (X-Frame-Options, Heroku環境変数)

2017-07-09

phpのいいところって

remoteでもlocalでも同じように動くという一点だけだと思うのよね。PGの単価が安いとかも有るけど。言語的には7.1からprivate const使えたり、まあ頑張ってる。

(※にも関わらず大本営が色々と改良しても、未だに新規案件で5.6とか持ち出す腐れ会社は滅びるべき)

なので、とにかくremoteでしか動かないコードってのやめてもらいたいんだよなあ。

Debuggerさえ使えるなら、magentoみたいなとんでもない糞コードの山(*1)であっても、コアコードを弄りまくったec-cube(特に2.x)であろうとも、縄文時代か?これ?みたいなオレオレフレームワーク(201x年でもオレオレ使ってるバカ会社が有るんですよ!)であっても追いかけて修正するなり殺すなり出来る。

ところがコード読み書きしないできないインフラ屋なんかが出張ってきて、やれvarnishだーSphinxだー云々やられるとDebugger使えないか死ねる。や、それを採用した人間人類滅亡の時まで保守改修するならどうでもいいことなんだが。localにそれらを構築する?や、出来なくねえけどめんどくせえし。

1

まあmagentoはコードがクソってのは置いといてもDB設計が完全に腐ってるのでさもありなん。

2017-03-20

http://anond.hatelabo.jp/20170320001230

htmlpdfって変数名とかでよくあるけど

web固有名詞constっぽいかWEBと書くのが俺的に正しい。

はい固有名詞ならWWW使った方がもっと正しいのだが俺の中で発音できなかったのでWEBとした。

という言い訳を思いついたが実のところどうしてそう書いたのかよくわからない。

2016-09-30

JavaScript配列初期化の話

JavaScriptで、配列を各要素がユニーク新規オブジェクトになるよう初期化したい。

Ruby

ary = Array.new(8) { Hash.new }

みたいなことをしたいのだけど、うまい書き方がわからない。

単純な実装としては

const ary = [];
for(let i; i &lt; 8; i++){
  ary[i] = {};
}

みたいな感じだけれどもこれはなんとも微妙であるワンライナーで書きたい。

ちょっとかっこつけると

const ary = Array.call(null, ...Array(8)).map(() =&gt; { return {}; } );

とか

const ary = [...Array(8)].map(() =&gt; new Object() );

とかできなくもないけど、これらもどうにも不格好である

何かもっとシンプルクレバースマートなやり方はないものであろうか。

const ary = Array(3).map(()=&gt; new Object());

とかできたらよかったのだけれども、残念ながら空要素はスキップされるらしく、これでは空配列が返ってくるから

一旦展開させてundefinedで埋めた配列を生成してからmapしなければいけないらしい。最終的に得たい配列が1つなのに、その前に別の配列を2つも生成するのが気持ち悪い。

ログイン ユーザー登録
ようこそ ゲスト さん