Mac Catalina 업데이트 후 SVN 오류

애플에서 Xcode11부터 SVN 미제공으로 Jetbrain 툴들에서 SVN 사용을 위해서는 별도로 SVN을 설치해줘야 가능 하게 되었다.

https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_release_notes

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

위의 명령을 통해 CommandLineTools을 다시 설치했도 되지 않을 경우 별도 SVN을 brew를 통해 다시 설치하면 된다.

brew install svn

Narcissist(나르시시스트/자기애적 인격장애)

나르시즘(自我陶醉, narcissism, 자기애성 인격장애)의 사전적 의미는 “이상화된 자신에 대한 자기애적 조작”을 의미하며 유래는 고대 그리스 로마 신화에 나오는 나르키소스에서 유래되었다고 한다.

에코와 나르키소스(Echo and Narcissus, 메라이와 수선화 / 고대 로마의 시인 오비디우스(Publius Ovidius Naso, BC 43~AD17년경)가 쓴 ‘변신이야기’에 실린 비극적인 두 남녀에 관한 구절)의 내용을 간략히 정리하면 다음과 같다.
나르키소스는 강의 신 케피소스가 물의 요정 리리오페를 겁탈해 얻게 된 아들로 소년 같기도 하고 성인남자 같기도 한 아름다운 외모로 수많은 젊은이들과 소녀들이 그를 열망했다. 그 중 나르키소스를 사랑한 에코는 나르키소스에게 구애를 하지만 모질고 매정하게 거절한다. 견디다 못 한 에코는 스스로 목숨을 끊고 만다.
나르키소스에게 역시나 거절당한 요정과 젊은이와 소녀들 가운데 한 명이 람누스에서 섬기는 네메시스(Nemesis)여신에게 복수해줄 것을 간절히 기도했다. “그도 이렇게 사랑하다가 사랑하는 것을 얻지 못하게 하소서!”라고… 여신은 기도를 들어주었다. 어느 날 나르키소스는 샘물 속에 비친 자신의 모습에 반해 눈을 뗄 수 없었다. 그는 샘물을 먹지도 마시지도 않고 그렇게 그의 곁에서 메말라갔다.

나르시시스트는 나르키소스의 영어식 발음으로 위 유래에서 관심있게 봐야 할 건 나르키소스가 스스로에게 반해 죽음에 이르게 되는 부분이 아닌 에코의 사랑에 대한 공감이 없고 감정을 이해하지 못하는 데 있다. 나르시시스트의 가장 큰 부분을 잘 설명하고 있다.

스티븐 존슨(심리학자)는 나르시시스트를 ‘과거의 상처에 대응하여 자신의 진정한 자기표현을 묻어버리고, 이를 고도로 발전한 보상적인 거짓된 자아로 대체한 사람’이라고 한다. 즉, 나르시시스트는 자기 자신과 사랑에 빠진 사람이 아닌 스스로가 만들어 낸 이상적 이미지와 사랑에 빠진 사람이다. 실제로 이들은 깊은 상처가 있으며 자존감이 낮고 현실에 직면하기보다 이상적인 자아의 아래 숨어 있다.

예의없고 무례 하며 나르시시즘

세상이 변해가며, 예의없고 무례 하며 나르시시즘을 가진 자가 넘쳐나고 있다. 그들과의 인연을 가진 사람 중엔 그 모든 걸 배려로 감내하며 연을 이어가기도 한다. 어쩌면 그들과의 연이 주는 이점이 많기때문에 그 쯤은 충분히 감내하는 것일지 모르지만, 결과적으로 그로 인해 또 다른 누군가는 상처를 받아야 하고 소비할 필요 없는 에너지를 쓰고 있을지 모른다.

