728x90
SMALL

맥만 쓰다가 드뎌!!!!!! 데탑을 하나 장만했다. 

그런데 모든 파일은... 맥에 있고... 이걸 옮기기엔 내 클라우드가 너무 용량이 작고... 

그래서 고민하다 찾은 방법이 서버간 이동

바로 알려주겠다! 


1. 계정 생성

먼저 쉐어하는 계정을 하나 만들어 주는게 좋다.

설정 → 계정 을 누른다.

 

2. 가족 및 다른 사용자 → 이 PC에 다른 사용자 추가

 

4. 계정 만들기 과정

해당 사람이 Micrsoft의 아이디가 있을 경우 로그인 하면 간단하다. 

하지만 난 귀찮기도 해서 없이 만들기로 했다. 

이 사람의 로그인 정보를 가지고 있지 않습니다. 클릭

자세한 정보를 클릭하면 맨위 회색 버튼을 눌러야지만 체크가 된다. 

두개다 했다면 동의 클릭

마지막으로 Microsoft 계정 없이 사용자 추가 를 클릭 

그라면 pc 사용자 만들기 화면이 나온다. 

여기서 나오는 아이디와 비밀번호는 반드시 기억해야한다!

 

 

5. 공유 폴더 설정하기 

먼저 원하는 위치에 폴더 하나를 만든다. 

해당 폴더에서 우클릭 한 후 엑섹스 권한 부여   특정 사용자를 클릭

여기서 아까 만든 사용자의 이름을 넣은 후 추가, 그리고 권한 수준을 읽기/쓰기로 변경해준다. 

 

 

 

6. 내 PC 의 주소 확인하기 

검색창(찾기) 에 CMD 라고 치면 명령 프롬프트가 뜬다.

거기에 ipconfig 라고 적고 엔터를 누르면 아래와 같이 내 컴퓨터의 주소가 나오는데, 이 IPv4 주소를 잘 기억하면 된다. 

 

7. 마지막으로 맥에서 윈도우 공유폴더 연결하기 

Finder 메뉴에서 이동→서버에 연결을 클릭하면, 아래와 같이 서버 url 정보를 입력할 수 있다. 

우리는 파일을 공유할 것이기에 smb 라는 프로토콜을 쓸껀데 

예를 들어 smb://192.168.023.456  이런식으로 연결을 누르면

로그인 하는 창이 뜰떄 위에 윈도우에서 설정한 계정 명과 비밀번호를 입력하면 된다. 

 

그러면 finder 창이 뜨는데 이건 윈도우에 있는 공유 폴더가 되는거다!!! 

 

 

하시다가 도움이 필요하다면 댓글 남겨주세요!! :)

728x90
반응형
LIST

'Tip > Program' 카테고리의 다른 글

[Github] License 파일 만들기 및 프로젝트 가져오기  (0) 2022.11.30
[Git] VS code Github 연결  (0) 2022.11.30
728x90
SMALL

이클립스를 사용하다 돈주고 사용하는 인텔리제이..너무 좋아!!!!!!!

왜냐면 아래처럼 깨지는 properties 파일 같은 경우 이클립스는 마켓플레이스에서 플러그인을 깔아줘야하는데....

인텔리제이는 설정에서 바꾸기만 하면 바로 적용된다!! 

한글이 깨져잇는 properties 파일

1. File -> Settings.... (Ctrl + Alt + S) 

2. Editor -> File Encodings

여기로 이동했다면 하단에 Default encording for properties files의 값을 UTF-8 로 바꿔주고 

하단에 Transparent native-to-ascii conversion 까지 체크해주고 OK 를 누르면 바로 적용이 완료된다!  

 

언젠가..회사에서...인텔리제이를 지원해주는..그날까지... 

 

728x90
반응형
LIST
728x90
SMALL

