반응형

 

경고 전문
Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.

→ 번역
RectTransform 의 부모는 부모 속성으로 설정됩니다. 대신 setParent 메서드를 사용하고 worldPositionStays 인수를 false로 설정하는 것이 좋습니다. 이렇게 하면 월드 방향과 스케일이 아닌 로컬 방향과 스케일이 유지되어 일반적인 UI 스케일 문제를 방지할 수 있습니다.

 

위의 경고문은  transform.parent 대신 transform.SetParent() 메서드를 사용을 권고하는 경고이다.

RectTransform에서 parent 사용 시 UI에 스케일링 관련 이슈가 있어 SetParent를 사용하는것을 권하고있다.

 

transform.parent = parent_panel; //경고의 원인

transform.SetParent(parent_panel); //이와 같이 SetParent()메서드로 변경해서 사용

 

반응형
반응형
DateTime과 TimeSpan 클래스에 대한 설명과
텍스트(string)으로 변환시 원하는 형식으로 표기하는 방법

 

우선 TimeSpan은 '시간'값 DateTime은 '시각'값을 가진다.

처음에 많이들 혼동하고 왜 다른 클래스로 관리를 하는지 의문을 가질때가 있다.

 

1.TimeSpan 클래스

TimeSpan은 어떤 A시각과 ~ B시각 사이의 시간혹은 '시간' 그 자체를 말함
예: 남은시간, 타임워치등
TimeSpan t = new TimeSpan(1, 30, 25); //일, 시, 분, 초, 밀리초 까지 입력가능

a.연산

일반적으로 *, /, -, + 모두다 가능하다

시간에 관련된 값은 대부분 Tick으로 저장하고있기에 따로 공부해보시길 추천한다.

 

2. DateTime 클래스

DateTime은 어떤 정해진 시간대, 날짜. 즉, "2024년 2월 15일" 과 같이 어떤 특정한 시간대를 저장한다.
예: 현재시간, 로그인 한 시각, 메시지를 보낸 시각, 약속날짜
//이렇게 특정 시간대를 입력한다
DateTime default_date = new DateTime(); //DateTime의 초기값은 "0001-01-01 00:00:00:00"

DateTime a = new DateTime(2024, 2, 15); //시,분,초를 입력하지 않았으므로 2024-2-15 00시00분00초

DateTime b = new DateTime(2024, 2, 15, 12, 30, 0); //2024-2-15 12시30분00초


DateTime now = DateTime.now; //현재 날짜, 시각을 알려준다
DateTime today = DateTime.today; //현재 날짜를 알려준다

a. 연산

DateTime(시각) + DateTime(시각)의 연산의 결과는 무조건 TimeSpan으로 반환된다.
2024-02-15 + 2024-04-01  = 2048-06-16 일이 되면 이상하지 않은가? 그래서 '시각'과 '시각'의 연산은 있을 수 없다.


아무튼 DateTime의 연산은 TimeSpan과 함께 해야한다.
        DateTime a = new DateTime(2024, 2, 15, 12, 0, 0);
        a.AddYears(1); //일년을 더함 => 2025-02-16 12시 00분 00초
        a.AddMonths(1); //한달을 더함 => 2025-03-16 12시 00분 00초
        a.AddDays(1); //1일을 더함 => 2025-03-16 12시 00분 00초
        a.AddHours(1); //1시간을 더함 => 2025-03-16 13시 00분 00초
        a.AddMinutes(10); //10분을 더함 => 2025-03-16 13시 10분 00초
        a.AddSeconds(125); //125초를 더함= 2분5초 이므로 => 2025-03-16 13시 12분 05초
        
        //뺄때도 역시 마찬가지로 Add~~ 를 사용
        a.AddYears(-1); //일년을 뺌
        a.AddMonths(-1); //한달을 뺌
        a.AddDays(-1); //1일을 뺌
        a.AddHours(-1); //1시간을 뺌
        a.AddMinutes(-10); //10분을 뺌
        a.AddSeconds(-125); //125초를 뺌
        DateTime a = new DateTime(2024, 2, 15, 12, 0, 0);
        TimeSpan span = new TimeSpan(10, 0, 0); //10시간
		a.Add(span); //2024-02-15, 22시 00분 00초가 저장
        
        
        //DateTime - DateTime = TimeSpan
        DateTime b = new DateTime(2024, 1, 1, 12, 0, 0);
        
        TimeSpan result = a - b; //

 

 

