본문 바로가기

전체 글

(36)
[3주차] 학습 일지 line-height: 한 줄에서 글자를 수직 가운데로 정렬하는 데 유용하다. 예를 들어, height가 100px인 요소에 line-height를 100px로 설정하면, 한 줄의 글자가 수직 100px 높이의 가운데에 위치하도록 정렬할 수 있다.이 속성은 상대적인 단위(px, %, em 등) 중에서 배수 단위(예: 1.5 또는 2)로 설정하는 것이 일반적으로 권장된다고 한다. 배수 단위를 사용하면 글자의 크기에 따라 줄 간격이 유동적으로 조정되어 더 유연한 디자인이 가능하기 때문이다. text-indent: 문자 첫 줄의 들여쓰기를 할 수 있는 속성이다. 기본 값은 0(들여쓰기 없음)이며 px, em, rem 등의 단위로 들여쓰기를 사용할 수 있다. 추가로, 음수를 사용하여 outdent(내어쓰기)도 ..
[2주차] 학습 일지 tabindex: 키보드의 Tap 키를 눌러 이동할 때, 이동 순서를 지정하거나 특적 HTML 요소에 포커스를 가능하게 만들기 위해 사용되는 속성이다. 1. tabindex="0":  요소를 기본 순서에 포함시킨다.포커스 되지 않는 요소를 포커스 가능하게 만든다. 2. tabindex="-1": 요소를 탭 순서에서 제외한다. 3. tabindex="1": 탭 순서를 우선 지정한다. 숫자가 낮을수록 우선순위가 높다. tabindex는 접근성과 사용자 경험을 위해 키보드 탐색을 조정하는 중요한 속성이나, 과도하게 사용하면 오히려 혼란을 줄 수 있으니 정말 필요한 경우에만 적절히 사용하는 것을 권장한다고 한다.  box-sizing: 요소의 크기 계산 기준을 지정하는 CSS 속성content-box: 요소의 ..
[1주차] Git/Github Git이란?간단하게 말하면 '분산 버전 관리 시스템' 이라고 할 수 있다.그럼, 여기서 분산이란 무엇일까?중앙 서버에만 의존하지 않고, 로컬 저장소에 전체 히스토리와 파일을 복제하여 그 복사본으로 작업을 이어나갈 수 있다는 것이다. 그렇다면 버전관리는 왜 필요할까?개발 과정에서 발생하는 파일의 변경 사항을 체계적으로 추적하고 관리하기 위해 필요하다.  결과적으로, Git은 이러한 버전 관리를 통해 코드의 변경 사항을 추적하고 협업을 효율적으로 도와주는 분산형 버전 관리 시스템인 것이다. Github란?이러한 Git을 사용한 코드를 저장하고, 공유하고, 협업할 수 있는 온라인 플랫폼이다.인터넷에 코드를 올려 다른 사람들과 공유할 수 있다.  📌 규칙 1"수정"의 단계는 "의미"를 기준으로 사용자가 정해줘..
김민태의데브캠프_OT_학습일지 오늘(16일) 김민태의 프론트엔드 데브캠프 3기가 시작되었습니다 !해당 부트캠프는 평일 10시부터 7시까지 온라인으로 교육받는 형식으로, 금일 12월 16일부터 7월 11일까지 약 7개월 간의 과정입니다! 🫢🎊    계기저는 국민취업지원제도를 참여하며 부트캠프에 대해 관심을 가지게 되었어요.해당 부트 캠프는 현직자인 김민태 기술이사님이 직접 강의를 진행하시기도 하고, 프로젝트 등을 봤을 때 커리큘럼이 타 부트캠프보다 탄탄해보이고, 커뮤니티가 잘 활성화되어 있는 것 같아서 지원하게 되었습니다!    OT 당일 매니저님들을 통해 해당 부트캠프에 대한 설명을 듣고, Notion에서 개인 자기소개서를 작성하고 공유하는 시간을 가졌답니다!피어세션 시간을 통해 소회의실에서 랜덤으로 짜여진 수강생 분들과 10문 ..
Simple Diary - (1) 중복 제거 (state, onChange 합치기) 동작이 비슷한 state 하나로 묶기 before const [author, setAuthor] = useState(""); const [content, setContent] = useState(""); return ( 오늘의 일기장 { setAuthor(event.target.value); }} > { setContent(event.target.value); }} > ); after - 객체로 만들어 새로운 객체를 setState로 전달 const [state, setState] = useState({ author: "", content: "", }); return ( 오늘의 일기장 { setState({ author: event.target.value, content: state.content, })..
[운영체제] Synchronization - 3. Spin lock과 Mutex lock, Mutex와 Semaphore mutex lock - lock을 잡기 위해 오랜 시간을 기다려야 할 것 같으면 다른 작업을 동시에 진행할 수 있다. - busy waiting 하지 말고, blocking 되어 기다리자. - 자원을 단시간에 얻을 수 있게 되는 경우 차라리 spin lock이 효과적이다. context switching에 더 큰 자원을 낭비하게 될 수 있는 문제를 초래한다. spin lock - 문맥 교환(context switching)이 일어나지 않는다. - 다른 작업을 동시에 진행하지 못하고 진입 가능할 때 까지 계속 기다리는 busy waiting 방식이다. - lock을 잡을 때 까지 끊임없는 무한 루프를 통해 critical section에 진입을 재시도하기 때문에, 하나의 스레드가 계속 CPU를 점유하고 있..
[운영체제] Synchronization - 2 Spinlock : 잡으려는 lock이 avaliable 해 질 때 까지 계속 루프를 돌며 진입을 재시도한다. 이른바 바쁘게 기다리는 busy waiting의 한 종류이다. Busy waiting : lock을 잡기 위해 다른 작업을 수행하지 않고 계속해서 기다리는 경우. Sofrware-only Algorithm Peterson's Algorithm 동기화 문제를 해결하기 위해 처음으로 고안된 방법 오직 두개의 context만이 존재하는 상황을 가정한다. 전역변수 flag, turn 선언 flag: critical section에 들어갈 준비가 되었는지, flag[0] = true; turn: 누가 critical section에 들어갈 차례인지 문제점 두개의 context만 존재하는 상황에서만 가능 ..
[운영체제] Synchronization - 1 하나의 address space에 서로 다른 스레드들이 동시에 접근하면 문제가 발생한다. Race Condition 두 개 이상 프로세스/스레드가 shared resource에 동시에 concurrent하게 접근함으로써 결과 값이 확정 되지가 않고, 그때 그때 실행할 때마다 조금씩 바뀌는 현상 두 개 이상의 concurrent 한 프로세스, 스레드들이 공유 자원에 접근 할 때 동기화 해결 과정없이 수행하는 상황 race condition을 방지하기 위한 기법 → synchronization Critical Section 코드에서 두개 이상의 프로세스가 동시에 리소스를 업데이트 할 수 있는 구간. 각 프로세스에서 공유 데이터에 접근하는 프로그램 코드 부분. 여러 개의 스레드가 수행되는 프로그램에서 각 프로..