모도리는 공부중

2022.07. 내 궁금증, 검색한 것들, 공부 및 개발 일기 본문

내 지식 정리/날것 그 자체

2022.07. 내 궁금증, 검색한 것들, 공부 및 개발 일기

공부하는 모도리 2022. 7. 1. 10:15
728x90
반응형

2022.01.06 - [내 지식 정리/날것 그 자체] - 2022.01. 내 궁금증, 검색한 것들, 공부 일기
2022.02.05 - [내 지식 정리/날것 그 자체] - 2022.02. 내 궁금증, 검색한 것들, 공부 및 개발 일기
2022.03.01 - [내 지식 정리/날것 그 자체] - 2022.03. 내 궁금증, 검색한 것들, 공부 및 개발 일기
2022.04.04 - [내 지식 정리/날것 그 자체] - 2022.04. 내 궁금증, 검색한 것들, 공부 및 개발 일기
2022.05.02 - [내 지식 정리/날것 그 자체] - 2022.05. 내 궁금증, 검색한 것들, 공부 및 개발 일기
2022.06.07 - [내 지식 정리/날것 그 자체] - 2022.06. 내 궁금증, 검색한 것들, 공부 및 개발 일기

시간이 너무 빨리 가, 나이는 계속 먹어가고 있잖아. - 프라이머리, 입장정리 -

가 갑자기 떠오르는 아침이다. 정말 시간은 야속하게도 빠르게 흘러가고, 그러게 상반기를 지나 7월이 되었다. 어제보다 오늘 더, 성장하고 있는 중이겠지? 날마다 내 자신에 대한 걱정이 늘어간다.

- 1일 -

지금껏 업무를 진행하며 앞으로 협업하면 PR을 할 날도 오겠지 생각은 했지만 해본 적이 없었기에 잊었던 PR Review. 실은 어제와 그제 요청이 들어왔지만 요청하고 얼마 지나지 않아 빠르게 Merge를 진행하셨기에 사용해볼 일이 없었다. 그리고 오늘 재차 요청이 들어와서 후다닥 검색.

 

[Github] Pull Request를 통해 코드리뷰(Code Review)하는 법

혼자 개발하는 것이 아닌 여러 명에서 협업을 통해서 개발을 하는 과정에서 Git을 사용해서 하고 있을 것이다. 이 때 기능별로 브랜치를 만들거나 각자 팀만의 브랜치 전략에 맞게 브랜치를 나눠

devlog-wjdrbs96.tistory.com

생각보다 금방 할 수 있고, 상대가 무슨 작업을 하고 어떻게 하려는 건지 알 수 있어서 좋았다. 음음, 이렇게 관리하는 거구나. 이 분과 협업하면서 배울 점이 많겠다는 생각이 들어 두근거린다. 즐겁다. 나도 얼른 성장하자.

- 2일 -

새로 설치하고 작업을 진행하려는데 자꾸 에러를 일으켜서 사용할 수 없게 만든다. 이유가 뭘까?

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

시키는대로 해보아도 되지 않아서 검색해봤더니, 정책 설정을 해주는 것 같아보인다.

 

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 해결

npm install -g n 에러를 해결하려다가 블로그에 설명하는 것을 따라했다.그 후로부터 npm WARN config global '--global', '--local' are deprecated. Use '--location=global'라는 경고가 떴다.npm

velog.io

위 링크에 있는대로 해봤더니 이제는 단순 버전확인만 해도 뜨던 에러가 뜨지 않는다. 이제 공부 가능하겠지?

- 5일 -

불과 한 주 전까지만 해도 문제없이 호출해가며 테스트하던 페이지가 갑자기 열리지 않고 PENDING되는 버그가 발생했다. 이유가 무엇일까 싶어 열심히 찾아보니, mysql version 업데이트가 되면서 생긴 어떠한 부분 때문이었다.

 

[Error] Only_full_group_by 에러 해결 방법!!

안녕하세요. 오늘은 Mysql에서 발생한 에러를 정리해보겠습니다. 아래와 같은 에러 발생하였습니다. 에러발생 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains onaggregated column 's..

chobopark.tistory.com

비활성화를 진행하여 우선 해결하고, 코드로 해결 가능한 부분이 있을지는 추후 검토하여 적용하고자 한다. (이러면 안됐다. 역시 인생은 쉽게 가려고 하면 안돼..)

근데 적용하고 나니까 이런 에러가 났다.
https://stackoverflow.com/questions/35553432/error-handshake-inactivity-timeout-in-node-js-mysql-module
config 파일을 손대봐줘야 한단 소리인데 디폴트가 몇이길래 그러지? 하고 뒤져보니,

디폴트가 10초란다. '쿼리가 10초를 넘어간다고??? 그럼 쿼리에 문제 있는 거야!!' 라는 친구의 말에 따라 다시 쿼리를 보면서 아까 떴던 에러를 다시 한 번 생각해보니, group by에 안 들어간 field에 대해서 언급된 부분이 있었다. 바보.. 쿼리를 한 번 더 점검해볼걸.. 나는 시스템 세팅을 다시 되돌리러 가야될 판국이 되었다. (이렇게 공부하는구나 또.. 하하하하)

일단, sql에서 group by를 다시 공부할 필요성을 느껴진다. 그리고 친구가 피눈물 흘리며 정리한 글을 보며 깨달음을 얻는다.

 

[Mariadb] Window functions not working in ONLY_FULL_GROUP_BY mode II

