바이러스 및 기타 맬웨어를 방지하고 제거하기 위해서 마이크로소프트에서 제공하는 방법을 따라 시도해 보았습니다인터넷 익스플로러에서 광고 창이 많이 떠서 짜증이 나서 인터넷에서 검색을 하여 Microsoft 사이트에서 제공하는 방법을 사용해 보았는데 광고 창에는 효과가 없는지 저의 경우는 아무것도 없이 깨끗하다고 하네요.


Windows MSRT(악성 소프트웨어 제거 도구)를 사용하려면 마이크로소프트 사이트에 접속을 해야 합니다.

 

https://support.microsoft.com/ko-kr/help/890830/remove-specific-prevalent-malware-with-windows-malicious-software-remo


Microsoft 다운로드 센터

악성 소프트웨어 제거 도구는 Microsoft 다운로드 센터에서 직접 다운로드할 수 있습니다. Microsoft 다운로드 센터에서 다음 파일을 다운로드할 수 있습니다.

32비트 x86 기반 시스템:
 



64비트 x64 기반 시스템:
 



출시된 날짜: 2019년  1월 12일 



자신의 윈도우 운영체제에 맞는걸 선택 합니다저는 두번 째에 있는 x64 MSRT 패키지를 지금 다운로드하십시오.를 선택 했습니다  그런데 위에 아무거나 눌러도 x64 페이지로 가는거로 봐서 자신의 운영체제에 맞게 선택이 되는 것 같습니다. 아닌가?



windows_malware_msrt


한국어를 선택 하고 다운로드 버튼을 클릭 합니다.

그럼 저장을 하거나 실행을 할 수 있도록 팝업이 나타납니다.


windows_malware_msrt


저는 그냥 실행 버튼을 클릭 했습니다.


windows_malware_msrt


사용권 계약 내용 동의를 하고 다음 버튼을 클릭 합니다.


windows_malware_msrt


다음을 클릭해 시작을 합니다.


windows_malware_msrt


그냥 빠른 검사를 시작 합니다.


windows_malware_msrt


이제 일을 합니다.


windows_malware_msrt


끝나 가는군요.


확장 검사도 실행했습니다.


windows_malware_msrt



windows_malware_msrt


검사가 완료 되었는데 이상이 없다고 합니다좋은 일인데 팝업광고는 그대로

 

검사결과 자세히 보기를 선택해 보았습니다.


windows_malware_msrt


다운 받아놓고 심심할 때마다 눌러볼걸 그랬나?


windows_malware_msrt


다시 사이트에 들어가서 저장을 했습니다.


windows_malware_msrt


저장을 하면 중간 버튼이 저장에서 폴더 열기로 변경 됩니다.

 

... 팝업광고



바위가 널린 곳을 껑충껑충 건너 뛰어간 꿈 해몽

  -> 여러 방면으로 일을 진전시킨다.


지팡이나 주먹으로 바위를 쳐서 쏟아지는 을 마시는 꿈 해몽

  -> 많은 재물을 얻거나, 세상 사람들을 감동시킬 사업을 해서 성공할 가능성이 크다.


큰 바위를 집안으로 운반하는 꿈 해몽

  -> 원하는 일이 순탄하게 발전하면서 재물이 증가하고 명예가 높아지면서 부귀롭게 된다.


바위나 높은 산 위에 염소가 있는 꿈 해몽

  -> 경제적인 수입을 뜻한다.


온몸에 구렁이가 감겨 있는데 호랑이가 바위로 쳐서 토막을 낸 꿈 해몽

  -> 어떤 세력을 꺾거나 협조자와 더불어 일을 성사시킨다.


바위틈에서 잡은 물고기가 두 토막이 나는 꿈 해몽

  -> 하고 있는 일이 타인에 의해서 가치가 없어진다.


산속에서 기도하다가 보니 넓은 바위 위에 지폐가 쌓여 있는 꿈 해몽

  -> 사업이 번창하고 소망이 성취된다.


