Javascript 실행 가능한 코드(Executable Code)와 실행 콘텍스트(Execution Context), Lexical En...Young-Beom RheeJavascript의 함수가 실행될때 실행 가능한 코드(Executable Code)와 실행 콘텍스트(Execution Context)에 설정되는 것들과 주의할 점들
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeYoung-Beom RheeJavascript의 함수(Function)의 기본개념과, 호출패턴에 따라 달라지는 this, 상속을 가능하게 해주는 prototype, 다른 언어와 다른 scope에 대해 알아봅니다.
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍Young-Beom RheeJavascript 객체지향, 함수형 프로그래밍에 대해서 알아봅니다.
prototype을 이용하여 상속을 구현하는 방법, 그리고 Closure와 Function을 이용한 강력한 함수형(Functional) 프로그래밍
C++ Concurrency in Action 9-2 Interrupting threadsSeok-joon YunC++ Korea
C++ Concurrency in Action
Study
Chapter 09 Advanced thread management
9.2 Interrupting threads
골때리는 자바스크립트 발표자료욱진 양Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
Javascript introduction, dynamic data type, operatorYoung-Beom Rhee대상 : Javascript를 언어로 처음 접하는 개발자
범위 : Javascript의 흐름, 문맥(Context)를 모르면 이해할 수 없는 Dynamic typing(동적 데이터 타입), 멘붕을 마음껏 선사할 헷갈리는 연산자
Personal Interconnect AUdio - piAu manualCirculus사람과 사람을 잇는 소셜오디오, 파이오의 기본 메뉴얼입니다.
기본적인 리모콘 사용 방법에 대해 다루고 있습니다. 사용중 문의는 cafe.circul.us 에 남겨주시면 신속하게 답변드릴 수 있도록 하겠습니다.
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍Young-Beom RheeJavascript 객체지향, 함수형 프로그래밍에 대해서 알아봅니다.
prototype을 이용하여 상속을 구현하는 방법, 그리고 Closure와 Function을 이용한 강력한 함수형(Functional) 프로그래밍
C++ Concurrency in Action 9-2 Interrupting threadsSeok-joon YunC++ Korea
C++ Concurrency in Action
Study
Chapter 09 Advanced thread management
9.2 Interrupting threads
골때리는 자바스크립트 발표자료욱진 양Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
Javascript introduction, dynamic data type, operatorYoung-Beom Rhee대상 : Javascript를 언어로 처음 접하는 개발자
범위 : Javascript의 흐름, 문맥(Context)를 모르면 이해할 수 없는 Dynamic typing(동적 데이터 타입), 멘붕을 마음껏 선사할 헷갈리는 연산자
Personal Interconnect AUdio - piAu manualCirculus사람과 사람을 잇는 소셜오디오, 파이오의 기본 메뉴얼입니다.
기본적인 리모콘 사용 방법에 대해 다루고 있습니다. 사용중 문의는 cafe.circul.us 에 남겨주시면 신속하게 답변드릴 수 있도록 하겠습니다.
[WEB UI BASIC] JavaScript 1탄Jae Woo WooThis document provides an introduction to JavaScript and its uses. It explains that JavaScript is an interpreted language like Python, and is used to manipulate HTML documents and respond to user interactions by changing elements and styles on web pages. The DOM is introduced as the tree structure representation of HTML, and JavaScript is said to be able to query and modify this tree. Common JavaScript tasks are then listed, such as handling events, validating and updating client-side data, and making requests to servers.
Start IoT with JavaScript - 2.연산자Park Jonggun모바일 부터 하드웨어까지 가능하게 하는 가장 강력한 언어,
GITHUB 에서 가장 많은 프로젝트,
해커톤에서 가장 많이 사용되는 언어,
오바마 대통령도 배웠던 언어, 바로 자바스크립트입니다.
023여러갶짶연산자Changwon National University이번 강의에서는 파이썬의 여러가지 연산자에 대해 알아보겠습니다.
파이썬의 연산자는 산술연산자, 대입연산자, 논리연산자, 비교연산자, 멤버 연산자(포함 연산자), 비트단위 연산자, identity 연산자등 다양한 연산자를 제공합니다.
본 강의에서는 다양한 예제를 통해서 여러가지 연산자의 사용방법을 살펴보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programming
라즈베리파이와자바스크립트로만드는 IoTCirculus자바스크립트로 라즈베리파이 제어 및 리모콘을 만들어 IoT를 실습하는 방법을 다루고 있습니다. 관련 목차는 다음과 같습니다.
0. 시작하기 앞서 (4p)
1. 파이를 동작시켜 보자 - 초기설정 (17p)
2. 파이의 운영체제 - Linux 속성실습 (33p)
3. JavaScript로 하드웨어 제어를 - Node.JS (57p)
4. 거리 측정하고 정보 표시 하기 - GPIO (81p)
5. 스마트폰으로 리모콘을 - jQueryMobile (119p)
6. 인터넷으로 음악과 날씨를 - OpenAPI & RSS (137p)
7. 오디오 소프트웨어 개발하기 - (153p)
8. 외관을 생각대로 만들기 - 3D 프린팅 (189p)
9. 언제 어디서나 동작하는 IoT- Circulus (192p)
10. 마무리(256p)
JavaScript Everywhere from Mobile and RobotCirculusBuild own idea using javascript from mobile and robot!
서큘러스 팀은 IoT 교육/개발 플랫폼과 데이터 수집 및 분석 시스템, 그리고 모바일과 봇 형 제품군까지 모든것을 JavaScript 하나만으로 제작및 통합하였습니다. 하나의 언어로 통합하여 얻게 되는 장점에 대해 살펴봅니다.
piBo- Personal Intelligent roBOtCirculusPersonal intelligent robot as friend & assistant. Also pibo can support programming (Blockly, JavaScript) & making education. We will launch end of this year.
웨어러블 디바이스를 활용한 개인용 지능형 로봇CirculusKICT 디바이스랩의 파워유저 활동의 종료보고회 자료입니다.
개인용 지능형 로봇 piBo 의 개선과 더불어, 웨어러블 디바이스(Gear S2) 를 통해 로봇을 제어하는 내용이 추가되었습니다.
아울러, Circulus 에서 기존엔 모바일 부터 하드웨어까지 클라우드상에서 개발할 수 있었던 상황에서, 이제는 웨어러블도 역시 JavaScript 만으로 개발 가능하게 업그레이드 되었습니다.
라즈베리파이 Circulus API 가이드CirculusIoT EDU/MAKE 플랫폼인 Circulus 를 이용하여,
라즈베리파이를 개발할 때 제공되는 API 가이드라인입니다.
이 가이드에서는
LED, 초음파센서, 7세그먼트, 온습도 센서, 조도 센서, SW/HW PWM, TTS, 카메라, 사운드인식, 위치파악, 모니터링, 광학문자인식(OCR) 등에 대해 단 몇줄의 자바스크립트만으로 제어하는 예제를 다루고 있습니다. 앞으로도 지속적으로 추가될 예정입니다.
라즈베리파이와 자바스크립트로 IoT 시작하기Circulus라즈베리파이를 이용하여 IoT를 시작해볼까요?
라즈베리파이와 각종 센서를 연결하고, 자바스크립트를 이용해 이를 제어할 수 있습니다. 스마트폰으로 간단한 리모컨을 만들어 외부에 있어도 제어할 수 있습니다.
자신만의 IoT 제품을 만들 수 있는 기초를 배울 수 있습니다.
3. 연산자
연산자는 미리 정의된 처리를 행하는 기호 임. 처리되는 것은 피 연산자라 함.
산술 연산자는 표준적인 사칙연산과 수치에 관한 연산을 수행
연산자 개요 사용 예 결과
+ 숫자의 덧셈 9+2 11
- 숫자의 뺄셈 9-2 7
* 숫자의 곱셈 9*2 18
/ 숫자의 나눗셈 9/2 4
% 숫자의 나머지 연산 9%2 1
++ 전치/후치 덧셈 x=3 일 때, x++ or ++x 3, 4
-- 전치/후치 뺄셈 x=3 일 때, x-- or --x 3, 2
X = =A + BOperator (연산자) Operand(피 연산자)
4. 연산자 실습
데이터 형에 따라 연산 결과가 달라지며, 소수점 연산은 오차 발생 가능성
증가/감소 연산자의 경우 위치에 따라 의도하는 결과가 달라짐
// Operator
console.log(100 + 1); // 101
console.log(100 - 1); // 99
console.log(100 * 5); // 500
console.log(100 / 5); // 20
console.log(100 % 3); // 1
console.log('100' + 1); // 1001
var today = new Date();
console.log(today);
console.log(100 + today);
// Post-Increment
var a = 5;
var b = a++;
console.log(a); // 5
console.log(b); // 6
// Pre-Increment
var c = 5;
var d = ++c;
console.log(c); // 6
console.log(d); // 6
// Float Number
console.log(0.2 * 3);
// 0.6000000000000001
console.log(0.2 * 3 === 0.6);
// false
console.log((0.2 * 10) * 3 / 10);
// 0.6
console.log((0.2 * 10) * 3 ===
0.6 * 10);
//true
5. 대입 연산자 (1/1)
지정된 변수에 특정 값을 대입하는 연산자로, = 이 대표 적임.
산술 연산자나 비트 연산자와 결합된 복합 대입 연산자도 포함
연산자 개요 사용 예 결과
= 변수 등에 값을 대입 함 x = 1
+= 좌변 값에 우변 값을 더한 값을 대입 함 x = 3; x += 2 5
-= 좌변 값에 우변 값을 뺀 값을 대입 함 x = 3; x -= 2 1
*= 좌변 값에 우변 값을 곱한 값을 대입 함 x = 3; x *= 2 6
/= 좌변 값에 우변 갑을 나눈 값을 대입 함 x = 3; x %= 2 1.5
%= 좌변 값에 우변 값을 나눈 나머지 값을 대입 함 x = 3; x /= 2 1
&= 좌변 값에 우변 값을 비트 AND 연산한 값을 대입 함 x = 10; x &= 5 0
|= 좌변 값에 우변 값을 비트 OR 연산한 값을 대입 함 x = 10; x &= 5 15
^= 좌변 값에 우변 값을 비트 XOR 연산한 값을 대입 함 x = 10; x ^= 5 15
<<= 좌변 값에 우변 값만큼 좌측 SHIFT 한 결과를 대입 함 x = 10; x <<= 2 20
>>= 좌변 값에 우변 값만큼 우측 SHIFT 한 결과를 대입 함 x = 10; x >>= 1 5
>>>= 좌변 값에 우변 값 만큼 우측 SHIFT 한 결과를 대입 (Unsigned) x = 10; x >>>= 2 2
6. 대입 연산자 (1/2)
기본 대입 연산은 값 자체가 전달되나, 참조 형은 주소 값이 전달 됨
참조 형은 따라서 원본의 실제 값이 변경 시 참조된 값에도 영향을 줌
기본형 대입 연산자
기본형은 값이 직접 보관됨, a
의 값을 b로 전달할 경우 그
값이 복사되어, 영향이 없음
참조형 대입 연산자
참조형의 경우 값 자체가 보관되는 것이 아닌, 값을 보관하
는 주소가 변수에 보관되므로, array1 변경 내용이 array2 에
도 영향을 미침
주소 값
100
200 [0, 1, 2] -> [5, 1, 2]
300
1
기본형 참조형
1
1
변수x
변수yy=x
1
1
변수 array1
변수 array2
array2 = array1
참조 주소 복사
값에 영향을 미치지 않음 서로 동일한 주소를 보고 있으므로, 결과가 영향을 줌
7. 대입 연산자 실습
일반 값을 대입하는 경우 기본형(Value), 배열과 같은 객체를 전달하는 경우
참조형 (Reference) 으로 처리가 됨
// = and +
var a = 0;
var b = 0;
a = a + 1;
b += 1;
console.log(a); // 1
console.log(b); // 1
// value
var x = 1;
var y = x;
x = 2;
console.log(x); // 2
console.log(y); // 1
// reference
var arr1 = [0, 1, 2];
var arr2 = arr1;
arr1[0] = 10;
console.log(arr1); // 10, 1, 2
console.log(arr2); // 10, 1, 2
8. 비교 연산자 (1/2)
좌/우변의 값을 비교하여 결과를 반환.
이항 연산은 값만, 삼항은 데이터 형도 비교하므로, 오 동작 방지가 가능
연산자 개요 사용 예 결과
== 좌변과 우변의 값이 같을 경우 true 3 == 3 true
!= != 좌변과 우변의 값이 같지 않을 경우, true 3 != 3 false
< 좌변이 우변보다 작은 경우, true 3 < 7 true
<= 좌변이 우변보다 작거나 같을 경우, true 3 <= 3 true
> 좌변이 우변보다 클 경우, true 3 > 7 false
>= 좌변이 우벼보다 크거나 같을 경우, true 3 >= 3 true
=== 좌변과 우변의 값이 같고 데이터 형도 같은 경우, true 3 === 3 true
!== 좌변과 우변 값이 같지 않거나 데이터 형이 다른 경우, true 3 !== 3 false
?: 조건 식? 식1:식2, true 인 경우 식1을 false 인 경우 식2를 수행 <x==1) ? 1:0 1 또는 0
9. 비교 연산자 (2/2)
등가 연산자는 데이터 형이 다르더라도 최대한 값이 같게 시도하여 반환.
참조형의 경우는 값을 비교하는 것이 아닌 주소를 비교 함.
비교 데이터 형 평가 기준
동일
문자열/숫자/논리형 단순히 쌍방의 값이 동일한지를 판단
배열/객체 참조 장소가 동일한 지를 판단
null/undefined 쌍방이 모두 null/undefined 또는 null과 undefined 의 비교는 모두 true
틀림
문자열/숫자/논리형 문자열/논리형을 수치로 변환 후에 판단
객체 기본형으로 변환 후에 판단
주소 값
100
200 [1, 2, 6, 8, 10]
300
400
500 [1, 2, 6, 8, 10]
600
10
기본형 참조형
10
변수x
숫자형:num2
==
배열형:arr1
배열형:arr2
서로가 별개로
영향을 미치지
않음
10
10
숫자형:num1
!=
10. 비교 연산자 실습
이항 연산자는 어떻게든 값이 같다고 판단하므로, 개발자가 데이터 형을 의식
하지 않아도 되나, 이로 인해 의도하지 않는 결과를 가져올 수 있음
// value ==, ===
console.log(1 == true); // true
console.log(1 == '1'); // true
console.log('0x10' == 16); // true
console.log(1 === true); // false
console.log(1 === '1'); // false
console.log('0x10' === 16); // false
// reference
var arr1 = ['Banana', 'Apple', 'Orange'];
var arr2 = ['Banana', 'Apple', 'Orange'];
console.log(arr1 == arr2); // false
// ?: operator
var x = 90;
console.log((x > 80) ? 'Success' : 'fail'); //Success
11. 논리 연산자 (1/2)
논리 연산자는 복수의 식을 결합하여, 그 결과를 true/false 로 반환
비교 연산자와 조합하여 사용하며, 복잡한 조건식을 표현할 수도 있음
연산자 개요 사용 예 결과
&& 좌우식이 모두 true 인 경우 true 100 == 100 && 1000 == 1000 true
|| 좌우시의 어느 쪽이든 true 인 경우 true 100 == 100 || 1000 = 500 true
! 식이 false 인 경우, true !(10 > 100) true
좌측 식 우측 식 && ||
true true true true
true false false true
false True false true
false false false false
&& || !
12. 논리 연산자 (2/2)
논리 연산자의 평가 결과는 좌/우측 식의 논리 값에 따라 달라짐
논리 AND/OR 연산자만 사용하는 경우, 우측 식은 판정되지 않을 수 있음
Logical &&
Logical ||
false 라면
x == 1 && alert(‘Hello 2’)
x == 1 || alert(‘Hello 3’)
true/false에 관계없이
true 라면 true/false에 관계없이
조건식 전체가 반드시 false
조건식 전체가 반드시 true
평가가 불 필요
평가가 불 필요
우측 식은 숏컷 (무시)
우측 식은 숏컷 (무시)
13. 논리 연산자 실습
복수의 조건식과 논리 값을 논리적으로 결합하여 결과를 true/false 로 반환
비교 연산자와 조합하여 복잡한 조건식을 만들어 냄
// == Logical Compare
var x = 1;
var y = 2;
var z = null;
console.log(x == 1 && y == 1); // false
console.log(x == 1 || y == 1); // true
// Short Curcuit
x == 1 && alert('Hello 1'); // popup
x == 2 && alert('Hello 2'); // pass
y == 2 || alert('Hello 3'); // pass
14. 기타 연산자
비트 연산은 정수 값을 2로 나타냈을 때, 각 bit 단위로 논리 계산을 수행
콤마와 delete, new, typeof instanceof 등 이용 가능한 연산자가 있음
연산자 개요 사용 예
& 좌우 값 모두에 세트된 비트 (AND 연산) 10&5 -> 1010&0101 -> 0000 -> 0
| 좌우 값 중 어느 쪽이든 세트된 비트 (OR 연산) 10|5 -> 1010|0101 -> 1111 -> 15
^
좌우 값중 어느쪽이든 세트 되었거나 양쪽 모두 세
트되지 않은 비트 (XOR 연산)
10^5 -> 1010^0101 -> 1111 -> 15
~ 비트를 반전 (NOT 연산) ~10 -> ~1010 -> 0101 -> -11
<< 비트를 좌측으루 SHIFT 10<<1 -> 1010<<1 -> 10100 -> 20
>> 비트를 우측으로 SHIFT 10>>1 -> 1010>>1 -> 0101 -> 5
>>> 비트를 우측으로 SHIFT 하되, 좌측을 0 으로 채움 10>>>2 -> 1010>>>2 -> 0010 -> 2
연산자 개요 연산자 개요
, (콤마) 좌우의 식을 계속하여 실행 new 새로운 인스턴스를 생성
delete 객체의 프로퍼티나 배열의 요소를 삭제 typeof 오퍼랜드의 데이터형을 취득
instanceof 객체가 지정된 클래스의 인스턴스인지를 판정 void 미정의 값을 되돌림
15. 기타 연산자 실습
Delete 는 지정된 변수, 배열, 객체를 메모리에서 삭제함.
배열 삭제 시 해당 요소만 삭제, 프로퍼티의 경우 참조 객체는 삭제되지 않음
// delete
var arr =
['Banana','Tomato','Orange'];
delete arr[0];
console.log(arr); // [,
'Tomato','Orange']
var obj = { x : 10, y : 20 };
delete obj.x;
console.log(obj); // { y : 20}
var num = 10; // Can't delete
delete num;
console.log(num); // 10
// typeof
var num = 1;
var str = 'Hello';
var bool = true
console.log(typeof num);// number
console.log(typeof str);// string
console.log(typeof bool);
// boolean
// instanceof
console.log(typeof obj);
console.log(obj instanceof
Object);
console.log(obj instanceof Array);
console.log(typeof arr);
console.log(arr instanceof
Object);
console.log(arr instanceof Array);
16. 결합 순서 / 우선 순위 (1/2)
연산자를 좌->우, 우->좌 등, 어떤 방향으로 결합할지 정하는 규칙
연산자 우선순위가 동일할 경우, 결합 순서를 가지고 어느 쪽 부터 인지 결정
좌우 데이터 형 데이터 형 기준
좌 -> 우
산술 연산자 단순히 쌍방의 값이 동일한지 비교
비교 연산자 참조 장소가 동일한지 판단
논리 연산자 쌍방 모두 null/undefined 또는 null과 undefined의 비교는 모두 true
비트 연산자 <<. >>, >>>, &, ^, |
그 외 ., [], (), ,, instanceof, in
우 -> 좌
산술 연산자 ++, --
대입 연산자 =, +=, -=, *=, /=, %=, &=, ^=, |=
논리 연산자 !
비트 연산자 ~
조건 연산자 ?:
그 외 -(부호반전), +(무연산), delete, typeof, void
17. 결합 순서 / 우선 순위 (2/2)
수학에서 *, / 는 +, - 보다 우선 처리 됨
복수 연산자가 포함된 경우 우선 순위가 높은 순으로 연산 수행
[ ]1 ( )
++2 -- - ~ !
*3 / %
+4 -
<<5 >>
<6 <= >= >
==7 != ===
>>>
!==
&8
^9
|10
&&11
||12
?:13
14 = += -=
15 ,
18. 결합 순서 / 우선 순위 실습
각각의 연산자는 우선 순위를 가지고 있음
우선 순위 판별 시 순위가 동일하면, 결합 순서로 연산 순서를 판별
var a = 3 * 5 + 2 * 2;
var b = (3 * 5) + (2 * 2);
console.log(a); // 19
console.log(b); // 19
var c = 2 * 5 - 3;
var d = 2 * (5 - 3);
console.log(c); // 7
console.log(d); // 4
var x = c *= 3;
var y = ( c *= 3);
console.log(x); // 21
console.log(y); // 63
19. W www.circul.us G group.circul.us
S social.circul.us C cafe.circul.us
CONTACT.US circulus@circul.us
THINKER TO MAKER
ANY
QUESTION?
x