๐ฅตAPI ์ฐ๊ฒฐ ํ๊ธฐ : ์ฝ๋ ์ง๋๊ฒ๋ณด๋ค ์ด๊ธฐ ์ธํ ์ด ํจ์ฌ ๋ ์ด๋ ต๋ค..
์ฌ๋ฝ๋ค๊ธฐ๋ณด๋จ ๋ฐฉ๋ฒ๋ ๋ง๊ณ ์ฝ์ด์ผ ํ๋ ๊ณต์ ๋ฌธ์๋ ๋ง์์, ์ ์ ๋ด๊ฐ ์ํ๊ฑฐ๋ ํ์ํ ์ ๋ณด๋ฅผ ์ฐพ๋๋ฐ ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ ๊ฒ ๊ฐ๋ค.
๋ ๊ทธ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ธ์ฆํ๊ณ ์ถ์ ๋ฟ์ธ๋ฐ... ๊ฐ์๊ธฐ ๋ ๋ค ํ์ด์ฌ์ ์ค์นํ๋ผ.... ์ด์ฉ๊ตฌ..... ๊ทผ๋ฐ ๋ญ ๋ ๋ ์ค์นํ๊ธฐ์ ์ปดํจํฐ ์ฉ๋์ด ๋๋ฌด ์ ํ์ ์ด๋๊น ์ค์นํ๋๊ฒ๋ ๊ป๊ทธ๋ฌ์ด ์ฌ์ ์ด๋ค.
๊ฒฐ๊ตญ ๊ณต์ ๋ฌธ์ ์ฐพ๋๊ฑด Gemini์๊ฒ ๋ฌผ์ด๋ด์ ์ฐพ์๋ค. ์ถ์ฒ๊น์ง ํ๊ธฐํด์ฃผ๋๊น ๋๋ฌด ํธํ๋๋ผ. ai ์ฌ์ฉ ์ํ๊ณ ๋ ํผ์์ ๊ณต์๋ฌธ์ ์ฐพ์ ์ค ์์์ผ ํ ํ ๋ฐ... ๊ตฌ๊ธ ๊ณต์๋ฌธ์๋ ์ฐพ์์ ์ฝ๊ณ ์คํํ๋ ๊ณผ์ ๋ณด๋ค ํ์ํ๊ฑธ ์ฐพ๋ ๊ณผ์ ์ด ์ ๊ธ๊ฐ์์ ๋ ํ๋ค๋ค.
โ์ Google Cloud Nature Language API๋ฅผ ์ ํํ๋๊ฐ?
์ฌ์ค ๊ตฌ๊ธ๋ณด๋ค ํจ์ฌ ๋ ์ฌ์๋ณด์ด๋ API์น์ฌ์ดํธ๋ฅผ ๋ฐ๊ฒฌํ๋ค. ๋ฐ๋ก ๋งก๊น API์ ๊ฐ์ฑ๋ถ์ API์๋ค.
๊ทผ๋ฐ ํฌ์คํธ๋งจ๊ณผ ์ฌ์ดํธ์์ ์ ๊ณตํ๋ ๋ฐ๋ชจ ๊ธฐ๋ฅ์ ์ด์ฉํ๋๋ฐ...


๋ด๊ฐ ํฌ์คํธ๋งจ์ ์๋ชป ์ฌ์ฉํด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋? ์ถ๊ธฐ๋ ํ๊ณ , ์น์ฌ์ดํธ์์ ์ ๊ณตํด์ฃผ๋ ๋ฐ๋ชจ๋ฅผ ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ๋๋๊ฑด ๋งคํ๊ฐ์ง๋ผ ๋ฌธ์๋ฅผ ๋๋ ธ๋๋


