JavaScript 주말 전문가 교육의 2일차이자 마지막 날이다.


어제 교육의 review

JavaScript의 특징

- type 지정 키워드가 없다

- 숫자, 문자열, 논리(true, false(0, "", null, false, undefined, NaN(숫자 타입이 값이 지정되지 않았을 경우)))

- lexical 특성 : 전역변수로 선언되있던 것을 다시 지역변수로 선언했는데, 그것을 초기화하기 전에 사용했을 경우 undefined가 나오는 것.

var a=10

function doit() {

console.log(a);

var a=20;

}


- 함수

생성자함수의 역할

메소드의 역할

- 메소드 : 어떤 동작이 일어나게끔 하는 (behavior)


- 함수의 인자와 파라미터 개수는 꼭 같지 않아도 된다. 인자값이 모자라면 undefined, 넘치면 버려진다.

argument.length : 전달되는 인자의 개수




객체지향 자바스크립트

1. 클래스(Class) 기반 객체지향

  • 클래스 기반 객체지향 언어 : C++, C#, JAVA 등
  • 클래스 기반 객체지향 언어의 특징
    • 객체와 클래스의 개념 명확
    • 캡슐화(Encapsulation)
      • 정보 은닉을 위해 제공한다. 속성은 private로 제한, public 메서드를 통해 멤버에 접근하도록 함
      • 저장되는 값의 검증, 조회하는 콜러의 권한 체크 등이 메서드 안에 작성 가능하기때문에 메서드 이용
    • 집합(Aggregation or Composition)
    • 상속(Inheritannce) : 부모의 멤버(변수, 메서드)를 자식 클래스에서 상속받을 수 있고, 코드 재사용성을 높인다.
    • 다형성(Polymorphism) : 상속관계가 있는 상태에서 사용 가능하고, 부모타입으로 선언하면 참조시 상속관계가 있는 모든 개체를 참조할 수 있다.

2. 프로토타입(prototype) 기반 객체지향

  • 객체를 만드는 방법
    1. new와 Object(최상위 객체) 생성자를 이용
      * Object(언어차원에서 최상위 객체) 와 window(만들어진 객체?)

      ex)
          person = new Object();
          person.name = "MJ";
          person.age = 30;

    2. 사용자 정의 생성자를 이용
      ex)
          function Person(name, age) {
              this.name = name;    //속성 추가
              this.age = age;
              this.setName = function(newName) {    //메서드 추가
                  this.name = newName;
              }
          }
          var friend = new Person("KilDong", 25);

    3. 객체 리터럴을 이용
      ex)
          var person = {name: "Sunsin", age:35};    //JSON형식

    2번째 방법은 계속 값이 바껴서 저장되야할 때 좋고
    3번째 방법은 한번 값을 저장하면 되는 것일 때 사용하기 좋다.
    2번째 방법과 3번째 방법은 꼭 알아두는게 좋다.

Object 생성자 함수를 이용한 객체 생성




사용자 정의 생성자를 이용한 객체 생성



객체 리터럴을 이용 (JSON형식)


* http://json.org/

★★★ JSON 표현 형식

object
{}
{ members }
members
pair
pair , members
pair
string : value
array
[]
[ elements ]
elements
value 
value , elements
value
string
number
object
array
true
false
null

string
""
" chars "
chars
char
char chars
char
any-Unicode-character-
    except-"-or-\-or-
    control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits
number
int
int frac
int exp
int frac exp
int
digit
digit1-9 digits 
- digit
- digit1-9 digits
frac
. digits
exp
e digits
digits
digit
digit digits
e
e
e+
e-
E
E+
E-


3. 내장(built-in) 객체

  • 자바스크립트 타입 체계의 특징
    • 타입 체크를 수행하지 않는다
    • 객체 초기 구조는 결정
      • 자바스크립트의 생성자는 생성되는 객체의 최초 구조를 결정
        위에 예제에서 Person을 생성하면서 객체의 최초 구조를 결정한다고 볼 수 있다.
    • 객체 구조 변경
      위에 예제 Person(name, age)에서 꼭 name과 age만 들어가는걸까? 아니다.
      Runtime에도 속성을 언제든지 바꿀 수 있다.

4. 객체 정의 및 생성

  1. new Object
    객체를 생성하기 위해 함수를 호출할 때 new 사용
    new 다음에 나오는 함수를 생성자(constructor)라고 한다.
    Object도 함수다.
  2. 객체 리터럴
    객체 생성 구문으로 많이 사용
    { } 를 이용
  3. 함수 이용
    클래스 기반 언어에서 클래스 정의
    자바스크립트에서 클래스(생성자 함수) 정의


5. 객체 멤버



함수 내에서 바로 선언된 것(var 변수)을 비공개 멤버라하고, 이는 함수 밖에서 접근할 수 없다.




8. prototype, constructor, instance

★★★★★★ 완전 중요 ★★★★★★★


생성자 함수를 위한 공간이 실행코드 블록과 생성자(함수)영역으로 나뉜다.

인스턴스들은 함수 안에 this. 으로 선언한 속성들이 저장이된다.

프로토타입멤버의 프로토타입 속성은 생성자.prototype.속성 = 값; 으로 구현을 하는데..


01234


JavaScript는 클래스가 없어서 상속을 못하기때문에 prototype을 이용하는 것이다.

prototype에 뭔가를 추가하면은 instance에서도 추가가 되는 것이다.

멤버는 변수가 될수도있고 메서드가 될수도있다.



+ : 외부에서 참조 가능

- : 외부에서 참조 불가능


공개변수 영역 : 생성자를 직접 추가하거나 제거할 수 있다.

값을 저장하는 영역 : 변수 스코프 영역(-), 프로토타입 객체(+ : 프로토타입객체.xx로 참조가능), 공개변수 영역(+ : 함수이름.xxx로 참조 가능) 

constructor : 각각 상대를 의미한다. 즉 Person의 각각 객체를 의미

ex) Person.prototype.constructor = Person자바스크립트는 변수와 메서드 구분이 없다. 즉 변수가 추가되면 메서드도 추가가 가능하다는 소리이다.


salary라는 변수는 프로토타입 객체에도 있지만 friend라는 인스턴스에도 존재한다.(프로토타입 객체의 비대칭성)





9. prototype

  • 모든 생성자가 가지고 있는 공개 속성
  • 생성자를 통해 참조 가능(인스턴스를 통해 참조 불가능)
    - Person.prototype (o) / p.prototype (x)
  • 인스턴스 "is a" prototype 객체
    - 프로토타입 객체에 포함된 모든 멤버를 해당 생성자로 생성된 인스턴스에서 접근할 수 있다.
        Person.prototype.job
        p.job
    - 프로토타입 객체는 메모리에 정의할 때 한번만 생성된다.
    -프로토타입 멤버는 인스턴스 별로 복사본이 존재하는 것이 아니라 해당 생성자에 하나만 존재하면서 그 생성자의 모든 인스턴스가 함께 공유한다.
  • 프로토타입 멤버의 비대칭


10. constructor

  • Person.prototype (o) / friend.prototype (x)
  • Person.prototype.constructor = Person (o) / Person. constructor (x)
  • friend.constructor = Person (o)
  • 인스턴스를 가지고 생성자함수를 참조할수 있구나!

11. 객체 생성 과정

  • 프로토 타입 실체는 Object
  • 자바에서 최상위 객체는 Object이다. 자식이 만들어지기 전에 부모가 만들어져야한다.
  • 그러니까 Object가 만들어지고 그 다음에 Person생성자 내에서 this.name="KilDong"이 Object 인스턴스가 된다. 
  • 자동으로 __proto__가 생성된다. 이 속성이 참조하는 것이 Person prototype 객체이다
  • 그리고 Object는 this를 반환하는 형태이다.