주먹으로 큰 바위를 쳐서 부수는 꿈 해몽

  -> 막강한 권력자나 사업가가 될 것이다.


큰 바위가 떨어져 길이 막히는 꿈 해몽

  -> 현재 하고 있는 일이 장애를 만나 막히게 될 것을 알려 주고 있다.


큰 바위를 가볍게 굴려버린 꿈 해몽

  -> 자신의 미비한 힘으로 어떤 단체를 움직일 수 있게 된다.


바위가 터져서 폭포가 흐르는 꿈 해몽

  -> 진리적인 교화를 크게 베풀거나 많은 재물을 얻는다.


바위에 새겨진 이름을 보는 꿈 해몽

  -> 어떤 기관의 간판 또는 칭호가 새롭게 바뀌게 된다.


작은 돌덩이로 바위를 때리자 부서지는 꿈 해몽

  -> 모든 방법,수단을 동원하여 일거리를 차지하거나 경쟁자를 물리친다.


바위가 허공을 날으는 꿈 해몽

  -> 직장에서 직위 등이 불안하거나 조직에서 자기 세력이 불완전하다는 말이다.


큰 바위를 안고 있는 꿈 해몽

  -> 가정에 경사가 있거나, 횡재, 물품, 식품 등이 생긴다.


큰 바위에 새긴 비석이 유난히 빛이 나는 꿈 해몽

  -> 특진, 합격, 승진, 당선, 학위취득 등 명예가 좋아지거나, 부귀공명하고 입신출세 한다는 뜻이다.


로프를 사용해서 바위를 오르는 꿈 해몽

  -> 어떤 일을 시작하는데 협조자의 도움을 받아 소원을 성취한다.




큰 바위 덩어리를 먹고 거인이 되는 꿈 해몽

  -> 운수가 대통하면서 소망대로 소원성취하거나, 대성, 발달, 재물, 물품, 임신, 명예, 승리, 합격, 당선, 승진, 자격취득 등에서 길한 운명이다.


머리를 큰 바위나 돌에 심하게 부딪치는 꿈 해몽

  -> 사고 및 불상사가 발생되면서 말썽과 장애, 손재수와 가정의 근심 등 흉한 일을 당한다.


파도가 부딪히는 바위에 서서 있는 꿈 해몽

  -> 여러 사람과 시빗거리가 생겨 말다툼하게 된다.


자신이 자동차나 바위 등 치명타를 줄 수 있는 물건에 치인 꿈 해몽

  -> 정부기관이나 단체의 도움을 받아 어렵게 여겨졌던 사업이 성공한다.


바위가 보이는 꿈 해몽

  -> 승진할 수 있는 기회가 찾아온다.


바위를 움직이는 꿈 해몽

  -> 마음이 울적한 생활이 계속된다.


바위를 깨는 꿈 해몽

  -> 기운이 없다는 의미이므로 활력을 불어 넣도록 노력한다.


바위암벽을 기어오르는 꿈 해몽

  -> 평소에 원하던 소망이 이루어진다.


바위에서 굴러 떨어지는 꿈 해몽

  -> 친구를 잃을 위험이 있다.


울면서 큰 바위를 굴리는 꿈 해몽

  -> 재물과 돈이 생기고 사업에 좋은 성과를 올리거나, 횡재, 성장, 대업성취 등이 있다.


정원에 푸른 이끼가 낀 바위가 서 있는 꿈 해몽

  -> 집안에 큰 인물이 출생하거나, 재물과 먹을 것이 생기고 경사스러운 일이 있다.


바위를 주먹으로 박살 내는 꿈 해몽

  -> 주장 또는 권력 등에 의해서 단체나 조직을 와해 시키거나, 권리, 업적, 사업 등이 새로워질 일이 있다.


큰 바위에 앉아서 하늘 위로 오르는 꿈 해몽

  -> 명예와 지위가 높아지면서 귀한 신분이 되거나, 입학, 승진, 당선, 승리 등에서 좋은 일이 발생한다.


