220324 TIL

Dzeko·2022년 3월 24일
0

개발일지

목록 보기
69/112
post-thumbnail

Today I Learned


1. 프로젝트 트러블 슈팅

미리보기를 위해 FileReader 사용 시 이미지 여러개 처리

사진 업로드 전, 미리보기를 위한 처리는 금방 했었다.
자바스크립트에 내장되어있는 FileReader를 불러온 후

const reader = new FileReader();

base64로 된 파일의 데이터url를 추출하여 html에 뿌려주면 되었다.

reader.readAsDataURL(file);
reader.onload = () => {
  console.log(reader.result)
}

이를 이용하여 다수의 이미지도 미리보기를 구현하려 했었다. for문을 돌려 각각의 파일의 url을 추출해 모아주면 된다고 생각을 했다.
하지만 아무리 어떤 방법을 써도 파일들이 담기긴 하는데, 정작 읽기는 배열의 맨 앞에 있는 최초의 파일만 읽는 것이었다. 속터질 노릇.
해답은 너무 간단했다..
FileReader는 호출되면 하나의 파일만 읽어오고 역할은 끝난다.
그러니 for문 밖에서 FileReader를 선언한 후 돌리니 하나만 읽어올 수 밖에..
for문 안에 선언 후 매 파일 마다 FileReader를 선언해 주었다.

 for (let file of Files){
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onloadend = () => {
        console.log(reader.result);
      }
    }




2. CS 스터디

12장 병렬성과 비동기성(p.475 ~ p.476)
  • 단기 락 구현
    • 락을 구현한느 방법은 실제로 하나뿐이지만, 프로그램에 표현하는 방법은 여러가지이다.
    • 락을 구현하려면 잠금을 지원하는 특별한 명력어를 제공하는 하드웨어 지원이 필요하다.
    • 프로세서에서 명령어 제공(원자적 명령어) : 락을 직접 구현, 시스템 모드에서만 사용하도록 제한됨
      • 검사 후 설정(test and set)
      • 비교 후 바꾸기(compare and swap) : 락을 얻으려고 경합하는 프로세스가 아주 많을 때 잘 작동
      • 락에 다른 코드를 덧붙여서 더 효율적인 락을 구현할 수 있다
  • 장기 락 구현
    • 여러 프로그램이 자원에 접근하면 안 되는 경우 필요
    • 파일을 사용해 구현되는 경우가 자주 있다(메모리보다 좀 더 영구적인 저장소에 저장)
    • 배타적으로 사용할 수 있는 파일을 생성, 가장 먼저 요청한 프로세스가 성공하게 되는 시스템 콜 = 락을 할당받는 것과 동등





To Do

1. 完) 프로젝트 열코딩

2. 完) CS스터디 정리하기

Always 完) 알고리즘 최소 한 문제 - 220324's Algorithm






Today's Short Report

profile
Hound on the Code

0개의 댓글