멍멍이네 블로그

원인 : php에서 유니티로 json형태로 값을 보냈는데, 유니티에서 JsonUtility.FromJson 메소드를 썼더니 에러가 뜸.

 

해결 : System.Text.Encoding.UTF8.GetString(byte[] _byte, 3, _byte.Length-3);

받은 json형태의 값 앞에 이상한 값이 들어있음.

앞부분 3바이트를 잘랐더니 정상작동함.

참고 링크 : https://en.wikipedia.org/wiki/Byte_order_mark

 

Byte order mark - Wikipedia

Unicode character "FEFF" redirects here. For the airport in Central African Republic with the airport code FEFF, see Bangui M'Poko International Airport. For the program used in X-ray absorption spectroscopy, see FEFF (software). For the name of U+FEFF in

en.wikipedia.org

 

(추가) 2021. 04. 20

php -> unity로 값 전송 시 종종 뜨던 부분은

1. Trim() // return 값에 공백이 들어가던 문제

2. 위와 같은 3byte 이상한 값이 들어가던 문제

 

있었으며, 당일 기준 코딩 돌려보니 Trim()이나 3byte 제거 안 해도 정상 작동한 걸로 보아, 수정된 것으로 보인다.

 

 

위 문제 외 배열 값을 처리 시 기타 오류가 떴던 부분은 다음 게시물에서 참고.

2021.04.20 - [프로그래밍/Unity3D] - [Unity3D-php] JSON Parsing error (array type)

1. my.ini 파일 없음

-> 버전 업 되면서 기본 파일 지원x

 ㄴ my.ini 파일을 해당 경로에 직접 만들면 됨

 

2. MySQL 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다.

-> 서비스에서 mysql 시작이 안되면서 에러뜸.

 ㄴ cmd에서 bin 경로로 가서 net start mysql 명령어를 쳐서 mysql을 실행해야 함.

 

3. NET HELPMSG 3534

-> net start mysql 명령어를 썼는데 mysql 서비스를 시작할 수 없다고 뜸.

 ㄴ data 폴더를 삭제후 mysqld --initialize 하고 다시 net start mysql 하면 됨.

 

4. data폴더에 xxx.err 폴더 내에 root의 비밀번호가 없는 경우.

-> data폴더에 xxx.err 폴더에 비밀번호가 없는 경우(에러로그만 잔뜩 있는 경우)

위와 같이 data 폴더 삭제 후 mysqld --initialize 명령어로 새로 이니셜라이즈 해야 함.

 

5. ERROR 1820(HY000) : You must reset your password using ALTER USER statement before executing this statement.

-> mysql에 접속한 후 help를 제외한 대부분의 명령어 사용 불가

 ㄴ alter 명령어로 root의 비밀번호를 변경하고 사용해야됨.

     ㄴ alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호를 넣어주세요';

 

6. mysqli 확장기능이 설치되지 않았습니다. PHP의 설정을 확인하십시오. See our documentation for more information.

-> phpMyAdmin 을 설치하는 도중 생긴 문제.

 ㄴ php.ini 파일에 들어가서 extension과 extension_dir를 손댔더니 고쳐졌습니다.

   ㄴ 1. extension과 extension_dir을 추가하지 말고, Control+F(찾기)로 검색해서 ; <- 주석을 해제하고 사용하는걸 추천합니다.

   ㄴ 2. mysqli 확장기능을 사용하기 위해서 ;extension=mysqli -> extension=mysqli 로 수정( ; 제거)

   ㄴ 3. 단순히 컴퓨터 재부팅이나 아파치 restart 명령어가 제대로 작동 안할 수 있음(저는 이 부분에서 문제였습니다) -> php.ini 수정 후 httpd.exe -k stop -> start 로 아파치를 다시 작동했더니 적용 됐습니다.

   ㄴ p.s. extension이 extension_dir보다 아래에 있습니다.

   ㄴ extension의 확장기능을 위해 풀어준 mysqli와 mbstring은 dir경로인 ext폴더에 있는지 확인해봐야 합니다.(mysqli = php_mysqli.dll 파일이 있는지 확인.)

   ㄴ php의 5, 7, 8버전마다 일부 수정사항이 존재합니다(업뎃되면서 수정,삭제 된 것이 있으니 버전별로 설치&세팅 방법을 확인해야 합니다.)

1. MySQL 설치를 합니다.

   - https://www.mysql.com/

 

 

 

2. 자신의 컴퓨터 환경에 맞는 파일을 받아줍니다.

   - 개발 환경 : windows 10 Pro 64bit

 

 

 

3. No thanks, just start my download. 를 눌러줍니다.

   - 회원가입을 하고 사용하셔도 무방합니다.

 

 

