특이한 폰을 한 번 사보고 싶어서 샀었던 특이한 폰

- 방수 되는 폰
- 튼튼한 폰
- 키보드 자판이 있는 폰



샀을 때에는 포스팅을 하지 않고
이제서야 포스팅을 하고 있네...^^



사실 지금 갖고 있는 스마트폰이 15대 정도가 넘는다.
요즘 폰은 갖고 있지도 않는데...
그 말은 오래된 골동품만 잔뜩 갖고 있다는 ^^


그래서 오래된 할아버지 폰들을
지금도 쓸 수 있는지 한 번 부활 시켜보려고 한다.



그 당시에 필자가 샀던 상품이다.

[ebay] New NEC Terrain Black - AT&T (Unlocked) Rugged 4G Push To Talk Smartphone -  79.95$ / FS

10만원 안되는 가격으로 무료 배송~!!! 앗싸~!!!




"NEC Terrain"


많은 분들이 처음 들어보는 이름의 스마트폰일 것이다.
특히 우리나라에서는


유명하지 않은 제품은 반드시 이유가 있다 !!!

사실 좋은 폰은 아니다.
그리고 우리나라에서 사용하기에 불편함이 많다 ^^


그래서
처음 구매하면 좀 해줘야 할 작업들이 있다.




처음 샀을 때 작성한 내용이라서
지금이랑 안맞을 수도 있지만 일단 기록 차원에서 남겨보면...


[ 사용전 설정 ]

1.  3G 전용 네트워크 설정 : *#*#4636#*#*  후  WCDMA Prefferd
2. 물리키보드 지원 한글입력기 : 도돌키보드
3. 로케일(ko_KR) 프로그램 : Custom Locale 같은 것
4. 런처 : Holo Launcher HD
5. 파일 탐색기 : ES 파일탐색기




4G (LTE) 폰이라고는 하지만,
국내 전파와 맞지 않아서 3G 폰으로 사용해야 한다.
필자는 아직도 3G 무적칩을 사용하고 있기에 뭐 불만 없다 ^^

그리고, 한글을 지원하지 않기 때문에
키보드 어플과 함께 Locale 변경 어플도 필요하다.



아!! 가끔 WiFi가 잘 안되는 경우가 있는데,
무선 공유기의 채널에 영향을 받는다고 한다. (정말... Terrain 너는...)

무선 공유기의 2.4GHz 대역을 10번 이하 채널로 변경을 하고
1, 5, 9, 13번 채널을 추천한다고 한다~!!!

그리고, Wi-Fi 테더링도 잘 안된다고 하는데 (윽! 정말...)
이건 마땅히 해결방법이 없다고...


뭐, 여하튼 좀 우여곡절이 있지만 그래도 ^^
이 정도만 하면 그래도 뭐 그런대로 쓸만하다~~~








NEC Terrain 에 대한 정보는 나무위키에 너무 잘 정리되어 있다.
SPEC 정보는 물론이고, 주의 사항까지도 잘 정리되어 있다.
만세~









일단 이 스마트폰은 NEC와 AT&T에서 기업용 시장을 타겟으로 내놓은
방수, 방진 되는 스마트폰인데..
NEC가 스마트폰 사업을 그만둬 버리는 바람에 ㅜㅜ

그래서 Android version도 4.0.4 에서 끝인 것으로 보인다.

커스텀롬도 안보이고... ㅜㅜ





그렇기는 하지만

지금 기준으로 최소한의 사용할만한 수준은 될 것 같다.
하지만 말 그대로 최소한의 수준 ^^


네이버 앱도 실행이 된다.

뭐 아쉬운대로... ^^



구글 드라이브도 설치가 되고 파일 접근이 가능하다.
mp3 파일 재생까지는 잘 된다.

그런데, 구글드라이브에 있는 동영상을 보려고 하니
아래와 같은 메시지와 함께 재생이 안된다.


구글에서 스마트폰에 맞도록 재인코딩을 해주나?!

나중에 한 번 더 확인은 해봐야겠지만,

사실 동영상 재생까지는 힘들지 않을까 한다.


