0430-ReSet

피드

어제 TIL 보셨습니까 … 충격과 공포 …
소제목만 있고 아무것도 없었다. Algorithm소수 리스트 찾기 한 문제 푼 것 말고는… 알바한 날이여도 그래도
금-토-일 3단으로 좀 무너졌다.
오늘부터 다시 마음 다 잡고 공부해야지 !!!

  • 잘한점
  1. 노트북 -> 빨리 전화해서 고친점 … 다행이다… 터치아이디 버튼 꾹 누르면 전원버튼이구나!
  2. 다시 꾸준한 TIL!!!
  • 아쉬워
  1. 늦게 카페로 나간 점
  2. 유튜브 금토일 실컷봤으니 금지… 제발
  3. 프로그래머스 탈락 (.. 아쉬움) 3번 문제 빨리 잘 생각했으면 100 100 100 나올수도 있었을텐데…

크롱 리뷰

  • css속성을 통일 성 있게 쓰세요 !
  • float도 잘 알고 , 각각의 속성 브라우저 지원 및 제대로 이해하고 잘 쓰기

다양한 레이아웃 속성을 사용하는 것도 좋아요.
사용한 속성은 잘 이해해야하고요.
가급적 브라우저 지원범위도 의식하고 사용하세요.
… css도 알아야 할 부분이 너무많다 :D 신난다

크으 방학인데도 리뷰를 해주시다니 감사합니다
우선순위 1순위는 늘 리뷰를 받을 수 있는 데로 -> 다음 step을 진행하여 봅시다 !!!

웹 자판기 !

오늘의 Mooc

클린코드

  1. 함수 네이밍 설계에 근거하고 동사+명사 명시적인 이름 사용!! 함수의 이름만 보고 흐름이 잘 보이도록 해야 함!
    이름 짓는게 어려운 이유 + (함수가 간단하지 않아서 + 영어 )=> simple +구체적의미+ 동사

  2. 상수에는 의미부여

  3. 파라미터 반환에 집중

  4. 구체적
    obj literal을 이용한 부르기

1
2
3
function execSomething({width, height}){
console.log(width, height);
}
  1. if-else 되도록이면 if 긍정-else- 부정에 맞춰서

  2. 조건문 안에 로직을 감추고 함수로 들어나게 if(isInt) or if(isArray)

  3. 불필요한 매핑 없애기 내 꺼 예시다. 이전에 todoList에서 매핑을 저런식으로 했었었다. 단순히 enum처럼 쓰기 위해서

1
2
3
4
var todo = {
todo: 'todo',
doing: 'doing',
}
  1. 나만 아는 index -> 이런 부분을 피하자 !

methodA(obj.methodA()[3],obj.methodA()[2])

  1. 나눌 수 있는 부분 최대한 나눔
    ex) forEach-> foreach에 조건이 분기 되어 있는 경우 filter +forEach 보기는 좋은데 … 2번 돌지 않나요
    이런 부분은 물어봐야겠다! 아마 이 부분은 그냥 forEach로 다 처리하라고 하실 것 같긴 한데

  2. 순수함수
    input -> output 같은 입력 늘 같은 결과 -> immutable
    mutable의 경우 거치면서 계속 원본을 변화시키니까 !분리+신뢰+업데이트 어디서 되는지 추적하기까지 좋음 ! 짱짱맨

  3. 가능한 es6 문법으로 why-> 더 가독성+ 깔끔한 코드 :D

  • babel같은 트랜스파일 도구를 사용하면 거의 대부분은 지원 가능하므로 !
  1. promise & generator *

