Language (12) 썸네일형 리스트형 [JS] 에러 핸들링 (Error Handling) - callback vs Promise vs async/await 비동기 호출 하면서, Error 이벤트에 대한 핸들링이 필요 합니다. 이번에는 callback, Promise , async / await 각각 동일한 비동기 개발 시 이벤트 핸들링 하는 예제를 비교해보겠습니다. 샘플 예제// Erro Handling : Callback const delayAdd = (index, callback, errCallback) => { setTimeout(() => { if (index >10){ errCallback(`${index}는 10보다 큽니다.`); return; } console.log(index); callback(index + 1); },1000);}d.. [JS] async / await 으로 비동기를 동기처럼 써보자 비동기 방식으로 ( Callback , Promise ) 작성한 기존 프로그램을 await을 통해서 좀더 간결하게 만들 수 있습니다.정확하게 말해서 비동기식 프로그램을 마치 동기식 프로처럼 만들수 있습니다. aync / await 사용 방법await으로 호출하기 위해서는 async 로 묶은 함수 내부에서만 사용 해야합니다. await 으로 호출하는 함수는 Proimse를 동일하게 반환 해야 하며, 항상 Promise.resolve() 가 반환 됩니다.console.log('Test Aysnc Call - Promise await')const a = () => { return new Promise ((resolve)=> { // Promise 객체를 반환하고 resolve를 인자로 받는다. .. [JS] 비동기 (Async) 호출 방식 이해하기 Callback , Promise 웹의 기본 컨셉은 Aysnc 비동기 방식의 호출을 합니다. 비동기 방식은 일반적인 함수의 실행 결과를 기다리지 않고 다음 코드를 차례대로 실행합니다. 그렇기 때문에 여러개의 함수를 순차적으로 코딩을 하더라도, 각 함수의 수행 시간이 다를수 있어서, 순서 보장이 안되어서 에러를 야기 할수 있습니다. 예를들어, 고객이름을 변경하는 프로그램을 만들고 , 내부적으로 고객정보 조회 , 고객명 변경의 2개 함수를 만들었다고 가정합시다. 고객이름은 반드시 존재하는 고객정보를 조회하여 기존 수정할 고객정보와 이름을 조회하고 그 다음 조회된 고객정보의 고객명을 바꾸는것이 일반적이 패턴이고, 그렇게 개발했다고 합시다. 1) seachCustomer( customerId )2) modifyCustomer( custome.. [Python] 해쉬 문제 - 달리기 경주 (Programmers) 프로그래머스의 hash 관련 문제를 풀어봤습니다. 처음에 일반적이 배열로 풀었는데, 문제를 자세히 보니까, input 값이 백만개가 될 수 있었습니다. 즉, 일반적인 방식으로는 성능의 문제가 발생하기 때문에 '해쉬'를 사용 하였습니다. 문제설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 p.. [Python] 사진 자동 정리 프로그램 개발 (EXIF) 핸드폰/디카로 사진 촬영하는 일은 이제 일상이 되었습니다. Google Photo 를 사용하면 간편하지만, 비용도 문제고 과거 파일도 업로드해야하고, 용량이 크면 비용도 문제가 됩니다. 저도 NAS에 아이 과거부터 있던 사진만 수만장이 되는데, 한 폴더에 넣고 찾기 편하게 관리했더니 폴더가 느려져서 문제가 생기고 역시 사진 찾기도 어려웠습니다. 수만장 사진 파일을 어떻게 정리할지 고민하다.. 촬영 년/월로 자동으로 정리해 주는 프로그램을 만들어 보았습니다. 이미지 정리 규칙 촬영한 년>월 형태로 디렉토리(폴더)를 만들고 자동으로 파일을 옮겨줍니다. 동일한 파일명이 있으면, "dup_" 파일명을 수정해서 이동합니다. (혹시나 동일 파일명으로 이전파일을 삭제 하지 않도록) 알고리즘 작업 디렉토리의 이미지 파.. [Python]이미지 메타정보(EXIF)로 촬영일시 찾기 휴대폰, 카메라로 촬영한 이미지네은 EXIF 라고 하는 메타정보가 있습니다. 이 정보에는 이미지이름, 크기,촬영일시, 카메라 정보, GPS , 노출정보등 다양한 정보가 있습니다. 휴대폰 및 디지털 카메라로 촬영한 이미지는 더욱 많은 정보를 가지고 있습니다. Python 에서 EXIF (EXchangeble Image file Format) 정보를 활용하여 촬영 일자를 확인하는 방법을 찾아봅니다. Python 에서는 EXIF 를 읽기 위해서 PIL 패키지가 필요합니다. EXIF 정보 출력 PIL 패키지로 이미지파일 읽기 tag정보(tag_id)를 (key, value) 형태로 읽기 from PIL import Image from PIL.ExifTags import TAGS def get_image_exif.. [Python] 디렉토리 내 파일 목록 리스트 디렉토리 경로에 존재하는 파일 리스트를 저장하고 출력하는 간단한 예제입니다. 프로그래밍을 하다보면 현재 디렉토리, 파일 목록을 관리할 일이 생깁니다. 요즘에는 chaGPT , copilot 과 같은 서브스가 많아서 구글링 보다 AI에서 물어보는것이 빠르지만, 자주 쓰는 패턴을 기록해봤습니다. 주요 사용 함수 os.listdir( path ) : path os.path.getsize( path, filename ) : 파일 크기 반환 os.getcwd( ) : 현재 디렉토리 경로 반환 os.path.getctime( path, filename ) : 파일 생성일시 반환 os.path.getmtime( path, filename ) : 파일 수정일시 반환 os.path.getatime( path, filen.. [Python] 일정 시간 (초)마다 실행 Python 으로 일정시간 (n초) 단위로 어떤 처리가 필요해서, 간단한 함수를 개발 기본 알고리즘 시작 시간 계산 Thread 함수를 사용하여, 2초마다 함수를 반복 시킴 현재 시간 - 시작시간 , 경과 시간을 구해서 출력 import datetime import math import threading import time time_laps = 0 def print_second(): now = time.strftime('%H:%M:%S') # 현재 시간 time_laps = math.floor(time.time() - start_time) # 경과 시간 계산(소수점버림) print(f'{now} : {time_laps}초 경과') threading.Timer(2,print_second).start() .. 이전 1 2 다음