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/








postgresql 테이블 조인(join) 예시



1. 테이블 사이에 이름이 같은 필드가 없을 경우 


그냥 필드 이름을 나열하고 from 이후 두 개의 테이블을 나열하고 테이블 join 조건을 where에 채워주면 됨 



select name,  area, deposit_date as adate , deposit_min as aprice from table1, table2 where table1.id = table2.hid and type = '1';

postgresql 의 기본키 자동 증가





postgreSQL 사용법



기본키 자동증가 설정하기 



최근 버전


ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;



예전 버전 


1. 시퀀스를 생성한다. 



create sequence sequence_name owned by tablename.columname;



2. 기본키의 기본 값 수정



기본 키의 기본값에 nextval('sequence_name'::regclass) 를 추가한다. 


alter table test alter column id set default nextval('sequence_name');






shell script - for 문 사용 예시



쉘 스크립트에서 for문 사용 예시 




- 기본 



#!/bin/bash

for i in 1 2 3 4 5

do

   echo "Welcome $i times"

done





- 배열 사용하기 



#!/bin/bash

arrayname=(value1 value2) 


for i in ${arrayname[@]}

do

   echo "Welcome $i times"

done







- 숫자범위 사용하기 



#!/bin/bash

for i in {2000..2011};do echo " $i times";done




- 명령어 결과 사용하기 


#!/bin/bash

for entry in $stockdir/*;do echo " $entry times";done




- 일반 반복문 형식 사용하기


#!/bin/bash

for (( i=0; i<100; i++ ));do echo " $i times";done



#!/bin/bash

for (( i=0; i<100; i=i+5 ))

  do

    j=$((i + 4));

    echo "alter table 테이블이름 add column age_"$i"_"$j"_totalcnt bigint DEFAULT NULL;";

    echo "COMMENT ON COLUMN 테이블이름.age_"$i"_"$j"_totalcnt IS '"$i" - "$j"세 총 인구수';"

done