코딩
-
[Python/Web scraping] 네이버 증권 일별 시세 가져오기, iframe의 requests와 selenium webdriver에서의 처리코딩/Python 2023. 3. 30. 22:48
네이버 증권의 종목별 일별 시세는 requests로는 가져올 수가 없다. 네이버 증권의 일별 또는 시간별 시세는 iframe을 이용해 다른 주소의 정보를 가져오는데, requests로는 일별시세의 iframe src 사이트에 접속하지 못한다. 실제로 개발자모드의 검사로 들어가서 확인한 iframe 사이트 주소와 webdriver를 이용해서 얻은 사이트 주소가 미세하게 달랐다. 개발자모드의 주소와 requests에서 얻은 것은 네이버의 앞 주소가 빠진 '/item/sise.naver?code=005930' 였고, webdriver에서 얻은 것은 'https://finance.naver.com/item/sise.naver?code=005930' 전체 주소였다. 'https://finance.naver.com..
-
Python/사용자 정의 함수의 툴팁 작성코딩/Python 2023. 3. 29. 21:31
사용자 정의 함수의 툴팁을 만드는 방법은 Docstring을 이용하여 설명을 작성하면 된다. Docstrings 작성하기 파이썬 함수를 정의할 때, 함수의 첫 번째 줄에 작성하는 Docstring을 사용하여 함수의 설명을 작성. Docstring은 세 개의 큰따옴표(""") 또는 작은따옴표(''')로 둘러싸인 문자열. Docstring의 구조 첫 줄에는 함수의 간단한 설명을 작성. 두 번째 줄은 빈 줄. 이후 줄부터는 함수의 인자와 반환값 등에 대한 설명을 작성. 설명줄 앞에 \n을 넣어 줄바꿈 처리. def docstring_ex(): ''' \nline 1: 간단한 설명 \nline 3: 상세한 설명 \nline n: 인수 설명 '''
-
[VBA/Tip] Array 사용 시 Lbound() 문제코딩/vba 2023. 3. 27. 08:04
배열 작업을 할 때 일반적으로 루프문에서 Lbound()..Ubound()로 순환을 정하는데, 대부분의 경우는 배열 시작을 0으로 해서 문제가 없지만 Range를 Variant Array로 변환시켜 작업할 때는 1로 순환을 시작해서 곤란하다. 당장 작업한 경우는 쉽게 어떤 배열인지 아니까 순환 시작점이 고민스럽지 않은데, 오래 된 코드를 수정할라치면 뭐가 뭔지 내가 만들어 놓고도 이해가 안된다. 그리고 자주 쓰는 코드들은 라이브러리 형태로 사용하니까 이런 경우 배열을 구분못해 생기는 오류가 종종 생긴다. 매일 코딩을 하는게 아니라 그때 그때 필요할 때 하니까 이런 일이 생긴다. 이건 왜 인덱스가 0이고 이건 또 왜 1이냐? 이런 문제가 부지기수다. 이런 문제로 배열이 산으로 가버리고 만다. 그래서 이런 ..
-
[VBA/Tip] Range().Value 와 For...Next loop의 효율성, 속도 비교 - ChatGPT의 거짓말코딩/vba 2023. 3. 27. 07:37
아래 내용은 ChatGPT로부터 받은 내용인데, 실제 테스트를 해보니 아래 내용을 인정할 수가 없었다. ChatGPT의 답변 일반적으로 VBA에서 For 루프를 사용하는 것이 범위 할당보다 더 빠르고 효율적입니다. 이유는 Range 객체를 작성하고 값을 할당하는 작업이 많은 더 많은 계산을 필요로 하기 때문입니다. 따라서, For 루프를 사용하여 각 셀에 값을 할당하는 것이 더 빠르고 효율적입니다. 그러나, 데이터의 크기와 복잡성에 따라 상황이 달라질 수 있으므로, 작업을 수행하기 전에 시간을 측정하고 둘 중 어떤 것이 더 효율적인지 확인하는 것이 좋습니다. set r = Range("A1:A100") r.Value = 100 For i=1 to 100 Cells(i,1)=100 Next i 테스트 결과..
-
Swift 정리 #9 구조체와 클래스코딩/Swift 2022. 12. 28. 22:55
구조체와 클래스 클래스의 인스턴스: 객체 구조체와 클래스 비교 구조체와 클래스 값을 저장할 속성 정의 기능을 제공하는 메서드 정의 서브스크립트 구문을 사용하여 해당 값에 대한 액세스를 제공하도록 서브스크립트를 정의 초기화를 정의하여 초기 상태를 설정 기본 구현 이상으로 기능을 확장 특정 종류의 표준 기능을 제공하기 위한 프로토콜 준수 구조체에 없는 클래스의 추가 기능 상속을 통해 한 클래스가 다른 클래스의 특성을 상속 타입 캐스팅을 사용, 런타임에 클래스 인스턴스의 타입을 확인과 해석 비초기화는 클래스의 인스턴스가 할당한 모든 리소스를 해제 참조 카운팅은 클래스 인스턴스에 대한 하나 이상의 참조를 허용 클래스가 지원하는 추가 기능을 사용하면 복잡성이 증가 일반적으로, 추론하기 쉽기 때문에 구조를 선호 적..
-
Swift 정리 #8 Enumerations코딩/Swift 2022. 12. 28. 22:44
Enumerations 열거형 Syntax // enum keyword enum CompassPoint { // enumeration type은 복수형보다는 단수형을 사용 case north case south case east case west } // directionToHead가 CompassPoint로 한 번 선언된 후, // . 을 사용한 다른 CompassPoint 값으로 지정. var directionToHead = CompassPoint.west directionToHead = .east enum Planet { case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune // Multiple cases on a single lin..
-
[Python] Tree demo코딩/Python 2022. 12. 22. 14:17
재귀함수와 `name == 'main' 최상위 코드 환경 예제 #!/usr/bin/env python3 """ turtle-example-suite: tdemo_tree.py 고전적인 LOGO 트리 프로그램에 대비한 '너비 우선 트리'를 표시 방법: (1) 제너레이터가 그림을 그리는데, 그 그림은 어떤 의미에서는 부작용으로 이해될 수 있다. 왜냐 하면 제너레이터는 항상 None을 생성하기 때문이다.(의역, 문장을 이해하기 힘들었음) (2) 터틀 복제: 각각의 가지치는 점에서 현재 펜을 복제. 최종적으로 1024개의 터틀이 생성됨. """ from turtle import Turtle, mainloop from time import perf_counter as clock def tree(plist, l, ..