12. this
  • this는 해당 함수를 호출하는 객체
  • 함수 안에서 쓰여진다.
  • 원래 this를 쓰려면 function Person(name) { this.name = name; } 이렇게 쓰는데
    //this.name = name 을 하고 var mySon = new Person("aaa")를 하면 aaa를 저장할 곳이 없다는 문제가 생기지만
    Person.prototype.setNewName = function(newName) { this.name = newName; } 과 mySon.setNewName("bbb"); 를 보면은
    mySon.setNewName("bbb")가 실행되면서 my
  • Q. line 12 이후 (어디에든) var urSon = new Person("ddd"); Console.log(urSon.name); 추가하고 결과값은??

    이유는 urSon이라는 인스턴스가 생겨나긴하는데, 이전에 저장되어있던 프로토타입을 가지고 와서 출력하기 때문에 "ccc"가 나온다.


Posted by 밍쫑
,

WebOS와 JavaScript

Webkit : 렌더링엔진(HTML을 파싱. 파싱하면 DOM 트리(비가시성 요소 포함) 만들어진다. - 렌더트리)

   (CSS - 파싱 - CSS룰 - 렌더트리)

XML

- DOM : Tree메모리

- SAX

v8 : Javascript 해석기


1. Open webOS Architecture Diagram


01


* Java 개발자가 꼭 알아야 할 프레임워크!

Spring, jQuery


2. Enyo

  • 모듈화와 캡슐화를 강조한 객체지향 자바스크립트 애플리케이션 프레임워크(기반, 자주사용하는 것들을 미리 만들어놓은 것.)
3. 자바스크립트 프레임워크
• Jindo Framework
– NHN에서 개발한 JavaScript Framework
– http://www.naver.com 에서 사용
– http://jindo.dev.naver.com/jindo_home/
– License : LGPL v2
• Jigu Framework
– Daum에서 개발한 JavaScript Framework
– http://www.daum.net 에서 사용
– Sizzle CSS Selector Engine을 사용함
– License : Daum Common License
• jQuery Framework
– 호환성을 갖춘 JavaScript Framework(write once, do more)
– http://www.jquery.com
– Sizzle CSS Selector Engine을 사용함
– License : MIT License
• Enyo Framework
– WebOS의 Web UI Framework
– http://enyojs.com
– License : Apache License, Version 2.0.
• Sencha Touch Framework
– http://sencha.com
– License : GPL v3




자바스크립트


1.자바스크립트 개요

  • ECMAScript 표준을 준수
  • 프로토타입 기반 객체지향 언어
  • html문서에 삽입되어, 브라우저의 해석기에 의해 인터프리터 방식으로 해석되어 실행이된다.
    *컴파일러와 인터프리터의 차이?
    - 컴파일러 : 컴파일하며 바이너리 파일이 생성된다. 바이너리 파일은 그 플랫폼에 의존하는 경향이 있다. ex) C, C++
    - 인터프리터 : 인터프리터만 있으면 어느 플랫폼에서든 실행이 가능하다. 단점은 그때그때 한줄씩 구문 검사를 하고, 속도가 느리다. ex) 자바스크립트
2. 자바스크립트 특징과 기능
  • 클래스를 정의할 수 없다.
  • 그러나 함수를 정의하고 함수로 객체를 생성할 수 있다.

3. 자바스크립트의 장점과 단점
  • 장점

- 작업속도가 빠르다

- 플랫폼 독립적

  • 단점

- 소스코드가 노출된다.

- 객체와 객체 함수가 적다.


4. 자바스크립트의 기본 구조

- <script>태그를 사용하여 HTML 문서에 코드 작성

HTML5인 경우 소스코드의 제일 상단에 <!DOCTYPE html>이 붙어있다.

HTML5인 경우 type없이 <script> ... </script>만 써도된다.


> document.write("<h2>안녕하세요</h2>"); 


document는 문서 하나를 말한다.

document.write는 브라우저 화면에 그리는 것이 아니라 브라우저 화면에 무엇인가를 나타내기 위한 출력이다.

alert("Hello")는 알림창을 띄우는 건데, 이 alert앞에는 window가 생략되있는 것이다. 

window는 최상위 객체이기때문에 생략 가능하다.

그래서 window.alert("Hello")이지만 alert("Hello")라고 쓸 수 있는 것이다.


5. 자바스크립트의 실행 위치

  1. <head> 태그 영역에 배치
  2. <body> 태그 영역에 배치
  3. 자바스크립트를 외부 파일로 사용되는 경우
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
    <title>문서의 제목을 입력합니다.</title>
</head>
 
<body>
    <!-- 브라우저 화면에 보여지는 내용입니다. -->
    <div>안녕하세요</div>
    <script>
        var myDiv = document.querySelector("div"); <!-- div라는 태그를 찾아서 DOM객체 반환 -->
        myDiv.innerHTML = "반갑습니다";
    </script>
</body>
</html>
<test1.html>

* var를 쓰지않으면 전역변수가 된다.
* <script>가 <head>부분에 있었으면 결과화면은 반갑습니다가 아닌 안녕하세요가 나왔을 것이다.
    왜냐하면 div가 DOM태그에 입력되기 이전에 script가 전부 실행 되게 되기때문에 myDiv가 null이 된다.
    따라서 <script>를 <body>의 마지막에 넣어준다.

* 다른 방식
<test2.html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
    <title>문서의 제목을 입력합니다.</title>
    <script>
    function init() {
        var myDiv = document.querySelector("div");
        myDiv.innerHTML = "반갑습니다";
    }
    </script>
</head>
 
<body onload="init();">
    <!-- 브라우저 화면에 보여지는 내용입니다. -->
    <div>안녕하세요</div>
</body>
</html>



*중요한 또 다른 방식

<test3.html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
    <title>문서의 제목을 입력합니다.</title>
    <script src="default.js" defer> 
    
    </script>
</head>
 
<body>
    <!-- 브라우저 화면에 보여지는 내용입니다. -->
    <div>안녕하세요</div>
</body>
</html>


<default.js>

1
2
3
4
5
function init() {
    var myDiv = document.querySelector("div"); <!-- div라는 태그를 찾아서 DOM객체 반환 -->
    myDiv.innerHTML = "반갑습니다";
}
init();

<!-- defer : HTML문서를 다 실행한 후에 <script>실행 -->

<!-- HTML5의 경우. <async>의 경우 <script>다 다운받으면 바로 worker(백그라운드에서 돌아간다)를 실행시킨다. -->


6. 자바스크립트의 기본 문법

- 자바스크립트 구문

- 문장 끝에 세미콜론(;)을 입력한다.

- 자바스크립트 파일은 공백과 엔터를 지우고, 변수 이름도 a, b로 바꾸는 packing을 해서 암호화한다.

- 자바스크립트 주석

- // : 한 줄 주석 처리

- /* ~ */ : 한 줄 이상의 주석 처리

- 변수 선언

- var 키워드 이용

- var 없이 변수 사용 가능하지만 그러면 전역변수(최상위 객체의 멤버)가 됨

- 변수의 스코프(scope)는 함수 단위임


7. 데이터 타입

  • Primitive data type : 숫자(isFinite(), isNaN()), 문자열, 불린 타입(비교 결과가 0, null, "", false, undefined, NaN으로 판단되면 false,나머진 true), undefined, null
  • Reference data type : 객체, 배열, 함수, 기타
  • 객체
    - 자바스크립트에서 객체는 모든것을 의미한다. (문자열, 숫자, 배열, 함수 등)
    - 자바스크립트는 내장 객체와 사용자 정의 객체가 있다.

8. 연산자

> a=8;
   b=20;
   c=0;
   d=a&&b&&c;
   console.log(d);

0


> a=8;
   b=20;
   c=0;
   d=a||b||c;
   console.log(d);

8


9. 제어문

  • for/in 문
    - 사용법
        for (변수 in 객체) {
            //실행 코드 블록
        }
    - 객체의 멤버에 접근하기 위해[]사용 가능
    - 사용자가 정의한 속성에만 접근 가능하지만, Object 객체에 원래 정의된 속성에는 접근할 수 없다.
  • 반복문 안에서 변수 선언시 var 변수로 선언하지 않으면 전역변수가된다. (함수 밖에서 참조 가능)