3. ToString 텍스트로 변환시 형식 (포맷Format) 지정

각 형식만 알고있으면 간단하다
y - 년
M - 월
d - 일
h - 시
m - 분
s - 초

yyyy-MM-dd hhmmss  "2024-02-15 124050" 이런식으로 저장될것이다

@"  " 이방식으로 포맷을 지정하면  \ (원표시) 뒤에 오는 것은 텍스트를 그대로 출력한다.
TimeSpan t = new TimeSpan(1,20,10);
string remainTime = a.ToString(@"hh\:mm\:ss");  //remainTime은 "01:20:10"가 저장될것

 

참고

 

[유니티] float to ToString() 소수점 자리 표시 / 콤마(,)표시

UI Text에 float을 String으로 표현해야 할 때 원하는 소수점 자리까지만 표현을 하고 싶을경우가 있다. 단순히 ToString() 함수에 'F' 포맷을 넣어주면 된다. float a = 1.234f; a.ToString("F1"); // 1.2 a.ToString("F2")

art-life.tistory.com

반응형
반응형

 

staticconst은 변수나 메서드(=함수) 앞에 사용되는 키워드로,
각각의 특성에 따라 다르게 작동한다.
이 두 키워드는 코드에서 데이터를 공유하고 관리하는 데 사용 됨

이론적인 부분을 앞에 기술하였고,
간단하게 알 수 있도록 예시를 든 부분은 각 키워드의 마지막부분에 기술하였으니,
바쁘다면 각 키워드에서 마지막 부분인 쉽게 예를 들어보자 부분을 확인

 

static (정적)

1. 변수에서의 Static (Static Variables):

  • 특징: 클래스의 모든 인스턴스가 해당 변수를 공유한다.
  • 활용: 모든 인스턴스에서 공통으로 사용되어야 하는 데이터, 예를 들면 게임에서의 점수 카운트 등에 유용
public class GameManager : MonoBehaviour {
    public static int score = 0;
}

 

2. 메서드(함수)에서의 Static (Static Methods):

  • 특징: 인스턴스를 생성하지 않고도 클래스 자체에서 직접 호출할 수 있는 메서드이다.
  • 활용: 인스턴스의 생성 없이 사용 가능한 유틸리티 메서드 등에 유용
public class MathUtility {
    public static int Add(int a, int b) {
        return a + b;
    }
}

 

3. 정말로 쉽게 예를 들어보자

public class Character : MonoBehaviour {
    public static int accountLv = 1; //계정의 레벨을 표시
    
    public static AccountLevelUp(){ //계정 레벨업
    	accountLv++;
    }
    
    public int myLv = 1; //해당 클래스를 가진 캐릭터의 레벨
    
    public void LevelUp(){
    	myLv++; //캐릭터의 레벨업
    }
    
}

위와 같은 클래스가 있고,

하이어라키에는 아래처럼 3개의 오브젝트가 있다고 가정하자.

Character.cs 컴포넌트를 보유하고있는 3개의 오브젝트(혹은 그 이상)

 

int myLv 변수는 오브젝트(인스턴스)가 각각 개별적으로 소유하고있어,

1번 오브젝트 myLv = 3;

2번 오브젝트 myLv = 2;

3번 오브젝트 myLv = 99;

...

이렇게 오브젝트 별로 개별적으로 myLv 값을 다르게 가질 수 있다.

 

 

하지만 int accountLv 변수는 static 이기에 이 세상에 단 하나밖에 없다.

(Character.cs 를 아무리 많이 생성을 한다고 해도, accountLv는 오브젝트 별로 보유하고있는게 아닌 딱 1개의 공간만 가지고있다)

1번오브젝트에서 accountLv = 3; 이라고 지정한다면

2번오브젝트, 3번오브젝트, 10000번 오브젝트 어디서든 accountLv를 불러오면 전부 3이라는 값을 출력한다.

정확히는 Character 클래스 자체에서 값을 관리한다고 보면 된다.

(static은 특정 인스턴스가 아닌 클래스 자체에 속해서 관리하라고 선언하는 것)

 

각 오브젝트들이 자신의 레벨업하기위해서는 myLv 값을