Docker를 기본 Linux 배포판으로 사용하고 compose 파일을 만들어서 올릴때 타임존 설정을 하지 않았더니 UTC로 설정되어있어서 시간대가 맞지 않아서 timezone 변경이 필요했다. 

그런데.....너무 기본 linux 배포판이라 yum 도 apt 도 동작하지 않았다....또륵... 

그렇게 해서 알아낸 타임존 수동 설정 방법 ㅠ


타임존 파일 수동 설정

타임존 데이터를 직접 다운로드하고 설정할 수 있습니다. 

 

1. 타임존 파일 다운로드

     타임존 데이터가 /usr/share/zoneinfo/Asia/Seoul 경로에 없다면, 직접 파일을 다운로드해야 합니다.

mkdir -p /usr/share/zoneinfo/Asia
wget -O /usr/share/zoneinfo/Asia/Seoul https://raw.githubusercontent.com/eggert/tz/master/Asia/Seoul

 

2. 타임존 설정

     다운로드한 타임존 파일을 /etc/localtime으로 링크하여 설정합니다.

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

3. 환경 변수 설정

환경 변수를 설정하여 타임존을 지정할 수 있습니다

 
echo "Asia/Seoul" > /etc/timezone 
export TZ="Asia/Seoul"

4. 설정 확인

date
#결과 -> Mon Aug 19 16:30:48 KST 2024

이 방법으로 타임존을 수동으로 설정할 수 있습니다. 만약 wget도 사용이 불가능하다면, 타임존 파일을 미리 다운로드해 컨테이너에 복사하는 방법도 있다. 

728x90
반응형
LIST
728x90
SMALL

프로젝트 중 상사가 리팩토링한 코드 중에서 immutableMap 을 사용한 부분이 있었다. 

몇가지 지정된 객체들을 특정 메소드에 파라미터로 보내는 과정에서 해당 맵을 사용했는데 

처음 보는 맵의 종류라 정리하게 되었다. 


ImmutableMap 이란?

Map 의 종류이지만 이 맵은 한 번 만들어지면 그 안의 키와 값이 변경될 수 없는 특징이 있다.

즉, 이미 지정해둔 키와 값의 쌍을 수정하거나 삭제할 수 없으며, 새로운 키-값 쌍을 추가할 수도 없다.


⭐예제

/**첫번째 방법*/
ImmutableMap<String, Object> map = ImmutableMap.of("bean", _bean, "regDt", _bean.getRegDt());
         
/**두번째 방법*/        
ImmutableMap<String, Object> map2 = ImmutableMap.<String,Object>builder()
                                    .put("bean", _bean)
                                    .put("regDt", _bean.getRegDt())
                                    .build();

ImmutableMap 도 map 의 종류이기에 선언이나 사용법은 비슷하나, 위에 두가지로 가장 많이 쓰인다. 

1. 첫번째 방법 : 최대 10쌍의 값을 정의할 수 있어 간단하게 정의할 경우 쓰인가.

2. 두번째 방법 : 더 많은 쌍의 값을 정의할때 더 유연하고 가독성이 좋기에 많은 쌍을 정의할 때 쓰인다. 


⭐일반 Map 과의 차이점

 

  • 수정 불가: ImmutableMap는 한 번 생성되면 수정할 수 없다. put, remove 등의 메서드 사용 불가능
  • 생성 시점: ImmutableMap는 생성할 때 모든 키-값 쌍을 정의해야함.

 

/**맵 정의*/
ImmutableMap<String, Object> map = ImmutableMap.of("bean", _bean, "regDt", _bean.getRegDt());

/**수정 및 삭제 불가 */
// map.put("regDt", "2025-01-01"); // 컴파일 에러
// map.remove("bean"); // 컴파일 에러

⭐ImmutableMap 사용이유 

 

  • 안전성: 불변이기 때문에 데이터가 변경될 염려가 없다. 특히 여러 군데에서 같은 데이터를 참조할 때 유용하다.
  • 성능: 동기화가 필요 없기 때문에, 여러 스레드가 동시에 읽을 때 성능이 향상된다.
  • 예측 가능성: 데이터가 변경되지 않기 때문에 항상 같은 값을 유지한다. 

