지인의 소개로 들어가게 된 Yahoo Fantasy BasketBall 

 

작년에는 아쉽게 7위로 마무리하여 플레이오프에 참가를 하지 못하였는데,

 

올해는 우승으로 한 해를 마무리했다. 

 

내가 뽑은 선수들은 이랬다.  - 마지막까지 유지한 선수는 단 4명에 불과했다.

 

1R - 할리버튼
2R - 타운스
3R - 웸반야마
4R - 아누노비
5R - 조던풀
6R - 제이덥
7R - 마포주
8R - 디로
9R - 자스쥬
10R - 조쉬하트 
11R - PJ 워싱턴
12R - 알 호포드
13R - 말릭 몽크

 

 

그리고 마지막 주차 내 선수 리스트는 아래와 같았다. 

 

슈로더
할리버튼
제이덥
위긴스
웸반야마
하치무라
올리닉
웬카쥬
트레존스
그레이슨 알렌
칼데포프
마포주
듀렌

 

 

3R에서 뽑은 이번 시즌 신인왕이자 이번 시즌 판타지의 최고의 스타 웸반야마가 날 우승으로 이끌었다 ! 

 

이제 와이프조차 그의 이름을 안다 ~ 웸~~밴 야마 ~ 

 

 

그 외에도 웨이버로 엎어온 바셀, 그레이슨 알렌등이 매우 쏠쏠하게 로스터를 채워주었다.

 

시즌 초반에는 5R에서 뽑은 조던풀이 삽질을 어마어마하게 해서 스트레스 받고

 

다시는 보지 말자 ! 다른 팀에서 아무리 활약해도 다시 로스터에 넣고 싶지 않았다.

 

마지막에는 KAT가 부상으로 낙마하면서 패색이 짙었던 적도 있었지만..

 

결국 우승이라는 좋은 결과로 시즌을 마무리하였다 ! 

 

내년에도 좋은 성적 기대해본다 ~ 


이제 편안한 마음으로 금년도 플레이오프 레이커스를 응원해야겠다 ! 

동부는 할리버튼에 대한 의리로 인디애나를..

'게임' 카테고리의 다른 글

FIFA23관련 쓸만한 사이트 모음  (0) 2022.09.27
고전게임 팡팡 !!  (0) 2020.03.07
고전 명작 게임 추천 3탄  (0) 2018.12.06
고전 명작 게임 추천 2탄  (0) 2018.12.05
고전 명작 게임 추천 1탄  (0) 2018.12.05

 

이상형 월드컵 사이트 - 슈퍼컵에서 추출한 2024년 여자 아이돌 순위 ! 

 

여자 아이돌 한정판 이상형 월드컵(종료) : https://supercup.co.kr/limitStat?type=8gHknSTbVieP

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

 

현재, 4개의 한정판 이상형 월드컵이 진행 중입니다. (~3월 20일)

 

여자 아이돌 그룹 : https://supercup.co.kr/limitStat?type=OI3EHNlMJDPV

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

남자 아이돌 그룹 : https://supercup.co.kr/limitStat?type=ryMY75Z2IFAJ

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

여자 BJ : https://supercup.co.kr/limitStat?type=rLgfDqNPZeDo

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

유튜버(연예인 제외) : https://supercup.co.kr/limitStat?type=Mxj1ZlYy1hVa

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

 

❤️ 많은 참여 부탁드립니다. ❤️

 

공식 여자 아이돌 월드컵 : https://supercup.co.kr/matchstat?type=girlIdol

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

 

 

 

일을 하다보니 카카오 OAuth 연동 로그인이 사파리 브라우저에서 안되는 이슈가 발생했다. 

 

이유는 간단했다. 

 

iCloud 비공개 릴레이가 켜져있는 경우 

 

사파리 브라우저를 사용하면 IP추적을 막기 위해 IP를 주기적으로 변경시키는데 이 경우 

 

카카오 정책상 로그인 도중에 IP 변경 되는 경우 계정 탈취 시도와 구분할 수 없기 때문에

 

로그인 실패로 처리한다는 것

 

iOS 17이 되면서 이 기능이 더 자주 켜지게 되고 있는 것 같다. 

 

 

사파리 브라우저에서 카카오 로그인이 안되면

 

설정 > 사용자 이름 > iCloud > 비공개 릴레이 이동 후 

사용하지 않도록 셋팅해보자 ~ 

