검색결과 리스트
학습정리/by aking에 해당되는 글 5건
- 2013.07.21 사이트정리
- 2013.07.19 안드로이드 NFC
- 2013.07.09 Java Script
- 2013.06.25 HTML & CSS
- 2013.06.24 (수정중) GIT Server 구축 및 Log4J 설정
안드로이드 인트로 화면
안드로이드 NFC (0) | 2013.07.19 |
---|---|
Java Script (0) | 2013.07.09 |
HTML & CSS (0) | 2013.06.25 |
(수정중) GIT Server 구축 및 Log4J 설정 (0) | 2013.06.24 |
onResume()
- 홈버튼을 이용해 나가던지 Back버튼으로 나가던지 onDestory()함수를 사용하지 않는다면,
다시 앱을 실행되면onCreate()함수가 실행이 되지 않고 onResume()가 실행된다.
onPause()
- 인텐트 전달을 중지시킨다.
NDEF
- NDEF (NFC Data Exchange Format)는 NFC에서 데이터를 교환하기 위한 포맷.
- NFC 디바이스가 NFC 태그로부터 데이터를 가져올 때, 그리고 NFC 디바이스 사이에 P2P로 데이터를 전송할 때 이 포맷을 사용
NDEF 메시지
- 기본적인 메시지 단위 하나를 'NDEF 메시지 (NDEF Message)'라고 부른다.
- 하나의 NDEF 메시지는 여러 개의 'NDEF 레코드 (NDEF Record)'로 구성되어 있다.
NDEF 레코드
- 하나의 NDEF 레코드는 하나의 데이터를 담는데, 이 데이터를 '페이로드 (payload)' 라고 한다.
- 결국 이 페이로드를 전달하기 위해서는 NDEF 레코드가 필요하다.
- 페이로드 데이터는 그냥 byte 덩어리이기 때문에 이것만 보고는 이 데이터가 그냥 텍스트인지, URL인지,
이미지인지, 동영상인지 알 수가 없다. 그래서 '페이로드 타입'이 필요하다.
- 인터넷을 예로 들면, 인터넷에 있는 수많은 콘텐츠들은 모두 MIME타입이라고 하는 타입을 가지고 있다.
- PNG 이미지라면 'image/png', mpeg 동영상이라면 'video/mpeg', 그냥 텍스트라면 'text/plain' ... 이와 마찬가지로 페이로드도 타입을 갖는다.
- 하나의 메시지에 여러 개의 레코드가 존재하므로, 어떤 레코드가 다른 레코드를 참조하는 경우가 생기는데
- 이 경우 레코드에 대한 식별자가 필요하다. 이것을 페이로드 'ID'라고 한다. 대부분의 경우 이 ID가 필요없는데
그래서 ID는 생략될 수 있다.
- 이렇게 '페이로드', '타입', 'ID' 세 가지가 NDEF 레코드의 주요 구성 요소가 된다. 실제로는 각 구성요소의 길이와 '레코드 헤더'가 추가되기 때문이다.
TNF 와 Type
- MIME 타입 이외의 다른 타입들도 포함하고자 해서, 'Type' 외에 이 Type이 MIME Type 형식으로 정의된 Type인지, 아니면 다른 형식의 Type인지를 구분할 필요가 있을 것인데, 이것이 TNF (Type Name Format)이다.
즉, 'Type이 어떤 형식으로 되어 있는가'를 나타낸다.
사이트정리 (0) | 2013.07.21 |
---|---|
Java Script (0) | 2013.07.09 |
HTML & CSS (0) | 2013.06.25 |
(수정중) GIT Server 구축 및 Log4J 설정 (0) | 2013.06.24 |
JAVA SCRIPT
-> 자바 스크립트 타입으로 지정
- 브라우저에게 자바스크립트를 엄격하게 검사할 것을 요구.
- 최신의 브라우저에 추가된 명령어로, "" 넣은 이유는 이전 브라우저에서
오류가 발생할 수 있기 때문에 미연의 방지차 정의 된 것이다.
- 변수는 페이지 단위로 관리된다.
- 페이지와 페이지 사이에는 절대 공유할 수 없다.
- 글로벌 변수 => 그 페이지 내에서 어디서든 접근할 수 있는 변수
변수와 자료형
- 변수 선언: 데이터형을 선언하지 않는다.
var a; // 변수에는 어떤 값을 넣을 수 있는가? - 마음대로.
a = 10; // number 데이터형
a = "홍"; // string 데이터형
a = true; // boolean 데이터형
a = new Object(); // Object 데이터형
a = function() {}; // function 데이터형
- 출력: 브라우저의 콘솔 창으로 출력할 수 있다.
console.log(10); // 개발하는 동안 확인용으로 사용한다.
- 변수의 데이터형의 결정되는 것.
- 값을 할당한 후 결정 된다.
var b; // 바인딩 안되어 있는 상태: undefined
// 해당 변수에 값이 할당되지 않은 상태. 즉, 데이터형이 결정되어 있지 않은 상태.
console.log(b);
- 변수의 데이터형 알아내기: 바인딩 된 후 변수의 데이터형 확인 typeof()
b = 10;
console.log(typeof(b));
b = 10.5;
console.log(typeof(b));
- 동적 바인딩(dynamic binding <> static binding)
-> 예시) Java, C, C++, C#
- 변수의 데이터 형은 고정되어 있지 않다. 값을 할당하는 순간 결정되기 때문이다.
- 값을 할당할 때 데이터형이 결정되는 것.
- 가능한 변수의 용도를 결정했으면 그대로 사용.
자료형 검사: typeof()
자료형: null, undefined
b = "홍길동";
console.log(typeof(b));
b = true;
console.log(typeof(b));
b = null;
console.log(typeof(b));
b = new Object();
console.log(typeof(b));
b = function() {};
console.log(typeof(b));
- 이전 자바스크립트 명세에서는 var을 선언하지 않고 만든 변수는 글로벌 변수로 설정.
- 현재는 반드시 var을 붙여야 한다.
- 브라우저에게 자바스크립트 문법을 엄격하게 검사할 것을 요구. 'use strict";
- 오류가 아니다. 기존 변수 덮어쓴다.
var c = 10;
console.log(typeof(c));
var c = "홍길동";
console.log(c);
window 객체: 브라우저에 미리 정의된 객체
-> 브라우저의 정보를 다루는 객체
console.log(window.c);
var d = 20;
window.e = 30;
console.log(e); // e앞에 window 객체 레퍼런스가 생략된 것.
console.log(window.e);
기본 라이브러리
prompt(), confirm(), alert()
prompt()
- prompt 리턴값은 string이다.
var r = prompt("당신의 나이는?");
console.log(r);
var r2 = confirm("당신은 비트 수강생입니까?", "제목입니까?");
console.log(r);
alert("오호라... 단순 메시지 출력할 때 사용");
배열: [ , , , ]
var names = ["홍길동", "임꺽정", "유관순", 20, function(){}, true];
for(var i = 0; i < names.lenght; i++){
console.log(names[0]);
}
==와 ===의 차이
var x1 = 20;
var x2 = "20";
if(x1 == x2){ // 암시적 형변환이 발생함.
console.log("x1 == x2");
}
암시적 형변환 없이 정확하게 데이터형과 값이 일칳나는지 확인하고 싶다면?
if(x1 === x2){
console.log("x1 === x2");
} else {
console.log("x1! == x2");
}
console.log('52 + 273'); // 1번
console.log(52 + 273); // 2번
console.log(parseInt('52') + 273); // 3번: parseInt로 썼을 경우 데이터형으로 변환한다.
console.log(52 + '273'); // 4번
console.log('52' + '273'); // 5번
조건 연산자
var a = (20 > 30) ? "와우 정말?! ㅎㅎ" : "어후,,,";
console.log(a);
||와 &&의 다른 활용
var x = 20;
var b = true || (x = 30);
console.log(x, b);
var b = false || (x = 30);
console.log(x, b);
var age = prompt("니 나이 몇이냐?", "18");
// (age > 18) || console.log("미성년자입니다.");
(age < 19) && console.log("미성년자입니다.");
사이트정리 (0) | 2013.07.21 |
---|---|
안드로이드 NFC (0) | 2013.07.19 |
HTML & CSS (0) | 2013.06.25 |
(수정중) GIT Server 구축 및 Log4J 설정 (0) | 2013.06.24 |
CSS 시작하기
HTML의 본연의 목적인 구조화된 문서로써 제 역할을 수행하기 위해 디자인적인 요소는 HTML과 완전히 분리시켜
‘구조화된 HTML을 만들어보자‘ 라는 것이 주된 목적이었다.
거기에 따라 HTML에서 디자인에 관련된 요소들은 전부 사용을 지양할 것을 권고하고 있다.
구조화된 HTML?
그럼 구조화된 HTML이란 무엇인가? 구조화된 HTML은 HTML태그 본연의 용도에 맞게 사용한다는 것으로
예를 들면 최상위 제목을 뜻하는 <h1> 태그는 문서의 제목 수준으로 쓰이며, 본문 내용은 <p> 태그로 사용한다.
이렇게 역할을 나뉘게 되면 디자인적 요소가 대부분 배제되기 때문에 HTML을 알아보기 훨씬 쉽다.
분담 역할
이렇게 역할을 분담하게 되면 디자인에 필요한 부분은 CSS가 전담하기 때문에
웹 디자이너와 웹 개발자간의 협업이 훨씬 용이해진다.
게다가 CSS는 별도의 파일 형태로 다른 문서에서도 동일한 CSS를 호출할 수 있기 때문에
트래픽을 줄이는 효과도 있다.
좀 더 Stylish한 것을 원하나요?
이러한 문제들 때문에 등장한 것이 바로 css (Cascading Style Sheets)입니다.
css는 세밀하게 디자인할 수 있는 명령어 집단이라고 생각하시면 됩니다.
css는 실제로 HTML보다 스타일 정보를 명시하는데 있어 훨씬 잘 들어맞는다.
약간의 css를 사용하는 것만으로도, HTML의 스타일에 꽤 큰 효과를 줄 수 있습니다.
또한 여러 페이지들의 스타일을 한 번에 처리하는데 있어서도 css가 훨씬 더 나은 방법이라는 것을 알게 될 것이다.
HTML 구조
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8” />
<title>브라우저 타이틀바 제목</title>
<style type=“text/css”>
/* 태그명으로 찾기 */
h1 {
text-align: center; /* 글자 가운데 정렬 */
color: red; /* 글자 빨간색 */
}
/* 아이디로 찾기 */
#p1 {
border-style: dotted; /* 테두리선 스타일을 도트로 설정 */
border-width: 5px; /* 테두리선 상하 좌우 5px로 설정 */
/* 상 / 우 / 하 / 좌 / 로 시계방향으로 설정 */
border-color: blue; /* 테두리선 색상을 블루로 설정 */
}
/* 클래스(분류)로 찾기 */
.desc {
background-color: yellow; /* 배경색상을 노랑색으로 설정 */
}
/* 동일한 태그와 해당 아이디로 찾기 */
p#intro {
color: rgb(0,255,0); /* 글자색을 RGB로 설정 */
font-family: 궁서; /* 글씨체 궁서체로 설정 */
}
</style>
</head>
<body>
<h1 id=“header1” class=“desc”>이것은 태그명과 클래스로 만들어놓은 style 적용됨.</h1>
<p id=“intro”>이 문장은 p태그와 id 값이 intro이 같아야 스타일 설정이 됩니다.</p>
</body>
</html>
<BONUS> 디자인하는데 필요한 색상 RGB!
R | G | B | |||||||||||||||||||||
0 | 0 | f | f | 0 | 0 | ||||||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
<- 1byte -> | <- 1byte -> | <- 1byte -> | |||||||||||||||||||||
0 | 255 | 0 |
시맨틱 웹이이란?
들어가기 앞서 시맨틱 웹과 현재 웹의 차이를 알아보자.
시맨틱 웹을 좀 더 알아보자.
- a.k.a. aking -
사이트정리 (0) | 2013.07.21 |
---|---|
안드로이드 NFC (0) | 2013.07.19 |
Java Script (0) | 2013.07.09 |
(수정중) GIT Server 구축 및 Log4J 설정 (0) | 2013.06.24 |
금일 배운 학습 내용
Git Read-Only -> URI 가져오기
Eclipse -> Git Repositories -> Clone a Git repository
Next -> Next -> Finish
SVN Repositories에서 하는 것처럼 별다른 것 없이 URI에 Git Source 주소를 적어 등록시킨다.
등록이 되었으면 spring-petclinic -> Working Directory -> Import Projects
Import 시키면 Package Explorer에 등록된 것을 확인 할 수 있다.
Services.xml에 보관해둔 DB정보를 분리 작업을 한다.
Step1. data-access.properties
Import해둔 spring-petclinic -> src -> main -> resources -> spring ->
data-access.properties 파일을 작업 할 프로젝트 resources에 가져와서
DB정보를 data-access.properties 파일에다 저장해준다.
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.username=scott
jdbc.password=tiger
Step2. Services.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
위 DB정보를 EL(Expression Language)로 적어준다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
위 DB정보를 data-access.properties 파일로 생성해 저장한다.
context:property-placeholder location="classpath:data-access.properties" />
Spring framework 2.5 미만에서는 위 코드를 사용하지 못하고, 아래 코드를 사용하게 된다.
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:data-access.properties" />
</bean>
Pom.xml -> Dependencies 에서 log4j 검색 후 1.2.14 버전을 추가한다.
WEB-INF 폴더안에 log4j.properties (File) 생성하고 작성한다.
# DEBUG < INFO < WARN < ERROR < FATAL
log4j.rootCategory=DEBUG, stdout, dailyfile
# setting stdout logger
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.ImmediateFlush=true
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout.ConversionPattern=[%5p] [%t] (%F) - %m%n
# setting dailyfile logger
log4j.appender.dailyfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=[%5p] [%t] (%F) - %m%n
log4j.appender.dailyfile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyfile.threshold=DEBUG
#시스템 properties에 집어넣을 경로 ${webapp.root} 설정
#1. context-param web.xml에 집어 넣기.
#-> context-param 정의
# <context-param>
# <param-name>webAppRootKey</param-name>
# <param-value>webapp.root</param-value>
# </context-param>
#2. log4jConfigListener 또는 WebAppRootListener에 추가하기.
log4j.appender.dailyfile.File=${webapp.root}/WEB-INF/log/web03.log
#log4j.logger.org.springframework=DEBUG
#log4j.logger.org.apache=DEBUG
#log4j.logger.org.mybatis=DEBUG
#log4j.logger.java.sql=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.bit.java39.dao=TRACE
[%p] |
로그 기록 범위 |
[%t] |
스레드 |
(%F) |
현 파일명 |
%m |
메시지를 출력 |
%n |
다음라인으로 이동 |
기본 디폴트는 DEBUG이다.
예시) DEBUG로 지정하면 그 아래 모든 것이 출력된다.
logger.debug("오호라...debug...");
logger.info("오호라...info...");
logger.warn("오호라...warn...");
logger.fatal("오호라...fatal...");
log4j.appender.dailyfile.File=${webapp.root}/web03/WEB-INF/log/web03.log
- 시스템루트를 지정하지 않고 동적으로 받아와 해당 루트에 로그파일을 생성하기 위함.
사이트정리 (0) | 2013.07.21 |
---|---|
안드로이드 NFC (0) | 2013.07.19 |
Java Script (0) | 2013.07.09 |
HTML & CSS (0) | 2013.06.25 |
RECENT COMMENT