중요한 점

  • 맵 자체는 변경 불가: ImmutableMap에 추가, 수정, 삭제할 수 없습니다.
  • 내부 객체는 변경 가능: ImmutableMap에 저장된 객체가 가변 객체라면, 그 객체의 내부 상태는 변경될 수 있습니다.

 

 

728x90
반응형
LIST
728x90
SMALL

프로젝트에서 코드를 리팩토링 하는 과정에서 

같은 연산을 하지만은 상속받는 bean 이 다른 두개의 메소드가 있었다. 

물론 다른 패키지 내부의 dao 에서 연산을 하는 것이라 별다른 리팩토링 필요성을 못느꼈는데 

같은 연산을 두 패키지 뿐만 아니라 다른 곳에서도 쓰일 가능성을 보고 Util로 옮기며 intanceof 연산자를 사용하게 되었다. 


intanceof 연산자란? 

사용하는 이유 : 개체가 어떤 클래스인지, 어떤 클래스를 상속받았는지, 즉 인스턴스의 실제 타입을 알아보기 위해 사용

결과 : boolean (true 또는 false) 

⭐문법

object instanceOf type

object 가 내가 확인하고 싶은 객체이고 type이 비교 대상이다. 

object == type 또는 type을 상속받는 다면 true, 아닐경우 false 를 반환한다. 


⭐예제

class Parent{}

class Child extends Parent{}

public class intanceOfExample {
    public static void main(String[] args){
        Parent parent = new Parent();
        Child child = new Child();

        System.out.println( parent instanceof Parent );  // true
        System.out.println( child instanceof Parent );   // true
        System.out.println( parent instanceof Child );   // false
        System.out.println( child instanceof Child );   // true
    }
}

child 는 부모님 parent 를 상속받기에 true 이지만, parent는 child를 상속받지 않기에 false 가 나온다. 

물론 child끼리 parent 끼리 instanceof 연산자로 확인할 경우에는 같은 클래스이기에 true 가 나온다. 


이 처럼 한 메소드에서 혹 특정 bean 을 특정지어서 분기처리를 해야한다면 유용하게 쓰일 수 있는 연산자같다. 

728x90
반응형
LIST
728x90
SMALL

리눅스 서버에서 

java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE

이러한 에러가 났다. 

 

찾다보니 JAVA_OPTS에 설정값이 누락되어서 일어난 에러였다. 

설정값은 두가지 방법으로 추가할 수 있다. 

 

1. 자바 코드에서 추가하는 경우 

서버 기동시 실행되는 클래스에 추가하는 방법

System.setProperty("java.awt.headless", "true")

(기동될때 실행되는 클래스들은 web.xml 에서 listener, filter 등 등록되어있는 class 들에 해당) 

 

2. 서버(tomcat)에 직접 추가하는 경우 

보통 ssh 에서 apache-tomcat-8.5.9/bin (tomcat 경로는 설정마다 다름) 에 catalina.sh 가 실행되면서 tomcat 이 올라가는 건데 보통 옵션들은 catalina.sh 에 추가해도 무방하지만 setenv.sh 에 추가하는 것이 났다. 

기본적으로 catalina.sh 에는 setenv.sh 파일을 읽을 수 있도록 설정되어 있기 때문에 만약 bin 폴더 안에 setenv.sh 가 없다면 만들고 그 안에 아래와 같은 옵션값을 추가하면 된다.

export JAVA_OPTS="-Djava.awt.headless=true"

 

 


<참고>

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rutee9&logNo=130109088347

https://recordsoflife.tistory.com/1266

—JVM 옵션 관련

https://nesoy.github.io/articles/2019-08/JVM-Options

728x90
반응형
LIST

+ Recent posts