prompt 창으로 두 수를 입력받은 후, 그 두 수를 더한 값을 출력하시오.
> var first = prompt("첫 번째 수를 입력하세요");
   var second = prompt("두 번째 수를 입력하세요");
   console.log(parseInt(first) + parseInt(second));
   console.log(first + second);


수를 입력받아 해당하는 구구단을 출력하세요.

> var dan = prompt("단을 입력하세요");

   dan = parseInt(dan);

   if(!isNaN(dan)) {

for(var i=1; i<=9; i++) {

console.log(i + "*" + dan + "=" + (i*dan));

}

    }else {

console.log("잘못된 입력입니다");

    }


10. 예외 처리
  • try/catch/finally
    -사용법
        try {
            //실행 코드를 포함
        } catch(error) {
            //예외가 발생했을 경우 처리할 코드
        } finally {
            //항상 실행되는 코드 포함
        }
  • throw

원인이 있는 곳에 try catch

원인이 발생하는 곳에서 throw

입력값 : 0 / 출력값 : Infinity


예제)

삼촌(caller)이 조카(callee)에게 500원을 주고 케이크를 사오라고 한다면 케이크를 못 사온 조카의 잘못일까? 삼촌의 잘못일까? 당연히 500원을 준 삼촌이 잘못이다! 고로 삼촌을 예외처리해주자!

* el이 null값이 들어있다는 error를 잡아준다.

* 밑에 경우가 올바른 경우


*위의 경우보다 오류 메세지를 더 알아보기 쉽게 한 코드(최종 코드)


11. 함수

  • 기본 개념
    • 함수의 정의
      - 예약어 'function'으로 시작
      - 익명함수 : 자기가 자기의 함수를 바로 호출해서 사용하는 것 (제일 밑에 소스코드)
  • 함수의 역할
    - 호출 가능한 루틴으로서의 함수 (method)
    - 값으로서의 함수 (method)
    - 다른 인스턴스를 생성할 수 있는 요소. 객체 타입으로서의 함수 (생성자함수)
  • 함수와 변수 스코프
    렉시컬(lexical, 구문) 특성 : 코드 그대로의 환경을 기준으로 정의한 변수 스코프에서 변수의 검색이 일어난다.
        함수 밖에서 선언된 전역변수를 함수 안에서 초기화 하지 않고 참조하면 undefined

    전역변수를 지역변수로 다시 선언할 때에는 반드시 초기화를 해줘야한다. 그렇지 않으면 undefined!
  • 메모리구조(★★★)
    실행코드블록에서는 변수 스코프를 참조할수 있기때문에 붙여놓았다.
    변수 스코프에서는 prototype이라는 속성을 제공하는데, 이 것을 이용하면 프로토타입의 객체를 반환받을 수 있다.
    프로토타입 객체의 constructor을 이용하면 원래 함수 객체로 돌아갈 수 있다.
    변수가 저장되는 곳은 : 변수 스코프, 프로토타입 객체, 공개변수영역
  • 함수 정의 방법
    - 기본 방법
    function add(x, y) {
        return x+y;
    }
    - 함수 리터럴 사용 (가장 많이 사용)
    var add = function(x, y) {
        return x+y;
    }
    - function 생성자 사용(맨 마지막 인자가 실행코드이고, 나머지는 함수의 인자이다.)
    var add = Function("x", "y", "return x+y");
  • 함수 호출과 함수 인자
    - 함수 호출시에 인자의 수는 정의시 매개변수의 수와 일치하지 않아도 됨
    인자보다 부족하면 undefined(or NaN), 인자보다 많으면 버려진다.
  • arguments
    - 함수 인자로 전달되는 데이터를 가진 객체, Object 타입
    - arguments.callee : 익명함수(anonymous function)로 재귀함수를 만들때
    - arguments.length : 전달되는 인자의 개수를 알 수 있다.
  • 자바스크립트 클로저
    - 내부 함수를 반환값으로 사용하는 특수한 함수
    - 클로저를 이용하면 독립된 변수 공간을 가진 인스턴스를 반환한다.
    function outer() {
        var x=0;
        return function() {
            return ++x;
        }
    }
    var f = outer();
    var g = outer();
    f(); //1
    f(); //2
    g(); //1
    g(); //2
    outer()(); //1
    outer()(); //1
    -> 지역변수값이 정적(static)변수가 되게 만들어준다.



숙제!!

17개의 숫자 더하는 프로그램을 짜보세요.

* for문 조건식에서 n=arguments.length라고 준 이유는 메모리 공간을 하나 더 차지하기는 하지만 for문을 돌면서 항상 계산(i<arguments.length)할 필요가 없기 때문이다.


Posted by 밍쫑
,

오늘부터 2일동안 자바스크립트 전문가 교육을 듣게 되었습니다.




자바와 자바스크립트의 차이?

햄과 햄스터의 차이라고 볼 수 있다! 비슷할 것 같지만 전혀 다르다.

자바는 객체 지향 언어지만..

엄밀히 프로그래머 입장에서 자바스크립트 언어는 객체 지향 언어가 아니라 객체 기반 언어다. 근데 객체 기반 언어는 없는 말이다. 객체 기반 언어는 그냥 만든 말이다. 정확히 말하면 프로토타입(모형, 시제품) 언어라고 볼 수 있다.


객체 지향 언어 : 모든 것을 객체로 관리한다. 재사용성과 유지보수성을 생각해서 만들어야 된다. Java, C++ 등

  • 객체(object) : 클래스의 인스턴스
    • 명사적 특징 : 그 객체가 가지고 있는 데이터(data) ex) 펜의 경우 - 색깔
    • 동사적 특징 : 그 객체로 할 수 있는 행위(behavior) ex) 펜의 경우 - 쓰다
    • 상태는 행위에 영향을 준다.
    •  

      Java 

      분석/설계 

       명사적 특징(data)

      변수 

      Field 

      attribute 

       동사적 특징(behavior)

      함수 

      Method 

      operation
      (behavior)

  • 클래스(class) : 객체를 만들기 위한 틀
  • 객체(object) 와 인스턴스(instance)의 차이 : 객체는 unique하고, 인스턴스는 infinite하다. 
        예를 들어 책상에 여러 개의 펜이 있을 때 책상 위의 펜들을 인스턴스라고 말하고, 그 중 필기를 위해 한 개를 들었을 때 그것을 객체라고 말한다. (
    객체는 총칭해서 부르는 말이다.)



* 오라클이 다음에 JDK 업데이트 할 때에는 자바가 자바스크립트를 지원하도록 하겠다고 했다고 한다.


자바스크립트 왜 배울까?

가장 많이 사용되는 곳은 Web. (웹의 내용(html), 표현(css), 동작(javascript))

자바스크립트에서는 Ajax(비동기식 요청)와 DOM제어로 많이 사용한다.


자바스크립트의 특징

형(type)을 지정하는 키워드가 없다. 그래서 a=10, a=3.5, a=func() 모두 사용 가능.

즉, 메모리를 효율적으로 관리할 수는 없다. (개발자의 몫)





ECMAScript

javascript는 ECMAScript 표준을 따르고 있다.

그럼 개발자는 EMCAScript 표준을 따르면 어떤 해석기에서도 해석 가능하다는 뜻이다.

ECMAScript 객체는 속성들의 모음

- 객체들은 0개 이상 속성을 가질 수 있다.

- 속성들은 다른 객체, 원시 값(primitive values), 함수(functions)를 포함할 수 있다.

▷ 변수와 method 구분 없이 모두 속성이라고 얘기한다.

▷ 자바스크립트에서 method라고 부를 때가 있고 함수라고 부를 때가 있다.

그럼 언제 함수라고 부르지?

▶ 자바스크립트에서는 클래스가 없기 때문에 함수를 가지고 객체를 만들 경우.

그럼 언제 method라고 부르지?

▶ 동작을 실행하는 경우.


내장 오브젝트

