요즘 사용 하는 곳이 점점 늘어나는 것 같아 뭔가 궁금해서 설치를 해보았습니다.

 

node.js 설치는 너무 간단해서 간략히 설명 드립니다.

 

node.js 사이트에 접속을 합니다.  


https://nodejs.org/ko/




안정적인 버전이 좌측에 있습니다. 계속 버전이 갱신 되겠지만 좌측에 있는걸 다운 받습니다.


운영 체제가 윈도우가 아니면 하단에서 [다른운영체제]를 클릭 합니다.




다운 받는동안 눌러 봤습니다. 운영체제 별, bit별로 정리되고 소스도 공개 되어있네요.

 


이제 다운받은 파일을 설치해 보겠습니다.


node-v8.12.0-x64.msi 파일을 실행 합니다.

 


[실행] 버튼을 클릭 합니다.


nodejs download install


[Next] 버튼을 클릭 합니다.



I accept the terms in the License Agreement를 체크하고

[Next] 버튼을 클릭 합니다.



설치 위치를 변경하려면 Change…로 다른 디렉토리를 선택 하고

[Next] 버튼을 클릭 합니다.



마음에 안드는게 있으면 빼버리고

[Next] 버튼을 클릭 합니다.



설치 관련 설정이 끝났다는군요.

[Install]을 클릭해서 설치를 진행 합니다.



설치가 잘 진행 되네요.



설치가 끝났답니다.

[Finish]를 클릭 합니다.



정말 설치가 잘 되었는지 확인하기 위해 command 창을 하나 열고

node를 치고 엔터



진짜 잘 설치 되었네요.


- copy coding -


예전에는 프로그램을 만들 때 기본적인 초기 값 설정과 사용 중 추가로 발생 하는 환경 정보들을 파일로 만들거나 쿠키에 넣어 관리를 했었는데 매번 파일을 읽어와 파싱 하고 적용하는 번거로운 작업들을 해야 했습니다. 

그런 작업들을 경량화된 데이터베이스인 SQLite를 이용하여 관리를 하면 좀더 편하게 작업이 될 수 있고 프로그램에서 발생 하는 여러 가지 데이터와 로그등도 쉽게 관리할 수 있습니다. 

사실 sqlite도 파일 형태의 데이터 베이스 이기 때문에 파일로 관리할 때 처럼 동시에 쓰기를 하면 오류가 발생 합니다.




1. SQLite 설치


1.1 SQLite 다운로드


제일 먼저 해야 할 일은 SQLite 홈페이지에서 필요한 파일을 다운로드 받습니다.


다운로드 페이지에 가면 운영체제 별, 종류 별로 분류가 되어 있고 하단으로 조금 스크롤을 하면

Source Code 항목에 시간이 지나면 버전 정보는 달라 지겠지만 sqlite-amalgamation-xxxxxx.zip 형태의 소스파일을 다운 받습니다. 압축 파일을 풀면 헤더 파일과 소스 파일이 있습니다.


Precompiled Binaries for Windows 항목에는 윈도우용 파일이 있는데 소스파일과 동일한 버전인 sqlite-dll-xxxx.zip 형태를 가진 파일이 존재 합니다. 여기서 32-bit, 64-bit 중 자신의 시스템에 필요한 파일을 다운로드 받습니다.


MFC Sqlite



1.2. Lib 생성


다운 받은 파일은 적당한 곳에 압축을 풀어 주세요.

sqlite3.def

sqlite3.dll

두개의 파일만 보이고 우리가 사용할 lib 파일이 보이지 않는데 lib는 생성을 해야 합니다.


개발자 명령 프롬프트를 실행 합니다.  Visual Studio가 한글인지 영문인지에 따라 한글과 영문으로 나오지만 동일한 명령어 입니다.


MFC Sqlite


저는 한글이라 이렇게 나오고 영문이면 Developer Command Prompt 이렇게 되어 있습니다. 어찌되었건 실행을 하면 콘솔 창이 하나 나옵니다.


MFC Sqlite


Developer Command Prompt 콘솔 창이 나오면

압축을 푼 디렉토리로 이동을 하고 cd D:\sqlite-dll-win64-x64-3220000

lib 생성 명령을 입력 합니다.


32 bit : D:\sqlite-dll-win64-x64-3220000>LIB /DEF:sqlite3.def

64 bit : D:\sqlite-dll-win64-x64-3220000>LIB /DEF:sqlite3.def /machine:X64

이제 sqlite3.lib 파일이 생성 되었습니다.



