[Hellcoders]Study 8日目


🔥 今日一日は?



  • 自己紹介ページの作成Who Pageを作成し、ページごとに必要な内容を変更しました.以前はページを設計していましたが、ページを作成するにはコンサルタントや表示部分が欠けていると考えられていたため、レイアウトを変更する方法を考えていました.計画や設計が正確に完成していないため、修正作業が多く、プレッシャーも大きい.
    (他の学習グループのメンバーがゆっくり履歴書を入れて面接に行くので、焦りを感じますか?😭)Who pageは、最初のロード時に順次表示されるアニメーションを追加し、gridを使用して全体的なレイアウトを設定しようとします.
    gridはまだ熟知していないので、もっと勉強して、よく使って、できるだけ早く熟知する必要があります.grid-mtemplate-rows、grid-mtemplate-columnsを使用して容器の部分を設定するので便利です.反応型を表すときにも大きな助けになりました.

  • TIL:デザインパターン


    今日のレッスン🧑‍💻

  • 昨日面接したもう一人の学習者は昨日ブログのSSRについての質問を受けたので頭の中で考えましたが、整理がうまくいかなかったので、すぐにその講座を探して整理しました.他のブログを見ていたらCodeStatesで習ったデザインパターンの内容を見ていたので、この部分も再整理した方がいいと思い、講義を探しました.
  • デザイン?
    =>設計モードは設計手法であり、設計方法である!
    1.設計モードの目的
  • 設計モードを使用する目的は、ソフトウェアの再利用、互換性、メンテナンスを容易にすることです.
  • 2.設計モードの特徴
  • 設計モデルはアイデアであり、特定の体現ではない.
  • は、常に設計モードをプロジェクトに適用する必要はありません.再利用、互換性、メンテナンスの後に発生する問題を解決するために、モードを作成します.
  • 3.設計モードの原則、SOLID (オブジェクト向け設計)

  • 単一責任の原則:クラスは1つの役割しか果たせません.

  • オープンクローズの原則:拡張(継承)で開き、修正(Modify)で閉じます.

  • Liskov Substitution Principle(リスク交換の原則):子供は常に親の位置に置き換えられなければならない.

  • インタフェース分離の原則:インタフェースはよく分離されており、クラスに必要なインタフェースだけを実現します.

  • バージョン依存:親モジュールは子モジュールに依存できません.どちらも抽象に依存し、抽象は細部に依存してはならない.
  • 4.設計パターンの分類

  • 作成モード:オブジェクトの作成方法を決定します=>オブジェクトの作成と組み合わせをカプセル化し、特定のオブジェクトが作成または変更されたときにプログラム構造に大きな影響を受けないように柔軟性を提供します.

  • Structure Mode Structure Mode:オブジェクト間 組織関係=>クラスまたはオブジェクトを組み合わせてより大きな構造を作成するモード(異なるインタフェースを持つ2つのオブジェクトを組み合わせて単一のインタフェースを提供するモード、または異なるオブジェクトを組み合わせて新しい機能を提供するモード).

  • 動作モードどうさもーど:オブジェクトの 動作の組織、管理、連合=>オブジェクトまたはクラス間のアルゴリズム、責任割り当ての関連モード.これは、1つの宿屋で一人ではできないタスクを複数のオブジェクトに割り当てる方法に重点を置く方法です.
  • 🤬 アルゴリズムを解く


    ゲームマップ最短距離
  • 題:https://programmers.co.kr/learn/courses/30/lessons/18442
  • 
    function solution(maps) {
        // 1.
        const dy = [1,0,-1,0];
        const dx = [0,1,0,-1];
        const row = maps.length;
        const col = maps[0].length;
    
        // 2.
        const visitCount = [...maps].map((r) => r.map((c) => 1));
    
        // 3.
        const queue = [[0,0]];  //시작점
    
        // 4.
        while(queue.length) {
            const [y, x] = queue.shift();
    
            // 5.
            for(let i = 0; i < 4; i++ ) {
                const ny = y + dy[i];
                const nx = x + dx[i];
    
                // 6.
                if(ny >= 0 && nx >= 0 && ny < row && nx < col) {
                    // 7.
                    if(maps[ny][nx] === 1 && visitCount[ny][nx] === 1) {
                        visitCount[ny][nx] = visitCount[y][x] + 1;
                        queue.push([ny,nx]);
                    }
                }
            }
        }
    
        // 8.
        return visitCount[row - 1][col - 1] === 1 ? -1 : visitCount[row - 1][col - 1];    
    }