Feature Selection이란?

데이터 공부를 하다 보면 자주 마주치는 개념 중 하나가 바로 Feature Selection이다.
말 그대로 필요한 정보만 뽑아서 모델이 더 효율적으로 학습할 수 있도록 도와주는 작업이다.

 

데이터 분석을 하다 보면 수십, 수백 개의 변수(feature)들을 다룰 때가 많은데,
그중에는 예측에 거의 영향을 주지 않는 변수들도 섞여 있다.

 

이러한 불필요한 변수를 덜어내고 의미 있는 것만 남기는 과정이 Feature Selection이다.


Feature Selection을 하는 이유?

요약하자면 성능, 해석력, 효율성까지 다 잡기 위한 과정이다.

  • 모델을 더 해석하기 쉽게 만들고
  • 학습 속도도 빨라지고
  • 차원이 줄어드니까 과적합 위험도 줄어들고
  • 특정 모델이 요구하는 데이터 형태에 더 잘 맞춰줄 수도 있다.

Feature Selection의 세 가지 방법

1. Wrapper Method (모델 기반 방식)

마치 "이 조합이 좋아? 저 조합이 더 낫나?" 하면서
여러 feature 조합을 직접 모델에 넣어보고 성능을 측정하는 방식이다.

 

특정 모델에 딱 맞는 최적의 feature 조합을 찾을 수 있다는 장점이 있지만,
연산량이 많고, 과적합 위험이 있기 때문에 주의해야 한다.

 

Wrapper Method에는 다음 방식들이 있다.

  • Forward Selection: 하나씩 feature를 추가하면서 모델 성능을 살펴봄
  • Backward Elimination: 모든 feature에서 시작해서 하나씩 제거
  • RFE (Recursive Feature Elimination): 영향 적은 feature를 반복적으로 제거

2. Filter Method (모델 없이 통계적으로)

모델에 넣어보기 전에, 그냥 feature 자체의 통계적 특성만 보고 판단하는 방식이다.

 

예를 들어

  • 피어슨 상관계수
  • 카이제곱 검정
  • 상호정보량(Mutual Information) 등등

이 방식은 계산이 빠르고 일반화에도 강하지만,
모델에 직접 넣어보는 게 아니기 때문에 예측 성능에 꼭 최적화되어 있다고 볼 수는 없다.


3. Embedded Method (모델 훈련 중에 알아서 고르는 방식)

이건 모델이 학습하면서 중요하지 않은 feature는 알아서 줄이는 방식이다.

 

예를 들면

  • LASSO (L1 정규화)
  • Elastic Net
  • Regularized Tree

등이 있다.

 

이 방식은 학습과 Feature Selection을 동시에 할 수 있어서 효율적이지만,
특정 모델에 너무 의존적일 수 있다는 단점이 있다.


상관계수란?

두 변수 사이에 관계가 있긴 있는 건지? 있다면 얼마나 강하게?
이걸 숫자 하나로 나타내주는 지표가 바로 상관계수이다.

  • +1: 완벽한 양의 상관
  • 0: 무관함
  • -1: 완벽한 음의 상관

상관계수가 높다는 건 → 두 변수가 서로 정보를 많이 공유한다는 뜻이다.


상관계수의 종류 세 가지

1. 피어슨 상관계수

  • 연속형 변수, 정규분포를 전제로
  • 선형관계가 클수록 값이 +1 또는 -1에 가까움

2. 스피어만 상관계수

  • 순위(rank) 간의 관계
  • 정규성 필요 X → 비모수적 방법
  • 관계가 비선형이라도 단조(monotonic) 하면 적용 가능
    • 단조 증가(monotonic increasing): X가 커질수록 Y도 커지는 경향
    • 단조 감소(monotonic decreasing): X가 커질수록 Y는 작아지는 경향
단조(monotonic)란?
변수 X가 증가할수록 변수 Y도 증가하거나, 감소하는 방향이 일정하게 유지되는 관계
즉, 관계의 방향이 한쪽으로만 가는 경우

