※ Windows 10 환경에서 실행하였습니다.

 

[Create React App 공식문서] Advanced Configuration: https://create-react-app.dev/docs/advanced-configuration

 

아래의 방법은 빌드된 CRA 프로젝트를 웹 서버를 거치지 않고, 파일로 실행하는 방법입니다.
기본 설정인 build 폴더에서 index.html 파일을 열면 소스코드 경로가 잘못되어 화면이 안나오는 것을 해결하는 방법입니다.

 

두 가지 방법이 있습니다.

1. 프로젝트 폴더 하위에 .env 파일 또는 .env.production 파일을 생성후 PUBLIC_URL=. 을 설정합니다.

2. package.json 에 homepage 속성을 추가하고 값을 "." 으로 설정합니다.

 

create-react-app에서 빌드시 index.html에서 파일들의 경로가 "/" 로 잡혀있는데, "./" 로 만들어줍니다.

./ 로 바뀌면서 파일들의 경로가 index.html 파일 기준으로 바뀝니다.

 

확인 방법 : 빌드된 폴더 내 index.html 파일을 확인해보세요.

 

 

 

 

 

※ Windows 10 환경에서 실행하였습니다.

 

[Go 공식 문서] Go 의 로컬 모듈 만드는 방법 :  https://go.dev/doc/tutorial/create-module

[Go 공식 문서] Go 로컬 모듈 불러오는 방법 : https://go.dev/doc/tutorial/call-module-code

아래 코드 또는 이미지는 모두 예시입니다.

1. 로컬 모듈을 만들고 싶은 위치에 go mod init 명령어를 사용하여 로컬 모듈을 만들어줍니다.

/* local module/greetings.go */

package greetings

import (
	"fmt"
)

func Hello(name string) (msg string) {
	message := fmt.Sprintf("Hello, I'm %s. Nice to meet you.", name)
	fmt.Println(message)
	return message
}
go mod init my-greetings
go build

 

2. 로컬 모듈을 불러올 모듈에서 go.mod 파일을 다음과 같이 수정합니다.

/* module that I want to load local module/go.mod */

module this-is-my-program

go 1.18

replace my-greetings/greetings => "../local module"   // 절대 경로도 가능합니다.

require my-greetings/greetings v0.0.0

불러올 모듈이 많다면 아래의 형식으로도 사용할 수 있습니다.

require (
	my-greetings/greetings => "../local module"
)

코드 상에서는 아래처럼 사용합니다.

/* module that I want to load local module/main.go */

package main

import (
	"fmt"
	greetings "my-greetings/greetings"
)

func main() {
	fmt.Println("I want to load my local module here.")
	greetings.Hello("Dr.Pepper")
}

 

3. 모듈을 빌드한 후, 실행해보면 로컬 모듈에서 불러온 greetings.Hello() 함수가 정상 실행된 것을 알 수 있습니다.

 

참고 1. go.mod를 수정하지 않으면 모듈을 불러올 때, 다음과 같은 에러가 발생할 수 있습니다.

 

참고 2. go.mod 파일에 require 가 없으면 다음과 같은 에러가 발생할 수 있습니다. 그럴 때는 에러 메시지에 나온 것 처럼. go get 명령어로 로컬 모듈을 불러오면 됩니다.

그러면 go.mod 파일을 아래처럼 만들어줍니다.

 

CefSharp으로 Chromium 브라우저를 사용하면서 카카오 API를 사용하면 기본 언어가 영어로 설정된다.

추측이지만 html 언어따라 가는 것 같기도 하다.

 

CefSharp Chromium 브라우저의 언어 설정을 바꾸려면

{CefSharp.WinForms.ChromiumWebBrowser 객체}.BrowserSettings.AcceptLanguageList = "ko-KR"; 
을 넣어주면 한글로 나온다.

 

테스트는 C# .NET Framework 4.8에서 진행했다.

* [ ]은 버튼 표시입니다.

 

1. 우측 상단의 [•••] 클릭 후 [설정(S)]을 클릭하여 설정에 들어간다.

2. 설정 우측 메뉴에서 [쿠키 및 사이트 권한]을 클릭하고 사이트 사용 권한에서 https://www.ei.go.kr/을 찾아 [>]을 클릭한다.

3. 사이트 사용 권한에서 비보안 콘텐츠의 값을 허용으로 바꾼다.

Logitech G Hub와 보안프로그램을 둘 다 삭제하면 키보드 입력이 된다.

Logitech 무선 키보드 사용자들은 웹사이트에서 공인인증서를 사용하고나서 무조건 보안프로그램을 삭제하고 Logitech G Hub도 삭제했다가 다시 설치해야 한다.

 

물론 다시 설치하면 G Hub에서 설정한 값들은 다 날아간다.

 

ㅅㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅄㅂ

 

Logitech G HUB – Logitech 지원 + 다운로드

최소 크기 테스트


이 코드 그대로 적용하면 주소 설정할 때마다 마커가 계속 찍혀 맵 하나에 여러 마커가 생긴다.

맵 마커 제거 코드는 여기에서 참고하면 될 것 같다.

 

그리고 Google Map API 사용할 때 key 파라미터에는 구글에서 발급받은 API_KEY를 사용한다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        html,
        body,
        #google-map {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0
        }
 
        #search-panel {
            position: absolute;
            top: 10px;
            left: 25%;
            z-index: 5;
            background-color: #FFFFFF;
            padding: 5px;
            border: 1px solid black;
            text-align: center;
            padding: left: 10px
        }
    </style>
    <title></title>
