반응형

SW 배움터 174

자바 스크립트 일반

I. 자바 스크립트 일반 개략적인 자바스크립트의 개발사를 보자. 1990년 중반에 Netscape사에서 liveScript를 만들었으나 자바가 나온 다음 sun사하고 liveScript를 확장해서 만든게 자바 스크립트이다.(sun은 이름만 빌려주고 만든 것은 Netscape사이다.) 자바 스크립트는 말 그대로 태그로 스크립트를 만든다는 뜻이다. 즉 정적인 HTML 문서와 달리 동적인 화면을 웹페이지에 구현하기 위해 사용하는 스크립트 언어이다. 또한 객체 지향을 추구하는 스크립트 언어이기 때문에 필요한 객체를 호출해 HTML 문서 속에서 바로 작업할 수 있다는 것이 특징이다. 자바 스크립트는 HTML 소스에 삽입된 형태로 웹브라우저 내에서만 실행된다. 지금은 대부분의 프로그램들이 CC(Creative Cl..

앱인벤터2 강좌 11: 앱인벤터에서 블럭복사하는 법

앱인벤터2는 스크린에디터와 블럭에디터 2개의 스크린으로 구성되어 있기 때문에 스크린 복사를 하는 것이 불가능한 구조다. 블럭에디터에서는 블럭전체를 복사할 수 있는 기능이 최근에 추가되어 블럭전체를 복사할 수 있으나 스크린에디터와 블럭에디터 2개 모두를 동시에 복사하는 것은 아직 지원되지 않기 때문에 특수한 방법을 쓰야한다. 스크린에디터와 블럭에디터 2개를 모두 복사하는 방법을 소개한다. 위의 그림에서 보듯이 killing Time_pub 앱은 7개의 스크린으로 구성되어 있다. 만일 2번 스크린을 8번으로 옮기고 싶다면 어떻게 해야할까? 앱인벤터로 앱을 많이 제작하다보면 몇번 스크린을 몇번으로 옮겨야 하는 경우가 많이 발생한다. 따라서 이 방법을 잘 알아두면 꼭 필요할 때 요긴하게 쓰일 수 있다. 이 방법..

안드로이드4: 스레드 II

스레드 II : (스레드에서 UI)를 조작하는 방법 스레드에는 메인 스레드와 작업스레드 두가지 종류가 있다. 사용자 인터페이스 위젯에게 이벤트를 전달하거나 화면을 그리는 작업을 담당하는 것을 메인 스레드라고 하는데 보통 UI(User Interface)라고 하고 시간이 많이 걸리거나 즉각적으로 결과가 나오지 않는 일반적인 스레드를 배경스레드 또는 작업스레드라고 한다. 스레드I에서 설명했듯이 스레드를 조작할 때 주의할 점은 1) UI 스레드는 블럭(멈춤) 시키면 안된다. 2) UI 스레드가 아닌 다른 스레드가 UI 툴킷을 조작하면 안된다는 것이다. 따라서 작업스레드에서 UI를 조작하는 방법이 문제가 된다. 이를 해결하기 위해서 사용하는 방법이 핸들러 클래스를 사용하는 방법(메시지 객체 전송)과 핸들러 클래..

안드로이드3: 이벤트 처리

이벤트 처리 방법 정리 이벤트란 사용자가 키보드를 누르던지 마우스를 클릭한다던지 어떤 이벤트를 발생시키는 것을 말하는데 이벤트를 처리하는 방식은 크게 2가지가 존재한다. 하나는 애플리케이션이 무한 루프를 돌면서 사용자가 이벤트를 발생시킬 때까지 기다렸다가 사용자의 입력이 발생하면 이벤트를 처리하는 방식으로 폴링(Polling)방식이라 한다. 그러나 이 방식은 최악의 방식으로 CPU의 파워를 엄청나게 낭비하는 방식이기 때문에 지금은 거의 사용하지 않는다. 그 다음 방식은 이벤트 구동(event-driven)방식이 있는데 이 방식은 애플리케이션이 다른 일을 하고 있다가 이벤트가 발생하면 그 이벤트를 처리하는 방식으로 지금은 대부분의 애플리케이션이 이 방식을 이용한다. 이 방식중 많이 사용하는 두가지 방식을 ..