3. 켄달 순위 상관계수

  • 일치하는 쌍(C), 불일치하는 쌍(D)의 수로 계산
  • 소규모 데이터에 강하고 이상치에도 덜 민감하다.

세 상관계수 비교 요약

종류 데이터 관계 유형 정규성 이상치 민감도
피어슨 연속형 선형 필요 민감
스피어만 순서형/연속형 단조 불필요 비교적 강건
켄달 순서형 단조 불필요 가장 강건

다중공선성? 변수끼리 너무 친하면 생기는 문제

회귀 분석을 할 때 설명변수들끼리 너무 비슷하면…
→ 모델이 헷갈린다 😵‍💫

 

예측력은 떨어지고, 해석도 어렵고, 가중치도 들쭉날쭉...

VIF(분산팽창지수) 값이 10 이상이면 위험 신호로 판단한다.

 

이럴 땐 Feature Selection 또는 차원 축소(PCA 등)이 필요하다.


카이제곱 검정 (Chi-square)

카이제곱 통계랑

범주형 변수 간의 독립성을 확인할 때 사용한다.

Observed vs Expected 비교해서 χ² 값 계산

  • χ²가 클수록 → 두 변수는 연관성이 클 가능성↑
  • p-value < 0.05 → 귀무가설 기각 → 의미 있는 변수
  • 귀무가설: X와 Y는 독립이다

자유도(DF)는 아래와 같이 계산한다.

  • DF = (행 수 - 1) × (열 수 - 1)

상호 정보량 (Mutual Information, MI)

상호정보량은 말 그대로,
X와 Y가 서로 공유하는 정보가 얼마나 되는지 알려주는 지표이다.

  • 값이 클수록 → 정보 공유 많음 → 중요한 변수
  • 0에 가까울수록 → 독립적

피어슨처럼 선형 관계만 보는 게 아니라 비선형 관계까지도 잘 잡아낸다.


변수 관계 예시로 감 잡기

1. 독립 예시 - 주사위

  • P(X=1) ~ P(X=6) = 1/6
  • P(Y=1) ~ P(Y=6) = 1/6

→ 서로 완전한 독립 (MI = 0)


2. 공부 시간(X) - 시험 점수(Y)

학생 공부시간 시험점수
1 1시간 50점
2 2시간 60점
3 3시간 70점
4 4시간 85점
5 5시간 90점

→ 양의 상관관계 명확! (피어슨, MI 모두 높게 나옴)


3. 직업(X) - 소득 수준(Y)

ID 직업 소득
1 DS 높음
2 DS 높음
3~6 DA 중간
7~8 DE 낮음
9 DS 높음
10 DA 중간
  • 직업 분포: DS 3명, DA 5명, DE 2명
  • 소득 분포: 높음 3명, 중간 5명, 낮음 2명

→ 카이제곱 검정 & MI 계산 모두 가능


마무리

이처럼 Feature Selection은 모델의 성능을 최적화할 뿐만 아니라 분석을 보다 효과적으로 만드는 중요한 과정이다.

 


 

Reference

https://en.wikipedia.org/wiki/Feature_selection

(2024년 작성 내용 일부 수정 후 재발행)

 

Database Organization이라는 수업을 듣게 되어 MySQL을 처음 사용해보게 되었다.

여기를 참고해서 MySQL을 설치한 뒤, Workbench를 설치했는데

 

초기 설정을 하는데 

Edit Conection 들어가주고

Store in Keychain 눌러서 비번 설정해주고 Test Connection 누르니까 이런 경고문이 떴다.

 



내가 설치한 MySQL은 8.2.0 버전이었고,

Workbench는 24.1.16 기준으로 가장 최신 버전인 8.0.36 버전이었다.

 

해결 방법 - MySQL 삭제 후 다운그레이드 된 버전 (mysql@8.0) 설치

1. 현재 설치된 mysql 확인

$ brew list | grep mysql

 

2. 위에서 확인된 mysql 삭제 (mysql@5.7 과 같이 다른 버전 확인될 경우 함께 삭제)

$ brew services stop mysql # mysql 서버 실행 중인 경우 중지
$ brew uninstall mysql # mysql 삭제

 

