0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2025/1/28 学習記録

Posted at

現状:

エンジニアへの未経験転職。
就職先も決まり、2月からひよこエンジニアに。

2025年は頑張ろうということで、2025年学習記録19日目。

内容は常に書き散らしのメモです、あしからず。

当面の目標:LPIC101,102合格

javascript

オブジェクトリテラル

JavaScriptでオブジェクトを直接定義するための記法。
クラス定義なしでインラインでオブジェクトを作成できる。

特徴

  1. 中括弧 {} を使用してオブジェクトを作成します[1][2]。
  2. キーと値のペアを直接記述することで、オブジェクトのプロパティとメソッドを定義します[1][2]。
  3. JavaScriptでオブジェクトを作成する最も一般的で簡潔な方法の1つです[1][3]。

使用例

const person = {
  name: 'Taro',
  age: 30,
  greet: function() {
    console.log("Hello, my name is " + this.name);
  }
};

この例では、personオブジェクトにnameageというプロパティ、そしてgreetというメソッドを定義しています[1][2]。

JSONはJavaScriptのオブジェクトリテラルに由来しており、JavaScriptではJSONをそのままオブジェクトリテラルとして解釈できます[3]。

Citations:

[1] https://programming-tango.jp/vocabulary/2093/
[2] https://teach.web-represent.link/about-objects-and-object-literals/
[3] https://typescriptbook.jp/reference/values-types-variables/object/object-literal
[4] https://qiita.com/micropig3402/items/a31c2405a4a32d43bb24
[5] https://qiita.com/shimajiri/items/77407b7db6c17218f3c1
[6] https://uhyohyo.net/javascript/16_8.html
[7] https://magazine.techacademy.jp/magazine/36682
[8] http://ajaxtower.s26.xrea.com/js/object/index2.html
[9] https://jsprimer.net/basic/object/