계정 레벨을 레벨업하기 위해서는 (계정은 1개이므로) accountLv 값을 사용한다.

 

그러한 특징으로

주로 클래스 수준에서 공통으로 사용되는 작업이나 데이터를 처리하는 데 활용된다.

그러므로 외부(다른 클래스)에서 불러 올때도 간편하다

Character.accountLv;

어디서든 위처럼 사용하면 된다.

 

반대로 x번째 오브젝트의 'myLv'를 가져와야 할 경우는..

x번째 오브젝트의 Character를 캐싱을 해서 'myLv'를 불러와야될 것이다.

public int GetCharacterLv(Character obj){
 return obj.myLv;
}

뭐 이런식으로 말이다..

(상황에 따라 방법에 따라 개별 오브젝트의 변수를 가져올 수 있는 방법이 너무 다양하고 다르기에 적절하게 코딩해야한다)

 

const (상수)

static은 정적형태로 사용하지만 const는 상수의 개념이라 논리적으로 값이 바뀌는 메서드(함수) 형태로의 표현은 불가능하다.

변수 (Constants):

  • 특징: 값을 변경할 수 없는 상수를 정의합함.
  • 활용: 변하지 않는 값들을 선언할 때 사용되며, 런타임 중(실행 중)에 변경할 수 없다.
public class Constants {
    public const float PI = 3.14f;
}

2. 사용 방법:

  • const 변수는 반드시 선언과 동시에 초기화되어야 한다.
  • const 변수는 런타임 중에 값이 변경될 수 없다.
public class Example {
    public const int MAX_VALUE = 100;
}

 

3. 정말로 쉽게 예를 들어보자

public class Example {
    public const int MAX_VALUE = 100;
    public const int MIN_VALUE = 1;
}
public class GameManager {
    void Start(){
    	int a = Example.MIN_VALUE + Example.MAX_VALUE;
    }
}

 

예상하겠지만 Example 클래스에서 MIN_VALUE, MAX_VALUE 둘을 더하므로 a의 값은 101일 것이다.

 

정말 알기 쉽게 얘기한다면

실행이 되는 시점에서 모든 코드에서 MIN_VALUE를 쓰고있는 부분은 전부 1

MAX_VALUE를 쓰고있는 부분은 전부 100 으로 교체되어서 실행이 된다고 생각하면 가장 빠르게 이해할 수 있다.

즉 실행이 되는 순간, 위 GameManager 코드가  아래처럼 변경 된 다음에 실행이 된다고 생각하면 쉽다.

public class GameManager {
    void Start(){
    	int a = 1 + 100; //실행되는 순간 const는 값이 이렇게 변경되어서 시작된다고 생각 :)
    }
}

어차피 const는 프로그램이 실행~종료 할때까지 처음 그 값에서 변경이 불가능하다.

즉, 언제든지 변할 수 있는 변수의 의미가 아닌 항상 그대로 변하지 않는 상수의 개념이기때문

 

※ 참고 ※

 

 

[유니티] DateTime & TimeSpan ToString() 표기방법

DateTime과 TimeSpan 클래스에 대한 설명과 텍스트(string)으로 변환시 원하는 형식으로 표기하는 방법 우선 TimeSpan은 '시간'값 DateTime은 '시각'값을 가진다. 처음에 많이들 혼동하고 왜 다른 클래스로

art-life.tistory.com

 

반응형
반응형

 

 

(이전글 SSL인증] SSL, DCV 도메인인증 안될때 꼼수발급 절차 및 방법, 꼼수(?))

이전 글에서 다뤘지만 나는 가.성.비라는 단어 하나에 꽂혀

호스팅, 도메인, SSL인증서 모두 다 다른 업체를 끼고 아래와 같은 절차를 거쳤다.

그리고 SSL 인증서까지 우여곡절끝에 발급을 받게되었다.

인증서 발급 회사마다 파일이름은 다르지만 결국 필요한건 다 들어있다.

pem, csr, crt +  nopasskey

우선 경고하지만 절대 개인키의 비밀번호는 까먹지 마시길..

아예 파일자체를 분실을한 경우는 대부분 인증서 사이트에서 재 다운로드 받을 수 있지만, 개인키는 본인이 까먹으면

