728x90

The error message SELECT command denied to user ''@'localhost' for table 'mysql.user' in DBeaver usually indicates that the user does not have sufficient privileges to access the mysql.user table.

Here are the steps to resolve the issue:

  1. Connect to the MySQL server with an administrative account.
  2. Run the following command to grant the required privileges:
 
GRANT SELECT ON mysql.* TO 'your_user'@'localhost';
 

Replace "your_user" with the username you are using to connect to the MySQL server.

  1. Flush the privileges to make the changes take effect:
 
FLUSH PRIVILEGES;
 
  1. Try connecting to the MySQL server using DBeaver again and see if the error still occurs.

This should resolve the issue and allow you to access the mysql.user table in DBeaver.

728x90
728x90

"mysql" is the basic command to start the MySQL client, which is used to connect to and interact with a MySQL server. This command assumes that you want to connect to the MySQL server as the current operating system user.

 

"mysql -u root -p" specifies the MySQL user account that you want to use to connect to the MySQL server. "root" is the username, and "-p" is the option that prompts for a password. So, this command connects to the MySQL server as the "root" user, and you need to enter the password for that user to access the MySQL server.

728x90
728x90

새로 맥북 사서 이것 저것 설치하다가 

도커를 써보기로 했다. 회사에서 도커와 디비를 연결해서 써서 같은 환경으로 해보면 공부되고 좋을 것 같아서. 

 

근데 도커 왜쓰지? 

저번에 개인프로젝트할때는 없이도 했는데.. 라는 생각이 들었다.

 

https://www.44bits.io/ko/post/why-should-i-use-docker-container#%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C%EC%9D%98-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C-%EB%8F%84%EC%BB%A4%ED%8C%8C%EC%9D%BC-%EB%B0%94%EB%9D%BC%EB%B3%B4%EA%B8%B0

 

왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유

컨테이너는 서버 애플리케이션을 배포하고 서버를 운영하는 표준적인 기술이 되어가고 있습니다. 하지만 처음 사용해본다면 그 장점이 잘 와닿지 않을 수도 있습니다. 왜 굳이 도커 컨테이너를

www.44bits.io

 

 

그래서 이 글을 읽었다!@ 귯귯귯

아직 완전히 이해 안되긴 하지만..

 

도커는 서버를 관리해준다!

우리는 여러 서버를 쓸 때 발생하는 문제, 서버기록들.. 등을 도커로 관리할 수 있다. 

서버지식이 없어도 도커를 통해 쉽게 작업할 수 있다. 

 

 

"

도커파일 = 서버 운영 기록

도커 이미지 = 도커 파일 + 실행시점 

도커 컨테이너 = 도커 이미지  + 환경변수

"

 

 

 

728x90
728x90

플러그인(사용자가 원하는 기능을 추가하고 생성하여 쓸 수 있는  프로그램)

 

플러그인은 자바스크립트, html,css로 만들어졌지만 차이가 있다

플러그인 시스템은 보안을 신경써야하기 때문에 

브라우저 api의 접근을 다르게 할 필요가 있었다

 

그래서 

1. 피그마 파일 콘텐츠에 어떻게 접근하는거야?

2. 내 플러그인을 위한 유저인터페이스 어떻게 만드는 거야?

3. 어떻게 네트워크 요청을 할 수 있는거야?

 

sandbox 샌드박스

(브라우저 api(주고 받을 수 있는 통신이라 이해하면됨)를 노출하고 

있지 않은 작은 자바스크립트 환경 )

 

성능을 위해 플러그인 코드가 샌드박스의 메인 스레드에서 실행되는

모델로 사용하기로 했어

물론 여기에도 작은 콘솔 api는 있지만 

xmlHttprequest(서버와 상호작용할 때 사용하는 객체,서버로부터 xml 데이터 가져올 때 쓰임) 그리고 과 같은 것들은 샌드박스에서 직접 하지 못하게 했어

 

ui를 보여주거나 네트워크를 접근하기 위한 브라우저 api를 