oracle을 사용했던 유저로써 window function은 참으로 유혹적인 기능이다. mysql과 mariadb에서도 사용이 가능하다는걸 알게 되고 너무나도 행복했다. 그래서 바로 사용을 하려고했으나, ERROR 1140 (42000):

24hours-beginner.tistory.com


그리고 다시 활성화시키기 위해 찾다가 방법 해결에 대한 관련 글 발견

 

mysql GROUP BY (only full group by)

 MYSQL GROUP BY(incompatible with sql_mode=only full group by)에 대해 알아보자 로컬 및 개발 환경에서 멀쩡히 돌아가던 쿼리가 테스트 서버에 올리고 나니 다음과 같은 Exception을 뱉었다. com.mysql.jdbc...

developyo.tistory.com



- 8일 -


예전에 내가 궁금해 했던 payload를 암호화하는 방법. 그냥 단순히 payload에 담기면 안될 정보가 있었던 거였지만 그걸 모르던 나였기에 '이 정보는 payload에 담겨야하는 정보인가보다' 생각하면서, 그럼 보안성을 키우기 위해 payload를 암호화할 수 있는 방안을 생각해야겠다며 검색하여 공부하겠다고 킵해둔 적이 있었다. 그때의 기억을 잊지 않고 언젠가 꼭 공부하여 적용하리라 생각하고 있었는데 오늘 정처기 공부를 하면서 발견한 ESP가 연관 있는 것으로 보인다.

일단 정처기에 적혀있는 ESP 정의를 정리하자면,
ESP(Encapsulating Security Payload): 암호화 알고리즘을 활용한 캡슐화 기반 페이로드 기밀성을 제공하는 프로토콜


이번 주말에 정처기 공부 뿐만 아니라 다른 서버에 파일 저장하고 불러오고 하는 거 꼭 구현할 수 있도록 알아내고 만다..!
우선.. 이건 ssh 환경에서 시도하는 방식 같으니 킵.

 

로컬에서 서버로, 서버에서 로컬로 파일 전송

Git에 있는 소스를 서버에 다운받아서 Maven 인스톨하거나, Zip파일을 압축 해제해서 설치하려는 상황이 많이 발생한다. scp 명령어를 통해 로컬서버 원격서버로 파일을 전송할 수 있다. 원격 서버 -

mongsil-jeong.tistory.com



이 방식은 rest api 기반으로 파일 저장을 받을 서버에서도 rest api 구현이 되어 있어야 함

 

[REST API] REST 기반 파일 업로드와 다운로드 구현하기

이 글에서는 REST API 기반 파일 업로드와 다운로드 구현방안을 설명합니다. REST 서버와 REST 클라이언트를 이용해 기능을 구현했습니다. REST 기반 파일 업로드와 다운로드 구현 REST API 구현 시 파일

blog.hjf.pe.kr


각 방식에 대한 고찰이 담겨 있음

 

[알고리즘] 원격서버로의 파일업로드 / 파일업로드/썸네일로 인한 오류 발생 가능성 해소..

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=50378&sca=%BE%CB%B0%ED%B8%AE%C1%F2&page=7 우선 이글은 알고리즘만 올립니다. 1. 원격서버로의 파일 업로드 A서버는 웹서버이고, B..

blog.daum.net

 

- 11일 -

그렇게 집안일하고 뒹굴며 주말이 지나가서 슬프다... 오늘 오전도 집중력 끌어올리는 데 시간을 한참 썼다.
저번주에 회사에서 검색하며 알아보던 글들을 여기에 전부 기록해야겠다.

이게 주말에도 읽었던 글이지만 회사에서도 읽었던 글로, ftp와 nfs에 대해 고민을 하게 만들었던 글이다.

 

[알고리즘] 원격서버로의 파일업로드 / 파일업로드/썸네일로 인한 오류 발생 가능성 해소..

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=50378&sca=%BE%CB%B0%ED%B8%AE%C1%F2&page=7 우선 이글은 알고리즘만 올립니다. 1. 원격서버로의 파일 업로드 A서버는 웹서버이고, B..

blog.daum.net

원래 저 글을 읽기 전에 여러 글들을 읽어보고 있었다.

 

OKKY | 다른 서버에 이미지를 저장 할 수 있나요?

a서버에 서비스 중인데 보통의 경우라면 클라이언트가 파일첨부를 하면 a서버에 저장이 되는데 b서버에 저장을 시킬 수 있나요? 찾아보니 파일 저장 처리 후 a서버에서 b서버로 ftp 전송을 하라고

okky.kr

그리고 이 글은 통신을 이용하는 방법

 

nodeJs] 첨부 파일를 다른 서버로 전달하기

첨부파일을 다른 서버로 포워딩 하기 첨부 파일을 아래 그림과 같이 API server에서 받아서 다른 내부 서버에 전달을 하려고 합니다. API 서버에는 따로 첨부파일 정보를 저장하지 않고, buffer를 바

lahuman.jabsiri.co.kr

위 글에서는 express-http-proxy라는 라이브러리를 이용하여 다른 서버와 통신하고 있다.


git pull해서 돌리는데 자꾸 안돼서 검색

 

ETIMEDOUT 에러 원인 및 해결방법

NodeJs 프로젝트를 진행하다가 Sequelize를 활용해서 remote MySQL server에 연결을 진행하려고 했었는데 Error: connect ETIMEDOUT 에러가 나왔다. 에러코드 그대로 연결이 timeout 되었다는 말인데, 이 에러는..

