카테고리 보관물: Chat-GPT

Solve block alignment problem with wordpress function

위 그림과 같이 워드프레스 글 편집기(gutenberg editor)에서 코드 블럭만 다른 블럭과 다르게 왼쪽 정렬이 되고 있는 모습이다. 최종편집된 글을 보면 코드블럭이 다른 블럭들과 마찬가지로 가운데 정렬이 되어 출력되는데 편집기에서도 가운데 정렬이 되도록 하고 싶어 해결방법을 perplexcity에 물어보게 되었는데 총 2가지 답변을 받을 수 있었다.

두 가지 방법 모두 워드프레스에 커스텀 함수를 추가하여 스타일을 바꿔주는 방식으로 다음 경로의 워드프레스 서버의 파일에 접근 할 수 있어야 한다.

[..server directory]/wordpress/wp-content/themes/[you using theme name]/functions.php

CSS 를 통한 방법

function fix_block_alignment() {
    if (get_current_screen()->is_block_editor()) {
        echo '<style>
            .editor-styles-wrapper .wp-block {
                margin-inline: auto !important;
            }
        </style>';
    }
}
add_action('admin_head', 'fix_block_alignment');

만약 위 함수를 추가하여 해결이 안됐을 경우

/*
* 이 코드는 전체 너비 블럭의 정렬 문제를 해결하는데 도움이 됩니다
*/
add_action('enqueue_block_editor_assets', function() {
    wp_add_inline_style('generate-block-editor-styles', 
        '.wp-block[data-align="full"] {
            max-width: none;
        }'
    );
}, 20);

맥북(2015 pro late) 닫았을때 잠자기 방지 셋업

잠자기 방지 설정 방법

1. 터미널 열기

Spotlight로 “터미널” 혹은 “terminal” 검색 (⌘ command + space) 

2. 잠자기 방지 설정 세팅

아래 커맨드를 입력하면 노트북을 닫아도 꺼지지 않는다.

sudo pmset -c disablesleep 1

3. 잠자기 방지 설정 해제

아래 커맨드를 입력하면 노트북을 닫으면 정상적으로 꺼진다.

sudo pmset -c disablesleep 0

원본 블로그

(?.) what is this mean? (Optional Chaining)

next.js authentication 예제를 살펴보면 다음과같은 코드가 있다

{state?.errors?.email && <p>{state.errors.email}</p>}


state?.errors?.email 를 보면 각 참조(.) 중간에 ? 가 있는데 이것은 접근하려는 오브젝트나 호출하려는 함수의 참조 오류가 있을 때 오류를 발생시키지 않고 undefined 를 반환 하게하는 연산자이고 이를 옵셔널 체이닝 이라고 부른다.

if문으로 nullish 검증을 하는 코드를 줄여줄 수 있는 연산자라 편하긴 한데 오류를 내지 않고 undefined 를 반환하게되어 디버깅에 혼란을 줄것같다. UI 코드나 중요하지 않은 부분에 사용하면 좋을 것 같다.

How to solve that next.js and AWS RDS PostgreSQL connection is failed.

Problem

Next.js 를 사용한 웹앱에서 다음과 같이 AWS RDS의 PostgreSQL 인스턴스에 연결을 시도할 때 에러가 출력되면서 query가 제대로 실행되지 않는 상황이 발생했다.

// db.js
import { Pool } from 'pg';

const pool = new Pool({ 
    host: process.env.HOST,
    database: process.env.DB,
    user: process.env.USER,
    password: process.env.PASSWORD,
    port: prcoess.env.PORT,
} );

export default pool;</mark>
// api/users/route.js

import { NextResponse } from 'next/server';
import pool from 'db';

export async function GET() {
    try {
        const result = await pool.query( 'SELECT NOW()' );
        return NextResponse.json( result.rows, { status: 200 } );
    } catch (error) {
        return NextResponse.json( { error: error }, { status: 500 } );
    }
}

Error

// Error
{  
   "length":181,
   "name":"error",
   "severity":"FATAL",
   "code":"28000",
   "file":"auth.c",
   "line":"543",
   "routine":"ClientAuthentication",
   "level":"error",
   "timestamp":"..."
}

