✅JetBrains 사이트( https://www.jetbrains.com/ko-kr/academy/student-pack/#students )
접속 후 학생용 패키지 신청하기 클릭

✅정보 입력 후 제품 신청을 하면
입력했던 본인의 학생 메일 계정으로 메일이 전송됨

✅ 메일 내 링크 클릭

✅ 새로 받은 라이센스 확인





새로운 레포지토리에 기존 레포지토리를 통으로 옮겨야하는 일이 생김
1. 신규 레포지토리 생성
2. git clone mirror 옵션 사용
copy_repository_url에는 복사하고자 하는 레포지토리 url 넣어주고 copy_repository_name 는 clone을 했을 때 내 pc에 폴더가 생성되는데 그 폴더명 적으면 됨(레포지토리명)
git clone --mirror <copy_repository_url>


3. 새 레포지토리를 origin으로 지정
cd <copy_repo_name>.git
# 2) 새 레포를 origin으로 지정
git remote set-url origin <new_repo_url>
#새 레포로 푸시(브랜치/태그 포함)
git push --mirror

| SOAP에 대해 알아보자 (0) | 2026.02.04 |
|---|---|
| [iBATIS] 동적 SQL 태그 <iterate> (0) | 2025.10.30 |
| notepad++ 꿀팁 (0) | 2025.07.17 |
| 카카오 지도 API 사용법 - kakao is not defined (0) | 2025.05.10 |
| Sublime text 꿀팁 (0) | 2024.06.25 |
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- 헤더는 선택적으로 사용됨. 공통 정보 (인증, 시스템 정보 등) 포함 -->
</soap:Header>
<soap:Body>
<!-- 실제 업무 데이터 -->
</soap:Body>
<!-- 만약 오류가 발생하면, Fault 요소가 여기 포함 -->
</soap:Envelope>
👉 XML을 반드시 이런 모양으로 보내라고 강제하는 규칙이 SOAP임(이 틀을 하나라도 어기면 SOAP 아님)

| 구분 | REST | SOAP |
| 정체성 | 아키텍처 스타일 | 메시지 규격(표준) |
| 전송 방식 | HTTP 전용 | 주로 HTTP (SMTP 등도 가능) |
| 데이터 형식 | JSON (주력), XML.. | XML 고정 |
| 메시지 구조 | 자유로움 | Envelope / Header / Body 강제 |
| 인터페이스 정의 | 문서 기반 (Swagger 등) | WSDL 기반 계약 |
| 데이터 검증 | 상대적으로 약함 | XSD 기반 강력 |
| 에러 표현 | HTTP 상태코드 중심 | SOAP Fault 표준화 |
| 보안/확장 | 구현체마다 다름 | Header에 구조적으로 포함 가능 |
| 유연성 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 엄격함 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 속도/가벼움 | 빠르고 가벼움 | 상대적으로 무거움 |
| 장애 추적 | 애플리케이션별 상이 | 원인 구분 쉬움 |
| 주 사용처 | 웹/모바일/외부 API | 공공·금융·전력·정산 |
https://jeong-pro.tistory.com/129
Spring+Apache cxf를 이용한 SOAP XML 통신 튜토리얼 (RESTful api? Web Services, SOAP UI)
Spring + Apache cxf로 SOAP 통신하기 apache cxf 프레임워크를 이용하면 SOAP 통신을 할 수 있다. apache cxf의 장점은 spring과의 연동이 가능하다는 점이다. 각설하고 다소 유행(RESTful API - JSON)에 뒤떨어지지
jeong-pro.tistory.com
웹서비스 - CXF vs AXIS
오랜만에 글을 씁니다.. 이리저리 치여 많이 소홀했네요. 웹서비스에 관해 아무것도 모르다가 정보처리기사도 준비하고, 이번에 프로젝트를 하면서 새롭게 알게된 웹서비스를 구현해보려고 합
dojjong.tistory.com
| [Git] 기존 Repository 복제해서 신규 Repository 생성하기 (0) | 2026.02.08 |
|---|---|
| [iBATIS] 동적 SQL 태그 <iterate> (0) | 2025.10.30 |
| notepad++ 꿀팁 (0) | 2025.07.17 |
| 카카오 지도 API 사용법 - kakao is not defined (0) | 2025.05.10 |
| Sublime text 꿀팁 (0) | 2024.06.25 |
log4j.rootLogger=DEBUG,console,rolling
log4j.logger= DEBUG
log4j.logger.java.sql= DEBUG
log4j.logger.jdbc.sqltiming=DEBUG,stdout
log4j.additivity.jdbc.sqltiming=false
log4j.logger.jdbc.sqlonly=ERROR,sql
log4j.additivity.jdbc.sqlonly=false
log4j.logger.jdbc.audit=ERROR,jdbc
log4j.additivity.jdbc.audit=false
log4j.logger.jdbc.resultset=ERROR,jdbc
log4j.additivity.jdbc.resultset=false
log4j.logger.org.springframework=DEBUG
log4j.logger.org.springframework.transaction=DEBUG
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR
log4j.logger.java.sql.Connection=ERROR
log4j.logger.java.sql.Statement=ERROR
log4j.logger.java.sql.PrepareStatement=ERROR
log4j.logger.java.sql.ResultSet=ERROR
log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rolling.File=../logs/dr.log
log4j.appender.rolling.Append=true
log4j.appender.rolling.DatePattern= '.'yyyy-MM-dd
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.ConversionPattern=[%d] %-5p - %m%n
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n
log4j.appender.jdbc=org.apache.log4j.ConsoleAppender
log4j.appender.jdbc.layout=org.apache.log4j.PatternLayout
log4j.appender.jdbc.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n
log4j.appender.sql=org.apache.log4j.ConsoleAppender
log4j.appender.sql.layout=org.apache.log4j.PatternLayout
log4j.appender.sql.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n
불편한 점
log4j.rootLogger=DEBUG,console,rolling
log4j.logger.jdbc.sqltiming=DEBUG,console
log4j.additivity.jdbc.sqltiming=false
log4j.logger.jdbc.sqlonly= ERROR
log4j.additivity.jdbc.sqlonly=false
log4j.logger.jdbc.audit=ERROR
log4j.additivity.jdbc.audit=false
log4j.logger.jdbc.resultset=ERROR
log4j.additivity.jdbc.resultset=false
log4j.logger.org.springframework=ERROR
log4j.logger.org.springframework.transaction=ERROR
log4j.logger.com.ibatis= ERROR
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR
log4j.logger.java.sql.Connection=ERROR
log4j.logger.java.sql.Statement=ERROR
log4j.logger.java.sql.PreparedStatement=ERROR
log4j.logger.java.sql.ResultSet=ERROR
log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rolling.File=../logs/dr.log
log4j.appender.rolling.Append=true
log4j.appender.rolling.DatePattern='.'yyyy-MM-dd
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.ConversionPattern=[%d] %-5p - %m%n
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p [%c{1}] (%F:%L) - %m%n| [Spring] web.xml (0) | 2025.08.20 |
|---|---|
| [Spring] 스프링 프레임워크 / 스프링 모듈 (0) | 2025.08.20 |
| [Spring] 스프링 빈 중복 에러(UnsatisfiedDependencyException, NoUniqueBeanDefinitionException) (0) | 2024.08.20 |
| [Spring] log4jdbc 라이브러리로 sql 로그 파라미터 값까지 출력하기 (0) | 2023.08.08 |
| [Spring] 로깅 프레임워크 개념 및 종류 (0) | 2023.07.28 |
다른 데이터베이스에 있는 테이블을
내가 접속 중인 데이터베이스에서 직접 조회하거나 사용할 수 있게 해주는 연결 통로
=> A DB에서 B DB의 테이블을 바로 SELECT/DML 작업 가능

1. 장애 전파 및 복구 어려움
- 단일 장애가 연쇄 장애로 확산될 수 있음
예) 로컬 DB에서 원격 DB의 테이블을 조인하고 있었는데, 원격 DB에 장애 발생 → 로컬 서비스까지 먹통
- 복구가 어려움
단순한 재시도나 로컬 트랜잭션 롤백으로 끝나지 않음DB간 연결이 끊긴 상태에서 rollback조차 실패할 수 있음
2. 보안 취약점
- DB 링크는 일반적으로 고정된 계정/비밀번호로 연결되며 그 정보가 내부적으로 평문 저장되거나 공개될 수 있음 → 특히 PUBLIC DB LINK의 경우, 누구나 접근 가능한 보안 구멍이 될 수 있음
- 원격 DB 권한 통제 어려움
링크를 통해 간접적으로 원격 DB에 쓰기/삭제 등을 해버릴 수 있어서 위험
3. 성능 저하 및 튜닝 어려움
- 원격 쿼리를 조인하거나 트랜잭션으로 처리하면 네트워크 레이턴시 + 원격 옵티마이저 문제로 성능이 예측불가
- 옵티마이저가 원격 테이블의 통계를 알 수 없어서 비효율적인 실행계획을 세우는 경우가 많음
- 원격 DB의 성능 저하가 로컬 DB에도 영향을 미치므로 문제 원인 추적이 까다로움
4. 트랜잭션 일관성 보장 어려움
- DB 링크를 통한 분산 트랜잭션은 복잡한 구조를 가짐 (2PC - Two Phase Commit) → 트랜잭션 커밋/롤백 중 일부만 성공하면 데이터 불일치 발생 위험
- 특히 장애 중복 발생 시 원격 DB는 커밋됐는데 로컬은 롤백된 상황 등… 복구가 매우 어려움
5. 운영 및 배포 관리 복잡성
- 운영 중 링크 관리 어려움
- TNS 설정, SID/서비스명 의존성 때문에 클라우드 전환/분산 아키텍처에 부적합
6. 현대적인 아키텍처와 어긋남
-요즘은 마이크로서비스, API 중심, 메시지 기반 아키텍처가 대세라서 DB끼리 직접 연결(link)하는 방식보다 API 호출, RESTful 서비스, 메시징 큐(Kafka 등)로 데이터 전달하는 추세임
- DB 링크는 서비스 독립성/경계를 깨뜨리고 강한 결합을 초래함
1. REST API
- DB끼리 직접 연결하는 대신, 중간 API를 두고 호출로 연결
2. 메시징 큐
- Kafka, RabbitMQ 등을 활용한 비동기 데이터 전달 방식
3. DB 복제
- GoldenGate, Streams, Kafka CDC 등으로 DB 간 실시간 복제
4. ETL / ELT
- 주기적 배치/스트리밍으로 데이터를 이동시키고 각 DB에서 독립 운영
| [Oracle] 분기 관련 날짜 데이터 출력 - TO_CHAR(), TRUNC() (0) | 2023.08.31 |
|---|---|
| [Oracle] FETCH절(출력 행 개수 지정) (0) | 2023.07.12 |
| [PL/SQL] 복합형(레코드/컬렉션) (0) | 2023.04.21 |
| [PL/SQL] 변수의 자료형(스칼라형/참조형) (0) | 2023.04.21 |
| [PL/SQL] 제어문(조건문, 반복문) (0) | 2023.04.21 |
현재 유지보수 중인 시스템 내에
특정 상황에 in절 파라미터 갯수가 1000개 이상이 넘어가 에러가 발생했다.
아주 제한적인 환경이기 때문에 가장 공수가 덜 드는 방법을 고려하다가 iterate 태그를 사용해 처리했다.
IN절에 리스트 바인딩
Map<String, Object> param = new HashMap<>();
param.put("userIdList", Arrays.asList("A001", "A002", "A003"));<select id="getUserList" resultClass="User">
SELECT *
FROM USERS
WHERE USER_ID IN
<iterate property="userIdList" open="(" close=")" conjunction=",">
#userIdList[]#
</iterate>
</select>
실행 결과
SELECT *
FROM USERS
WHERE USER_ID IN ('A001','A002','A003')
<iterate>는 컬렉션(반복할 대상(배열, List 등)) 내 요소를 순회하면서 SQL 문을 반복적으로 생성
다중 조건 OR 구문 생성
Map<String, Object> param = new HashMap<>();
param.put("names", Arrays.asList("홍길동", "이순신"));<select id="findUserByNames" resultClass="User">
SELECT *
FROM USERS
WHERE
<iterate property="names" conjunction=" OR ">
NAME = #names[]#
</iterate>
</select>
실행 결과
SELECT *
FROM USERS
WHERE NAME = '홍길동' OR NAME = '이순신'| [Git] 기존 Repository 복제해서 신규 Repository 생성하기 (0) | 2026.02.08 |
|---|---|
| SOAP에 대해 알아보자 (0) | 2026.02.04 |
| notepad++ 꿀팁 (0) | 2025.07.17 |
| 카카오 지도 API 사용법 - kakao is not defined (0) | 2025.05.10 |
| Sublime text 꿀팁 (0) | 2024.06.25 |
web.xml은 웹 애플리케이션의 전역 설정 파일
• DispatcherServlet 등록 → 스프링 MVC 구동
• ContextLoaderListener 등록 → Root ApplicationContext 구동
• 필터/리스너 등록 → 인코딩, 보안, 로깅 등 공통 처리
• 서블릿 매핑 → URL과 서블릿 연결
1. 웹 애플리케이션의 시작점 설정
• 웹 애플리케이션이 Tomcat 같은 서블릿 컨테이너에 배포될 때 가장 먼저 읽히는 설정 파일
• 어떤 Servlet, Filter, Listener를 사용할지 정의
2. DispatcherServlet 등록
• 웹 계층 담당
• Spring MVC의 핵심인 DispatcherServlet(Front Controller)을 등록하는 곳
<!—- 모든 요청이 DispatcherServlet으로 들어가도록 연결—->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-name>/WEB-INF/…/dispatcher-servlet.xml</param-name>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3. ContextLoaderListener 등록
• Root ApplicationContext를 띄워주는 역할
• 비즈니스 로직 및 인프라 계층 담당(보통 서비스, DAO, DataSource 같은 Bean들은 여기서 초기화)
1. ContextLoaderListener + DispatcherServlet (정석 구조)
• Root Context (ContextLoaderListener)
• DataSource, TransactionManager, DAO, Service
• Web Context (DispatcherServlet)
• Controller, ViewResolver
2. DispatcherServlet만 사용하는 경우
• DispatcherServlet이 로딩하면서 DB 설정(iBatis Config)까지 다 들고감
• Root Context 없이 Web Context 하나로 통합 운영
• 초기 스프링/레거시 프로젝트에서 자주 보이는 방식
4. 필터(Filter) 설정
• 인코딩, 보안, 로깅 같은 기능을 전역으로 걸 수 있음
5. 서블릿 매핑
• 특정 URL 패턴을 어떤 서블릿이 처리할지 정의
| [Spring] log4j.properties 설정 바꾸기 (0) | 2025.11.11 |
|---|---|
| [Spring] 스프링 프레임워크 / 스프링 모듈 (0) | 2025.08.20 |
| [Spring] 스프링 빈 중복 에러(UnsatisfiedDependencyException, NoUniqueBeanDefinitionException) (0) | 2024.08.20 |
| [Spring] log4jdbc 라이브러리로 sql 로그 파라미터 값까지 출력하기 (0) | 2023.08.08 |
| [Spring] 로깅 프레임워크 개념 및 종류 (0) | 2023.07.28 |

