본문 바로가기

blog.2sam.net49

Google Workspace로 업그레이드 후 무료로 사용하기 ( 업그레이드 취소) Google Workspace로 업그레이드 후 무료로 사용하기 ( 업그레이드 취소 ) 제가 모르고 G suite 무료 버전을 Google Workspace로 업그레이드했나 보더라구요... 모르고 있다가 증권사에서 메일이 반송되었다는 알림을 받고나서야 메일이 죽을걸 알았습니다. 어케 된건지 궁금해 같이 G Suite 무료 버전을 사용하고 있는 선배랑 통화를 하고나서야, 제가 Google Workspace로 업그레이드한 사실은 알게되었습니다.... 둘이서 한참을 헤메다가 드디어 무료로 사용하는 방법을 찾아서 도움이 될까 싶어 글을 올립니다. 참고로, 개인 도메인으로 그동안 무료 메일을 사용한 사람 대상입니다. 워크스페이스로 업데이트 하면 해당 서비스가 유료로 바뀌었거든요... 이걸 되돌리는 방법입니다...... 2022. 10. 12.
함수 선언시 인수의 디폴트 값 선언 함수 선언시 인수의 디폴트 값 선언 C++에서는 함수를 선언할때 인수의 디폴트 값을 선언할 수 있습니다. 함수 호출시 디폴트로 선언한 인수값을 정하지 않으면 기본 디폴트 값을 이용하여 함수를 호출합니다. #include using namespace std; void outNum(int start, int end=10); int main() { cout 2021. 10. 14.
[C++] 함수의 중복 선언 가능 함수의 중복 선언 가능 C언어의 경우 동일한 이름의 함수가 존재해서는 안됩니다. 함수 이름은 각각 다 달라야합니다. 그런데 이게 생각보다 은근히 불편할때가 있습니다. 특히 동일한 일을 하는 함수인데 인수의 타입이 틀리면 두개의 함수의 이름은 달라야합니다. 예를 들어 절대값을 구하는 함수를 만들어 보겠습니다. C언어의 경우는 일반적으로 abc_i, abc_d 이런식으로 분리해서 함수를 만듭니다. 즉 int abs(int n)함수와 double abs(double n)함수는 존재할수 없기 때문에 함수 이름을 다르게 합니다 보통은 int abs_i(int n)과 double abs_d(double n)으로 구분을 합니다. 하지만 C++에서는 함수의 중복 선언이 가능합니다. 함수의 이름이 같지만 인수의 타입이 .. 2021. 9. 23.
[c++]열거형, 구조체, 공용체 변수 선언시 키워드 생략 가능 C++열거형, 구조체, 공용체 변수 선언시 키워드 생략 가능 enum color3 { green, yellow, red }; struct man { char name[20]; int age; }; union utag { char c; short s; long l; }; C언어에서 변수 선언 enum color3 traffic; struct man teacher; union tag val; C언어에서 열거형, 구조체, 공용체 키워드 생략시 에러 발생 C++언어에서 변수 선언 chrom color3 traffic; man teacher; tag val; C언어에서 열거형, 구조체, 공용체 키워드 생략가능합니다. 에러 없이 컴파일 되는것을 확인 할 수 있습니다. 2021. 9. 23.
[C++] 변수이지만 상수 값만을 갖는 키워드 const 변수이지만 상수 값만을 갖는 키워드 const float pi = 3.141592; 위의 경우처럼 C, C++에서 일반적으로 변수를 선언할때 [타입 변수명]으로 선업합니다. 이때 변수는 값을 바꿀수가 있습니다. float double pi = 3.141592; C++에서는 const 키워드를 사용하여 변수를 상수값만 갖게 할 수있습니다. 이때 const로 선언된 변수의 값을 바꾸려할때는 에러가 발생합니다. const 키워드를 사용하여 pi라는 변수를 실수형으로 선언하고 3.141592로 초기화를 하였습니다. 프로그램 말기에 pi를 1.23로 대입하려 할때 에러가 걸립니다. pi를 const로 선언했기 때문입니다 2021. 9. 20.
[C++] 형변환 형변환 C언어 : (변환형) 식; C++ : 변환형(식); C언어의 경우 형변환을 할 경우 수식(변수) 앞에 괄호를 이용하여 변환하였지만, C++의 경우 변환형을 쓰고 식을 괄호로 감싸주면 됩니다. C++에서는 꼭 함수를 보는듯해서 이해하기 쉬워졌습니다. 우선 기본 C++코드를 입력합니다. 입력 코드와 개발환경에 문제가 없을경우 실행이 잘 될것입니다. 실수형 a변수를 int(a)를 해줌으로서 상수형으로 형변환하여 변수 b에 대입하였습니다. 그결과 12.345의 실수 값이 12의 정수값으로 변환되어 b에 대입된것을 확인할 수 있습니다. 2021. 9. 15.
[C++] 블록내 변수 선언 블록내 변수 선언 C언어의 경우 변수를 사용하고자 할땐 꼭 변수 선언을 해야하고, 또한 변수 선언은 함수의 맨 앞 부분에서 해야 했습니다. 이렇다보니 중간에 갚자기 변수를 추가하고 싶은 경우 함수 맨 앞으로 이동하여 선언 한 후에 다시 작업하던 곳을 돌아와야한다는 불편함이 있었습니다. 하지만 C++에서는 변수를 필요한 곳에서 선언을 할 수 있어 편리합니다. 이 기능을 젤 잘 설명하고 자주 사용하는 방법을 for구문이라고 생각이 됩니다. 우선 기본 C++코드를 입력합니다. 입력 코드와 개발환경에 문제가 없을경우 실행이 잘 될것입니다. for 구문에서 변수 i를 함수의 맨 앞에서가 아닌 for 구문내에서 사용이 가능합니다. for가 함수 중간에 있어도 for구문 내에서 생성 가능하므로 기존 C언어에서보다 훨.. 2021. 9. 6.
[C++] 스트림 입출력 스트림 입출력 C++에서는 스트림 입출력을 사용합니다. C++의 경우 C언어를 포함하기때문에 printf,scanf구문을 사용할수도 있지만 스트림 입출력을 사용할 경우 변수의 형태(상수, 실수 등등)를 신경쓰지 않아도 되기 때문에 편리하게 사용할 수 있습니다. 또한 필요할 만큼 스트림을 계속 사용할 수 있다는 편리함도 있습니다. 2021. 9. 6.
[C++]한 줄 단위 주석문 한 줄 단위 주석문 C++에서는 기존의 주석문 /* */도 동작한다. 하지만 간단히 한 줄을 주석처리하고자할때 //를 사용하면 편하다. C에서는 한줄의 경우에도 /* */사용하였지만 C++의 경우 주석문으로 처리하고 싶은 경우 명령문 앞에 //를 붙임으로서 주석처리를 할 수 있다 또한 여려 줄의 경우 여러 줄 모우 앞에 //를 붙여서 주석문 처리도 가능하다 2021. 9. 6.
[c++] Hello World 출력하기 [c++] Hello World 출력하기 프로젝트를 생성한 후 가장 기본이 되는 코드를 입력합니다. 컴파일을 했을때 에러가 없으면 정상입니다. cout 함수를 이용하여 Hello World 를 출력합니다. std를 없애기 위해 using namespace std;를 추가합니다. Hello World가 출력된것을 확인 할 수 있습니다. 2021. 9. 2.
Proteus 8 LED 제어를 통한 사용법 익히기 프로테우스를 이용한 LED 시물레이션하기 앞장에서 AVR Studio를 연습하는 과정에서 LED를 점멸하는 코딩을 하였는데, 이 결과를 프로테우스에서 시물레이션해보겠습니다. 시작 메뉴에서 Proteus 8 Professional를 선택하여 실행합니다. File > New Project를 선택합니다. Path를 [Browse]를 이용하여 설정한 후 프로젝트 이름을 설정합니다. 그리고 Next 클릭 Create a schematic from the selected template를 선택한 후 스케메틱 사이즈를 선택합니다. Landscape A0-A3를 선택합니다. A0가 큰 사이즈 입니다. 그리고 Next 클릭 PCB는 하지 않으므로 Do not create a PCB layout을 그대로 선택합니다. 그리.. 2016. 3. 29.
avrStudio 시작하기 avrStudio 시작하기 avrStudio를 이용해서 LED를 제어하는 간단한 프로그램을 작성하겠습니다. 코드에대해서는 신경쓰지마시고 사용법에 대해서 간단히 살펴보십시오 [시작] 메뉴에서 [AVR Studio 4]를 실행합니다. [New Project]를 클리하여 새 프로젝트를 생성합니다. 프로젝트가 저장될 위치를 조정하겠습니다. […]를 클릭하십시오. 자신이 원하는 저정할 위치를 만들거나 선택한 후 [확인]을 클릭합니다. 프로젝트 타입은 AVR GCC를 선택합니다. C로 코딩할것입니다. 프로젝트 이름은 “led01”로 하였습니다. [Create folder]를 체크하면 이 이름으로 폴더가 생성됩니다. 체크해주시는것이 파일관리 측면에서 좋습니다. [Finish]를 클릭하여 완료합니다. 좌측의 .. 2016. 3. 17.
winAVR과 avrStudio 설치 winAVR과 avrStudio 설치 avr 실습을 위해 컴파일러와 통합환경을 설치하겠습니다. 컴파일러는 gcc기반의 winAVR을 설치하고, 통합환경으로는 avrStudio 4.18을 사용하겠습니다. winAVR 설치 설치파일을 더블 클릭합니다. [예]를 클릭합니다. 한국어를 선택하고 [ok]를 클릭합니다. [다음]을 클릭합니다. 라이센스에 동의를 합니다. 설치 위치를 선택하는데 디폴트로 설치하겠습니다. [다음]을 클릭합니다. 구성요소는 기본적으로 모두 선택되어져 있습니다. [설치]를 클릭합니다. 설치중입니다. 잠시 기다리면 설치가 완료됩니다. avrStudio 설치 avrStudio 설치하기 위해서는 4개의 설치파일 실해하여야합니다. 먼저 셋업파일을 실행하고 3개의 서비스팩을 순서대로 실해합니.. 2016. 3. 17.
java로 Eclipse에서 Hello 프로그램 작성하기 java로 Eclipse에서 Hello 프로그램 작성하기 모든 언어를 배울때 처음으로 해보는 Hello 프로그램을 작성해보겠습니다. 간단한 예제 프로그래을 하면서 자바 프로젝트, 클래스 생성법을 배우고 컴파일하여 실행하는 방법도 알아보겠습니다. 또한 폰트의 크기도 조정해보겠습니다. 이클립스(eclipse)를 실행합니다. 작업영역을 이클리스가 미리 정해졌는데 이를 변경하도록 하겠습니다. 보통은 C드라이브의 사용자 영역을 잡는데, 보통 C, D 드라이버로 나눈경우 C드라이브는 프로그램 설치영역으로 D드라이브는 데이타 영역으로 많이 쓰이며, 우리가 코딩한 자료는 중요한 데이타 이므로 D드라이브에 작업영역을 설정하는것을 권장합니다. 제 컴퓨터가 맥북 프로이고, 가상으로 윈도우즈를 사용하.. 2016. 3. 15.
Eclipse 설치 Eclipse 설치하기 자바 개발환경중에서 많이 쓰이는 Eclipse를 설치를 설치하도록 하겠습니다. 기존의 경우 자신이 원하는 통합환경을 선택한 후 다운 받고 압축해제한 후 사용이 가능했지만 이번에는 인스톨러를 이용한 설치형태로 바뀌었습니다. 웹 브라우저에서 www.eclipse.org입력하여 홈페이지를 방문합니다. [DOWNLOAD]를 클릭합니다. 자신의 OS에 맞게 선택이 되구 그에 따른 선택을 할 수 있습니다. 윈도우즈 OS이기때문에 32비트와 64비트를 선택할 수 있습니다. 각자의 os에 맞는것을 선택합니다. [DOWNLOAD]를 클릭합니다. 설치파일을 다운 받는것을 확인 할 수 있습니다. 설치파일을 더블클릭하여 실행합니다. 인스톨러가 실행됩니다. 원화는 통홥한경을 선택합니다. 설치 위치를 확인.. 2016. 3. 15.
JDK 확인, 다운로드, 설치 및 환경 설정 JDK 확인, 다운로드, 설치 및 환경설정하기 java를 실습하기 위해서 JDK와 Eclipse를 설치하려합니다. 먼저 JDK를 설치하겠습니다. 1. JDK확인 윈도우즈에서 메뉴에서 찾기에서 [cmd]를 입력하여 명령프롬프트를 실행합니다. ‘java’를 입력하고 엔터를 입력합니다. 옵션에 대한 설명이 나오면 java로 만든 클래스 파일을 실행할수가 있습니다. 다음으로 ‘javac’를 입력하고 엔터를 입력합니다. javac는 자바 컴파일러인데 실행할수 없다는 메시지를 보여줍니다. JDK가 설치되지 않았음을 알 수 있습니다. (단, jdk를 설치하고 환경설정을 하지 않았을 경우에도 이런 메시지가 나타날수 있습니다. 아래쪽에 jdk가 설치된 폴더를 확인하는 부분을 참조하셔서 설치가.. 2016. 3. 15.
Packet Tracer 설치하기 Packet Tracer 설치하기 네트워크 실습에 적합한 툴이 Packet Tracer일듯합니다. 5.3.3버전을 사용하겠습니다. 먼저 설치파일을 더블클릭하여 실행합니다. [예]를 클릭합니다. 설치마법사입니다. [Next]를 클릭합니다. 라이센스에 동의하고 [Next]를 클릭합니다. 설치 위치를 확인하고 [Next]를 클릭합니다. 메뉴의 폴더명을 확인하고 [Next]를 클릭합니다. 생성할 아이콘을 선택한 후 [Next]를 클릭합니다. [Install]을 클릭하여 설치합니다. 설치중입니다. [확인]을 클릭합니다. [Finish]를 클릭하여 설치를 완료합니다. 실행이 되도록 체크되어 있기때문에 패킷트레이서가 실행됩니다. [확인]을 클릭합니다. 통신을 위해 네트워크를 허용해줍니다. [액세스 허용]을 클릭합니다.. 2016. 3. 14.
AutoCAD 2016 설치하기 AutoCAD 2016 설치하기 AutoCAD 2016의 경우 학생 및 교사용으로 무료 라이센스를 제공합니다. autodesk에 회원가입을 하면 라이센스를 받을수 있으니 한번 도전해보세요. 참고로 학교 이메일이 아니어도 가입이 가능합니다. 먼저 www.autodesk.co.kr에 접속을 합니다. [제품-AutoCAD]를 클릭합니다. [구입]을 클릭합니다. 2016. 3. 14.
Dev-C++ 이용하여 프로그램 작성하기 Dev-C++ 이용하여 프로그램 작성하기 Dev-C++을 실행 한 후 몇가지 설정을 하도록 하겠습니다. 실행후 한번만 설정화면이 나타납니다. 그 후에는 필요할 경우 환경설정을하면됩니다. [한국어]를 선택한 후 [Next]를 클릭합니다. [Next]를 클릭합니다. [ok]를 클릭하여 설정을 완료합니다. [yes]를 클릭합니다. Dev-C++ 화면입니다. 프로그램을 작성하기 전에 작업폴더를 만드는것을 권장합니다. 또한 프로젝트 폴더를 만드는것을 권장합니다. Dev-C++의 경우는 폴더 관리를 해주지 않는듯합니다. 프로젝트를 만들어보겠습니다. [파일-새로만들기-프로젝트]를 클릭합니다. [C]를 선택하고, [기본 언어로 설정]을 체크하고 프로젝트명을 ‘Hello’로 적은 후 [확인]을 클릭합니다. 저장위치를 ‘.. 2016. 3. 13.
Dev-C++ 설치하기 Dev-C++ 설치하기 c언어에 대한 간단한 문법을 배우기위해 가볍고 빠른 개발환경을 원한다면 Dev-C++을 추천합니다 셋업 파일을 더블클릭하여 실행합니다. 예를 눌러 허용합니다. 잠시 기다립니다. 한국어가 자동으로 선택되어 있으므로 ok를 클릭합니다. 라이센스에 동의합니다. 구성요소를 기본값을 그대로 사용합니다. 설치를 클릭하여 설치를 시작합니다. 실행하기를 체크한 후 마침을 누르면 자동으로 Dev-C++이 실행됩니다. 2016. 3. 13.
Eclipse : 도움 되는 설정 2 Eclipse : 도움 되는 설정 2 자동완성이 안될때 System.out.println을 빠르게 입력하자 2014. 9. 17.
Eclipse : 도움 되는 설정 1 1. 글자 폰트 크기 변경 작업을 하다보면 글자가 작아서 괄호( , 중괄호 { 가 구분되지 않는 경우가 많다 글자 폰트의 크기를 변경해보자 2. 다국어 지원 3. 편집에서 세미콜론 쉽게 하기 2014. 9. 14.
'맥의 세상에 빠지다' 도서 판매 개시 '맥의 세상에 빠지다' 도서 판매 개시 거의 1년 6개월에 걸친 집필과 편집 과정을 거쳐 드디어 '맥의 세상에 빠지다’ 가 드디어 판매를 시작하였습니다.책 표지의 디자인은 맥북을 컨셉으로 만들었다고 합니다. 심플하고 맥 다운 디자인입니다.이 책을 들고 다니면 또 하나의 맥북을 들고다니는 것과 같은 기분이 들 것 같습니다. 오늘(6월 20일) 부터 각 온라인 매장에 판매되고 있습니다. 오늘 구매하시면 내일 받아보실 수 있습니다. ^^많은 관심 부탁드립니다. 현재 판매중인 온라인 서점YES24인터파크교보문고알라딘반디앤루이스도서11번가강컴 알라딘에서는 책의 내용을 확인할 수 있도록 미리보기가 제공됩니다.다음 그림을 누르면 내용을 미리 확인할 수 있습니다. 이 책의 구성따라 하기 식의 구성 처음부터 하나 하나 .. 2014. 6. 20.
첫 프로그램 Hello World 작성하기 - Visual C++ 2010 Express 첫 프로그램 Hello World 작성하기 - Visual C++ 2010 Express Visual C++ 2010 Express를 실행합니다. 새프로젝트를 생성하겠습니다. 시작페이지에서 [새프로젝트…]를 클릭하여도 생성할 수 있고 , 또한 메뉴의 [파일-새로만들기-프로젝트]를 클릭하여 생성할 수있습니다. 새 프로젝트 창에서 위치를 자신이 원하는곳으로 설정합니다. 프로젝트를 만들면 이 위치에 프로젝트 이름으로 폴더가 생성됩니다. [Win32 콘솔 응용 프로그램]을 선택하고 이름에 “HelloWlrld”로 적고 [확인]을 클릭합니다. 이렇게 하면 C:\work\vc폴더 아래에 HelloWorld폴더가 생성됩니다. [다음]을 클릭합니다. [빈 프로젝트]를 체크 한 후 [마침]을 클릭합니다. HelloWor.. 2014. 5. 11.
Visual C++ 2010 Express에서 "fatal error LNK1123" 오류 해결 방볍 Visual C++ 2010 Express 설치 후 첫 컴파일 과정에서 오류가 발생하는 경우가 있습니다. 출력 창에서 "LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다”라는 오류메시지가 보일경우의 해결방법입니다. 해결 방법에는 두가지가 있습니다. 첫번째는 프로젝트에서 해결하는 방법이고, 두번째는 서비스팩을 다운로드하여 설치하는 방법입니다. 첫번째 방법과 같이 프로젝트에서 해결하는 방법은 각 프로젝트마다 해야 하는 번거로움이 있지만 바로 바로 해결할 수 있습니다. 하지만 프로젝트마다 해야하는 불편함이 있습니다. 두번째 방법과 같이 서비스팩을 다운로드하여 설치하는 방법은 한번 설치하면 더이상 오류가 발생하지 않는 장점이 있지만.. 2014. 4. 4.
Visual C++ 2010 Express 등록 키 받기 며칠전 "Visual C++ 2010 Express 설치 준비 작업”에 관련하여 글을 올렸습니다. “vc_web.exe” 파일을 다운로드하여 쉽게 설치할 수 있습니다. (별로 어렵지 않아 설치 글은 생략했습니다.) Visual C++ 2010 Express를 실행한 후 [도움말]-[제품 등록]을 클릭합니다. [온라인으로 등록 키 받기]를 클릭합니다. 로그인 후 온라인 양식을 작성한 후 전송합니다. (마지막에 버튼이 모라고 되어 있는지 오래전에 해서 기억이 가물가물하네요) 그리고 많은것을 물어보지 않으니 부담스럽지 않습니다. 팝업으로 등록 키를 보여주고, 메일로도 보여줍니다. 전송 받은 등록 키를 입력하면 제품 등록이 완료됩니다. 2014. 3. 20.
Visual C++ 2010 Express 설치 준비 작업 C언어를 공부할때 통합 환경의 개발 툴을 설치합니다. 예전의 경우 VC++ 6.0을 많이 사용하였지만, 요즘은 무료로 라이센스를 제공해주는 Visual C++ 2010 Express의 사용이 늘고 있습니다. C언어를 공부하는 사람에게 유용한 개발 툴 Visual C++ 2010 Express를 소개하려합니다. Visual C++ 2010 Express의 설치에 대해서 알아보겠습니다. 우선 Visual C++ 2010 Express를 설치하기 위한 설치 파일을 다운 받아야 합니다. 브라우저에서 "http://www.microsoft.com/express" 입력합니다. 입력한 주소에서 자동으로 다소 복잡한 다른 주소로 이동합니다. [다운로드]를 클릭합니다. 다운로드 화면으로 이동합니다. 아래로 스크롤을 해줍.. 2014. 3. 17.
[소개] OmniFocus 오늘 소개할 iOS앱은 OmniFocus(옴니포커스)입니다. 1월까지만해도 항상 사용하던 앱입니다. GTD개념의 할일 관리 앱중 최고가 아닌가 싶습니다. 2월부터는 사용빈도가 뜨~음 해졌습니다. 앞에 설명한 미리알림(reminder)를 주로 사용하고 있습니다. (사실은 현재는 미리 알림도 뜨~음 합니다. ^^) 일상에서의 할일 관리는 미리알림 앱을 사용 GTD개념이 필요한 할일 관리는 이 OmniFocus(옴니포커스)를 사용하려 합니다. 저 같은 경우는 일상생활에서 GTD개념까지 도입하여 할일 관리가 필요하지 않은듯합니다. 사실은 지금 과도기인것 같습니다. 다시 과거로 돌아가는 듯합니다. 현재는 informant를 사용(테스트)중입니다. 이 앱도 기회되면 간다히 소개 할까 합니다. 하루 마무리 잘하시구요~~ 2014. 2. 10.
[소개] 미리알림 오늘 소개할 iOS앱은 미리알림(reminder)입니다. iOS7 기본 내장 앱입니다. 다들 아시는데, 이 앱을 왜 소개하는지 궁금하실텐데요 최근 이 미리알림앱을 쓰고 있어서 입니다. 예전에는 OmniFocus를 사용하였습니다.(사실은 지금도 사용하고 있긴합니다. ^^) 음~~~ 맥에서도 Alfred와 OmniFocus를 사용했는데 지금은 OmniFocus와 미리알림을 같이 사용하고 있습니다. 간단한 todo list는 미리알림을 사용하고 있습니다.(매주, 매월 반복해야 하는 일도 미리알림을 사용합니다.) GTD 개념이 필요한 일에 관련되어선 OmniFocus를 사용합니다. 이 블로그는 미리알림에 대한 소개이니까 OmniFocus 다음번엔 간단히 소개만 하겠습니다. 간단한 todo list는 이 미리알림.. 2014. 2. 6.
[소개] ClearRecord 오늘 간단히 소개할 앱은 ClearRecord 입니다. 저같은 경우 음성메모는 해야할일, 아이디어 등등이 갑자기 생각 났을때 쓰는 앱인데 비해 이 앱은 작정하고 녹음할때 쓰고 있는 앱입니다. 강의를 들을때(미리 양해를 구하는것 잊지 마십시오~~)쓰거나, 회의할때 쓰거나 할때 사용합니다. 그리고 시끄러운곳에서 녹음할때 쓰려고 했으나 아직 해보진 못했습니다. ㅡㅡ;; 이 앱은 유로로 구입하게되면 녹음하면서 노이즈를 줄여줍니다. "ANR ON” - 옵션에서 Noise Reduction를 설정하면됩니다. 녹음 하는 과정을 사진입니다. 녹음하고 나면 리스트를 볼수 있습니다. 그리고 유료 앱에서는 플레이 속도를 조정할 수 있습니다. 회화 녹음 했을때 유용할듯합니다. (하지만 저는 회화 녹음 해본적이 없어서 ^^) .. 2014. 2. 3.
반응형