본문 바로가기

분류 전체보기

[독후감] 최신 인공지능 쉽게 이해하고 넓게 활용하기 안녕하세요 남갯입니다 오늘은 회사의 필독도서 독후감을 작성해보겠습니다. 최신 인공지능 쉽게 이해하고 넓게 활용하기 AI의 발전! 체스를 이긴 AI가 최소 10년 이상 걸릴것이라고 예상했던것과는 달리 알파고는 세계 프로 바둑기사를 이겼다. 어떻게 보면 이게 뭐 대단한 일이냐 하며 말하는 사람들도 있을것이고 이 단순한걸 시작으로 앞으로 인공지능이 지배할 것이다 라고 말하는사람 들도 있을것이다. 사전적인 정의와 같이 우리가 생각하는 인공지능은 "인간처럼 생각하고 행동하는 기계" 일 것이다. 하지만 인공지능은 위의 정의만을 한정하지 않는다. 인공지능은 두가지의 종류가 있는데 하나는 강한 AI로서 아까 우리가 말한 사전적 정의와 같이 흔히 터미네이터 영화에서 볼 수 있는 인공지능이다. 약한 AI는 어떤 분야의 기..
[클린코드] 4장 주석 안녕하세요 남갯입니다 오늘은 클린코드 4장 주석에 대해 포스팅 해보려고 합니다. 개발을 하면서 모두들 주석을 다실거라 생각합니다. 잘 달린 주석은 그 어떤 정보보다 유용하고 이상한 주석은 더 이해하기 어렵게 만듭니다.주석은 우리가 치밀하게 언어에 의도를 표현할 수 있다면 주석은 거의 필요없다고 말합니다. 코드를 표현할 능력이 충분하다면 주석은 거의 필요없다고 합니다. private final String HTTP_DATE_REGEXP = "[SMTWF][a-z]{2}\\,\\s[0-9]{2}\\s[J FMASOND][a-z]{2}\\sM+[0-9]{4}\\s[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\sGMT"; private Response response; private FitNesseC..
[클린코드] 3장 함수 안녕하세요 남갯입니다 오늘은 클린코드 3장 함수에 대해 포스팅 해보려고 합니다. 프로그래밍의 초창기에는 루틴과 서브루틴으로 나누었다고 한다. 루틴은 한 함수를 동작하는것이고 서브루틴은 그 루틴에서 또 다른 루틴을 실행시킨것을 말한다. 이런 함수를 작성하면서 의도를 분명하게 표현하지 않으면 내용의 정보를 파악하기 어렵다. 어떻게 처음읽는 사람이 직관적으로 파악하게 만들 수 있을까? 작게만들어라함수를 만드는 규칙은 작고 더 작게 만드는것이다. 저자는 20~ 3000천줄의 코드를 작성해본 결과 작은함수가 좋다고 말한다.그렇다면 얼마나 짧은것이 좋다는 것일까?함수의 길이는 최대한(4줄이하) 적게 만들어라. // 함수를 작게 만들어라 public static String renderPageWithSetupsAnd..
[안드로이드] ValueAnimator를 이용한 애니메이션 사용해보기 안녕하세요 남갯입니다. 오늘은 ValueAnimator와 ViewPager 를 이용한 회원가입 Step 만들기를 포스팅 해보려고합니다. 일단 회원가입 화면을 만듭니다. 여기서 중요한건 자신의 Step에 맞게 weighSum의 값을 조절해야합니다. 저는 3스텝으로 했으니 0.3으로 지정했습니다. class MainViewPagerAdapter( fm: androidx.fragment.app.FragmentManager, private val fragmentList: ArrayList ) : androidx.fragment.app.FragmentStatePagerAdapter( fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ) { override fun getItem(positi..
[스레드] 교착상태(DeadLock)란? 안녕하세요 남갯입니다. 오늘은 스레드의 교착상태에 대해 알아보려고 합니다. 교착상태란? 교착상태 deadlock은 두개이상의 작업이 서로의 작업이 종료가 되지 않아 서로의 작업을 무한정 기다리는 상태를 말한다. 교착상태의 발생조건발생조건으로는 4가지 이유가 있다. 1. 상호배제(Mutual exclusion)프로그램들이 공유자원을 동시에 쓸 수 없는 상황을 일컫는다. 상호배제를 해제하는것은 가장 확실한 교착상태 제거방법이지만 용도가 명확하지 않아지므로 잘 사용하지 않음. 2. 점유상태로 대기 (hold and wait)자원을 점유한상태에서 다른자원을 기다린다는것 할당받은 자원을 사용하지 않으면서 계속 점유하면 그 자원이 필요한 프로세스는 무한정 대기한다. 3. 선점불가(No preemption)어떤 프로..
[Effective Java] 아이템 20. 추상클래스보다는 인터페이스를 우선하라. 안녕하세요 남갯입니다. 오늘은 이펙티브자바 item 20에 대해 포스팅 해보려고 합니다. 아이템 20. 추상 클래스보다는 인터페이스를 우선하라. 인터페이스와 추상클래스는 자바 8부터 default 키워드를 통해 default 메소드를 제공 할 수 있게 되어서 거의 비슷합니다. 둘의 가장 차이를 알아봅시다. - 추상클래스(Abstract)추상클래스가 정의한 타입을 구현하는 클래스는 추상클래스의 하위 타입이 되어야한다. 새로운 타입을 정의할때 제약을 안게 되는셈이고, - 인터페이스(implements)인터페이스가 선언한 메서드를 모두 정의하고 일반적 규약을 잘 치킨 클래스면 어떤 클래스를 상속해도 같은 타입으로 이용된다.인터페이스는 기존 클래스에도 손 쉽게 인터페이스를 구현할 수 있다. implements ..
[클린코드] 2장 의미 있는 이름 안녕하세요 남갯입니다 오늘은 클린코드 2장 의미있는이름 에 대해 포스팅 해보려고 합니다. 2장 의미있는이름 - 의도를 분명히 밝혀라의도가 분명하게 이름을 지으라고 말하기는 쉽다. 이 책에서는 의도가 분명한 이름이 중요하다고 강조하고 또 강조한다. 좋은 이름을 지으려면 시간이 걸리지만 그렇게 지어놓으면 후에 유지보수에서 시간을 절약할 수 있다. 그래서 우리는 이름을 주의깊게 살펴서 더 나은이름으로 개선해야한다. 그리고 그걸 읽는 나와 다른사람들도 행복해질 수 있다. 변수나 함수 클래스의 이름은 변수(함수 or 클래스) 의 존재이유? 수행기능? 사용방법? 에 따로 주석이 필요하다면 의도를 분명하게 드러내지 못했다는 말이다. 예들들어 val d = 0; // 경과시간 이름 d는 아무 의미도 드러나지 않는다. ..
[Effective Java] 아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라. 안녕하세요 남갯입니다. 오늘은 이펙티브 자바 아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라. 를 포스팅 해보려고 합니다. 이 책에서는 상속을 염두하지 않았다면 상속하지 말라고 한다. 그렇다면 상속을 고려한 설계와 문서화란 무슨말일까?상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야한다.final이 아닌 모든 메서드들이 어떤 순서로 호출하고 어떤 결과과 이어지는 처리에 어떤 영향을 주는지에 대한 정보를 담아야한다.예를들어 AbstractCollection 에서 remove 메소드를 재정의 하지 않았다면 UnsupportOperationExeption을 던진다. 상황에 따라 protected 메소드를 통해 필드나 메소드를 공개 해야할 ..