import random
from PIL import Image, ImageDraw, ImageFont


# 수식 생성 함수
def generate_equation():
operand_count = random.randint(2, 3) # 항의 개수 (2-3)
equation = ""

# 랜덤하게 숫자와 연산자를 조합하여 수식 생성
for i in range(operand_count):
if i > 0:
operator = random.choice(["+", "-"]) # 연산자 선택 (+, -)
equation += operator
equation += str(random.randint(1, 9)) # 숫자 선택

# 곱하기 연산자 추가 (최대 1)
if random.random() < 0.5: # 50%의 확률로 곱하기 연산자 추가
equation += "X" + str(random.randint(1, 9))

# 나누기 연산자 추가 (최대 1)
if random.random() < 0.5: # 50%의 확률로 나누기 연산자 추가
divisor = random.randint(1, 9)
dividend = random.randint(1, 9) * divisor
equation += "/" + str(divisor)
answer = dividend / divisor

# 정답이 소수점으로 나오는 경우 다시 수식 생성
if answer != int(answer):
return generate_equation()

else:
# 정답 계산하여 수식 완성
answer = eval(equation.replace("X", "*"))

equation += " = "

return equation, int(answer)


# 이미지 크기 설정
image_width = 600
image_height = 100

# 이미지 저장 디렉토리
save_directory = "C:/app/math/"

# 폰트 설정
font_path = "C:/Windows/Fonts/Arial.ttf"
font_size = 40
font = ImageFont.truetype(font_path, font_size)

# 500개의 수식 이미지 생성 및 저장
for i in range(500):
equation, answer = generate_equation()

# 이미지 생성
image = Image.new("RGB", (image_width, image_height), (255, 255, 255))
draw = ImageDraw.Draw(image)

# 수식을 이미지에 그리기
draw.text((10, 10), equation, font=font, fill=(0, 0, 0))

# 이미지 저장
filename = save_directory + str(answer) + ".png"
image.save(filename)

 

* 코드 설명
수식을 저장한다.

항은 2-3개정도로 하고 조정이 가능하다.

최종적으로 파이썬py파일을 실행하면

수식이미지 500개가 나오고 정답은 파일명이다. (정답이 중복되면 덮어쓰니 주의)

 

위 코드로 만든 사칙연산 퀴즈는 아래 사이트에서 진행할 수 있다.

https://supercup.co.kr/quizstat?type=keNKrpTRZPgq&start=Y 

 

import os
import re
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# 저장할 디렉토리 경로
directory = "C:/app/pokemon9"

# 디렉토리가 존재하지 않을 경우 생성합니다.
if not os.path.exists(directory):
os.makedirs(directory)

