반응형

구글 검색 해도 오래 걸려서 .. 따로 정리 

 

webpack.config.js 설정

test: 정규표현식 : 정규표현식과 같은 파일 찾아준다.

정규표현식.test(문자)이렇게 사용하면 문자 내부에 정규표현식과 일치하는 내용 확인하는 것)
use: 'vue-loader': test를 잘 할 수 있게 vue-loader의 도움을 받는다.

 

//const VueLoaderPlugin = require('vue-loader/dist/plugin');
const { VueLoaderPlugin } = require('vue-loader');
const path = require('path')

module.exports = {
    mode: 'development',
    //대표가 되는 파일 ( 하나로 합쳐진다 vue + js ..)
    entry:{
        app:  path.join(__dirname,'main.js')
    },
    module:{
        rules:[{
            test: /\.vue$/,
            loader: 'vue-loader',
        }],

    },
    plugins: [
        new VueLoaderPlugin(),
    ],
    //./output/app.js 로 최종 합쳐진 js 생성
    output:{
        filename: 'app.js',
        path: path.join(__dirname,'output'),
    },

};

최종 코드 

압축된 js

app.js
0.41MB

반응형
반응형

_.remove

마지막 객체가 삭제가 안되는거.. 쓰앙 삽질을 몇번을 하는거니..

 

그냥 

스크립트 기본 기능인 spice 로 하기로 함

 

근데 계속 안됨.. slice 로 입력하고 테스트 하고 있었음 ..

죽어서 고쳐질 삽질에 연속 ...

 

셀렉트 박스에서 선택 된 데이터 옆으로 쌓임 

쌓인 데이터 삭제 코드 공유

 

let temp = this.전체리스트

temp.splice(temp.indexOf(삭제값(유저클릭값)),1)

 

            const array = [1, 2, 3, 4, 5]; // 3 을 제거 하고 싶다. 
            const deletedIndex = 2	       // 3의 인덱스는 2 이다.
            array.splice(deletedIndex, 1); // 삭제할 인덱스, 1 개만 삭제 (즉, 3만 삭제)

 

끝 

 

잊지 않겠다 lodash   remove .. 쓰밤쉐

반응형
반응형

3depth 구현

<template>
    <div>
        <ul>
            <li v-for="item in treeData" :key="item.name">
                {{ item.name }}
                <ul v-if="item.type === 'directory' && item.children">
                    <li v-for="childItem in item.children" :key="childItem.name">
                        {{ childItem.name }}

                        <ul v-if="childItem.type ==='directory' && childItem.children">
                            <li v-for="childItem in childItem.children" :key="childItem.name">
                            {{ childItem.name }}
                            </li>
                        </ul>

                    </li>
                </ul>
            </li>
        </ul>
    </div>
</template>

<script>

export default {
    name: 'testView',
    data() { //함수 형태
        return {
            treeData: [{
                "name": "root",
                "type": "directory",
                "children": [
                    {
                        "name": "folder1",
                        "type": "directory",
                        "children": [
                            {
                                "name": "file1.txt",
                                "type": "file"
                            },
                            {
                                "name": "file2.txt",
                                "type": "file"
                            }
                        ]
                    },
                    {
                        "name": "folder2",
                        "type": "directory",
                        "children": [
                            {
                                "name": "subfolder1",
                                "type": "directory",
                                "children": [
                                    {
                                        "name": "file3.txt",
                                        "type": "file"
                                    }
                                ]
                            },
                            {
                                "name": "file4.txt",
                                "type": "file"
                            }
                        ]
                    },
                    {
                        "name": "file5.txt",
                        "type": "file"
                    }
                ]
            }],
        }
    },
    methods: {
        toggleNode(item) {
            if (item.type === 'directory' && item.children) {
                item.expanded = !item.expanded;
            }
        }
    }

}

</script>
<style>
ul {
    list-style: none;
    padding: 0;
}

li {
    cursor: pointer;
}

.nested {
    display: none;
}

.active {
    display: block;
}
</style>

반응형
반응형

도커컴포즈 는 탭에 아주 예민스럽다

별거 아닌데 탭 하나에 ㅠㅠ 삽질은 10분이나...

 

폴더 하나 만들고 

전 c 드라이브에 mariadb

 

mariadb 폴더는 처음에 없어요~~

그 후 .env 파일 과 docker-compose.yml 파일을 생성한다.

 

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=1234
MYSQL_DATABASE=edu
MYSQL_USER=edu
MYSQL_PASSWORD=1234

.env

 

version: "3"