사용하려면 너는 요런 태그(<script>

안에 있는 <iframe>

)를 사용해야돼

간단히 보면 이 함수를 이용해서 작동되고 있어

이 <iframe>안에서 너는 html, 자바스크립트 그리고 브라우저 api 에도 

접근할 수 있는겨. 

 

메인 스레드(메인 실행구조, 동작구조)는 피그마의 "scene 씬"에 접근할 수 있어

(뭐뭐뭔소리야? -피그마 문서를 구성하는 계층의 계층이래. 옥히~) 하지만 브라우저 api는

접근할 수 없어 

반대로 iframe 그 태그는 브라우저api에 접근할 수 있는데 

피그마 씬에는 접근 못해 

 

대신 이 둘, 메인 스레드와 iframe은 메세지를 주고 받으면서 소통할 수 있어

 

플러그인이 일 다 마쳤을 때 

figma.closePlugin() 함수를 불러서 피그마한테 끝냈다고 말해줘. 

 

그렇지 않으면 사용자는 너의 플러그인이 동작중이다~ 를 계속 보게 

될거니까. 

그리고 사용자는 플러그인이 동작하는 동안에 

피그마가 나타내는 ui를 사용해서 언제든지 플러그인을 취소할 수 있어

이렇게 되면 피그마는 그 자체로 figma.closePlugin()함수 불러서 끝내겠지

 

출처 :  https://www.figma.com/plugin-docs/how-plugins-run/

 

728x90
728x90

✖ Installing Bundler error Your Ruby version is 2.6.10, but your Gemfile specified 2.7.5

ruby version error 해결 

//루비버전관리 프로그램 설치
brew install rbenv

//나는 mac 유저라서 터미널에서 바로 
code . 
//쳐주면 .zshrc파일 들어갈 수 있음. 접근해서 맨밑에 추가함
eval "$(rbenv init -)"

//원하는 버전 설치
rbenv install 2.7.5

//설치완료 확인 (이제는 자동으로 해줘서 안해도 되는 명령어라고 함)
rbenv rehash

//버전 변경 (이것도 자동으로 해주는 거같음 )
rbenv global 2.7.5

//버전확인 
ruby --version

//버전변경했는데도 자꾸 이전 버전이 뜬다면 터미널 껐다가 다시 버전체크해보자. 껐다 다시 킨 다음에야 나는 변경된 걸로 떴음

https://dololgun.github.io/macos/mac-ruby-reinstall/

 

MacOS ruby 버전 관리

mac에서 ruby버전 관리하기

dololgun.github.io

 

근데 ruby가 뭘까?

출처 :&nbsp;https://opentutorials.org/module/2878/16498

객체지향 언어인데 자유도가 있는 언어라고 한다

 

reactnative에서 ruby 쓰는 이유는 

Because iOS uses CocoaPods to handle dependencies which was written in Ruby

ios 가 cocoapods 사용하는데 이게 ruby로 쓰여서.

 

 

 

cocoapods 에러

https://reactnative.dev/docs/next/environment-setup

sudo arch -x86_64 gem install ffi
//이건 프로젝트 폴더 들어가서 cd ios 안에서 했다 pod install 해준 것
arch -x86_64 pod install

 

혹시몰라서 프로젝트 다 삭제하고 

npx react-native init AwesomeTSProject --template react-native-template-typescript

다시 하니 에러 없이 잘 됐다. 

 

 

 

아래글 초기셋팅 참고로 굿

https://zeunny.tistory.com/6

 

[React Native] 공식 문서 보고 Mac OS에서 개발 환경 설정하기

[React Native] 공식 문서 보고 Mac OS에서 개발 환경 설정하기 공식 문서는 아래 링크를 클릭해서 보면 된다. https://reactnative.dev/docs/environment-setup Setting up the development environment · React Native This page will h

zeunny.tistory.com

 

728x90
728x90

동기처리

순차적으로 실행됨을 의미한다.

요청하면 응답할 때까지 다른 걸 실행하지 않고 기다린다. 