그냥 재발급받아야한다고한다. (무료의 경우 큰타격이 없지만 유료는 ㅎ...ㅎㅎ..ㅎㅎㅎㅎㅎㅎ)

 

왜 이런말을 남겼냐면 난 내가 개인키를 까먹은줄 알았다.

다행히 어디에 적어뒀고, 자주쓰는 키암호였다.

 

뭐 아무튼 나는 내 웹호스팅은 카페24이므로 카페24의 인증서관리탭으로 진입했다.

'외부인증서 관리' 클릭

 

외부 인증서 신청하기

 

위 화면까지 오면 내가 받은 인증서는 파일인데 여기에서는 텍스트를 입력하란다.

그리고 나온 텍스트를 모두선택해서 붙여넣어주면 된다.

각 인증서는 파일확장자가 그럴뿐이지 결국 전부 텍스트로 되어있다.

 

 

아 그리고 계속 개인키가 안맞다, 비밀번호가 틀리다...막 계속 안됐는데

알고보니 SSL CRT는  .CRT파일이 아닌 .PEM 파일이었다...

 

이거 때문에 애꿎은 cloudv 고객센터분들께 문의를 드렸었다.

 

이후 하루지나고 https://내도메인 으로 접속이 잘 된다.

반응형
반응형

 

수많은 시행착오 끝에 도메인 인증을 받았다..
3일간 소요한 시간낭비를 생각하면 다음부터는 이런짓을 하지 말아야겠다 다짐하며 포스팅을한다..ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

우선 소상공인(?)인 나에게 가장 가성비가 좋은 곳들을 비교하고, 여기저기 업체들을 사용했다.

일단 결론부터 말하자면
웹호스팅, 도메인은 있지만 서로 연결하고 SSL인증을 받는 과정에서
따로 웹서버도 없고, 메일서버도 없고, 그래서 이메일 인증도 하기 힘들고 CNAME이 뭔지 모르겠는데 작동은 제대로 안하고, HTTP로 인증하기를 해도 파일을 FTP를 통해 업로드해도 제대로 작동하지 않고 시간만 소요되는 사람들을 위한 글이라고 보면 되겠다.
내가 진행한 업체
도메인 호스팅케이알 https://www.hosting.kr/
호스팅 Cafe24 https://www.cafe24.com/
SSL인증 클라우드v https://www.cloudv.kr/

(한 곳에서 다 했다면 이런 수고는 안했다.. 그 놈의 가성비..)

 

그래도 오로지 싼가격만 따라가지 않았고,

서비스나 추가기능들을 하나씩 다 따져보았고 최종적으로 저 표대로 결정 되었다.

 

거의 이런느낌

 

우선 웹호스팅과 도메인을 구매, 보유하고있다는 가정하에 진행

사실 처음에는 SSLforFree, ZeroSSL과 같이 귀찮더라도 무료로 SSL인증서를 발급 하는 곳을 찾았다.

하지만 무료라서 그리고 외국사이트라 호스팅에 제대로 인증이 안되는 것인줄알고 결국 유료결제를 한셈

 

나는 일단 CNAME, HTTP인증 다해보았다. 시간이 조급해서 그랬던 것인지 뭐가 잘 안됐다.

시도했으나 줄 바꿈 관련 오류가뜨고 진행이 안되었다.

 

결론SSL인증서 발급은 유료가 됐든 무료가 됐든 상관없다.

 

마지막 남은건 이메일인증.

 

하지만 이메일 인증은 특정 메일주소

admin@도메인주소, administrator@도메인주소,domainprivacy@도메인주소, webmaster@도메인주소

등의 이메일 계정이 있고, 이메일을 받을 수 있는 상태여야한다. ㅠㅠ

 

하지만 내 경우는 웹호스팅을 했기에 SMTP메일서버든 저런메일계정이든 그런게 없었다. (없는 줄 알았다)

 

이제 꼼수(?)가 시작된다.

 

본인이 구매한 해당 웹호스팅업체가 웹메일을 지원해야한다

카페 24의 경우 무료 그룹웨어/웹메일신청 이라는 메뉴가 있다.

나는 이미 신청해서 텍스트가 바뀐듯하다.

아무튼 카페24에서는 그룹웨어 or 웹메일 둘중하나 양자택일을 해야해서 무료웹메일로 신청을 했고,