이 객체들은 모두 함수로 구현되어 있는 생성자라고 생각하면 된다. ECMAScript에서는 JSON도 지원한다.

JSON은 데이터 표현 형식들 중의 하나이다. (http://json.org)

– global object,

– Object object,

– Function object,

– Array object,

– String object,

– Boolean object,

– Number object,

– Math object,

– Date object,

– RegExp object,

– JSON object,

– Error objects

• Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError and URIError.


Objects

  • EMCAScript는 클래스를 사용하지 않는다. - Javascript 역시 클래스 x
  • 대신에 객체를 만들기 위해서 함수를 이용한다. (생성자함수)
    첫글자가 대문자이면 '아~생성자함수구나!' 라고 생각하면된다. - 메소드와 구분하기 위해서
    • literal notation
    • Constructors

ECMAScript 연산자 : 단항, 다항, 사칙, 비트이동, 관계, 동등비교, 비트, 비트논리, 할당, 콤마 연산자 등

자바스크립트의 독특한 연산자!! - 타입까지 비교해주는 연산자 ( ===, !== )가 있다.

short circuit - &&, || : 이것들의 결과는 T/F가 아니다. 왼쪽 항 또는 오른쪽 항의 결과가 대입된다.
    true && true = true(모두 참일 경우 마지막 항이 결과값), false && ? = false(앞이 F면 비교할 필요도없이 결과가 F)




자바스크립트 디버깅 (크롬 기준 설명)


크롬 - [F12]를 누르면 개발자도구가 나옵니다.

거기서 [Console] 탭을 눌러봅니다.

이곳에서 간단한 명령(자바스크립트) 실행가능합니다.

* 깨알 Tip!

간단한 명령 실행을 할 때 주소창에

about:blank

에 들어가서 실행하는 것을 추천합니다!

깨~끗해요


간단한 명령(자바스크립트)를 실행해보겠습니다.


> console.log("Hello")

Hello

>alert("Hello")

>a=10;
  b=20;
  c=a+b;

  console.log(c);

30

* 참고로 3번째 명령문의 경우 enter가 아닌 shift + enter로 바로 다음줄에 입력가능합니다.



* Tip!
 위의 사진을 보시다시피, 어느정도 입력하다보면 희미하게 회색으로 자동완성이 되면서 밑에 입력가능한 명령어들이 나옵니다. 이때 희미한 회색이 본인이 사용하려는 명령어인경우 [Tab]을 누르시면 자동완성이 됩니다.



* Java는 인터프리터 언어이다. 그것을 확인하는 명령.


> console.log("log");

   console.error("error");
   console.info("info");

   console.debug("debug");
   console.warn("warning");


console.log("헉! %s가 %d층짜리 건물을 뛰어넘습니다.", animal, count);

console.log('%c배경은 green, 글자색은 red로 표시됩니다.', 'color:red; background-color:green');

자바스크립트는 형식 문자열(%s, %d(10진문자), %c(style을 나타낼수있는데, 안될 수도 있으므로 잘 사용 x))을 가질 수 있다.




웹 아키텍처와 웹 어플리케이션 아키텍처

1. HTTP Client-Server Architecture

  • 브라우저가 서버의 페이지를 요청하면 서버는 해당 파일을 찾은 다음 HTTP응답을 통해 클라이언트에 전송
  • 브라우저는 응답된 페이지를 해석하여 화면에 보여준다.
  • request 정보는 사용자가 원하는 파일 또는 리소스의 위치와 브라우저에 관한 정보를 포함
  • reponse 정보는 요청한 자원에 관한 정보를 가지고 있으며, 일반적으로 텍스트 형태이며, 그래픽 등을 바이너리 정보를 포함할 수도 있다.

요청은 2가지가 있다.

  • 내가 클릭하거나 주소를 입력하면 동기 방식
  • 트위터나 페이스북은 화면 전체가 refresh가 안되는데 이것이 비동기 방식(자바스크립트의 역할)


2. HTTP Message

  • Request 메세지 본문에 들어가는 것은 서버에 보내야 할 파라미터들, 업로드할 때는 업로드할 파일들
  • Response 메세지 본문에 있는 것이 html 본문에 나온다.


3. HTTP Request

  • GET : 받는 용도
  • POST : 주는 용도


4. HTTP Response

  • HTTP 응답에는 응답상태와 헤더, 그리고 메시지 바디를 포함한다.
  • 응답 헤더에 간혹 쿠키 정보가 들어있을 수도 있다.


5. 웹사이트 구조와 접근 URL

  • protocol://host:port/path/file


6. 웹 어플리케이션 아키텍처

JSP는 결과를 보여주는 페이지인데, 즉 웹 개발자보다 web publisher 직군이 다루는 것이 낫다.

 - 웹 문서 시대(1990년대) : html + css + jsp가 모두 한 파일에...

 - 웹 표준 시대(2000년대 초반) : 서버단에 돌아가는 페이지에 MVC 패턴을 적용.

 - Ajax 시대(2000년대 후반) : 비동기 호출 사용

 - HTML5 시대(2010년대 초반) : HTML5 + CSS3 + HTML5 API(Javascript)

Posted by 밍쫑
,

알고리즘.........................!!!!!!!!!!


제가 개인적으로 많이 부족한 기술력도 있지만, 학교에서 이론만 배워보고 알고리즘 문제를 접하거나 코딩을 직접 해 본 적이 없는 상태입니다.


현재 알고리즘이 매우 중요하게 된 멤버십에서 저는 완전 멘붕상태였죠..ㅠ


멤버십(이하 멤)에서 내주는 일일 알고리즘 3문제도 하루 반나절을 붙잡아야 풀 수 있는 정도였습니다.

매주 자체적으로 멤에서 매주 토요일마다 2시간동안 3문제를 푸는 '멤고리즘' 대회를 여는데요.

이 시험을 통해 알고리즘 등급이 메겨집니다. 

A~F등급이 있는데...(저희 대전 멤버십 내에서의 등급입니다. 전체멤버십과는 관련 없습니다.)


사실 저는 맨 처음 F등급을 받고, 현재는 D등급까지 올라왔습니다.

이렇게 올라온 것도 기존 회원분들 중에 멤고리즘이나 일일 알고리즘에 참여하지 않으시는 분들이 있기때문에 자동적으로 올라가게 된 것이 아닌가 싶습니다. 물론 한 문제라도 풀 수 있게 된 것도 있지만요!!


결론은 아직도 부족...

알고리즘...저도 정말 잘하고 싶습니다!! 

그런데 당장 어떻게 공부해야 될지도 모르겠어서 답답하기만 하답니다.


그 동안 알고리즘 공부하려고, 쉬운 책도 찾아봤지만...제 수준에 맞는 책이 없습니다!

자료구조 책을 다시보는것도 알고리즘을 잘하는 것에 도움이 되는 것도 한계가 있습니다!

잘하는 사람의 소스코드를 보거나, 설명을 듣는것도 물론 도움이 되지만... 제가 너무 타인에 의존적으로 변해버리더랍니다.

마치 우리가 궁금한 게 있으면 인터넷을 찾아보는 것 처럼요...



어제 급하게 만든 4주간의 공부 계획표를 들고 큰 운영자님과 상담을 했습니다.

'매일 3문제씩 푸는데 6개월 후면 지금보다야 많이 나아져있겠지~!'라는 안일한 생각을 갖고 있던 것을 큰 영자님은 완전  꿰뚫어 보시는거 같았습니다. ㅠㅠㅠ멤버십 합격이 전부가 아닌데 제가 너무 편안하게 있던건 아닌가 반성을 했습니다.


큰 운영자님과 상담에서는


1. 알고리즘 3문제를 푸는 것을 2시간을 잡고, 다른 사람한테 물어보거나 말하지 않고 집중력 있게 하기!

2. 질문이 있을 때에는 바로 옆에 물어볼 사람이 있다하더라도 첨삭 게시판의 글을 올리고 리플 달아달라하기!

(즉, 바로바로 물어보지말고 좀 더 혼자 생각하는 시간을 많이 가지라는 의미이기도 하지요)

3. 알고리즘 문제들을 풀기만 하지않고, 문제를 풀면서 분류하기!

(이진수, 배열 등으로 문제들을 분류해놓고 나중에 같은 분류의 문제들을 비교하면서 내가 어느 부분에서 못 푸는지 확인)

4. 시험 볼때에도 '오늘은 몇 점을 받아야지!' 라던가 '오늘은 몇 개를 풀어야지!' 라는 목표를 갖고 임하기!

5. 목표 등급은 B!!


이라는 결론을 받아왔습니다..ㅎㅎ


당장은 잘 하기 힘들거라고 생각합니다. 하지만 빠르게 성장해야죠!

꼭 6개월 안에 A!! B!! 상위권으로 갈 거라고 믿습니다 ㅎㅎ



혹시나 멤버십을 준비하시는 분들이 계시다면

알고리즘 공부도 틈틈히 열심히 하시길 바랍니다.


개인적으로 추천드리는 사이트는

알고스팟 : www.algospot.com/

(알고스팟은 유명한 사이트이지만, 가끔 영어 문제도 나와서 해석해야된다는 단점(?)이 있습니다.)

dovelet : www.dovelet.com/

(dovelet의 경우 모든 문제가 한글로 번역되어 있지만, 3단계까지는 무료이고, 그 이후부터는 유료인 단점(?)이 있습니다.)


Posted by 밍쫑
,

 

 

삼성소프트웨어멤버십에서 2014년도 하반기 신입회원을 선발합니다.



[소프트웨어 멤버십 회원 선발 요강]

1. 모집 요강

□ 모집대상 : IT분야 연구개발에 ‘재능’과 ‘열정’있는 국내 정규 4년제 대학()

□ 해당지역 : 서울, 수원, 대전, 대구, 부산, 광주, 전주

□ 접수방법 : 온라인 접수( www.secmem.org )

□ 모집일정

  * 서류접수 : 2014. 5. 2 ~ 2014. 5. 13 오후 3시까지

  * 기술면접 : 2014. 5. 26 ~ 5. 30

  * 결과발표 : 2014. 6월 중 예정

  2015년 상반기 서류접수/기술전형 : 2014 11월 예정

 

2. 지원 분야

□ 분  : Application / Middleware / System / Robotics / Etc.

□ 전 

  [Portfolio 전형]

  상기 관련 분야에 대해 공모전 수상작, 학교 텀 프로젝트 등,

  본인이 직접(공동) 개발한 작품 발표 및 시연 자료.

  [On-Site 전형]

  본인의 S/W 관련 지식을 활용하여 제시된 지정주제를 창의적인

  아이디어로 해결하여 발표 및 전공지식 Q&A 진행.

 

3. 지원 자격

IT 연구개발에 재능과 열정이 있는 자

□ 정규 4년제 대학()

□ 대학 졸업 전 1년 이상 회원 활동이 가능한 자(대학 졸업과 동시에 수료)

□ 전공 학과 불문

□ 국내외 공모전 수상자 우대

 

4. 선발 인원 : 약 ○○명

 

5. 회원 혜택

□ 연구개발 활동 및 환경 지원

□ 회원 활동 수료 시 삼성전자 연구개발직 입사특전 부여

 

[삼성전자 소프트웨어멤버십이란?]

1. 설립목적

소프트웨어 멤버십이란, 소프트웨어 및 관련 분야에 대한 재능과 열정이

있는 대학생들에게 연구, 개발에 필요한 모든 것들을 지원하여 창의적이고

실력 있는 삼성의 소프트웨어전문가가 되도록 지원하는 프로그램입니다.

 

2. 멤버십에서 바라는 인재상

열정적이고 창의적인, 소프트웨어에 재능이 있는 학생들입니다.

학년, 나이, 학교, 전공, 성별, 성적에 구애 받지 않고 소프트웨어 분야에

대한 열정, 그리고 그 열정을 꽃 피울만한 실력이 갖춰진 학생이라면

멤버십 회원이 될 수 있습니다.

 

3. 멤버십 Program 이란?

소프트웨어 멤버십 회원이 되기 위한 절차를 거쳐 모든 시험과정에 합격한 뒤

멤버십 회원이 되어 활동 과정을 수료하는 사람에 한해 삼성전자에 입사

특전이 주어지는 제도입니다.

 

 

 


삼성소프트웨어멤버십 2014년 하반기 신입회원모집이
오는 5월 2일부터 시작됩니다.
...
창의적이고 열정적인 대학생 여러분들의 많은 지원바랍니다~^^

자세한 내용은 삼성소프트웨어멤버십 공식홈페이지 www.secmem.org 를 참조하세요!

 

Posted by 밍쫑
,

SIG?

대전 SSM 24-1기 2014. 3. 9. 18:16

삼성소프트웨어멤버십에서는 1인당 1 SIG 이상을 들어야 되는데요.

SIG의 개념은 동아리? 인원 수가 많은 스터디 그룹? 이라고 생각하면 됩니다.


저희 대전멤버십에서는 현재 멀티미디어 시그, 웹 시그, AI 시그, 임베디드 시그, 알고리즘 시그 같은 주 시그(학술)가 있고, 볼링 시그라고 부시그가 있습니다. (현재 산책 시그라고 부시그가 만들어질 예정입니다.)


부시그의 경우 주 시그 중 하나는 꼭 들어야만 들어갈 수 있습니다.

그리고 시그는 6인 이상이면 운영자님께 허락받은 후에 만들 수 있습니다.


저는 이번에 "멀티미디어 시그"와 "볼링 시그"에 들어갔습니다.



저희 멀티미디어 시그는
"일상적으로 접하는 멀티미디어에 대한 심화학습을 위한
                 라이브러리 도구를 활용하는 방법에 대해 학습하는 시그
"  입니다.

OpenGL과 OpenCV에 대하여 간단한 프로그래밍을 통해 학습을 하고 있습니다.



시그는 꼭 하나만 들 필요는 없습니다. 본인이 감당만 할 수 있다면 여러 개의 주 시그를 동시에 들어갈 수도 있고,
저처럼 주시그 하나, 부시그 하나 들어갈 수 있습니다.


(여담인데 제가 개인적으로 산책을 좋아하는데, 이번 단기 때 동기들 중에 산책을 좋아하시는 분들이 있더라고요. 

그래서 예비 산책 시그장님이 산책 시그를 실제로 만드실 계획이십니다. 만약 산책 시그가 만들어지면 저는 당연히 들어가려고요ㅋㅋ 그러면 주 시그 1개, 부 시그 2개가 되겠죠?

혹시나 실제로 산책 시그가 만들어졌고, 이 글을 보신 분 중에 후에 대전 멤버십에 들어오시는 분이 계시면 그 때 
같이 산책 나갑시다!ㅋㅋㅋㅋ)



현재 단기가 끝나고 이제 막 신입들이 각자 원하는 시그에 들어가 활동을 시작하는 단계인데요.
앞으로 시그 활동과 개인공부를 통해 기존회원분들 뿐만 아니라 신입회원들이 몇 달 후에 얼마나 많이 발전했을 지
미래가 궁금해지네요. 물론 제 자신도 어떻게 바껴있을지 매우 기대가 됩니다.


힘들게 이곳에 들어왔고, 다른 분야도 알면서 공부할 수 있는 이 좋은 기회를 잘 활용해야죠 ㅎㅎ

Posted by 밍쫑
,

2014년 2월 3일 ~ 2월 28일

약 한 달동안의 단기 집중 교육이 무사히 끝났습니다.


한 달이라는 시간이 누구에게는 짧은 시간이였을 수도, 길었던 시간이였을 수도 있습니다.

저에게 이번 단기 교육은 하루하루를 보면 길었지만, 한 달 전체를 보면 짧았던 시간이 아니였나 싶습니다.


학교다닐 때 아무리 과제가 많아도 몇 일 연속으로 하루에 잠을 한 두시간 자면서 보냈던 적이 없으니까요.


하루를 24시간이 아닌 30시간인 것처럼 보내고, 뭔가 해야할 것도 많고, 

다른 사람과 비교해서 내가 얼마나 부족한 사람인지 느끼게되는 시간이다보니 스트레스도 많이 받았었습니다.


<개인기술세미나>(이하 개기세)라는 것이 있는데, 본인이 갖고 있는 기술과 지원작품을 설명하는 시간이 있습니다.

말이 설명하는 것이지 실제로는 본인을 어필하는 시간이라고 보시면 됩니다.

발표 30분 + 질문 20분(발표 20분 + 질문 30분) = 총 50분 동안 발표를 해야됩니다.


저는 개기세라는 것이 있고 한 번씩 꼭 해야된다는 사실을 알고 정말 걱정이 많았습니다.

처음 멤버십에 들어올 때도 제 실력이 어떤지 알기에 들어오고나서도 불안했고,

동기끼리 기술적인 것들을 말할때도 못알아 듣는 경우도 있었고요.


저의 개기세 결론부터 말하자면...

정말 개망이였습니다ㅋㅋㅋㅋㅋㅋ..

제 밑바닥을 많은 사람들에게, 그것도 어느정도 실력이 있다하는 사람들에게 보였다는 사실이 너무나 창피했습니다.

발표 준비도 시간 채우려고, 보고 또 보고 동영상도 찍어서 편집하고 열심히 준비한다고 했는데

정말 20분도 안되서 끝났습니다...


정말 매일 하루도 빠지지 않고

'내가 왜 뽑혔지?' 라는 생각을 수도 없이 했었습니다.

운영자님들은 그에 대한 대답은 '뽑을 만 하니까 뽑았지! 자신감을 가져!' 라고 말씀해주셨습니다.


솔직히 단기가 끝난 지금도 저 생각은 계속 되고 있습니다.

하지만 처음 저 생각을 할 때와 다른 점이 있다면, '그래! 뽑힐만 하니까 뽑았지! 실력은 공부하고 노력해서 채우자!' 라는 생각을 갖게 되었습니다.


이미 시작된 멤버십 생활!

1년 반동안 위축되있을 수만은 없는 거 아니겠습니까!

어차피 저같은 경우에는 4학년 2학기까지 모두 마쳐서 휴학한 상태이기때문에 멤버십에서 수료할 때까지 지낼 예정인데요.

수업도 없겠다. 공부하고 과제만 하면은 어느정도 따라잡을 수 있지 않을까요?ㅎㅎ


그리고 단기 기간동안 <단기과제>를 진행하게 되는데요.

저희 기수의 경우 한 달 반동안 진행하게 되서 현재 단기는 끝났지만 3월 말까지 단기 과제를 진행한답니다.

단기과제 자체도 아이디어를 짜내는데 정말 힘들었습니다. 

단기과제 끝나고 들어가야 할 <창의과제> 아이디어도 어떤 걸 내야할지 벌써부터 걱정되네요 ㅋㅋㅋ

아! 참고로 단기과제에서 괜찮은 주제의 경우 창의과제로 연계가 가능합니다. 즉, 힘들게 아이디어를 또 낼 필요도 없고 남들보다 프로젝트가 빨리 끝나서 여유로울 수 있다는 장점이 있습니다.


여러분들도 평소 아이디어같은게 있으면 그냥 흘려보내지말고 어디에 적어두는 습관을 들여두시는게 좋습니다.

좋든 나쁘든 나중에 조합하다보면 좋은 아이디어가 나올 수도 있으니까요.


아이디어하니까 생각난건데, 처음 단기가 시작되고 바로 <OT>준비를 하는데요.

OT때 팀파워라고 전국 신입 멤버십이 모인 OT에서 각 멤버십 별로 장기자랑을 하는데, 

여기서도 참신한 아이디어가 필요하답니다ㅋㅋㅋ

그래도 무엇을 하든 과정은 힘들지만 결과는 뿌듯하고 개운한거아니겠습니까~

저희도 비록 상은 받지 못했지만 끝나고 나서 그 때 찍은 동영상 보면서 추억 회상하듯 좋았습니다.


예비 멤버십 회원분들도 이 때 좋은 추억을 남기셨으면 좋겠습니다~ㅋㅋㅋ


이 밖에도 <세미나>, <체육활동>, <게임대회>, <AI대회>, <천문대가기>가 있는데요.

세미나는 전문가분이 오셔서 5일 동안하는 전문가 교육이 있고, 

한 달동안 기존 회원분들이 돌아가면서 다양한 분야의 세미나를 해주십니다.

전문가 교육 내용은 제 블로그에도 포스팅 해놓긴 했지만..저도 너무 어려워서 제대로 포스팅은 못했답니다.

그래도 참고는 할 정도?ㅎㅎ

체육활동, 게임대회, AI대회, 천문대가기 등 되게 재밌고 좋은 활동도 많았습니다.


Posted by 밍쫑
,

안녕하십니까.

삼성 소프트웨어 멤버십 대전 멤버십 24-1기 윤민지입니다.

멤버십에 들어온 지 얼마 안되었지만 앞으로 삼성 소프트웨어 멤버십에 도전할 많은 사람들에게 조금이라도 도움이 되고자 멤버십이 되기까지의 과정과 앞으로의 멤버십 생활에 대해 글들을 작성할 예정입니다.

-----------------------------------------------------------------------------------------------------------------

평소 삼성 소프트웨어 멤버십(이하 SSM)에 대해서는 알고만 있었지 감히 도전할 생각이 없었던 저였습니다.

조용히 4학년 마치고 일찍 취업할 생각이였는데, 4학년 2학기가 끝나갈 무렵 교수님과 SSM에서 활동하고 있는 선배의 추천으로 서류 접수시작 일주일 전 급하게 SSM에 지원 할 생각을 했습니다.

시간이 얼마 없었기에 당장 새로운 프로젝트를 만들기는 어렵고 해서, 기존에 만들었던 졸업작품으로 지원을 하게 되었습니다. 나름 1학년 때부터 꼭 하고 싶어하던 주제로 졸업작품을 만들어서 남들이 뭐라해도 자부심을 갖고 있는 작품이였는데, 서류를 쓰면서 왜 그렇게 쓸 말도 없고 작아지던지...거의 마지막에는 될대로 되라는 식으로 반 포기한 상태로 서류를 작성했었습니다.

--------------------------------- ↓ 여기서 서류에 대한 간단한 Tip을 소개하겠습니다!! ↓ -----------------------------

일단 기본적인 < 서류 질문 >들은

1. 자기소개 (400자)

2. 장단점 (200자)

3. 지원동기 및 포부 (200자)

4. 관심분야 및 향후 계획 (500자)

길게 쓰는 것보다 이렇게 1000자도 안되는 글로 말하고 싶은 것들을 줄여서 쓰는게 참 어렵더군요..

 

그 다음 < 작품 요약서 >

저 같은 경우, 혼자서 3개월도 안되는 개발 기간 동안 만든 작품으로 교내의 신입생과 편입생을 위한 안드로이드 APP을 만들었습니다. 아무래도 졸업 작품으로 만든 케이스라 완성도도 떨어지고 크게 많은 기능들이 없었습니다. 그래도 알고 있는 지식들을 총 동원하면서 이 App이 왜 필요한지, 이 기능이 어떤 것인지 구체적으로 작성해 나갔습니다.

제가 생각할 때 작품 요약서의 경우 구체적으로 상세히 적는게 중요한 것 같습니다.

글로만 본인의 작품을 설명하는 것이기 때문에, 누가봐도 이 작품이 어떤 것인지 알 수 있어야 평가하기 좋겠죠?

1. 전체적으로 어떤 작품인지

2. 작품의 구동 메카니즘이 무엇인지

3. 어떤 기술을 이용했고, 그 기술을 이용한 이유는 무엇인지

4. 이 주제를 생각한 이유와 기존에 있는 작품과 어떤 점이 다른가 (작품의 필요성 설명)

5. (팀 프로젝트의 경우)본인이 개발한 부분에 대해서 최대한 자세히 씁니다.

저도 마지막에 반 포기 상태로 서류를 작성했다고 말씀드렸는데, 그래도 작성한 후에 몇 번씩을 되 읽어보며 고치고 또 고쳤습니다. 읽다보면 오타도 있고, 어색한 문장도 있을 것입니다. 그리고 사람들이 많이 실수하는 것이 반말과 존댓말이 섞여있거나, 서류의 글자체와 글자 크기 통일을 안 한다는 것입니다. 꼭 이 같은 점들은 확인을 하시고 수정 하셔야 합니다.

6. 오타, 어색한 문장 찾아 수정하기. (저같은 경우 맞춤법 검사로 띄어쓰기 조차도 정확히 하였습니다.)

7. 존댓말과 반말 중 하나만 쓰기 & 글자체와 글자 크기 통일시키기.

아! 저같이 미완성의 프로젝트를 제출하는 경우, 기술면접 때까지 개발할 수 있는 내용을 써넣어도 됩니다. 즉, 서류 제출하고 기술면접때까지 계속 개발을 해서 작품의 완성도를 더 높일 수 있는 거겠죠? 하지만 너무 과장되거나 과하게 개발 예정인 것을 써 넣으면 오히려 감점 요인이 될 수도 있으니 주의하시기 바랍니다.

 

이 작품 요약서의 경우, 기술 면접때 면접관 분들이 각자 노트북에 띄어놓고 보시면서 평가하고 질문하시기도 합니다.

 

-----------------------------------------------------------------------------------------------------------------

 

저는 서류 접수 마감 2시간인가 4시간 앞두고 제출을 하였습니다. 그 이후 잘 안되겠지하고 잊으면서 지냈는데...

.

.

.

2013년 12월 27일 오후에 메일이 한 통 왔습니다.

.

.

축하합니다!

 윤민지 님은 2014년 상반기 삼성소프트웨어멤버십 24-1기 신입회원선발을 위한

 서류전형에 합격하셨습니다.

 아래와 같이 합격자를 대상으로 하는 기술면접 일정을 안내해 드리오니,

 본인일정을 숙지하시어 기술면접에 응시해 주시기 바랍니다.

 

 [본인 일정]

  1) 면접시간 : 2014-1-10 15:30

  2) 면접장소 : 대전멤버십 3층 지원자 대기실

               ※ 본인 면접시간 1시간 전까지 면접 장소에 도착하여 접수하시기를 권장합니다.

  3) 준 비 물 : ① 시연할 작품과 발표에 필요한 물품  ② 신분증

                   ③ 제출용 증명서 각 1부 (성적증명서, 재학증명서)

 

 [전체 일정]

  1) 기술면접 일정

     √ 서울 : 2014년 1월 6일(월) ~ 9일(목)

     √ 수원 : 2014년 1월 6일(월) ~ 7일(화)

     √ 대전/부산/광주/전주 : 2014년 1월 9일(목) ~ 10일(금)

     √ 대구 : 2013년 1월 8일(수) ~ 10일(금)

 

  2) 기술면접 장소  

     √ 서울(강남/강북/신촌) : 강남멤버십

     √ 수원/대전/대구/부산/광주/전주 : 각 지역 멤버십

 

  3) 기술면접 결과 발표 : 2014년 1월 22일(수) 오후 예정

     √ S/W멤버십 홈페이지(www.secmem.org) 배너에서 확인

 

  4) 최종 합격자 대상 오리엔테이션 : 2014년 2월 5일(수) ~ 7일(수), 2박 3일

     √ 오리엔테이션은 필수코스로 불참 시, 합격이 취소됩니다.

 

 [기타사항]

  1) 기술면접은 작품 설치시간을 포함하여 1인당 20분 내외가 주어집니다.

  2) 데모작품은 개인 노트북에 설치하거나, 저장매체에 준비하시기 바랍니다.

  3) 면접장에는 Network 접속 가능한 시연용 PC 1대(Windows)가 준비되어 있습니다.

  4) 옷차림에 대한 제한은 없으나, 단정한 차림을 권합니다.

 

 