자바 문법 핵심만5 : 인스턴스

인스턴스란? 자바를 공부하다 보면 인스턴스란 말을 종종 접하게 되는데 영어로 되어있어서 무슨 뜻인지 감을 잡기가 어렵다. 그러나 실제의 뜻은 아주 간단한 편이다. 인스턴스란 말이 무슨 뜻인지 알아보고 자바에서 사용하는 몇가지 용어를 더 알아보겠다. 1. 클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. ※ 객체 = 인스턴스 클래스 --------> 인스턴스(객체) 객체는 인스턴스를 대표하는 말이며 포괄적인 의미로 쓰이는 말이고 인스턴스란 어떤 클래스로부터 만들어진 것인지를 강조하는 말로 다소 구체적인 의미로 쓰인다. 2. 객체는 속성과 기능 두가지의 구성요소로 이루어짐. 1) 속성(..

SW 배움터/자바 2017.04.14

프로그래밍 왕기초(용어중심으로)

프로그래밍 왕기초(용어중심으로) 1. CPU는 data를 이동시키기 위해 내부에 임시 저장장치가 있는데 이것을 보통 레지스터(Resistor)라고부른다. 2. 어드레스 버스는 주소 정보가 지나가는 통로이고, 데이터 버스는 데이터가 지나가는 통로, 그리고 컨트롤 버스는 읽기와 쓰기 신호가 지나가는 통로이다. 3. 운영체제가 하는 가장 기본적인 작업은 H/W를 제어하는 일과 프로그램을 실행하는 일이다. 4. 라이브러리는 하마디로 다른 사람들이 이미 만들어 놓은 프로그램 코드덩어리라고 생각하면 된다. 5. 컴파일이란 바이너리 코드로 된 Object 코드를 만드는 과정이다. 6. link란 Object 코드에, 라이브러리에서 함수에 해당하는 코드를 가져와서 이어붙이는 과정이다. 7. 실행프로그램에서 항상 포함하..

SW 배움터 2017.04.13

안드로이드2: Activity의 화면 설정 방법

Activity의 화면을 설정하는 몇가지 방법 Activity는 쉽게 말해 우리가 스마트폰으로 보는 하나의 화면, 즉 앱이든 뭐든 스마트폰 에 표시되는 하나의 화면을 Activity라고 생각하면 된다. 너무 쉬워서 좀더 어렵게 설명하면(?) Activity는 안드로이드에서 하나의 작업(활동)을 담당하는 컴포넌트 클래스 중의 하나로 안드로이드가 제공하는 Activity라는클래스를 상속받는다. Activity는 사용자 인터페이스 화면을 가질 수 있는데 모든 애플리케이션은 적어도 하나이상의 Activity가 있어야 한다. 이클립스와 같은 안드로이드 통합환경에서는 몇번의 클릭만으로 하나의 Activity 화면과 하나의 xml 파일이 만들어 지는데 단순한 앱을 개발 할때는 이것만으로 충분하나 게임이나 그림 그리기..

안드로이드1 : 스레드 I

스레드란 무엇인가? 1. 프로세스: 스레드의 개념을 이해하기 위해서는 먼저 프로세스란 개념을 알아야 하는데 그 이유는 스레드가 프로세스 기능중의 일부분이기 때문입니다. 컴퓨터는 명령을 실행할 프로그램을 메모리에 적재(Load) 시켜놓고, CPU가 명령어를 하나씩 해석하면서 명령의 순서대로 프로그램을 처리합니다. 이때 하드디스크나 USB 같은 보조 기억 장치에 저장되어 있는 프로그램을 메모리에 적재(Load)하게 됩니다. 하드디스크나 USB에있는 프로그램을 파일이라고 부르고 메모리에 적재된 프로그램을 프로세스(Process)라고 합니다. 프로세스에 대한 이해를 돕기 위해 간단한 그림을 준비했습니다. 위의 그림에서 보듯이 프로세서(Processor)는 우리가 일반적으로 알고있는 CPU안의 메모리 부분이고 프..

자바 문법 핵심만3 : 멤버 메소드

1. 메소드란? 메소드란 지정된 특정 기능을 수행하는 하나의 프로그램 모듈로 원하는 위치에서 해당 메소드를 호출하면 지정된 기능을 수행하며, 함수라고도 불림. 1) 메소드는 머리와 몸체로 구성됨. [접근 수정자][선언 키워드][반환자료형][메소드 이름(매개변수)] { public static void main(String[ ] args) { // 머리 변수선언; // 문장들; //몸체 [return;] // } main( ) : 메소드는 프로그램의 시작점을 알림. public : 누구나 접근할 수 있음. static : 클래스 메소드. void : return 문으로 반환되는 값이 없음. main(String[ ] args) : 문자열 매개변수 배열 args를 갖고 있음이란 의미이다. 2. 선언 키워드의..

SW 배움터/자바 2017.04.07

자바 문법 핵심만2 : 클래스

클래스 1. 클래스란?(클래스는 데이터와 이 데이터를 처리하기 위한 동작이 모여 있는 틀) 1)사물의 특성을 변수와 메소드로 만들어 놓은것. 2)사물의 특성을 소프트웨어 적으로 모델링 한 것. 3)사물의 특성을 소프트웨어 적으로 추상화 시켜 놓은 것. 4)붕어빵을 만들때 붕어빵 틀이 클래스이다. 5)쉽게 말하면 데이터와 처리동작으로 이루어진것. 또는 필드와 메서드로 이루어진것. ex) calss Person{ // Person 이라는 class를 선언한다. String name; int age; 데이터 int weight; = 필드 String act( ){ return "act"; } 처리동작 = 메서드 String runnig( ){ return "running"; } } 2. 객체와 인스턴스 1)클..

SW 배움터/자바 2017.04.06

자바 문법 핵심만1 : 변수

자바의 변수 종류 변수란 특정 데이터를 담는 상자라고 생각하면 됩니다. 쓰레기를 버릴때 음식물은 음식물 담는 상자에, 종이는 종이 담는 상자에, 비닐은 비닐 담는 상자에 버리 듯 프로그래밍을 할 때도 데이터를 유형별로 분리해서 담아야 합니다. 정수는 정수값을 담는 변수에, 문자열은 문자열을 담는 변수에 넣어야 합니다. 또, 메모리 공간에 해당 변수를 저장할 공간을 만드는 것을 '변수를 선언한다'라고 하는 데요 변수를 선언할 때는 1)해당 변수가 어떤 데이터 타입인지 선언하고 2)변수의 이름을 적은 후 3)';' 으로 변수 선언이 끝났다는 것을 표시해 줘야 합니다. 그럼 먼저 변수에는 어떤 종류가 있는지 부터 알아보고 그외 중요한 요점을 정리합니다. 1. 기본형 변수 (변수 자체가 값을 갖고 있는 자료형)..