# 포켓몬 번역 데이터를 포함한 딕셔너리 생성
translation_data = {
"Sprigatito": "나오하",
"Floragato": "나로테",
"Meowscarada": "마스카나",
"Fuecoco": "뜨아거",
"Crocalor": "악뜨거",
"Skeledirge": "라우드본",
"Quaxly": "꾸왁스",
"Quaxwell": "아꾸왁",
"Quaquaval": "웨이니발",
"Lechonk": "맛보돈",
"Oinkologne": "퍼퓨돈",
"Tarountula": "타랜툴라",
"Spidops": "트래피더",
"Nymble": "콩알뚜기",
"Lokix": "엑스레그",
"Pawmi": "빠모",
"Pawmo": "빠모트",
"Pawmot": "빠르모트",
"Tandemaus": "두리쥐",
"Maushold": "파밀리쥐",
"Fidough": "쫀도기",
"Dachsbun": "바우첼",
"Smoliv": "미니브",
"Dolliv": "올리뇨",
"Arboliva": "올리르바",
"Squawkabilly": "시비꼬",
"Nacli": "베베솔트",
"Naclstack": "스태솔트",
"Garganacl": "콜로솔트",
"Charcadet": "카르본",
"Armarouge": "카디나르마",
"Ceruledge": "파라블레이즈",
"Tadbulb": "빈나두",
"Bellibolt": "찌리배리",
"Wattrel": "찌리비",
"Kilowattrel": "찌리비크",
"Maschiff": "오라티프",
"Mabosstiff": "마피티프",
"Shroodle": "땃쭈르",
"Grafaiai": "태깅구르",
"Bramblin": "그푸리",
"Brambleghast": "공푸리",
"Toedscool": "들눈해",
"Toedscruel": "육파리",
"Klawf": "절벼게",
"Capsakid": "캡싸이",
"Scovillain": "스코빌런",
"Rellor": "구르데",
"Rabsca": "베라카스",
"Flittle": "하느라기",
"Espathra": "클레스퍼트라",
"Tinkatink": "어리짱",
"Tinkatuff": "벼리짱",
"Tinkaton": "두드리짱",
"Wiglett": "바다그다",
"Wugtrio": "바닥트리오",
"Bombirdier": "떨구새",
"Finizen": "맨돌핀",
"Palafin": "돌핀맨",
"Varoom": "부르롱",
"Revavroom": "우락고래",
"Cyclizar": "가비루사",
"Orthworm": "어써러셔",
"Glimmet": "싸리용",
"Glimmora": "초롱순",
"Greavard": "키키링",
"Houndstone": "노고고치",
"Flamigo": "불꽃새",
"Cetoddle": "물뚜껑",
"Cetitan": "물거인",
"Veluza": "바다소라",
"Dondozo": "물마리",
"Tatsugiri": "땅가리기",
"Annihilape": "저승갓숭",
"Clodsire": "토산염",
"Farigiraf": "장착노래",
"Dudunsparce": "두던스파",
"Kingambit": "킹엠비트",
"Great Tusk": "위대한엄니",
"Scream Tail": "우렁찬꼬리",
"Brute Bonnet": "사나운버섯",
"Flutter Mane": "날개치는머리",
"Slither Wing": "땅위를 기는날개",
"Sandy Shocks": "모래전격",
"Iron Treads": "무쇠바퀴",
"Iron Bundle": "무쇠보따리",
"Iron Hands": "무쇠손",
"Iron Jugulis": "무쇠목걸이",
"Iron Moth": "무쇠나방",
"Iron Thorns": "무쇠가시",
"Frigibax": "서리고드",
"Arctibax": "북극고드",
"Baxcalibur": "고드호른",
"Gimmighoul": "모으령",
"Gholdengo": "고스트레고",
"Wo-Chien": "파이찬",
"Chien-Pao": "얼어바",
"Ting-Lu": "춤추네",
"Chi-Yu": "기랑",
"Roaring Moon": "울부짖는 달",
"Iron Valiant": "무쇠용갑",
"Koraidon": "코라이돈",
"Miraidon": "미라이돈",
"Walking Wake": "걷는 파도",
"Iron Leaves": "무쇠잎새"
}


# 웹 페이지에 GET 요청을 보내고 응답을 받아옵니다.
url = "https://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_National_Pok%C3%A9dex_number"
response = requests.get(url)

# 응답의 텍스트를 BeautifulSoup 객체로 변환합니다.
soup = BeautifulSoup(response.text, 'html.parser')

# 테이블을 찾습니다.
tables = soup.find_all('table', class_='roundy')

# 3세대 포켓몬 데이터 추출
table_3rd_gen = tables[8]
for row in table_3rd_gen.find_all('tr', style=lambda style: style and 'background:#FFF' in style):
cells = row.find_all('td')
if len(cells) >= 4:
number = cells[0].text.strip()
english_name = cells[2].find('a').text.strip()
image_cell = cells[1]
image_url = image_cell.find('img')['src'] if image_cell.find('img') else None

if image_url and number:
# 이미지 URL에 스키마를 추가합니다.
image_url = urljoin(url, image_url)
# 이미지 URL에서 "70px" 부분을 "500px"로 변경합니다.
image_url = image_url.replace("70px", "500px")

# 번호 포맷 변경: #0252 -> (No.252)
number = re.sub(r'#0*(\d+)', r'(No.\1)', number)

# 포켓몬 이름을 한글로 번역
korean_name = translation_data.get(english_name, english_name)

# 파일명 포맷 변경: Treecko (No.252).png -> 나무지기 (No.252).png
file_name = f"{korean_name} {number}.png"
file_path = os.path.join(directory, file_name)

# 이미지 다운로드
response = requests.get(image_url)

# 이미지 저장
with open(file_path, 'wb') as f:
f.write(response.content)

print(f"번호: {number}")
print(f"영어 이름: {english_name}")
print(f"한글 이름: {korean_name}")
print(f"이미지 다운로드 완료: {file_path}")
print("---------------")

포켓몬스터 데이터를 저장하였다. 

파일명 포맷 변경하였고, 

 

포켓몬 이름을 한글로 변환하였다. 

