본문 바로가기
반응형

Programming64

파이썬 딕셔너리 (Python - Dictionary) 딕셔너리(Dictionary) 파이썬 딕셔너리는 리스트와 유사 항목의 순서를 따지지 않음 Key, Value 형식 Key는 대부분 문자열 or 불변하는 타입 가능(Bool, 정수, 부동소수점수, 튜플, 문자열..) 변경 가능함, 추가, 삭제, 수정 가능 Java의 HashMap과 유사 생성 : {} 중괄호({}) 안에 콤마(:)로 구분된 키:값 쌍을 지정. empty_dict = {} test_dict = { "hobby": "soccer", "description": "I'm a good boy!" } 딕셔너리로 변환하기 : dict() 두 값으로 이루어진 시퀀스를 딕셔너리로 변환 가능 list = [['a', 'b'], ['c', 'd'], ['e', 'f']] dict(list) 결과 {'c':'d.. 2018. 11. 2.
Spring AOP (Aspect Oriented Programming) Spring AOP(Aspect Oriented Programming) 개요 관점 지향 프로그래밍(AOP)은 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법이다. 공통된 관심사항을 모듈화하여 여러 코드에 쉽게 적용할 수 있도록 도와준다. 이를 구현하기 위해 기존의 OOP 방식으로는 한계가 있어 (상속, 위임 등으로 해결하려 하지만 코중복된 코드 등의 한계 발생) AOP개념이 도입되었다. 그렇기 때문에 OOP와는 반대되는 개념이 아닌 보완을 해주는 개념이라고 볼 수 있다. Spring IoC 컨테이너에 의존하지 않기 때문에 필요하지 않으면 사용하지 않아도 무방하다. 이러한 특성 때문에 핵심 비즈니스 로직을 변경하지 않고도 공통 관심 기능을 추가, 적용할 수 있다. 공통 관심 기능은 주로 로깅, 트랜잭.. 2018. 10. 30.
Java8 람다표현식 (Lambda Expression) Lambda Expression Introduction 람다 표현식(Lambda Expression)은 Java8의 새롭고 중요한 기능이다. 이것은 표현식을 사용하는 하나의 인터페이스 메서드를 표현하기 위해 간결하고 명확한 방법을 제공한다. 람다표현식은 또한 Collection으로 부터 데이터를 추출하고 거르고 반복하는 아주 쉽게 만들 수 있도록 Collection 라이브러리들을 개선했다. 게다가 멀티코어 환경에서 새로운 동시성 기능 성능이 향상된다. 람다식(Lambda Expression) 아래코드를 보자. calculator(new Operator { public int execute(int a, int b) { return a + b; } }); 여기서 필요한 코드는 연산하는 부분인 a + b가 전.. 2018. 10. 30.
Spring Boot로 Gradle + SpringMVC + JSP 적용하기 Spring Boot를 이용해서 JSP를 사용하려고 할 때, 별도의 작업을 해야만 합니다. Spring Boot를 사용하는 것부터 JSP페이지를 출력하는 과정을 정리해봅니다. Spring Initializer http://start.spring.io/ Spring Boot Initialize 하는 사이트입니다. 원클릭으로 기본적인 프로젝트를 zip파일 형태로 생성할 수 있습니다. 여기서는 gradle, Spring Boot 1.3.6버전을 선택했고 SpringMVC로 구현할 것이기 때문에 Dependencies에는 Web을 추가했습니다. Generate Project 클릭하면 [Artifact name].zip 파일을 다운받을 수 있습니다. * JPA나 MongoDB, Redis, OAuth 등 다양한 .. 2016. 7. 12.
파이썬(Python) 배열, 리스트(List) 여러 데이터를 담기위한 자료구조로 배열(List)을 가장 많이 사용합니다. 아마도 개발하면서 가장 많이 사용하는 자료구조가 아닐까 생각되는데요. 대표적으로는 Java의 ArrayList가 있겠죠. 파이썬도 당연히 리스트를 제공합니다. 어떠한 방법으로 파이썬에서 리스트를 사용하는지 기본적인 문법과 함께 예를 들어가며 진행해보겠습니다. squares = [1, 4, 9, 16, 25] print(squares) 1부터 5까지의 제곱값이 담겨있는 squares 리스트를 선언하였습니다. 파이썬의 리스트는 [, ] 문자로 표기합니다. Java와 C언어의 배열에 자주 사용된 형태니 쉽게 적응할 수 있습니다. Slicing 파이썬은 indexing을 이용해서 값을 가져올 뿐만 아니라 여러값을 쪼개서 가져올 수 있습니.. 2016. 6. 29.
안드로이드 Permission Denial: android.permission.READ_EXTERNAL_STORAGE 오류 MP3 관련 앱을 개발하던 중 뜬금없는 Permission 오류가 발생. Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media ... requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 폰은 갤럭시 S7. 마시멜로우 환경에서 테스트. 분명 Manifests에 permission을 지정했는데 왜 오류나는거지? 알아보니 M 버전(SDK23) 에서는 Permission을 별도로 지정해야한다. Manifest의 uses-permission은 SDK21버전에 적용되기 때문에 uses-perm.. 2016. 6. 25.
Git의 개념과 사용법 1. Intro 프로젝트를 진행하면서 우리는 매번 소스코드를 작성하며 개발을 해나갑니다. 간단한 프로젝트를 혼자서 진행할 경우 별도의 소스관리가 필요없지만 그렇지 않은 경우 소스의 이력 등을 확인할 수 있는 버전관리시스템을 도입하는 것이 효율적입니다. 대부분의 현업에서는 수많은 개발자들과 함께 규모있는 프로젝트를 진행하는 경우가 많기 때문에 Git 등의 버전관리시스템을 사용합니다. 프로젝트의 소스들은 개발자들에 의해 편집될 때마다 그 이력이 기록되고 관리됩니다. 프로젝트의 원활한 진행을 위해 Git에 대한 간단한 개념과 사용법에 대해서 알아보겠습니다. 대체 왜 Git이 어렵다고 하는 걸까요? 사실 버전관리시스템을 잘 다루는 것은 굉장히 어렵습니다. 자칫 잘못하다가는 이력이 뒤엉킬수도 있고 다른 개발자가 .. 2016. 3. 12.
Android Studio 단위테스트(Unit Test) 하기 안드로이드 앱을 개발하다보면 정상적으로 작동하는지 테스트를 하는 경우가 많다. 한 기능을 추가하고 그 기능이 제대로 작동하는지 작은 단위로 테스트를 하기도하고 개발이 전부 완료되었을 때 출시하기 전에 종합적인 테스트를 하면서 앱의 품질을 체크하고 이상이 없으면 출시를 하게 된다. 이 때, 우리는 테스트를 어떤식으로 수행하는가? Spring, Java 웹 개발, Application 등 Java 기반의 소프트웨어를 테스트할 때는 주로 JUnit을 이용하여 단위테스트를 했을 것이다. 하지만 안드로이드 앱의 경우는 어떻게 해야하는가? 아마도 직접 앱을 실행해보고 결과를 확인하면서 진행한 경우가 많았을 것이다. 예를들어 회원가입 기능을 추가하였을 때, 이메일 형식의 ID인지 체크하고 비밀번호를 입력받아 가입시키.. 2016. 2. 21.
Java 객체 직렬화(Serialization) 와 역직렬화(Deserialization) Java의 직렬화와 역직렬화에 대해서 알아봅시다. 정의 Java에서 말하는 직렬화(Serialization)란 과연 뭘까? 말그대로 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미한다. 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 해준다. 이것은 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용된다. 그럼 역직렬화(Deserialization)는? 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다. 직렬화 가능한 클래스 자. 그럼 직렬화를 해보자! 직렬화를 위한 전제조건이 있다. 바로 직렬화가 가능한 클래스를 먼저 만드는 것이다. 이는 .. 2016. 2. 14.
디자인패턴 - 옵저버 패턴(Observer Pattern) 정의 디자인 패턴 중 옵저버 패턴(Observer Pattern)을 알아보자. 객체지향 설계를 하다보면 객체들 사이에서 다양한 처리를 할 경우가 많다. 예를 들어 한 객체의 상태가 바뀔 경우 다른 객체들에게 변경됐다고 알려주는 경우를 들 수 있다. 상태를 가지고 있는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수가 있다. 서로의 정보를 넘기고 받는 과정에서 정보의 단위가 클 수록, 객체들의 규모다 클 수록, 각 객체들의 관계가 복잡할 수록 점점 구현하기 어려워지고 복잡성이 매우 증가할 것이다. 이러한 기능을 할 수 있도록 가이드라인을 제시해 주는 것이 바로 옵저버 패턴이다. 이 패턴은 과연 개발을 하면서 밀.. 2016. 1. 25.