SW 배움터/자바 2017.04.05

C# 프로그램 개요

C# 프로그래밍 개요 C#은 C++의 컴퓨팅 파워와 비주얼 베이직의 편리함을 하나로 합치기 위해 마이크로소프트사(MS)에서 개발한 새로운 객체 지향 프로그래밍 언어입니다. 2000년에 처음 등장해서 2001년이 지나서야 정식 릴리즈 되었죠. 또한 C#은 .NET 개발을 위해 만들어진 언어이기도 합니다. .NET 이란 마이크로소프트사가 추진하는 컴퓨터 개발 환경으로서 네트워크를 통해 여러 서비스가 복합적으로 연결될 수 있는 새로운 환경을 만들기 위해서 고안된 아이디어입니다. C#은 C/C++에 기반을 두고 있지만 Java와 비슷한 특색을 가지고 있습니다. 프로그래머가 각 단계별로 별도의 코드를 작성하지 않고서도 프로그래밍 객체에 접근할 수 있도록 프로그래밍을 단순화한 것입니다. C# 개발 환경 C#은 이름..

SW 배움터/C# 2017.03.29

프로그래밍 언어, 무엇부터 배워야 하나?

프로그래밍 언어란 무엇인가? 우리가 생각하는 프로그램이라고 하면 보통 컴퓨터나 스마트폰등 전자기기에서 작동하는 프로그램을 말합니다. 그 외 수많은 전자기기에서 작동하는 SW도 프로그램의 일종이긴 합니다. 그러나 프로그래밍 언어라고 하는 것은 종류가 헤아릴 수 없을 정도로 많고 또 사용하는 환경도 모두 다릅니다. 때문에 프로그램 공부를 한다는 것은 먼저 어떤 환경에서 작동하는 프로그램인가 하는 것부터 결정해야 합니다. 그런 다음 그 환경에서 사용하는 프로그램 언어 중 가장 인기 있는 언어를 선택해서 하나씩 공부해 나가면 될 것입니다. 그래서 각각의 환경에 따라 사용하는 언어를 정리해 보고 어떤 것을 공부할 것인지를 생각해 보겠습니다. 프로그래밍 언어의 종류 프로그래밍 언어의 종류는 수없이 많기 때문에 초보..