buyandpray.tistory.com

dbConfig 파일을 확인해보니 옛날 파일을 연결해놓으셨다.. 또르르.. 분명 최신파일 공유해드렸는데..


퇴근 후 정처기 공부 중..

 

데이터베이스 암호화 - 해시넷

데이터베이스 암호화(database encryption) 또는 간략히 DB 암호화란 데이터베이스의 내용을 암호화하는 것을 말한다. 주민등록번호, 신용카드번호 등 민감한 개인정보를 데이터베이스에 저장한 경우

wiki.hash.kr

아래는 읽어도 아직 무슨 말인지 잘 모르겠다

 

IPSEC이란...

1. IPSEC 개요 IPSec은 Internet Protocol Security의 약어로서 network 통신중 network layer...

blog.naver.com


민감 데이터의 익명화 처리 방안으로는 가명 처리(가명화), 총계 처리(Aggregation)/평균값 대체(Replacement), 범주화(Data Suppression), 데이터값 삭제(Data Reduction), 데이터 마스킹(Data Masking)이 있다.

위 부분을 읽으면서 은행 근무 당시 교육 받을 때 특정할 수 없는 회원의 이름과 카드번호 계좌번호 등이 마스킹된 데이터를 가지고 전산 시스템을 실습했던 기억이 났다. 일정 주기로 데이터를 마스킹 변환 작업을 거쳐 실습용으로 db가 본떠진 느낌이었는데 생각해보니 해당 데이터를 개발용으로도 사용할 수 있겠구나 하는 생각이 갑자기 들었다. 실제로 지금 내가 개발중인 작업물들도 서버를 전부 정리해서 실시간 서비스되는 형태로 운영된다면 이렇게 운영을 해야할 수 있겠구나 하는 생각이 들어 내 머리속을 정리하고 기록을 남기고자 이렇게 글을 또 쓰고 있다.

- 13일 -

외장하드로 백업 뜨는데 이게 뜬다

 

0x8007045D: I/O 장치 오류 문제 해결 방법

아래 그림과 같은 종류의 경고 메시지가 뜨면, 우선 무조건 USB케이블이 제대로 잘 접속 되어 있는가 다...

blog.naver.com

이것도..

 

[4 가지 방법] '세마포 제한 시간이 만료되었습니다' 오류 수정-EaseUS

두 가지 경우에 '세마포 제한 시간이 만료되었습니다'오류가 발생될 수 있습니다. [1] 오류 0x80070079 : 세마포 제한 시간이 만료되었습니다. [2] 위치에 액세스할 수 없습니다. 세마포 제한 시간이

www.easeus.co.kr


지금 내가 할 업무는 아니지만 그래도 알아두면 언젠가 도움될 것 같아서 남겨두는 기록
rosbag data를 image나 video file로 exporting시키는 방법에 대한 글

 

rosbag/Tutorials/Exporting image and video data - ROS Wiki

Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. How to export image and video data from a bag

wiki.ros.org

 

- 14일 -

windows 서버에 있는 파일의 크기가 너무 커서 ftp로 꺼내오고자 작업해보았다

 

Windows Server 2019 - FTP서버(IIS) 설치 및 운영

Windows Server 2019 - FTP Server (IIS) FTP Server (IIS) FTP(File Transfer Protocol) Server는 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜입니다. TCP/IP 통신 포트는 21(Port)을 사용합니..

foxydog.tistory.com

안되고..

 

windows server 2019 FTP 설정 및 방화벽 설정

Windows server 2019 에서 ftp 설정에 관한 글입니다. 지정사용자를 설정하는 ftp 설정 방법입니다.   설치는 간단하니 넘어가도록 하겠습니다. ( 역할 및 기능추가에서 설치하면 됩니다 )   1.FTP 설정  

blog.servis.co.kr

안된다

대체 왜... 재부팅해야하나? 하.. 재부팅...?!!!

 

Windows Server 2019에서 FTP 서버 설치 및 구성

1 단계 : 서버 관리자 시작 모든 Windows Server 역할과 마찬가지로 설치를 시작하려면 서버 관리자로 이동해야합니다. " Windows "키를 누르고 아직 열지 않은 경우 " 서버 관리자 "를 검색하십시

kogoza.tistory.com

services app을 열어서 Microsoft FTP Server - Restart를 해줬더니 됐다.

됐다

됐다!!!!!

뭐든 재부팅을 잊지 말자. 안 된다? 재부팅방법을 찾자. 후후후.

- 15일 -

정처기 공부 중 궁금한 것 링크
5정규형에 속하는 '조인 종속'에 대한 궁금증

 

정규화 정리

...

lee-seul.github.io


반 정규화 절차에서 다른 방법 유도에 속하는 뷰 테이블. 학원 다닐 당시 관심 있게 보았지만 이게 무엇인지 정확히 공부하지 못하고 실제 사용해보지 못하였기에 궁금증이 컸었다. 하지만 어떻게 검색해서 찾아야하는지 제대로 알지 못해 미련을 뚝뚝 떨어뜨리며 남겨두었던 궁금한 개념이었는데 오늘 이렇게 찾았다. 아싸.

 

[DB] VIEW 테이블이란 ?

1. VIEW 테이블이란? - 하나의 가상 테이블이라고 생각하면된다. - 실제 데이터가 저장되는것이 아니다, 뷰를 통해 데이터를 관리할 수 있다. - VIEW와 TABLE과의 차이점은 그냥 TABLE은 실질적인 데이

