안드로이드 vs 안드로이드스튜디오 ? 충분히 다르다는 것은 알지만 어떻게 다른지에 대해 좀 더 생각해보기로 했다. 먼저, 안드로이드는 모바일 운영체제(OS;Operating System)다. 비유하자면 애플리케이션이 '영화'라고 했을때 '영화의 제작스탭진'이다. 시청자는 잘 모르지만 수많은 제작스태프의 참여로 한 영화가 만들어진다. 코드들이 제작스태프를 의미하고 그들의 모든 실행들과 유기적인 연계들을 모두 합하여 의미하는 것이 '안드로이드'다. 중요한 스태프 중 '패키지매니저'와 '액티비티매니저'가 있는데, 각각 영화의 구성요소를 찾거나 활성화시키는 역할을 하며, '인텐트'라는 요소는 이런 스탭진들과 구성요소 사이에 오고가는 쪽지를 말한다. 안드로이드를 모바일 오픈소스 플랫폼(OpenSource Flat..
보조기억장치? 인터페이스? 보조기억장치는 컴퓨터에서 'HDD(하드디스크), SSD'를 말하는 것으로 데이터를 보관하거나 보관한 데이터를 원할때마다 꺼내주는 역할을 한다. 작업을 위한 주기억장치(램, 메모리)와 차이가 있는데, 사람으로 비유하면 보조기억장치는 뇌, 주기억장치는 손이라 볼 수 있다. 인터페이스는 규격, 연결단자, 연결방식 등을 의미하는데 요소간의 연결을 목적으로 한다. 여기서 인터페이스는 컴퓨터의 메인보드와 보조기억장치를 연결하는 것을 목적으로 하는 인터페이스를 말한다. 아래에 언급하는 모든 것들은 인터페이스를 의미하며, 인터페이스 속에서도 역할이 달라 같이 쓰일 수도 있다. PATA → SATA 불과 십년전만 해도 왼쪽과 같은 넓은 선을 활용해서 보조기억장치를 활용했다. 하지만 이 장치는 ..
비트 = bit = binary digit 하나의 비트는 0이나 1의 값을 가질 수 있다. 즉, 두 가지 경우의 수를 가진다. 모스부호에서 짧게 누르거나 길게 누르는 두 가지 경우로 문자들을 만드는 것과 같은 원리다. 이 원리는 한 가지 경우를 '무언가'로 약속할 수 있다는 것을 의미한다. 0을 'a'로, 1을 'b'로 약속할 수도 있고, 0을 '$', 1을 '?'로 약속할 수도 있다. 세상에 많은 문자를 저장하기 위해 우리는 많은 경우의 수가 필요하고 그 경우들을 문자 하나하나와 약속할 수 있다. 바이트(byte) = 8bit = 데이터 기본 단위 1비트로는 단 2가지 경우 밖에 약속할 수 없어 효용성이 적다. 그래서 문자를 표현하는 최소 단위를 정해줄 필요가 있었다. 최초 ASCII코드라는 알파벳 문..
맨처음 개발 시작할때 만들었던 앱입니다. 지금 안드로이드 개발자로 일 하고 있진않지만, 이 때의 경험으로 서버 개발하면서도 모바일을 많이 고려하게 되었던 것 같습니다. 개요 1) 환경 : AWS EC2, Ubuntu(16.04), Apache, 안드로이드스튜디오 2) 프로토콜 : HTTP, TCP/IP 3) 언어 : JAVA, HTML, CSS, JAVASCRIPT, PHP, C++ 4) 데이터베이스 : MySQL, SQLITE 5) 기간 : '18년 9월 22일 ~ '18년 11월 10일 (49일) 6) 설명 : 예능 티비를 시청하면서 사람들이 자유롭게 대화하며 의견 공유하는 엔터테인먼트 앱. 주요 개발 내용 1) Retrofit(HTTP 통신) API 활용 로그인/가입 구현 2) TCP/IP 소켓통..
적성 시간이 정말 빠르다. 2018년 11월 26일 월요일 첫 출근했을 때를 생각해보면 엄청 설레었던 것 같다. 내가 생각하던 스타트업의 전형적인 모습은 10명 정도 되는 팀원들이 공유 오피스에서 자신들만의 서비스를 열심히 만들어나가는 모습이다. 그 모습을 상상했기에 나의 회사는 정말 딱 스타트업 다웠다. 스타트업 다운 스타트업에 한 명의 멤버로서 함께 할 수 있다는 게 정말 좋았다. 항상 나는 1년을 채우지 못했다. 창업도 1년을 채우지 못했고 전 회사도 1년을 채우지 못했고 개발 학원도 1년을 채우지 못했다. 왜 채우지 못했냐고 물어보면 각 상황마다 구구절절한 사연들이 있지만 다 핑계인 것 같고 결국 끈기가 없었던 것 같다. 재미없고 어렵고 집중 안 되는 상황에서 나는 꼭 벗어나야만 했다. 주위 사..
주의! 웹에서 간단하게 이미지 리사이징 하는 경우에는 괜찮지만 압축율과 이미지의 품질을 좀 더 고려해야한다면 이 방법이 좋지 않을 수도 있습니다! 도입 이유 : 서버 리소스 관리를 위하여 용량이 큰 이미지는 서비스 운영에 있어 리소스가 많이 들기 때문에 썸네일 작업이 필요했습니다. 원래는 서버에서 작업을 하여 모바일, 웹 클라이언트 환경 상관없이 적용하려 했습니다. 하지만 전에 경험해보았을 때 서버에서 썸네일 작업을 진행할 경우 부하가 있는 것을 확인했습니다. 그래서 이번엔 클라이언트에서 이미지 리사이징하여 서버에 보내는 방식으로 적용해보았습니다. 그중에서도 웹 클라이언트(javascript)에서 이미지 리사이징했던 방법을 공유해보려고 합니다. 적용 기술 : HTML5 Canvas javascript를 ..
쉬운 협업툴, 플로우를 만드는 마드라스체크에 합류한 지 정확히 만으로 반년이 지났다. 시간 정말 빠르다. 회사에 몰입하느라 블로그 글을 많이 적지 못했지만 나답게 또 이런 중요한 순간들은 기록하고 정리해두려고 시간을 내보았다. 이번에는 몇 가지 물음들로 정리해보려고 한다. Q1. 개발자가 된 것을 만족하나요? 결론부터 말하자면 개발자가 된 것을 200% 만족한다. 컴퓨터 속 수많은 코드를 바라보며 몰입하여 문제 해결하는 내 모습도 꽤 괜찮고 새로운 것들 계속 배워나가며 처음에는 어려웠던 것들이 익숙해지는 경험이 즐겁다. 예전에 '강점 혁명'이라는 책에서 나는 '배움'이라는 기질을 가진 사람이라고 했다. '개발'이라는 직무가 타 전문직종 못지않고 많은 '배움'을 할 수 있기에 잘 맞는 것 같다. 아마 계속..
카디널리티(Cardinality)란 흔히 나와있는 설명을 참고하면 컬럼의 중복된 수치를 말한다. 중복된 수치가 높으면 카디널리티가 높은 것 같지만 반대로 해석해야 해서 조금 헷갈리는데 그래서 난 카디널리티를 분포도로 이해하고 있다. 얼마나 데이터가 분포하였는가에 따라 넓게 분포되었다면 카디널리티가 높고, 아니라면 낮다. 예를 들어, 성별은 남성과 여성이라는 2개의 데이터 분포를 가질 수 있고, 주민등록번호는 대한민국 국민이 모두 고유하게 하나씩 가지고 있기 때문에 약 5천만 개의 데이터 분포를 가진다. 이 둘을 비교할 때 상대적으로 주민등록번호의 카디널리티가 높다. 위와 같이 직관적으로 컬럼의 카디널리티를 따져볼 수 있지만 실제 테이블의 컬럼들은 다양하게 구성되어있기 때문에 직접 구해보는 것이 좋다. 카..