세상의 사람을 바라보는 나의 시선이 아닌 세상이 나를 바라보는 시선에서 한 번 쯤 생각해보면 나도 저런 모습을 가지고 있을 것이란 생각을 해 보게된다. 그렇다면 나도 누군가에게는 상처를 주고 그들에게 불필요한 에너지를 허비하게 하고 있을 지 모른다. 이런 순환의 고리를 모두에게 득이 되는 선택은 무엇일 있을까… 아직은 삶의 경험과 완성되지 않은 내면을 가진 나로서는 어떤 결론을 도출하기 쉽지 않다.

단순히 생각해보면 그런 연을 만들지 말거나, 그런 연이 있다면 단절이 답이 될 수 있을 것 같다는 생각을 해 본다.

Gartner Identifies Top 10 Data and Analytics Technology Trends for 2019

Trend No. 1: Augmented Analytics

Augmented analytics is the next wave of disruption in the data and analytics market. It uses machine learning (ML) and AI techniques to transform how analytics content is developed, consumed and shared.

By 2020, augmented analytics will be a dominant driver of new purchases of analytics and BI, as well as data science and ML platforms, and of embedded analytics. Data and analytics leaders should plan to adopt augmented analytics as platform capabilities mature.

Trend No. 2: Augmented Data Management

Augmented data management leverages ML capabilities and AI engines to make enterprise information management categories including data quality, metadata management, master data management, data integration as well as database management systems (DBMSs) self-configuring and self-tuning. It is automating many of the manual tasks and allows less technically skilled users to be more autonomous using data. It also allows highly skilled technical resources to focus on higher value tasks.

Augmented data management converts metadata from being used for audit, lineage and reporting only, to powering dynamic systems. Metadata is changing from passive to active and is becoming the primary driver for all AI/ML.

Through to the end of 2022, data management manual tasks will be reduced by 45 percent through the addition of ML and automated service-level management.

Trend No. 3: Continuous Intelligence

By 2022, more than half of major new business systems will incorporate continuous intelligence that uses real-time context data to improve decisions.

Continuous intelligence is a design pattern in which real-time analytics are integrated within a business operation, processing current and historical data to prescribe actions in response to events. It provides decision automation or decision support. Continuous intelligence leverages multiple technologies such as augmented analytics, event stream processing, optimization, business rule management and ML.

“Continuous intelligence represents a major change in the job of the data and analytics team,” said Ms. Sallam. “It’s a grand challenge — and a grand opportunity — for analytics and BI (business intelligence) teams to help businesses make smarter real-time decisions in 2019. It could be seen as the ultimate in operational BI.”

Trend No. 4: Explainable AI

AI models are increasingly deployed to augment and replace human decision making. However, in some scenarios, businesses must justify how these models arrive at their decisions. To build trust with users and stakeholders, application leaders must make these models more interpretable and explainable.

Unfortunately, most of these advanced AI models are complex black boxes that are not able to explain why they reached a specific recommendation or a decision. Explainable AI in data science and ML platforms, for example, auto-generates an explanation of models in terms of accuracy, attributes, model statistics and features in natural language.

Trend No. 5: Graph

Graph analytics is a set of analytic techniques that allows for the exploration of relationships between entities of interest such as organizations, people and transactions.

The application of graph processing and graph DBMSs will grow at 100 percent annually through 2022 to continuously accelerate data preparation and enable more complex and adaptive data science. 

Graph data stores can efficiently model, explore and query data with complex interrelationships across data silos, but the need for specialized skills has limited their adoption to date, according to Gartner.

Graph analytics will grow in the next few years due to the need to ask complex questions across complex data, which is not always practical or even possible at scale using SQL queries.

Trend No. 6: Data Fabric

Data fabric enables frictionless access and sharing of data in a distributed data environment. It enables a single and consistent data management framework, which allows seamless data access and processing by design across otherwise siloed storage.

Through 2022, bespoke data fabric designs will be deployed primarily as a static infrastructure, forcing organizations into a new wave of cost to completely re-design for more dynamic data mesh approaches.

Trend No. 7: NLP/ Conversational Analytics

By 2020, 50 percent of analytical queries will be generated via search, natural language processing (NLP) or voice, or will be automatically generated. The need to analyze complex combinations of data and to make analytics accessible to everyone in the organization will drive broader adoption, allowing analytics tools to be as easy as a search interface or a conversation with a virtual assistant.