2. MFC 프로젝트


2.1 프로젝트 생성


프로젝트를 하나 생성해서 sqlite를 활용해 보도록 하겠습니다.

MFC 프로젝트를 새로 하나 생성 합니다.

[단일 문서]를 설정 하는 것 이외에는 기본값으로 하고 계속 [다음]으로 넘어 갑니다.



최종단계에 도달 하면 간단한 이벤트를 사용하기 위해 [기본 클래스(A)] CFormView로 설정합니다.





2.2 설정


다운받은 source 파일 중에서 sqlite3.h 파일을 프로젝트 디렉토리로 옮기고 [기존 항목(G)]을 이용하여 추가 합니다.



생성된 Lib를 프로젝트에 추가합니다.

추가 방법은 프로젝트에 마우스를 대고 오른쪽을 눌러아신다고요. 안 손아파.



실행할떄 Dll을 찾는 경우도 있습니다. 실행위치에 복사해 줍니다.

실제 코딩을 위한 클래스를 추가해 줍니다.  파일 생성은 여기서는 DatabaseSql.cpp, DatabaseSql.h 이렇게 했습니다.



DB를 관리할 파일도 DatabaseSql.h, DatabaseSql.cpp 이렇게 두개 생성해 줍니다.

지금 생성한 4개 파일과 기존에 자동 생성된 MainFrm.h, MainFrm.cpp 두개의 파일만 코딩하면 작업이 완료 됩니다.


2.3 코딩


어떤 작업을 할건지 일단 그림을 한번 볼까요?

입력창을 4개 만들었는데 귀찮아서 앞에 있는 2개만 사용합니다.

물론 4개 다 DB에 저장을 하긴 하지만 입력하면 앞쪽 두개의 갑으로 프로젝트의 타이틀을 변경 시키는 프로그램을 만들라고 합니다.



- DatabaseSql 작업


DatabaseSql.h 에서는 쿼리 결과를 받아올 struct 생성하는 것만 보시고 나머지는 일반적인 설정들입니다. cpp 간단해서 첨부파일을 보시면 됩니다.


#include "stdafx.h"
#include "sqlite3.h"
#include 


typedef struct {
	char **pazResult;    /* Results of the query */
	int pnRow;           /* Number of result rows written here */
	int pnColumn;        /* Number of result columns written here */
	char *pzErrmsg;       /* Error msg written here */
}sqlite3_select, *sSelect;

class CDatabaseSql
{
public:
	CDatabaseSql();
	~CDatabaseSql();

	sqlite3 *pDbRef;
	char	*m_ErrMsg;

	int DatabaseOpen();  // DB 생성, 열기
	int ExecuteSqlite(CString sqlQuery);  //Insert, Update, Delete를 실행
	sqlite3_select SelectSqlite(CString sqlQuery); //select를 실행
	
	
};

- MainFrm 작업


sqlite Database 작업을 하기 MainFrm.h 파일에 다음 소스를 추가 합니다.

#include "DatabaseSql.h"

CDatabaseSql      m_DatabaseSql;

.

MainFrm.cpp 파일에 다음을 추가해서 프로그램이 실행될때 Database Table을 생성 하도록 다음 소스를 추가 합니다


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
		//------------------------- CopyCoding Start ---------------------------------
	 
	// Create Database
	if (m_DatabaseSql.DatabaseOpen())
	{
		exit(-1);
	}
	// Create Table
	CString sql = _T("CREATE TABLE IF NOT EXISTS TB_SETTING(SEQ INTEGER PRIMARY KEY AUTOINCREMENT, SET1 TEXT, SET2 TEXT, SET3 TEXT); ");
	m_DatabaseSql.ExecuteSqlite(sql);
	
	//========================== CopyCoding ENd =================================
}

- SqliteTestView 작업


SqliteTestView.cpp에는 초기화시 DB 오픈하도록 해줍니다.


void CSqliteTestView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

	// View에서 사용할 Database Open
	if (m_DatabaseSql.DatabaseOpen())
	{
		exit(-1);
	}
}

OnBnClickedBtnInput() 이 함수가 메인 작업입니다.

프로그램 흐름은 디비를 조회해서 자료가 있으면 읽어와서 타이틀을 변경 하고 입력한 값으로 변경합니다.  자료가 없으면 디비에 입력을 합니다.