</head>
<body>
    <div id="search-panel">
        <input id="address" type="text" value="주소 입력값" />
        <button id="submit" type="button" value="Geocode">지도 검색</button>
    </div>
    <div id="google-map">
    </div>
 
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <!-- Google Map API -->
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initMap">
    </script>
    <script>
        /**
         * Google Map API 주소의 callback 파라미터와 동일한 이름의 함수이다.
         * Google Map API에서 콜백으로 실행시킨다.
         */
        function initMap() {
            console.log('Map is initialized.');
 
            /**
             * 맵을 설정한다.
             * 1번째 파라미터 : 구글 맵을 표시할 위치. 여기서는 #google-map
             * 2번째 파라미터 : 맵 옵션.
             *      ㄴ zoom : 맵 확대 정도
             *      ㄴ center : 맵 중심 좌표 설정
             *              ㄴ lat : 위도 (latitude)
             *              ㄴ lng : 경도 (longitude)
             */
            var map = new google.maps.Map(document.getElementById('google-map'), {
                zoom: 12.5,
                center: {
                    lat: -34.397,
                    lng: 150.644
                }
            });
 
            /**
             * Google Geocoding. Google Map API에 포함되어 있다.
             */
            var geocoder = new google.maps.Geocoder();
 
            // submit 버튼 클릭 이벤트 실행
            document.getElementById('submit').addEventListener('click'function() {
                console.log('submit 버튼 클릭 이벤트 실행');
 
                // 여기서 실행
                geocodeAddress(geocoder, map);
            });
 
            /**
             * geocodeAddress
             * 
             * 입력한 주소로 맵의 좌표를 바꾼다.
             */
            function geocodeAddress(geocoder, resultMap) {
                console.log('geocodeAddress 함수 실행');
 
                // 주소 설정
                var address = document.getElementById('address').value;
 
                /**
                 * 입력받은 주소로 좌표에 맵 마커를 찍는다.
                 * 1번째 파라미터 : 주소 등 여러가지. 
                 *      ㄴ 참고 : https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingRequests
                 * 
                 * 2번째 파라미터의 함수
                 *      ㄴ result : 결과값
                 *      ㄴ status : 상태. OK가 나오면 정상.
                 */
                geocoder.geocode({'address': address}, function(result, status) {
                    console.log(result);
                    console.log(status);
 
                    if (status === 'OK') {
                        // 맵의 중심 좌표를 설정한다.
                        resultMap.setCenter(result[0].geometry.location);
                        // 맵의 확대 정도를 설정한다.
                        resultMap.setZoom(18);
                        // 맵 마커
                        var marker = new google.maps.Marker({
                            map: resultMap,
                            position: result[0].geometry.location
                        });
 
                        // 위도
                        console.log('위도(latitude) : ' + marker.position.lat());
                        // 경도
                        console.log('경도(longitude) : ' + marker.position.lng());
                    } else {
                        alert('지오코드가 다음의 이유로 성공하지 못했습니다 : ' + status);
                    }
                });
            }
        }
    </script>
</body>
</html>
cs

 

{아파치가 설치된 경로}/httpd.conf 파일에서


log_config_module이 아래처럼 주석이 없는 것을 확인 후 (기본 설정이면 주석이 없다.)

LoadModule log_config_module modules/mod_log_config.so


<IfModule log_config_module> 안에서

<IfModule log_config_module>


이렇게 되어있는 것을

CustomLog "logs/access.log" common


이렇게 바꾼다.

CustomLog "|bin/rotatelogs.exe logs/%Y%m%d_access.log 86400" combined


Windows 운영체제에선 반드시 rotatelogs 다음에 .exe 를 붙여주어야 한다. 참고

다른 것은 달라질 것이 없으니 Apache2.4 문서를 참고하면 된다.





- 상황 -

웹프로그래밍 연습으로 가상 머신으로 서버를 돌리려고 Oracle사의 Virtual Box를 깔고

CentOS 7 Server 버전을 설치하려고 iso파일을 다운받았다.


몇가지 설정을 마친 후에 시작을 눌러보면 "마우스 통합"이 지원되지 않는다고 한다.

별 상관없겠지 넘어가다 갑자기 GUI가 나오면서 마우스가 필요한데 가상머신 안에서 마우스가 먹히질 않는다.


- 시도 -

  1. 가상 머신을 실행하면 기본 설정으로 우측 하단에 작은 아이콘 모양들이 여럿 있다. 그 중 USB 아이콘을 발견하고 [설정]탭에 들어간 후 [USB]탭에 내 마우스를 연결 시켰다. 다시 가상 머신을 실행하고 마우스를 움직여보니 되기는 되었다. 하지만 커서가 안보여 버튼을 클릭할 수 없었다.
  2. 한참 찼다가. Virtual Box CentOS server mouse라고 검색후 첫 번째 글을 봤다. 댓글을 보는데 [설정] -> [시스템] -> [마더보드(M)]에서 포인팅 장치(P)의 값을 USB 태블릿 으로 설정해보라고 한다. 설정하고 가상 머신을 다시 켜보니 조그만 마우스 커서가 보였다.

- 해결 방법 -

 1. Oracle VM VirtualBOX 관리자 창으로 돌아간다.

 2. Oracle VM VirtualBOX 관리자 창에서 가상 머신을 선택한 후 설정(S) 버튼을 클릭해 설정 창으로 이동한다.

    


 3. 설정 창에서 [시스템] -> [마더보드(M)] 탭으로 이동해 포인팅 장치(P) 의 값을 USB 태블릿으로 바꾼 후 

    확인을 클릭하고 다시 가상 머신을 실행한다.





DevStyle 필수


http://www.eclipsecolorthemes.org/?view=theme&id=44631


XML 파일 다운 받아서 import 해주면 된다.

+ Recent posts