T. 김동식
표현언어에서 같은 속성에 대한 우선순위
page>request>session>application
hashmap 출력하기
<jsp:useBean id="hash" class="java.util.HashMap"></jsp:useBean>
<% hash.put("a", "이것을 hash맵 테스트입니다."); %>
<h1>HashMap test: ${hash.a}</h1>
JSTL jsp standard tag library
c 코어 : 변수 지원, 흐름 제어, 반복문 처리, URL 처리
x xml : XML 코어, 흐름 제어, XML 변환
fn 함수 : 컬렉션 처리, 문자열 처리
sql 데이터베이스 : SQL
fmt 국제화 : 지역, 메시지 형식, 숫자 및 날짜 형식
c:set 변수설정
c:remove 변수제거
c:if(if)
c:choose - c:when(elseif) c:otherwise(else)
c:forEach(for문) - var, items, begin, end, step, varStatus
https://tomcat.apache.org/download-taglibs.cgi
<c:set var="str" value="박상희" scope="page"></c:set>
<c:remove var="str"></c:remove>
<c:set var="num" value="5" scope="page"></c:set>
<c:if test="${num>1}"><p>num은 1보다 크다</p></c:if>
<c:set var="num" value="5" scope="page"></c:set>
<c:choose>
<c:when test="${num<10}"><p>num은 10보다 작다</p></c:when>
<c:otherwise>num은 10보다 크다</c:otherwise>
</c:choose
<%
request.setCharacterEncoding("utf-8");
List list = new ArrayList();
list.add("박");
list.add("상");
list.add("희");
%>
<c:set var="list" value="<%=list %>"></c:set>
<c:forEach var="i" begin="1" end="3">
<p>${i+1}번째 출력) list는 ${list}이다.</p>
</c:forEach>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Gallery
android:id="@+id/gallery1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spacing="5dp" />
<ImageView
android:id="@+id/ivPoster"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp" />
</LinearLayout>
package com.himedia.project4_2.hb_ch11.slide;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import com.himedia.project4_2.R;
@SuppressWarnings("deprecation")
public class slide extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hb_ch11_slide);
setTitle("갤러리 영화 포스터");
//BaseAdapter를 extends한 함수 MyGalleryAdapter 객체를 만들어 Gallery에 set한다.
MyGalleryAdapter galAdapter = new MyGalleryAdapter(this);
Gallery gallery = (Gallery) findViewById(R.id.gallery1);
gallery.setAdapter(galAdapter);
}
public class MyGalleryAdapter extends BaseAdapter {
Context context;
Integer[] posterID = { R.drawable.mov11, R.drawable.mov12,
R.drawable.mov13, R.drawable.mov14, R.drawable.mov15,
R.drawable.mov16, R.drawable.mov17, R.drawable.mov18,
R.drawable.mov19, R.drawable.mov20 };
public MyGalleryAdapter(Context c) {
context = c;
}
public int getCount() {
return posterID.length;
}
public Object getItem(int arg0) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageview = new ImageView(context);
imageview.setLayoutParams(new Gallery.LayoutParams(200, 300));
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageview.setPadding(5, 5, 5, 5);
imageview.setImageResource(posterID[position]);
final int pos = position;
//imageview를 클릭하면
imageview.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
ImageView ivPoster = (ImageView) findViewById(R.id.ivPoster);
ivPoster.setScaleType(ImageView.ScaleType.FIT_CENTER);
ivPoster.setImageResource(posterID[pos]);//ImageView에 리소스설정
return false;
}
});
return imageview;
}
}
}
spinner(dropbox)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
package com.himedia.project4_2.hb_ch11.spinner;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import com.himedia.project4_2.R;
public class spinner extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hb_ch11_spinner);
setTitle("스피너 테스트");
final String[] movie = { "아바타", "힘을내요 미스터리", "포드vs페라리","쥬만지", "대부",
"국가대표", "토이스토리3", "마당을 나온 암탉", "죽은 시인의 사회", "서유기" };
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, movie);
spinner.setAdapter(adapter);
}
}
인공지능
WISDOM 지혜(예측, 인사이트)
KNOWLEDGE 지식(이해)
IMFORMATION 가공
DATA 객관적 사식, 수, 문자
AI ⊃ 머신러닝(기계학습) ⊃ 딥러닝
약인공지능
강인공지능
신경망 neural network
통계 (모수통계학 & 비모수통계학)
- 기초통계: 기술통계, 추론통계, 상관/인과(원인과 결과)
- 고급통계: 모수로 추정하는 것이 아닌 상태를 봄
지도학습&비지도학습: 답의 유무에 따라 우선 데이터분류, 답(data), 관측치(label)
데이터마이닝
데이터를 정제해 의미있는 정보를 캐내는, 방법론
머신 러닝의 세 가지 종류
지도 학습(supervised learning)
- 개별 클래스 레이블이 있는 지도 학습을 분류(classification)라고 함
- 연속적인 값을 출력하는 회귀(regression)
- 이진 분류(binary classification) 작업 : true & false,
- 음성 클래스(negative class)
- 양성 클래스(positive class)
- 새로운 데이터의 x1, x2 값이 주어지면 두 개의 범주 중 하나로 분류
- 다중 분류(multiclass classification)
- 회귀
- 예측 변수(predictor variable)(또는 설명 변수(explanatory variable))와
반응 변수(response variable)(또는 결과(outcome))가 주어졌을때 두변수 사이의 관계를 찾음
- 예측 변수를 보통 “특성(feature)” 반응 변수를 “타깃(target)”이라고 부름
- 선형 회귀(linear regression)
- x와 타깃 y가 주어지면 데이터 포인트와 직선 사이 거리가 최소가 되는 직선을 그을 수 있음
- 일반적으로 평균 제곱 거리를 사용
- 평균 제곱 거리가 최소가 될때까지 직선의 기울기와 절편(intercept)을 바꿔가며 출력 값을 예측 비지도 학습(unsupervised learning)
강화 학습(reinforcement learning)