위는 9세대 포켓몬을 크롤링하여 저장하는 로직이다.

 

번역데이터는 노가다가 아니라 chatgpt를 이용하여 억지로 만들었다.

 

chatgpt사용이 날이 갈수록 고도화되는 중이랄까..

 

chatgpt는 2021년 9월까지 학습해서 8세대 9세대 포켓몬의 이름은 몰랐다..

 

나무위키 정보랑 해당 url 정보를 조합해서 대화로 어떻게든 데이터를 번역시켰다.

 

귀여운 9세대 포켓몬

 

 

1세대부터 8세대까지 포켓몬도 

 

table_3rd_gen = tables[8]

이 값을 수정하면 출력할 수 있다.

1세대는 tables[0]이다.

 

영어랑 한글 번역은 chatgpt한테 문의하면 나온다..

 

 

그렇게 탄생한 ! 

이상형 월드컵 주소는 아래와 같다..

 

https://supercup.co.kr/matchstat?type=eCCb8BlKtPO2 

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

 

SuperCup에 인물퀴즈 기능을 오픈했습니다 ! 축하축하 ! 

 

인물퀴즈는 현재 여자아이돌, 여자배우, 남자아이돌, 남자배우, 랜덤 

총 5개의 인물퀴즈를 제공하고 있습니다.

 

본인의 덕후력을 테스트해보세요 !

 

https://www.supercup.co.kr/quizstat?type=random&start=Y 

 

아이돌 움짤, 여자 IDOL 이상형 월드컵, 이상형 월드컵 게임, 이상형 월드컵 통계 SUPERCUP, 이상형만

공식적인 이상형 월드컵 사이트 - SUPERCUP입니다. 이상형 월드컵을 만들어서 즐겨보세요

supercup.co.kr

 

 

예전부터 꿈을 꾸면 와 이건 정말 신박한 아이디어다 ! 이러면서 어딘가 기록하고 싶을 때가 있었다.

 

점점 바쁘게 살면서 꿈을 꾸는 일이 줄었지만, 이제서라도 남겨볼려고 한다.

 

----------------------------------------------------------------------------------------------------------------------------------------

 

정말 자주 꾸는 꿈 이야기이다.

 

꿈이 참 신기한게 배경이나 환경이 복붙되어 있을 때가 많다. 

 

내가 꾸는 꿈에서 정~~~~~~~~~~말 자주 등장하는 배경은 바로 수능 치기전이고, 

 

꿈에서의 나는 대학교까지 다니고, 버젓히 현재 다니는 회사까지 다니다가 갑자기 

 

수능을 치러 돌아가는 설정이다. 

 

----------------------------------------------------------------------------------------------------------------------------------------

 

꿈에서의 나는 고등학교 2학년이다.

 

중학교때부터 알고 현재는 삼성전자에 가 있는 친했던 친구  동욱(가명을 쓰겠다.)이랑 수업을 듣고 있다.

 

시간여행을 오기 전에 나는 고등학교 1~2학년 동안은 거의 전교 1-2등 했었다.

 

그런데 시험을 망쳤나보다. 그러니 시간여행을 해도 성적이 나빠진 것이다.

 

수업이 시작되고 체육시간인데, 국사선생님이 수업을 한다. 

 

나는 생각한다. 

 

다시 고등학생으로 돌아 온 것은 좋은 대학에 가서 다른 인생을 살기 위함인데..

 

이럴 바에는 다시 회사에 가는 게 낫겠다는 생각을 하게 된다. (시간여행 끝)

 

정말 신기하게도 이 생각은 내가 꿈을 꿀 때 여러번 아주 자주 했던 생각이다.

 

이런 유사한 꿈을 수도 없이 꾸었다는 것이다 !! (깨고 나니 생각이 났다.)

 

왠지 꿈에서의 나는 대학교까지 간 다음에 다시 수능을 다시 공부하는 설정인가보다.

 

국사선생님은 체육교사가 아직 안 뽑힌다는 다소 이상한 말을 하고,

 

체육책을 펴라고 하는데, 나한테 책을 샀냐고 물어본다.

 

아무리 찾아도 체육책이 없다. (왜 없는지는 모르겠는데, 서랍을 뒤져봐도 없다)

 

체육책을 찾다가, 꿈속에서 나는 생각한다.

 

아 ~ 다시 시간여행 전으로 돌아가고 싶다. 

 

