호이스팅 변수 호이스팅 다음과 같이 코드를 짰다고 가정해보자. function doSomething(){ var a = 10; console.log(a); // 10 console.log(b); // undefined var b = 100; } doSomething(); 자바스크립트에서 변수를 선언하면 변수선언부가 최상단으로 올라가게 된다. function doSomething(){ var a = 10; var b; console.log(a); // 10 console.log(b); // undefined b = 100; } doSomething(); 변수의 경우 사실 호이스팅이 큰 문제가 되지 않는다. 그러나... 함수 호이스팅 변수 호이스팅과 유사하나.. 자바스크립트에는 함수를 선언하는 방식이 두 가..
전체 글
무슨 생각을 해.. 그냥 하는거지Reference 타입 Datevar date = new Date(); console.log(date) 자바스크립트의 사용시간대와 우리나라 사용시간대는 다름에 주의 날짜를 다루는 객체이기에 날짜 관련 내부 기능이 많이 있음 문제는 자바스크립트에서 이 date를 사용하는 방법이 비효율적이다. 따라서 자바스크립트에서 날짜 관련 기능을 만들 때에는 Date를 바로 쓰기 보다 moment 나 Luxon 을 사용하는 것이 좋다. 자바스크립트 기본 Date는 문제가 많은 듯 하다. 여기서도 지적을 한다. Regexp(Regular Expression)var reg1 = /abc/; // 리터럴 표기법 var reg2 = new RegExp("/abc/", "g"); // 객체방식 리터럴 표기법의 장점은 다음과같이 ..
https://velog.io/@haileeyu21/Session-RESTful-API-%EB%9E%80-Path-parameters-Query-string [ Session ] RESTful API 란? / Path parameters / Query string 드디어 그동안 말로만 들어오던, RESTful API 기반 웹 개발이 무엇인지 알 수 있었던 시간!!! 그래서 이게 뭐냐구요? 읽어보세요ㅎㅅㅎ velog.io 기존) 쿼리스트링 중심 페이지 뷰 중심 재사용성이 매우 떨어짐. 해당 페이지에서만 사용 가능한 컨트롤러라든가. 이런 경우 모바일이나 다른 기기에서 사용하기 현저하게 힘들어짐. 쿼리스트링은 자원의 filtering, sorting, searching에 적절하다봄. 개선하려면?) path p..

https://www.acmicpc.net/problem/20953 20953번: 고고학자 예린 예린은 고고학자이다. 예린은 강원대학교 백록관 지하에서 고인돌이 발견되었다는 소식을 듣고 누구보다 빠르게 백록관에 도착하였다. 고인돌을 본 순간 예린은 놀라 자빠질 수밖에 없었다. 고 www.acmicpc.net 쉬운 문제인데 평소에 머리를 워낙 안쓰다시피 하니 끙끙거린다.. 이 문제는 처음에 이런 식으로 풀다가 시간 초과 로 인해 통과되지 않는다. def solution(a, b): sum = 0 for i in range(a + b): for j in range (a + b): for _ in range(j): sum += 1 return sum if __name__ == '__main__': T = in..

https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 핫쒸... 솔직히 처음엔 만만하게 봤는데 어려웠다. 알고리즘은 역시 평소에 꾸준히 안해두면 머리가 굳나보다...반성 반성...^,ㅠ 이 문제는 인덱스가 0부터 시작한다는 것과 재귀함수를 잘 사용해야 한다. (내 코드는 너무 더러웠고 가장 깔끔해보이고 이해된 코드를 기준으로 작성함.) 이 문제는 0, 1, 2, 3 사분면(원래는 1부터 시작하지만 0부터라 하겠다), 각각을 네 개의 case..

우리 파이썬도 타입을 지정할 수 가 있었다네요. (3.6 버전부터 말이죠?) 참고 사실 지정이라는 말보다는 '힌트'를 줄 수 있다가 더 정확하겠다. 기존에도 docstring을 통해서 힌트를 줄 순 있었지만 이건 에디터상에서도 좀 더 확실하게 힌트를 주는 듯 하다. *에디터 환경은 파이참 다음과 같이 int타입의 파라미터를 받고, str타입으로 return을 하는 함수를 정의해주었다. 함수 안에서 int타입인 my_input을 형변환 없이 그대로 리턴하였더니 Expected type 'str', got 'int' instead :2 라는 경고표시가 보인다. 또 int타입으로 받아야 할 파라미터를 "hello world"라는 str형으로 주었더니 Expected type 'int', got 'str' in..

프록시 환경에서 https 로 된 주소의 api를 요청할 때 다음과 같은 에러를 볼 수 있다. PKIX path building failed unable to find valid certification path to requested target java.security.cert.CertificateException: No subject alternative names matching IP address found http를 요청할 땐 그냥 되던 것이 https로 요청을 하니 뭔가 인증을 해줘야한댄다… 아무튼 뭔가 까다로워졌다. 역시 보안과 네트워크 공부도 해야한다.. 공부는 끝이 없다… 찾아낸 해결방법은 두 가지가 있다. 첫번째로 내 컴퓨터에 인증서를 깔거나 두번째로 ssl인증을 무시하는 방법 1. ..

프로그램을 짰는데 이따금 생각했던 것 보다 너무나 느린 경우가 있다. 가령 1기가가 넘어가는 obj모델을 geopy.geodesic을 활용한 좌표계의 변환이 하루가 넘어가버린다든가 원인을 열심히 생각해본 결과, 이 미천한 개발자는 언어(파이썬)의 성능을 탓하게 되었는데.. 인터프리터 언어인 파이썬은 편리한만큼 느리다는 말이 만연했기 때문이다. 결론적으로 파이썬 성능을 의심하지말라.. 위의 링크의 글에 의하면 파이썬은 Numba라는 라이브러리를 통해 더 빠르게 바꿀 수 있다고 한다. 해당 라이브러리를 사용하면 C나 포트란 같은 언어보다도 빨라질 수 있다고 한다. 여지껏 느린언어라며 아무것도 모르는 바보같은 개발자(그 누구도 아닌 바로 나)에게 조롱당해온 불쌍한 파이썬이여...그 누명도 이젠 안녕(?) 하지..

파이썬에서 병렬처리를 한다는 것...파이썬에 대해 좀더 deep하게 알아야하는 과정이 필요한 것 같은데? 가령 cpu나 램은 파이썬에서 어떻게 동작하는게 효율적인가 같은. 그런데 그걸 하나하나 다 뜯고 공부한 후에 프로그램을 짤 시간이 없었다. 기한 안에 어떻게든 만들어야했기에 선택권이 없는 상황에 처했다. 그래서 어떻게..? 그냥 했다. 무작정. 되는대로. 손이가는대로. 마음가는대로. 파이썬에서 특정 라이브러리를 꼭 써야하는 일이 있었는데 이 글에서는 geopy를 예시로 글을 써보겠다. 해당 라이브러리는 좌표계 변환을 위해 사용하는 것인데, geopy의 geodesic이 정확도가 높은 대신에 속도가 엄청나게 느리다. 어느정도 정확도를 포기하고 속도를 빠르게 하고싶다면 great_circle이라는 놈을 ..

파이썬은 아주 간단한 차이일지라도 성능에는 정말 다른 결과를 가져오는 일이 종종 있다. 개발하다가 너무 느린 함수가 있었는데 어떻게 기존 코드를 최적화해서 속도를 줄일 순 없을까 보던 중... 소 뒷걸음질 치다가 쥐잡은 것 마냥 속도 개선이 되었다. 그럼 어떻게..? 파이썬에서 리스트를 사용할 때 가급적 다음과 같이 사용을 지양해야 한다. 추가받을_리스트 = 추가받을_리스트 + [추가할 요소] 백문이 불여일견이니 코드와 결과를 한번 보자 from collections import deque import time import random # 10000개짜리의 샘플 리스트를 무작위로 생성해보자 add_list = random.sample(range(100000), 100000) # case1 sample_l..

코딩애플 영상 참고 다음 영상을 참고하여 정리한 글입니다. optional chaining 연산자 ?. var use = { name : 'kim', age : 20 } console.log(user.age) // 20 console.log(user?.age) // 20 user.age와 user?.age의 차이 user가 null이거나 undefined이면 user.age가 에러를 뱉는다. user가 null이거나 undefined여도 user?.age는 undefined를 남긴다. when to use? 중첩된 object자료에서 자료를 뽑을 때 reference error 없이 안전하게 뽑을 수 있음 var user = { name: 'kim' }; console.log(user.age) // un..

glb/gltf 파일을 ktx를 통해 압축을 할 때 gltf-transform 의 cli를 통해 사용하면 편하다. 사용법은 간단한다. npm install --global @gltf-transform/cli 설치가 완료되고 cmd에서 gltf-transform --help 를 쳤을 때 다음과 같이 나온다면 정상적으로 설치된 것이다. ktx2로 압축하려면 help옵션이나 홈페이지에서도 볼 수 있다시피 etc1s나 uastc 옵션을 사용해서 압축하면 된다. 드라마틱한 용량 압축을 위해 etc1s 옵션을 선택하여 압축하였다. 내 로컬에서 잘 실행이 되기에 gltf-transform을 사용하는 프로그램을 빌드하여 이제 다른 컴퓨터에서 테스트를 했다. 결과는 안됐다. ㅠㅡㅠ 어디서 안되는가 했는데 gltf-tra..