github io와 같은 개인 블로그를 google과 naver, 그리고 daum과 같은 포탈사이트에서 검색 가능하도록 만드는 방법
이 글은 다음 blog의 글을 참고하였습니다.
네이버 블로그와 같은 포탈의 블로그 서비스를 사용할 경우 자동으로 검색이 가능하지만, github와 같은 플렛폼을 사용할 경우에는 직접 각 포탈에 검색이 가능하도록 등록을 해 주어야 한다. 이 글에서는 블로그의 글이 google, daum, naver에서 검색 가능하도록 등록하는 방법에 대해서 설명한다.
1. Sitemap 생성
sitemap을 google에 등록해 두면 주기적으로 크롤링을 통해 url을 연결시킨다. 우선 sitemap을 생성하는 방법에 대해서 설명한다. ruby를 통해 jekyll 홈페이지를 만든 경우에는 sudo gem install jekyll-sitemap
의 명령어를 이용해 플러그인을 사용할 수 있다. 하지만 여기서는 플러그인을 사용하지 않는 방법을 설명한다.
블로그의 /root
경로에 /sitemap.xml
파일을 만들고 아래의 내용을 복사해 넣는다. 반드시 root 디렉토리에 넣어야 한다.
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for post in site.posts %}
<url>
<loc>{{ site.url }}{{ post.url }}</loc>
{% if post.lastmod == null %}
<lastmod>{{ post.date | date_to_xmlschema }}</lastmod>
{% else %}
<lastmod>{{ post.lastmod | date_to_xmlschema }}</lastmod>
{% endif %}
{% if post.sitemap.changefreq == null %}
<changefreq>weekly</changefreq>
{% else %}
<changefreq>{{ post.sitemap.changefreq }}</changefreq>
{% endif %}
{% if post.sitemap.priority == null %}
<priority>0.5</priority>
{% else %}
<priority>{{ post.sitemap.priority }}</priority>
{% endif %}
</url>
{% endfor %}
</urlset>
git과 commit으로 블로그를 업데이트 후 blog주소/sitemap.xml
로 접속했을 때 아래와 같은 화면이 나와야 정상적으로 sitemap이 등록된 것이다.