와우...ㅋㅋㅋㅋㅋㅋ밖에서 놀고있는데 저녁먹을 때쯤 합격 소식을 보았죠! 처음 몇 분은 정말 기분이 좋았습니다. 하지만....그 다음에는 계속 걱정이 되더군요...당장 2주 후에 있는 기술 면접을 어떻게 해야할지...

 

---------------------------- ↓ 여기서 기술면접 에 대한 간단한 Tip을 소개하겠습니다!! ↓ -----------------------------

기술면접의 경우 본인 작품에 대한 ppt 발표를 하게 됩니다. 이 때 시연을 해야하므로 H/W분들은 개인 작품을 꼭 가져오셔야하고, S/W분들도 시연 때 문제가 없게 준비를 해 오셔야 합니다.

서류 면접 합격 발표 후에 기술면접 안내 전화가 오는데요. 그 때 시연에 필요한 것이 있는지 물어보니까 말씀하시면 됩니다.

아! 혹시 면접당일 제 시간에 맞추지 못하실 경우 미리 말씀해서 시간 조정을 해야합니다.

 

면접 당일 필요한 성적증명서재학증명서는 꼭 챙겨주셔야합니다.

그리고 면접시간이 15:30이라고 딱 그 시간에 시작되는 것이 아니므로, 원래 시간보다 30분~1시간 정도 일찍 도착하시길 권장합니다. - 일찍 도착해야하는 또 다른 이유는 바로 시연 준비인데요. 아무래도 시연준비때문에 시간이 지체되면 안 좋은 인상을 받을 수 있겠죠?

