[ 안드로이드 어플 만들기 ] 5. 가상단말로 어플 실행해보기



안드로이드 어플 만들기 



5. 가상 단말(virtual Device) 설정하기 




안드로이드 스튜디오에서 앞으로 어플을 만들고 실행해볼 수 있는 가상 단말을 설정해보겠습니다. 




안드로이드 스튜디오 오른쪽 상단에 있는 아이콘 중 Open AVD Manager를 클릭하면

가상단말관리화면(Android Virtual Device Manager)가 나타납니다. 





create virtual device 버튼을 클릭하여 새로운 가상 단말을 만들어봅시다. 





하드웨어 선택화면 입니다. Nexus 6을 선택하였습니다. 





가상 단말을 실행할 때 필요한 시스템 이미지를 선택합니다.

안드로이드는 기본으로 되어있는 Q를 추천한다고 해서 기본 선택 그대로 갑니다. 

오른쪽에 있는 파란색 다운로드를 선택하여 해당 이미지를 다운로드 받습니다. 


 



1기가 정도 사이즈 파일을 다운로드 받습니다. 






AVD 이름은 기본 이름 그대로 두고 완료를 누르면 설정이 완료되었습니다. 







AVD manager에 방금 입력한 가상 장비가 떠있습니다. 

오른쪽에 있는 삼각형 아이콘 버튼을 눌러 실행해봅니다. 






백신이 연결 시도에 대한 경고를 보내면 허용합니다. 

제대로 앱이 에뮬레이터에서 실행되는 것을 확인할 수 있습니다. 














워드프레스 라이트세일 wp-signup redirect 이슈 (https://53.**.**.**.xip.io/wp-signup.php?new=mydomain.com)






워드프레스 라이트세일 wp-signup redirect 이슈 




aws 라이트세일로 멀티사이트 워드프레스(multisite wordpress)를 설치했습니다. 

도메인 provider에 고정 주소도 설정하고 https 까지 적용이 잘 되었는데 

이상하게 자꾸 아래와 같은식으로 wp-signup.php 로 redirect로 되는 것입니다 ㅠㅠ



https://53.**.**.**8.xip.io/wp-signup.php?new=mydomain.com


일단 아래 설정 파일들을 다 확인해보고 온갖 삽질을 하다 간단하게 해결이 되었습니다 ㅠㅠ 


vi /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf


vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php



Bitnami 설정 툴인 bnconfig를 사용하면 ip나 도메인 설정을 간단하게 변경할 수 있다고 합니다. 
원칙적으로 Bitnami 어플리케이션은 boot time에 ip 주소나 도메인주소(hostname)을 업데이트 한다고 되어있습니다. 
그렇지만 나중에 수동적으로 변경할 경우 사용할 수 있는 툴이라고 합니다. 
사용법은 --machine_hostname 뒤에 ip 주소나 도메인 주소를 입력하면 됩니다. 

아래와 같이 새로운 도메인을 bnconfig를 사용하여 변경하니
이제  정상적으로 새로운 주소로 워드프레스 접속이 가능합니다. 

bitnami:/opt/bitnami/apps/wordpress$ sudo ./bnconfig --machine_hostname mydomain.com



참고 : 


https://seoulrain.net/2018/05/13/lightsailprimarydomainerror/


https://docs.bitnami.com/aws/faq/configuration/configure-custom-domain/


https://docs.bitnami.com/virtual-machine/faq/configuration/use-bnconfig/




가비아 도메인과 ip연결







가비아 dns 관리 사이트로 로그인합니다. 


아니면 My page에서 소유하고 있는 도메인을 클릭하면 나오는

도메인 관리 페이지에서 부가서비스 - 도메인 연결 에서 설정을 클릭합니다. 

  




DNS 설정에서 추가할 수 있는 레코드의 종류는 아래와 같습니다. 




A 레코드 (서브 도메인 생성)

  • A 레코드를 추가하면 서브 도메인을 생성하여 IP로 사이트를 연결하실 수 있습니다.
    예) test.gabia.com 생성을 원하시면, 호스트명에 test를 입력하시고 연결하시려는 사이트의 ip주소를 입력해 주세요.

