본문 바로가기

전체 보기42

[#티스토리] 초고속 사이트맵(sitemap) 생성기 티스토리 초고속으로 사이트맵 생성하기 소유한 티스토리 블로그의 사이트맵을 1~2초만에 생성해 다운받아 사용할 수 있습니다. 2020. 4. 5.
[#android] 어플리케이션, 앱 apk 키 생성 및 서명하기 어플리케이션, 앱 apk 키 생성 및 서명하기 구글 스토어에 앱을 출시하기 위해선 키 생성 및 서명이 필수다. 첫 버전에 서명한 키로 이후 업데이트한 앱을 서명을 해줘야 업로드가 가능하므로 키 데이터는 꼭 백업을 해두자. 이제 안드로이드 어플리케이션 키 생성 및 서명 방법에 대해서 알아보자. 1. 어플리케이션 키 생성 안드로이드 스튜디오(Android Studio)에서 프로젝트 파일을 열고, Build - Generate Signed Bundle / APK... 를 누른다. 그러면 아래창이 나오는데 Create new... 를 눌러 키 스토어를 생성해주자. 키 스토어를 저장할 경로, 비밀번호, 별칭, 유효기간, 인증 정보... 등을 기입해서 OK를 누르면 지정한 위치에 키 스토어가 생성된다. 2-1. 그.. 2020. 4. 5.
[#ionic] ionic 프로젝트에 firebase 세팅하기 ionic 프로젝트에 firebase를 세팅하는 방법 1. firebase console에서 프로젝트 및 웹 앱 생성하기 https://console.firebase.google.com/u/0/?hl=ko 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com firebase console에 들어가 프로젝트 및 웹 앱을 생성해준다. 그리고 설정 화면의 아래쪽에서 생성한 앱을 선택하고 Firebase SDK snippet을 CDN으로 선택해주면 앱 설정 소스코드가 표시된다. 이 소스코드를 복사해두자 2. ionic 프로젝트에 firebase 설치 및 세팅 ionic 프로젝트 디렉토리에서 아래 명령어로 firebase를 설치해준.. 2020. 4. 4.
[#git] 파일은 그대로 두고 모든 커밋 초기화하기(commit init) 커밋 내역이 많을수록 git에서는 이 변경 내역을 프로젝트 내부의 .git 디렉토리에 모두 저장하기 때문에 용량이 커질 수 밖에 없다. 그리고 커밋이 너무 많아 파일은 그대로 두고 커밋만 깔끔하게 초기화, 정리하고 싶은 경우있다. 이때 파일은 그대로 두고 모든 커밋을 초기화 하는 방법에 대해 알아보자 1. 기존 .git 디렉토리 지우기 프로젝트 디렉토리 안에 있는 .git 디렉토리를 지워 git 히스토리 내역을 모두 지워준다. 이때 기존 프로젝트 파일에는 전혀 영향이 없으니 안심해도 좋다. rm -rf .git 2. git 초기화 및 추가, 커밋 .git 디렉토리를 지웠으므로 git과 관련된 정보가 모두 사라진 상태이다. git init으로 새로 git 을 초기화하고, 기존에 작업해둔 프로젝트 파일들을 .. 2020. 4. 3.
[#티스토리] 스킨 살짝 손보기 - 썸네일 모양, 크기 바꾸기 티스토리 블로그를 운영하다보면 썸네일 크기나 모양이 마음에 안들 수 있다. 그렇다고 처음부터 스킨을 만드는건 배보다 배꼽이 더 큰격이니 간단하게 현재 스킨에서 썸네일 크기, 모양을 바꾸는 법에 대해서 알아보자 1. 크롬 개발자 도구 켜서 원하는 영역의 위치 알아내기 1-1. 크롬 설정 메뉴에서 도구 더보기 - 개발자 도구를 킨다. 1-2. 오른쪽에 개발자 도구 창이 뜨는데 바로 아래 그림처럼 생긴 왼쪽 위 아이콘을 눌러 원하는 영역에 마우스를 갖다대면 div.클래스명 또는 div#아이디 와 같은 형식이 표시된다. 여기서 이미지 주소 형식을 잘 보면 C126x166 가 보인다. 이게 바로 이미지 사이즈이다. 이 값을 조절해서 가로가 긴 사각형 or 정사각형 or 세로가 긴 사각형을 자유자재로 만들 수 있다.. 2020. 4. 1.
[#티스토리] 스킨 살짝 손보기 - 웹 폰트를 적용해보자 티스토리에서 사용하는 기본 폰트말고, 본인이 원하는 웹 폰트를 사용하고 싶은 경우가 있다. 이 경우 아주 간단하게 코드 두줄만 바꿔주면 바로 적용가능하다. 1. 웹 폰트 cdn 주소 찾기 우선 웹 폰트 CSS CDN 주소를 찾아야한다. 여기선 나눔고딕체를 예시로 들겠다. 구글에서 나눔고딕 웹폰트 라고 검색하면 https://fonts.googleapis.com/earlyaccess/nanumgothic.css 이 주소를 찾을 수 있다. 2. 웹 폰트 적용하기 블로그 관리 페이지의 왼쪽 탭 메뉴의 꾸미기 - 스킨 편집을 눌러 스킨 편집창을 띄우고, html편집 - CSS 를 눌러 CSS 편집창을 띄워보자. 그리고 @import url('아까 찾은 CSS 주소'); 로 임포트 해준다. 나눔 고딕의 경우, 아.. 2020. 4. 1.
[#티스토리] 스킨 살짝 손보기 - 배경색, 글자색을 바꿔보자 티스토리 블로그를 운영하다보면 스킨을 살짝 손보고 싶을 때가 많다. 티스토리에서는 기본적으로 css, html을 편집할 수 있으므로 자유자재로 스킨을 변형하거나 아에 새로운 나만의 스킨을 만들 수도 있다. 이번 포스팅에서는 간단하게 스킨을 편집해 배경색을 바꾸는 방법에 대해서 알아보자 1. 관리 - 꾸미기 - 스킨 편집 -> html 편집 블로그 관리 페이지의 왼쪽 탭 메뉴의 꾸미기 - 스킨 편집을 눌러 스킨 편집창을 띄우자. 그러면 아래와 같은 스킨 편집 창이 뜨는데 오른쪽 위치에 있는 html 편집을 누른다. 2. 배경색 css 수정 그리고 배경색 css를 수정해보자. 전체 배경색과 글자색을 조정하고 싶으면 CSS 메뉴에 들어가 html, body 영역에 background: #원하는 색 RGB, c.. 2020. 4. 1.
[#검색] 검색, SEO(검색 최적화)에 대한 고찰 검색, SEO(Search Engine Optimization)에 대한 고찰 블로그 또는 웹 사이트를 만든 후, 따로 마케팅을 해서 홍보를 하는 방법도 있지만, 사람들이 많이 찾는 키워드의 검색 상위에 노출된다면 돈을 들이지 않고도 유입량을 많이 늘릴 수 있다. 그래서 대부분의 블로거들은 처음에 본인이 작성할 수 있는, 혹은 흥미가 있는 주제에 대해서 컨텐츠를 만들어나가다가 반대로 키워드 툴을 이용해 사용자들이 많이 검색을 하지만 포스팅 수가 적은 "좋은 키워드"를 찾아 그 주제로 글을 쓰게 된다. 여기서 검색 키워드 상위에 노출된다는 의미를 조금 더 깊이 고찰해보면 앞으로 SEO에 큰 도움이 되리라 믿고 이 포스팅을 작성한다. 검색 엔진 크롤러 (내 블로그/사이트 수집) 우선 SEO를 제대로 이해하기 .. 2020. 4. 1.
[#golang] 스페이스(white space) 여러 개를 1개로 바꾸기 텍스트를 다듬다 보면 스페이스, 띄워쓰기(white space) 여러개를 1개로 바꾸고 싶을 때가 있다. 이 경우, 정규식으로 간단하게 해결할 수 있다. package main import ( "regexp" ) // RemoveMultiSpaces : 스페이스 삭제 func RemoveMultiSpaces(str string) string { reLeadcloseWhtsp := regexp.MustCompile(`^[\s\p{Zs}]+|[\s\p{Zs}]+$`) reInsideWhtsp := regexp.MustCompile(`[\s\p{Zs}]{2,}`) result := reLeadcloseWhtsp.ReplaceAllString(str, "") result = reInsideWhtsp.Replac.. 2020. 3. 30.
[#golang] html 태그 제거(strip tags) golang으로 html 페이지를 크롤링하다보면 가끔 태그를 제거하고 텍스트만 받고 싶은 경우가 있다. 이럴때는 package main import ( "fmt" "github.com/grokify/html-strip-tags-go" ) func main() { text := "Hello World!this is in div element." stripped := strip.StripTags(text) fmt.Println(text) fmt.Println(stripped) } 를 사용하면 간단하게 해결할 수 있다. 2020. 3. 30.
[#http] 0.1초만에 띄우는 초간단 웹 서버, http-server 직접 웹 서버에 띄워 보고 싶을 땐, 흔히 nginx, httpd 와 같은 세팅이 필요한 웹 서버를 이용하게 된다. 그러나 html, js, css, 이미지 파일과 같은 스태틱 파일들을 서빙할 때 굳이 세팅이 필요한 복잡한 웹 서버를 사용할 필요는 없다. 오늘은 정말 간단하게 웹 서버를 띄울 수 있는 http-server에 대해서 알아보자 http-server 1. 설치하기 npm install -g http-server 2. 구동하기 서빙하길 원하는 디렉토리로 들어가 아래 명령어를 쳐주면, http://127.0.0.1:8181 (또는 http://localhost:8181)로 확인할 수 있다. http-server -p 8181 2020. 3. 29.
[#http] request 메세지를 raw 형태로 보고 분석하기 request message를 raw 형태로 보고 분석해야하는 경우가 있다. 예를 들면 Transfer-Encoding: chunked 가 어떻게 동작하는지, 업로드 시에 Contenty-Type: multipart-form 은 어떤 형식으로 요청이 날라가게 되는건지 서버는 이를 어떻게 처리해야하는지 등을 파악하려면 요청 메세지를 원본 그대로 보고 분석해야한다. 명령어 nc 터미널을 키고 아래의 nc 명령어만 치면 8080 포트로 웹 서버가 구동 된다. nc -l 8080 이제 테스트하길 원하는 어떤 명령이든 127.0.0.1:8080 (또는 localhost:8080) 으로 날려주면 된다. 예를 들어 파일 업로드 시 요청 메세지 원본을 보고 싶으면 아래 명령어를 치면 된다. (파일 위치/test.txt.. 2020. 3. 29.
[#admob] 광고 단위별 개발/테스트 ID 광고 단위별로 테스트를 해야할 때가 있다. 이때 자신이 애드몹(admob)에서 발급받은 ID로 입력하면 프로덕션으로 실제 올릴 때 까지 화면에 보이지 않는다. (예전에는 보였었는데 테스트하다가 어뷰징으로 정지 받은 경우가 많았다) 개발 단계에서 광고가 제대로 나오는지 테스트할 수 있게끔 애드몹에선 광고 단위별 테스트 ID를 제공해준다. 이건 마음대로 써도 무방하다. 구글 애드몹 테스트 광고 단위 배너 광고 ca-app-pub-3940256099942544/6300978111 전면 광고 ca-app-pub-3940256099942544/1033173712 전면 동영상 광고 ca-app-pub-3940256099942544/8691691433 보상형 동영상 광고 ca-app-pub-39402560999425.. 2020. 3. 28.
[#유틸개발] 티스토리 초고속 사이트맵 자동 생성 티스토리 초고속으로 사이트맵 생성하기 소유한 티스토리 블로그의 사이트맵을 1~2초만에 생성해 다운받아 사용할 수 있습니다. 2020. 3. 27.
[#git] user 및 commit한 author 변경 git commit을 하다보면 원치않는 아이디로 커밋이 된 경우를 많이 볼 수 있다. 이번 포스팅에서 이전 커밋의 user, author을 바꾸는 방법에 대해서 알아보자 1. git user 설정 우선 git user 부터 다시 설정해주자. 아래 명령어는 추후 사용자를 변경하고 싶을 때도 그대로 사용할 수 있다. git config --global user.name "korband" git config --global user.email korband78@gmail.com 만약에 특정 repository 에만 user을 다르게 설정하고 싶다면 --global 플래그를 빼고 수행하면 된다. git config user.name "korband" git config user.email korband78@gm.. 2020. 3. 26.
[#git] 여러 커밋(commit) 하나로 합치기 의식의 흐름(?)으로 개발을 하다보면 똑같은 커밋 메세지 또는 대충 쓴 커밋 메세지로 푸시하는 경우가 많다. 이런 경우 커밋 메세지를 하나로 합치거나 수정할 수 있으니 정신이 맑은 날에 한번 쭈욱 정리하는 것도 좋을 듯 하다. 아래처럼 대충쓴 커밋 메시지1~3을 합쳐서 하나의 커밋으로 만들어보자 1. rebase 사용하기 3개의 커밋 메세지를 합쳐줄거라 git rebase -i HEAD~3을 실행한다. 만약에 2개의 커밋만 바꾸고 싶으면 2 를 적으면 된다. git rebase -i HEAD~3 2. 합치거나 편집할 commit 선택 그러면 아래와 같은 vi 창이 뜨는데, 대충쓴 커밋 메시지 2, 3의 pick => s 로 바꾼다 위 처럼 화면이 뜨면 아래처럼 적어주고 :wq 를 눌러 저장,종료 해준다... 2020. 3. 26.
[#git] 강제로 이전 커밋(commit) 상태로 되돌리기 git을 쓰다보면 자주 충돌이 일어난다. (보통 conflict 났다라고 표현한다) 이때 로컬 PC에 있는 작업 영역을 강제로 이전 커밋(commit)으로 되돌려서 conflict를 푸는 방법에 대해서 알아보자. github repository 에는 아무런 영향이 없으니 걱정안해도 된다. git reset --hard HEAD~5 git reset --hard HEAD~5 라고하면 현재 상태에서 강제로 5번째 전 커밋 상태로 되돌린다는 뜻이다. 이때 새로 생성했던 파일이나 수정한 내용들도 모두 이전 상태로 돌아간다. 그리고 git pull을 해주면 다시 최신 상태로 반영되어 conflict를 풀 수 있다. 2020. 3. 26.
[#git] git, github를 쓰는 이유와 기본 명령어에 대해 알아보자 1. git이란? 하나의 프로젝트를 진행할 때, 보통 여러명의 개발자가 동시에 작업을 진행한다. 모두 작업을 끝마치고 서로의 소스코드를 붙이려고 할 때 어떻게 취합하는게 좋을까? USB? 메일로? 취합만 하는데도 머리가 지끈지끈 아파온다. (예전엔 정말 이렇게 했다.. 끔찍) 그래서 스마트하게 소스를 관리해보자! 라고해서 나온 개념이 형상 관리(Configuration Management)이다. 대표적으로 svn, git이 있는데, 대세는 역시 갓 git git을 간단히 설명해보면 작업의 base가 되는 master branch에서 여러명의 개발자가 각각 새로운 branch를 따면, 각각의 새로운 작업 영역이 생기게 된다. 여기서 branch는 하나의 작업 영역, 하나의 소스코드 버전이라고 이해하면 된다.. 2020. 3. 26.
[#잡담] 계속 컴퓨터만 들여다보고 있으니... 계속 컴퓨터만 들여다보고 있으니.. 눈이 침침하고 온 몸이 뻐근하다ㅠ.. 가끔 동네 마실도 나가고 햇빛도 쬐어줘야하는데 몸이 밖에 잘 안나가진다. 한창 돌아다닐땐 또 잘 돌아다니는데 요즘은 집돌이가 다 된 것 같다. 스트레칭도 하고 건강도 챙기면서 해야지 2020. 3. 26.
[#golang] 맵에 키가 존재하는지 체크하는 방법 맵 안에 특정 키가 존재하는지 확인하는 방법은 간단하지만 정말 잘 쓰인다. map[key] 은 value, key 존재 여부 가 리턴된다. 순서 햇갈리지 않게 value, exist 로 외워두자(나도 순서가 헷갈려서 두세번 같은 내용을 찾아본 것 같다ㅠ..) if value, exist := dict["foo"]; exist { // 존재하면 } 2020. 3. 26.
[#golang] 소스코드에서 커맨드 실행하기 golang 안에서 git clone 또는 git pull을 하는 등 직접 커맨드를 실행해야 하는 경우가 많다. 이번 포스팅에선 golang 안에서 직접 커맨드를 실행하는 방법에 대해서 알아보자 예를들면 워킹 디렉토리(working directory) /test/workspace 안에서 ls -a 를 실행하는 커맨드를 입력한다고 하면 아래와 같은 방식으로 사용할 수 있다. import ( "os/exec" ) cmd := exec.Command("ls", "-a") cmd.Dir = "/test/workspace" output, err := cmd.Output() if err != nil { fmt.Println(err) } else { fmt.Println(string(output)) } 지원하지 않는.. 2020. 3. 26.
[#golang] 디렉토리의 파일 리스트 찾기 golang으로 디렉토리 내 파일 리스트를 찾을 땐 ioutil.ReadDir("디렉토리명")를 사용할 수 있다. 예를들어 /test/dir 디렉토리의 파일 리스트를 출력한다고 하면, targetDir := "/test/dir" files, err := ioutil.ReadDir(targetDir) if err != nil { return err } for _, file := range files { // 파일명 fmt.Println(file.Name()) // 파일의 절대경로 fmt.Println(fmt.Sprintf("%v/%v", targetDir, file.Name())) } 처럼 코드를 작성해주면 된다. 나의 경우, 일자별 디렉토리에 이미지, 파일 또는 로그를 저장해두고, 어느정도 기간이 지나면.. 2020. 3. 26.
[#github] 사이트에 커스텀 도메인 등록하기 이전 포스팅 https://korband.tistory.com/7 에서 github로 무료 스태틱 파일을 호스팅해 트래픽/용량 걱정없는 사이트를 올리는 방법에 대해서 알아봤었다. 기본적으로 github에서 사이트를 publish하는 경우, https://ID.github.io 가 되는데 내가 소유하고 있는 커스텀 도메인으로 바꿔줄 수 있다. 1. 도메인 DNS 설정에서 CNAME 레코드 설정 자신이 소유하고 있는 도메인 사이트 - DNS설정에서 CNAME 레코드를 설정해준다. 예를들면 k5959.github.io 대신 5959.kor.band 라는 커스텀 도메인을 사용하고 싶으면 아래와 같이 설정해준다. 2. github pages 설정 publish한 repo 설정 - github pages에 cust.. 2020. 3. 25.
[#http] multipart/form raw 포맷 서버 업로드 구현 여러 파일을 한번에 업로드할 때 헤더 Content-Type: multipart/form-data 로 POST 요청을 하게 된다. 이때 request body에는 어떤 형식으로 데이터가 들어가는지 알아보자 예시로 test.txt this is first file. baljagae tistory test2.txt this is second file. Hello World:) 위 두 파일을 Content-Type: multipart/form-data 으로 보내면 request body에 아래와 같은 포맷으로 서버에 넘어가게 된다. \r\n으로 해당하는 파일의 헤더를 구분하고, 이 헤더에는 파일명, 타입 등이 기재되어 있다. 그리고 \r\n\r\n 다음에 직접 파일의 내용을 담고 있다. 서버에서는 \r\n\r.. 2020. 3. 24.
[#python] 리스트 자유자재로 다루기 python 리스트(list) 잘 쓰면 개발 생산성이 급격히 올라갈 수 있다. 30초만 투자해서 간단하지만 익혀두면 정말 유용한 리스트 관련 메소드를 알아보자 1. 리스트 요소 추가 (list item insert) # 제일 뒤에 요소 추가 list.append(item) # 또는 list.insert(len(list) - 1, item) # 제일 앞에 요소 추가 list.insert(0, item) # 원하는 위치에 요소 추가 list.inset(n, item) 2. 리스트 요소 삭제 (list item delete/remove) # 제일 뒤에 요소 삭제 del list[len(list) - 1] # 제일 앞에 요소 삭제 list.pop(0) # 또는 del list[0] # 원하는 위치 요소 삭제 d.. 2020. 3. 24.
[#golang] go modules로 쉽게 의존성 패키지 관리하기 module main go 1.13 require github.com/labstack/echo/v4 v4.1.15 // indirect golang에서 외부 패키지를 사용할때 보통 go get -u github.com/xxxxx 로 패키지를 다운받고 사용하고 싶은 .go 파일에서 import gitgub.com/xxxxx 로 임포트해서 사용한다. 근데 이런 경우, github.com/xxxxx 패키지가 업데이트된 후 go get -u github.com/xxxxx 을 하면 업데이트 이후 버전의 패키지를 다운받게되어 이전과 동작이 다르게 된다. 그래서 동일한, 혹은 특정한 패키지 버전을 보장할 수 있도록, 패키지 버저닝(Packaging Versionging) golang 11 버전에서 공식으로 도입된 G.. 2020. 3. 24.
[#검색] 사이트맵(sitemap) 만들고 등록하기 지난 포스팅에서 구글, 네이버, 다음, bing, zoom 검색엔진에 내 사이트/블로그를 등록해 검색에 노출시키는 방법을 다뤘다. - 구글 검색 등록하기 : https://korband.tistory.com/14 - 네이버 검색 등록하기 : https://korband.tistory.com/15 - 다음 검색 등록하기 : https://korband.tistory.com/16 - bing 검색 등록하기 : https://korband.tistory.com/17 - zoom 검색 등록하기 : https://korband.tistory.com/21 기본적으로 검색 엔진에 등록한 주소에 있는 링크들을 타고 들어가면서 들어갈 수 있는 모든 링크를 크롤링 하기 때문에 사이트맵(sitemap)을 따로 올려주지 않아.. 2020. 3. 23.
[#검색] RSS 만들고 등록하기 지난 포스팅에서 구글, 네이버, 다음, bing, zoom 검색엔진에 내 사이트/블로그를 등록해 검색에 노출시키는 방법을 다뤘다. - 구글 검색 등록하기 : https://korband.tistory.com/14 - 네이버 검색 등록하기 : https://korband.tistory.com/15 - 다음 검색 등록하기 : https://korband.tistory.com/16 - bing 검색 등록하기 : https://korband.tistory.com/17 - zoom 검색 등록하기 : https://korband.tistory.com/21 기본적으로 검색 엔진에 등록한 주소에 있는 링크들을 타고 들어가면서 들어갈 수 있는 모든 링크를 크롤링 하기 때문에 RSS를 따로 올려주지 않아도 검색에 노출된다.. 2020. 3. 23.
[#검색] 웹 사이트, 블로그를 zoom 검색에 등록하기 구글, 네이버, 다음, bing 검색까지 등록한 김에 zoom 검색까지 등록해보자. 정말 간단하다. http://help.zum.com/submit/register ZUM - 사이트 검색등록 help.zum.com 에 접속해서 아래 사이트 정보만 입력하면 끝. 약 1일 ~ 최대 5일정도 기다리면 사이트 등록이 완료된다. 이외에 다른 검색 등록은 아래 포스팅에서 다룬다. - 구글 검색 등록하기 : https://korband.tistory.com/14 - 네이버 검색 등록하기 : https://korband.tistory.com/15 - 다음 검색 등록하기 : https://korband.tistory.com/16 - bing 검색 등록하기 : https://korband.tistory.com/17 2020. 3. 23.
[#런칭] 공적 마스크 현황, 입고 알림 - 코로나코밴드 웹 사이트 https://corona.kor.band 코로나코밴드 코로나,코로나19,코로나맵,코로나코밴드,우한폐렴,확진자,확진자현황,확진자통계,확진자동선,확진자이동경로,마스크,마스크재고,마스크입고,마스크입고알림,선별진료소,신천지,신천지위치,신천지경로 corona.kor.band 구글 스토어(안드로이드 앱) https://play.google.com/store/apps/details?id=corona.kor.band 마스크코밴드 - Google Play 앱 마스크코밴드 현재 위치 기반, 장소 키워드 검색, 지도 이동 등으로 주위의 공적 마스크 재고 현황을 한 눈에 쉽게 볼 수 있습니다. 원하는 판매처, 원하는 요일을 설정해 입고되자마자 실시간으로 마스크 입고 알람을 받을 수 있습니다. 알람을 받고 마스크를.. 2020. 3. 23.