mp3 파일 재생이 잘되는 것만으로도 감지덕지~!!!!



NEC Terrain을 사용하면서 가장 감동적인 부분은 자판이다!!!



물리 자판

사용감이 안좋다고 하시는 분들도 많으시지만
개인적으로는 색다른 경험만으로도 정말 좋았다!!!

Naver에서 검색어를 입력하거나
문자 같은 것들을 입력할 때 행복하다!!!

한글 입력도
도돌키보드 앱 설치가 되어있으면 잘 된다!!!
한글 자판이 보이지 않는 점이 조금 아쉽지만
대부분 다 외워서 (습관적으로?) 잘 입력하지 않나?!





메모리가 1GB 밖에 안되고
Android 버전도 낮고
화면도 작아서
안되는 것도 많고 속도도 느리지만...

그냥 색다른 맛으로 잠깐 사용해보기에는
재미있는 스마트폰이다.

방수도 되고
물리 자판도 되고
튼튼한 스마트폰~!!!



반응형

'지름생활 > Phone' 카테고리의 다른 글

Galaxy Note 8 통신사 변경하기  (20) 2019.02.09
[Nexus S] 젤리빈 Jelly Bean 4.1.2  (2) 2013.05.13


일단 필자는 컴퓨터공학 전공이다.

Hardware 관련된 과목을 배우지 않는 것은 아니지만, Software 중심으로 전공 수업을 받았고

또한 개인적으로도 Software에 치우쳐서 공부를 했다.

하지만, 항상 Hardware 부분에 대한 갈증은 갖고 있었고, 지금도 관심 많다 !!!


하고 싶은 말은...

Hardware 지식이 거의 없다.


아래 내용에 거짓말이 많을 수 있다.



지름병에 걸린 중증 환자로써 어느날 Aliexpress를 뒤지다가 발견한 저렴한 버전의 Arduino 제품 !!!




12달라도 안되는 가격에

Arduino 프로그램이 가능한 액정이 달려있는 손가락 사이즈의 예쁜 디바이스가 딱 !!!

거기에다가 배터리도 내장되어 있고, 6축 센서, IR 까지.... 아니... 이건 대박 !!!



그래서 무조건 질렀다.




[ ESP32 ]

    - 2008년 설립된 espressif 社 에서 만든 유명한 라인업 중 하나이다. (ESP8266, ESP32)

    - 중국 상하이에 있는 회사인데... ESP8266, ESP32 2개로 대박이다~~~~

        . https://www.espressif.com/

        . http://espressif.co.kr/ (국내 총판)

    - IoT 디바이스 개발을 해보려는 사람들이라면 누구나 알만한 Chip 이라고 한다.

        . ESP8266 → ESP32 전환 추세


 

 ESP8266

 ESP32

 MCU

 Xtensa Single-Core 32bit

 Xtensa Dual-Core 32bit

 802.11 b/g/n/ WiFi

 O, HT20

 O, HT40

 Bluetooth

 X

 4.2 and Classic

 Frequency

 80 MHz

 160 MHz

 SRAM

 160 kBytes

 512 kBytes

 Flash

 SPI Flash, up to 16 MBytes

 SPI Flash, up to 16 MBytes

 GPIO

 17

 36

 Hardware / Software PWM

 None / 8 채널

 1 / 16 채널

 SPI / I2C / I2S / UART

 2 / 1 / 2 / 2

 4 / 2 / 2 / 2

 ADC

 10 bit

 12 bit

 CAN

 X

 1

 Ethernet MAC Interface

 X

 1

 Touch Sensor

 X

 O

 Temperature Sensor

 X

 O

 Hall Sensor

 X

 O



[ M5StickC ]

    - M5StickC 디바이스는 아래 부품들의 조합으로 만즐어진 제품이다.


 ESP32-PICO-D4

 ESP32 기반 꼬꼬마 버전

 AXP192-PMIC

 Single Cell Li-Battery and Power System Management IC

 SH200Q-6Axis

 very small, 6 axis inertial sensor, consisting of: A digital, triaxial 16bit acceleration sensor and a digital, triaxial 16bit, ±2000°/s gyroscope. 

 ColorLCD-0.96" (ST7735S)

 80 x 160. 132RGB x 162dot 262K Color with Frame Memory Single-Chip TFT Controller/Driver

 80mAH BATTERY

 

 SPM1423-PDM MIC

 miniature, highperformance, low power, top port silicon digital microphone with a single bit PDM output


    - 기본적인 제품 정보는 위의 이미지를 보면 된다 !!!



