マッスル・メモリー

筋肉エンジニアのブログ

頭のいい人が話す前に考えていること 要約・感想

要約 「知性」と「信頼」を同時のもたらす7つの黄金法則 1.とにかく反応するな 人は怒っている時は頭が悪くなる。 何か言いたくなった時、冷静になるために口を閉じる。 2.頭の良さは他人が決める 人は頭の良い人の話を聞こうとする。 相手が何を求めている…

2023年を振り返る!

昨年に引き続き今年も1年の振り返りをしたいと思います! 2022年を振り返る!(筋肉8割エンジニア2割) - マッスル・メモリー 期間別振り返り 1月-3月 減量、仕事追い込み 毎年同様、昨年の12月頭から減量を開始、過去の減量の経験から比較的順調に進んでい…

【Shell, Linux】特定のディレクトリ内のファイル名でgrepしたい

開発中不要なファイルを削除したいことがよくありますが、そのファイルが他の場所で使用されているかどうかを確認する必要があります。 特に特定のディレクトリ内で一括して調べるには手動で1ファイルずつ調査するのは非効率的です。 そこで、以下のコマンド…

【fnm, node.js】fnmを使ってnode.jsをプロジェクトごとに管理する。

js

Dockerを導入していないプロジェクトがある場合にプロジェクトごとにnodeのバージョンを管理したい。 そんな時はfnmを使用する。 fnmとは、Rustで構築された高速でシンプルなNode.jsバージョンマネージャ。クロスプラットフォームのサポート(macOS、Windows…

【DB, MySQL】経路列挙モデルを用いたテーブル

特徴 メリット デメリット どのような場合に採用するか データの操作 準備 ルートを求める リーフを求める ノードの深さ求める ノードを追加する ノードを削除する 特徴 リレーショナルデータベースでツリー構造のテーブルを表現するための方法の一つ。 ツリ…

【Rails】 count, length, sizeの違いと使い分け案

count キャッシュしない。 毎回sqlのcountを使ってカウントする。 最新の件数を取得できる。 area = Area.first # 毎回sqlが発行される area.sub_areas.count # (0.4ms) SELECT COUNT(*) FROM `sub_areas` WHERE `sub_areas`.`area_id` = 1 # => 1 area.sub_…

【Rails】 N + 1問題の解決法、preload, eager_load, includes, joinsの使い分け案

N+1問題とは ループ処理の中でその都度クエリを発行してしまいパフォーマンスが低下してしまうこと。 解決策の1つは、Eager Loading(積極的な先読み)を使用すること。 Eager Loadingでは、関連するデータを事前にまとめてロードすることで、N回のクエリを…

AWS Application Load Balancerでuser-agentを指定してアクセスを制限

先日業務で運用しているサーバーがAmazonbotというクローラーによる過剰なアクセスでサーバーに負担がかかっていました。 その際にAWS Application Load Balancerでuser-agentを指定してアクセスを制限したのでその方法を書き残したいと思います。 EC2 > ロ…

2022年を振り返る!(筋肉8割エンジニア2割)

大晦日なので2022年を振り返りたいと思います。 ほぼ筋肉、少しエンジニアの話です。 1月-4月 減量 前年の12月から減量を開始しました。 前回、前々回と減量で得た自分なりの知見から比較的スムーズに減量は進んでいました。 減量が上手くいっていた要因 風…

railsでsvgにスタイルを当てる方法

svgファイルを読み込むhelperを作成する helperをviewに記述する cssを当てる svgファイルを読み込むhelperを作成する # app/helpers/application_helper.rb def embedded_svg(filename, options={}) file = File.read(Rails.root.join('app', 'assets', 'im…

レスポンシブ対応させる方法

画面幅が799px以下ならスマホ、800以上ならpcのスタイルを当てる方法 手順は以下 ブレイクポイントの記述 mixinの記述 view port の記述 実際にcssを当てる ブレイクポイントの記述 //app/assets/stylesheets/foundation/_variable.scss // 幅の設定 -------…

筋肉エンジニアを名乗っていたニート時代を振り返る

今年2020年の3月から10月の間ニートだった。 社会人になってからこんなにまとまった時間を確保できるのは稀だと思う。 初期のニート時代の記憶はもう薄れてしまっているが、忘れないうちに貴重な?ニート期間に学んだ?ことを書き残したい。 最初は時系列的…

【js】DOM ノードを追加、置換、削除する

js

ノードの追加、置換、削除についてまとめます。 HTMLの編集には、innerHTMLプロパティを利用することもできますが、今回紹介する方法だと以下のようなメリットがあります。 オブジェクトツリーとして操作できるので、対象となるコンテンツが複雑になった場合…

【js】DOM イベント操作

js

属性値やテキストを取得、設定する方法にについてまとめます。 コードを使用したページ Qiita 特定の属性を取得、設定 不特定の属性を取得 テキストを取得、設定 特定の属性を取得、設定 多くの属性は要素ノードの同名のプロパティとしてアクセスできます。 …

【js 】DOM 文書ツリー間を行き来する ノードウォーキング

js

getElementByIdやquerySelectorAllメソッドはいずれもピンポイントで特定の要素ノード(群)を取得するためのメソッドです。 しかし、いちいち文書全体から目的の要素を検索するのは無駄が多くそれはそのままパフォーマンス低下の原因にもなります。 そこでD…

【js】DOM 要素の検索まとめ

js

DOM(Document Object Model)はHTMLをJavascriptから操作できるようにしたインターフェイスのことです。 JavascriptからはDOM APIを通じてHTMLの情報を取得、変更、イベントの登録などができます。 今回は情報を取得するために要素の検索についてまとめます…

【js】ES6 モジュール

js

ES6から言語としてモジュールがサポートされました。 モジュールとは、関連性を持たせて切り離された一塊のコード群のことです。 モジュールのメリット モジュールを使うことで、以下のようなメリットがあります。 他のコードとの依存性が少なくなるので、変…

【js】ES6 オブジェクトリテラル

js

オブジェクトリテラル ES6ではオブジェクトリテラルの構文もシンプルに表現できるようになりました。 const title = 'この素晴らしい世界に祝福を'; const mainCharacter = 'カズマ'; const Anime = { title: title, mainCharacter: mainCharacter, subTitle…

【js】クラスを定義する

js

ES6からjsでもclassを定義することができるようになりました。 オブジェクト指向に関わる箇所なので、是非マスターしたいところです。 オブジェクト指向については以前記事にまとめてあります。 https://takuma521.hatenablog.com/entry/2019/07/15/214850 …

【js】配列を操作するメソッドまとめ

js

今回は配列を操作するときに便利なメソッドをまとめます! forEach let titles = ['このすば', 'リゼロ', '幼女戦記', 'オバロ'] titles.forEach((title) => { console.log(title); }); // このすば // リゼロ // 幼女戦記 // オバロ function showTitle(tit…

【js】クロージャ

js

クロージャとは、ローカル変数を参照している関数内関数のことです。 なんのこっちゃわからないので、次のコードを見てください。 function countPoint(init) { let point = init; return () => { return ++point; } } let myCounter = countPoint(1); conso…

【js】スコープチェーン

js

jsではスクリプトの実行時に、内部的にGlobalオブジェクト(グローバルオブジェクト)を生成します。 グローバルオブジェクトとは、グローバル変数やグローバル関数を管理するためにjsが自動的に生成する便宜的なオブジェクトなのです。 グローバル変数/関数…

【js】ES6 タグ付きテンプレート文字列

js

テンプレート文字列を利用することで、文字リテラルに変数を埋め込めますが、 変数をそのまま埋め込むのではなく、加工した上で埋め込みたいということもあるでしょう。 例えば、 let subaru = '<strong>スバルくん</strong>' let barusu = '<strong>バルス</strong>' console.log(`${subaru}素…

【js】 引数【ES6】と関数の呼び出し方

js

ES6で追加された関数の引数の記述と関数の呼び出し方についてまとめていきます! 引数 引数のデフォルト値 デフォルト値を使う場合の注意点 デフォルト値が適用される場合されない場合 デフォルト値を持つ仮引数は、引数リストの末尾に 必須の引数を宣言する…

【js】 4種類の関数の定義の仕方

js

Javascriptには関数を定義する方法が4種類あります。 今回はそれらの定義の仕方、特徴についてまとめていきます。 1. function命令で定義する 2. Functionコンストラクター経由で定義する 3. 関数リテラル表現で定義する 4. アロー関数で定義する(ES6) ま…

【js】ES6 分割代入

js

ES6から分割代入というものが導入されました。 分割代入とは、配列/オブジェクトを分解し、配下の要素/プロパティの値を個々の変数に分解するための構文です。 今回は、分割代入の使われ方について説明します! オブジェクト 配列 オブジェクトと配列の組み…

【js】ES6 var, let, constの違い

js

ES6からconst, letが登場しvarは使われなくなりました。 var, const, letの違いは何か? なぜvarは使わないのか? について説明していきます。 var, const, letの違いは何か? 再宣言 再代入 ブロックレベルのスコープ 変数の巻き上げ varを使わない理由 202…

10倍速く文章を書く方法

Slackなどのチャットツールが広まり、短い文は書くけど「文章」を書く機会は以前より減ってしまいました。 いざ、ちゃんとした文章を書く機会に出くわすと、 「長い文章書きたくない、、、チャットでいいじゃん」 「何から書けばいいかわからん、、、」 「読…

エンジニアリング組織論への招待まとめ

はじめに 今回は、「エンジニアリング組織論への招待」という本のまとめを書いていこうと思います。 エンジニアは仕事を進めていく上でコードを書く以外に様々な問題に直面します。 上司、プロジェクトメンバーとのミスコミュニケーション 経営者とエンジニ…

webを支える技術 REST

去年読み始めたwebを支える技術でしたが、途中で放置していました。 今年は違うぞということで、ここ2週間くらいで改めて最初から最後まで読み通しましたので、そのアウトプットとして今回記事を書こうと思います! 今回はRESTについてです!! この記事を読…