์จ์ธ์์ด ๋ด ๊ฐ๋ฐ๊ณต๋ถ๋ฅผ ๋ง๋ ๋๋์ด์ด์ ๋ค์ ์ง์ฆ์ด ๋ฌ๋ค
๊ทธ๋์ ๋ค๋ฅธ ๊ฐ์ ๋ถ์ API๋ฅผ ์ฐพ๋ค๊ฐ Google์์ ์ ๊ณตํ๋๊ฑธ ๋ฐ๊ฒฌํ๋ ๊ฒ..
๊ตฌ๊ธ์์ ์ ๊ณตํ๋ API ๊ณต์๋ฌธ์ ์ฝ๊ณ ๊ตฌํํ๋๊ฒ๋ ๊ฐ๋ฐ ๊ณต๋ถ์ ๋์ ๋ ๊ฒ ๊ฐ์์ ์ฌ์ฉํ๋ค.
โ์ Java์์ ๊ตฌํํ์๋๊ฐ?
๋ด ํ๋ก์ ํธ์ ํ๋ก ํธ๋จ์ด Vite + React์๋ ๊ฒ์ด๋ค
Node.js๋ฅผ ๊น์๊ธฐ ๋๋ฌธ์ ํ๋ก ํธ์์๋ ์๋ฒ๋ฅผ ํธ์ถํ ์ ์๋? ๊ธฐ๋๋ฅผ ํ์๋๋ฐ, ์๋ํด๋ณด๋ ์๋ฌ๋ค.
๊ฒฐ๊ตญ ๋ฐฑ์๋ ์๋ฒ์์ API ํธ์ถ์ ์์ฑํ๋๊ฒ ๋ ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํด์ ๋ฐฑ๋จ์ธ Java + Spring ํจํค์ง์์ ์์ฑํ๋ค.
๋์ผ ๋ญ Java์์ ๊ตฌํํ๋๊ฒ ๋ ํธํ๋๊น ์ข์ง๋ง... ๊ธฐ์์ด๋ฉด ์๋ํ ์ ์์๋ Node.js์์ ๊ตฌํํด๋ณด๊ณ ์ถ์๋๋ฐ ์ด์ง ์์ฌ์ ๋ค
โ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ?
์ฐ์ ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ์์กด์ฑ์ ๊น๊ณ ์์๋ฌธ์ ๊ทธ๋๋ก ์์ฑํ์๋ค.
[์์กด์ฑ ์ถ๊ฐ]
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.68.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-language</artifactId>
</dependency>
</dependencies>
[๋ฉ์๋ ์์ฑ]
public ResponseEntity<DiaryResponseDTO> getDiaryScore(@RequestBody DiaryRequestDTO request) {
DiaryResponseDTO response = new DiaryResponseDTO();
try (LanguageServiceClient language = LanguageServiceClient.create()) {
String text = request.getText();
Document doc = Document.newBuilder() // Google Cloud Natural Language API์ ๋๊ฒจ์ค Document ๊ฐ์ฒด ์์ฑ
.setContent(text) // ๋ถ์ํ ์ค์ ํ
์คํธ ์ค์
.setType(Type.PLAIN_TEXT) // ๋ถ์ ๋์์ด ์ผ๋ฐ ํ
์คํธ์์ ์ง์
.build(); // ์ต์ข
Document ๊ฐ์ฒด ์์ฑ
Sentiment sentiment = language
.analyzeSentiment(doc) // Google Cloud์ ๊ฐ์ ๋ถ์ ์์ฒญ, ํ
์คํธ์ ๊ฐ์ ์ ๋ถ์ํด์ ์ ์ ๋ฐํ
.getDocumentSentiment(); // ๋ฌธ์ ์ ์ฒด์ ๋ํ ํ๊ท ๊ฐ์ ์ ์(Sentiment)๋ฅผ ๊ฐ์ ธ์ด
response.setScore(sentiment.getScore());
response.setMagnitude(sentiment.getMagnitude());
return ResponseEntity.ok(response);
} catch (Exception e) {
e.printStackTrace();
System.err.println("Google Cloud API ํธ์ถ ์ค ์์ธ ๋ฐ์: " + e.getMessage());
return ResponseEntity.badRequest().build();
}
}
์ด๋๋ก ์์ฑํ๊ณ ๋ค์ ์คํํด๋ดค๋๋...
java.io.IOException: Your default credentials were not found.
To set up Application Default Credentials for your environment,
see https://cloud.google.com/docs/authentication/external/set-up-adc.
at cohttp://m.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:127)
... ์๋ต
Google Cloud API ํธ์ถ ์ค ์์ธ ๋ฐ์:
Your default credentials were not found.
To set up Application Default Credentials for your environment,
see https://cloud.google.com/docs/authentication/external/set-up-adc.
๋ญ ์ด๋ฐ ์๋ฌ๊ฐ ๋ฌ๋ค....
์ฐพ์๋ณด๋ ์ญ์๋ ์์๋๋ก ADC(Application Default Credentials)๋ฅผ ์ค์ ํ์ง ์์์ ๊ทธ๋ ๋ค.
๊ทธ๋์ ADC ์ค์ ๋ฐฉ๋ฒ ์ฐพ์๋ณด๋ค๊ฐ gcloud CLI ์ค์น๋ฅผ ํด์ผํ๊ณ .. ๊ทธ๊ฑฐ ์ค์นํ๋ ค๋ฉด ํ์ด์ฌ ๊น์์ ํ๊ฒฝ๋ณ์ ์ค์ ํด์ผํ๊ณ ... ํฌ๊ธฐํ ๊น ์ถ๋ ์ฐฐ๋ Gemini์น๊ตฌ์๊ฒ ๋ฌผ์ด๋ด์ ๋ฐฉ๋ฒ์ ๊ฒจ์ฐ ์ฐพ์๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋๋ผ๊ธฐ์ ์ฌํ๊ป ๋ณธ ADC ์ค์ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๊ฐํธํด์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์ค์ ๋ฌธ์๋ ์ฌ๊ธฐ ์ฐธ๊ณ ํ ๊ฒ
๋์ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ํด์ผํ๋ ์ด๊ธฐ ์ธํ ์ด ์ข ๋ณต์กํ๋ค.
[์ด๊ฑด Gemini ์ค๋ช ]
๋ค, Google Cloud API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋น์ค ๊ณ์ ํค ํ์ผ์ ํ๊ฒฝ ๋ณ์์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ฃผ ์์ธํ๊ณ ์ธ๋ฐํ๊ฒ ์๋ดํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ Google Cloud์์ **ADC(Application Default Credentials)**๋ฅผ ์ค์ ํ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค.
๐ ์๋น์ค ๊ณ์ ํค ํ์ผ ํ๊ฒฝ ๋ณ์ ์ค์ ์์ธ ๊ฐ์ด๋
์ด ๊ณผ์ ์ ํฌ๊ฒ โ GCP์์ ํค ํ์ผ ์์ฑ, โก ํค ํ์ผ์ ๋ก์ปฌ์ ๋ค์ด๋ก๋, โข ํ๊ฒฝ ๋ณ์ ์ค์ ์ ์ธ ๋จ๊ณ๋ก ๋๋ฉ๋๋ค.
๋จ๊ณ 1: GCP์์ ์๋น์ค ๊ณ์ ๋ฐ ํค ํ์ผ ์์ฑ
Google Cloud Platform ์ฝ์์์ API ํธ์ถ ๊ถํ์ ๊ฐ์ง ์ ์ฉ ๊ณ์ (์๋น์ค ๊ณ์ )์ ๋ง๋ค๊ณ , ๊ทธ ์ธ์ฆ์(ํค ํ์ผ)๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- Google Cloud Console ์ ์: [Google Cloud Console]์ ์ ์ํ์ฌ ํด๋น ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ์ด๋: ์ผ์ชฝ ๋ฉ๋ด์์ IAM ๋ฐ ๊ด๋ฆฌ์(IAM & Admin) > **์๋น์ค ๊ณ์ (Service Accounts)**์ผ๋ก ์ด๋ํฉ๋๋ค.
- ์ ์๋น์ค ๊ณ์ ์์ฑ:
- ์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด๋ฆ(์: nl-api-caller)์ ์ง์ ํ๊ณ ๋ง๋ญ๋๋ค.
- ์ญํ ๋ถ์ฌ (๊ฐ์ฅ ์ค์):
- ์ด ์๋น์ค ๊ณ์ ์ ํ๋ก์ ํธ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ ๋จ๊ณ์์ ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
- ๊ฒ์์ฐฝ์ "Cloud Natural Language API ์ฌ์ฉ์" ๋๋ **"Cloud Natural Language API User"**๋ฅผ ๊ฒ์ํ์ฌ ์ ํํ๊ณ ๋ถ์ฌํฉ๋๋ค. (์ด ์ญํ ์ด API ํธ์ถ ๊ถํ์ ์ ๊ณตํฉ๋๋ค.)
- ํค ์์ฑ ๋ฐ ๋ค์ด๋ก๋:
- ์๋น์ค ๊ณ์ ์ด ์์ฑ๋ ํ, ํด๋น ๊ณ์ ์ ํด๋ฆญํ์ฌ ์์ธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ํค(Keys) ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํค ์ถ๊ฐ > ์ ํค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํค ์ ํ์ผ๋ก JSON์ ์ ํํ๊ณ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- JSON ํ์ผ์ด ์๋์ผ๋ก ๋ก์ปฌ ์ปดํจํฐ์ ๋ค์ด๋ก๋๋ฉ๋๋ค. (์: my-project-xxxxxxxxxx.json)
๋จ๊ณ 2: JSON ํค ํ์ผ ์์ ํ๊ฒ ๋ณด๊ด
๋ค์ด๋ก๋ํ JSON ํ์ผ์ ๊ณง ๋น๋ฐ๋ฒํธ์ ๊ฐ์ต๋๋ค. ์ด ํ์ผ์ ์ธ๋ถ์ ๋ ธ์ถํ๊ฑฐ๋ Git ์ ์ฅ์์ ์ฌ๋ฆฌ๋ฉด ์ ๋ ์ ๋ฉ๋๋ค.
- ํ์ผ ๊ฒฝ๋ก ํ์ธ: ๋ค์ด๋ก๋ํ JSON ํ์ผ์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผ ๊ฐ๋ฅํ ์์ ํ ์์น๋ก ์ฎ๊น๋๋ค.
- ์์ ๊ฒฝ๋ก: C:\Users\YourName\gcp-keys\my-project-xxxxxxxxxx.json
- ์์ ๊ฒฝ๋ก: /home/user/gcp-keys/my-project-xxxxxxxxxx.json
- ํ์ผ ์ด๋ฆ ๋ณต์ฌ: ํ์ผ์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ฒ ๋ณต์ฌํด ๋ก๋๋ค.
๋จ๊ณ 3: ํ๊ฒฝ ๋ณ์ GOOGLE_APPLICATION_CREDENTIALS ์ค์
์ด์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋, Google Cloud ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด ํค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ์ ์๋๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ํ๊ฒฝ ๋ณ์๋ Spring ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ๋ก ๊ทธ ํฐ๋ฏธ๋ ์ธ์ ์์ ์ค์ ํด์ผ ํฉ๋๋ค.
๐ฅ๏ธ Windows (PowerShell/CMD)
- PowerShell ๋๋ CMD๋ฅผ ์ฝ๋๋ค.
- ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ณ , ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ณธ์ธ์ ์ค์ ๊ฒฝ๋ก๋ก ์์ ํฉ๋๋ค.
-
PowerShell
# PowerShell์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ (๊ถ์ฅ) $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\YourName\gcp-keys\my-project-xxxxxxxxxx.json" # CMD๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ set GOOGLE_APPLICATION_CREDENTIALS=C:\Users\YourName\gcp-keys\my-project-xxxxxxxxxx.json - ๊ฐ์ ํฐ๋ฏธ๋ ์ธ์ ์์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค (์: mvn spring-boot:run ๋๋ IDE์์ ์คํ).
๐ง Linux / macOS (Bash/Zsh)
- ํฐ๋ฏธ๋์ ์ฝ๋๋ค.
- ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ณ , ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ณธ์ธ์ ์ค์ ๊ฒฝ๋ก๋ก ์์ ํฉ๋๋ค.
-
Bash
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/gcp-keys/my-project-xxxxxxxxxx.json" - ๊ฐ์ ํฐ๋ฏธ๋ ์ธ์ ์์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค.
[์ด๊ฑด ๋ด์ค๋ช ]
1. ์๋น์ค ํ์ด์ง > IAM ๋ฐ ๊ด๋ฆฌ์ > ์๋น์ค ๊ณ์ ํ๋ฉด์ผ๋ก ์ด๋