helloworld92.tistory.com

 

 

데이터베이스 | 뷰 테이블(View table)

SQL에서 view는 SQL 쿼리의 결과 셋을 기반으로 만들어진 일종의 가상 테이블이다.view는 실제 테이블과 같이 행과 열을 가지고 있는데, 이 때 뷰에 속한 각 필드들은 데이터베이스에 들어 있는 하나

velog.io

읽다보니 union과 group by에 대한 언급이 있다. 이전에 친구에게 union 언급을 잠깐 받았었기에 궁금증 도짐.

 

[SQL] 쿼리문 합치는 방법 (UNION, UNION ALL)

 두 개 이상의 SQL 쿼리문을 합치는 방법에 대해 알아보자.  부득이하게 여러개에 쿼리문을 사용하여 하나에 데이터로 출력해야되는 경우가 존재한다. 이럴 때 사용하는 방법이 바로 UNION 연산

sesok808.tistory.com

 

[Oracle]SELECT 합치기-유니온(UNION,UNION ALL)

조회한 다수의 SELECT 문을 하나로 합치고싶을때 유니온(UNION) 을 사용 할 수 있습니다. UNION 은 결과를 합칠때 중복되는 행은 하나만 표시해줍니다. UNION ALL 은 중복제거를 하지 않고 모두 합쳐서

dpdpwl.tistory.com

union, union all을 읽다보니 group by와의 차이가 궁금해지면서 두 개를 결합해서 쓴다던데 그 부분이 궁금해져서 검색했다. (하지만 정처기 공부가 먼저니 킵해두도록 하자.)

 

mysql group by와 union all을 응용해 봅시다.

 nameAB 테이블에 저장되는 레코드들은 아래와 같은 컬럼들을 가집니다. key는 하나도 없습니다.  이 문제를 생각해 봅시다. name 별로 A가 최대일 때의 B값, A가 최소일 때의 B값을 가져와서 그것의

codingdog.tistory.com

클러스터링 (반 정규화 시도 전 유도하는 다른 방법2)

 

[데이터베이스] 클러스터링(Clustering)

클러스터링(Clustering) - DB 분산 기법 중 하나로 DB 서버를 여러 개 두어 서버 한 대가 죽었을 때 대비할 수 있는 기법 1) Active - Active Clustering DB 서버를 여러 개 구성하는 데, 각 서버를 Active 상태..

dheldh77.tistory.com

반정규화 전 유도하는 다른 방법에 대해서 좀 더 궁금해져서 검색(했는데 엄청난 사이트를 알게 된 느낌)

 

반정규화와 성능

1. 반정규화를 통한 성능향상 전략 가. 반정규화의 정의 반정규화(=역정규화) 용어는 조금 다르게 표현되어도 그 의미는 동일하다. 여기에서 반정규화는 ‘반(Half)’의 의미가 아닌 한자로 반대

dataonair.or.kr

 

[SQLD] 정규화와 반정규화의 차이점 분석

정규화는 기본적으로 데이터 중복성을 제거해주기 떄문에 (쪼개주기 때문에) 성능 자체는 향상되는 특징을 가지고 있습니다. 하지만 그만큼 조인이 많이 발생하기 때문에 그에 따른 성능저하가

okky.tistory.com

 

- 17일 -

 

식별자 (UID, Unique Identifier)

식별자 (UID, Unique Identifier) 1. 하나의 Entity를 대표하는 속성으로 여러 개의 속성이 하나의 ...

blog.naver.com

 

 

참조 무결성 및 Cascade

참조 무결성 (Referential Integrity)이란 무엇인가? 참조 무결성은 관계형 데이터베이스 모델에서 2개의 관련 있는 관계 변수 간의 일관성을 말합니다 '주어진 속성 집합에 대해 한 관계에 나타나는

yusang.tistory.com

위 글 참조 무결성 및 Cascade에서 언급된 튜플 삭제를 막고자 세팅하는 null값은 참조무결성 제약조건 중의 하나로
참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 null 값을 집어 넣는 Nullify라는 옵션이다.

이건.. 위 블로그에서 음? 오 나 전에도 헷갈렸던 거 다시 봐야지~ 하면서 읽은 where, having 글.

 

SQL Having, Where 차이

SQL Having, Where 차이 위와 같이 instructor라는 테이블이 있습니다. SELECT dept_name, AVG(salary) AS avg_salary FROM instructor GROUP BY dept_name HAVING AVG(salary) > 42000; 집계 함수와 GROUP B..

yusang.tistory.com

초반부 개념만 읽어본 인덱스 설계

 

인덱스 설계

인덱스 기능 인덱스는 어떤 종류의 검색 연산을 최적화하기 위해 데이터베이스상에 로우들의 정보를 구성하는 데이터 구조이다. 인덱스를 이용하면 전체 데이터를 검색하지 않고 데이터베이스

dataonair.or.kr

 

8. 인덱스 설계 - [종료]구루비 DB 스터디 - 개발자, DBA가 함께 만들어가는 구루비 지식창고!

08 인덱스 설계 (1) 가장 중요한 두 가지 선택 기준 인덱스에 사용할 컬럼을 선택하고, 순서를 정하는 데는 중요한 기준이 두 가지 있다. 인덱스에 사용할 컬럼을 선택하고, 순서를 정하는 데는 중

wiki.gurubee.net

클러스터 설계. 설계 방법에 대한 것은 나중에 찾아봐야겠다.

 