services:
    mariadb:
        image: mariadb:latest
        ports:
        - 3306:3306
        volumes:
        - ./mariadb/Shared/data/mariadb/conf.d:/etc/mysql/conf.d
        - ./mariadb/Shared/data/mariadb/data:/var/lib/mysql
        - ./mariadb/Shared/data/mariadb/initdb.d:/docker-entrypoint-initdb.d
        env_file: .env
        networks:
        - backend
        restart: always

networks:
  backend:

docker-compose.yml

 

항상 탭을 확인하자... 으으으으

 

파일 2개 만든 후

 

해당 폴더에서  docker-compose up -d

모두 올라가면 도커 프로그램 확인하면 

콘테이너에 잘 올라간걸 확인하였다..

그리고 볼륨 폴더도 자동으로 쫘잔 생성 됨 

 

쓰봉 tab 12시에 자려고 했는데 이것땜시 

 

참고로 볼륨 설정을 통해 도커 꺼졌다 켜져도 데이타는 그대로 살아있음 !!! 

 

귀찮게 로컬 DB 매번 설치 하지 마시고 도커 이용하세요~~

귀찮음이 날 학습 시킴니다

근데 할때 마다 새로운 도커 

이거 몇년전에 프로젝트에서 해봤는데 ... 전혀 기억이 안나요 ㅎㅎㅎㅎㅎㅎㅎ

 

반응형
반응형
const testData = test:{ t1: 1	,t2:2	,t3:3 }

var obj = {
   "a": "test1",
   "b": "test2",
   "c": "test3",
}

Object.keys(obj).filter(key => key !== 'b').map(key => obj[key])

개발자 도구 열어서 해보심 됩니다~

반응형
반응형
연금저축,irp
연금저축은(개인연금)
IRP( 통상 퇴직연금) 으로 불린다.
 
연금저축은 600만원
irp는 300만원 세액 공제 혜택 
합쳐서 년 900만원
 
수익에서 비과세 혜택은 없다.
납입금액 기준으로 세금 깍아줌
 
단점은 55세 까지 돈이 묶인다.
 
세액공재 많이 받는 방법 2023년 기준.
 
연금저축/irp 계좌를 만들고
12월31일 이전까지 모두 처리
50세 미만
연금저축 400만원
irp 300만원
 
50세 이상
연금저축 600만원 
irp 300만원
일시 납입 한다
 
자동으로 세액 공제가 들어가게 되고 최대 148만 5천원까지 세금 줄일수 있다.
 
결론 나는 연금저축 통장과 irp는 만들고 연말쯤~ 400만원/300만원 납부 하면 되겠다.
 

반응형
반응형
개인종합자산관리계좌 (Individual Savings Account)
 
중계형 isa 계좌를 이용하여 주식투자 / 채권 매매등을 할 경우 세금 혜택(비 과세) 을 준다
 
년 2천만원까지만 입금 가능하며 최대 5년 1억까지 납입한도가 있다.
200~400 만원 까지 세금 혜택  3년 이상 유지해야 함
비과세는 200만원 까지이고   초과 세금 도 15.4가 아닌 .9.9%만 세금을 남긴다.
 
수익이 나니 이제서야 보이는 절세..
잘 활용해보자
 
isa 계좌 이용해서 해외 etf 분할 매수 계획이 있다.
요것도 정리 할 예정
연금 저축도 세금 혜택이 있는데 종합적으로 활용하는 방법도 최종 공유 !!
 
각 증권사 중개 수수료 비교 
 
 
반응형
반응형

JPA 기본 설정 완성 후 

 

소스 작업 전 테스트 소스를 먼저 만들어보자

 

Base도메인 설정

 

@MappedSuperclass
@EntityListeners(value = { AuditingEntityListener.class })
//spring jpa AuditingEntityListener 에서 가져옴
// 해당 클래스가 적용되면 엔티티가 데이터베이스에 추가 / 변경될 때 자동으로 시간 값을 저장
// AuditingEntityListener 활성화 하기 위해 프로젝트 설정에 @EnableJpaAuditing 추가 해야함
@Getter
public class BaseEntity {

    @CreatedDate
    @Column(name = "regdate", updatable = false)
    private LocalDateTime regDate;

    @LastModifiedDate
    @Column(name = "moddate")
    private LocalDateTime modDate;


}

repository 인터페이스 설정

 

// spring jpa data 이용할 때 JpaRepository 인터페이스를 이용해서
// 인터페이스 선언만으로 데이터 베이스 기본 작업 CRUD 와 페이징 처리가 가능하다.

public interface BoardRepository extends JpaRepository<Board, Long> {}

실제 사용 Board 도메인 설정

@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Board extends BaseEntity {
    //BaseEntity 에서 전체 적용 되는 데이터베이스 값을 가져온다

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    // GenerationType.IDENTITY 데이터 베이스에 위임-auto_increment (mysql/maria)
    private Long bno;

    @Column(length = 500 , nullable = false) //컬럼 길이와 null  허용 여부
    private String title;

    @Column(length = 2000 , nullable = false)
    private String content;

    @Column(length = 50 , nullable = false)
    private String writer;

}

 