시연 준비를 꼭 잘하세요!

- 노트북을 가져가시는 경우 배터리 체크!

- 소스는 USB나 메일 등에 백업해놓기!

- 직접 시연하시는 분들도 혹시 모르니 시연 동영상도 찍어서 가져가기!

- 네트워크 연결의 경우 미리 도착해서 확인하기!

그리고 미리 교통편을 알아두시는게 좋습니다.

(대전 멤버십의 경우 : 대중교통을 이용하시는 분들..제가 서울 사람이라 그런지 모르겠지만.. 대전은 차도 많고 특히 신호가 굉장히 깁니다..!! 그러므로 원래 생각했던 시간보다 더 빨리 출발하시는 것을 추천드립니다.)

복장의 경우, 꼭 정장일 필요는 없습니다. 하지만 그렇다고 너~~무 편안 차림보다는 발표자로써 단정한 차림을 입고 오시길 바랍니다.

제 작품의 경우, 저희 학교 내에서만 사용 가능한 App이라 면접장에서 시연을 할 수가 없었습니다. 그래서 사전에 시연 동영상을 준비해갔습니다. 저와 같이 어쩔 수 없이 면접장에서 시연을 할 수 없는 경우, 시연 동영상을 꼭 준비해 주세요!

그리고 자료구조, java, os 등 공부할 수 있는 시간이 있으신 분들은 꼭 하고 가세요. 시간이 없다 하시는 분들은 자료구조 위주로 집중 공부하고 가세요. (기술면접 질문 대비) 저같은 경우도 시간이 없어서 자료구조 대표적인 것들 정의정도 정리하고 갔습니다.

