목록All (86)
에르노트
코틀린 안드로이드 확장 라이브러리로 유명했던 Anko가 2019년 12월부로 Deprecated 되었다. Anko가 처음 등장할 때에 반해 이제 다른 좋은 대안들이 생겼으며, 더불어 안드로이드 자체의 최적화도 많이 진행되었다고 한다. 따라서 더 이상 Anko를 지속해서 개발할 이유가 없기에 이와 같은 결정이 내려진 것 같다. 그럼에도 불구하고 Anko는 글을 쓰는 현 시점에서 굉장히 훌륭한 라이브러리이며 기존의 프로젝트를 갈아엎을 이유는 전혀 없다고 본다. 다만 유지보수와 신규 버전 대응을 고려하면 이제 앞으로 새롭게 개발할 프로젝트에서 Deprecated된 라이브러리를 채용하기는 영 찝찝한 감이 있다. 다행히 Anko는 떠나는 와중에 그 대안들을 명확하게 제시했고, 그 중 하나가 Splitties이다...
후기는 SOPT X tomtoc 리뷰챌린지 행사를 통해 제품을 제공받아 작성한 후기 입니다. SOPT라는 동아리에서 진행한 SOPT X tomtoc 리뷰챌린지 행사를 통해 탐탁 파우치를 제공받았다. 기존에 사용하고 있던 GIGABYTE P15 모델에 대해서 15인치용 파우치를 주문했고, 색상은 심플하게 검정색으로 선택했다. 심플한 블랙 컬러여서 화려함이나 산뜻함은 찾아볼 수 없지만 왠지 모를 고급스러움이 느껴진다ㅎㅎ 게이밍 노트북이라 두께감이 꽤 있는데도 여유롭게 들어갈만큼 확실한 크기이다! 내부는 아늑(?)하고 폭신폭신해서 노트북을 정말 안전하게 잘 지켜줄 것 같다. 믿음직하다!! 또 충전기나 마우스 등의 주변 기기를 수납할 수 있도록 파우치 앞쪽에 작은 주머니도 달려 있다. 필자의 노트북은 노트북 자..
RDT에서는 송신자와 수진자를 명시하기 위해 FSM(Finite State Machine: 유한 상태 머신)을 사용한다. RDT 1.0 하위 채널이 완전히 Realiable하다고 가정한다.- 비트 에러 없음- 패킷 손실 없음 송신측과 수신측이 분리된 FSM을 갖는다.송신측은 하위 채널로 데이터를 전송하고 수신측은 하위 채널로부터 데이터를 수신한다. RDT 2.0 하위 채널이 패킷에 비트 에러를 야기할 수 있다고 가정한다. - Checksum(검사합)을 이용한 에러 검출 - 어떻게 에러를 복구할 것인가?수신측의 피드백: Ack(Acknowledgement) 또는 NAK(Negative Acknowledgement)ACK: "패킷이 잘 도착했음." 송신측은 수신측에서 ACK를 받으면 다음 패킷을 전송한다.N..
코딩을 하다보면 모종의 이유로 문자열을 바이트 단위로 바꿀 일이 생긴다. 그래서 자바에서 String은 자체적으로 getBytes() 메소드를 제공했고, 간단하게 String의 내용을 바이트 배열로 변환할 수 있었다.public class forjava { public static void main(String[] args) { String str = ""; byte[] arr = str.getBytes(Charset.defaultCharset()); } } 그러면 코틀린에서는? getBytes() 메소드가 없다!!fun main(){ val str = "" val arr = str.getBytes() } 기본적으로 자바와 100% 호환되게 만들어둔 코틀린이기에 해당 기능이 빠졌다고 생각할 수는 없다. ..
PIP는 파이썬의 패키지 관리자이다. 우분투의 apt-get과 비슷한 느낌으로 무언가 다운로드받고 싶은 패키지(라이브러리)가 있을 때 사용할 수 있는 명령어이다. 그런데 pip 명령어를 입력했을 때 아래와 같이 'Fatal error in launcher:'라는 에러가 뜨는 경우가 있다. 이는 파이썬 버전과 pip 버전이 안맞아서 나타나는 에러이며, 다음 명령어를 통해 pip를 업데이트함으로써 간단히 해결할 수 있다. python.exe -m pip install --upgrade pip 그러면 알아서 기존 버전을 삭제하고 알맞은 버전으로 다시 설치가 진행된다. 작업이 끝난 후에 다시 pip 명령어를 쳐보면 정상작동하는 것을 확인할 수 있다.
테이블 생성 CREATE TABLE 테이블명 (필드명 자료형, ...) 레코드 추가 INSERT INTO 테이블명(필드명, ...) VALUES (값, ...) 이때 필드명(열 이름)은 생략하고 적절한 순서로 값들을 열거할 수 있다. 레코드 검색 SELECT * FROM Students (모든 필드 검색)SELECT 필드명 FROM Students(필드명에 해당하는 데이터 검색, 쉼표로 구분지어서 여러개 설정가능) 레코드 삭제 DELETE FROM 테이블명 WHERE 조건 아래 예시와 같이 name = 'Smith'라는 조건을 WHERE 뒤에 붙여줌으로써 Students 테이블에서 이름이 Smith인 튜플들을 모두 삭제할 수 있다. 이때 위에서와는 다르게 STUDENTS를 대문자로 표기하였는데, SQL은..
약 3년 전에 출시했다가 내렸던 Chest Memo를 플레이스토어 다시 올렸다. 그리고 채 몇시간이 지나지 않아 '누르자마자 튕겨요'라는 대답이 돌아왔다.. 즉각 여러 기기에서 테스트를 거듭한 끝에 결국 문제는 안드로이드 8.0 오레오 버전에서만 터진다는 사실을 알아차릴 수 있었다. 앱을 처음 출시했던 2016년도의 안드로이드 최신 버전은 안드로이드7 누가였고, 그마저도 이제 막 나온 따끈따끈한 버전이었다(2016년 8월 22일에 Android7.0 Nougat이 처음 출시됐다). 다시 말해 그 당시만해도 오레오 버전은 아예 존재하지도 않았다... 그러나 3년이 지난 지금에서 안드로이드8(Oreo) 버전을 지원하는 것은 너무도 당연하고, 오레오 버전의 시장점유율은 정말로 무시할 것이 못 된다. 사용자로부..
'배달의 민족'을 필두로 최근 몇년 사이 배달업계는 전통적인 전화주문 방식에서 앱을 이용한 이른바 '터치 주문' 방식으로 완전히 재편되었다. 그 여파를 확실히 체감할 수 있는게, 길거리를 다니다보면 아래와 같이 '배민라이더스' 로고가 붙어있는 오토바이가 심심치않게 눈에 띄고는 한다. 하지만 이렇듯 체계적인 플랫폼을 구축해가고 있는 배민에게도 한가지 치명적인 아쉬움이 있었다. 바로 '최소주문금액'과 '배달요금'이다. 이는 필자가 그전까지 애용하던 다른 배달플랫폼인 '요기요' 역시 마찬가지로 앉고 있는 한계였다. 사실 이건 가족이나 친구끼리 모여서 배달을 시켜먹을 때는 그닥 문제가 되지 않는다. 다만 자취생과 같은 1인 가구에게는 큰 문제로 다가온다. 당장 요기요의 1인분 주문만 봐도 그냥 다 치킨만 나오는..
컴퓨터 네트워크 수업을 듣게되면서 각종 용어들에 대해 정리할 필요가 생겼다. 각 용어들의 의미를 파악하는 과정은 곧 네트워크, 그리고 인터넷의 발달 역사와 직결된다. 인터넷이 어떻게 발전해왔는지의 역사 속에는 네트워크 통신의 원리가 그대로 녹아있으리라. 따라서 네트워크 공부에 있어서 용어 정리는 단순한 용어 정의를 익히는 것 그 이상이라고 생각한다. 인터넷 "인터넷은 인간이 발명해 놓고도 이해하지 못하는 최초의 발명품이며, 역사상 최대 규모의 무정부주의에 대한 실험이다." - 에릭 슈밋 인터넷은 TCP/IP를 기반으로하여 전세계적으로 연결된 컴퓨터 네트워크를 일컫는다. 월드 와이드 웹(WWW)에 해당하는 전통적인 웹뿐만 아니라 모바일 앱 역시도 인터넷에 포함되며, 따라서 인터넷은 그야말로 유례없는 정보의..
정규표현식(正規表現式). 영어로는 Regular Expression이며, 줄여서 그냥 '정규식'이라고 부르기도 한다. 주로 문자열(string)과 관련된 프로그래밍에서 일정한 규칙에 따라 간결하게 문자열을 처리하기 위해서 사용된다. 문자열 처리는 간결하게 만들지 몰라도 정규식 자체는 읽기에 굉장히 난해하다. 예시) const char *pattern = "^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$"; 그러다보니 차근차근 체계적으로 가르쳐주는 곳을 찾기 마련인데, 여기에 제격인 사이트가 바로 RegexOne이다! 사이트 구성은 매우 직관적이다. 한글 지원이 안된다는 점이 다소 아쉽긴하지만, 이 바..