인서트 테스트 코드 작성 후 RUN ~~~

@SpringBootTest
@Log4j2
public class BoardRepositoryTest {

    @Autowired
    private BoardRepository boardRepository;

    @Test
    public void testInsert(){
        IntStream.rangeClosed(1,100).forEach( i ->{
            Board board = Board.builder()
                    .title("제목 ... "+i)
                    .content("내용 ... "+ i)
                    .writer("user"+(i%10))
                    .build();
            Board result = boardRepository.save(board);
            log.info("BNO : " + result.getBno());
        });
    }
}

위 코드를 GPT가 분석해 줌

위의 자바 코드는 빌더 패턴을 이용하여 board 객체를 생성하는 코드입니다.
빌더 패턴은 복잡한 객체를 생성할 때, 객체의 생성과 표현을 분리하여 객체를 생성하는 디자인 패턴입니다. 이 코드에서는 빌더를 사용하여 제목, 내용 및 작성자가 있는 게시판 객체를 생성합니다.

빌더는 메소드 호출 체인으로 사용되고 있습니다. title() 메소드는 i 변수의 값과 문자열을 연결하여 게시판의 제목을 설정합니다. content() 메소드는 i 변수의 값과 문자열을 연결하여 게시판의 내용을 설정합니다. writer() 메소드는 i를 10으로 나눈 나머지와 문자열을 연결하여 게시판의 작성자를 설정합니다.

마지막으로 build() 메소드가 호출되어 빌더가 설정한 값으로 새로운 board 객체가 생성되고 반환됩니다.

 

실제 스프링 띄우면서 JPA 테이블 생성하고 인서트 까지 이상없이 실행

Starting Gradle Daemon...
Gradle Daemon started in 1 s 5 ms

> Task :compileJava
> Task :processResources UP-TO-DATE
> Task :classes
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.0.5)

2023-04-22T17:35:45.154+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : Starting BoardRepositoryTest using Java 17.0.4 with PID 6100 (started by user in C:\Users\user\IdeaProjects\jisou)
2023-04-22T17:35:45.155+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : No active profile set, falling back to 1 default profile: "default"
2023-04-22T17:35:45.570+09:00  INFO 6100 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2023-04-22T17:35:45.616+09:00  INFO 6100 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 38 ms. Found 1 JPA repository interfaces.
2023-04-22T17:35:45.925+09:00  INFO 6100 --- [    Test worker] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2023-04-22T17:35:45.976+09:00  INFO 6100 --- [    Test worker] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.1.7.Final
2023-04-22T17:35:46.227+09:00  INFO 6100 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2023-04-22T17:35:46.373+09:00  INFO 6100 --- [    Test worker] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@18b40fe6
2023-04-22T17:35:46.375+09:00  INFO 6100 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2023-04-22T17:35:46.427+09:00  INFO 6100 --- [    Test worker] SQL dialect                              : HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Hibernate: 
    
    create table board (
       bno bigint not null auto_increment,
        moddate datetime(6),
        regdate datetime(6),
        content varchar(2000) not null,
        title varchar(500) not null,
        writer varchar(50) not null,
        primary key (bno)
    ) engine=InnoDB
2023-04-22T17:35:47.117+09:00  INFO 6100 --- [    Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2023-04-22T17:35:47.126+09:00  INFO 6100 --- [    Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2023-04-22T17:35:47.217+09:00  WARN 6100 --- [    Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2023-04-22T17:35:47.663+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : Started BoardRepositoryTest in 2.684 seconds (process running for 3.944)
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.872+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 1
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.891+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 2
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.907+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 3
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.925+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 4
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.942+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 5
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.959+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 6
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.974+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 7
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:47.989+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 8
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:48.014+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 9
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:48.030+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 10
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:48.047+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 11
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)
2023-04-22T17:35:48.060+09:00  INFO 6100 --- [    Test worker] o.d.j.repository.BoardRepositoryTest     : BNO : 12
Hibernate: 
    insert 
    into
        board
        (content, moddate, regdate, title, writer) 
    values
        (?, ?, ?, ?, ?)

디비 인서트 확인

반응형
반응형

컨트롤러에서 넘어본 변수 .. 에러 화면

 

세팅에서 thy 로 검색후 

아래처럼 변경하면 변수 검사 하지 않아서 오류 발생 안함 

 

페이지에 오류가 보이믄 쫘증쫘증

반응형
반응형

에디트 컨비그에서 

On Update action >> update classes and resources

On freme deactivation >> update classes and resources 선택하면 된다

 

 

반응형

+ Recent posts