3. mysql 설치 경로 확인

$ which mysql

mysql 설치 경로가 /usr/local/bin/mysql 인 경우 여기 참고

 

4. mysql 설치 경로에서 mysql 관련 파일 제거

$ sudo rm -rf /opt/homebrew/var/mysql # mysql 데이터 디렉토리 삭제 (모든 데이터 삭제되므로 주의)
$ sudo rm /opt/homebrew/etc/my.cnf # mysql 설정 파일 삭제
$ sudo rm -rf /usr/local/var/mysql # 기타 파일 삭제

 

5. mysql@8.0 버전으로 재설치

$ brew install mysql@8.0

 

6. mysql@8.0 버전 link후 환경변수 등록

$ brew link --force --overwrite mysql@8.0
$ echo 'export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc

 

에러지옥 mysql;;;

오랜만에 mysql을 사용하려고 했는데 어김없이....그래 에러 없으면 서운할뻔 ^^

 

개발환경
MacBook Air M1, 2020
macOS Sequoia 15.3.1
Homebrew 4.4.25

 

 

첫 번째 난관

. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/dhcp198.merusouth113.iit.edu.pid).

터미널에 아래 명령어를 입력해서 mysql을 실행했는데 먼저 위와 같은 에러가 발생했다.

$ brew services start mysql

 

지난 번에도 겪었던 에러라 그냥 삭제 후 재설치했다..

재설치 후 위 명령어까지는 잘 실행 되었지만, 또 다른 문제가 발생했다.

 

두 번째 난관

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

 

해당 에러를 검색하면 아주 친절하게 해결 방법이 안내되어있는 게시글을 참고해서 해결해보려했으나,

나처럼 실패하신 분들이 있다면.. 이 방법을 바칩니다. 

 

⚠️ 에러 상황에 따라 해결이 안 될 수도 있습니다.



해결 방법

1. Homebrew를 통해 설치된 서비스들의 실행 상태를 확인하는 명령어를 입력한다.

$ brew services list

 

2. 실행 중인 서비스 모두 종료

$ brew services stop mysql
$ brew services stop mosquitto

 

3. mysql 재실행

$ brew services start mysql
$ mysql -u root -p

 

 

에러 발생 원인

Mosquitto와 MySQL이 충돌했을 걸로 예상된다. 원인은 다음 두 가지로 예상해볼 수 있을 것 같다.

1. Mosquitto가 MySQL의 기본 포트인 3306을 점유했을 가능성
2. Mosquitto 먼저 실행 후 MySQL을 실행을 시도해 정상적으로 실행 되지 않았을 가능성

 

 

앞으로는 $ brew service list 명령어를 통해 실행 중인 서비스 및 포트 점유 여부 또한 잘 살펴봐야할 것 같다.

 

reference: https://velog.io/@hyebinnn/MySQL-%EC%97%90%EB%9F%AC-ERROR-2002-HY000-Cant-connect-to-local-MySQL-server-through-socket-tmpmysql.sock

스프링 공부를 시작하기 위해 개발 환경을 구축하는 과정에서 여러 에러가 발생했다.

시작부터 아주 막막했던 경험을.. 나만 하길 바라면서 해결 과정을 간단히 정리한다.

 

1. IntelliJ IDEA 최신 버전 설치

기존에 2020 IntelliJ IDEA Community 버전이 설치되어있었는데, 이 버전에서 프로그램이 제대로 실행되지 않았다.

https://www.jetbrains.com/idea/download/other.html에서 최신 버전을 설치해준다.

기존에 설치된 버전에 덮어쓰기 해주면 된다.

 

2. Gradle 설치

터미널에서 아래 명령어 한 줄만 입력하면 된다.

$ brew install gradle

 

아래 명령어로 설치된 버전을 확인할 수 있다.

$ gradle --version

 

3. 최신 버전의 JDK 설치

IntelliJ로 이동해서 JDK 최신 버전을 설치한다. 내가 듣는 강의에서 jdk 17 버전 이상을 설치하라해서 17 버전을 설치했다.