์์ ๊ฐ์ ํ๋ฉด์ด ๋ณด์ฌ์ผ ํ๋ค.
2. ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ณ ์ญํ ๋ถ์ฌ
์ฐธ๊ณ ๋ก ์ญํ ๋ถ์ฌ๊ฐ ์ ์ผ ์ค์ํ๋ฐ, ๋ ์์ ํ๊ฒ ๋ชจ๋ ๊ถํ์ด ์๋ '์์ ์'๋ก ์ง์ ํ์๋ค.
์ด์ฐจํผ ๊ตฌ๊ธ์์ ์ค์ ํ ํ๋ก์ ํธ ์ฌ์ฉ์๋ ๋ ํ๋๋ฐ์ ์๊ธฐ ๋๋ฌธ์ด๋ค
์ด๊ฑด ์ํฉ์ ๋ฐ๋ผ ๊ถํ์ ์ฃผ๋ฉด ์ข์ ๋ฏ ํ๋ฐ, ์ด์จ๋ ํ์คํ๊ฑด APIํธ์ถ์ด ๊ฐ๋ฅํ ๊ถํ์ ์ค์ผ ํ๋ค.

์ฌ๊ธฐ์ Cloud Natural Language API User๊ถํ์ ์ฐพ์์ ์ค์ ํ๋ผ๋๋ฐ, ๋์ ํ ๋ชป์ฐพ๊ฒ ์ด์ ๊ทธ๋ฅ '์์ ์'๋ก ์ง์ ํ๋ค. ์ด์ฐจํผ ๋๋ง ์ฐ๋ ํ๋ก์ ํธ๋๊น ์ด๋ค ๊ตฌ์ฑ์์ด๋ ๊ถํ์ ์๊ด ์์ผ๋๊น....์ด๊ฑด ์๊ฒ๋๋ฉด ๋์ค์ ์ ๋ฆฌํ๊ฒ ๋ค.
์ด์จ๋ ์๋น์ค ๊ณ์ ์ ๋ง๋ค๋ฉด key๋ฅผ ๋ฐ๊ธ๋ฐ์ ์ค๋น๊ฐ ๋๊ฑฐ๋ค.
3. ํค ๋ฐ๊ธ

