콘텐츠로 건너뛰기
Home » Development » 페이지 43

Development

프로그래밍 언어 및 환경

오일러 프로젝트 3번 문제

문제: 600851475143의 소인수 중 가장 큰 값을 구하시오. 소수를 찾는 가장 간단하고 무식한 방법은 2에서 자기자신까지 1씩 더하면서 나눠보고 확인하는 방법이다. 따라서 소인수를 찾으려면 1)나눠 떨어지는지 검사, 2) 그 수가 소수인지 검사를 하면 된다. 그래서 저 숫자의 가장 큰 소인수를 그런 무식한 방법으로 계산하려한다면…. 아마 컴퓨터가 한 동안 말이 없어질 건데, 꽤 오랜 시간동안 말이 없을 거다. 아, 물론 저 수에서 거꾸로 내려가면서 계산을 해보면 어떻겠냐고? 조금은 빠를 거 같은데 해보시라… 조금 더 계산 횟수를 단축 시키기 위해서 사용한 방법은… 더 보기 »오일러 프로젝트 3번 문제

[Python] SQLite3 DB의 테이블 칼럼 이름 알아내기

테이블의 칼럼 이름을 기억하기 힘든 경우에는  CREATE TABLE 명령을 따로 복사해서 보관하거나,  아예 종이에 출력해 두기도 하는데 만약 내가 만든 테이블이 아닌 경우에는 SQLite3 쉘을 실행해서 .schema 명령으로 테이블 스키마를 확인해야 한다. (사실 이것도 상당히 바람직한 방법인데, 윈도 시스템에서 이 작업을 할 수 있는 방법에 대해서는 조만간 다시 글을 하나 쓸 생각이다.)더 보기 »[Python] SQLite3 DB의 테이블 칼럼 이름 알아내기

[C] 함수로 전달된 포인터

포인터를 함수의 인자로 받는 경우, 함수내에서 원본을 변경하는가. 내용이 너무 두서 없어서 포스트 전체를 수정합니다. 처음 의문이 든 부분은, 문자열을 가리키는 포인터를 함수로 넘겨주고 문자열을 변형하면 포인터의 값이 변하는가?라는것이었는데. 이는 사실 그리 어려운 문제가 아니다. 포인터는 메모리의 주소를 가리키는 타입의 변수이고 이는 사실 unsigned int 나 unsinged int64 등의 정수형과 비슷하게 숫자를(메모리 번지도 결국 숫자값이므로) 담는 변수이다. 그리고 함수에 선언된 인자는 함수 내부에서만 사용하는 지역변수이고, 표준 타입의 변수를 함수에 전달하면 그 값이 인자로 선언한 변수에 들어가는데, 이건 그냥 변수의 값이… 더 보기 »[C] 함수로 전달된 포인터

현재 페이지의 URL에서 도메인 주소만 구하기

document.location.href 속성 값은 http://, https:// 로 시작하는 페이지의 전체 URI 정보를 나타낸다. 이 속성에 정규식을 매칭하여 도메인에 해당하는 부분만을 잘라낼 수 있다. 여기서 사용된 패턴은 다음과 같이 설명된다. http[s]:// 다음에 위치하며 도메인 뒤에는 문자열이 끝나거나 /,?,& 따위의 파라미터 연결자가 올 수 있다. 파라미터 연결자 앞까지를 끊어서 모든 문자를 매치한다.

네이버 블로그 xml-rpc 클라이언트 만들기 – 3

조금 더 깔끔하게 정리한 MetaWebLog API의 전체 소스. struct 형태로 내려받는 반환값은 포스트와 관계된 내용과 카테고리와 관련된 것들인데, 카테고리는 사실 상 카테고리 제목만 가지고 있으면 되고, 포스트와 관련한 내용은 포스트 클래스로 바로 변환하여 사용할 수 있게 했다. 또한 최종적으로 불러왔거나 발행한 포스트는 내부적으로 그 ID를 기억하여 사용이 쉽도록 했다. 이전 글에서도 잠깐 소개했지만, Post 클래스에서 팩토리 메소드를 구현하기 위해 @staticmethod 데코레이터를 활용. (까먹을까봐 계속 써 둠) 사용법은 간단하다. 네이버를 기준으로 설명하면 위 파일을 임포트해서 Weblog의 객체를 생성한다. 생성시 파라미터에는 네이버아이디,… 더 보기 »네이버 블로그 xml-rpc 클라이언트 만들기 – 3