Cmd+; 단축키로 Project Structure로 이동한 뒤, SDK > Download JDK를 누르면 아래 창이 뜬다. 아래와 같이 17 버전을 설치 및 적용한다.

 

Cmd+, 단축키로 Setting으로 이동한 뒤, Build,Execution,Deployment > Compiler > Java Compiler로 이동한다.

Project bytecode version을 17로 변경해준다.

 

이번엔 Build,Execution,Deployment > Build Tools > Gradle로 이동해서 Gradle JVM을 마찬가지로 방금 설치한 17버전으로 선택해준다.

 

4. Apply !

확인을 위해 스프링 테스트 코드를 실행하면 에러 없이 잘 돌아간다.

 

m1의 iterm2 초기 세팅 과정에서 powerlevel10k를 설치했다. (powerlevel10k 설치 방법)

모든 설치 과정을 마치니 다음과 같은 상태가 되었다.

위처럼 이런식으로 경로만 뜨고 username이 표시 안 됐다.

 

내가 원하는 거 :

 

찾아보니 .zshrc 파일에 아래 내용을 추가하라던데 이 방법으로는 내 문제가 해결 되지 않았다.

# .zshrc 파일
prompt_context() {
	if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
		prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
	fi
}

 

 

해결 방법 : .p10k.zsh 파일을 아래 과정에 따라 수정해준다.

$ vi ~/.p10k.zsh		# .pk10k.zsh 파일 열기

 

 

typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(

...

# context		# 해당 라인을 주석 처리

...

)

 

 

난 왼쪽에 표시하고 싶으니 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 에 context element를 추가해준다.

  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
	...
    
    context			# 해당 라인 추가
    
    ...
  )

 

 

username만 표시하고 싶으므로 형식도 바꿔준다.

  # Context format when running with privileges: user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' 	# 이 부분을 주석처리하고
  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n'		# 이렇게 바꿔준다. 아래도 마찬가지

  # Context format when in SSH without privileges: user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n'
  
  # Default context format (no privileges, no SSH): user@hostname.
  # typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n'

 

그럼 아래와 같이 된다.

 

 

 

참고: https://www.reddit.com/r/zsh/comments/e416xp/prompt_elements_with_powerlevel10k/

일단 나는 Mac m1 사용자고 homebrew로 mysql을 설치했다.

 

문제상황

MySQL 실행중, 외부에서 csv 파일을 가져와 테이블에 insert하려고 할 때 아래 코드를 실행 시켰더니 에러가 발생했다.

load data infile '/Users/home/Team.csv'
into table Team
fields terminated by ';'
enclosed by ''
lines terminated by 'n'
ignore 1 rows;

 

에러문: ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 

 

 

원인

M1 터미널에 MySQL을 설치한 뒤 아래 명령어를 사용해서 서버 관련 설정을 해주게 되는데,

$ mysql.server start

 

이때 --secure-file-priv 옵션을 설정해줘서 그렇다고 한다. 위 명령어를 터미널에 입력해 서버를 다시 시작하고, 옵션 설정을 다시 해주면 된다.

 

해결을 시도했으나 실패

서버 설정을 다시 해주려고 위의 명령어를 입력했지만 갑자기 아래와 같은 에러가 떴다. 

 

여기를 참고해서  다음 명령어를 시도했다.

// MySQL에 대한 소유 변경
$ sudo chown -R _mysql:_mysql /opt/homebrew/var/mysql
// MySQL 설치 위치 확인
$ brew --prefix mysql
// MySQL 및 폴더 권한 변경
$ sudo chmod -R 750 /opt/homebrew/opt/mysql
$ sudo chmod -R 750 /opt/homebrew/opt/

 

그러나......

 

해결 안돼서 그냥 여기를 참고해서 mysql을 삭제하고 재설치했다.

 

---

아무튼 다시 본론으로 돌아와서

 

해결 시도 1) infile 앞에 local을 붙여라

load data infile '/Users/yujimin/C:C++/Team.csv'
into table Team
fields terminated by ','
enclosed by ''
lines terminated by 'n'
ignore 1 rows;

 