그래서 자퇴해야겠다고 다짐한다.

 

친구 동욱에게는 '나 사실 시간여행 중이라, 다시 원래 시간으로 돌아갈려고 한다'고 하고, 친구는 또 그 말에 수긍한다.

 

자퇴를 위해 교무실로 가는 길이다. 그러다가 ..

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

갑자기 시점이 전환되어 현재 회사 팀장님이랑 만나는 장면이 나온다. 

 

이 때는 시간여행을 가기 전 현재이다. 

 

'팀장님, 저 고등학교 때로 시간여행 할려구요.'

 

팀장님, 저 고등학교 때로 시간여행 할려구요 로 만든 AI 이미지 (왠 미소녀?)

 

팀장님이 말한다.

 

'그런 게 어딨냐, 내 기억은 어떡하냐.. 까먹지를 않을텐데.'

 

여기서 설정이 하나 등장한다.

 

시간여행은을 하면 또 하나의 세계선이 생기는데,

 

시간여행이 워낙 비싸서 남이 만든 여러 세계선 중 하나에서 시간 비슷한 곳에 들어가서 산다고 한다.

(머스크가 만든 10년 전 세계관이 5억에 팔리고 이런 느낌?, 머스크의 세계관속에 들어가면 나랑 머스크가 시간회귀자인 것이다.)

 

 

 

그리고 내가 시간여행을 가게 되면 현재 세계관에서의 나란 존재는 정각이 되며 모든 사람에게서 리셋이 된다고 한다.

(왠지 모르겠지만 나는 이렇게 팀장님께 설명을 한다.)

 

팀장님이 그러면 시간여행 하다가 돌아오면 돌아오자말자 자기한테 전화를 해달라고 했다. 

 

그래서 '팀장님 , 저 땡땡입니다.'

 

팀장님이 '어 ~ 그래! 땡땡아' 라고 하면 팀장님한테 내가 밥을 사는 것이고,

 

팀장님이 '죄송하지만 누구세요?' 라고 하면 팀장님이 밥을 사는 것이었다. 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

갑자기 다시 시점이 시간여행한 시점으로 오면서

 

이제는 볼 수 없는 내가 대학생 때 돌아가신 할머니가 나왔다. 

 

'이제는 볼 수 없는 내가 대학생 때 돌아가신 할머니' 로 만든 AI 이미지

 

할머니를 마지막으로 보는 거라고 생각하고 나는 마음 아파한다.

 

왜냐하면 현재 시간으로 돌아오면 할머니는 없으니까..

 

예전에 살던 아파트는 왠지 모르게 좋아져있다. 

 

뭔가 굉장히 AI스러운 공기청정기가 푸른 빛을 내고 있다.

 

나는 새벽에 잠에서 깨서 거실에 있을 때 할머니가 나온다.

 

'안 자고 있었나 ~ ?'

 

'네 할머니.. 저 이제 돌아가야 합니다.'

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

꿈에서 깨고 현재가 되었을 때 

 

재밌는 설정. 특히 시간여행이 미래에 보편화 되어있지만, 

 

시간여행이라는 것은 너무나 비싼 거라 (멀티버스를 만드는 것이라.)

 

남이 만든 세계관으로 들어가는 게 보편적이라는 설정이 내 마음에 쏙 들었고, 

 

글로 남기고 싶었다. 

 

 

 

 

 

  • Spring Boot & DDD(Domain-Driven Design) 아키텍처

 

DDD는 복잡한 도메인을 이해하고 구성하는 데에 초점을 맞춘 소프트웨어 개발 방법론입니다. 

 

이는 애플리케이션을 여러 개의 레이어로 나누어 도메인 모델을 중심으로 설계하는 것을 강조합니다. 

 

이러한 레이어는 각각의 책임과 역할을 가지며, 각각의 레이어는 독립적으로 변경될 수 있습니다.

 

Spring Boot는 Spring Framework의 간소화된 버전으로, Java 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다. 

 

Spring Boot는 설정의 자동화, 내장된 서버, 스프링 기반 애플리케이션의 개발과 배포를 간편하게 만들어줍니다.

 

Spring Boot와 DDD를 함께 사용할 때, 전통적인 Spring 기반의 계층 구조 대신 DDD의 개념을 반영한 구조를 적용할 수 있습니다. 

 

일반적으로 다음과 같은 구성 요소로 구성됩니다.

 