프로그램을 하고 나니 기능을 한곳에 넣기 위해 어거지로 만든 기분이네요.


	GetDlgItemText(IDC_EDIT_VAL1, zTitle);
	GetDlgItemText(IDC_EDIT_VAL2, zVal1);
	GetDlgItemText(IDC_EDIT_VAL3, zVal2);
	GetDlgItemText(IDC_EDIT_VAL4, zVal3);
//입력란을 모두 적어줍니다.
	if (zTitle.IsEmpty() || zVal1.IsEmpty() || zVal2.IsEmpty() || zVal3.IsEmpty()) {
		MessageBox(_T("빈칸을 채워 주세요!"));
		return;
	}

	CString strSelQuery = _T("select * from TB_SETTING ;");  //쿼리 생성을 합니다.
	sqlite3_select p_selResult = m_DatabaseSql.SelectSqlite(strSelQuery); //조회 합니다.
	if (p_selResult.pnRow == 0) { //데이터가 없다고요?
		CString strInsQuery = _T("Insert into TB_SETTING VALUES( NULL,'" + zTitle + "','" + zVal1 + "','" + zVal2 + "','" + zVal3 + "');");  // 입력쿼리 생성해서
		int rc = m_DatabaseSql.ExecuteSqlite(strInsQuery);  //입력 해야죠
	}
	else {  //자료가 있네요. 아래에서 하나씩 읽어옵니다.
		for (int rowCtr = 0; rowCtr <= p_selResult.pnRow; ++rowCtr)
		{
			int colCtr = 0;
			int nCol = 1;
			int cellPosition = (rowCtr * p_selResult.pnColumn) + colCtr;

			std::string sel1 = p_selResult.pazResult[cellPosition++];
			CString zSeq(sel1.c_str());
			std::string sel2 = p_selResult.pazResult[cellPosition++];
			CString zTitle(sel2.c_str());
			std::string sel3 = p_selResult.pazResult[cellPosition++];
			CString zSet1(sel3.c_str());
			std::string sel4 = p_selResult.pazResult[cellPosition++];
			CString zSet2(sel4.c_str());
			std::string sel5 = p_selResult.pazResult[cellPosition++];
			CString zSet3(sel5.c_str());

			if (rowCtr == 0) {
				continue; //sqlite는 필드값도 가져와서 걸러줍니다.
			}

			SetValue(zTitle, zSet1);  //타이틀 변경 호출
		}

		CString strInsQuery = _T("Update TB_SETTING set TITLE='" + zTitle + "',SET1='" + zVal1 + "',SET2='" + zVal2 + "',SET3='" + zVal3 + "';"); //데이터가 존재하니 업데이트
		int rc = m_DatabaseSql.ExecuteSqlite(strInsQuery);
	}

3. 소스


Visual Studio 2017에서 생성했지만 2015에서도 작동되는걸 확인했습니다.

파일이 커서 소스들만 올리는데 실제 필요한건 앞에서도 설명드린 6개입니다.


SqliteTest.7z


res.7z


- copy coding -


핸드폰을 구매하고 몇 년 후 다시 새로운 핸드폰을 구매 할 때까지 한번 사용해 보기는 커녕 그런 앱이 있는지 조차 알지도 못하는

수많은 앱이 설치되어 있습니다.

앱은 그나마 볼 수라도 있지만 껍데기로 가려진 손바닦 만한 핸드폰에는 이름도 생소한 장치들이 빼곡히 들어 차 있습니다. 

저는 스스로 찾아서 사용 하는 센서 종류를 세어본다면 다섯 손가락도 다 못 꼽을 정도로 사용을 하고 있네요. 

화면 자동 회전도 뉴스 좀 읽다가 지하철이 흔들리면 헤까닥 뒤집어져서 짜증이나 사용 안하고, 자동 밝기도 사용 안하고,

GPS 이용 길 찾기는 미리 데스크탑에서 한번 지도보기와 거리 뷰를 검색하고 가기 때문에 거의 사용할 일이 없고, 

그냥 전화 걸기와 문자 보내기만 사용하고 있으니 압력센서, 근접 거리 센서 정도만 나도 모르게 사용하고 있는 듯 합니다.

진동도 일할 때 가끔 놀라게 해서 무음.

집에 쌓여만 가는 철지난 공기계들 속에는 무슨 센서가 있는지 궁금해서 한번 알아보기로 했습니다.



1. Android Sensor 분류


안드로이드 폰에 들어있는 센서들은 크게 3가지로 분류를 하고 있습니다.


1.1 운동 센서(Motion Sensor)

세개의 축을 기준으로 가속력과 회전력을 측정하는 센서로 종류로는 가속도계(accelerometer), 중력 센서(gravity sensor),

