osx python3.5 설치방법

전엔 centos 에 python3.5 설치했는데

osx 에서 설치하는것도 별반 다르지않다.

대신

https://www.python.org/downloads/

에서 python3.5 다운받고 설치한 후 아래 명령어 실행시켜주면

이것저것 필요한 라이브러리가 깔리게 됨.

 

pip3 install --upgrade beautifulsoup4
pip3 install --upgrade pymysql
pip3 install --upgrade json
pip3 install --upgrade requests
pip3 install --upgrade lxml
pip3 install --upgrade html5lib

 

android debug.keystore sha-1 가져오는법.

firebase 연동할때 sha-1 입력하라고 나오는데,

내 debug.keystore 파일 내용을 읽어올 수 있다.

출력되는건 SHA-1 형태로 옆에 값이 길게 나오는데

그걸 복사해다 쓰면 됨.

 

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

 

android java background color 설정방법

background 나 text 값을

기존에 작성한 color.xml / string.xml 에 있는걸 가져와서 쓸수도 있는데

getResources().getColor( ); 와 같이 가져올 수 있다.

아래 예제는 layout 설정해놓고 배경색 바꾸는 코드임.

 

layout.setBackgroundColor(getResources().getColor(R.color.white));

 

android 웹뷰 페이지 로딩중 넣기

android 에는 ProgressDialog 라는게 있는데

html alert 과 비슷하다고 보면됨.

이걸 활용해서 데이터 로딩중엔 ProgressDialog 를 보여주고

종료되면 dismiss 시키면 된다.

 

mProgressDialog = ProgressDialog.show(WebviewActivity.this,"", "잠시만 기다려 주세요.",true);

mWebview.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        mProgressDialog.dismiss();
    }
});

 

android 인터넷 연결상태 확인

심플함.

반환하는 값에 따라서 현재 연결상태값을 알수있음.

 

public static int getConnectStatus(Context context){
    int TYPE_WIFI = 1;
    int TYPE_MOBILE = 2;
    int TYPE_NOT_CONNECTED = 0;

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (null != activeNetwork) {
        if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
            return TYPE_WIFI;

        if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
            return TYPE_MOBILE;
    }
    return TYPE_NOT_CONNECTED;
}

 

genymotion 에 google apps 6.0 설치

아무리 봐도 genymotion 이 안드로이드 스튜디오 2.1 내장 에뮬레이터보다 조금 더 빠른거같다.

안드로이드 스튜디오 2.2로 버전업 되면서 속도가 많이 빨라졌다는 얘기도 있긴한데

그래도 역시나 느림.

google apps 6.0 기반으로 짜놓다보니 genymotion 에서도 nexus 5x 6.0.0 api 23 으로 설치해놓고 해야한다.

설치방법은 예전에 genymotion에 google apps 5.1  쓸 당시랑 별반 차이점이 없다.

1) genymotion 2.6.0

2) device emulator PREVIEW - Google Nexus 5X - 6.0.0 - API 23 - 1080x1920

3) flash Genymotion-ARM-Translation_v1.1.zip then restart. (http://www.mirrorcreator.com/files/0ZIO8PME/Genymotion-ARM-Translation_v1.1.zip_links)

4) flash gapps-L-4-21-15.zip. (https://www.androidfilehost.com/?fid=96042739161891406)

5) sign in into your google account.

6) download( benzo-gapps-M-20151011-signed-chroma-r3.zip) https://www.androidfilehost.com/?fid=24052804347835438 and restart.

3,4,6 한 뒤에는 genymotion 에뮬레이터를 재시작 해주는게 편하다.

마지막에 6 까지 끝내고 난 뒤에는 부팅되는 시간이 좀 걸리지만 뭐.. ㅇㅇ

 

아래는 google apps 예전 버전들.