[정보처리기사 필기 핵심] - 클러스터 설계

[정보처리기사 필기 핵심] - 클러스터 설계 정보처리기사 필기 대비/ key point 정리 / 요약 정리 / 핵심 ◎ 클러스터 개요 클러스터는 데이터 저장 시 데이터 엑세스 효율을 향상시키기 위

levelup-teddybear.tistory.com

 

- 18일 -

오늘은 마리아디비 업그레이드를 마치고 기존에 저장해둔 스크립트를 백업해두었다가 다시 활용할 수 있도록 설정해야겠다. (다른 메모장에 정리..)

우분투 서버에 스토리지용 디렉토리를 하나 생성하여 백업해둔 파일 이관을 진행하려는데, 해당 디렉토리의 권한이 내가 접속하는 권한이 아닌 root 권한이다보니 이에 대해 서버가 'permission denied'를 외쳐버렸다. 아.. 권한이 없구나. 그럼 내가 어떻게 해줘야 하나 검색했더니 디렉토리 생성 또는 파일 작성 시 권한 거부에서 방법을 두 가지를 권하는데 그 중에 chown이라는 녀석이 궁금해졌다.

 

Linux - chown 명령어로 소유자 변경하는 방법

chown 명령어는 파일의 Owner 또는 Group을 변경하는 명령어입니다. 재귀적으로(Resursive) 하위 폴더 소유자 모두 변경하려면 chown 명령어에 -R 옵션을 주면 됩니다. 예제를 통해 사용방법을 자세히 알

codechacha.com

너무나.. 정말이지 너무나 유용한 녀석이다. 고마워!!
그리고 파일 삭제를 위해 사용했던 명령어

$sudo rm -r [directory_name]

 

- 19일 -

압축 해제를 일일히 해주려니 너무 귀찮아서 분명 한 번에 개별 폴더 생성해서 하는 방법이 있을건데 어떻게 해야할까 고민하며 검색했더니 역시나 방법이 있었다.

 

[Linux] 현재 폴더 내 모든 zip 파일 압축 풀기

linux 현재 폴더 내 모든 zip 파일 압축 풀기 written by HuscarL  설명 현재 폴더 내 모든 zip 파일의 압축을 푼다. (폴더 생성) for file in `ls *.zip`; do unzip "${file}" -d "${file:0:-4}"; done 현재 폴..

huscarl.tistory.com

근데 아무리 해도 도저히 되지가 않는 거라..