Trend No. 8: Commercial AI and ML

Gartner predicts that by 2022, 75 percent of new end-user solutions leveraging AI and ML techniques will be built with commercial solutions rather than open source platforms.

Commercial vendors have now built connectors into the Open Source ecosystem and they provide the enterprise features necessary to scale and democratize AI and ML, such as project & model management, reuse, transparency, data lineage, and platform cohesiveness and integration that Open Source technologies lack.

Trend No. 9: Blockchain

The core value proposition of blockchain, and distributed ledger technologies, is providing decentralized trust across a network of untrusted participants. The potential ramifications for analytics use cases are significant, especially those leveraging participant relationships and interactions.

However, it will be several years before four or five major blockchain technologies become dominant. Until that happens, technology end users will be forced to integrate with the blockchain technologies and standards dictated by their dominant customers or networks. This includes integration with your existing data and analytics infrastructure. The costs of integration may outweigh any potential benefit. Blockchains are a data source, not a database, and will not replace existing data management technologies.

Trend No. 10: Persistent Memory Servers

New persistent-memory technologies will help reduce costs and complexity of adopting in-memory computing (IMC)-enabled architectures. Persistent memory represents a new memory tier between DRAM and NAND flash memory that can provide cost-effective mass memory for high-performance workloads. It has the potential to improve application performance, availability, boot times, clustering methods and security practices, while keeping costs under control. It will also help organizations reduce the complexity of their application and data architectures by decreasing the need for data duplication.

“The amount of data is growing quickly and the urgency of transforming data into value in real-time is growing at an equally rapid pace,” Mr. Feinberg said. “New server workloads are demanding not just faster CPU performance, but massive memory and faster storage.”

More information on how to use data and analytics for competitive advantage can be found on the Gartner Data & Analytics Insight Hub.

https://www.gartner.com/en/newsroom/press-releases/2019-02-18-gartner-identifies-top-10-data-and-analytics-technolo

RSA 비대칭암호화를 위한 키 생성

리눅스 서버를 기준으로, 공개키와 개인키 생성에 대해 간략하게 설명한다.

  1. 개인키 생성
    – private.pem 이름을 가진 개인키를 생성할 경우 아래와 같이 한다.
    – 1024bit 길이의 키를 생성함 (bit길이가 길면 보안성 높음)
[root@moongk ~]# openssl genrsa -out private.pem 1024
Generating RSA private key, 1024 bit long modulus
................................................++++++
..........++++++
e is 65537 (0x10001)

  1. 공개키 생성
    – 개인키로 가지고 공개키를 생성
[root@moongk ~]#openssl rsa -in private.pem -out public.pem -outform PEM -pubout
writing RSA key

MySQL Replication 설정

MySQL 백업 및 분산처리를 위해 replication 설정이 필요한 경우 종종 발생하게 된다.
설정 방법은 그리 복잡하거나 어렵지 않으니 쉽게 적용 가능하다.

Master / slave 설정의 시작은 my.cnf 수정을 먼저하는데 id는 중복되어서는 않되며 Master는 CRUD를 모두 사용하며, slave 서버들은 읽기전용으로 사용 가능하다. my.cnf 파일을 열어 아래와 같이 수정한다.

# master
[mysqld]
server-id = 1
log-bin = mysql-bin
# log-bin은 지정하지 않고, log-bin 만 적어도 된다.
expire_log_days = 7
# bin 로그가 무한정 쌓이는 것을 방지하기 위해 위 옵션을 추가하는 것을 추천한다.

# slave1
[mysqld]
server-id = 2
read_only

# slave2
[mysqld]
server-id = 3
read_only