곧바로 웹메일관리페이지로 들어갈 수 있었다.

 

웹관리자페이지에서 메일 '도메인 설정'을 누른다
내가 구매한 도메인 입력 및 대표도메인으로 설정

연결을 하고 대표도메인으로까지 설정을 했다.

여기까지 왔다면 아마 메일서버를 연결할 A, TXT, CNAME 레코드설정을 해야하고

무료 SSL 인증서 신청등 가능했는데

그냥 무시하고 내가 구매한 도메인 사이트로가서 도메인 네임서버 자체를 카페24(웹호스팅)로 변경하자

각 업체별로 도메인 네임서버 변경하는 방법은 잘 나와있을것이다.

 

나는 도메인을 호스팅케이알에서 구매를 했으니 호스팅케이알에 접속 했다

호스팅 케이알에서 내 도메인의 네임서버를 Cafe24 서버로 다 변경해주었다.

 

이제 3~6시간 혹은 하루정도 기다리면 내 도메인으로 접속을 하면 아까 웹메일관리자페이지로 접속이 된다.

 

거기서 이제 SSL인증이메일인증에 필요한 계정을 만들어주면된다.

SSL 인증서 발급 업체별로 필요한 메일계정이 다름

 

어떤걸 할지 정해서 이메일 계정을 만들어주면된다.

 

나는 admin이라는 계정을 생성했다.

 

이후 이메일 인증을 진행을했고, 얼마 안있어 메일이 왔다.

 

드디어 메일 인증코드가 왔다

 

메일에 걸려있는 here 링크를 클릭해 메일인증코드를 입력해주면 끝

 

이제 인증서를 다운로드 할 수 있게됐다.

 

다음 포스팅은 SSL인증서를 내 웹호스팅서버에 어떻게 등록하는지에 대해 다뤄볼까한다.

(이것도 찾아보고 문의하고 별 삽질을 다했다.)

반응형
반응형
실무에 바로 적용해야할 상황이 생겼는데,
웹 쪽은 문외한이라 일일히 공부했고

결국 해냈다.
다른 사람들은 시간낭비하지 말라고 현시점 기준으로 가성비를 체크해본다.

 

 

도메인 업체 선정

1. 절대 가격만보고 하지마라

어떤 업체가 좋다 나쁘다 할것은 없어보인다. 다 그런 가격이 책정되는데에는 이유가 있었다.

 도메인 고를때 나도 가격만보고 실수를 할 뻔했는데,

다행히 구매 전에 고심초사하는 성격이라 가성비랑 기능 두마리토끼를 모두 잡았다.

도메인 구매 화면(닷홈)

일반적으로 이런식으로 '쿠폰적용시' 혹은 '1년 초회 할인' 등으로 마케팅을 많이 한다.

또 다른 도메인 구매 업체 (cafe24)

 

호스팅케이알 도메인 구매

짚고 넘어가야할것은,

도메인은 웬만해서는 자주 바뀌거나 하지 않으니 '1년만 써보고 나중에 결정해야지~' 하면

1년 ~ 3년 후에 비교적 꽤 비싼 금액으로 진행해야하는 상황이 생기니

 

장기간을 가정하고 계산 비용을 따져서 결정하는 것이 옳다고 생각한다.

 

2. 업체에서 내가 필요로 하는 기능들이 있는지 꼼꼼히 따져보자

쉽게 지나칠수 있는 부분이라고 생각이 드는데, 도메인 구매시 해당 업체에서 지원하는 기능들이 무엇이 있는지 꼼꼼히 따져봐야한다.

닷홈 기능

 

cafe24

 

나의 경우 호스팅케이알이 가장 저렴해서 골랐고,

이후 포스팅할것이지만 SSL인증을 따로 해주었다.

요즘 대다수의 웹 브라우저들(크롬, 익스플로러, 엣지, 사파리 등)은

사이트 진입시 http:// 로 입력을 하더라도 자동으로 https:// 로 바꿔서 접속이 된다.

이때 해당 웹에 SSL인증이 받아져있지 않다면 해킹위험이라면서 주의 표시가 뜬다. (접속이 막히는 경우도 간혹 있다)

 

 

자, 나도 이제 도메인과 호스팅업체를 선정했고

도메인과 호스팅계정을 연동하는 과정이 남았다.

반응형

+ Recent posts