async await!
이 부분은 잘 모르므로… 공부하고 나중에 다시 봐야겠다!

  1. 주석 및 jsDoc같은 문서화 도구 활용 !!!

  2. 알고리즘 ->
    복잡한 알고리즘 최대한 중첩 for*for같은 O(n^2) 이런 것들은 없애려고 노력 개선하려고 하면 대부분 처음 복잡한 부분 해결이 되는 경우가 많음 -> 일반화 시키려고도 노력 가우스 아저씨 n(n+1)/2 규칙을 찾자!

  3. 객체관계를 이용하면 대부분의 if, switch를 없앨 수 있다.
    Actions[cmd]&&Actions[cmd](char,step) &&도 잘 활용해야 겠다 있으면 이거
    생각해보니 ? 늘 삼항연산자 쓰면서 ? 긍정이나 else의 경우 자신의 값 똑같이 넣어주고 아무처리 안 하는 경우 많았는데
    &&를 활용하면 이 조건이면 이거를 잘 쓸 수 있겠다

  4. 일관된 코딩 컨벤션
    예상이 잘 됨 !
    도구 활용 프리티어 , 컨벤션 유명한 것들 활용 ->

  5. 상속 대신 mixin & Compositon 50:27 활용해보기

크롱 예제 활용해보기 써보지 않으면 잘 모른다.

  1. 로직만 담겨있으면 대상이 바뀌어도 쉽게 교체 가능 !
    의존성 주입-> 비슷한 동작은 일관된 API 로 동작

  2. 클래스에 안전장치 마련하기
    심볼 & privateMethod

  3. 똑똑한 Error처리

어느 부분 -> 개선까지 알려주는
CustomError사용도 권장

  1. 리팩토링

리팩토링 주기는 할 수 있는 한 짧게 -> 린 하계
리팩토링은 늘 한다는 마인드 !!!
(설계-개발-리팩토링)*반복

중복 제거 및 쪼개기

  1. 전역변수 제거

인자 / 매개변수 잘 쓰기
객체 / 클래스 사용

  1. 클로저를 통한 내부 보호 / private
  1. 좋은 도구 잘 모르고 쓰면 오히려 … 헷갈리고 혼동

프레임워크들

  1. 클린코드 -> 개발문화(리뷰,품질우선, 페어프로그래밍과 잘 갖춰있는 회사, 함께 성장 이타적인 마인드)

저런 회사 갈 수 있을까?…제발 열공해서 개발문화 좋은데로 가기를 바래

DaliyAlgorithm

1시간 반 -> 뭔가 풀릴 것 같아서 계속 시도 했는데 아쉽다.
내일 한 번 더 시도

Programmers가장 긴 펠린드롬 …
for안에 if문이 엄청 많다. 처음 설계가 잘 못 된 기분을 지울 수가 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
설게 

1. 앞뒤가 같은 글자이면 다음 글자로 진행
2. 아닌 경우 같은
2.1 위치가 나오면 maxLength랑 비교해주고
2.2 시작위치를 고려
/// 잘 못 생각한 부분 같은 위치가 나오면 무조건 끝난다고 생각했는데 짝수일 떄
zz 이런 글자인 경우 2글자 팰린드롬의 경우는 끝나지 않고 크로스 된다.
if(i===length-(j+1)){
set.push(i)
maxLength = maxLength===1 ? set.length : Math.max(set.length, maxLength)
set = [];
i=startIdx
startIdx=undefined
break;
}
else{
if(s[i]===s[length-(j+1)]){
startIdx = startIdx===undefined ? i : Math.min(startIdx, i)
set.push(i,length-(j+1))
i+=1;
}

3. ... 지금까지 기록한 palindrom이 맞는지 기록

// 토-어 토-있 토-마 토-토 (O)-> 토마토 ->
// 에토마토씨비 에-비 에-씨- 에-토 에-마 -> 토 -비 토 -씨 - 토 토 (ㅇ)
// 에씨비에씨비토마토
//

시간 안에 못 푼 문제는 답 보고 공부하기로 했는데… 으.. 내일 한 번만 30분만 더 풀어볼래요

공부 안 될 때는 쉬운 문제 풀기

  • level2 toWeirdCase (O)
    다른 사람 풀이를 통해서 배운 점은 조금 더 코드를 깔끔히 짜는 법들에 대해서 좀 배웠다.

오늘의 링크 줍줍

Toast_ui
css_js_통합스타일링언어