Google Apps for Android 6.0 (https://www.androidfilehost.com/?fid=24052804347835438 - benzo-gapps-M-20151011-signed-chroma-r3.zip)
Google Apps for Android 5.1 (https://www.androidfilehost.com/?fid=96042739161891406 - gapps-L-4-21-15.zip)
Google Apps for Android 5.0 (https://www.androidfilehost.com/?fid=95784891001614559 - gapps-lp-20141109-signed.zip)
Google Apps for Android 4.4.4 (https://www.androidfilehost.com/?fid=23501681358544845 - gapps-kk-20140606-signed.zip)
Google Apps for Android 4.3 (https://www.androidfilehost.com/?fid=23060877490000124 - gapps-jb-20130813-signed.zip)
Google Apps for Android 4.2 (https://www.androidfilehost.com/?fid=23060877490000128 - gapps-jb-20130812-signed.zip)
Google Apps for Android 4.1 (https://www.androidfilehost.com/?fid=22979706399755082 - gapps-jb-20121011-signed.zip)
Google Apps for Android 2.3.7 (http://www.mediafire.com/download/bs063kb0m742o5l/gapps-gb-20131027-signed.zip - gapps-gb-20131027-signe.zip)

 

Atom, Pycharm, Android studio Multi line selection/CloneCaret

IDE 쓰다보면 여러 라인을 선택해서 작업하는경우가 잦은데

그걸 칭하는 단어가 명확하지도, OSX 기준으로 명확한 단축키가 있는것도 아님.

내가 지금 쓰는 IDE 가 Atom, Sublime text, Pycharm, Android studio 정도인데

대부분 Preferences -> keymap 에 위 기능 설정하는게 있고

검색은 selection / clone / caret 로 검색하면 된다. (3가지 중 1개엔 나옴!)

 

  • Android studio/Pycharm
    • CloneCaretAbove
    • CloneCaretBelow
  • Atom
    • editor:add-selection-above
    • editor:add-selection-below

Centos Python3.5 설치 방법

Centos 에는 기본적으로 2.x 대 Python 이 깔려있다. 이건 뭐 OSX 도 마찬가지..

초보자 입장에서 실제 개발할때 2.x 와 3.x가 뭐가 크게 다른지는 모르겠지만

뭐든 최신버전이 좋으니.

 

sudo yum install https://centos6.iuscommunity.org/ius-release.rpm
sudo yum install python35u
python3.5 -V

cd /var/local/
wget https://bootstrap.pypa.io/get-pip.py
python3.5 get-pip.py
pip3 -V

yum install libxslt-devel libxml2-devel python35u-devel

pip3 install --upgrade beautifulsoup4
pip3 install --upgrade pymysql
pip3 install --upgrade json
pip3 install --upgrade requests
pip3 install --upgrade lxml
pip3 install --upgrade konlpy
pip3 install --upgrade JPype1-py3
pip3 install --upgrade Cython
pip3 install --upgrade lxml 
pip3 install --upgrade html5lib

 

넵 그렇습니다.

 

Python BeautifulSoup TypeError: cannot use a bytes pattern on a string-like object

크롤링 하며 놀던 중, centos6 위에 깔아놓은 python 을 2.x에서 3.5 로 올렸다.

올리고나니 잘 되던 크롤러 하나가 동작을 안함…..

오류내용은

Traceback (most recent call last):
  File "/var/local/test.py", line 29, in <module>
    soup = BeautifulSoup(str(source_code), "lxml")  # BeautifulSoup 통해 값 설정
  File "/usr/lib/python3.5/site-packages/bs4/__init__.py", line 212, in __init__
    markup, from_encoding, exclude_encodings=exclude_encodings)):
  File "/usr/lib/python3.5/site-packages/bs4/builder/_lxml.py", line 109, in prepare_markup
    for encoding in detector.encodings:
  File "/usr/lib/python3.5/site-packages/bs4/dammit.py", line 256, in encodings
    self.markup, self.is_html)
  File "/usr/lib/python3.5/site-packages/bs4/dammit.py", line 314, in find_declared_encoding
    declared_encoding_match = xml_encoding_re.search(markup, endpos=xml_endpos)
TypeError: cannot use a bytes pattern on a string-like object

 

여기저기 찾아보니 lxml 로 값 변환하는 과정에서 bytes 패턴을 string객체에선 못쓴다는 말 같음.

뭔 개소리지 다른건 기존 소스로도 다 되는데 ……

그 사이트가 이상한건가 싶어서 Requests 로 가져오던 부분도 urlopen 으로 바꿔보고

값 보내는쪽을 str(), .encode() 등 짓을 다 해봤지만 안됨.

 

Beautifulsoap 메뉴얼 찾아봐보니 lxml 말고도 다양한 html parser 를 지원해서

걍 html5lib 설치하고 다시 돌리니 잘 됨.

 

soup = BeautifulSoup(str(source_code.text), "lxml")
# 에러 발생


sudo pip3 install --upgrade html5lib
# html5lib 설치 


soup = BeautifulSoup(str(source_code.text), "html5lib")
# parser 변경.

 

넵 그렇습니다.

lxml 로 파싱하다가 계속 에러나면 html5lib 로.. ㅇㅇ

centos php5.6 to php7.0 이전 하는방법

php7.0 이 그렇게 빠르대서

뭔가 하고 기다리다가

7.0.2 뜨고 업데이트 해야겠다 싶어서

오늘 올림.

 

기존 내 서버 스펙은 mariadb 10.0.19, php5.6.x 였는데

yum 으로 설치하고 하면 방법은 간단함.

 

# 웹/DB 둘다 중지.
service httpd stop
service mysql stop

# php 7 설치
yum install php70w -y
yum install php70w-xml php70w-soap php70w-xmlrpc php70w-mbstring php70w-json php70w-gd php70w-mcrypt -y
yum install php70w-common php70w-cli php70w-devel php70w-fpm php70w-gd php70w-opcache -y

# mysql 쓰는 사람은 php70w-mysql, maria10 쓰는사람은 php70w-mysqlnd 설치
yum install php70w-mysqlnd -y

# php제대로 깔렸는지 검사
php -v

# mysql api 버전 제대로 맞는지 검사
php -i | grep 'Client API'

# 이상 없으니 둘다 시작
service httpd start
service mysql start

 

ㅇㅇ

그러하다

 

하고나니 블로그가 조금 빨라진 것 같기도..