sitemap에는 각 해당 글의 lastmod, sitemap.changefreq, sitemap.prioritye 등의 정보가 설정되는데, 이것은 각 글의 맨 위에 다음과 같이 sitemap의 옵션을 추가해 줌으로써 추가적으로 설정 가능하다. 설정이 없을 때의 default 설정은 sitemap.xml
에 정의되어 있다.
---
layout: post
title: "제목"
date: 2016-03-14 12:00:00
lastmod : 2016-03-15 12:00:00
sitemap :
changefreq : daily
priority : 1.0
---
changefreq를 너무 짧게 하면 빈번한 접속으로 안좋은 영향을 미칠 수도 있다고 하니 적당히 하루 혹은 일주일로 하면 좋을 것 같다. 추가적으로 blog주소/sitemap.xml
을 실행했을 때 위와 같이 나오지 않는 경우는 아마 주소링크에 &와 같은 특수기호가 있는 경우가 있을 수 있다. 예를들어 파일의 이름이 URL의 링크 주소가 되는데, 만약 파일이름이 한글일 경우 url의 주소에 %의 기호가 들어가 있다. 이럴경우 xml이 정상적으로 해석하지 못한다. 따라서 최대한 URL의 링크가 되는 파일이름은 영문으로 만들고, 특수기호는 최대한 사용하지 않는 것이 좋다.
Rss feed는 naver와 daum에 등록하기 위함이다. sitemap.xml
과 마찬가지로 root 디렉토리에 /feed.xml
파일을 생성하고 아래의 코드를 복사한다.
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ site.title | xml_escape }}</title>
<description>{{ site.description | xml_escape }}</description>
<link>{{ site.url }}{{ site.baseurl }}/</link>
<atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/>
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
<generator>Jekyll v{{ jekyll.version }}</generator>
{% for post in site.posts limit:30 %}
<item>
<title>{{ post.title | xml_escape }}</title>
<description>{{ post.content | xml_escape }}</description>
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
<link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
<guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
{% for tag in post.tags %}
<category>{{ tag | xml_escape }}</category>
{% endfor %}
{% for cat in post.categories %}
<category>{{ cat | xml_escape }}</category>
{% endfor %}
</item>
{% endfor %}
</channel>
</rss>
3. robots.txt 생성
robots.txt
파일에 sitemap.xml
파일의 위치를 등록해 두면 검색엔진의 크롤러들이 홈페이지를 크롤링하는데 도움을 주게 된다고 한다. root 디렉토리에 /robots.txt
파일을 만들고 아래와 같이 입력한다.
User-agent: *
Allow: /
Sitemap: http://jinyongjeong.github.io/sitemap.xml
User-agent
는 허용할 검색엔진 명을 넣게 된다. 따로 설정하지 않으면(*) 모든 검색엔진을 허용하게 된다. 자세한 내용은 http://dveamer.github.io/homepage/SubmitSitemap.html를 참고한다.
4. 사이트 등록
Google (google search console등록)
Google Search Console를 접속한다.
이 사이트에서 본인의 블로그를 등록해야 google에서 검색이 가능하다.
속성추가
버튼을 눌러 본인의 blog 주소를 입력하여 사이트를 등록한다.
크롤링 > sitemaps
메뉴를 열어 sitemap 추가
버튼을 눌러 만들어 두었던 sitemap.xml
파일을 제출한다.
제출이 완료되면 sitemap.xml
파일이 등록된 것을 확인할 수 있으며 색인이 접수 중임을 알 수 있다.
Naver
네이버 웹마스터 도구에 접속한다.
로그인하여 구글과 비슷하게 블로그 주소를 등록하는 과정을 거친다. 그 후 “사이트 소유 확인”이라는 과정을 거치게 되는데 HTML 파일을 다운받아 블로그의 root에 업로드 하여 확인하는 과정을 거치게 된다. 이 과정을 거치면 google의 analystics와 유사한 기능을 사용할 수 있는 것 같다. 그 다음에 RSS를 등록하는 과정이 필요하다. 왼쪽 메뉴에서 요청 > RSS제출
을 클릭해서 URL을 포함한 주소인 블로그URL/feed.xml
을 입력한다.
추가적으로 요청 > 사이트맵제출
로 들어가서 google과 마찬가지로 블로그URL/sitemap.xml
을 입력해서 sitemap을 등록시켜 준다.
Daum
DAUM 검색등록에 접속 후 로그인한다.
등록
탭에서 블로그 RSS등록
을 선택하고 블로그URL
에 본인의 URL을 입력하고 확인버튼을 누른다.
이전 블로그에서 보면 feed.xml
파일을 올리는 RSS 부분이 있었는데 지금 확인해보니 URL을 입력하는 창만 뜬다.
우선 URL만 등록해보도록 한다.
위의 과정을 거치고 최종으로 반영되기 까지 어느정도의 시간이 걸린다. 일주일정도 시간이 흐른뒤에 확인해보도록 하자.
Sublime text 설치 후 셋팅하는 방법을 설명한다.
SublimeText3
1. sublime text 설치하기
ppa 이용한 설치 방법
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer
2. Project 를 위한 패키지 구성
Package Control 설치
메뉴 View -> Show Consol (Ctrl+`) 실행후 console 창을 열어서 아래의 명령어 입력후 에디터 재시작 Sublime text 버전에 따라 다르게 입력
Sublime Text 2
import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation')
Sublime Text 3
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
YcmdCompletion 패키지
1. YcmdCompletion 설치
Sublime Text에서 Command Palette (Ctrl+Shift+P)창을 열어서 ‘Package Control : Install Pacakge’ 실행 후 ‘YcmdCompletion’ 찾아서 설치
YcmdCompletion은 기본적으로 Ycmd server를 이용해서 code-completion을 수행. ycmd server가 설치 되어있지 않으면 다음 단계로 ycmd 를 설치해야함.
2. Ycmd server 설치
- Ycmd의 github 원격 저장소를 복제후 submodule 업데이트
git clone https://github.com/Valloric/ycmd.git
cd ycmd
git submodule update --init --recursive
3. YcmdCompletion 설정
HMAC key 생성
Command Pallete (Ctrl+Shift+p) -> Ycmd: Create HMAC keys
Sublime Text의 Ycmd Completion 설정
Preferences -> Package Settings -> YcmdCompletion -> Settings - Default 클릭 후 YcmdCompletion.sublime-settings 파일의 주석 처리된 부분을 풀어서 다음과 같이 입력
{
"ycmd_server": "http://127.0.0.1",
"ycmd_port": 8080,
"HMAC": "위에서 생성한 HMAC key",
"use_auto_start_localserver": 1,
"ycmd_path": "/home/USERNAME/ycmd/ycmd",
"languages": ["cpp", "python"],
}
Sublime Text의 Syntax Specific 추가
Preferences -> Settings - More -> Syntax Specific - User 클릭 후 C++.sublime-settings에 다음 내용 추가(c++ 프로젝트 혹은 파일을 열었을 때 C++.sublime-settings을 열 수 있다.
{
"auto_complete_selector": "source - (comment, string.quoted)",
"auto_complete_triggers": [
{"selector": "source.c++", "characters": "."},
{"selector": "source.c++", "characters": "::"},
{"selector": "source.c++", "characters": "->"}
]
}
Sublime project 생성하기
cd build
cmake . -G "Sublime Text 2 - Unix Makefiles"
project의 root의 CMakeLists.txt에 다음 항목 추가
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")
set(CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)
set(CMAKE_EXTRA_GENERATOR "Sublime Text 2" CACHE INTERNAL "" FORCE)
Ycmd default_settings.json 파일 설정
위에서 복제한 ycmd server directory에서 default_settings.json 파일 내용 중 아래 부분 변경
"global_ycm_extra_conf": "/home/ycmd/ycmd/.ycm_extra_conf.py",
"confirm_extra_conf": 0,
"hmac_secret": "위의 HMAC key 입력",
- gobal ycm_conf 설정 : ycmd server의 default_settings.json 파일의 “global_ycm_extra_conf” 설정 경로에 위 링크 파일 복사
- local ycm_conf 설정 : 해당 프로젝트의 root에 .ycmd_extra_conf.py복사 후 compilation_database_folder 값을 아래와 같이 변경
compilation_database_folder = os.path.expanduser("~/projects/naver/build")
YCM-Generator를 github repository로부터 복제
git clone https://github.com/rdnetto/YCM-Generator.git
프로젝트 디렉토리에 .ycm_extra_conf.py 만들기
cd YCM-Generator
./config_gen.py 프로젝트디렉토리
위의 프로그램을 수행하면 프로젝트디렉토리의 root에 .ycm_extra_conf.py파일이 생성됨
PCL을 설치할 때 원하는 QT버전으로 지정하여 설치하는 방법에 대해서 설명한다.
원하는 버전의 QT5와 VTK, PCL을 설치하는 방법에 대해 설명한다.
일반적인 방법으로 PCL을 설치할 경우 PCL의 기본 QT의 경로가 /usr/lib/x86_64-linux-gnu/ 로 잡히게 된다.
그러나 일반적으로 QT5를 sudo로 설치할 경우 /opt 에 설치되기 때문에 경로를 설정해줘야 한다.
VTK와 PCL를 제외한 나머지 dependency는 설치 되어 있다고 하자.(openni 등)
만약 dependecy가 설치되어 있지 않다면 이 shell script를 다운받아 실행하자.
chmod 777 essential_install.sh
sudo ./essential_install.sh
위 shell script는 PCL의 dependency와 기타 기본 라이브러리를 설치해준다.
PCL의 dependency설치에 대해서 자세히 보고 싶으면 다음 이 블로그를 참고하자.
이제 기본적인 dependency가 설치되어있는 환경에서 PCL의 dependency인 VTK와 PCL을 원하는 QT버전에 맞게 설치하는 방법에 대해서 설명한다. 이는 QT를 /opt/ 경로에 설치한 경우이다.
1. VTK 설치
git clone으로 VTK를 다운받아 준다
git clone https://github.com/Kitware/VTK.git
그런 다음 build 폴더를 만들어서 build폴더로 이동한 후 다음 옵션으로 cmake해준다. 옵션으로 Qt5의 경로를 지정해준다.
cd build
cmake -DVTK_QT_VERSION:STRING=5 -DQT_QMAKE_EXECUTABLE:PATH=/opt/Qt5.6.1/5.6/gcc_64/bin/qmake -DVTK_Group_Qt:BOOL=ON -DCMAKE_PREFIX_PATH:PATH=/opt/Qt5.6.1/5.6/gcc_64/lib/cmake -DBUILD_SHARED_LIBS:BOOL=ON ..
그다음 설치해준다.
make -j8
sudo make install
2. PCL 설치
git 에서 다운받는다
git clone https://github.com/PointCloudLibrary/pcl.git
PCL의 qt5 경로를 설정해주기 위해서 cmake file에서 prefix 를 설정한다. /pcl/cmake/pcl_find_qt5.cmake 를 열고 최 상단에 아래의 setting을 추가
set(CMAKE_PREFIX_PATH /opt/Qt5.6.1/5.6/gcc_64/lib/cmake)
이제 build 폴더를 만들고 빌드 후 설치한다.
mkdir build
cd build
cmake ..
make -j8
make install
Jekyll을 이용한 간편하게 Github에 blog를 만드는 방법 소개
Ruby와 Jekyll 설치
Jekyll을 이용하여 github의 Blog를 만들어보도록 하자. 우선 Jekyll을 설치하기 위해서는 ruby를 설치해야 한다. 아래명령어를 이용하여 ruby를 설치한 후 Jekyll을 설치한다.
sudo apt-get update
sudo apt-get install ruby-full
sudo gem install jekyll
Jekyll이 설치되었으면 설치가 잘 되었는지 확인하기 위해 버전을 확인한다.
각 blog의 종류에 따라 다르지만 아래의 명령어를 통해 추가 패키지를 설치해주자.
sudo gem install jekyll-sitemap
sudo gem install jekyll-paginate
Github의 Repository를 생성
Github으로 접속 후 새로운 repository 생성. <yourname>.github.io
로 repository 생성 후 로컬에서 home folder로 이동하여 repository 복사.
git clone https://github.com/<yourname>/<yourname>.github.io.git
폴더를 복사 후 그 폴더로 이동한 후 git 을 초기화시킨다. 초기화 시킨 후 git의 폴더에 jekyll의 기본 테마 설치
git init
jekyll new . --force
Jekyll로 생성된 모든 파일을 git에 add해 준 후 commit, push 를 해서 github에 올려준다.
git add *
git commit -m "first commit"
git push -u origin master
첫 commit 시에 config 파일에 user.email과 user.name을 등록하라고 나오면
git config user.email "이메일주소"
git config user.name "이름"
을 입력하여 이메일과 이름을 등록해 준다.이로써 github에 블로그가 생성되었다!
git을 clone 받은 후 처음에는 git push -u origin master
를 모두 입력해야 하지만 한번 한 이후에는 git push
만 입력해도 된다.
Blog 작성
블로그 작성 시 입력한 내용이 예상한대로 동작을 하는지 확인 하기 위해서 매번 github에 push하는 것은 매우 힘든 일이다. 작성을 하는 동시에 바로 확인을 하기 위해서 위에서 언급한 것과 같이 jekyll serve
를 이용하여 서버를 동작 시킨 후 localhost:4000
으로 접속하면 바로 수정된 내용을 확인할 수 있다. 이렇게 수정이 완료된 후 github로 push하면 편하게 포스팅을 수정할 수 있다.
Ubuntu NVIDIA Graphic Driver 설치(nouveau kernel 문제 등)
그래픽 드라이버 설치하기
우분투를 처음 설치하고 나서 NVIDIA 그래픽 드라이버를 설치하는 과정에서 많은 사람들이 다양한 문제를 경험한다.
우선 NVIDA 홈페이지에 들어가서 본인의 시스템에 맞는 그래픽 드라이버를 최근 3가지 종류를 미리 다운받아 놓는것을 추천한다.
1. 시스템 재부팅
명령어를 이용하여 시스템을 재 부팅해준다.
2. 터미널 모드로 진입
로그인 화면이 나타나게 되면 ctrl+alt+F1
버튼을 눌러 터미널 모드로 진입한다.
3. lightdm 끄기
NVIDA 드라이버 설치에 앞서 화면출력을 제어하는 Lightdm을 꺼줘야 한다.
sudo /etc/init.d/lightdm stop
위의 명령어로 lightdm 을 꺼준다
참고 페이지 http://askubuntu.com/questions/295772/sudo-service-lightdm-stop-will-go-into-a-blank-screen
4. 드라이버 설치
Download 폴더에 드라이버가 저장되어 있는 경우 해당 폴더로 이동하여 설치한다.
그래픽 드라이버 실행 시 관리자 권한으로 실행해야 설치가 된다.
만약 다운받은 드라이버가 실행파일로 되어 있지 않은 경우
을 실행하여 실행가능한 파일로 바꿔준다.
5. nouveau 끄기
경우에 따라서 nouveau kernel이 실행중이라서 설치를 할수 없다는 경고 메세지가 나오는 경우가 있다.
이런 경우는 아래의 사이트를 참고하자 https://altinukshini.wordpress.com/2011/07/28/how-to-install-nvidia-drivers-in-ubuntu-linux/
우선 /etc/modprobe.d/blacklist.conf
파일을 열어
를 가장 아래에 추가해준다.
그다음 다음의 명령어로 nouveau를 비활성화 시킨다.
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
update-initramfs -u
여기까지 진행한 후 재부팅하고 다시 sudo 권한으로 그래픽 드라이버를 설치하면 설치가 될 것이다.
위의 사이트에서는 위에 언급한 과정 말고 다른 부가적인 과정이 서술되어 있으나
본인은 이정도로도 설치가 되었다. 만약 안된다면 위의 사이트를 좀더 자세히 참고하길 바란다.