가능하다면 질문으로 나올만한 것을 예상해보시고 그 대답을 준비해 가세요!

 ----------------------------------------------------------------------------------------------------------------

저는 면접 시작 30분전에 도착하였습니다. 처음 멤버십에 들어섰을 때에는 안내 데스크(?)같은 곳에서 기존 회원 분이 이름과 명찰, 서류 확인 및 상의 사이즈에 대해서 물어봤습니다. 이 상의 사이즈에 경우 나중에 합격하고 받을 단체티 사이즈라더군요. 그런데 여기서 남아있는 명찰의 개수를 보니 몇 개 없더라구요. 알고보니 공지되어있는 면접시간에 딱 시작하는 것이 아니라 도착하는 순서대로 시작하는 것 같더라구요. 저 같은 경우에도 대기실에 가방 놓고 잠깐 앉아있다 바로 면접장 앞에 있는 의자에서 대기하였습니다. 대기하는 내내 기존 회원분들이 긴장하지말라며 말도 많이 걸어주셨습니다. 그래도 긴장되는 건 어쩔 수 없는듯... 한편으로 여유로운 기존 회원분들을 보니 나도 꼭 합격해서 다음 기수 면접장에서 저렇게 있고싶다라는 생각이 들면서 저 분들이랑도 친해지고 싶더라고요.