MX 레코드(메일 설정)

  • MX 레코드는 메일 연결에 사용됩니다. 입력된 정보를 변경/삭제할 경우 해당 서비스 사용이 변경/중단될 수 있으니, 설정한 메일 정보를 반드시 확인하세요.

CNAME 레코드

  • CNAME 정보는 메일, 블로그 연결 등에 사용됩니다. 입력된 정보를 변경/삭제할 경우 해당 서비스 사용이 변경/중단될 수 있으니, 설정한 메일 정보를 반드시 확인하세요.
    한글 도메인은 사용 업체에 따라 CNAME을 설정하더라도 메일을 지원하지 않을 수 있습니다.

TXT 레코드

  • • SPF 레코드를 입력하고자 하는 경우 위 TXT 레코드란에 입력해 주세요.
  • • 사용하는 도메인이 스팸으로 차단되는 것을 방지하기 위하여 SPF 레코드 등록을 권장합니다.
  • • 올바른 SPF를 적용하기 위해 SPF Record 작성 도우미를 이용하여 SPF 레코드 등록을 권장합니다. [SPF Record 작성 도우미]
  • • SPF 레코드값의 올바른 입력 예 : 아래 2가지 예제와 같은 형식으로 입력하시기 바랍니다.
    v=spf1 include:spf.hiworks.co.kr ~all / v=spf1 ip4:211.243.118.50 ~all
  • • ※ TXT레코드에는 @, ^, <, >, ?, `(어퍼스트로피)를 입력할 수 없습니다.

SRV 레코드

  • ※ SRV 레코드 설정 시, 대상 값 입력 내용 끝에 “.”을 입력하셔야 정상 세팅됩니다.
    예) sipdir.online.lync.com.



DNS(Domain Name System)는 네트워크에 연결되는 리소스를 위한 디렉터리 서비스입니다. 인터넷 상에서 DNS 서버는 도메인 이름을 숫자 IP 주소로 변환하여 컴퓨터 및 기타 디바이스 같은 리소스를 확인하고 위치를 찾아내는 데 주로 사용됩니다. DNS 서버의 데이터베이스에는 이러한 변환을 수행하고 다른 기능을 활성화하는 데 사용되는 도메인 레코드가 포함되어 있습니다. 


예를 들어 A 레코드는 도메인 이름을 IPV4 주소로 매핑하는 데 사용되는 DNS 레코드 유형입니다. 

MX 레코드는 이메일을 라우팅하는 데 사용됩니다. NS 레코드는 해당 도메인에 대한 모든 이름 서버를 나열합니다.



도메인에 ip에 연결하는 것은 A 레코드를 설정하면 됩니다. 







설정을 누르면 서브 도메인별로 ip 연결을 할 수 있습니다. 




여기서 호스트에서 @은 도메인 그 자체로 www같은 prefix가 지정되지 않았을 때 사용됩니다. 


"The @ symbol refers to just the domain... Basically when no prefix is used, the @ symbol can be used"



예를들어 diary.com 으로 연결할 경우 @에 지정된 ip가 사용됩니다. 



상태 체크 하고 저장하면 몇 분 지나면 새로운 ip로 연결이 됩니다. 














  • 2018.07.02 23:47 ADDR 수정/삭제 답글

    비밀댓글입니다

ml tool 사용기



https://www.sparkcognition.com/



elasticsearch 7.3 설치하기






elasticsearch 7.3 설치하기 





이 포스팅에는 주기적으로 elasticsearch 설치하기 포스팅이 올라온다. 

가끔씩 검색 엔진 사용할 일이 있는데 그때마자 버전이 몇 개씩이나 올라가 있어서 결국 새로 설치하기 때문이다;;


일단 7 버전의 주요 변화는 한국어 형태분석기가 내장되었다고 하면서 

기존에 썼던 은전 한잎 플러그인이 더이상 호환이 안된다고 한다. 



그럼 일단 다운로드 받아서 실행해보자. 


버전별로 다운로드 받기 

https://www.elastic.co/kr/downloads/past-releases


문서 : https://www.elastic.co/guide/en/elasticsearch/reference/7.3/targz.html






wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz"



tar zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz






 wget "https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz"


  tar zxvf kibana-7.3.2-linux-x86_64.tar.gz





jvm.options


#-Xms1g

#-Xmx1g


-Xms10g

-Xmx10g



./elasticsearch 를 실행시키자 아래와 같은 오류가 나온다. 

이번엔 설정 방법도 달라졌나보다;;



[2019-09-30T20:12:48,973][INFO ][o.e.b.BootstrapChecks    ] bound or publishing to a non-loopback address, enforcing bootstrap checks

ERROR: [1] bootstrap checks failed

[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured




discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes 셋 중에 하나는 세팅하라고 해서

가이드 문서를 따라 seed_hosts 를 아래와 같이 설정해봤다. 


discovery.seed_hosts: ["127.0.0.1", "[::1]"]



그렇지만 이제 warning 메세지가 ㅠㅠ



[2019-09-30T20:39:00,499][WARN ][o.e.c.c.ClusterFormationFailureHelper] [dd] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and [cluster.initial_master_nodes] is empty on this node: have discovered [{dd}{FI-RklyNRN-xTlMDTDBgSA}{m592KpzdSTiLMt9RkycrdA}{ ... ; discovery will continue using [127.0.0.1:9300, [::1]:9300] from hosts providers and  .... {121.78.145.40}{121.78.145.40:9300}{dim}{ml.machine_memory=135097606144, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0


결국 검색해서 initial_master_nodes 까지 설정한 후에야 제대로 시작할 수 있었다. 


참고: https://linuxacademy.com/community/show/36639-elasticsearch-yml-changes-70/




node.name: master1

discovery.seed_hosts: ["127.0.0.1", "[::1]"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["서버ip"]


참고: https://linuxacademy.com/community/show/36639-elasticsearch-yml-changes-70/


# curl 'localhost:9200'

{

  "name" : "master1",

  "cluster_name" : "elasticsearch",

  "cluster_uuid" : "EgSc9q3mSC2URKZWBZC4FQ",

  "version" : {

    "number" : "7.3.2",

    "build_flavor" : "default",

    "build_type" : "tar",

    "build_hash" : "1c1faf1",

    "build_date" : "2019-09-06T14:40:30.409026Z",

    "build_snapshot" : false,

    "lucene_version" : "8.1.0",

    "minimum_wire_compatibility_version" : "6.8.0",

    "minimum_index_compatibility_version" : "6.0.0-beta1"

  },

  "tagline" : "You Know, for Search"

}





참고 : 

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/discovery-settings.html


nori : 


https://www.elastic.co/guide/en/elasticsearch/plugins/6.4/analysis-nori-tokenizer.html#analysis-nori-tokenizer

https://www.elastic.co/guide/en/elasticsearch/plugins/6.4/analysis-nori.html



curl: symbol lookup error - anaconda 이슈 해결




curl: symbol lookup error - anaconda 이슈 해결






curl 'http://localhost:9200/?pretty'

curl: symbol lookup error: /root/anaconda3/bin/../lib/libcurl.so.4: undefined symbol: SSLv2_client_method



???? 갑자기 뭐지????



# whereis curl

curl: /usr/bin/curl /usr/bin/X11/curl /usr/include/curl /usr/share/man/man1/curl.1.gz





전체 경로를 다 써서 /usr/bin/curl 'https://www.naver.com' 으로 하면 된다 

뭐지 -_-;;


anaconda의 curl이 기존에 설치되어있던 curl보다 우선적으로 잡히고 있는데 

여기서 에러가 나는 것 같다. 검색해보니 conda의 curl을 업데이트하거나 삭제하면 된다고 한다. 



It seems this occurs because (1) anaconda/bin is prepended to the $PATH, and (2) anaconda includes its own anaconda/bin/curl which then takes over subsequent curl invocations in the deploy script. This seems to be misconfigured by default for SSL, causing the error (apparently looking for CA data in a nonexistent path).



일단 conda curl 업데이트를 먼저 해봤는데 다행히 문제없이 잘 되어서 해결 완료 


 


conda update curl 





참고: 

https://github.com/ContinuumIO/anaconda-issues/issues/8971


https://github.com/lsst/lsstsw/issues/40







postgreSQL 사용법 - 테이블 업데이트




postgresql 테이블 업데이트 방법 


( how to update postgresql table ) 





다른 테이블 필드 값으로 업데이트 




update table2 as f set field1 = h.field1 from  table1 as h where f.field2 = 2 and f.id = h.id;



같은 테이블 필드를 분리해서 업데이트 




update 테이블이름 set 본번 = split_part(지번, '-',1);



특정 값으로 전체 필드 업데이트 



update 테이블이름 set 칼럼이름='문자열' 









[ postgreSQL] 다른 테이블 복사하기





PostgreSQL 사용법 


다른 테이블 구조 & 데이터 복사하기 








다른 테이블 구조와 데이터 복사하기 




CREATE TABLE newtable AS SELECT * FROM oldtable;






다른 테이블 구조만 복사하기



CREATE TABLE newtable ( LIKE oldtable ); 






데이터 & 인덱스 &  constraint 등의 정보 다 같이 복사하기 


아래 두개의 sql 문을 차례로 실행한다. 복사 속도는 위의 방식이 더 빠르지만 인덱스 정보가 같이 복사됨.



 


create table newtable (like "oldtable" including all);

insert into newtable ( select * from "oldtable");




다른 테이블의 일부 필드만 복사하기 





insert into items_ver(item_id, item_group, name)

select * from items where item_id=2;



insert into items_ver (item_id, name, item_group)

select item_id, name, item_group from items where item_id=2;












  • 1122 2018.02.28 11:35 ADDR 수정/삭제 답글

    초대장 하나 받고싶어요 도와주세요 ramen1225@naver.com

워드프레스 이미지 업로드 안되는 이슈




평소처럼 워드프레스 포스팅을 작성하면서 이미지를 첨부하려고 했는데 

갑자기아래 메세지가 뜨면서 실패하였다. 


The uploaded file could not be moved to wp-content/uploads/2019/09.



이럴 경우 원인은 두가지 정도가 있다. 


1. 서버 용량. 


여러 명이 같이 사용하는 디렉토리일 경우 용량이 꽉 경우 이미지 및 백업 등의 기능들이 수행되지 않는다. 


리눅스의 경우 df -h 로 각 디렉토리별 용량을 확인하자


2. 디렉토리 permission 문제. 


755 권한이 제대로 wp-content/uploads 디렉토리의 하위 디렉토리까지 주어졌는지 확인한다.   









python으로 데이터 수집하기 - 1) pycharm 설치 및 관련 패키지 설치하기




python으로 데이터 수집하기



pycharm 설치 및 패키지 설치하기 



request, beautifulSoup4를 사용해서 웹페이지 크롤링을 해보려고 합니다. 

pyCharm을 쓰고 있으면  IDE에서 간단하게 해당 패키지들을 설치할 수 있습니다.  

먼저 pyCharm 프로그램을 실행하고 File-Settings을 클릭합니다. 








Settings - Project에서 에서 Project Interpreter를 클릭하면

오른편에 +, - , ▲ 아이콘이 있습니다. 


+ : 패키지 추가

- : 패키지 삭제

▲ : 패키지 업데이트



+ 버튼을 눌러서 데이터 수집할때 사용할

 beautifulsoup4, request 패키지를 설치해봅니다. 


패키지 이름으로 검색하고 찾으면 클릭해서 Install Package 버튼을 누르면 끝입니다. 




request 패키지도 추가합니다. 



그럼 다음 포스팅에서는 실제로 웹페이지를 수집하는 

스크립트를 작성해보겠습니다. 



참고: 


https://engkimbs.tistory.com/611


https://engkimbs.tistory.com/613?category=762758


https://beomi.github.io/2017/02/27/HowToMakeWebCrawler-With-Selenium/