자이로스코프(gyroscope), 회전 벡터센서(rotational vector sensor)등이 있습니다.

 

1.2 환경 센서(Environment Sensor)

주변 환경에 대한 온도, 압력, 조도, 습도와 관련된 변수 들을 측정하며 기압계(barometer), 광도계(photometer),

습도계(thermometer) 등이 있습니다.

 

1.3 위치 센서(Position Sensor)

기기(핸드폰)의 물리적 위치에 대한 측정 값으로 방위 센서(orientation sensor), 자력계(magnetometer) 등이 있습니다.

 

2. Android Sensor 종류 및 메소드


2.1 Android Sensor.


 Type

 센서

 값

 설명

 int

 TYPE_ACCELEROMETER

 1 

 가속도 감지, 외부의 충격량과 방향 감지 센서

 int

 TYPE_ALL

 -1 

 모든 센서

 int

 TYPE_AMBIENT_TEMPERATURE

 13 

 주위 온도 감지 센서

 int

 TYPE_GAME_ROTATION_VECTOR

 15 

 보정되지 않은 회전 벡터 센서

 int

 TYPE_GEOMAGNETIC_ROTATION_VECTOR

 20 

 지자기 회전 벡터

 int

 TYPE_GRAVITY

 9 

 축의 방향과 중력 감지

 int

 TYPE_GYROSCOPE

 4 

 회전 정보 감지, 다양한 축의 회전각 감지

 int

 TYPE_LIGHT

 5 

 빛의 세기 감지 센서

 int

 TYPE_MAGNETIC_FIELD

 2 

 자기장 센서

 int

 TYPE_MOTION_DETECT

 30 

 움직임 감지 센서

 int

 TYPE_ORIENTATION

 3 

 방향각 감지 센서

 int

 TYPE_PRESSURE

 6 

 압력 센서

 int

 TYPE_PROXIMITY

 8 

 근접한 물체와의 거리 감지 센서

 int

 TYPE_RELATIVE_HUMIDITY

 12 

 상대 습도 센서

 int

 TYPE_ROTATION_VECTOR

 11 

 회전 벡터 센서

 int

 TYPE_SIGNIFICANT_MOTION

 17 

 중요한 모션 트리거 센서

 int

 TYPE_STEP_COUNTER

 19 

 발걸음 횟수 센서

 int

 TYPE_STEP_DETECTOR

 18 

 발걸음 감지 센서

 int

 TYPE_TEMPERATURE

 7 

 온도 감지. API level 14에서 사용


2.2 Sensor Method


 Type

 Method

 설명

 int

 getType()

 센서의 타입

 String

 getName()

 센서의 이름

 float

 getPower()

 전력 사용량 밀리 암페어(mA)

 float

 getResolution()

 해상도

 float

 getMaximumRange()

 최대 측정 범위

 String

 getVendor()

 제조사

 int

 getVersion()

 버전

 int

 getId()

 ID

 int

 getMinDelay()

 두 이벤트간 최소 지연 마이크로 초

 String

 toString()

 센서에 대한 간략 정보



3. Android Sensor 리스트


위에서 나열한 메소드를 이용한 실제 프로그램을 통해서 어떤 센서 들이 들어있는지 확인을 해 보도록 하는데 너무 간단해서 설명이 필요 없을 듯 합니다.


3.1 프로젝트 생성


Android Studio 를 이용하여 프로젝트를 하나 생성 합니다. 설정 값들은 기본으로 해서 [Next] 버튼을 이용하여 계속 넘어 갑니다.

Device 선택 화면에서 저는 API 14를 선택 해서 생성 했습니다. 본인이 테스트 하려는 것 보다 버전이 낮으면 아무거나 선택 하셔도 됩니다.





3.2 화면 구성 설정


단순히 센서 리스트만 보여 주기 때문에 스크롤이 될 수 있도록 만들어 줍니다.


- activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <TextView
            android:id="@+id/listSensor"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </ScrollView>

</android.support.constraint.ConstraintLayout>



.

3.3 Main 프로그램


onCreate() 함수에서 다 지지고 볶고 끝났네요. 2.1의 센서 종류에서 전체(TYPE_ALL)를 이용하여 2.2 Method로 출력을 하면 됩니다. 

데이터가 많아서 주석 처리한 부분이 있는데 주석을 삭제 하거나 필요한 자료가 더 있으면 method를 참고하여 추가해 주고 실행을 합니다.