SW 배움터 2017.03.27

유니티 초보일기

유니티 초보일기 2D로만 앱을 만들다가 3D로도 앱을 제작해 보고싶어서 유니티에 대해서 공부하고 있다. 유니티에 들어가기 전에 사전에 준비해야 것들이나 알아야 할 것에 대해서 적어본다. 먼저 유니티는 C#, 자바스크립트, 그리고 BOO 스크립트라는 언어를 쓰므로 이 중 한가지 언어를 알고 있어야 하는데 C#을 제일많이 사용하므로 미리 C#에 대해서 공부해 두고 있어야 한다. 그리고 그림편집 프로그램으로 포토샵, 그리고 3D 모델작업을 위해서는 3D Max에 대해서 알고 있어야 한다. 유니티 작업을 위해서 알아야 하는 것들은 대충 이 정도이고 실제로 유니티를 쓰게 되면 부딪히게 되는 문제들이 많으므로 실전을 통해서 익히는 수밖에 없다. 유니티는 일종의 게임엔진인데 수많은 게임엔진중에서 가장 쉬운 엔진으로 ..

앱인벤터2 강좌 10: 구글 대시보드 DB 사용법(TinyWebDB 사용법)

1.구글 대시보드 DB 사용법과 TinyWebDB의 이용 앱인벤터2에서 TinyWebDB를 이용하는 방법에 대해서 설명하겠습니다. 일반적으로 TinyWebDB를 이용하는 방법은 2가지가 존재하는데요 첫째는 공용 DB를 이용하는 방법과 둘째는 개인 DB를 이용하는 방법입니다. 공용DB를 이용하는 방법은 다음과 같습니다. 일단 앱인벤터2를 실행시키고 디자이너 에디터에서 TinyWebDB를 하나 준비합니다. 그리고 TinyWebDB1의 ServiceURL을 http://appinvtinywebdb.appspot.com/로 설정합니다. 그리고 이 주소를 웹브라우저 주소창에 그대로 쳐넣은다음 인터넷에 들어가 보면 /storeavalue:와 /getvalue: 항목이 나옵니다. /storeavalue:에는 본인이 ..

앱인벤터2 강좌 8: 애니메이션 연습