Reason

현재 나의 DB 인스턴스의 PostgreSQL 버전은 16.4 인데 버전 15 이후부터는 DB를 구성하는 파라미터 중 force_ssl이라는 인자가 0에서 1로 바뀌었다고 한다. 이 인자가 1(true) 이면 인증이 확인되지 않는 사이트로 부터 받는 요청은 거부 된다고 한다. 따라서, 문제를 해결하기 위해서는 force_ssl 파라미터 값을 0으로 바꿔주면 SSL 설치가 되지 않는 로컬 환경에서 접속이나 쿼리 요청을 할 수 있게 된다.
https://stackoverflow.com/questions/76511667/nodejs-postgresql-connection-failure

Solve

force_ssl 을 0으로 셋업한 파라미터 그룹을 내가 생성한 인스턴스에 적용해 주면 된다.

파라미터 그룹에 들어가 파라미터 그룹 생성을 눌러 생성 페이지로 들어가 준다.

생성 후 생긴 파라미터 그룹 편집에 들어가 force_ssl 을 필터링 한 후 값을 바꾸고 저장하면 된다.

생성한 파라미터 그룹을 인스턴스에 적용하면 된다. 파라미터 그룹을 수정하면 인스턴스를 재부팅 해야하기 때문에 적용하는데 시간이 좀 걸린다. 대충 20~30분 정도 걸리는듯

이렇게 하면 로컬 next.js 앱에서 쿼리 요청을 보내면 응답 받을 수 있게 된다.

Update Let’s Encrypt SSL Certificate in manual by pem key

bitnami

인증서가 저장된 폴더는 주로 관리자 접근 이므로

입력하여 관리자 모드로 바꿔준다.
관리자 패스워드 설정이 안되어있다면

를 입력하여 설정해준다.
그리고 다음 명령어를 입력하여 기존 인증서 키인 server.crt와 server.key 를 백업한다.

mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.backup
mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.backup

생성된 인증서 파일을 기존 인증키 폴더에 동일한 파일명으로 복사한다.

cp /etc/letsencrypt/live/your_domain/fullchain.pem /opt/bitnami/apache2/conf/bitnami/certs/server.crt
cp /etc/letsencrypt/live/your_domain/privkey.pem /opt/bitnami/apache2/conf/bitnami/certs/server.key

파일 접근 권한을 설정하여 Apache가 접근할 수 있도록 한다.

chown root:root /opt/bitnami/apache2/conf/bitnami/certs/server.crt
chown root:root /opt/bitnami/apache2/conf/bitnami/certs/server.key

chmod 600 /opt/bitnami/apache2/conf/bitnami/certs/server.crt
chmod 600 /opt/bitnami/apache2/conf/bitnami/certs/server.key

다음 명령으로 서버를 재시작하여 새로운 인증서가 적용되도록 하면 끝이다.

/opt/bitnami/ctlscript.sh restart apache

nginx

cat /etc/nginx/sites-available/default

명령을 실행하여 server 443 ssl 포트에 ssl_certificate 가 어느 폴더를 가리키고 있는지 확인 후 해당 폴더에 fullchain.pem과 privkey.pem 파일이 정상적으로 복사가 되어있다면 다음의 명령줄을 입력하여 서버를 재시작 하면 인증서가 적용된다.

sudo systemctl restart nginx

Which is good for my web app, PostgreSQL vs MySQL

Question ) postgresql 과 mysql 각 장점과 단점을 알려줘, 현재 threejs 웹앱과 연동할 데이터베이스를 구축하려하는데 둘중 어떤것을 사용한게 좋을지 추천해줘, 혹시 그밖의 데이터베이스가 있다면 알려줘

Three.js 웹앱과 연동할 데이터베이스를 구축하려는 상황에서 PostgreSQL과 MySQL의 장단점을 고려해보는 것이 중요합니다. 이 두 가지 데이터베이스는 가장 널리 사용되는 오픈 소스 관계형 데이터베이스 시스템(RDBMS) 중 하나이며, 각각의 특성과 기능이 프로젝트의 요구 사항에 따라 적합할 수 있습니다.