スプレッド演算子(...

配列やオブジェクトの要素を展開するために使用される構文。

特徴

構文: ... (3つのドット)を使用します[1][3]。

使用方法

  1. 主な用途:

    • 配列の連結: const concatenatedArr = [...arr1, ...arr2];[3]
    • オブジェクトの結合: const mergedObj = { ...obj1, ...obj2 };[3]
    • 関数の引数に配列を展開: foo(...args);[1]
    • 配列やオブジェクトのシャローコピー作成: const clonedObj = { ...obj1 };[3]
  2. 分割代入との組み合わせ:

    const [x, y, ...remaining] = [1, 2, 3, 4];
    console.log(x, y, remaining); // 1, 2, [3,4]
    
    
  3. 文字列の展開:

    const str = "Hello";
    const charArray = [...str]; // ['H', 'e', 'l', 'l', 'o']
    
    

Citations:

[1] https://typescript-jp.gitbook.io/deep-dive/future-javascript/spread-operator
[2] https://qiita.com/Nossa/items/e6f503cbb95c8e6967f8
[3] https://kinsta.com/jp/knowledgebase/spread-operator-javascript/
[4] https://zenn.dev/airiswim/articles/384c5b5bb089ba
[5] https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax
[6] https://ns-adwork.com/javascript/3608/
[7] https://qiita.com/akisx/items/682a4283c13fe336c547
[8] https://fuuno.net/nani/nani03/nani03.html

Reflect.getOwnPropertyDescriptor()メソッド

JavaScriptのReflectオブジェクトに属するメソッド。
指定したオブジェクト内のプロパティのプロパティ記述子を取得する。

構文

Reflect.getOwnPropertyDescriptor(target, propertyKey)
  • target: プロパティを探す対象のオブジェクト(必須)。
  • propertyKey: プロパティ名(文字列またはシンボル)。

返り値

  • プロパティが存在する場合、そのプロパティの記述子オブジェクトを返します。
  • 存在しない場合はundefinedを返します。

使用例

const obj = { x: 42 };

console.log(Reflect.getOwnPropertyDescriptor(obj, "x"));
// { value: 42, writable: true, enumerable: true, configurable: true }

console.log(Reflect.getOwnPropertyDescriptor(obj, "y"));
// undefined

console.log(Reflect.getOwnPropertyDescriptor([], "length"));
// { value: 0, writable: true, enumerable: false, configurable: false }

用途

  1. プロパティの詳細確認:

    • プロパティが書き換え可能か(writable
      writable : 値の書き換えが許可されているかどうか
    • 列挙可能か(enumerable
      enumerable : for inループで列挙対象になるかどうか
    • 削除や再定義が可能か(configurable)などを確認できます
      configurable : 設定を変更できるかどうか
    • true or false)で表される。
    # 例
    configurable:false
    enumerable:true
    writable:false
    
  2. Proxyやカスタム操作:

    • Proxyと組み合わせて、プロパティ操作の挙動をカスタマイズする際に使用されます[1][5][7].

Object.getOwnPropertyDescriptor()との違い

非オブジェクトを対象とした場合

  • Reflect.getOwnPropertyDescriptor()TypeErrorをスローします。
  • Object.getOwnPropertyDescriptor():非オブジェクトをオブジェクトに変換して処理します[1][5].
// Reflectではエラー
Reflect.getOwnPropertyDescriptor("hello", 0);
// TypeError: "hello" is not a non-null object

// Objectではプリミティブをオブジェクトに変換
Object.getOwnPropertyDescriptor("hello", 0);
// { value: "h", writable: false, enumerable: true, configurable: false }

Citations:

[1] https://jsref.affi-sapo-sv.com/jsref/reflect_getownpropertydescriptor
[2] https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor
[3] https://ja.wikibooks.org/wiki/JavaScript/Reflect
[4] https://qiita.com/mayasy_RPA/items/df2f0e8d627f8bf3acb9
[5] https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor
[6] https://www.mitsue.co.jp/knowledge/blog/frontend/202002/28_1056.html
[7] https://hidekazu-blog.com/javascript-reflect/
[8] https://zenn.dev/qnighy/articles/5562746d52712f

Linux

fileコマンド

ファイルの種類や形式を識別するLinuxのコマンド。
ファイルを読み取り、一連のテストを行って、タイプを判別し、結果を標準出力に表示する。

特徴

  1. ファイルシステムテスト、マジックナンバーテスト、言語テストの3つのテストを順に行い、ファイルの種類を特定します[2]。
  2. 拡張子に関係なく、ファイルの内容を解析してタイプを判別します[2][3]。
  3. テキストファイル、画像ファイル、実行ファイル、ディレクトリなど、様々な種類のファイルを識別できます[1][2][3]。
  4. ファイルの文字コード、画像の形式やサイズ、実行ファイルのアーキテクチャなどの詳細情報も表示します[2][3]。
  5. 圧縮ファイルの場合、-zオプションを使用することで圧縮前のファイル種類も表示できます[2]。

オプション一覧

オプション 説明
--help ヘルプメッセージを表示し、終了します[1]
-v, --version バージョン情報を表示し、終了します[1]
-m, --magic-file LIST マジックナンバーファイルのリストを使用します[1]
-z, --uncompress 圧縮ファイルの内容も解析します[1][8]
-Z, --uncompress-noreport 圧縮ファイルの内容のみを表示し、圧縮ファイル自体の情報は表示しません[1]
-b, --brief 出力からファイル名を省略し、ファイルタイプのみを表示します[1][5]
-c, --checking-printout マジックファイルの解析結果を表示し、新しいマジックファイルのデバッグに使用します[1]
-e, --exclude TEST 指定したテストを除外してファイルを解析します[1]
--exclude-quiet TEST 指定したテストを除外し、未知のテストは無視します[1]
-f, --files-from FILE 指定したファイルから解析するファイル名を読み込みます[1][2][3]
-F, --separator STRING 出力時のファイル名と結果の区切り文字を指定します[1]
-i, --mime MIMEタイプとエンコーディングを表示します[1][5]
--apple AppleのCREATOR/TYPE情報を表示します[1]
--extension 推定されるファイル拡張子をスラッシュで区切って表示します[1]
--mime-type MIMEタイプのみを表示します[1]
--mime-encoding MIMEエンコーディングのみを表示します[1]
-k, --keep-going 最初の一致で停止せず、すべてのテストを実行します[1]
-l, --list マジックの強度を一覧表示します[1]
-L, --dereference シンボリックリンクを辿り、リンク先のファイルを解析します[1][8]
-h, --no-dereference シンボリックリンクを辿らず、リンク自体を解析します[1]
-n, --no-buffer 出力をバッファリングせずに表示します[1]
-N, --no-pad 出力の整列のための空白を追加しません[1]
-0, --print0 ファイル名の後にASCII NUL文字を追加します[1]
-p, --preserve-date ファイルのアクセス日時を保持します[1]
-P, --parameter ファイル解析エンジンのパラメータ制限を設定します[1]
-r, --raw 印字不能な文字をエスケープせず、そのまま表示します[1]
-s, --special-files 特殊ファイル(ブロックデバイスやキャラクタデバイス)も通常のファイルとして扱います[1][4]
-S, --no-sandbox システムコールのサンドボックスを無効にします[1]
-C, --compile 指定したマジックファイルをコンパイルします[1]
-d, --debug デバッグメッセージを表示します[1]
-d 任意のデフォルトのシステム・テストをファイルに適用します[3]

fileコマンドは、見慣れないファイルの内容を確認する前に使用することで、バイナリファイルを誤って開いてしまうリスクを軽減できる。

Citations:

[1] https://www.ibm.com/docs/ja/aix/7.2?topic=f-file-command
[2] https://uxmilk.jp/53517
[3] https://qiita.com/shinnshinn/items/e11dc2bf0c2368fdc38e
[4] https://docs.oracle.com/cd/E19205-01/820-1199/blayp/index.html
[5] https://blog.future.ad.jp/cmd_file
[6] https://www.ibm.com/docs/ja/aix/7.2?topic=files-displaying-file-type-file-command
[7] http://me.autodesk.jp/wam/maya/docs/Maya2010/Commands/file.html

gzipコマンド

UNIX系で使用されるファイル圧縮・解凍ツール。
Lempel-Ziv(LZ77)アルゴリズムとハフマン符号化を用いてファイルを効率的に圧縮する。

特徴

  1. ファイル圧縮: 指定したファイルを圧縮し、通常は元のファイル名に「.gz」拡張子を付けて保存します[1][4]。
  2. ファイル解凍: 圧縮されたファイルを元の状態に戻すことができます[1][5]。
  3. ディスクスペースの節約: ファイルサイズを減らすことで、ストレージ容量を節約します[3]。
  4. データ転送時間の短縮: 圧縮されたファイルは転送時間が短縮されます[3]。
  5. 元ファイルの扱い: デフォルトでは圧縮後に元のファイルは削除されますが、オプションを使用して保持することも可能です[1][3]。
  6. ディレクトリ圧縮: -rオプションを使用することで、ディレクトリ内のファイルを再帰的に圧縮できます[1][3]。

オプション一覧

オプション 長いオプション 説明
-1 ~ -9 --fast (1), --best (9) 圧縮レベル(1が低圧縮率で高速、9が高圧縮率で低速)
-c --stdout, --to-stdout 結果を標準出力へ出力
-d --decompress, --uncompress 圧縮ファイルを展開
-f --force 既存のファイルを上書き
-k --keep 圧縮・解凍後に元ファイルを削除しない
-l --list 圧縮ファイルの情報を表示
-N --name 元のファイル名とタイムスタンプを保持
-n --no-name 元のファイル名とタイムスタンプを保持しない
-q --quiet 警告メッセージを抑制
-r --recursive ディレクトリを再帰的に処理
-S SUFFIX --suffix=SUFFIX 出力ファイルの拡張子を指定
-t --test 圧縮ファイルの整合性をテスト
-v --verbose 詳細な情報を表示
-- --help ヘルプメッセージを表示
-- --version バージョン情報を表示
-L -- ライセンス情報を表示
-V -- バージョン情報を表示

tarコマンドと組み合わせることで、複数のファイルやディレクトリをまとめて圧縮できる。

Citations:

[1] https://marusuke-blog.com/linux-gzip-command/
[2] https://kanda-it-school-kensyu.com/linux-basic1-contents/linux-basic1_05/linux-basic1_0504/
[3] https://pawsole.com/gzip/
[4] https://www.koikikukan.com/archives/2012/06/01-235555.php
[5] https://www.infra-linux.com/menu-linux3/gzip/
[6] https://wa3.i-3-i.info/word11247.html
[7] https://atmarkit.itmedia.co.jp/ait/articles/1608/09/news018.html
[8] https://qiita.com/sympe/items/13819ebe57a46090f064


今日はここまで!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?