핸드폰 화면 말고 Android studio에서도 센서 리스트를 확인 하려면 Log.d()를 사용하여 실행 하면 Logcat에도 리스트를 뿌려 줍니다. 

로그를 보시면 알겠지만 sensor.toString() 이것만 사용해도 기본 정보를 확인 할 수 있습니다.


- MainActivity.java

public class MainActivity extends AppCompatActivity {

    private String TAG = "Sensors";
    private SensorManager sensorManager;
    private String sSensorList = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView txtSensor = (TextView)findViewById(R.id.listSensor);

        sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        List<Sensor> lstSensor = sensorManager.getSensorList(Sensor.TYPE_ALL);
        for(int i=0; i<lstSensor.size(); i++) {
            Sensor sensor = lstSensor.get(i);
            sSensorList += "Name : " + sensor.getName() + "\n" +
                           "Vendor : " + sensor.getVendor() + "\n" +
//                           "Version : " + sensor.getVersion() + "\n" +
//                           "Power : " + sensor.getPower() + "\n" +
//                           "Type : " + sensor.getType() + "\n" +
                             "toString : " + sensor.toString() + "\n" +
            "";
        }
        txtSensor.setText(sSensorList);
        Log.d(TAG, sSensorList);
    }
}



4. 결과


4.1 결과 화면


프로젝트를 실행 할때는 AVD Manager에서 생성한 가상 디바이스를 사용하지 말고 실제 핸드폰에서 테스트 해보세요.

그러면 아래와 같은 화면이 나옵니다.


android sensor 센서



4.2 Source Code


첨부된 소스파일을 적당한 곳에 압축을 풀고 Android Studio를 이용하여 File > Open 메뉴로 프로젝트 열고 실행을 합니다.

Target Device는 개인 핸드폰으로 설정을 합니다.


만약 실행 중 팝업으로 오류가

Installation failed with message Invalid File: E:\android\app\build\intermediates\split-apk\debug\slices\slice_3.apk

이것 비스무리 하게 발생한다면 Android Studio 상단 Build 메뉴 에서

Build > Clean Project

Build > Rebuild Project

메뉴를 이용하여 기존 Build 정보를 삭제 하고 다시 실행 하면 됩니다.


SensorFind.7z


4.3 APK File


Android Studio가 없거나 귀찮아 첨부된 APK 파일을 이용하여 핸드폰에서 실행을 하려면 출처를 알 수 없은 앱 설치를

가능하게 하고 실행을 해야 합니다.

테스트 후에는 다시 출처를 알 수 없는 앱 설치 가능을 차단 하거나 나중에 은행 앱을 실행 할때 이 기능을 차단하라고

다시 메시지가 뜨면 바꿔주면 됩니다.


SensorFind.apk


- copy coding -

컴퓨터로 작업을 하다 보면 부득이하게 그날 완료를 못하고 퇴근을 하거나 중간에 외근을 나가야 하는 상황이 발생 하는데 현재까지의 작업 환경을 다시 준비하기 힘들 경우 화면 잠금만 하고 퇴근을 하는 날이 있습니다. 그러나 다음날 출근을 하면 컴퓨터가 혼자 [다시 시작]을 해서 깨끗하게 정리를 하고 나를 반기지만 나는 하나도 반갑지 않으니 설정 값을 변경 해봅시다.




1. 설정에서 자동 업데이트 차단 방법


제일 많이 사용 하는 방법으로 키보드에서 윈도우 키 버튼을 누르고 좌측 하단에서 설정을 선택 합니다.


windows 10 update


설정을 선택하면 설정 관련 메뉴들이 들어있는 팝업 창이 호출 됩니다.



설정 창의 우측 하단에 있는 [업데이트 및 보안] 메뉴를 선택하면 화면이 변경 되고 여기에서 좌측의 [Windows 업데이트]메뉴를 선택 합니다.



우측에 업데이트와 관련된 항목이 나타나면 파란색 글씨의 [고급옵션]을 선택하여 상세 설정 화면으로 이동합니다.



파란색 기다란 라디오 버튼 형태의 켬으로 되어있는 버튼을 클릭해주면 끔으로 변경되고 창을 당으면 완료됩니다.

이렇게 기본적인 방법으로 [설정] 창에서 자동 업데이트 기능을 꺼놓는데 이것 만으로 업데이트 차단이 반영되지 않는 것 같아 다시 몇가지 작업을 추가로 진행 합니다.



2. 업데이트 서비스 차단