PostgreSQL의 장점과 단점

장점:

  1. 고급 SQL 기능 지원: PostgreSQL은 표준 SQL과 더불어 창 함수, CTE(Common Table Expressions), 서브쿼리, 트리거 등 다양한 고급 SQL 기능을 지원합니다. 복잡한 쿼리와 데이터 조작에 적합합니다.
  2. 확장성 및 커스터마이징: PostgreSQL은 확장 모듈과 사용자 정의 함수를 통해 기능을 확장할 수 있습니다. 다양한 타입의 데이터(예: JSON, XML, 배열)를 지원하며, NoSQL 기능도 제공합니다.
  3. ACID 준수 및 데이터 무결성: PostgreSQL은 트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 특성을 철저히 준수하며, 데이터 무결성 보장에 강점을 가지고 있습니다.
  4. 복잡한 데이터 모델링 지원: 다중 테이블 관계나 제약 조건을 포함하는 복잡한 데이터 모델을 효율적으로 관리할 수 있습니다.
  5. 대규모 데이터 처리: 빅데이터를 다루는 데 있어 뛰어난 성능을 보입니다. 대용량 데이터 분석과 고급 통계 기능을 필요로 하는 경우 적합합니다.

단점:

  1. 학습 곡선: 고급 기능과 다양한 설정 옵션으로 인해 처음 사용하는 경우 학습 곡선이 있을 수 있습니다.
  2. 성능 튜닝의 필요성: 성능을 최적화하기 위해서는 여러 가지 설정을 조정해야 할 수 있으며, 초기 설정보다는 추가적인 튜닝이 필요할 수 있습니다.

MySQL의 장점과 단점

장점:

  1. 사용의 용이성: MySQL은 설치와 설정이 비교적 간단하며, 직관적인 인터페이스로 인해 배우기 쉽습니다.
  2. 높은 읽기 성능: 읽기 작업(SELECT 쿼리)에 대해 매우 뛰어난 성능을 보입니다. 웹 애플리케이션의 경우 읽기 작업이 많은 경우에 유리합니다.
  3. 광범위한 지원 및 커뮤니티: MySQL은 매우 큰 사용자 커뮤니티를 가지고 있어, 문제 해결에 대한 다양한 자료와 지원을 받을 수 있습니다.
  4. 다양한 엔진 지원: MySQL은 여러 스토리지 엔진(InnoDB, MyISAM 등)을 지원하여 상황에 맞는 데이터베이스 환경을 구성할 수 있습니다.
  5. PHP와의 친화성: PHP와의 연동이 쉽고, LAMP 스택(Linux, Apache, MySQL, PHP/Perl/Python)의 일부로 널리 사용됩니다.

단점:

  1. 제한된 고급 기능: PostgreSQL에 비해 일부 고급 SQL 기능이 부족할 수 있으며, 복잡한 쿼리 처리에 있어 제한이 있을 수 있습니다.
  2. ACID 준수의 한계: 기본적으로 InnoDB 엔진을 사용하는 경우 ACID를 준수하지만, MyISAM과 같은 엔진은 트랜잭션을 지원하지 않으며 데이터 무결성 측면에서 취약할 수 있습니다.
  3. 확장성의 한계: 매우 큰 규모의 데이터베이스 또는 복잡한 데이터 모델링의 경우 PostgreSQL에 비해 확장성이 떨어질 수 있습니다.

추천 및 고려사항

Three.js와 같은 웹앱에서 사용할 데이터베이스를 선택할 때 고려해야 할 몇 가지 요소는 다음과 같습니다:

  1. 데이터 복잡성: Three.js 웹앱이 단순한 CRUD(생성, 읽기, 업데이트, 삭제) 작업 위주라면 MySQL이 적합할 수 있습니다. 하지만 복잡한 데이터 모델이나 고급 SQL 기능이 필요하다면 PostgreSQL이 더 나은 선택이 될 것입니다.
  2. 성능 요구사항: 읽기 작업이 주로 이루어지는 경우 MySQL이 적합할 수 있지만, 데이터 무결성이나 트랜잭션 안정성이 중요한 경우 PostgreSQL이 더 나은 성능을 제공합니다.
  3. 확장성 및 미래 요구사항: 프로젝트가 확장 가능성을 고려해야 한다면 PostgreSQL이 더 나은 선택이 될 수 있습니다.