이번 시간에는 간단한 폭발장면을 애니메이션으로 처리하면서 그 원리를 이해해 보자. 먼저 스크린의 백그라운드 이미지를 멋진 장면으로 하나 세팅한다. 그리고 Palette 뷰에서 User Interface란을 열어 Image 요소를 드래그해서 스크린에 놓는다. 하단에는 애니메이션 이벤트를 발생시키기 위한 버튼 세개를 위치시킨다. HorizontalArrangement를 하나 드래그 해서 위치시키고 버튼 세개를 넣는다. HorizontalArrangement를 스크린 하단에 위치시킬려면 스크린의 AlignVertical 속성을 "Bottom : 3 ▾"로 둔다. 그리고 Image 위아래에 있는 Label의 Height에 적당한 픽셀 수치를 주어서 원하는 위치에 Image를 위치시킨다. 그리고 각각의 버튼에 쓰..

앱인벤터2 강좌 7: 로또 번호 생성기 제작하기

이번에는 로또 번호 생성기를 제작해 보겠다. 위의 그림과 같이 "HorizontalArrangement" 속에 6개의 버튼을 넣어서 6개의 숫자가 표시되록 한다. 각각의 버튼은 텍스트의 색깔을 달리해서 나오는 숫자가 잘 보이도록 한다. 각 버튼은 "num1", num2", ~,"num6"등의 이름이 붙여져 있는데 여기에 45개의 숫자에서 추출한 번호가 표시된다. 버튼을 사용하던 라벨을 사용하던 텍스트 박스를 사용하던 그것은 상관없고 본인 편한대로 사용하면 됩니다. 저는 버튼을 사용했습니다. 그 아래 "645 선택"이란 버튼을 누르면 45개의 숫자 중에서 6개의 숫자가 선택되어 화면에 표시된다. "Blocks" 패널 화면에서 "Built-in" 안에 있는 "Lists" 요소를 클릭해서 "make a lis..

앱인벤터2 강좌 6: TinyDB 와 TinyWebDB 사용법

오늘은 TinyDB 와 TinyWebDB의 사용법에 대해서 알아보겠다. 먼저 TinyDB부터 알아본다. "TinyDB"는 본인 스마트폰의 메모리를 이용해서 저장하는 방식이므로 쉽고 즉시 결과를 확인할 수 있는 장점이 있다. TinyDB의 사용법은 아주 간단하다. 다음과 같이 "ScreenEditor" 화면에 TinyDB를 테스트할 수 있는 2개의 버튼과 저장내용을 확인할 수 있는 텍스트 박스 하나를 준비한다. 첫번째 버튼은 TinyDB에 무엇을 저장하기 위한 버튼이고 두번째 버튼은 TinyDB에 들어있는 내용을 확인해 보기 위한 출력용 버튼이다. 마지막에 있는 "여기에 저장 내용이 출력됩니다"란 TextBox는 TinyDB에 저장한 내용을 확인해 볼 수 있는 텍스트박스이다. 다음으로 Block에디터로 이..

앱인벤터2 강좌 5: delay를 주는 2가지 방법

앱인벤터에서 단계별로 어떤 이벤트를 실행시키고 싶으면 delay를 줘야한다. delay를 시키는 방법은 여러가지가 있을 수 있겠으나 여기에서는 2가지 방법을 소개한다. 먼저 아래 그림과 같이 systemTime을 이용하기 위한 버튼과 clock을 이용하기 위한 버튼등 2개의 버튼을 준비한다. clock은 타임인터발을 1000으로 두고 나머지는 설정은 해제한다. 1000은 1초를 의미한다. 스크린하단의 delayTime은 실제 지연시간이 제대로 작동하는지 확인하기 위한 용도이다. 먼저 systemTime을 이용한 delay 방법을 살펴보자. "start" 버튼을 누르면 "안녕하세요"라는 말이 나오고 1초 후에 ""반갑습니다" 라는 말이 나오게 하자. 그러기 위해서는 "delay"블럭이 삽입되어야 한다. 중..

앱인벤터2 강좌 4: 두더지 잡기