이제 Master 서버에 Replication에서 사용할 계정을 생성한다. ( 필자는 “moongk”로 생성)
~]# GRANT REPLICATION SLAVE ON *.* TO 'moongk'@'192.168.100.100' IDENTIFIED BY '비밀번호';
위와 같이 계정을 만들고 나면 시작 위치를 맞춰야 한다. 그러기 위해서는 Master DB 백업이 완료되기 전까지 DB접속을 차단하거나 LOCK걸어 두는 방법도 있다.
mysql> show master status\G
만약을 대비하여 File과 Position 값을 기록해 두는 것이 좋다.

이제 Slave 서버들 설정 진행할 차례로 Master 서버의 Dump를 복원한다. 복원한 후 Slave 서버들의 시작 위치를 설정한다.

mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.1', MASTER_USER='moongk', MASTER_PASSWORD='비밀번호', MASTER_LOG_FILE='mysql-bin.000000', MASTER_LOG_POS=120;

mysql> start slave;
mysql> show slave status\G
 

CentOS7 SVN(Subversion) 설 치 및 설정

CentOS7 기준으로 yum 기본 repository에는 1.7.x 버전이 설치 된다.
특별한 이유가 없다면, 1.7를 그대로 설치하도록 하겠다. 설치 방법은 아래와 같이 아주 간단히 설치 할 수 있다.

~]# yum install subversion

이제 설치가 되었으면, 저장소를 만들고 실행할 차례로 /home/svn 아래 설치하도록 하겠다.

가장 먼저 svn저장소를 생성하고, svnserve 파일에 옵션을 변경(기본 디렉토리 지정)한 뒤, 저장소 생성을 진행하도록 하겠다.

~]# mkdir /home/svn
~]# vi /etc/sysconfig/svnserve
/etc/sysconfig/svnserve 파일 수정한 모습

다음으로, SVN 서비스를 외부에서 이용할 수 있도록 방화벽 정책을 추가한다.
firewall-cmd --permanent --zone=public --add-port=3690/tcp
firewall-cmd --reload
firewall-cmd --list-all

방화벽 정책을 추가하고, 다시 로드 후 최종 등록확인까지 진행한 모습

또 다른 확인 방법은,
ps -ef | grep svn : SVN의 프로세스가 동작하는 것을 확인 할 수 있으며,
netstat -anp | grep svnserve : SVN의 포트를 확인할 수 있다. ( 기본 포트 3690 )


이제 저장소를 생성하고, SVN를 실행할 차례이다.

~]# svnadmin create --fs-type fsfs moongk
~]# chmod -R g+ws moongk

이제 저장소 생성이 되었으나 바로 사용할 수 있는 상태는 아니다.
사용가능하도록 저장소 설정을 해야 하는데, 설정 내용은 저장소에 접근할 수 있는 권한을 관리하는 파일들이다.

가장 먼저 svnserve.conf 파일을 수정해야 하는데, 위치는 위에서 추가한 저장소 하위 /conf/svnserve.conf 에 위치하고 있다. 주요 수정사항은 아래와 같다.
19line 부근: anon-access = read => none
27line 부근: password-db = passwd (주석처리 되어있으면 주석 해제)
34line 부근: authz-db = authz (주석처리 되어 있으면 해제 / 생략 가능)

다음으로 27, 34 라인 부근에서 지정하였던 passwd, authz를 지정하면 되는데 해당 설정은 파일을 열어 보면 쉽게 이해할 수 있을 것이라 생각되어 생략하도록 하겠다.

저장소 확인 명령은 svn list svn://127.0.0.1/moongk 와 같은 방법으로 확인 할 수 있으며, 서비스의 시작과 종료는 아래와 같이 할 수 있다.

~]# systemctl start svnserve #실행
~]# systemctl stop svnserve #중지
~]# systemctl restart svnserve #재실행
~]# systemctl enable svnserve #부팅시 자동 실행 지정

MySQL5.6 character-set 변경

MySQL를 설치하면 latin으로 되어 있어 utf-8로 변경하고자 한다면 /etc/my.cnf 파일 아래와 같이 수정하고 데몬을 다시 구동하면 된다.

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysql]
default-character-set = utf8

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set = utf8