์๋น์ค ๊ณ์ ์์ ํค ํญ์ด ์๋๋ฐ ๊ทธ๊ฑฐ ํด๋ฆญํ๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
์ฌ๊ธฐ์

์ ํค ๋ง๋ค๊ธฐ ์ ํ ํ

์ ๋ฐ ํ๋ฉด์ด ๋จ๋๋ฐ, ์ ๊ธฐ์ 'json'์ ์ ํํ๋ค.
๊ทธ๋ผ ์๋์ผ๋ก ๋ค์ด๋ก๋๊ฐ ๋์ด์ง๊ณ , ํ์ผ์ ์ด๋ฉด

์ ๋ฐ์์ผ๋ก jsonํํ์ ํ์ผ์ ๋ณผ ์ ์๋ค.
์ฐธ๊ณ ๋ก ์ด ํ์ผ์ ์์ด๋ฒ๋ฆฌ๋ฉด ์ ๋์ ๋์ ๋์ ๋์ ๋์๋๋ค!!!!!!!!!!!
3. ํ์ผ์ ํ๋ก์ ํธ ์ธ๋ถ์ ์์น
์ฐธ๊ณ ๋ก ๋ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ํ์ผ์ C๋๋ผ์ด๋ธ์ 'Dev'๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ ๋ณด๊ด์ค์ธ๋ฐ, ๋ณด๊ด ๋ฐฉ์์ ์ฌ๋๋ง๋ค ๋ค๋ฅด๋ ์์ ์ ๋งก๊ธฐ๋๋ก ํ๋ค.
๊ทธ๋ฌ๋ ํ์คํ๊ฑด ์ ๋ ํ๋ก์ ํธ ํ์ผ ์์ ๋๋ฉด ์๋๋ค. ์ฐธ๊ณ ๋ก ๋ configํ์ผ์ ๋ฃ์ด๋์๋ค๊ฐ git pushํ ๋ ์๋ฌ๋ฅผ ๋ง๋ฌ๋๋ฐ...
remote: Resolve the following violations before pushing again
remote: - Push cannot contain secrets
remote: (?) Learn how to resolve a blocked push
remote: https://docs.github.com/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line#resolving-a-blocked-push
remote: —— Google Cloud Service Account Credentials ——————————
remote: path: api/src/main/resources/config/'๋ฐ๊ธ๋ฐ์jsonํ์ผ'
! refs/heads/main:refs/heads/main [remote rejected] (push declined due to repository rule violations)
Done
์ด๋ฐ์์ ๋ฌด์๋ฌด์ํ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋ฌ๋ค.
์์ ๊ฐ์ด google์์ ๋ฐ๊ธ๋ฐ์ jsonํค๋ฅผ ํ๋ก์ ํธ์ ํฌํจ์ํค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๋ชจ์์ด๋ค.
๊ฒ์ํด๋ณด๋ ํ๋ก์ ํธ ์ธ๋ถ์ ํ์ผ์ ์์นํ๊ณ ํ๊ฒฝ๋ณ์๋ฅผ ๊น์๋ ๋๋ค๊ณ ํ๋ค.