자기 집 지붕 큰 바위가 있는 꿈 해몽

  -> 집안이나 사업에 우환이나 큰 장애가 발생할 것을 암시하는 꿈이다.


자기 집 마당에 큰 바위가 놓여져 있는 꿈 해몽

  -> 큰 돈이 굴러온다는 것을 알리는 행운의 꿈이다.


작은 돌덩이가 자꾸 커져 큰 바위가 되는 꿈 해몽

  -> 작은 사업체나 일거리가 차차 커져서 큰 사업체가 된다는 암시이다.


- copy coding-


전에 설명했던 숫자 이미지 하나 불러와서 숫자 맞추기를 이용하여 이번에는 직접 손으로 쓴 숫자를 이미지를 사용하여 맞추기를 해보겠습니다이미지를 만드는게 귀찮았는데 오늘은 시간이 좀 남아서 시도해 보았습니다.

 

1. 숫자 이미지 만들기

2. 디렉토리 생성

3. 코딩

4. 결과

5. 전체 소스

 


1. 숫자 이미지 만들기

 

숫자 이미지는 이미지 편집 프로그램이 없다면 윈도우즈 보조프로그램에 기본적으로 들어있는 그림판을 이용해서 만들면 됩니다.


tensorflow_mnist


그림판에 마우스를 이용해서 3을 써보았습니다. 좀 덜덜거리며 씌여졌지만 처음 한번 쓴걸 사용하기로 했습니다숫자를 적었으니 저장을 합니다.

 

파일 > 다른 이름으로 저장 > PNG


물론 다른 이미지로 저장을 해도 됩니다그럼 불러올 때 그에 맞추어서 소스를 수정해 사용하시면 되고요.


tensorflow_mnist


tensorflow_model03.png로 저장을 했습니다

tensorflow_mnist


2. 디렉토리 생성

 

손으로 작성한 숫자 이미지를 저장할 위치를 만들었습니다그리고 숫자 이미지는 number 디렉토리로 이동을 했습니다전에 테스트 했던 9도 아직 삭제를 안해서 같이 있네요.


tensorflow_mnist



3. 코딩

 

처음에 나오는 부분은 전에 설명했던 부분이고 이미지를 불러오는 부분부터 변경이 되었습니다기존에는 이미지 사이즈가 테스트 하기에 적당한 크기 였지만 이번에는 사이즈를 조정해야 해서 변경을 하였습니다.

 

이미지를 cv2를 이용해서 불러오고 화면에 출력을 해 봅니다.


gray = cv2.imread("F:/tensordata/number/tensorflow_model03.png", cv2.IMREAD_GRAYSCALE)

plt.imshow(gray)

plt.show() 


불러온 이미지의 사이즈를 테스트에 적합 하게 수정해 줍니다.


gray = cv2.resize(255-gray, (28, 28))

test_num = gray.flatten() / 255.0

test_num = test_num.reshape((-1, 28, 28, 1))


변경된 이미지를 사용하여 숫자 번호가 몇인지 알아맞춰 봅니다.


print('The Answer is ', model.predict_classes(test_num))



4. 결과

 

The Answer is  [3] 이라고 하는군요정답 입니다.


tensorflow_mnist



5. 전체 소스


import tensorflow as tf

import matplotlib.pyplot as plt

from PIL import Image

mnist = tf.keras.datasets.mnist

import cv2

 

(x_train, y_train),(x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

 

model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(),

  tf.keras.layers.Dense(512, activation=tf.nn.relu),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10, activation=tf.nn.softmax)

])

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])

 

model.fit(x_train, y_train, epochs=5)

score = model.evaluate(x_test, y_test)


# 이미지 불러와 출력

gray = cv2.imread("F:/tensordata/number/tensorflow_model03.png", cv2.IMREAD_GRAYSCALE)

plt.imshow(gray)

plt.show()