[ Manual ]

    - M5StickC에 대한 모든 것이 너무 잘 작성되어 있다.

        . https://docs.m5stack.com/#/en/core/m5stickc


반응형


※ 아래 내용이 많은데.... 뭔가 해보려고 엎치락 뒷치락 하면서 작성한 내용이라 그렇다.

   비슷한 고민을, 공부를 해보시려는 분이면 조금 도움이 되지 않을까 해서 공개한다.



주말에 뭘할까 고민하다가 블로그를 뒤져봤는데... 뭔가 귀찮았다.

그래서 이걸 어떻게 하면 편하게 할 수 있을까 고민하다가... ^^


[ 목표 ]

1. 네이버 블로그에서 특정 키워드(동탄)를 검색해서

   맛집 포스팅인지 부동산 포스팅인지 구분하고

   동일한 식당이면 묶어서

   홍보 포스팅이면 제외시켜서

   GitHub 페이지로 결과를 보여주도록 하고 싶다.


2. 불량 포스팅이면 작성자를 기록해서

   다음부터는 해당 블로거 글은 무조건 걸러버리는 기능도 필요


3. 처리한 결과는 별도 로깅도 하고 레포팅도 한다.



[ 개발 환경 ]

    - GitHub에 repository를 생성해서 소스코드 관리

        . https://github.com/

    - Virtualbox를 이용해서 Ubuntu 18.04 LTS Server 설치

        . https://www.whatwant.com/entry/Ubuntu-Server-18042-LTS-64bit-Bionic-Beaver-Installation

    - Python

        . 일단 2.7 버전의 Python으로 해보고자 한다. "$ sudo apt-get install python"