bash: syntax error near unexpected token `do'

이해가 안 가서 명령어를 있는 그대로, 시키는 대로 얌전히 해봤더니 드디어 됐다.
안됐던 이유는 아주아주 간단했다. 내가 계속 관리자 권한을 얻어서 진행하느라 'sudo'를 붙여서 입력하고 있었는데, 안 그래도 되는 거였다. sudo를 제외하고 심플하게 for문을 입력해주었더니 해결 완료. 헉.
이걸로 날려보낸 시간이 또 너무 아깝지만 이렇게 기억하기 위해 여기에 기록해본다.

테이블을 생성했는데 보이지 않는 에러가 발생하여 어떻게 할까 하다가 에러코드를 그대로 검색해보았다.

 

Mysql 1050 Error "Table already exists" when in fact, it does not

I'm adding this table: CREATE TABLE contenttype ( contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT, class VARBINARY(50) NOT NULL, packageid INT UNSIGNED NOT NULL,

stackoverflow.com

슈뢰딩거의 테이블을 가지게 되었다고 한다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그래.. autocommit 상태인데 커밋이 안 되었을리도 없고 이상하다 했어 ㅋㅋㅋㅋㅋ 왜 깨졌을까?

.
.
.

왜긴 왜야. 깨진 적도 애초에 없어. 너가 ip를 잘못 찾았는걸?
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


이 친구가 에러 해결에 많은 도움이 되네..

 

MariaDB Error Codes

MariaDB error codes reference list.

mariadb.com

 

- 20일 -

급 궁금해서 열어본 sql_mode
server1 - mariaDB 10.8.*

server2 - mysql 5.7.38

local - mariaDB 10.6.4

ㅋㅋㅋㅋㅋ 난 가진 게 없네 아무것도.. 이러니 났어야 할 에러도 안 나지..
내게 있어 가장 시급(?)한 ONLY_FULL_GROUP_BY 모드를 추가한다.

근데 이렇게 하니까 에러 쨔잔

왜 그런고 봤더니.. 해당 부분은 client가 아닌 mysqld에 추가해줘야 했다.

추가 후 조회를 하니까 분명 아까까지만 해도 텅 비어있던 부분이 가득 찼다.

그리고 내가 추가한 모드는 없다..? 이상함을 느끼고 마리아디비를 껐다 켰더니, 내가 추가한 모드만 딸랑 하나 있는 것을 발견했다. 그리고 아까 내가 아무것도 없는 것을 보았던 이유도 알게 됐다.

SELECT @@sql_mode;

를 해야했는데,

SELECT @sql_mode;

를 해서 아무것도 없는 값을 얻을 수 있던 것이었다.
my.ini 수정한 내역을 지우고 다시 mariadb를 껐다 켜니 원상태로 복구됐다. 다른 방법을 시도해보자.
일전에 내가 시도했던 방법을 여기에 글링크로 남긴줄 알았는데 찾아보니 없다. 비슷한 명령어를 다시 검색하여 찾은 글을 남긴다. (질문이 딱 내가 원하는 그 방법이다)
https://stackoverflow.com/questions/55674941/how-to-enable-only-full-group-by-in-mysql

 

How to enable ONLY_FULL_GROUP_BY in MySQL

I have disabled ONLY_FULL_GROUP_BY by using SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));. Now I want to restore the default settings. Is it possible to enable the

stackoverflow.com

이제 디비를 재시작하고 확인해보면.. 역시 또 사라졌다. 음.. 완벽한 방법은 역시 my.ini에 고정값을 심어버리는 방법이 맞을 것 같다. 기존에 설정되어 있는 것까지 함께 적어서 말이다.
현재는 디비를 재시작할 일이 없으므로 이렇게 concat해놓은 상태로 사용하고, 나중에 session과 global, 그냥 sql_mode등에 재공부해서 바꾸든지 하자.

 

[MySQL] sql_mode로 알아보는 시스템 변수 permanent, runtime설정

MySQL 서버에서는 운영에 필요한 구성설정에 이용되는 다양한 시스템 변수가 존재합니다. MySQL 서버의 버전에 따라 각 시스템 변수는 기본값이 존재하고, 별도의 설정을 통해 값을 변경할 수 있습

blog.jiniworld.me


이제 서버 패스 테스트를 위해 맛간(?) 서버에서 테스트하려는데, 맛이 가서 설정이 엉망이 된 것을 확인하고 멀쩡하지만 사용되지 않고 있는 서버에 미리 고도화 작업을 위해 설정한다 생각하고 세팅한다.

 

Ubuntu18.04 NVM으로 NODE 설치하기

개요ubuntu18.04에 NVM으로 Node를 설치해보겠다. ubuntu에 node를 설치해보신 분들을 알겠지만, 이게 여간 귀찮은 것이 아니다. ubuntu에 패키지 메니저인 apt로 node를 설치할경우 2019.12.28 현재 기준으로 no

www.hanumoka.net

현재 프로젝트들이 node v14 기준이므로 서버 node도 14로 세팅한다.

modory@Home:/lib$ nvm install 14
Downloading and installing node v14.20.0...
Downloading https://nodejs.org/dist/v14.20.0/node-v14.20.0-linux-x64.tar.xz...
########################################################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.20.0 (npm v6.14.17)
Creating default alias: default -> 14 (-> v14.20.0)
modory@Home:/lib$ node -v
v14.20.0



- 23일 -

스택, 힙, 메모리, 코드 개념

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

백도어 탐지기법 중 프로세스 및 열린 포트 확인법

 

리눅스 netstat, ps

netstat 네트워크 연결상태, 라우팅테이블, 인터페이스 상태등을 보여주는 명령어 네트워크 상태를 종합적...

blog.naver.com

 

 

- 25일 -

    at evaluation_process (project.js:312:20)    at processTicksAndRejections (internal/process/task_queues.js:95:5)       
(Use `node --trace-warnings ...` to show where the warning was created)       
(node:42332) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:42332) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

 

에러 쨘! 안내해주는 링크를 가봤더니 아래와 같은 말을 하고 있고,

 

Command-line API | Node.js v18.6.0 Documentation

Command-line API# Node.js comes with a variety of CLI options. These options expose built-in debugging, multiple ways to execute scripts, and other helpful runtime options. To view this documentation as a manual page in a terminal, run man node. Synopsis#

nodejs.org

조금 읽기 어려워서.. 에러를 구글링했다.

 

UnhandledPromiseRejection, DeprecatedWarning 해결 방법 (async-await)

갓 개강해서 방학 때보다 약간 바쁘게 지내고 있는데, 코로나 때문에 여전히 학교는 못 가고 학교 식당도 닫혀서 딱히 학식 업데이트를 할 필요가 없는 상황이다. 그래도 가끔 심심하면 학식알

dev-dain.tistory.com

진심... 이미 try catch도 되어 있는 것 같은데 뭘

 

unlink하고자 하는 path가 이상한 거였다. 어떻게 이게 여태 돌아가고 있었지? 이렇게 이상한대? (else로 빠질 일이 없어서 몰랐나보다)

 

프로젝트 안에 실행시켜주는 python이 cv2를 요구하길래 친히 서버에 가서 cv2를 사용할 수 있는 opencv-python module 확인을 마치고, 혹시 몰라 pip list를 걍 pip freeze > requirements.txt 명령어를 입력하여 싹 다 가져와서 가상환경을 설정하고 작업해주었다. 가상환경은 초반에 내 사수였던 전임님이 나를 교육시킬 때 우리 가상환경은 이렇게 되어있다~고 말해줬던 것이 떠올라서 그렇게 설정까지 완료했다.(물론 이 가상환경이 이것을 의미하지 않을 수는 있지만)

근데 아무리 해도 cv2가 자꾸 없다는 거다. 왜?? 대체 왜??

vscode가 외치는 우하단 팝업을 확인해보니 잘못된 인터프리터 경로를 가지고 있다고 말한다. 그래서 인터프리터 경로 설정을 후다닥 뜨는대로 해주고 났더니 python code가 들어있는 프로젝트에선 더 이상 노란줄을 띄우지 않고 있는데 어째선지 계속 본 프로젝트에서 실행이 안되고 있다. 본 프로젝트도 설정이 필요한 것이라 여겨져 여기도 인터프리터 설정을 하기 위해 검색했다.

 

Visual Studio Code 파이썬 인터프리터 경로 변경

Visual Studio Code 파이썬(Python) 인터프리터(Interpreter) 경로 변경 Visual Studio Code에서 작업을 하다보면 Python 버전을 맞추기 위해 경로 변경이 필요할 때가 있다. 이를테면 Python2.x버전을 사용하다가..

gentlesark.tistory.com

설정을 완료했는데, 여전히 cv2 모듈이 말썽이다. 어떻게 해야할까. 에러를 다시 직면해보자.

PythonShellError: ModuleNotFoundError: No module named 'cv2'

1. 지우고 다시 설치하라 - 안 된다.

2. 가상환경 말고 기본에 해봐라 - 그건 좀.. 일단 가상환경에 해볼게 시전.

 

ModuleNotFoundError: No module named 'cv2' (해결) - 인프런 | 질문 & 답변

도움이 될까 싶어서 글 남깁니다! 가상환경에서는 잘 돌아갔었는데 라즈베리파이안에서 Thonny Python IDE 로 실행했을 때, ModuleNotFoundError: No module named 'cv2' 라는 에러가 떴었는데 가상환경에서만 설

www.inflearn.com

- firebase-admin은 내게 필요 없으니까 제외. 하지만 안된다. 기본에 하긴 싫은데 흠..

3. 혹시 모르니 npm run 을 가상환경에 접속해서 다시 해보자. - 해결됐다.

 

그리고 다른 에러 두둥... 나 집에 갈래. (현 시각 22:44)

 

 

- 26일 -

오늘 오후에는 나도 api 작업을 들어가고 싶다.. 빨리 끝내보자. (세미나 듣고 점심 먹으러 다녀왔더니 왜 이 시간..?)

하지만 결국 오후까지도.. 속도를 언제쯤 빠르게 낼 수 있을까. 나 자신아, 빨리 성장하자. 손이 숙달해야 한다. 광은 때를 떠올려!!

 

process.env를 이용해 로컬과 원격 개발 환경을 구분하고자 열심히 console도 찍어보고 검색도 해보았지만 도무지 맘에 드는 것이 나오지 않았다. 그러다가 path 구분을 linux 환경에서는 :(콜론)으로 하고, windows 환경에서는 ;(세미콜론)으로 한다는 것을 보게 되었고 그걸로 구분짓기 위해 테스트를 해보았다.

// 1. 두 환경 모두 인지하는 단어를 찾자

// windows: process.env.Path
console.log(process.env.Path); // windows에서는 path의 첫글자만 대문자였다.
// ubuntu
>> undefined
// windows
>> C:\\${각종 패스들 잔뜩}

// ubuntu: process.env.PATH
console.log(process.env.PATH); // ubuntu에서는 모두 대문자로 구성되어 있음.
// ubuntu
>> /home/modory/${각종 패스들 잔뜩}
// windows
>> C:\\${각종 패스들 잔뜩}


// 2. path 구분자로 환경을 인식하도록 하자.
let os;
process.env.PATH.includes(';') ? os = 'develop' : os = 'server';
console.log(os);
// ubuntu
>> server
// windows
>> develop

이렇게 만들어놓고 뿌듯해져 있다가, 그래도 운영체제를 구분하는 방법이 있을텐데 하면서 조금 더 검색해보았더니 진짜로 있었다.

 

자주 사용되는 모듈

[Node.js] 자주 사용되는 모듈

ngwoon.github.io

내가.. 바보같게도 process.env만 시도해보았기 때문에 알기 어려웠던 것이었다. process만 쳐보면 또 뭐가 더 나왔을 것인데 말이다. 그래서 여기서 얻게 된 정보로 재구성해보았다.

// 1차 시도
let os;
process.platform == 'linux' || process.env.USER == 'simulator' ? os = 'server' : os = 'develop';
consoel.log(os);
// ubuntu
>> linux
// windows
>> win32

// 2차, 새롭게 구성 (경로 분기)
let homePath;
if (process.platform == 'linux' || process.env.USER == 'modory') {
	// OS is server
	homePath = '/home/storage/';
} else {
	// OS is develop
	homePath = 'D:\\storage\\';
}
// uploadPath_branch --> branchStroage
global.sStorage = path.join(homePath, 's');
global.eStorage = path.join(homePath, 'e');

잘 돌아가겠지? 설렌다.

 

 

- 27일 -

이틀 연속 23~24시쯤 퇴근했더니 아침에 눈 뜨기가 너무 힘들다.

친구야 너, 왜 혼자 불금 가 있니..?

Node.js처럼 Python에서도 운영체제를 읽어오는 명령어가 있을텐데, 무엇일까? 하면서 node 명령어를 그대로 구글에 입력해보았다. 그리고 겨우겨우 찾았다.

 

064 시스템 정보를 알아보려면? ― platform

platform은 시스템 정보를 확인할 때 사용하는 모듈이다. ## 문제 지금 사용하는 컴퓨터 사양을 알고 싶다. 사용 중인 시스템의 CPU와 OS 정보를 출력하는 프로 ...

wikidocs.net

나.. 파이썬이랑 장고도 공부해야하는데..ㅎㅎ.. 저 사이트 먼저 공부하면 되는건가?

하도 오랜만에 파이썬 봤더니 if문 문법이 헷갈려서..

 

03-1 if문

[TOC] ## if문은 왜 필요할까? 다음과 같은 상상을 해보자. > 돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다. 우리 모두에게 일어날 수 있는 상황 중 ...

wikidocs.net

혹시 separator가 예약어인가 싶어 검색하다가 사전?을 얻었다..ㅎㅎㅎㅎ

 

Python, str 내장모듈

>> 문자열 확인 및 검색 << -. find(keyword,[start,[end]]) 문자열 keyword가 나타나는 첫번째 인덱스를 반환 start,end를 지정하면 슬라이싱한것과 같은 효과 keyword를 찾이 못하면 -1을 반환 >>> "Python..

hwangyoungjae.tistory.com

 

 

os.path — 일반적인 경로명 조작 — Python 3.10.5 문서

os.path — 일반적인 경로명 조작 Source code: Lib/posixpath.py (for POSIX) and Lib/ntpath.py (for Windows). This module implements some useful functions on pathnames. To read or write files see open(), and for accessing the filesystem see the os m

docs.python.org

 

 

사람은 역시 배우고 활용해야해..

split만 쓰다가 replace를 쓰면 이렇게 더 간단해진다는 것을 진즉에 알았더라면 시간 절약이 훨씬 많이 됐을 것인데 말이야..

# 처음엔 이렇게 했다
home_evaluation_path = args.predicted.split('predicted'+separator)
tmp_files_path = os.path.join(home_evaluation_path[0], 'program', home_evaluation_path[1].split(predicted)[0], user_id)

# 근데 더 간단하게 가능하네? 바보..
tmp_files_path = os.path.join(args1.replace('predicted', 'program').split(predicted)[0], user_id)

 

이제 다시 js로 돌아와서 작업하는데 타입 에러 짜잔

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type number (1)

전에 하던 분들은 여기서 에러가 안 난 이유가 뭐였을까? 흠.. 아무튼 문자열 유형으로 맞춰주고~

 

파일 지우는 것도 더 간단하게 가능하다. 기존에는 파일이 없는 폴더 삭제만 가능했지만, 어느 좋은 모듈을 node.js가 v12.10.0으로 업그레이드하면서 흡수했다고 한다.

 

[node.js] 비어 있지 않은 디렉토리를 제거하십시오. - 리뷰나라

내 노드 응용 프로그램에서 일부 파일이있는 디렉토리를 제거해야하지만 fs.rmdir빈 디렉토리에서만 작동합니다. 어떻게해야합니까? 답변 이를위한 모듈이 있습니다 rimraf( https://npmjs.org/package/rimr

daplus.net

 

Is node.js rmdir recursive ? Will it work on non empty directories?

The documentation for fs.rmdir is very short and doesn't explain the behavior of rmdir when the directory is not empty. Q: What happens if I try to use this API to delete a non empty directory ?

stackoverflow.com

// 이렇게만 가능했다면
fs.unlinkSync(file_path);
fs.rmdirSync(file_path.split(`${scenario_id}.json`)[0], { recursive: true });

// 업데이트 후 더 간단해졌다.
fs.rmdirSync(file_path, { recursive: true });

 

나 진짜 파이썬 고만 보고 싶어.. 엉엉엉

 

9.2 오류를 고치는 방법 | 연오의 파이썬 프로그래밍 입문서

파이썬으로 프로그래밍에 처음 입문하시는 분을 위한 책입니다. 프로그래밍 지식을 갖고 계시지 않더라도 누구나 학습하실 수 있습니다.

python.bakyeono.net

무슨 오류인지는 알겠는데.. 왜 전에는 발생하지 않고 잘만 돌아갔던 프로그램이 내가 손대지도 않은 부분에서 혼자 에러를 일으키는걸까?

 

TypeError: < not supported between instances of list and int

The Python TypeError: '<' not supported between instances of 'list' and 'int' occurs when we use a comparison operator between values of type `list` and `int`. To solve the error, access the list at a specific index or compare the list's length to an integ

bobbyhadz.com

진짜.... 이해가 안 가는 문제들이 계속 발생된다. 그냥 코드만 놓고 볼 때도 이게 왜 돌아가? 싶었던 부분들(변수 미선언 상태지만 사용중, 데이터타입이 안 맞는데 괜찮음)이 있었는데 그것들이 여태 괜찮다가 지금 나한테 항의하며 일어난다. 야.. 이 양심없는 코드들아 나한테 왜 그래? 나를 성장시키기 위해 여태 기죽어 있다가 일어나는 거지? 그런거지? ...

이번엔 JSON.parse에서 에러가 발생했다. 이 정도면.. 그냥 이 api에 있는 모든 녀석들이 때는 이때다! 하고 반발중인 것 같다. 신난다.

이유를 찾았다. 지금까지 에러가 발생할 수 없었던 이유는 윈도우 서버에 맞춰 패스를 하드코딩해놨기 때문이었다. 지금 나는 그 모든 부분을 윈도우든 리눅스든 돌아갈 수 있게 설정하면서 구분자가 생략되게 되었고, 그 결과 발생한 문제였다. 수정 완료.. 이제 잘 돌아간다. path 계획대로 서버 디렉토리를 전부 맞춰주고 파일 이동하는 작업만 하면.. 이제 될 것 같다.

 

 

- 29일 -

오늘은 평소 궁금했던 것들을 하나하나 스터디해보기로 한다.

 

서버 SQL 모드 [sql mode]

SQL 모드 설정 SET GLOBAL sql_mode = ' modes '; SET SESSION sql_mode = ' modes '; SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode; 가장 중요한 SQL 모드  가장 중요한 sql_mode 값은 아마도 다음과..

blog.daum.net

 

728x90
반응형
Comments