본문 바로가기

Programing

(403)
[Swift] String test in PlayGround xcode에는 PlayGround 라는 코드를 쉽게 테스트하기 위한 인터페이스를 제공한다. REPL 이라는 말처럼 스크립트 언어를 쓰고 평가를 바로바로 해서 어떤 결과를 만드는지 확인할 수 있는 시스템(체계)이다. import UIKit import Foundation // https://forums.swift.org/t/checking-if-a-url-is-a-directory/13842 // https://stackoverflow.com/questions/24208728/check-if-nsurl-is-a-directory extension URL { var isDirectory: Bool { let values = try? resourceValues(forKeys: [.isDirectoryKey])..
[Contact] 파일열기 다이얼로그: NSOpenPanel 드래그 앤 드롭 으로 구현을 하려고 했는데 너무 러닝 커브가 커서 파일 열기 다이얼로그로 작성을 했다. 코드 스니핏 import Cocoa func openDialog(_ sender: Any) { let panel = NSOpenPanel(); panel.canChooseFiles = true; panel.canChooseDirectories = true; panel.resolvesAliases = false; panel.allowsMultipleSelection = true; if (panel.runModal() == NSApplication.ModalResponse.OK) { if (panel.urls.count > 0) { for url in panel.urls { print(url.path) }..
[Spring MVC] HandlerMethodArgumentResolver 구현하기 가끔 Controller 에 특정 타입의 값을 자동으로 받고 싶을 경우가 있다. path가 "foo/{a}/{b}" 인데 a 랑 b값을 aggregation 해서 특정 객체로 만들고 싶은데 프레임워크에게 시키고 싶은 것이다. 이럴 경우 @PathVariable 에 대한 메서드 인자 Resolver 를 만들어주면 해결이 가능하다. 기본적으로 @PathVariable Resolver는 두 가지가 있다. PathVariableMethodArgumentResolver PathVariableMapMethodArgumentResolver 위의 경우는 파라미터의 이름이나 @PathVariable 에 지정된 value 의 값을 매핑시켜준다. 가끔 타입 변환이 필요한 경우에는 conversionService에게 타입 변..
[JPA] @Converter 는 어떻게 동작할까? 지니님이 기본 데이터 타입과 String 등을 enum 으로 바꾸는 작업을 진행하셨다. 대부분은 아래와 같이 @Enumerated 으로 enum의 이름을 사용하도록 작업을 했다. import lombok.Getter; import lombok.Setter; import javax.persistence.*; @Entity @Table(name = "TEST") @Getter @Setter public class TestEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "SEQ") private Integer id; @Column(name = "ACTION_TYPE", length = 100) @Enumerated(..
[Java] 배열 in 자바 자바에서는 배열이 객체이다. 이것은 자바 언어 명세에 적혀있다. JLS 4.3.1 An object is a class instance or an array. 오브젝트는 클래스의 인스턴스이거나 배열이다. C/C++ 의 배열 즉 C/C++의 배열과 달리 자바의 배열은 객체라는 큰 차이가 생긴다. C언어에서는 sizeof 라는 명령으로 자료구조의 크기를 구할 수 있다. #include int main(int argc, const char * argv[]) { int num = 1; int arr[2] = { 1, 2 }; printf("%lu\n", sizeof(num)); printf("%lu\n", sizeof(arr)); return 0; } C언어의 데이터 타입의 크기는 플랫폼(시스템)에 따라 다를 ..
[test] 404 테스트 404 테스트라는 이름은 그냥 내가 지은 이름이다. 지금 다니는 회사는 PO라고 부르는 기획자도 어느정도 개발 지식을 요구하는 경우가 있다. 데이터 분석을 직접하는 경우가 있어서 SQL 같은 쿼리 언어에 대해 알고 있어야 스스로 일이 가능하다. 또한 swagger 를 통한 API 사용도 하는 경우가 있어서 HTTP에 대한 배경 지식이 필요하다. 그래서 내가 생각해 낸 테스트이다. 물론 이것이 모든 경우에 대해 커버 가능하지는 않지만 해보면 이 사람이 어느정도의 능력을 가지고 있는가 간접적으로 확인해 볼 수 있다. 필요한 것 원가 웹상에 글을 쓰거나 삭제가 가능한 플랫폼을 준비한다. 나의 경우 티스토리 블로그를 이용하는데 이용 가능한 방법은 여러 플랫폼이 있을 것이다. 또한 커뮤니케이션을 위한 도구가 필요..
[책] 프로그래머의 장점과 단점 프로그래머의 장점은 A라고 말하면 A를 해준다. 프로그래머의 단점은 A라고 말하면 A만 해준다. 최근에는 이런 이야기도 있었다. [개발자의 머리구조] 어느 아내가 프로그래머 남편에게 「쇼핑하러 갈 때, 우유 하나 사와. 아, 계란 있으면 6개 사와」 남편은 잠시 후, 우유를 6개 사왔다. 아내는 물었다. 「왜 우유를 6개나 사왔어!」 남편「계란이 있길래 6개 사왔지…」
[Spock Framework] Mock vs Stub Spock Framework Reference Documentation 을 보면 다른 종류의 Mock Objects로 Stub을 소개하고 있다. 레퍼런스에서는 mock 은 stubbing과 mocking을 둘 다 할 수 있고 ,stub은 단지 stubbing 만 할 수 있다고 나와 있다. 가장 큰 차이는 stub은 몇 번 호출되었는지를 물어볼 수 없는 차이가 있다. 하지만 이것으로는 Mock() 와 Stub()을 언제 써야할 지 명확하지 않다. 우연히 처음에는 Stub()을 사용하다가 카운팅 여부를 확인해야 해서 이후에 Mock()으로 바꾸는 작업이 있었는데 이 side-effect로 다른 테스트 케이스가 깨지는 경험을 하게 되어 차이를 이제야 이해할 수 있었다. 예를 들어 아래와 같이 CancelSer..