4. 압축 파일을 C 드라이브에 풀어줍니다.

 

 

5. 시스템 - 고급 시스템 설정 - 환경 변수에서 

시스템 변수 항목에 Path를 추가해 줍니다.

   - 아래 사진에서, mysql을 C드라이브에 mysql\bin까지의 경로를 넣어줍니다.

   - 저는 C:\mysql-5.7.24-~~~~~\bin 라고 설정되어 있는데,

   - C에 설치를 하면 C:\mysql\bin 이런식으로 넣으면 됩니다.

 

 

 

 

6. 압축을 푼 mysql 파일에서 my.ini을 메모장으로 

연결하여 열어줍니다.

 

 

 

7. my.ini 파일에 아래의 내용을 넣어줍니다.

[mysqld]

# set basedir to your installation path

basedir=C:/mysql-5.7.24-winx64/mysql-5.7.24-winx64

# set datadir to the location of your data directory

datadir=C:/mysql-5.7.24-winx64/mysql-5.7.24-winx64/data

port=3306

 

set basedir to your installation path는 mysql 설치 경로를 넣어주면 되고,

set datadir to the location of your data directory는 설치 경로에 /data를 넣어줍니다.

 

 

 

8. 명령 프롬프트를 관리자 권한으로 실행합니다.

 

 

 

 

9. 명령 프롬프트에서 mysql 설치 경로 디렉토리로 

이동합니다.

- windows에서 cmd 창 명령어는 리눅스와 다릅니다.

- 리눅스의 ls는 윈도우에서 dir 명령어를 사용하면 됩니다.

 

 

 

10. cmd 창에서 아래의 명령어를 입력합니다.

mysqld --install

 

 

11. mysqld --initialize

- 아래의 사진 경우 error가 발생했습니다.

- 에러는 아래의 방법을 적용하니까 문제가 해결되었습니다.

 

 

 

 

 

 

12. 시작 - 컴퓨터 관리 - 서비스 - MySQL 오른쪽 클릭 - 시작

 

 

 

 

 

13. 그 후, 이제 mysql의 임시 패스워드를 알아야 합니다.

     - XXX.err 파일을 메모장으로 연결하여 보면, A temporary password is generated for root@localhost: 비번

     - 위의 형식으로 되어 있는데 복사를 합니다.

 

 

 

 

14. 다시 cmd 창으로 돌아가 mysql -u root -p를 입력하고 패스워드를 입력하여 로그인을 하면 mysql 끝입니다.

 

 

15. 이제 php와 연동을 해야 합니다.

         - php 폴더에 php.ini에 아래의 내용을 넣어주시면 됩니다.

extension=php_mysqli.dll

extension_dir = "C:\php" <- php 설치 경로

 

16. 그리고 다시, apache를 재실행하면 연동 완료입니다.



출처: https://yongku.tistory.com/entry/윈도우-10Windows-10-운영체제에서-APMApache-PHP-MySQL-설치-및-웹서버-구축하기3-MySQL-설치?category=732841 [츄르 사려고 코딩하는 집사]

1. PHP 설치를 합니다.

   - http://windows.php.net/download 접속합니다.

   - 사용자의 컴퓨터 환경에 적합한 버전 선택을 해줍니다.

 

 

 

 

 

2. 다운로드 받은 ZIP 파일을 압축 풀기를 해줍니다.

 

 

3. php.ini-production을 php.ini로 이름을 변경을 해줍니다.

 

 

 

4. 파일 내용을 수정해줍니다.

   1) php.ini 파일에서 CTRL+F를 눌러 extension_dir 을 php 설치경로\ext를 넣어줍니다.

       - extension_dir = C:\php\ext

 

 

 

5. 1단계에서 설치했던 Apache와 php를 연동을 시켜줍니다.

   1) Apache를 설치했던 경로에서 httpd.conf 파일에 코드를 삽입해줍니다.

  

#PHP

LoadModule php7_module "C:\php/php7apache2_4.dll"

AddType application/x-httpd-php .php .html

AddHandler application/x-httpd-php .php .html

 

#configure the path to php.ini

PHPIniDir "C:\php" 

 

 

6. 관리자 권한으로 명령프롬프트를 실행하고, httpd.exe -k restart를 입력합니다.

   - Apache를 restart 해줍니다.

 

 

 

7. 메모장이나 텍스트 편집기 등을 사용하여 php의 information을 확인하는 코드를 입력해 줍니다.

    - 메모장에 <?php phpinfo(); ?>를 입력 후, Apache24\htdocs에 저장

    - 파일명은 원하는 이름.php로 저장을 해줍니다.

 

8. http://127.0.0.1/원하는 이름.php에 접속을 하면 아래의 사진처럼 나오면 php 설치는 끝이나게 됩니다.

 