์ผ๋จ ๊ทธ๋์ ํ๋ก์ ํธ ๋ฐ๊นฅ ์ชฝ์ ์ ๋ ๊ฒ key๊ฐ ์๋ jsonํ์ผ์ ๋์๋ค.
4. ํ๊ฒฝ ๋ณ์ ์ค์

์ธํ ๋ฆฌ์ ์ด ๊ธฐ์ค์ผ๋ก Run > Edit Configuration ์ ํ

Modify options ์ ํ

Environment variables(ํ๊ฒฝ ๋ณ์) ์ ํ

์ ๋ฐ์์ผ๋ก key=value๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋๊ณ , ์์ ์์ด์ฝ์ ํด๋ฆญํด์ Name๊ณผ value๋ฅผ ์ ๋ ฅํด๋ ๋๋ค.
์ฐธ๊ณ ๋ก name(key)์ GOOGLE_APPLICATION_CREDENTIALS๋ก ์ค์ ํ๋ค.
์ ์ํ๋ก IntelliJ ๋ค์ ์คํํ๋ฉด ๋!
์คํํ๋ฉด ์ ์์ ์ผ๋ก score๊ณผ magnitude๊ฐ ๋์ด์ค๋๊ฑธ ํ์ธํ๋ค!

์๋ฅผ ๋ค์ด์ "์ค๋ ๋ ์จ๊ฐ ์ ๋ง ํ์ฐฝํ๋ฐ ๋๊ฐ์ ์นํจ๋จน๊ณ ์ฌ๊น?"๋ผ๊ณ ์ ๋ ฅํ๋ฉด
score: 0.8, magnitude:0.8๋ก ๋์ด์จ๋ค.
๊ธฐ๋ถ์ด ๋งค์ฐ ์ข์๊ฑธ๋ก ์ ํ๋จํ๋๋ฏ ํ๋ค...
ํ๊ธฐ