(요청과 응답이 동시에 이뤄진다는 뜻.

주문을 예시로 많이 드는데 떡볶이를 주문하고 떡볶이가 나올 때까지 다른 손님들이 순서대로 줄이 서있다고 상상하면 된다.)

 

 

비동기 처리 

동시다발적으로 병렬적으로 실행됨을 의미한다.

요청과 응답이 함께 이뤄지지 않는다.

요청하고 응답을 기다리지 않고 다른 요청들을 한다.

 

 

값을 받아오고 사용할 때 

값이 받아오기도 전에 함수가 실행되는 걸 막기 위해서

동기처리로 해결한다. 

 

 

그럼 자바스크립트 언어는 동기적 언어인가?

비동기적 언어라고 생각하기 쉬운데

(왜냐면 사실 내가 코드짤 때 병렬적으로 이뤄지는 함수를 동기처리, 순차적으로 실행되게 바꾸게 되니까...  비동기적 언어인가 싶었음 )

 

자바스크립트는 동기적 언어이다.

 

하지만! 

자바스크립트를 브라우저에서 구동되고 이때 비동기적으로 이뤄진다. 

 

 

 

Event Loop를 포함해 Browser의 구성요소 역할을 이해했다면, 자바스크립트 언어 자체가 비동기 특성을 제공하는게 아니라 Browser의 구성 요소들이 제공한다는 사실을 이해할 수 있다.

...

그러면 우리가 만든 프로그램의 코드를 실행하라고 JS엔진에게 명령하는 것은 누구일까? 실제로 JS엔진은 고립되어서 수행되는 것이 아니고 호스팅 환경 내에서 수행된다. 대부분의 개발자들에게 이것은 웹 브라우저 혹은 Node.js일 것이다.  이러한 모든 환경에서 적용되는 최대공약수는 호스팅 환경에 내장된 메커니즘인 이벤트루프이다.. 이것은 시간의 흐름에 따라 코드의 수행을 처리하며 그 때마다 JS엔진을 작동시키게된다. 따라서 이벤트루프라는 호스팅 환경 내의 메커니즘으로 인해, JS엔진에게 비동기적 수행을 명령하게 되고, JS가 비동기적으로 실행되게 되는 것이다.


출처: https://hazel-developer.tistory.com/179#recentComments

 

async await 쓰면

비동기처리를 마치 동기처리처럼 보이게 할 수 있다.

 

 

await  키워드는 async 키워드가 붙어있는 함수 내부에서만 사용할 수 있으며 비동기 함수가 리턴하는 Promise로 부터 결과값을 추출해줍니다. 즉, await 키워드를 사용하면 일반 비동기 처리처럼 바로 실행이 다음 라인으로 넘어가는 것이 아니라 결과값을 얻을 수 있을 때까지 기다려줍니다. 따라서 일반적인 동기 코드 처리와 동일한 흐름으로 (함수 호출 후 결과값을 변수에 할당하는 식으로) 코드를 작성할 수 있으며, 따라서 코드를 읽기도 한결 수월해집니다.
출처: https://www.daleseo.com/js-async-async-await/

 

 

찾아 읽다 보니 

JS를 비동기적으로 실행하게 해주는 대표적인 방식으로 Callback / Promise / Async & Await 가 있다.

async await를 쓰면 비동기인데 동기적으로 처리한다~라고 이해하면 되겠다.

 

callback

promise

 

 

async/await의 목적은 프로미스의 이용을 쉽게하는 것입니다.
출처: https://engineering.huiseoul.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%EA%B0%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-%EB%B6%80%EC%83%81-async-await%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%BD%94%EB%94%A9-%ED%8C%81-%EB%8B%A4%EC%84%AF-%EA%B0%80%EC%A7%80-df65ffb4e7e
 

Medium

$150,000 Amazon Engineer vs. $300,000 Google Engineer

engineering.huiseoul.com

 

이거 다시 읽어보자..일단 자고 내일 마저 수정해야지..

 

promise 와 callback차이도 봐야겠엉

728x90

+ Recent posts