그 밖의 데이터베이스

  • SQLite: 경량 데이터베이스로, 파일 기반 데이터베이스를 원하는 소규모 프로젝트에 적합합니다. 설치가 필요 없고 매우 가벼운 점이 장점입니다.
  • MongoDB: 비관계형(NoSQL) 데이터베이스로, 복잡한 관계를 다루지 않거나 JSON과 같은 문서 기반 데이터를 효율적으로 관리해야 하는 경우에 유리합니다.
  • MariaDB: MySQL의 포크로, MySQL과 호환되면서도 몇 가지 추가 기능과 성능 개선을 제공합니다.

결론

Three.js 웹앱에 어떤 데이터베이스가 적합한지 결정하는 것은 프로젝트의 구체적인 요구 사항에 따라 달라집니다. 단순하고 읽기 위주이며 확장성이 필요 없는 경우 MySQL이 적합할 수 있지만, 복잡한 데이터 처리와 고급 기능이 필요하거나 미래의 확장성을 고려한다면 PostgreSQL이 더 나은 선택일 것입니다. NoSQL의 유연성이 필요하다면 MongoDB도 고려해볼 수 있습니다.

How to build Lightsail WebServer

아마존 인스턴스 환경 구축 과정
1 – https://kounjeong.tistory.com/6
2 – https://makepluscode.tistory.com/175
yum이란?
https://dololak.tistory.com/331

servlet 에 대하여
https://java-is-happy-things.tistory.com/23

2024.06.25
Amazon Lightsail QuasarXR 0.1 인스턴스 생성
mysql 설치
java 설치
nvm 설치 nodejs 설치 https://tecadmin.net/install-nvm-on-amazon-linux/ (curl 방식은 에러로 실패)

2024.06.28
next.js 빌드 불가(Amazon Linux2 인스턴스의 node.js 18.x 이상 버전 필요) 로 인스턴스 삭제
Ubuntu 인스턴스 새로 만듬

2024.06.27
mysql, nginx, node.js, git 설치
QuasarXR 프로젝트 클론 후 next.js 빌드 성공
pm2 설치 후 프로젝트 실행, nginx 서버 설정후 실행 완료, 인스턴스 ip주소로 사이트 확인

초보 창업가의 21가지 실수

그릿 BD 의 글에서 발췌
https://maily.so/gritbd/posts/6eb9ffc5 << 상세내용 링크 클릭

  1. 비지니스 플랜을 상세하게 만든다
  2. 재무 계획을 완벽하게 세운다
  3. 정교하고 치밀한 보고서에 집착한다
  4. 그럭저럭 사랑받는 제품을 대중용으로 만든다
  5. 상세한 작업 설명서를 토대로 개발한다
  6. 처음 만든 비지니스 모델에 집착한다
  7. 경쟁을 너무 의식한다
  8. 차별화를 너무 의식한다
  9. 있으면 좋은 기능을 추가한다
  10. 처음부터 제품 디자인이나 사용성의 세부 사항에 집착한다
  11. 처음부터 시스템 자동화와 최적화를 실시한다
  12. 비지니스 모델이 완성되기 전에 적극적으로 사람을 고용한다
  13. 직접 관계가 없는 네트워크 행사나 술자리에 참석한다
  14. 경력이 화려한 영업자나 사업 개발 담당자를 고용한다
  15. 비지니스 모델 검증이 끝나기 전에 파트너십이나 독점 계약을 맺는다
  16. 영업보다 마케팅이나 PR에 집중한다
  17. 역할 분담을 엄밀하게 한다
  18. 기밀 유지 협약을 맺는다
  19. 수탁 개발이나 위탁 업무를 필요 이상으로 받는다
  20. 업계 전문가의 조언에 의지한다
  21. 벤처 투자자에게 적극적으로 접근한다