출처: https://yongku.tistory.com/entry/윈도우-10Windows-10-운영체제에서-APMApache-PHP-MySQL-설치-및-웹서버-구축하기2-PHP-설치?category=732841 [츄르 사려고 코딩하는 집사]

웹서버 사용을 위한 APM(Apache(아파치) + php + MySql) 설치 방법

 

 

1. Apache 설치

    - http://apachelounge.com/download/로 들어갑니다.

    - 각 컴퓨터의 버전에 맞게 설치를 합니다.(32bit, 64bit)

 

 

 

 

2. 다운로드를 받는 ZIP 파일을 압축을 풀어줍니다.

 

 

 

 

3. 압축을 풀어준 후에, 파일에 들어가서, Apache24\conf\httpd.conf를 연결 프로그램에서 메모장으로 선택을 하여 열어줍니다.

 

 

 

 

 

4. httpd.conf 파일에서 내용을 수정합니다.

    1) Define SRVROOT "Apache24를 설치한 경로"  를 넣어줍니다.

 

 

 

    2) ServerAdmin E-mail 주소  를 넣어줍니다.

 

 

 

    3) DocumentRoot(웹을 만들면 접속되는 사이트)에서 default 그대로 둡니다.

        - default는 htdocs 네요.

 

 

 

 

 

 

    4) 명령 프롬프트 창에서 Apache에 관한 명령어 사용을 위해 Path 경로 설정을 해줍니다.

        - 내 컴퓨터에서 오른쪽 클릭을 한 후, 속성을 누릅니다.

        - 고급 시스템 설정에서 환경변수, 시스템 Path 편집을 더블 클릭 해줍니다.

        - 변수 값 맨 뒤에, ;Apache24 설치 경로\bin 까지의 절대 주소를 넣어줍니다.

        - ex) ;C:\Apache24\bin

 

 

 

 

5. 관리자 권한으로 명령 프롬프트를 실행해 줍니다.

 

 

 

 

6. 명령어 입력을 해줍니다.

    - httpd.exe -k install // Apache 설치

    - httpd.exe -k start // Apache 실행

    - 액세스 권한에 의해 숨겨진 소켓에 액세스를 시도했습니다. 라는 문제가 발생할 수 있는데, 관련 문제는 

      다음 포스팅에 올리겠습니다.

 

 

 

 

 

7. 인터넷에 http://127.0.0.1를 치고 엔터를 누르면 화면에 It works!가 나오면 Apache 설정은 성공입니다.

 

 

 

 

Apache 설치는 여기서 끝입니다. Apache 설치는 비교적 PHP나 myadmin보다 쉬운 단계여서 진행하는데 어려움이 발생하지 않았을 겁니다.

Apache 설치가 끝나면 다음 단계는 PHP 설치입니다. 

이해하기 어려운 부분이나 오류나 오타가 있으면 댓글 부탁드립니다.



출처: https://yongku.tistory.com/entry/윈도우-10Windows-10-운영체제에서-APMApache-PHP-MySQL-설치-및-웹서버-구축하기1-Apache-설치 [츄르 사려고 코딩하는 집사]

http://ateliersera.blog.me/220398012149


인터넷 검색 도중 좋은 글이 있어서 참고하고자 링크를 걸어둠.

배열과 리스트의 가장 큰 차이는 공간이 한정적이냐 아니냐 차이.

 

16. 02. 03

class A를 선언한 스크립트,
class B 선언한 스크립트가 있을때


[RequireComponent(typeof(A))]
class B
{

}


이렇게 class B를 선언하기 전에 RequireComponent시키면 class A가 어태치된다

 

--------------------------------------------------

 

class Test
{
      public int number;
     
      public Test(int n)
      {
            number = n;
       }
}

위와 같은 클래스가 있을 때,

 

void main()
{
      Test t;
      Test t1(5);

      cout « t.number;
      cout « t1.number
      t = 10;
      coun « t.number;
}

 

문제1. cout으로 number를 출력하고 있는데 C#과 C++에서는 값이 어떻게 나오는지 써보시오.

 

C++일 경우 0 5 10 나온다.

C#일 경우 C#일 경우 t = 10에서 에러 호출낸다.

 

문제2. 그러면 C++에서 t = 10; 구문을 t = 10.0; 으로 바꿀 경우 어떻게 될까?

 

위와 같이 출력됨.

 

 

 

문제 1과 2의 이유

C#은 암시적형변환을 안해줘서 무조건 형이 다르면 에러를 띄우고, C++ 특성 상 암시적 형변환이 발동돼서 값을 받는게 실수형의 생성자가 없어서 컴파일러가 암시적으로 int형으로 형변환 시켜버려서 호출되는것이다.

 

----------------------------------------------------------------------------

 