응안돼~

 

해결 시도 2) my.cnf 파일에 "" 추가

아래 명령어로 my.cnf의 위치를 찾는다.

 

 

/opt/homebrew/etc/my.cnf

 

$ brew sercives restart mysql

 

 

 

???아또왜

 

에러 메시지

. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/dhcp198.merusouth113.iit.edu.pid).

 

해결방법

$ sudo rm -rf /opt/homebrew/var/mysql/

$ brew reinstall mysql

$ mysql.server start

$ mysql_secure_installation 

Would you like to setup VALIDATE PASSWORD component? -> n

Remove anonymous users? -> y

Disallow root login remotely? -> n

Remove test database and access to it? -> n

Reload privilege tables now? -> n

 

All done!

 

mysql 실행

$ mysql -u root -p

비번입력하면

mysql> 창 뜨면서 시작~

 

 

ref: https://cocoze.tistory.com/93

1. homebrew 설치

$ brew -v	// homebrew 설치 여부 확인

Homebrew 4.2.10과 같이 설치 버전이 뜨면 설치되어있는 것이다.

설치가 안 되어있다면 설치해주자.

 

2. 아래 명령어를 순서대로 입력해서 mysql을 설치 및 시작한다.

$ brew install mysql

$ mysql.server start

$ mysel_secure_installation

 

3. 기본 설정 창이 뜬다. 상황에 맞게 y or n를 입력해준다. 나는 여기를 참고해서 똑같이 해줬다.

 

4. mysql 실행하기

$ mysql -u root -p

 

 

 

ref: https://velog.io/@haleyjun/MySQL-Mac%EC%97%90-MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-M1%EC%B9%A9

데이터베이스 초보자는 설치 과정에서부터 난관에 봉착한다.

 

지금까지는 MySQL로 수업 내용을 커버해왔는데,

OLAP을 배우면서 CUBE라는 다차원 배열 데이터베이스에 대해 배우면서, MySQL에서는 지원하지 않는다는 것을 알게 되었다.

그래서 PostgreSQL을 설치한 뒤 'Initialize'를 눌렀더니

 

이런 경고문이 떴다.

 

해결 방법

먼저 터미널에 아래와 같이 입력한다. 5432 포트를 사용/수신대기 중인 프로세스에 대한 정보를 확인하는 명령어이다.

$ sudo lsof -i :5432

원인: postgress로 식별되는 다른 프로세스가 이미 5432 포트를 사용중이어서 위와 같은 에러가 발생했다.

 

해결: 터미널에 아래 명령어를 입력해 PostgreSQL 프로세스를 죽인다.

$ sudo pkill -u postgres

 

 

해결 ~

 

reference: https://dev.to/balt1794/postgresql-port-5432-already-in-use-1pcf

이 게시글에서는 아래 링크의 튜토리얼을 따라 M1에 openssl1.1.1을 설치할 때와 md5, sha1 소스코드를 컴파일할 때 겪은 문제를 정리한다.

https://indiespark.top/programming/compile-open-ssl-apple-silicon/

 

How to Compile OpenSSL 1.1.1 for Apple Silicon

The long-rumored ARM Mac is on the horizon. With this comes the big work of porting and re-compiling current applications. But many Mac App Store apps are dependent on OpenSSL, which doesn’t yet su…

indiespark.top

 

 

1. fatal error: 'inttypes.h' file not found

Building the ARM Half 단계에서 $ caffeniate make 을 입력했더니 다음과 같은 에러가 발생했다.

에러문

더보기

perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/crypto/bn_conf.h.in > include/crypto/bn_conf.h
perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/crypto/dso_conf.h.in > include/crypto/dso_conf.h
perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" include/openssl/opensslconf.h.in > include/openssl/opensslconf.h
/Applications/Xcode.app/Contents/Developer/usr/bin/make depend && /Applications/Xcode.app/Contents/Developer/usr/bin/make _all
cc  -I. -Iinclude -fPIC -arch arm64 -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -D_REENTRANT -DZLIB -DNDEBUG  -MMD -MF apps/app_rand.d.tmp -MT apps/app_rand.o -c -o apps/app_rand.o apps/app_rand.c
clang: warning: no such sysroot directory: '/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk' [-Wmissing-sysroot]
clang: warning: using sysroot for 'MacOSX' but targeting 'iPhone' [-Wincompatible-sysroot]
In file included from apps/app_rand.c:10:
In file included from apps/apps.h:13:
In file included from ./e_os.h:16:
In file included from include/openssl/e_os2.h:243:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/include/inttypes.h:21:15: fatal error: 'inttypes.h' file not found
#include_next 
              ^~~~~~~~~~~~
1 error generated.
make[1]: *** [apps/app_rand.o] Error 1
make: *** [all] Error 2

해결

"Xcode-beta.app"을 "Xcode.app"으로 수정하면 된다. 자세한 openssl 과정은 링크 참고.

"darwin64-arm64-cc" => {
    inherit_from     => [ "darwin-common", asm("aarch64_asm") ],
    CFLAGS           => add("-Wall"),
    cflags           => add("-arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"),
    lib_cppflags     => add("-DL_ENDIAN"),
    bn_ops           => "SIXTY_FOUR_BIT_LONG",
    perlasm_scheme   => "macosx",
},

 

 

2.  md5 관련 컴파일 에러

해결

아래 명령어를 입력해 경로를 변경 해준다.

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl@3/lib/

그런데 이 경우 x86_64에서는 해결이 되는데 arm64에서는 여전히 에러다..

.

.

.

해결!!!!!했다!!!

 

원했던 것

arm64 아키텍처에서도 openssl라이브러리 사용한 c프로그램 정상 실행

 

c프로그램 컴파일 시 에러문

3 warnings generated. ld: warning: ignoring file /usr/local/opt/openssl/lib//libcrypto.dylib, 
building for macOS-arm64 but attempting to link with file built for macOS-x86_64 Undefined symbols 
for architecture arm64: "_MD5_Final", referenced from: _main in md5-46c6b0.o "_MD5_Init", referenced 
from: _main in md5-46c6b0.o "_MD5_Update", referenced from: _main in md5-46c6b0.o 
ld: symbol(s) not found for architecture arm64

 

 

해결

위에서 openssl 설치할 때 만든 ~/openssl-1.1.1g-arm64 폴더로 이동해서 아래 명령어 순서대로 입력

./Configure CC=clang CXX=clang++ CFLAGS="-arch arm64" CXXFLAGS="-arch arm64" LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include"
make
make install

 

3. sha1 관련 컴파일 에러

 

c프로그램 컴파일 시 에러문

Undefined symbols for architecture arm64:
  "_SHA1_Final", referenced from:
      _do_fp in sha1-0d35b4.o
  "_SHA1_Init", referenced from:
      _do_fp in sha1-0d35b4.o
  "_SHA1_Update", referenced from:
      _do_fp in sha1-0d35b4.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

해결

컴파일 할 때 -lcrypto 옵션 붙여줘야 함ㅋㅅㅋ

 

행복해..사실 안 행복해... 이걸 대체 몇 시간을

 

 

 

Ubuntu 22.04를 설치했는데 한글 입력이 되지 않았다.

설정에서 언어를 한글로 바꾸는 등 별 뻘짓을 다 했는데 키보드 설정을 손 댔어야 했다.

 

설정 방법은 다음과 같다.

 

1. ibus-hangul 패키지 설치

한글 패키지가 설치 되어있지 않다면 터미널에 아래 명령어를 입력해 설치해준다.

$ sudo apt-get install ibus ibus-hangul

 

2. 아래 명령어를 입력해 IBus 기본 설정 창으로 이동해 입력기 탭에서 Korean-Hangul을 추가한다.

$ ibus-setup

 

3. [설정] - [키보드] 창으로 이동해 Korean (Hangul)을 추가한다.

 

4. 추가 후 [기본 설정]을 클릭하면 한영 전환 키를 확인하고 변경할 수 있다.

+ Recent posts