๊ณ ์ํด์ ๋ค๋ง๋ค์ด๋จ๋๋ ์ค๋ฅ๊ฐ ๊ณ ์ณ์งใ ใ ใ

๊ทผ๋ฐ ๋ต๋ณ ์์ฑ ์๊ฐ์ด ์คํ 6์ 54๋ถ...
๋ด๋น์๋ ํด๊ทผ ์ํ์๋์ง์....?
[์ฐธ๊ณ ์๋ฃ]
[Spring Boot / IntelliJ] Application ํ๊ฒฝ๋ณ์ ์ค์ ํ๊ธฐ
ํ์ฌ ์งํ์ค์ธ ํ๋ก์ ํธ ์ด๊ธฐ ์ํ์ ์ค์ ํ์ผ์ ์๋์ ๊ฐ๋ค.์ฌ๋ฌ ๋ช ๊ณผ ํ์ ์ ํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ํ๊ฒฝ์์ ์ค์ ํ์ผ์ ์์ ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ ํ๋ค๊ฐ์์นซ ๊น๋จน๊ณ ๊นํ๋ธ์ ์ฌ๋ ค๋ฒ๋ฆด์ ์๊ธฐ ๋
velog.io
https://cloud.google.com/natural-language/docs/analyzing-sentiment?hl=ko
๊ฐ์ ๋ถ์ | Cloud Natural Language API | Google Cloud
์๊ฒฌ ๋ณด๋ด๊ธฐ ๊ฐ์ ๋ถ์ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ๊ฐ์ ๋ถ์์ ์ฃผ์ด์ง ํ ์คํธ๋ฅผ ์กฐ์ฌํ๊ณ ํ ์คํธ ๋ด์ ์ฃผ๋์ ์ธ ๊ฐ์ ์ ์๊ฒฌ์ ์๋ณํ
cloud.google.com
https://cloud.google.com/natural-language/docs/reference/libraries?hl=ko#client-libraries-usage-java
Natural Language ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Cloud Natural Language API | Google Cloud
C++, C#, Go, Java, Node.js, PHP, Python, Ruby๋ก Natural Language ์ฝ๋ ์์ฑ์ ์์ํฉ๋๋ค.
cloud.google.com
https://cloud.google.com/docs/authentication/application-default-credentials?hl=ko
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์๋ ๋ฐฉ์ | Authentication | Google Cloud
์๊ฒฌ ๋ณด๋ด๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์๋ ๋ฐฉ์ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ์ด ํ์ด์ง์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ
cloud.google.com
https://cloud.google.com/docs/authentication/set-up-adc-on-premises?hl=ko
์จํ๋ ๋ฏธ์ค ๋๋ ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ADC ์ค์ | Authentication | Google Cloud
Cloud Client Libraries, Google API Client Libraries, ๊ธฐํ ํ๊ฒฝ์ ๋ํด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
cloud.google.com
'ToyProjects๐งธ > Dalmuriโญ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Dalmuri] Supabase๋ก ๋๋ค ์ฃผ์ open API ๋ง๋ค๊ธฐ (0) | 2025.11.25 |
|---|---|
| ํ๋ก์ ํธ Dalmuri ๊ธฐํ ๋ฐ ์ค๊ณ (0) | 2025.08.16 |