# 이미지 사이즈 변경

gray = cv2.resize(255-gray, (28, 28))

test_num = gray.flatten() / 255.0

test_num = test_num.reshape((-1, 28, 28, 1))


# 이미지 숫자 테스트 

print('The Answer is ', model.predict_classes(test_num))



 

간단하게 사용할 수 있는 web editor를 하나 추가할 일이 있어서 naver에서 만들었으니 믿을만 하겠지 하고 설치를 하기로 하였습니다그런데 그냥 설치 하는 방법은 매뉴얼만 보면서 하면 되는데 요즘에는 화면 그리는 툴들을 많이 사용하고 있어서 javascript function 안에서 구현을 해야 하는 상황이 발생하여 다음에 또 써야할 일이 발생하면 사용하려고 작성 합니다예전에 HTML Tag만 가지고 구현하느라 1주일 걸린적이 있는데 그 소스는 어디 갔는지 모르겠네요.

 

순서

1. Source 다운로드

2. 일반적인 설치 방법

3. javascript 내에서 설치 방법

 

 

1. Source 다운로드


기존에 사용하던 개발자 url에서는 다운로드가 되지 않고 github에서 다운로드를 해야 합니다.

https://github.com/naver/smarteditor2

그리고 smartEditor 3.x 버전은 공개를 하지 않는다고 하네요저는 2.x 버전 만으로도 충분.


naver_smarteditor2


Clone or download를 클릭해서 확장된 메뉴 중 Download ZIP을 선택하면 압축된 형태로 다운로드가 진행 됩니다다운로드가 완료 되면 파일이 있는 디렉토리로 이동하여 압축풀기를 해줍니다디렉토리 구조를 보면 dist workspace 두개가 있는데 이중에 dist를 이용하여 작업을 진행 합니다.


naver_smarteditor2



2. 일반적인 설치 방법

 

그냥 html, jsp, php등에 설치 하는 방법은 네이버 매뉴얼에 잘 설명이 되어 있습니다.

http://naver.github.io/smarteditor2/user_guide/

 

간단하게 요약해서 설명 하면


2.1 압축을 푼 파일을 적당한 곳에 복사


dist 아래에 있는 파일들을 웹 서버에 복사를 하는데 웹에서 path를 잡을 수 있는 곳이면 아무 곳이나 가능하지만 너무 깊이 숨겨 놓으면 안되겠죠.

 

2.2 js 추가


smartEditor의 기본이 되는 javascript 파일을 작업하려는 파일 상단에 추가 합니다.


 <script type="text/javascript" src="상위경로/js/service/HuskyEZCreator.js" charset="utf-8"></script>


2.3 Textarea 추가

 

웹 에디터를 사용할 textarea를 작업 파일에 추가 합니다.  id는 나중에 사용해야 하므로 적당한 명칭을 부여 합니다.


<textarea name="weditor" id="weditor" rows="10" cols="100"></textarea>


2.4 editor 생성 javascript

 

2.3에서 생성한 textarea에 웹 에디터를 추가하기 위한 javascript를 작성 합니다매뉴얼에서 복사해서 사용하면 됩니다.

elPlaceHolder에 위에서 작성한 id를 입력 합니다.

sSkinURI에는 복사한 path를 잘 맞추어 기입합니다.


<script type="text/javascript">

 

var oEditors = [];

nhn.husky.EZCreator.createInIFrame({

    oAppRef: oEditors,

    elPlaceHolder: "weditor",

    sSkinURI: "경로/SmartEditor2Skin.html",

    fCreator: "createSEditor2"

});

 

</script> 



2.5 결과



naver_smarteditor2


2.6 전체 소스


좀 허접하지만 2.5에 있는 모양을 만들기 위해 제가 만든 test.html 전체 소스입니다.


webeditor

  

<script type="text/javascript" src="./dist/js/service/HuskyEZCreator.js" charset="utf-8"></script>

 

<textarea name="weditor" id="weditor" rows="10" cols="90"></textarea>

 

