목록전체 글 (529)
안녕하세요
하나의 playlist는 모두 한 명의 artist의 노래로만 구성되었다는 전제입니다. 1. 가수 정보를 추가합니다. // 가수 데이터를 추가한 뒤 노래 배열 반환 const allSongs = singerData .map((singer) => { const songs = singer.songList.map((song) => { const singerName = song.snippet.channelId === "UCXXXXX" ? "name1" : "name2"; return { ...song, singer: singerName }; }); return [...songs]; }) .flat(); => playlist에 담긴 노래 리스트마다 singerName 프로퍼티를 추가합니다. 2. 어느나라의 노래인..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cDGZbh/btr3BxmbEOj/k4QYjvkOCt54Nv0pPZlSo0/img.png)
[렌더링할 데이터 불러오기] 1. App을 실행하면 노래 정보를 불러와 reducer에 저장합니다. function App() { const dispatch = useDispatch(); useEffect(() => { (async () => { const songsResult = await axios.get("/api/songs"); dispatch(setSongs(songsResult.data)); })(); }, [dispatch]); 2. 노래 정보를 useSelector로 불러오고 이를 저장할 state를 만듭니다. const singerData = useSelector((state) => state.songs); const [playlist, setPlaylist] = useState([]);..
Locking이란 무엇인가: 동시성 제어 Locking은 여러 프로세스 또는 스레드가 동시에 접근하거나 수정하려는 데이터나 리소스를 하나의 프로세스 또는 스레드만 접근하도록 막는 것입니다. 여러 사용자가 동시에 실행하는 데이터베이스에 동시에 접근하게 되어 데이터 무결성에 문제가 생길 수 있습니다. 예를 들어, 다수의 사용자가 동시에 자원을 접근하는 웹 애플리케이션을 개발할 때, locking이 필요한 경우가 있습니다. 이 경우, 여러 사용자가 동시에 자원에 접근하여 각각의 작업이 충돌하거나 데이터 불일치가 발생할 수 있습니다. 따라서 이러한 상황에서는 locking을 사용하여 자원에 대한 접근을 제어하고 한 번에 하나의 프로세스 또는 스레드만 함수를 실행하도록 제어합니다. 모든 db 조작 함수에 lock..
트랜잭션이란? 트랜잭션이란 데이터베이스를 수정하는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 의미합니다. 여러 개의 쿼리가 실행되는 중에 어느 하나라도 실패하게 되면 모든 작업이 취소되는 ACID(원자성, 일관성, 격리성, 지속성) 원칙을 준수하는 작업의 단위입니다. 예를 들어, 은행에서 송금 기능을 구현한다고 가정해봅시다. 이때 송금은 여러 개의 쿼리가 실행되어야 하며, 예금 계좌에서 돈을 빼고, 대상 계좌에 돈을 추가하는 쿼리가 모두 성공적으로 수행되어야 합니다. 이때 어느 하나라도 실패하게 되면, 예금 계좌에서 돈을 빼는 작업만 수행되고 대상 계좌에 돈을 추가하는 작업은 수행되지 않는 문제가 발생할 수 있습니다. 따라서 모든 작업이 성공적으로 수행되는 경우에만 결과를 적용하고, 어느 하나라도..