도메인 모델(Domain Model):
DDD에서 도메인 모델은 애플리케이션의 핵심이 되는 비즈니스 도메인을 나타내는 객체입니다. 도메인 모델은 도메인의 개념과 규칙을 캡슐화하고, 
비즈니스 로직을 처리하는 책임을 갖습니다. Spring Boot에서는 도메인 모델을 일반적인 Java 클래스로 표현할 수 있습니다.

 

리포지토리(Repository):
리포지토리는 도메인 객체를 영구 저장소에 저장하고 검색하기 위한 인터페이스입니다. 
Spring Boot에서는 리포지토리를 인터페이스로 정의하고, Spring Data JPA 등의 기술을 사용하여 데이터베이스와의 상호작용을 구현할 수 있습니다.

 

애플리케이션 서비스(Application Service):
애플리케이션 서비스는 도메인 모델 사이의 상호작용을 조정하고, 도메인 객체의 상태 변경을 처리합니다. 
Spring Boot에서는 애플리케이션 서비스를 일반적인 Spring Bean으로 구현할 수 있습니다.

 

인프라스트럭처(Infrastructure):
인프라스트럭처는 데이터베이스, 외부 서비스, 메시징 시스템 등과의 상호작용을 담당합니다. 
Spring Boot에서는 데이터베이스 연결, 메시지 브로커 설정 등을 위해 Spring의 기능을 사용할 수 있습니다.

  • DDD 주요 레퍼런스
  1. Amazon: Amazon은 대규모 분산 시스템 및 마이크로서비스 아키텍처를 구축하는데 Spring Boot와 DDD 구조를 활용하고 있습니다. Amazon의 여러 서비스와 플랫폼 중에서도 AWS(Amazon Web Services)는 Spring Boot와 DDD를 사용하여 개발되었습니다.
  2. Netflix: Netflix는 Spring Boot와 DDD 구조를 사용하여 대규모 온디맨드 비디오 스트리밍 플랫폼을 개발하고 운영합니다. Netflix의 다양한 마이크로서비스는 도메인 모델과 DDD의 원칙에 따라 설계되었으며, Spring Boot를 통해 개발 및 배포되고 있습니다.
  3. Microsoft: Microsoft는 Spring Boot와 DDD 구조를 사용하여 클라우드 서비스, 기업 애플리케이션, 인프라스트럭처 관리 도구 등 다양한 솔루션을 개발하고 있습니다. Azure를 통해 Spring Boot와 DDD를 사용하여 개발된 애플리케이션을 구축할 수 있습니다.
  4. 현대자동차그룹: 현대자동차그룹은 Spring Boot와 DDD 구조를 활용하여 자동차 관련 애플리케이션과 서비스를 개발하는데 사용하고 있습니다. 현대자동차그룹은 DDD의 주요 원칙을 적용하면서 도메인 모델을 중심으로 한 애플리케이션 아키텍처를 구축하고 있습니다.

 

JAVA는 객체 지향 프로그래밍 언어로, 플랫폼에 독립적인 언어라는 특징이 있다.

 

자바 컴파일러는 CLASS파일을 생성하고 이 파일의 바이트코드를 읽은 뒤 자바 가상머신에서 기계어로 바꾸어 실행하기 때문에 윈도우, 리눅스, 맥OS등 OS에 구분없이 잘 작동합니다.

 

요즘 개발언어로 각광받고 있는 Python, Ruby를 순수 객체지향이라 부르는데, JAVA는 모든 것을 객체로 보는 언어는 아니다. *원시타입(Primitive)은 객체로 보지 않음

 

객체 지향 프로그래밍을 잠깐 설명하자면, 작은 문제들을 해결할 수 있는 객체들을 만든 후 객체들을 조합해서 큰 문제를 해결하는 상향식 해결법을 도입해서 만든 것으로 이런 객체들은 만들어 놓기만 하면 재사용이 가능하다는 장점이 있다.

 

객체 지향 프로그래밍 언어는 요소로는 캡슐화 (변수와 함수를 하나의 단위로 묶는 것), 상속(자식 클래스는 부모 클래스의 특성 & 기능을 물려받아서 사용한다는 것, 캡슐화를 유지하면서 클래스 재사용이 용이하게 해준다.), 다형성(서브타입, 매개변수, 임시, 강제)등이 있다.

  • 다형성 부분은 서적을 통해서 읽어보시면 개발하실 때 반드시 도움이 되실 것입니다.

 