https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html
2. Introduction to Spring Framework
Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application. Spring enables you to build applications from "plain old Java o
docs.spring.io
spring-core
↓
spring-beans
↓
spring-context
↓
spring-expression
↓
spring-aop
↓
spring-web
↓
spring-webmvc
↓
spring-security-core
↓
spring-security-web
↓
spring-security-config
↓
spring-security-taglibs
1. spring-core
• 스프링의 가장 기본이 되는 모듈
• IoC(Inversion of Control), DI(Dependency Injection)를 제공
• BeanFactory 같은 핵심 컨테이너 기능이 포함
2. spring-beans
• Bean(객체) 정의, 생성, 주입을 담당
• XML, annotation, Java config 등 다양한 설정 방식 지원
3. spring-context
• spring-core, spring-beans 위에 올라가는 모듈
• ApplicationContext를 제공 → 메시지 리소스 처리, 이벤트 발행, 국제화(i18n) 지원
4. spring-expression(SpEL, Spring Expression Language)
• #{} 같은 표현식으로 객체 그래프를 조회·조작할 수 있게 해주는 언어
• 예: @Value("#{systemProperties['java.home']}")
1. spring-web
• Servlet API 위에서 동작
• 멀티파트 파일 업로드, 웹 관련 유틸, REST 지원 등
2. spring-webmvc
• 흔히 말하는 Spring MVC
• DispatcherServlet 기반으로 Model-View-Controller 패턴 지원
• REST API, 뷰 렌더링, 핸들러 매핑/어댑터, 컨트롤러 관리 등
• AOP(Aspect-Oriented Programming) 지원 모듈
• 로깅, 트랜잭션, 보안 같은 **횡단 관심사(Cross-cutting concerns)**를 분리
• 예: 모든 서비스 메서드 실행 전에 로깅 실행
1. spring-security-core
• 인증(Authentication), 인가(Authorization)의 핵심 로직
• 사용자 계정, 권한(Role) 관리
2. spring-security-web
• 보안을 웹 레벨(필터 기반)에서 적용
• 로그인/로그아웃, 세션 관리, CSRF 보호, URL 기반 접근 제어
3. spring-security-config
• XML, Java Config로 보안 설정을 쉽게 할 수 있게 해주는 모듈
• 예: @EnableWebSecurity
4. spring-security-taglibs
• JSP 같은 뷰에서 보안 태그 사용 가능.
• 예: <sec:authorize access="hasRole('ADMIN')">
대부분의 모듈을 직접 추가하지 않고, starter 의존성으로 해결
Ex)
spring-boot-starter-web
→ spring-web, spring-webmvc, spring-core 등 자동 포함
spring-boot-starter-security
→ spring-security-* 모듈 자동 포함
즉, Boot 사용 시에는 목적별 스타터만 추가하면 끝이고,
Legacy Spring 사용 시에는 개별 모듈을 직접 추가해야 함(pom.xml)
1. 소프트웨어에서 “레거시”의 일반 개념
• 레거시 시스템/프로젝트 = 오래된 기술, 아키텍처, 코드 스타일을 기반으로 돌아가는 시스템
• 당장은 동작하지만 유지보수나 확장이 어렵고, 최신 기술 스택과는 괴리가 있는 경우가 많음
2. 스프링 맥락에서 “레거시 프로젝트”
• 스프링에서 말하는 레거시 프로젝트는 보통 Spring Boot를 쓰지 않고, 직접 XML 또는 JavaConfig로 설정한 프로젝트 뜻함
• Maven/Gradle에서 필요한 모듈을 하나씩 직접 추가해야 함(spring-core, spring-beans, spring-webmvc 등)
• 환경 설정(XML, JavaConfig)을 직접 관리
-applicationContext.xml
-web.xml + dispatcher-servlet.xml
• 서버도 내장 Tomcat이 아니라, WAR 파일 빌드 후 외부 WAS(WebSphere, Tomcat 등)에 배포
• 프로젝트 구조가 복잡하고 설정 코드 양이 많음
| [Spring] log4j.properties 설정 바꾸기 (0) | 2025.11.11 |
|---|---|
| [Spring] web.xml (0) | 2025.08.20 |
| [Spring] 스프링 빈 중복 에러(UnsatisfiedDependencyException, NoUniqueBeanDefinitionException) (0) | 2024.08.20 |
| [Spring] log4jdbc 라이브러리로 sql 로그 파라미터 값까지 출력하기 (0) | 2023.08.08 |
| [Spring] 로깅 프레임워크 개념 및 종류 (0) | 2023.07.28 |
1. 데이터베이스>새 데이터베이스 연결
2. 연결하고자 하는 db를 선택
3. 원하는 connection type을 선택 후, 그에 따라 db 접속 경로 지정
basic 방식
• 접속 정보(Host, Port, Service/SID)를 DBeaver에 직접 입력하는 방식
TNS 방식
• 오라클 클라이언트에서 제공하는 tnsnames.ora 파일에 정의된 TNS Alias를 사용
• DBeaver는 TNS Alias 이름만 지정하고, 실제 접속 정보는 tnsnames.ora에서 불러옴
4. 계정 정보 입력
5. 우측 하단 [Edit Driver Settings] 버튼 클릭
6. 하단 ’Libraries’ 탭에 기본 설정된 것들 전부 삭제
🔥7. [Add File] 버튼 클릭 후, 각 DB에 맞는 JDBC(Java Database Connectivity) 드라이버 선택
JDBC(Java Database Connectivity) 드라이버
• Java 애플리케이션이나 DBeaver 같은 툴이 DB에 접속하기 위해 꼭 필요한 중간 연결 역할
• Java 애플리케이션 ↔ 데이터베이스 사이에서 명령과 데이터를 주고받는 번역기 역할
• 형식은 .jar(Java ARchive), 해당 파일이 없으면 Java 프로그램이 DB 종류를 인식하지 못해 연결 불가
• MySQL JDBC 드라이버(mysql-connector.jar)
• Oracle JDBC 드라이버(ojdbc.jar)
8. 하단 중간에 위치한 [Find Class] 클릭하면 ‘Drive class’를 선택할 수 있는데 아무거나 선택
9. [Test Connection…] 버튼 클릭해서 테스트 해보면 됨
| [Toad] Schema Browser Filters - 다중 검색 (0) | 2023.12.15 |
|---|---|
| [Toad] 토드 사용 꿀팁(Toad for Oracle 11.5) (0) | 2023.07.19 |
| [sqlPlus] sqlplus에서 sql 스크립트 실행하기 (0) | 2023.07.18 |
| [PL/SQL Developer] PL/SQL Developer 환경설정 (0) | 2022.08.03 |
dataset.filter(“조건식”)
dataset.set_filterstr(“조건식“)
| [nexacro] 애용하는 단축키 (2) | 2025.07.29 |
|---|---|
| [nexacro] 넥사크로 라이선스 갱신 오류 (0) | 2025.02.04 |
| [nexacro] 넥사크로 CSS 관련 정리 (0) | 2024.09.06 |
| [nexacro] 그리드 내 셀을 트리 형태로 바꾸기 (0) | 2024.09.05 |
| [nexacro] 트랜잭션(Transaction) (0) | 2024.05.28 |