[ 진행 #1 - Python module 설치 ]

    - 추가로 설치해야하는 Python module들을 설치하자

$$ sudo apt-get install python-beautifulsoup python-requests



[ 진행 #2 - Naver API 사용 준비 ]

    - Naver 블로그 검색을 API를 통해 해보고자 한다.

        . https://www.whatwant.com/entry/Naver-API-사용-준비하기

    - 기본적인 활용은 아래 링크에서 확인할 수 있다.

        . https://developers.naver.com/docs/search/blog/



[ 진행 #3 - 기본 코드 작성하기 ]

    - 이제 준비는 모두 끝났다. 뭔가 동작하도록 해보자!!!


#!/usr/bin/env python

# -*- coding: utf8 -*-


import urllib2

import requests



naver_client_id = "XXXX"

naver_client_secret = "XXXX"


search_blog_keyword = "동탄"

query = urllib2.quote(search_blog_keyword)


display = 10


start = 1


sort = "date"


url = "https://openapi.naver.com/v1/search/blog.json?query=%s&display=%s&start=%s&sort=%s" % (query, display, start, sort)



request = urllib2.Request(url)

request.add_header("X-Naver-Client-Id", naver_client_id)

request.add_header("X-Naver-Client-Secret", naver_client_secret)



response = urllib2.urlopen(request)

rescode = response.getcode()



if( rescode == 200 ):

    response_body = response.read().decode('utf-8')


    print response_body


exit()


    - 위와 같이 작성 후 실행하면, 뭔가 값을 가져온 것을 확인할 수 있을 것이다. 뭔가 다 된 것만 같은 착각이~~~ 든다.

    - 정말로 뭔가 가져온다~ ^^



[ 진행 #4 - NLP 사용하기 (KoNLPy) ]

    - 한국어 분석을 해보기 위해 알아보니, 가장 유명한 NLP 모듈이 KoNLPy 인 것 같다.

        . Reference: http://konlpy.org/ko/latest/


    - 필요한 패키지 미리 설치하기

        . 공식 홈피에는 openjdk-7-jdk로 되어있고, python3-dev도 기재되어 있지만,

          Ubuntu 18.04 환경에서 현재 openjdk-7-jdk는 사라졌고, 필자는 python2.7 환경에서만 사용할 것이기에 아래와 같이...


$ sudo apt-get install g++ openjdk-8-jdk python-dev


    - KoNLPy 설치하기


$ sudo apt-get install python-pip

$ sudo -H pip install konlpy


    - 샘플 코드는 다음과 같다.

    - 과거 Twitter가 이름을 Okt로 바꿨단다.


from konlpy.tag import Okt

from konlpy.utils import pprint



...

        blog_content = ... (위의 블로그 긁어오기 응용)

        okt = Okt()

        pprint( okt.nouns( blog_content ) )



[ 진행 #5 - 단어 카운트하기 ]

    - 블로그 본문 얻기 → 형태소 분석해서 noun 얻기 → 각 단어가 몇개인지 갯수를 얻어야겠다!!!!

    - 예전에는 for 구문 돌려서 하나씩 갯수를 더해가면서 분석을 했는데, 좀 더 편한 방법을 찾아봤다.


from collections import Counter


...


    ... (블로그 본문 얻기)


        okt = Okt()

        nouns = okt.nouns( blog_content )


        tags = Counter( nouns )


        pprint( tags )


    - Counter() 함수 하나로 해결?!



[ 진행 #6 - 한글 폰트 설치하기 ]

    - 단어 구하고 몇 개씩인지 카운트까지 했으면, 당연히 wordcloud 한 번 해봐야할 것 같아서 ... 미리 필요한 한글 폰트부터 설치해봤다.


$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra


    - 설치된 폰트를 확인해보자.


$ ll /usr/share/fonts/truetype/nanum/



[ 진행 #7 - wordcloud 설치하기 ]

    - 최근 Python을 통해서 이러한 분석작업을 하는 것이 엄청 유행을 하고 있는데,

      ML과 함께 하는 것이 유행하면서 Jupyter Notebook 환경에서 작업한 코드들이 대부분이다보니 필자가 원하는 내용을 찾기가 쉽지 않았다.

    - 뭐, 결국은 필자의 지식과 노력과 실력이 부족한 탓이겠지 ㅠㅠ


$ sudo -H pip install wordcloud

$ sudo -H pip install matplotlib

$ sudo apt-get install python-tk



[ 진행 #8 - wordcloud 만들어보기 ]

    - 앞에서 형태소 분석한 단어가 각 몇 개씩인지까지 분석했으니... 그걸 가지고 WordCloud를 만들어보자.


from wordcloud import WordCloud


... (블라블라)


        ... (블로그 본문 읽어와서)

        ... (KoNLPy 이용해서 형태소 쪼개고)

        tags = (Count 이용해서 단어별로 갯수 카운트하고)


        font_path = '/usr/share/fonts/truetype/nanum/NanumMyeongjoBold.ttf'

        wc = WordCloud(font_path=font_path, background_color='white', width=800, height=600)


        cloud = wc.generate_from_frequencies( tags )

        cloud.to_file( "wordcloud.png" )


    - 그러면 아래와 같은 그림이 만들어진다. (폰트는 바꿔서 만들었다 ^^)




[ 진행 #9 - GitHub Pages Theme 고르기 ]

    - 이미지 파일까지 만들었는데... 이걸 어떻게 보여줄까 고민하다가 생각한 GitHub Pages ...

    - 기본으로 주어진 테마 중에는 마음에 드는 것이 없어서 다른 테마들은 없을까 찾아보았다.

        . https://jekyllthemes.io/github-pages-themes



    - 유료도 있지만, 무료도 있으니 잘 찾아보길... ^^



[ 진행 #10 - GitHub Pages Theme 가져오기 ]

    - 필자가 고른 Theme는 "flexible-jekyll"

        . Repo: https://github.com/artemsheludko/flexible-jekyll

    - 해당 Theme를 다룰 다양할 방법이 있지만, 필자가 택한 방법은 "/docs" 디렉토리에 넣어서 사용하기!


    ① 내가 사용하는 Repo를 다운로드 받은 뒤, 내 Repo 디렉토리로 이동하자

    ② 위 Theme를 clone 받은 뒤, .git 디렉토리를 지우자.


$ git clone https://github.com/artemsheludko/flexible-jekyll.git ./docs

$ rm -rf ./docs/.git


    ③ 그렇게 하고 push 하자. /docs 디렉토리가 있어야 뒤에서 할 settings 설정을 진행할 수 있다.


    ④ GitHub에서 Pages 기능을 활성화 시키자. 해당 Repository의 settings 메뉴에서 GitHub Pages 항목을 살펴보자.



    ⑤ Source 선택 時 /docs folder로 골라주면 된다. (/docs 디렉토리가 있어야 해당 옵션을 선택할 수 있다)



[ 진행 #11 - GitHub Pages Theme 설정하기 ]

    - 간단한 config를 설정해야 한다.



    - 입맛에 맞게 수정한 후 commit 반영하자.



[ 진행 #12 - GitHub Pages Post 반영하기 ]

    - 검색 결과를 얻어와서 분석하고, 이미지까지 만든 것을 post로 만들어 보자.

    - 아래 코드는 필자가 테스트로 작성했던 것을 샘플로 기재한 것이다.


... (앞에서 작업한 것들)


    for content in CONTENTS:

        post_filepath = "docs/_posts/%s-%s.markdown" % ( datetime.now().strftime("%Y-%m-%d"), content['id'] )


        temps = [ "---", "layout: post" ]

        temps.append( "title: %s" % content['title'] )

        temps.append( "date: %s" % content['postdate'] )

        temps.append( "description: %s" % content['description'] )

        temps.append( "img: %s" % content['img'] )

        temps.append( "fig-caption: # Add figcaption (optional)" )

        temps.append( "tags: [ %s ]" % ','.join(content['nouns']) )

        temps.append( "---" )

        temps.append( "[%s](%s)" % (content['title'], content['link']) )


        with open( post_filepath, 'w') as outfile:

            outfile.write( "\n".join( temps ) )



여기까지 진행해서 얻게된 결과는 다음 이미지와 같다.




아직도 해볼만한 것이 엄청 많지만,

힘들어서 여기까지만 작성한 내용으로 한 번 선 긋고자 한다. 헥헥 ...



반응형


Ubuntu 18.04 Server 설치를 하고 부팅을 하는데

신경 거슬리게 하는 메시지가 자꾸 출력이 되었다.



▷ cloud-init

    - 클라우드 인스턴트를 초기화하기 위한 유틸리티들을 제공해주는 패키지


우쒸... 필요도 없는 것이 거슬리게 하네... 지워버려야겠다!!!


$ sudo apt-get purge cloud-init


이제 이상한 메시지가 안나온다.





반응형


클리앙(https://www.clien.net)을 보다가 알게된 소식

    - 샤오미 ‘미밴드’ 한국서 100만대 팔았다 (https://www.clien.net/service/board/news/13831567)


필자도 그 중 1대를 팔아준 사람으로써... ^^

갑작스레 든 생각 "우쒸~ 한글 패치는 언제 해주는 건데!!!"


그런데, 위 아티클의 원본 기사를 살펴보니, (https://m.news.naver.com/read.nhn?oid=011&aid=0003604031&sid1=105&mode=LSD)

2019년 8월 20일에 한국에 미밴드4를 정식 출시할 예정인데.......

    - "미밴드4를 한국어로 현지화했다" ?????!!!!!


그래서 부랴 부랴 검색을 했다.

그런데, 응!? 정식 패치가 아니라 우리 훌륭한 한국 사용자들이 직접 폰트 패치를 구현했단다!!!!

(한국 총판에서 판매량을 늘리기 위해 기존 미밴드4를 위한 정식 패치를 빨리 배포하지 않을 거라는 소문도 있다.....)


출처 : https://cafe.naver.com/xst/365503


저런 분들은 존경을 받아 마땅하다!!!!!



1. 폰트 펌웨어 다운로드 받기

- 게시글(https://cafe.naver.com/xst/365503)에서 첨부파일을 다운로드 받자

- "MB4_Font_K.zip"


2. 압축풀기

- zip 파일 그대로 펌웨어 업데이트를 할 수 없다. 압축을 해제하자.

- "MB4_Font_K_최종.ft"


3. 업로드

- 폰으로 전송하자


4. 앱 설치

    - 펌웨어 업데이트를 하기 위해 앱을 하나 설치해야 한다.

    - "Notify & Fitness for Mi Band"



5. 커스텀 펌웨어 업데이트

- "Notify & Fitness for Mi Band" 앱 실행 후

- 오른쪽 위 막대기-바 메뉴에서 '도구' 항목을 선택하면

- 펌웨어 업데이트 메뉴가 나오고 '커스텀 펌웨어'를 선택 후

- 앞에서 업로드한 펌웨어를 선택하면 된다.


6. 뒷정리

    - 끝이다.....

    - "Notify & Fitness for Mi Band" 앱은 삭제해도 된다.



※ 필자의 미밴드4는 Global version이다. 내수용이 안된다는 말은 없는데... 혹시 몰라서...



이제 미밴드4에서 한글이 나온다~~~~~!!!! 우와~~~~~~~!!!

반응형

'지름생활' 카테고리의 다른 글

갤럭시탭7 (SHW-M180S) 최적화 하기  (3) 2013.09.08
Sony - LiveView  (0) 2012.07.25
갤럭시 탭 7 재정비  (0) 2012.07.01
[투싼] 스트럿바, 후드 인슐레이터  (1) 2009.11.29
[투싼] 연료펌프 리콜  (1) 2009.11.26


업무 관련하여 GitHub의 로그인(인증)을 가지고 웹사이트를 구축하고자 알아보고 있다.

별도의 웹페이지를 구성하는데, 로그인 부분을 GitHub 것을 가지고 오고 싶은 것이다.


구글신님께 여쭤보니 자꾸만 Node.JS 기반의 샘플 코드만 알려주시는데,

미천한 중생인 필자는 구석기 시대를 살고 있는 무식한 종자이기에... 버겨웠다 ㅠㅠ


하지만, 구현은 해야하는데...


필자에게 남은 선택지는 두 가지 !!!

① Node.JS 공부하기

② 무조건 다른 방식 찾아내기


그러다가 우연히 만난 구글신님의 중얼거림..... "PHP로 구현한 샘플도 있는데..."


그래서, 대세 흐름은 아니지만 PHP로 구현한 코드를 직접 한 번 되는지 해보기로 했다.



1. WAS 환경 구축하기

    - Docker 기반으로 nginx + php 환경을 간단히 구축해봤다.

        ① Docker 설치하기 (링크)

        ② Docker-Compose 설치하기 (링크)

        ③ docker-compose.yml 작성


version: '3'


services:


    web:

        image: nginx:latest

        ports:

            - "80:80"

        volumes:

            - ./html:/code

            - ./web/conf/default.conf:/etc/nginx/conf.d/default.conf

            - ./web/log:/var/log/nginx


    php:

        image: php:7.3-fpm

        expose:

            - "9000"

        volumes:

            - ./html:/code


        ④ ./web/conf/default.conf 작성


server {

    listen 80;


    server_name 192.168.100.xxx localhost;


    index index.php index.html;


    root /code;


    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass php:9000;

        fastcgi_index index.php;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param PATH_INFO $fastcgi_path_info;

    }


    error_log  /var/log/nginx/error.log;

    access_log /var/log/nginx/access.log;

}


    ⑤ ./html/index.php


<?php


echo phpinfo();


?>


    ⑥ 브라우져로 접속해서 확인 → 성공~



※ 진행하다보니.... 집에서 VirtualBox로 생성한 서버에서 테스트를 진행하려다보니 여러가지 제약사항이 생겼다.

   일단 외부에 있는 GitHub.com에서 내부로 들어올 수도 없고..... 포트포워딩 등을 셋팅하면 되겠지만...

   야밤에 귀찮기도 하고... 그래서 외국에 있는 저렴이 서버 호스팅을 이용해서 테스트 진행하기로 했다.




2. GitHub 에서 App 등록하기


    - GitHub 인증을 이용하기 위해서는 GitHub에 "OAuth Apps"로 등록하는 과정이 필요하다.

    - 회사에서는 GitHub Enterprise에서 진행을 해야하지만, 지금 집에서는 GitHub.com을 이용하기로 했다.



    - GitHub.com 로그인 후 계정에서 Settings 메뉴 선택 후 Developer settings 항목을 선택하자



    - 우리가 사용할 것은 OAuth Apps 메뉴이다.



    - 위와 같이 정보를 채우자. (GitHub로 시작하는 이름은 사용할 수 없단다 ^^)

    - 생성할 때 callback URL을 어떻게 해야할지 몰라서 위와 같이 했는데... 실제 구성 時 로그인 페이지의 URL로 작성해주자.




    - 이제 우리에게 필요한 정보를 얻었다!!!




3. 페이지 구성하기


    ① index.php : 첫 접근 페이지

        - 이미 로그인이 되어있으면 main.php 페이지로 전환

        - 로그인을 원하면 login.php 링크 제공

<?php

session_start();


if (isset($_SESSION['github_data'])) {

    header("location: main.php");

}

?>

<a href="login.php">Login with Github</a>


    ② login.php

        - 로그인이 안되어 있으면 GitHub.com으로 보내버리고,

        - 로그인이 되어 있으면 세션에 사용자 정보를 넣고선 main.php로 전환

        - 위에서 생성한 정보는 각자 알맞게 입력!

<?php


$config = array(

    'client_id'     => 'xxx',

    'client_secret' => 'xxx',

    'redirect_url'  => 'http://xxx.xxx.xxx.xxx:8080/login.php',

    'app_name'      => 'WHATWANT GH Login'

);


session_start();


if($_SERVER['REQUEST_METHOD'] == 'GET') {

    if(isset($_GET['code'])) {


        $curl = curl_init('https://github.com/login/oauth/access_token');


        //TO DO: code 값이 없을 경우 처리

        $config['code'] = $_GET['code'];


        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($config));

        curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept: application/json"));


        $json_response = curl_exec($curl);

        curl_close($curl);



        $token = json_decode($json_response);


        //TO DO: access_token 값이 리턴되지 않을 경우 처리

        $_SESSION['access_token'] = $token->access_token;


        $curl = curl_init("https://api.github.com/user?access_token=".$_SESSION["access_token"]);


        curl_setopt($curl, CURLOPT_HEADER, false);

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept: application/json", "User-Agent: WHATWANT App"));


        $json_response = curl_exec($curl);

        curl_close($curl);


        $userdata = json_decode($json_response, true);



        $_SESSION['github_data'] = $userdata;

        header("location: main.php");

    }


    else {


        $url = "https://github.com/login/oauth/authorize?client_id=".$config['client_id']."&redirect_uri=".$config['redirect_url']."&scope=user";

        header("Location: $url");

    }

}


?>


    ③ main.php

        - 세션에 값이 없으면 index.php로 전환

        - 세션에 값이 있으면 정보 출력, 더불어 로그아웃 링크 제공

<?php

session_start();


if (!isset($_SESSION['github_data'])) {

    header("location: index.php");

}

else {


    foreach( $_SESSION['github_data'] as $key => $value ) {

        echo "$key => $value<br>";

    }


    echo "<a href='logout.php'>Logout</a>";

}

?>


    ④ logout.php

        - 세션값 날리고, index.php 페이지로 전환

<?php

session_start();

unset($_SESSION['github_data']);

header("Location: index.php");

?>


일단 급한대로 여기에서 마무리.

아직 구현하지 않은 부분은 구현하는대로 업데이트 하겠음~!!


참고사이트 : https://www.9lessons.info/2014/02/login-with-github-oauth-php.html


반응형


블로거 생활을 하고 있지만

이 블로그를 가지고 돈을 벌고 싶다거나

엄청난 방문자 수를 기록하고 싶은 생각은 없다.


하지만,

블로그에 들어와서 방문자수가 높게 나오면

기분이 좋은 것도 사실이고

내 블로그를 링크하신 분들이 누구인지도 궁금하고...^^


Tistory에서 분석해주는 내용이 있기는 하지만

그다지 디테일하지도 않고...


그래서, 찾다보니 Plugin으로 뭔가 있었다.



네이버 애널리틱스


이걸 한 번 사용해보기로 해서

설정 후에 지켜봤더니...


Naver 유입은 거의 없고

Google을 통해서 유입되는 비율이 대부분이다.



헉! 구글님이 먹여살리고 있었구나!!!



그렇다는 것은 Naver 검색을 통해서는

내 블로그는 거의 나오지 않는다는 말인데...


이건 뭐지 !!!



그래서 찾아봤더니

네이버에 내 블로그가 등록되어있는지 여부를 확인할 수 있고

등록을 요청할 수 있는 사이트가 있었다.


https://webmastertool.naver.com/




사이트를 추가할 때

조금 번거로운 과정을 거쳐야 한다.

해당 블로그의 주인장이라는 것을 증명해야하기 때문이란다.


꾸미기 메뉴의 '스킨 편집'에서 HTML을 선택해서

넣으라는 코드를 넣고 저장하면 된다.



이렇게 하고선 내 블로그의 각 포스팅 주소를 넣어주면 된다.



요청 메뉴에서 "웹 페이지 수집" 항목을 통해서 수집 요청을 하면 되는데...

문제는 위의 스크린샷에서 보는 것처럼 "수집보류"라고 처리가 되었다.


수집 요청 하자마자 바로 판정되지는 않는다.

그래서 기다리고 있었는데...

오늘 들어가보니 '수집보류'라고 되어 있는 것이다.


그래서 원인을 찾아봤더니.... 링크주소가 숫자로 되어있으면 그렇다는 말이 있다.



'관리' - '블로그' 메뉴에서 주소 설정을 위와 같이 문자로 변경하고선

다시 시도해보면 좋은 결과가 있을 것 같다.



이렇게 해보고 네이버 유입이 늘어날지 한 번 지켜보겠다~ ^^




아래 사이트의 내용을 참고하여 진행하였습니다~^^

https://comlover.net/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%ACTistory-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-%EB%93%B1%EB%A1%9D

https://yoloyolo-life.tistory.com/entry/%EB%84%A4%EC%9D%B4%EB%B2%84-%EC%9B%B9%EB%A7%88%EC%8A%A4%ED%84%B0%EB%8F%84%EA%B5%AC-%EC%88%98%EC%A7%91%EB%B3%B4%EB%A5%98-%ED%95%B4%EA%B2%B0%EB%B2%95



반응형


proxy server 셋팅을 하고 있는데,

22번 포트에 대해서도 다른 서버로 전달을 해주어야 하는 경우가 생겼다.


어!? 그러면, proxy server에 ssh 접속은 어떻게 하지?!


proxy server의 ssh 포트를 변경해야할 필요가 생긴 것이다!


그래서, 122번 포트로 변경을 해보고자 한다.


1. 접속 안되는 상황 확인


$ ssh chani@192.168.100.105 -p 122

ssh_exchange_identification: Connection closed by remote host



2. /etc/ssh/sshd_config 수정


$ ssh chani@192.168.100.105 -p 22


$ sudo nano /etc/ssh/sshd_config


Port 22

Port 122


3. /etc/services 수정


    - 필수 사항은 아니지만, 이것도 같이 변경해주는 것이 좋다.


$ sudo nano /etc/services


ssh             122/tcp                         # SSH Remote Login Protocol (by whatwant)



4. 설정 반영 및 확인


$ sudo service ssh restart

$ sudo netstat -anlp | grep sshd

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1668/sshd

tcp        0      0 0.0.0.0:122             0.0.0.0:*               LISTEN      1668/sshd



5. 접속


$ ssh chani@192.168.100.105 -p 122

Success !!


파이팅!!


반응형

+ Recent posts