본문 바로가기

Geopy AttributeError: 'NoneType' object has no attribute 'latitude' 주소에서 위도와 경도를 가져오기 위해 geopy를 이용하는 코드에서 no attribute 'latitude' 에러가 발생할 수 있다. 코드를 보자. from geopy.geocoders import Nominatim def geocoding(address): geolocoder = Nominatim(user_agent="South Korea", timeout=None) geo = geolocoder.geocode(address) x_y = [geo.latitude, geo.longitude] return x_y for addr in ["강원 강릉시 해안로 1459", "강원 강릉시 초당순두부길 77번길 15"]: print(addr, geocoding(addr)) geocoding 함수는 사람들이 사용..
[Swift] error: ambiguous use of 'split(separator:maxSplits:omittingEmptySubsequences:)' 너무 간단한 코드를 짜는데, 너무 이상한 에러가 발생했다. 코드가 풀려고 하는 문제는 문자열을 단어별로 분리해서, 가장 짧은 단어의 길이를 찾는 것이다. 빈칸이 포함된 어느정도 길이의 문자열이 인자로 주어지고, 빈칸으로 단어가 나누어진다. 푸는 알고리즘은 간단하다 주어진 문자열을 빈칸으로 나누어 ( spllit 메소드 ) 단어의 시퀀스로 만든다 시퀀스의 각 단어의 길이를 .count 로 구한다. 이를 매핑해서 단어길이의 시퀀스로 변환한다. 단어길이의 시퀀스에서 가장 작은 것을 .min() 으로 구한다. 코드를 보면 한줄로 끝이 난다. (아래 코드는 가독성을 위해 줄바꿈을 추가.) func find_short(_ str: String) -> Int { return str.split(separator: " ..
[Swift] Counter 구현하기 via codewars codewars 를 풀다가 한줄짜리 카운터 구현이 있어서 옮겨본다. 한눈에 이해가 안 되서 옮겨보는 것임. 카운터라고 하면, 일련의 시퀀스 (리스트, 어레이로 주어진) 가 주어지고, 각각의 갯수를 세는 것을 말한다. python 에는 collections 에 Counter 라는 클래스를 간단히 이용하면 된다. 코드는 다음과 같다. func counter(_ seq: [Int]) -> [Int:Int] { return Dictionary( seq.map { ($0, 1) }, uniquingKeysWith: +) } // ViacheslavTronewsky@codewars 딕셔너리는 두개짜리 튜플의 시퀀스를 받아서, 딕셔너리로 바꿔주는데, 중복되는 키가 있을 때 어떻게 처리할지를 결정하는 인자가 uniqu..
[Swift] 소인수분해 swift 로 소인수분해하는 코드를 짜 봤다. 정수를 인자로 주면, 그 정수의 소인수분해를 (소수, 거듭제곱수) 의 어레이로 반환한다. 1은 빈 어레이를 반환한다. #!/usr/bin/env swift import Foundation func primeFactors0(_ n: Int) -> [(Int, Int)] { var factors: [(Int, Int)] = [] var p = 2 var pow = 0 var n = n while p * p 0 { factors.append((p, pow)) } p += 1 pow = 0 } if n != 1 { factors.append((n, 1)) } return factors } func primeFactors(_ n: Int) -> [(Int, Int)]..
[Swift] swift 단일 스크립트 파일을 컴파일하기 command line arguments 들을 처리하는 기능을 간단한 .swift 스크립트를 작성하여 테스트하려 했다. 간단한 테스트코드들은 컴파일한 실행파일이 아닌, 스크립트로 형식으로 실행하여 테스트하였었는데, 스크립트로 실행할 때에는, 신경쓰지 않았던 많은 실행인자들이 부가적으로 붙어 있었다. 메인 실행파일도 스크립트파일이 아니었다. 그래서, 스크립트 소스를 컴파일하여 단일 실행파일을 만들 수 있는 방법이 있는지 찾아봤다. 아주 간단하게 가능하다. swiftc my_script.swift -o my_program my_script.swift 파일을 컴파일 하려면, 셸에서 위와 같이 실행하면, my_program 이란 이름의 실행파일이 만들어진다. 컴파일러라서 swift 가 아닌 마지막에 c 자가 붙..
signal 링크 시그널에 대한 기본개념 : https://www.joinc.co.kr/w/Site/system_programing/Book_LSP/ch06_Signal 리눅스 시스템 프로그래밍 6장 - Signal sigaction 함수군 을 이용한 시그널 객체의 처리 www.joinc.co.kr 스위프트 시그널 처리 패키지 : https://swiftpackageindex.com/Kitura/BlueSignals Signals – Swift Package Index Use this Package×How you add this package to your project depends on what kind of project you're developing.When working with an Xcode project:..
virtualbox 에서 실행시킨 macOS 에서 하드웨어 가속기능으로 화면이 이상해지는 문제 virtualbox 에 macOS (mojave)를 깔아서 간단한 테스트를 해 보고 있습니다. 그런데, vscode 와 chrome 의 화면이 제대로 보이지 않는 문제가 발생했습니다. vscode 에서는 터미널화면에서 터미널의 내용이 커서가 있는 라인 근처는 검게 보이지 않았습니다. 엔터를 몇번 쳐서 라인을 좀 넘기면 그제서야 내용이 보여 불편했습니다. chrome 은 구글 첫화면, gmail 첫화면과 같이 아주 간단한 화면도 제대로 나오지 않았습니다. vscode 의 경우에는 편집화면이라던가 파일브라우즈 화면 같은 부분은 제대로 나와서 약간의 불편함을 감수하고 쓸 수 있었지만, chrome 은 전혀 사용할 수 없는 상황이었습니다. 결론적으로 두가지 모두 각 프로그램의 설정에서 그래픽 하드웨어 가속기능을..
[EP 057] 2의 제곱근의 연분수 표현 #!/usr/bin/env python def jarisu(n): su = 0 while n != 0: su += 1 n //= 10 return su bunja = 3 bunmo = 2 count = 0 for i in range(2, 1001): bunja, bunmo = bunja + 2 * bunmo, bunja + bunmo if jarisu(bunja) > jarisu(bunmo): count += 1 print(count) 오일러 프로젝트 57번 문제. 2의 제곱근을 연분수(continued fraction) 모양으로 근사한 분수들(초기 1000항)의 분자와 분모의 자리수 비교하여 분자의 자리수가 분모의 자리수보다 커지는 것의 갯수를 구하는 것. https://daewonyoon.tistor..