이번에는 두더지 잡기 게임을 만들어 보겠습니다. 화면에 25개의 두더지 구멍이 있고 이 구멍으로 두더지 두마리가 0.8초 간격으로 임의로 출몰합니다. 이 두더지를 손가락으로 정확히 터치하면 점수가 1점씩 올라가고 점수가 50점이 되면 메시지가 나오면서 "계속" 또는 "그만"을 선택하게 합니다. 디자이너 블럭에 위와 같이 25개의 홀과 2마리의 두더지를 배치합니다. 캔버스를 화면전체에 배치하고 각각의 홀과 두더지 위치에는 이미지 스프라이트를 배치해서 이미지를 홀과 두더지 그림으로 전환합니다. 두더지 두마리가 움직이기 때문에 클락을 두개 배치합니다. 각각의 클락은 언제나 활성화가 되도록 "TimerAlwaysFires" 와 "TimerEnabled"를 체크하고 TimerInterval은 0.8초로 설정합니다..

앱인벤터2 강좌 3: 스피드 터치 게임

앱인벤터2로 간단한 게임을 만들어 보았다. 5X5 즉 25개의 숫자를 임의로 배치하고 1부터 25까지 최대한 빨리 찾는 게임을 제작해 보겠다. 1)5X5 즉 25개의 빈칸에 1부터 25까지의 수를 25개의 버튼에 임의로 배치하는 디자인 화면. 실제 게임을 시작하면 각각의 버튼에 임의로 숫자가 나타난다. 2) 먼저 리스트에 25개의 숫자를 더하고 각각의 버튼에 1부터 25까지의 숫자를 배치하는 루틴. 여기서 주의할 점은 한번 나온 숫자는 제거를 하고 나오지 않은 숫자가 계속 나오게 해야 한다는 점. 3)이제 각 버튼을 눌렀을 때 1부터 순서대로 버튼을 눌렀는지 비교하는 부분. 25개 각각의 버튼에 대해 올림차순으로 제대로 눌렀는지 확인하고 맞으면 그 번호를 보이지 않게 하고 틀리면 "noAppearCloc..

앱인벤터2 강좌 2: 숫자 야구게임

여러분들이 중.등학교 시절에 친구들과 많이 해 보셨을 숫자 야구게임을 앱인벤터2를 이용해서 모바일게임으로 제작해 보았다. 1)먼저 디자이너 에디터에 위와 같이 10개의 입력 숫자 버튼을 배치하고 화면 중간에 있는 "입력" 버튼 옆의 빈칸에 누른 숫자가 입력되도록 화면을 구성한다. 2)블럭 에디터로 이동해서 빈 리스트를 만든다음 0부터 9까지의 숫자를 더하고 컴퓨터가 3개의 숫자를 랜덤하게 선택하게 한다. 여기서 중요한 것은 한번 선택한 숫자는 제거해서 다시 그 숫자가 선택되지 않도록 하는 것이다. 3)디자이너 에디터에 배치했던 0부터 9까지의 숫자 버튼 중에서 아무것이나 하나를 누르면 화면 중간의 빈칸에 내가 누른 숫자가 앞에서 부터 하나씩 입력되도록 한다. 4)내가 입력한 숫자와 컴퓨터가 선택한 수를 ..

앱인벤터2 강좌 1: 초기 화면에서 동영상 작동시키기

I. 앱인벤터에서 초기화면에 동영상을 작동시키기 위해선 단순히 "videoPlayer.Start"만 시켜서는 작동하지 않는다. 타이머의 도움을 받아야 한다. 1) 디자이너 화면에서 videoPlayer 컴포넌트에 동영상 자료로 video source를 설정한다. 2) Screen Initialize 블럭에 VideoPlayer1.Start 명령만 설정하면 다음과 같이 "블랙" 스크린만 나타난다. 3) 블랙화면만 나타남. 4)"Clock.Timer" 블럭안에 "VideoPlayer1.Start" 블럭을 끼워주면 간단히 해결됨. 5)초기화면부터 동영상이 작동하는 모습 6)첫 화면 하단의 버튼 "촛불전환" 이나 "횃불전환" 버튼을 누를때 동영상이 전환되어 나오는 프로젝트의 전체 내용. 간단한 것처럼 보이나 "..

반응형