[Cocoa / Objective-C] NSString의 문자열 뒤집기, 글자를 정렬한 문자열 구하기.

프레임워크에 당연히 있는 기능일 줄 알았는데 없더라… 그래서 자작. 짤막한 설명 문자열 뒤집기는 C문자열로 바꾼다음 포인터를 쓰는게 제일 깔끔할 것 같아서 그렇게 했다. -UTF8String 메소드는 const char 타입 포인터를 리턴하는데, 이걸 char 형으로 강제캐스팅하는 게 찜찜해서 strcpy로 복사했는데, 어디서 이 함수도 상당히 나쁘다고 쓰지 말라더라. (다른 뭐를 쓰라던데 그게 기억이 안나서 그냥 씀) malloc으로 할당한 메모리는 ARC의 관심밖이므로 철저히 free 해주는 나란 남자, 그런 남자… 문자열내 문자들을 사전순으로 정렬해주는 건 소인수 분해 따위나 할 때 쓸모가 있긴 있을텐데,  NSArray의 sortedUsingComparator:… 더 보기 »[Cocoa / Objective-C] NSString의 문자열 뒤집기, 글자를 정렬한 문자열 구하기.

[Python] 파이썬의 클래스 메소드, @staticmethod

파이썬의 데코레이터(decorator)문법은 흔히 찾아보기 힘든 문법인데 (거의 프레임워크들에서나 볼 수 있음) 클래스를 만들다보면 요긴하게 쓰이는 부분이 있다. (혹은 책 같은데서 찾아보게 될지도…) class Post: def __init__(self): pass @staticmethod def postFromStructs(structs): if type(structs) == list: result = [] for elem in structs: a = Post() for key in a.keys: setattr(a, key, elem[key]) result.append(a) if len(result) > 1: return result else: return result[0] else: result = Post() for key in structs: setattr(result, key, structs[key]) return result 위 코드에서 @staticmethod라는 데코레이터를 사용했는데, staticmethod는… 더 보기 »[Python] 파이썬의 클래스 메소드, @staticmethod

사전의 값을 객체속성처럼 접근하는 방법 – Python

파이썬의 사전은 키-값쌍의 형태로 데이터를 구분하여 저장할 수 있고, 사전의 값이 될 수 있는 타입은 제약이 없기 때문에 중첩된 형태의 사전을 만드는 것도 가능하다. 만약 사전의 모든 키가 문자열이라면 사전을 JSON 데이터로 변환할 수 있다. JSON은 자바스크립트에서, 자바스크립트 객체로 바로 변환할 수 있다. 따라서 자바스크립트에서는 root.somekey.nestedkey와 같은 식으로 객체 속성으로 접근해서 특정 위치의 값을 액세스하는 것이 가능하다는 말이다. 이에 반해 파이썬에서 JSON은 사전으로 파싱되고, 같은 데이터에 접근하기 위해서는 root[‘somekey’][‘nestedkey’] 와 같은 식으로 접근해야 한다. 이것을 자바스크립트에서처럼 root.somekey.nestedkey와 같이 액세스하기 위해서… 더 보기 »사전의 값을 객체속성처럼 접근하는 방법 – Python

파이썬의 데코레이터와 고차함수

데코레이터(decorator)는 말 그대로 어떤 객체에 대해서 부가적인 기능을 덧붙이는 것을 말한다. 어떤 클래스에 대해서 기능을 추가하려 할 때에 보통 그 클래스를 서브 클래싱하는데, 파이썬에서 데코레이터는 클래스가 아닌 임의의 함수에 대해서 기능을 추가한다. 언뜻 보기에 별 의미 없을 것 같은 이러한 패턴은 특정한 맥락에서는 코드를 간결하게 만들면서 문법적으로 깔끔하게 정리되는 코드를 만들 수 있는 장점이 있다. 오늘은 파이썬의 데코레이터는 어떻게 만들어지며, 어떤 상황에서 쓰일 수 있는지 알아보도록 하자.
더 보기 »파이썬의 데코레이터와 고차함수