반응형

전체 글 199

레이아웃의 종류

서론 안드로이드에서 Activity를 구성하는것은 버튼, 텍스트뷰와 같은 View들이다. 그런데 이러한 View들은 혼자서는 화면에 배치할 수 없고, ViewGroup에 포함된 상태로 위치가 결정되어야 화면에 배치할 수 있다. 또한 여기서 ViewGroup도 View에 포함되기 때문에 ViewGroup안에 ViewGroup이 포함될 수 있다. View와 VIewGroup에 대해서는 아래의 글에서 설명해 놓았으니 참고하시길 바란다. https://angangmoddi.tistory.com/256 View와 ViewGroup 안드로이드에서 사용자에게 실제로 보여지는 UI요소는 크게 View와 ViewGroup으로 이루어져있다. View View는 안드로이드 화면에 보이는 모든 객체들을 말한다. 예를 들면 B..

CI/CD란? (CICD)

서론 프로그래머는 제품(소프트웨어)을 생성하기 위해 머리를 쥐어짜서 코딩을 한다. 어떻게 하면 더 효율적으로 자원을 사용할지, 속도는 어떻게 개선할지, 버그는 어떻게 고쳐야 할지... 그렇게 힘들게 만들어낸 코드를 사용자에게 선보이기 위해선 작성한 코드를 빌드, 테스트하고 배포 하여야 한다. 컴파일(Compile) 및 빌드(Build) 컴파일은 우리가 작성한 코드를 컴퓨터가 이해하고 동작시킬 수 있도록 번역해주는 작업이라고 할 수 있다. 이러한 작업을 수행하는 것을 컴파일러(Compiler)라고 하며, 컴파일을 마친 소스코드를 링크 과정을 거쳐 실제 실행 가능한 소프트웨어(. exe파일)로 만들어주는 과정 전체를 빌드라고 한다. 전처리 전처리가 전처리 구문을 처리하는 것을 말한다. C언어에서 볼 수 있는..

Computer Science 2022.02.03

빌더 패턴(Builder Pattern)

