티스토리 블로그를 운영하시는 분은 백링크의 중요성을 인지하고 계실 것 같습니다. 구글이나 네이버 검색 엔진에서 블로그의 백링크 수가 높은 경우 좋은 글로 판단해서 노출도를 높인다고 합니다. 백링크 사이트..
Android를 개발하다 보면 목적에 따라서 APK를 다운로드해야 하는 경우가 있습니다. Google Play Store에서는 APK 자체를 다운로드할 수 있는 방법은 없고, APK Mirror 사이트를 통해서 다운로드할 수 있습니다...
우분투에서 Apache와 Tomcat 구동이나 설정 오류가 있어 해당 패키지를 재 설치하는 경우, 또는 Nginx나 lighttpd와 같은 새로운 Web Server를 설치하는 경우 기 설치된 Apache와 Tomcat을 '완전' 삭제해야 합니다..
Google Cloud Platform(GCP)의 가상 머신(Virtual Machine) SSH 접속은 기본적으로 Chrome에서 Google Cloud Platform 사이트에 로그인 후 브라우저의 SSH Client를 사용합니다. GCP 로그인 없이 로컬 PC의 터미널..
본 포스팅은 GCP에 만들어 놓은 가상 PC (VM) 원격 데스크 탑을 연결하는 방법을 소개합니다. 본 포스팅은 Google 공식 가이드를 참조하였으면, 사용된 GCP는 f1-micro instance 등급이며, us-west-b region에 설..
리눅스에서 C 언어로 HTTP POST를 구현하기 위해서는 libcurl를 사용해야 하고, 소스 상에서 curl/curl.h 을 include해야 합니다. 이 과정에서 발생할 수 있는 에러와 수정 방법입니다. 에러 메시지: fatal error:..
Google Cloud Platform에서 영구 디스크 (HDD or SDD) 추가하는 방법을 설명드립니다. 비용 측면에서는 HDD가 SDD에 비해서 저렴하고 속도는 SDD가 월등할 것으로 생각됩니다. 주의해야 하는 점은 가상 머신(VM in..
Google Cloud Platform(이하 GCP)에서는 방화벽을 설정하는 방법을 설명합니다. GCP에서 서버를 구축하고 외부 인터넷 망을 통해서 해당 서버에 접속하는 경우 방화벽에서 특정 프로토콜과 포트를 허용해야 합니다..
Python으로 Web framework인 Flask를 공부하다가 발생하나 에러입니다. Flask에서 5000 포트를 사용하고 있는데 Flask 모듈이 비정상적으로 종료해서 5000 포트를 잡고 있어 발생하는 에러입니다. 에러 메시지 Tra..
Google Cloud Platform (이하 GCP)을 사용해서 무료 PC를 생성하는 방법에 대해서 설명하도록 하겠습니다. GCP는 구글에서 제공하는 클라우드 컴퓨팅 플랫폼으로 Amazon Web Services, Microsoft Azure와 함께 Clo..
파이썬을 작성한 코드는 byte code인 pyc파이로 변환하더라도 디컴파일이 쉽게 되기 때문에 코드를 숨길 수가 없습니다. (참고) 이에 비해 PyInstaller는 Py파일을 실행파일로 만들 수 있어 쉽게 코드를 숨길 수..
상용 우분투 서버에 파이썬 프로그램을 하나의 설치 파일로 만들어서 배포하는 작업을 진행 중에 있습니다. 최대한 많은 리눅스 서버와 호환성을 유지하기 위해서 가장 낮은 버전의 우분투와 glibc 버전의 환경에..
Python 폴더 및 파일 처리 명령어 모음입니다. Python에서 폴더 및 파일을 처리하기 위해서는 import os 해야 합니다. 한 가지 주의할 점은 리눅스와 윈도우의 파일 경로 처리 방식이 다르기 때문에 파일 경로를 p..
우분투에서 프로그램을 예약 실행해야 하는 경우 crontab 사용할 수 있습니다. 예를 들어 1시간 마다 특정 폴더를 백업하거나 Git 소스를 업데이트는 하는 자동화 작업을 진행하는 경우 crontab을 활용하면 됩니다..
GitHub를 사용해서 회사 내에서 다수 인원이 참여하는 SW를 개발하는 경우 Git repository를 제한된 인원에게만 공개하도록 Private으로 설정해야 합니다. Private 설정된 GitHub Repository는 git pull / push 명..
이전 Gmail API 포스팅에서는 Sever-side Web Application 기반으로 OAutho2 인증을 통해서 Access token을 받고 Gmail API를 사용하는 방법에 대해서 포스팅하였다. 본 포스팅에서는 Service Account를 기반한 OA..
특정 폴더(working_folder)를 일정 시간 간격으로 백업을 해야 기능이 필요해서 python으로 구현한 내용을 공유합니다. 특정 폴더의 백업 기능의 상세 구현 사항은 아래와 같습니다. Working folder의 하위에 모든..
7zip 파일은 압축율이 좋아 자주 사용하는 편이고, 개인이나 단체에서도 무료로 사용할 수 있습니다. 7zip에 대한 소개는 공식 홈페이지를 참고 부탁드리며, 추가 설명이 필요 없을 정도로 유명한 압축 툴으로 LZM..
글을 시작하기 전에 JWT에 대한 이해는 아래 동영상을 확인해주세요. 개념적으로 쉽게 설명이 되어있습니다. JWT에 대한 개념을 듣고 아래 내용을 확인하시면 실무적으로 도움이 될 것 같습니다. 출처: https://..
우분투에서 Web 서버 설치하는 방법은 많은 포스팅이 있어, 각각의 개념 보다는 package 설치에 필요한 메모 정도로 활용하고자 한다. 설치 동기는 REST API를 사용하다보면 구글 서버에서 redirect URL을 설정..
Gmail API 사용 방법에 대한 3번째 포스트입니다. 앞서 2개의 포스트에서는 1) Google API Console에서 프로젝트를 생성하고, Client ID와 sescret을 받는 과정과 2) 구글 인증 서버에 계정 로그인을 통해서 API s..
앞선 게시글에서 Google API 콘솔에서 프로젝트를 생성한 후 credential.json을 얻는 방법을 설명하였고, 본 게시글은 아래 그림에서는 붉은색으로 표시한 '구글 인증 서버에 Authoized code를 요청 후 Access to..
네이버 블로그에 올린 동영상을 다운로드하는 방법입니다. 지식인에 올라온 내용을 답하다가 글로 설명하기 어려워 제 블로그에 정리합니다. 아래 동영상은 크롬 브라우저로 네이버 블로그에서 동영상 URL을 확인..
Google Adsense 승인 메일을 받자마자 며칠간 폭풍 검색을 통해서 Adsense 광고를 추가하는 방법을 공부하여 막상 블로그에 적용하다 보니 시행착오가 있었습니다. 제와 같은 초보를 대상으로 티스토리 광고 추가..
블로그를 모바일에서 확인하면 '제목'과 '검색'의 layout 이 겹쳐 제목이 가려지는 문제가 있다. 검색 기능은 블로그내에서 특정 키워드로 검색하는 것으로 사용하는 경우가 많지 않아서 기능을 삭제하기로 했다...
Android 소스를 repo 로 다운로드하다가 "repo sync unable to read sha1 file of xxx, cannot initialize work tree" 에러가 발생하였다. 네트워크가 느린 환경에서 긴 시간 동안 대용량의 소스 다운로드 하는 과..
Windows 10에서 Windows Subsystem Linux(WSL) 를 20년 5월 버전에 배포하였다. 윈도우 10에서 리눅스 커널이 그대로 올라가고, 리눅스의 실행 파일(elf)가 실행할 수 있다. USB와 같은 직력화 디바이스 컨트롤..
Python code를 *.py 파일에 작성하고 terminal에서 실행하는 방법은 python 명령어 뒤에 py 파일을 인자로 전달하거나, 일반 실행 파일처럼./test.py로 직접 실행할 수 있다. test.py 파일을 바로 실행하기 위해..
Python은 기본적으로 인터프리터 언어이기 때문에 별도의 컴파일과 링크 없이 실행(=해석) 가능합니다. 상용 프로그램으로 배포하는 경우나 보안 상 파이썬 소스 코드의 일부분을 숨겨야 하는 경우 Byte code로..
작업 동기 Command line으로 email 전송 프로그램이 필요해서 Gmail API와 Python를 사용해서 sendmail() 함수를 구현하였다. Python으로 구현한 sendmail() 함수의 1차 구현은 아래와 같이 sender, to, subject,..
Google에서 제공하는 Gmail REST API를 사용하는 방법에 대해서 설명하고자 한다. Google에서는 GMAIL 뿐 아니라 YouTube, Cloud, Analytics 등 거의 모든 서비스에 대해서 REST API(이하 API)를 지원한다. 참로고..
Python 3.8 버전에서 Dictionary 데이터를 JSON변환 시 발생했던 TypeError: Object of type bytes is not JSON serializable 에러에 대한 수정 사항입니다. json.dumps()함수는 일반 obj를 JSON 포맷의 string으..
이전 Post에서는 우분투에 postfix를 설치하고 gmail을 전송을 하는 방법을 확인하였습니다. 본 글은 python 에 기본 내장되어 있는smtplib를 사용하는 방법에 대해서 정리하였습니다. smtplib를 사용하면 간단하..
Python 에서 코딩을 잘하고 있다가 한글을 사용하는 경우 "SyntaxError: Non-ASCII character, but no encoding declared" 가 발생한다. 이 경우 py 파일의 최상단에 encoding type을 선언해주면 해결된다. 수정..
Python 2.7의 코드를 Python 3.8 버전에서 재 사용하는 경우 가끔 Type error가 발생한다. 개발하고 있는 python code가 2.7 버전과 3.8 버전에서 돌려야 하는 경우 아래와 같이 수정할 수 있다. 버전을 체크하는..
블로그를 운영한 지 한 달 넘은 초보입니다. 블로그에 글을 게시하다 보면 대표 이미지가 정렬이 되지 않거나, 좌우가 잘리거나 그림의 일부만 표시되어 현상이 있어 이에 대한 개선 방안을 찾고 있었습니다. HTM..
우분투 20.04 에서 gmail 계정의 smtp를 활용해서 커맨드 라인으로 email을 송부하는 내용을 정리하였습니다. 우분투에서 자동으로 특정 프로그램을 실행하고 실행하고 그 결과를 email을 전송할 수 사용할 예정입..
WSL 2.0 은 윈도우10에서 리눅스 커널을 직접 올린 것으로 최근에 꾸준히 기능이 업데이트되고 있다. 최근 MS Build 2020 컨퍼런스에서는 CUDA와 Direct ML의 GPU 컴퓨팅을 지원해서 WSL에서 AI와 machine lea..
윈도우에서 1) 원격 서버에 SSH (Secure Shell)로 접속, 2) 원격 프로그램을 실행, 3) 로컬에서 리눅스 명령어를 사용하는 경우 유용한 tool이 MobaXterm이다. 이미 Putty, PowerShell, Cygiwn을 사용하는 분들께..
Android source를 다운로드 후 수정 사항의 commit을 repo로 remote reposity에 반영할 때 에러가 발생하였다. Repo 명령어 (repo init, repo sync, repo start 등) 사용 시 Warning은 발생하더라 git init , clon..
블로그에 대략 50여 개의 글이 게시되고 나니 관심 주제의 글만 모아 볼 수 있는 메뉴를 구성할 필요성은 느겼다. 검색과 백링크를 통해서 들어오신 분들이 관심 주제의 글을 쉽게 접근할 수 있도록 상단에 메뉴..
실패 사례입니다. 상용 서비스를 하고 있는 리눅스 서버에 우분투에서 gcc로 빌드한 응용프로그램을 설치해야 합니다. 일반 리눅스 서버라면 필요한 패키를 설치하면 가능하지만 이미 상용 서버로 운영되고 있어..
1. 우분투 기본 동영상 프로그램의 문제점 우분투 20.04에서 DVD 동영상을 보다가 아래와 같이 "파일을 재생할 수 없습니다"라는 팝업 때문에 우분투에 적합한 동영상 플레이어를 찾기 시작했다. 윈도우즈에서는..
Android source는 Q-OS 기준으로 대략 100GB 정도의 크기이고, /.repo 가 47GB로 거의 50% 용량을 차지하고 있다. Git 전체를 다운로드 받으면 git log를 통해서 history 확인이 가능하지만, 굳이 전체 history를..
Ubuntu 20.04 에서 한글을 입력하다 보면 오타가 발생하는 경우가 가끔 있다. 특히 트위터에서는 한글 입력 시 100% 오타 현상이 발생하며, 아래 동영상처럼 키보드 입력은 '가나다라마'로 입력하나, 트위터 표시..
우분투가 설치된 로컬 PC와 원격 서버 (=빌드 서버 or 백업 서버)가 있는 경우 로컬 PC에서 원격 서버를 마운트 하는 방법을 정리하였다. 안드로이드 소스는 120GB 이상이고, 빌드가 완료되면 250GB 정도가 넘기..
1. XML 처리 시 "multiple elements on top level" 에러 XML 에서 well-formed 텍스트 아래와 같이 정의할 수 있다. 아래 5) 번째 조건 "루트" Element는 모든 elment를 포함한다" 조건이 맞지 않아서 Parse Error..
블로그 관리, 검색 최적화 글을 읽다 보니 '백링크(Back Link)' 또는 '역링크(Reverse lin)' 라는 용어가 가끔 나와 정리를 시작했다. 나무위키에서는 아래와 같이 설명하고 있고 한마디로 인용되는 링크이다. R..
Android 11 은 구글에서 개발자 프리뷰 프로그램을 통해서 Google Pixel 4/4 XL, Pixel 3a/3a XL, Pixel 3/3 XL 및 Pixel 2/2 XL 단말을 대상으로 R-OS Preview 버전으로 업데이트 진행할 수 있습니다. Developer..
2020년 5월 말에 Android 11 (R-OS)의 Developer Preview 4 를 배포하였고, 6/10일 Beta 버전을 배포되었다. Android 11 공식 배포는 9월 초 (첫 번째 월요일)에 배포될 것으로 예상되며, 개발자 프리뷰 4와 Beta..
우분투 20.04 를 Locale을 한글로 설치하면 Home 폴더의 이름도 한글로 생성된다. 하지만 터미널에서는 폴더 이름을 입력할 할때 영문→한글→영문으로 변경해야 하기 때문에 불편했다. 궁여지책으로 심볼릭 링크..
우분투에서 토렌트 클라이언트인 transmission-gtk가 기본 설치되어 있다. 만일 설치되어 있지 않다면 apt로 transmission-common과 transmission-gtk로 설치할 수 있다. sudo apt install transmission-common tr..
용량이 큰 프로그램을 사용하다 보면 화면 업데이트 업데이트가 안되는 freezing 현상이 발생되고, 마우스 클릭을 하더라도 반응이 없거나 매우 느린 현상이 발생한다면 "Memory 부족 현상"을 의심할 필요가 있..
지난 Post 에서 Android 10 (Q-OS) 소스를 다운로드하는 방법과 명령어를 설명하였다. 구글은 Ubuntu 14.04 64bit 환경을 기준으로 설명하고 있어, 최신 Ubuntu 20.04 64bit (8GB RAM)에서도 ASOP 가 빌드 가능한..
지난 Post에서는 git 개념을 설명했다면 지금은 git 사용시 편하게 사용할 수 있는 tool 중 3개 (bat, git-fuzzy, git-delta)를 소개하고자 한다. bat 과 git-fuzzy, git delta 는 단조로운 command line을 화려화..
Andriod studio 4.0 버전이 5월말부터 Preview 배포가 끝나고 Official release를 시작하였다. 글로 읽는 것 보다는 실제로 Android Studio 4.0을 다운로드 해서 사용해 보는 것을 추천드립니다. 본 게시글은..
리눅스 시스템 정보 (OS 버전, gcc, libc 버전)을 확인하는 방법입니다. $ cat /proc/version Linux version 5.4.0-42-generic (buildd@lgw01-amd64-038) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2))..
<작성중> REST API 의 개념 및 실제 응용 관련해서 연재를 할 예정입니다. 이론적이고 애매한 것 보다는 최대한 쉽게 그리고 현실적인 예제를 사용해서 정리할 생각입니다. REST API 는 일반적으로 인증을 먼저 받..
1. Python으로 XML 처리할 때 comment 남겨두기 Python 에서 XML 처리할 때 많이 사용하는 ElementTree 기준으로 설명한다. Comment가 포함된 XML 파일을 ElementTree.parser() 사용해서 읽어 보면 Tree element..
집에 있는 우분투 PC에서 회사의 클라우드 PC로 접속해야 하는 경우 Citrix Receiver 설치가 필요합니다. Citrix Recevier는 Windows, Linux, MAC PC, Andorid 등 다양한 OS를 지원하고 심지어는 Chrome Extensio..
Android Install referrer는 Google Play 서비스를 활용해서 앱 설치 경로 및 시간에 대한 정보를 얻을 수 있었다면 Google Analytics 를 통해서 사용자가 어떤 화면 또는 메뉴를 사용하는지 Tracking하는 툴이다...
앞서 설명한 UTM Campaign은 디지털 마케팅에서 범용으로 사용되는 방법이라면, Android Referrer는 Android 스마트폰에서 구체화된 방법이다. 본 게시글을 읽기 전에 이전에 정리한 블로그를 먼저 확인 바란다. <..
1. XLM 예약 문자 - "Parser Error : not well-formed" 요즘 Python 사용해서 XML 을 처리하다가 닭질(?) 내용을 정리합니다. ElementTree 로 XML 파일을 문제 없이 잘 사용하고 있다가 파이썬 코드는 변경이 없음..
Android 단말의 SW 은 Android App/Framework, AP Chipset 업체 BSP, Modem BSP, 폰 제조사 SW와 같이 4가지로 구성되어 있고 상호 밀접하게 결합되어 있다. (최근 2~3년 동안 구글에서는 각 개발 주체별 SW 종속..
우분투에서 터미널을 사용하다 보니 Putty 스타일의 텍스트를 마우스로 선택하면 클립보드로 복사 (selection on copy)하고, 마우스 오른쪽으로 paste 하는 기능이 동작하지 않는다. 우분투의 디폴트 터미널도 나..
가끔 Youtube의 동영상을 파일로 저장하고 싶을 때가 있다. Youtube에서 영상을 다운로드하거나, MP3와 같은 음악 파일로 저장하는 방법을 설명하고자 한다. 인터넷에 'Youtube 동영상 다운로드'라고 검색을 해..
Ubuntu 20.04 에서 NTFS 디스크는 기본적으로 Read Only 로 마운트한다. 따라서 NTFS 로 포맷된 디스크를 우분투에서 사용해야 하는 경우 마운트 옵션을 Read/Write으로 변경해야 한다. 터미널에서도 옵션 변경이..
문서를 읽다 보면 Deep link라는 용어가 나와서 확인을 시작하였다. 일반적으로 말하는 Link와 Deep Link 사이의 차이점을 이해하고자 한다. 또한 Android에서는 어떻게 처리하는지 확인하자 한다. 링크의 종류는..
Google API 문서를 보다가 UTM (Urchin Traking Modue) 이라는 용어가 있어 이에 대한 이해가 필요했다. Field Type 내용 utmCampaign string UTM (Urchin Tracking Module) campaign associated with this prel..
최근 관심을 두고 있는 모바일 광고에서 사용하는 용어를 정리하는 글입니다. 배우는 입장에서 하나씩 정리하고 업데이트할 계획입니다. 제가 잘못 이해하고 있거나, 참고가 될 수 있는 내용을 댓글을 남겨주세요...
동영상 관련된 SW를 개발하거나 디버깅하다 보면 종종 동영상의 코덱 정보, 해상도, 비트레이트 등등의 정보를 확인할 필요가 있다. 일반 동영상 Player에서도 동영상 meta 정보를 제공한다. 하지만 불필요한 설치..
지난 Post 에서 Wine 과 PlayOnLinux를 활용해서 Microsoft office 2010을 우분투에 설치하였으나, Copy & Paste 버그와 입력 오류가 많아서 다른 대안을 찾기로 했다. ※ 지난 포스트:2020/05/20 - [개발환경 만..
PC 개발 환경을 세팅하고 그 다음헤 해야 일은 개발 소스 코드를 내 PC로 다운로드 받는 것이다. 예를 들어, 신입 사원이 입사해서 현업에 배치되면 회사 email 계정을 만들고, 본인 PC에 팀에서 개발 소스 코드를..
1. 불편한 점: 우분투에서 사용자 로그인할 때마다 "키 모음 잠금 풀기" 팝업이 표시되고, 패스워드를 입력해야 다른 응용 프로그램을 실행할 수 있다. 로그인 패스워드 입력하고, 키 모음 잠금에서 패스워드 한번..
우분투의 가장 큰 장점 중 하나는 의지만 있으면 GUI 튜닝이 가능하다는 것이다. Gnome Extension을 을 내 스타일의 GUI 테마를 설치하고, 하단에는 MAC OS 느낌의 투명한 Dock 을 설치하고자 한다. Ubuntu 20...
뼈(?) 속까지 공돌이로 살아왔기 때문에 글로 표현하는 것보다는 code으로 구현하는 것이 더 익숙하다. 그동안 블로그에 관심도 없었고, 운영 방법도 몰랐지만 블로그 처음 운영하는 분들께 조금이나마 도움이 될..
1. 화면 캡쳐 우분투에서 화면 캡쳐 단축키는 3개만 있으면 해결된다. 클립보드로 *전체 화면* 스크린샷 복사 : Ctrl + PrintScn 클립보드로 *활성화 상태의 창* 스크린샷 복사: Ctrl + Alt + PrintScn 클립보..
Windows 10 + Ubuntu 20.04 듀얼 부팅 환경에서 최근에 MS의 WSL 보고 그 가능성에 감동 받았고, Ubuntu 20.04 의 1) 빠릿빠릿한 UI 느낌, 2) 무료임에도 불구하고 안되는 것 빼고 다 되는 기능성, 3) 마직막으로..
앞서 WSL 설치 관련된 글은 아래 링크를 먼저 확인해주세요. Microsoft WSL2 설치 동영상도 추가합니다. [개발환경] - Windows 10 에서 Cygwin 또는 WSL 설치 [개발환경] - Windows 10 Insider Preview 설치 (WSL..
Windows XP 가 설치되어 있는 오래된 PC에 Windows 10으로 업그레이드하기로 마음을 먹고 가정 걱정되는 점이 아래 2가지였다. 걱정되는 점 오래된 PC 의 성능 문제: CPU 가 Intel i5 이고, DDR3 8 GB RAM 인데 Wi..
Windows 10 에서 Windows 로고 키+Shift Key+S 누른 후 화면을 선택하면 캡쳐한 화면이 바로 클립보드를 복사된다. 이 기능을 알고 나서 그 동안 애용했던 반디카메라를 삭제했다. (난 순정파^^) 출처: https://..
지난 post 에서 Beta Preview 버전에서 WSL2 기능 강화와 File Explore에서 Linux 파일 연동이 기능 추가된다는 사실을 알고 Windows Insider Progam을 통해서 Developer 버전을 설치하기로 했다. Windows Previ..
Windows 에서 작업한 파일을 우분투에서 수정하거나, 반대로 우분투 만든 파일을 윈도우즈에서 수정해야 하는 경우가 많다. 즉, 하나의 폴더를 작업 파일을 저장하고 Windows와 우분투에서 각각 마운트하여 작업..
Ubuntu 20.04 버전 설치 후 개발에 필요한 package 를 설치하고자 한다. 아래 command 를 사용해서 한방에 설치할 수 있다. 하고자 하는 것 개발용 컴파일러, Editor, tool 를 설치 vim, git, gcc, python, Vis..
Window 10 을 설치 이후에 부팅할 때마다 PC 시간 틀어지는 현상이 발생하였다. 정상적인 경우라면 PC 내에 보조 배터리 (coin cell 또는 수은 전지)이 있어 하루/이틀은 시간이 정확하게 맞아야 하고, 인터넷..
실제 Ubuntu 서버와 개발을 위해서 Windows 에서도 이와 유사한 개발 환경을 설치할 필요가 있다. 그 동안 Windows 상에서 Cygwin 을 많이 사용했고, 최근에서는 Microsoft 에서 WSL (Windows Subsystem for Linux..
개발 환경을 세팅하기 위한 첫 번째 단계는 PC에서 OS를 설치하는 것이다. 과거에는 Window 환경이 좋았지만 요즘은 서버도 리눅스가 많고, 리눅스 자체에서도 좋은 개발 tool 이 많기 때문에 리눅스 환경을 설치..