이번에는 업데이트와 관련된 서비스를 차단하기 위해 팝업을 여는 과정으로 제일먼저 키보드에서 윈도우 키와 X를 같이 눌러 줍니다. 좌측 하단에 나타나는 메뉴에서 [컴퓨터 관리]를 선택합니다.



단축키를 사용하려고 [컴퓨터 관리(G)]에서 G에 언더바가 되어있어 Alt+G로 생각하고 Alt만 눌러도 팝업이 사라지는데 이때는 그냥 G만 누르면 됩니다.

[컴퓨터 관리] 팝업이 활성화 되었고 좌측메뉴에서 [서비스 및 응용 프로그램]을 선택하여 확장하고 [서비스] 메뉴를 선택하면 우측에 서비스 리스트들을 볼 수 있습니다.

서비스 리스트에서 [Windows Update]를 선택하고 마우스 우측 키를 누르면 설정관련 팝업 메뉴가 나타 납니다.



가장먼저 해야 할일은 [중지(O)]를 선택하여 현재 실행중인 업데이트 서비스를 중지 시키는 것입니다. 물론 중지는 속성 창에서 [중지(T)] 버튼을 사용하여 서비스를 중단할 수도 있습니다. 중지 반영 프로그레스 바가 종료되면 [속성]을 선택하여 속성 팝업을 활성화 시킵니다.



[일반] 탭의 [시작 유형] 콤보박스에서 사용 안 함을 선택하고 [적용] 버튼과 [확인] 버튼을 순서대로 선택 하면 서비스 설정이 반영 됩니다.




3 업데이트 정책 차단


이번에는 업데이트 정책을 설정 해보겠습니다. 정책편집기 창을 활성화 하기 위해서는 명령어를 직접 입력해야 하며 [검색 창]을 이용하려면 윈도우 키 + S를 사용하여 gpedit.msc를 입력 합니다.




실행창을 이용하려면 윈도우 키 + R을 이용하여 팝업 창을 열고 gpedit.msc를 입력합니다.



두 가지 방법 모두 다음과 같이 [로컬 그룹 정책 편집기] 팝업 창을 활성화 합니다.

정책 편집기 창의 좌측 메뉴에서 [컴퓨터 구성] 메뉴의 [관리 템플릿]을 확장 시켜 [Windows 구성 요소]를 선택합니다. 혹시 잘못하여 [사용자 구성]을 확장하는 경우 메뉴 구조는 비슷하지만 우측에 보여지는 내용은 다른 화면이 나타나니 주의해서 다시 선택합니다.

우측 리스트에서 [예약된 자동 업데이트 설치 시 로그온한 사용자가 있을 경우 자동 다시 시작 사용 안함]을 선택하여 우측 마우스를 눌러 [편집]을 선택 하거나 리스트에서 선택한 항목을 더블 클릭 하면 설정 팝업 창이 나타납니다.



[사용 안 함(D)] 라디오 버튼을 선택하고 하단에 있는 [적용(A)] 버튼을 클릭하면 잠시 후 버튼이 음영으로 변하며 적용이 완료 되었습니다.



이번에는 리스트에서 [자동 업데이트 구성]을 찾아 선택하여 설정 팝업을 활성화 시킵니다.



이번에는 아까와는 달리 창에 설정 해야 할 항목들이 좀 있습니다. [사용 안 함]이 아닌 [사용(E)] 라디오 버튼을 선택해 줍니다.  그리고 하단에 가서 [자동 업데이트 구성]을 설정 하는데 3(자동으로 다운로드하고 설치할 때 알림)을 선택하고 날짜와 시간은 새벽이 아닌 내가 확인 가능한 시간으로 설정 하는 게 좋겠죠?

설정이 끝났으면 [적용(A)] 버튼을 클릭하고 작업을 완료 합니다.



이제 다 됐다고 안심하면 가끔 스스로의 머리를 쥐어뜯으며 후회하는 일이 발생합니다.

퇴근 후 본인의 아차 실수 또는 누군가가 노트북 커버를 닫아 주거나 할 때 시스템이 종료 될 수 있고 중요 파일을 업로드 또는 다운로드를 걸어 놓았을 때 설정에 때라 작업이 중단되는 상황이 발생 합니다.




4. 전원 설정


전원 설정이 이곳에 있어 제가 작성하고도 한참을 찾았네요.  주제와 맞지도 않아서 신규로 작성 했습니다.


windows 7 전원 관리와 화면 보호기 설정



windows 10 전원 관리 설정


- copy coding -


1···58596061

+ Recent posts