빌더 패턴(Builder Pattern)이란? 빌더 패턴은 생성 패턴(ConcretePattern)중 하나로, 객체를 생성하기 위한 방법 중 하나라고 할 수 있다. 이외의 생성 패턴으로는 생성자 패턴, 정적 메서드 패턴, 수정자 패턴 등이 있다. 그럼 먼저 빌더 패턴을 사용하는 이유에 대해서 알아보도록 하자. 기존의 생성자만을 사용한 객체 생성의 경우 생성자를 overload 함으로써 불필요한 생성자가 늘어난다거나 생성자에 들어갈 인자가 많아질 경우 이들의 순서를 일일이 맞춰 주어야 하고, 각 값이 어떤 값으로 들어가는지 헷갈릴 여지가 있다는 불편함이 존재한다. 예를 들어 Persoon이라는 클래스에 인적사항을 인자로 주어 객체를 생성한다고 생각해보자. fun main(){ var gildong = Pe..

해시맵(HashMap)

이번 글에서는 HashMap에 대해서 알아보도록 할텐데, 그 전에 먼저 Hash와 Map에 대해서 알아보도록 하자. 해시(Hash)와 맵(Map) 해시(Hash)는 어떠한 임의 길이의 데이터(Key)를 고정된 길이의 해시값으로 변경하는 단방향 암호화를 말한다. 이러한 해시값은 해시함수에 의해서 결정되며, 해시값으로부터 원본 데이터인 Key를 구할 수 없다는 특징이 있다. 좀 더 자세한 설명은 아래의 링크에서 확인할 수 있다. https://angangmoddi.tistory.com/289 해시(Hash)란? Hash? 해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것을 말한다. 이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 ..

Computer Science 2022.02.01

해시(Hash)란?

Hash? 해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것을 말한다. 이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 데이터를 해쉬값(Hash value)라고 한다. 또한 이렇게 데이터를 해싱하는 함수를 해시 함수(Hash function)이라고 한다. 해시의 특징은 아래와 같은 것들을 말할수 있다. 임의 길이의 데이터로부터 고정된 길이의 해시값을 계산한다. 해시값을 고속으로 계산할 수 있다. 일방향성을 갖기 때문에(단방향 암호화) 해시값으로부터 Key를 역산할 수 없다. Key가 다르면 해시값도 달라져야 한다. (서로 다른 Key가 같은 해시값을 가지는 것을 '충돌'이라고 한다.) Hash function 위에서 말했듯이 ..

정보보안 2022.01.29

Array.map, Array.reduce, Array.filter (코틀린)

면접에서 Array의 map과 reduce가 무엇인지에 대한 질문이 들어왔다. Array에서 두 함수를 사용해본 적이 없어서 답변을 하지 못해 글로 작성하여 알아보도록 하자. Array.reduce() 일단 reduce부터 알아보도록 하자. 코틀린 공식 문서에는 reduce함수는 위와 같이 작성되어있다. reduce함수는 Array의 첫 번째 값부터 시작하여 순서대로 지정한 연산을 수행한 값을 리턴한다. 코드를 통해서 사용해보도록 하자. fun main(){ var arr = arrayOf(183, 17, 32, 10, 8, 27) var res = arr.reduce{x, y -> x + y} println(res) } 위 코드에서 arr이라는 Array에 reduce함수를 사용한다. 연산을 수행하는 ..

리스트뷰(List View) vs 리사이클러뷰(Recycler View)

안드로이드에서 목록을 표시하는 View로는 리스트뷰와 리사이클러뷰 두 가지가 있다. 이 글에선 두 View가 어떻게 다른지에 대해서 알아보도록 하자. 리스트뷰와 리사이클러뷰의 차이점 1. ViewHolder 가장 먼저, 리사이클러뷰는 ViewHolder패턴을 사용하는데 반해, 리스트뷰는 이를 사용하지 않는다는 점이 있다. 리스트뷰의 경우 목록에 있는 각 Item마다 이를 구성하는 View들을 findViewById을 통해 연결해주어야 하는데, 이는 상당히 무거운 작업이기 때문에 Item을 생성할 때마다 이런 작업을 하게 되면, 성능 저하가 일어나게 된다. 반면, 리사이클러뷰에선 ViewHolder패턴을 강제로 구현하여 위와 같은 문제점을 해결한다. ViewHolder패턴이란? 각 View를 보관하는 객체..

옵저버 패턴(Observer Pattern)

옵저버 패턴 Observe, 영어로 관찰하다 라는 뜻을 가지고 있다. 위 사진은 스타크래프트 게임에 나오는 Observer라는 관측 유닛이다. 플레이어는 위 유닛으로 상대방을 감시하여 정보를 얻어낼 수 있을 것이다. Observer를 보여주는 이유는 옵저버 패턴도 마찬가지이기 때문이다. 옵저버 패턴은 어떤 객체의 상태 변화를 '관측'하여 연관된 객체들에게 알림을 보내는 디자인 패턴이라고 할 수 있다. 예시 예를 들어서 설명해보도록 하자. 한 유튜버가 있고, 해당 유튜버를 구독한 사람들에게 동영상이 업로드될 때마다 구독자들에게 영상 제목을 알려주도록 해보자. interface Youtuber{ fun subscribe(subscriber: Subscriber) fun unsubscribe(subscribe..

안드로이드 View에 외곽선(테두리) 추가하는 법

안드로이드에서 디자인을 위해 View에 테두리를 넣는 법에 대해 알아보도록 하자. 흔히 말하는 '야매'로 해결하려면 다른 View를 하나 생성하여 두께를 1dp, 2dp 등으로 설정하여 해결할 수도 있지만, 이 방법은 조금 비효율적일 것이다. 그래서 테두리를 설정하기 위해 xml파일을 하나 만들어 View의 background로 설정할 것이다. 먼저, drawable폴더에 view_border.xml파일을 하나 만들어주도록 하자. 위의 코드를 보면, stroke에서 테두리의 두께와 색상을 설정할 수 있다. 위에선 3dp로 두께를 설정했고, solid에서 배경색을 지정할 수 있다. View의 background로 지정하는 것이기 때문에 배경색을 맞춰서 잘 지정해주어야 한다. 그리고 item에서 방향마다 두..

안드로이드 리스트에 View붙이기 (Header, Footer)

이번 글에선 ListView의 상단 또는 하단에 다른 View를 부착하는 법에 대해서 알아보도록 하자. ListView는 목록을 보여주기 위해서 사용되는 View이며 이 리스트에 대한 특징, 제목 등을 표현하기 위해 상단에 붙이는 것을 Header, 리스트를 다루기 위해 버튼 등을 하단에 붙이는 것을 Footer라고 한다. Xml파일 작성 먼저, Header와 Footer에 사용할 View의 리소스 파일을 작성한다. 화면 구성은 아래와 같이 해보도록 하자. Header를 위한 Layout파일부터 추가해보도록 하자. 다음으로 Footer를 위한 Layout파일을 추가하자. 다음으로 MainActiviy Layout에 ListVIew를 하나 추가한다. LIstView에 Header, Footer추가 이제 M..

반응형