웹 애플리케이션 제작을 위해서 사용하는 규격은 JAVA 서블릿과 JSP(Java 서버 페이지)가 있다.  닷넷으로 치면 서블릿이 .cs(로직), jsp가 .aspx페이지(화면)

 

JDK(Java Development Kit)로 설치를 하면 javac라는 컴파일러를 제공하지만 따로 개발환경을 해주지 않기 때문에! 

 

이클립스, Intellij와 같은 프로그램을 설치해서 사용해야 한다.

 

프로젝트에 필요한 라이브러리나 빌드 관리 도구는 maven, gradle이 많이 채용된다.

 

오라클에서 제공하는 버전은 요즘 유료화 되어, 기업에서 사용 시 OpenJDK를 사용하는 것이 일반적인 추세이다.

 

JAVA에서 사용하는 웹 프레임워크는 대표적으로 스트럿츠(STRUTS), 스프링(Spring)가 있다.

 

JAVA로 웹 서버를 개발하면 대부분 Spring에서 만든다고 생각하시면 되는데, 구조는 아래와 같습니다. 

 

 

Spirng의 특징은 아래와 같습니다.

  • Spring은 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS 가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있습니다.
  • Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다. 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다.
  • 제어의 역전(IOC , Inversion Of Control) : 클래스 내부의 객체 생성 -> 의존성 객체의 메소드 호출이 아닌, 스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 -> 의존성 객체의 메소드 호출 구조입니다. 스프링에서는 모든 의존성 객체를 스프링이 실행될때 만들어주고 필요한 곳에 주입해줍니다.
  • 의존성 주입(DI, Dependency Injection) : 어떤 객체(B)를 사용하는 주체(A)가 객체(B)를 직접 생성하는게 아니라 객체를 외부(Spring)에서 생성해서 사용하려는 주체 객체(A)에 주입시켜주는 방식입니다. 사용하는 주체(A)가 사용하려는 객체(B)를 직접 생성하는 경우 의존성(변경사항이 있는 경우 서로에게 영향을 많이 준다)이 높아집니다. 하지만, 외부(Spring)에서 직접 생성하여 관리하는 경우에는 A와 B의 의존성이 줄어듭니다.
  • AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 지원 
  • POJO(Plain Old Java Object)방식으로 자바객체는 특정한 인터페이스를 구현하고 클라스 상속이 필요치 않습니다. (참조 사이트 : https://velog.io/@galaxy/Spring%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8A%B9%EC%A7%95-POJO)
  • 트랜젝션 처리를 위한 일관된 방법을 제공합니다.
  • 영속성 관련 다양한 API를 지원합니다.
  • API연동을 지원합니다.

 

스프링 개념 

(참조 사이트 : https://life-with-coding.tistory.com/412)

 

Spring Boot는 Spring Framework 기반 프로젝트를 쉽고 빠르게 만들어주는 라이브러리라고 생각하시면 편합니다. (스프링 프레임워크를 보다 쉽게 셋팅할 수 있게 해줌)

 

Spring Framework로 셋팅할려면 기존에는 개발자가 모든 것을 셋팅해야 했는데, (ibatis, mybatis, dbcp, logback, log4j, maven, gradle, mvc servlet, mvc interceptor, spring security등등)

 

이런 복잡한 설정을 대부분 미리 셋팅해 놓아 바로 웹 개발에 들어갈 수 있도록 했다.

 

SPRING BOOT가 나오기 전에는 프로젝트를 진행할 때 기존 프로젝트 사용설정을 복붙하고 필요한 것은 다시 셋팅해주는 번거로움이 있었는데 이를 대체한 것이다.

 

Spring Boot는 이외에도 많은 장점이 있는데, Spring 라이브러리와 third party 라이브러리 버전을 자동으로 관리해주는 기능이라던지, tomcat을 내장하고 있으며, war가 아닌 jar로 패키징이 가능하고, starter 라이브러리를 등록하여 의존성을 간단히 관리할 수 있다.

한글이 깨지면 화가난다.

 

방법 1. html 요소에 아래 코드 삽입

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">

방법 2. jsp 상단에 아래 코드 삽입

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

방법 3. IDE(이클립스, 인텔리제이, 비쥬얼스튜디오)에 인코딩을 UTF-8로 변경

 

3가지 방법으로 앵간하면 해결된다.

 

+ Recent posts