지금 발표하고 계신 분이랑 바로 앞에 대기하시는 분 발표시간 포함해서 약 40분 정도 대기했었습니다. 40분이 정말 천국과 지옥을 오가는 시간이였습니다. 긴장이 풀리는가 싶으면 금방 다시 미친듯이 떨려오기를 반복했죠. 저는 App이기 때문에 들고 온게 USB하나 대본 한장이 다였는데, 앞에 대기자분은 H/W라서 그런지 들고 오신게 많더라고요. 왠지 내가 없어보이는 듯한 느낌..ㅋㅋ아마 거기서 더 떨렸던거같아요. 그 대기시간동안 가지고 온 대본 종이를 봐도 눈에 들어오지 않고, 자료구조 공부한 것도 생각도 안나고 진짜 패닉이였어요. 앞에 분이 끝나갈때쯤 어떻게든 되겠지하고 마음 진정 시키는 대에만 집중했죠.

발표 자료나 시연할 작품의 경우 면접 도우미 분 께서 미리 면접장 안에 가져다 놓으시고, 피피티 발표화면을 띄어놓아주시더라고요. 기존 회원분들이 대기하면서 계속 말씀해주신게 목소리 크고 자신있게 해라! 였습니다. 준비가 다 된후에 들어가서 진짜 큰 소리로 발표를 했습니다. (면접관분들은 총 4분이 계십니다.)

이 때 면접관분들께서 발표를 끝까지 듣고 질문을 하시는게 아니라 들으시면서 바로바로 질문을 하십니다. 당황하시지 마시고 잘 대처하시길..

저 같은 경우 PPT구성을 간단히 제가 누구인지, 개발 경험, 주제 설명, 작품 설명, 시연 동영상으로 했습니다.

개발 경험의 경우 각 언어 별로 개발했던 프로젝트들을 넣었는데요. 저같은 경우 이 부분에서 질문을 좀 받았습니다.

면접 본지 오래되서 질문이 다 기억이 안나, 기억나는 것만 적어보겠습니다.

Q1. (제출한 작품)혼자 개발하였는가?

- 네

Q2. 개발 기간이 어떻게 되는가?

- 안드로이드와 주제에 대한 기초 자료 검색하고 공부하는데에 시간을 많이 보내서, 실제 개발 기간은 2달정도 됩니다.

Q3. (제가 개발 작품의 단점에 대해서 말한 후) 그게 왜 안된다고 생각하는가?

- (웃음웃음..난감난감..)잘 모르겠습니다.

Q4. 만약 멤버십이 된다면 이 작품을 어떤 점을 수정하고 싶은가?

- 그거에 대해서는 많은 생각을 해봤습니다. 일단 기본 기능의 완성도를 높이는 것에 초점을 맞추되, 그것이 완성된 이후에는 네비게이션 기능을 추가하여 좀 더 사용자에게 편리성을 제공하고 싶습니다.

Q5. 4학년 2학기까지 마친 상태인데 멤버십 활동은 어떻게 할 것인가?

- 2학기까지 수료한 상태이기때문에 휴학을 할 예정입니다.

Q6. 만약 멤버십에 떨어지게되면 다시 지원해볼 생각인가?

- 네. 물론 다음 번에 또 지원해볼 생각입니다.

Q7. (개발해봤던 작품)Java로 만든 작품에 대해 설명해보시오.

Q8. (개발해봤던 작품)Visual Basic으로 만든 작품에 대해 설명해보시오.

Q9. (개발해봤던 작품)Open GL로 만든 작품에 대해 설명해보시오.

Q10. 마지막으로 하고싶은 말

- 실패하는 것 또한 경험이라 생각합니다. 경험이 없이는 앞으로 나아갈 수 없습니다. !@#$!@#$!@#$

전체적으로 면접 분위기는 좋았습니다. 모두들 입가에 미소도 띄어주시고~ 정말 20분이라는 시간이 후딱 지나갔습니다.

면접이 끝난 후에는 기존 회원분과 간단한 인터뷰를 하는데요. 이건 나중에 합격하고 나면 편집해서 추억으로??무언가를 만든다고 하시더라고요.

여기서는 간단한 자기소개, 앞으로의 각오 정도 인터뷰하고 끝났던 것 같습니다. 끝나고 집에가는데 정말 진이 다 빠져있었습니다. 아무리 면접 분위기가 좋았다고 한들 붙을 자신은 없었습니다. 그래서 당연히 떨어지겠거니하고 다른 교육을 받고 있었던 중이였습니다. 그래도 사람이 혹시라는 게 있다보니.. 발표당일 오후에 발표인 걸 알면서도 오전부터 계속 합격자 조회에 들락날락했었습니다. 

.

.

2014년 1월 22일 오후 5시가 넘어서 메일 한통이 왔습니다.

.

.

축하합니다!

 윤민지 님은 2014년 상반기 삼성소프트웨어멤버십 24-1기 신입회원선발을 위한

 기술전형에 합격하셨습니다.

 삼성소프트웨어멤버십에서 계획하신 큰 꿈을 이루시기 바랍니다.

 

 윤민지 님이 활동하실 지역은 대전 멤버십입니다.

 

 앞으로의 일정을 안내해 드리겠습니다.

 

 [신입회원 Orientation 사전 모임]

  1) 지역별 집합장소/시간

  - 강남 : 1/27(월) 10:00 강남멤버십 7층 집합교육장

  - 강북 : 1/27(월) 10:00 강북멤버십 6층 세미나실

  - 신촌 : 1/27(월) 10:00 신촌멤버십 4층 세미나실

  - 수원 : 1/27(월) 14:00 수원멤버십 6층 세미나실

  - 대전 : 1/27(월) 13:00 대전멤버십 2층 세미나실

  - 대구 : 1/27(월) 09:00 대구멤버십 4층 대회의실

  - 부산 : 1/27(월) 09:00 부산멤버십 6층 세미나실

  - 광주 : 1/27(월) 13:00 광주멤버십 8층 세미나실

  - 전주 : 1/27(월) 11:00 전주멤버십 7층 세미나실

  

  2) 행사내용

  - 담당연구원, 자치회 상견례

  - 멤버십 활동 소개

  - 신입회원 Orientation 안내

   * Orientation 일정 : 2/3(월) ~ 2/7(금) [ ※ 불참 시 합격 취소 ]

     -> 2/3(월)~4(화) : 각 지역별 멤버십 자체 W/S

     -> 2/5(수)~7(금) : 경북 경주 소재 대명리조트 O/T

  - Orientation 이후 집중세미나 일정 안내

  

  3) 준비물 : 필기구

 

이렇게해서 운 좋게 삼성 소프트웨어 멤버십에 합격하게 되었습니다.

현재 24-1기로 활동 중이며, 설날이 끝난 후에 OT를 다녀온답니다~ㅎㅎ

 

이렇게 긴 글을 읽어주시는 분이 몇 분이 나 계실지는 모르지만.. 긴 글 읽어주셔서 감사합니다!

그리고 삼성 소프트웨어 멤버십에 꼭 도전해보시기 바랍니다! 실패하는 것을 두려워하지 마십시오.

실패하는 것 또한 경험입니다. 경험이 있는 사람만이 앞으로 남들보다 더 빠르게 나아갈 수 있습니다.

Posted by 밍쫑
,