<script type="text/javascript">

 

var oEditors = [];

nhn.husky.EZCreator.createInIFrame({

    oAppRef: oEditors,

    elPlaceHolder: "weditor",

    sSkinURI: "./dist/SmartEditor2Skin.html",

    fCreator: "createSEditor2"

});

 

</script> 


좀 허접이 아니고 진짜 허접하네요.  dist에 있는 파일을 바로 메인에 복사해서 사용했습니다.

 

 

3. javascript 내에서 설치 방법

 

일반적인 방법으로 설치를 해보았다면 이것도 별거 없습니다그냥 function 안에서 구현을 한것 이외에는 나머지 스크립트는 동일 합니다.

 

3.1 구현 방법


$.getScript() jQuery를 이용하여 javascript 내에서 javascript를 불러옵니다그리고 불러온 js를 이용한 코드를 내부에 기입하면 됩니다.

 

textareabutton을 화면에 표시되고 HTML Tag를 적용시킬 수 있는 부분에 설정을 해줍니다툴에 따라 component, element, division등등이 될 수 있겠죠버튼도 이벤트를 직접 호출 할 수 없는 경우에는 가상으로 만들어서 사용하면 됩니다.

 

textarea를 먼저 정의하지 않으면 id를 찾을 수 없어 Cannot read property 'parentNode' of null / HuskyEZCreator.js 오류가 발생 할 수 있습니다.


naver_smarteditor2


 

3.2 전체 소스

 

화면 초기화가 완료되는 함수에 넣어서 구현한 내용입니다.


function onLoadedFunction()

{

           this.eleTxt.setHtml(‘<textarea name="ir1" id="ir1" rows="10" cols="100"></textarea>’);

this.eleBtn.setHtml(‘<button class=”saveBtn”>저장</button>’);

 

           $.getScript("./dist/js/service/HuskyEZCreator.js", function() {

                     var oEditors = [];

                     nhn.husky.EZCreator.createInIFrame({

                                oAppRef: oEditors,

                                elPlaceHolder: "ir1",

                                sSkinURI: "./dist/SmartEditor2Skin.html",

                                fCreator: "createSEditor2"

                     });

                      $(document).on('click', '.saveBtn', function () {

                    

                                var val2 = oEditors.getById["ir1"].exec("UPDATE_CONTENTS_FIELD", []);

                                this.contents = $('#ir1').val();

                                alert(this.contents);

                                this.onSubmitBtnClick();

                     });

           });

          

};


3.3 결과 화면

 

위의 코드를 실행하면 나오는 결과 화면 입니다.


naver_smarteditor2



4. size 조절

 

화면에 따라 에디터의 사이즈를 조절해야 하는 경우가 발생 합니다.  그런데 html을 아무리 찾아보고 비슷한걸 수정해도 사이즈는 변경이 안되는데 사이트 변경은 js 파일에서 관리 합니다.

 

/dist/js/service에 가면 SE2BasicCreator.js 파일이 있습니다.  위치는 버전에 따라 하나 윗단계인 js에 들어 있기도 합니다. SE2BasicCreator.js 파일을 열고 아래와 같은 내용을 찾아서 수정 합니다.


 

            var htDimension = {

                     nMinHeight:205,

                     nMinWidth:parseInt(elIRField.style.minWidth, 10)||570,

                     nHeight:elIRField.style.height||elIRField.offsetHeight,

                     nWidth:elIRField.style.width||elIRField.offsetWidth

           };


 

높이 : nMinHeight:205

가로 : nMinWidth:parseInt(elIRField.style.minWidth, 10)||570,

 

화면에 따라 사이즈가 여러개 필요하다고요?

그럼 SmartEditor2xxx.html 파일과 SE2BasicCreator.js 파일을 여러개 복사해서 이름을 변경하고 각 html 파일에서 다른 js 파일을 불러오면 됩니다.



1···89909192939495···118

+ Recent posts