본문 바로가기

전체 글

Compression VS Encoding 일전에 허프만 압축 방법을 소개했다. 오늘은 압축과 인코딩을 간단하게 소개하고자 한다. 1. Compression VS Encoding 먼저 많은 사람들이 헷갈려 하는 부분이다. 포맷과 압축을 혼용하는 사람들도 많다. Compression과 Encoding의 차이부터 짚고 넘어가야 할 듯 하다. 1) Compression 일반적으로 Compression 이란 작업전 크기보다 작업후 크기가 줄어드는 것을 의미한다. 굳이 컴퓨터에서는~ 이라는 어려운 해석을 가미할 가치가 없다. Compression은 그냥 압축이다. 이사를 가려고 짐을 싸거나 물건을 나르기 불편한 모양새거나 너무 커서 부피를 좀 줄일 필요가 있을 수 있다. 사과 500 개를 나를때나, 쌀을 100kg 나를때, 사람보다 2-3배 더 큰 곰인형.. 더보기
[Linux] File Descriptor 언젠가 그런 질문을 받은적이 있었다. '프로그래밍을 한다면 당연히 알아야할, File descriptor 에 대하여 물어볼게요.' 당연히 SI 하청 시장에서 길면 3달, 짧으면 한달 주기로 팔려다니며 경력 1년을 갖 만든 당시 나로써는 알 방법이 없었다. 물론 질문을 받고 바로 다음날 찾아보았다. 그러나 이해가 가지 않는 것은 당연했다. 그로부터 대략 1년이 넘게 지났다. 만일 내가 아직도 그 시장속에 있었다면 알 수 없었을 파일 디스크립터에 대해 이제는 설명은 못해도 그게 뭔지는 느낌이 온다고 할 수 있다. 문득 그 분이 얼마나 중요한 내용을 짚어 주셨나 감회가 새롭다. 1. 기본 이론 1) File descriptor 의 정의 우선 위키피디아의 설명을 좀 읽어 보도록 하자. https://en.wik.. 더보기
[Android] Obsolete configuration warning 이번에 들어온 의뢰는 굉장히 오래전 개발이 되어 사용하던 어플이라고 한다. 어플 내에 사용되던 일부 경고 메시지에 대하여 논하고자 한다. 하기와 유사한 오류를 발견할 수 있다. Configuration 'provided' is obsolete and has been replaced with 'compileOnly'. provided 외 compile이나 test 등 다양한 키워드가 올 수 있다. 영어에 뜻이 있다. [더 이상 provided 는 사용되지 않으니 compileOnly로 사용해 주세요.] 사실 위와 같은 경고는 C# 을 이용할 때 Nuget을 업데이트하거나 버전업을 할 때도 자주 찾아볼 수 있는 경고창이다. 비슷한 문구를 발견하였다면, 우선 로컬에서 치환 키워드로 변경해보도록 하자. 더보기
[Linux] crontab 을 이용한 자동 재부팅, 배치 작업 등록하기 이번 의뢰에서 리눅스의 자동 재부팅을 요청받았다. 리눅스에서 배치 작업을 등록하는 방법은 무엇일까? - 리눅스에서 자동적으로 쉘 스크립트나 프로그램 명령을 등록하는데 가장 자주 사용되는 것이 crontab이다. 참고 링크를 확인해 보면, 쉘 스크립트 + crontab을 활용하는 것을 알 수 있다. 상기의 내용은 crontab의 명령 옵션을 표기한다. 수정, 조회, 삭제가 기본이고 추가로 몇 가지 옵션이 더 있지만, 일반적으로는 수정하고 조회 정도면 충분하다. 1. 작업 리스트 조회 - 먼저 내가 추가하려는 배치가 있는지 확인해야 한다. 원하는 작업이 이미 존재한다면, 이중작업이 되거나 프로그램 오류의 원인이 될 수 있다. 1) 명령 사용방법 crontab [-u user] -l 우선 -u 옵션은 접근 가.. 더보기
HTTP Status 500 – Internal Server Error, Mapped Statements collection does not contain value 친구랑 하는 작은 사이드 프로젝트를 구성하다가 만난 오류이다. 우선 다음과 같은 오류를 직면하게 된다. 심각: Servlet.service() for servlet [appServlet] in context with path [/edufactory] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped S.. 더보기
[용어 정리] 일괄 처리 VS 실시간 처리 어떠한 사건이 발생해야 할 시점이 있다면 언제가 좋을까? 길을 걷다가 막연히 무언가가 하고 싶을 때가 있다면 이런 사건들은 프로그래밍으로 개발할 수는 없을 것이다. 그러나 늘상 해오던 일들이 있을 것이다. 일주일에 한번 우편함을 확인해야 하는 것, 한 달에 한번 고지서를 납부해야 하는 것 등 반드시 이뤄져야 하며 기한 역시 존재한다. 반면에 친구의 생일파티나 동생이 새 식구를 얻게 되는 경우, 우리의 행동은 그에 맞춰 반응하게 된다. 오늘은 프로그래밍에서 어떠한 기능, 또는 사건을 시작하는 시점을 기준으로 몇가지 구분을 들고자 한다. 1. 일괄 처리 프로그래밍 - 당장 필요하지 않은 처리, 정해진 시각에 알아서 되길 원하는 처리 흔히들 배치 처리라고 이야기 한다. 해당 프로그램의 로직은 정해진 시각에 맞.. 더보기
[Android] 가로 세로 회전 안드로이드 개발을 하다보면 사용자 편의에 따라 가로모드, 세로모드를 지원해야 할때가 있다. 역으로 게임의 경우 가로모드만 지원할 수도 있고, 쇼핑몰의 경우 세로모드만 지원해야 할 때가 있다. 이를 정리 해 보고자 한다. 1. 안드로이드에서 화면 회전 및 고정 방법 1) 가로모드 고정 (LandScape) - 앱을 실행하면 가로로 실행된다. 또는 특정 액티비티는 가로로만 출력된다. - XML 에서 넣는 방법 (AndroidManifest.xml, screenOrientation) - 코드로 넣는 방법 (Target-Activity, setRequestedOrientation) @Override protected void onCreate(Bundle savedInstanceState) { super.onCr.. 더보기
[Spring boot+Quartz] 배치 샘플 일단 내가 쿼츠를 살펴보게 된 이유는 신규 의뢰 때문이었다. A라는 회사가 고객들의 이체를 관리하는데 이에 대한 수정 업무였다. 애초에 배치가 처음이기도 했고;; 엄청 헤매다가~ 소스에 보이는 쿼츠는 또 뭔가 하다가~ 찾아보게 되었다. 뭐 특징이 어떤 것인지, 어떻게 활용하면 좋을지는 최하단에 참고 링크에 가서 보면 거의 명세서 수준으로 자세하게 나와 있을뿐더러 작성하신 개발자님의 다른 글들도 깊이가 있어서... 뭐 그런 류의 글을 작성하는 것은 중복된 것 같아 다른 형태의 글을 써 내려가려 한다. 우선 스프링 부트를 하나 만든다. 1. 주소창에 다음 URL을 친다. https://start.spring.io/ 불러오는 중입니다... 2. 원하는 세팅을 선택하고, 추가 옵션으로 쿼츠(Quartz 스케줄러.. 더보기

반응형