그럼 내가 생성자에서 int형을 받는데 무조건 int형만 받을려고 할려면 생성자를 어떻게 해야될까??

생성자를 만들때

 

public explicit Test(int n)

 

이렇게 explicit 이 키워드를 사용하면 매개변수 타입이 현재 int형인데 float형이 들어오면 오류를 띄우게 하는거

무조건 int형만 받겠다는 의미로 이 키워드를 사용한 메소드는 암시적 형변환을 시도 안하겠다는 의미로 사용하는것이다.

 

하지만 강제적 형변환으로 해서 접근할 수 있다.

 

explicit Print(int n) { n을 받아서 출력 }

 

Print(10) 이렇게 하면 10을 호출하겠지만, 만약에 Print(10.5) 라고 써야될 경우

 

Print((int)10.5)

 

강제적 형변환을 해서 넘겨주면 된다.

Rejected because no crossdomain.xml policy file was found

 

원인

서버 접근하는데 위와 같은 에러가 발생.

검색 시 유니티에서 플랫폼이 Web Player일 경우 발생하는 에러라고 함.

 

해결

빌드세팅에서 플랫폼을 다른걸로 바꿔주자!

가장 큰 차이는 C는 절차지향언어이고, C#은 객체지향언어이다.

 

절차지향언어란?

1.

컴퓨터에서 연산, 대입, 판단, 입출력, 실행 순서 등의 기본적인 처리를 쉽게 기술할 수 있고, 그런 실행 순서(절차)를 지정해서 프로그램을 작성하기 위한 프로그래밍 언어COBOL, FORTRAN, PL/Ⅰ 등 절차를 명확한 계산법으로서 용이하게 표현되는 문제 지향 언어. 원칙으로 쓰여질 순서에 구문 요소가 실행되는 프로그램 언어이다. 일반용 고수준 프로그래밍 언어의 대부분은 절차 중심 언어이다. 비절차 언어(non procedural language)와 대비된다.

[네이버 지식백과] 절차 지향 언어 [procedure-oriented language] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사)

 

 

2. 절차 지향(구조적) 프로그래밍
절차 지향 프로그래밍은 소프트 웨어를 개발하는데 기능 또는 구조위주의 관점으로 바라보면서 원하는 기능을 하향식(폭포식,Top Down)
으로 세분화 구체화 하여 해결책을 찾아가는 개발 방법이다. ( 접근 방법 : 분할정복 )

장점은
1. 기능 단위로 수행하기 때문에 해결책을 구하기쉽다.
2. 개발 기간이 짧다.

단점
1. 요구 변환에 약하다( 유지보수 비용 증가)
2. 분석에서 설계로의 전이과정이 힘들다.
3. 잦은 변경이 불가능하고 하향식이라 한쪽을 변경하면 다른쪽에 영향을 준다.
4. 대형 프로젝트에 적합하지 않다.

 

 

객체지향언어란?

1. 객체 중심 프로그래밍을 위해 사용되는 언어로 연산문들의 집합으로 이루어진다. 객체는 자료와 프로그램추상화로써 구현되는데, 연산하고자 하는 여러 가지 객체들 속에서 그 연산들의 정의가 나타나며 동시에 객체에 대한 정의는 그들 연산의 여러 가지 측면에서 나타난다.

[네이버 지식백과] 객체 지향 언어 [object-oriented language, 客體指向言語, きゃくたいしこうげんご] (용어해설)

2. 객체 지향 프로그래밍
객체 지향 프로그래밍은 소프트 웨어를 개발하는데 데이터 위주의 관점으로 바라보면서 구체적인 데이터들간의 상호 관계를
정의함으로써 상향식(Bottom Up)으로 해결책을 찾아가는 개발 방법이다.
이러한 데이터들의 상호 관계를 위주이기 때문에 복잡한 네트워크 구조가 된다.( 접근 방법 : 상호 관계 정의 )

장점
1. 유지 보수가 용이하다.
2. 요구 사항의 변화에 쉽게 대처한다.
3. 분석과 설계단계로 전이 과정이 쉽다.
4. 대형 프로젝트에 적합하다.

단점
1. 대형 시스템의 경우 상속구조나 객체간의 상호 작용이 너무 복잡해질수 있다.
2. 서브 시스템의 정의 방법이 제대로 정립되지 않았다.

 

 

 

네이버 지식백과와 지식인 참조함.

지식인 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=187331092&qb=Y+yWuOyWtCDqsJ3ssrTsp4DtlqU=&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=SFQGvsoRR1sssvWmGtZsssssssG-320430&sid=qXgftZxDZlZX%2Bqc7gg7Nzw%3D%3D

 

객체지향적 프로그램은 다형성과 확장성을 추구하는 프로그래밍.