CSV 파일 한글 깨짐 현상 해결

CSV파일로 작업해야할 일이 있었는데 열어보니 한글이 다 깨져있었다. 물론 파일이 1개라면 인코딩만 변경해 저장하면 깔끔하게 끝나겠지만 10개만 넘어가도 헬파티가 열리기 때문에 그 헬파티의 주인공이 되기 싫어 간단하게 스크립트를 작성했다. (파일이 100개 였음..;;)

인터넷 검색을 해보니 iconv 명령어를 쓰면 해결된다고 해서 마침 git-bash도 설치되어 있겠다 아래 처럼 코드를 작성하고 실행시키니 변경이 잘된다.

핵심은 iconv

#!/bin/sh
 
for entry in `find . -name "*.csv"`; do
 
echo $entry
`iconv.exe -t cp949 $entry > ./test/$entry`
   
done















AOP란?

- Aspect : 공통 기능

- Advice : Aspect의 기능 자체

- Jointpoint : Advice를 적용해야 되는 부분(ex. 필드, 메소드) ( 스프링에서는 메소드만 해당)

- Pointcut : Jointpoint의 부분으로 실제로 Advice가 적용된 부분

- Weaving : Advice를 핵심 기능에 적용하는 행위


스프링에서 AOP구현 방법

호출부  -------> Proxy -------> Target


스프링에서 AOP 구현 방식

- XML 스키마 기반의 AOP 구현

- @Aspect 어노테이션 기반의 AOP 구현


소스

pom.xml

pom.xml 내 dependency 추가

<!-- AOP -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.7.4</version>
</dependency>

































Properties 파일을 이용한 설정






소스









JAVA를 이용한 DI 설정방법

Configuration 어노테이션과 Bean 어노테이션을 이용하여 새로운 빈 객체를 제공

@Bean
public Student student1(){
        
        ArrayList<String> hobbys = new ArrayList<String>();
        hobbys.add("수영");
        hobbys.add("요리");
        
        Student student = new Student("홍길동"20, hobbys);
        student.setHeight(180);
        student.setWeight(80);
        
        return student;
    }   


아래 XML과 동일한 설정이다.

<bean id="student1" class="com.javalec.ex.Student">
        <constructor-arg value="홍길동" />
        <constructor-arg value="20" />
        <constructor-arg>
            <list>
                <value>수영</value>
                <value>요리</value>
            </list>
        </constructor-arg>
        
        <property name="height">
            <value>180</value>
        </property>
        
        <property name="weight" value="80" />
    </bean>




소스

ApplicationConfig.java

@Configuration '이 클래스는 스프링 설정에 사용되는 클래스입니다.' 라고 명시해 주는 어노테이션

@Bean - 객체 생성을 담당하는 IoC용 메소드라는 표시

package com.javalec.ex;
 
import java.util.ArrayList;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class ApplicationConfig {
 
    @Bean
    public Student student1(){
        
        ArrayList<String> hobbys = new ArrayList<String>();
        hobbys.add("수영");
        hobbys.add("요리");
        
        Student student = new Student("홍길동"20, hobbys);
        student.setHeight(180);
        student.setWeight(80);
        
        return student;
    }
    
    @Bean
    public Student student2(){
        
        ArrayList<String> hobbys = new ArrayList<String>();
        hobbys.add("독서");
        hobbys.add("음악감상");
        
        Student student = new Student("홍길순"18, hobbys);
        student.setHeight(170);
        student.setWeight(55);
        
        return student;
    }
    
}
 






XML을 이용하는 애플리케이션 컨텍스트

GenericXmlApplicationContext의 생성자 파라미터로 XML파일의 클래스패스를 지정해준다. 


xml설정정보를 담은 applicationCTX.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 
<bean id="calculator" class="com.javalec.ex.Calculator" />
 
<bean id="myCalculator" class="com.javalec.ex.MyCalculator">
<property name="calculator">
<ref bean="calculator"/>
</property>
<property name="firstNum" value="10" />
<property name="secondNum" value="2"></property>
</bean>
 
</beans>
 






소스

Mainclass.java

package com.javalec.ex;
 
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MainClass {
 
public static void main(String[] args) {
 
/*
MyCalculator myCalculator = new MyCalculator();
myCalculator.setCalculator(new Calculator());
myCalculator.setFirstNum(10);
myCalculator.setSecondNum(2);
myCalculator.add();
myCalculator.sub();
myCalculator.mul();
myCalculator.div();
*/
 
String configLocation = "classpath:applicationCTX.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class);
 
myCalculator.add();
myCalculator.sub();
myCalculator.mul();
myCalculator.div();
 
}
 
}
 


MyCalculator.java

package com.javalec.ex;
 
public class MyCalculator {
 
Calculator calculator;
private int firstNum;
private int secondNum;
 
public MyCalculator() {
 
}
 
public void add() {
calculator.addition(firstNum, secondNum);
}
 
public void sub() {
calculator.subtraction(firstNum, secondNum);
}
 
public void mul() {
calculator.multiplication(firstNum, secondNum);
}
 
public void div() {
calculator.division(firstNum, secondNum);
}
 
public void setCalculator(Calculator calculator) {
this.calculator = calculator;
}
 
public void setFirstNum(int firstNum) {
this.firstNum = firstNum;
}
 
public void setSecondNum(int secondNum) {
this.secondNum = secondNum;
}


Calculator.java

package com.javalec.ex;
 
public class Calculator {
 
public void addition(int f, int s) {
System.out.println("addition()");
int result = f + s;
System.out.println(f + " + " + s + " = " + result);
}
 
public void subtraction(int f, int s) {
System.out.println("subtraction()");
int result = f - s;
System.out.println(f + " - " + s + " = " + result);
}
 
public void multiplication(int f, int s) {
System.out.println("multiplication()");
int result = f * s;
System.out.println(f + " * " + s + " = " + result);
}
 
public void division(int f, int s) {
System.out.println("division()");
int result = f / s;
System.out.println(f + " / " + s + " = " + result);
}
 
}
 







https://adsecurity.org/?p=873

Windows Computer Primary Group IDs

  • 515 – Domain Computers
  • 516 – Domain Controllers (writable)
  • 521 – Domain Controllers (Read-Only)

Domain Computers (Workstation & Servers – No Domain Controllers)

Import-Module ActiveDirectory

Get-ADComputer -Filter {PrimaryGroupID -eq 515}

Domain Controllers (All)

Import-Module ActiveDirectory

Get-ADComputer -Filter {PrimaryGroupID -ne 516}


Domain Controllers (RODCs only)

Import-Module ActiveDirectory

Get-ADComputer -Filter {PrimaryGroupID -eq 521}












+ Recent posts