2017년 10월 18일 수요일

AWS 클라우드로 천만 명이 쓰는 서비스 만들기

https://jacesky1.wordpress.com/2016/03/27/aws-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C%EB%A1%9C-%EC%B2%9C%EB%A7%8C-%EB%AA%85%EC%9D%B4-%EC%93%B0%EB%8A%94-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%A7%8C%EB%93%A4%EA%B8%B0/

EC2 AWS 마켓플레이스 를 이용해서 WordPress 서비스 생성하기

AWS 마켓플레이스를 이용하면 여러가지 미리 세팅된 서버 서비스를 쉽게 생성할수 있다.


마켓플레이스에서 해당 상품의 정보에 이런저런 정보가 있는데 보통 거기서 서비스의 초기 비번등을 알아낼수있다.
wordpress bitnami 의 경우는 instance 에서 오른쪽버튼->instance setting->get system log 에서 보면 bitnami 의 초기 app 비번(랜덤인듯) 이 보이는데 이를 복사해서
워드프로세스 어드민 /wp-admin/ 에 접속시 user,비번 입력하면된다.

추가, mysql root 비번도 동일하다.

Amazon EC2 - putty 를 이용하여 Instance 접속하기


http://devstory.ibksplatform.com/2017/08/aws-windows-linux-putty.html

http://hyeonstorage.tistory.com/271

Amazon Service - EC2

EC2 가상화된 서버 리소스를 제공

-Instances : 인스턴스 하나가 컴퓨터 한대 개념


Amazon IAM 설정 (좀더 안정적인 인프라 운영)

아마존 콘솔에서 Identity and Access Management 를 선택한다.


Activate MFA on your root account 는 구글 opt 에서 숫자 여섯개 두번 입력 해서 MFA 활성화 한다.

참고 영상 : https://opentutorials.org/course/2717/11269

2017년 10월 13일 금요일

IOS 면접질문집-일어

http://nsblogger.hatenablog.com/entry/2016/12/24/ios_interview

2017년 10월 12일 목요일

딥러닝과 OpenCV를 활용해 사진 속 글자 검출하기

최원효님 블로그 에서 발췌

좋은 글인거같아요

http://d2.naver.com/helloworld/8344782


2017년 10월 6일 금요일

Vue.JS 해볼까나~

일단 공식문서 부터..한글로 잘되어 있다

https://kr.vuejs.org/v2/guide/index.html

MVVM 방식에 컨포넌트 기능을 살려 재사용성을 높인다라는 건 좋을것 같다

참고 사이트들

http://meetup.toast.com/posts/99


https://vuejs-kr.github.io/

http://blog.naver.com/PostView.nhn?blogId=psj9102&logNo=220979693930&parentCategoryNo=&categoryNo=36&viewDate=&isShowPopularPosts=true&from=search

2017년 10월 3일 화요일

루비와 레일스 웹서비스

http://rorlab.org/websites

2017년 10월 2일 월요일

IOS 11 , SWIFT4 에서 카메라로 찍은 사진 앨범으로 저장안되고 에러날때


[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  

The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.

에러가 뜰때는 
info.plist 에

Privacy - Photo Library Additions Usage Description   속성으로  YES 값 넣어주면 잘됨

2017년 10월 1일 일요일

Cloud9 에서 Laravel 을 실행해보장

아래 자세한 설명 고마워요. 설치하고 세팅하는거 징그럽게 싫어 하는데 설명이 잘되어 있네요.

https://community.c9.io/t/laravel-5-3-installation-on-cloud9/9038

DocumentRoot /home/ubuntu/workspace/public 요거 설정하라고 되어 있는데.

내경우에는 

DocumentRoot /home/ubuntu/workspace/laravel/public 로 해야 이쁜 라라벨 첫페이지가 뜸.

Android 25-new-android-libraries

https://medium.freecodecamp.org/25-new-android-libraries-which-you-definitely-want-to-try-at-the-beginning-of-2017-45878d5408c0

30 new Android Libraries

https://medium.com/@mmbialas/30-new-android-libraries-and-projects-released-in-summer-2017-which-should-catch-your-attention-d3702bd9bdc6

2017년 9월 28일 목요일

30 Resources for Android Developers

https://blog.udacity.com/2015/06/30-android-developer-resources.html

aws 에 ruby on rail 세팅하기

http://psygotsky.blogspot.jp/2017/03/aws-ruby-on-rails.html

2017년 9월 26일 화요일

한자를 입력하면 일본어 음독,훈독 모두 보여주는 사이트

http://www.gaoshukai.com/lab/0032/

알아두면 도움이 되는 55가지 루비 기법

https://gist.github.com/nacyot/7624036

Ruby On Rails - Tip and Trick

https://www.slideshare.net/Scudelletti/ruby-tips-andtricks

ruby style guide 관련

루비 스타일 가이드 : https://github.com/bbatsov/ruby-style-guide

에어비엔비의 스타일 가이드 :  https://github.com/airbnb/ruby#whitespace

루비스타일가이드 분석 http://batsov.com/rubocop/

Ruby On Rails - Cloud9 에서 테스트 개발 해보기

http://blog.naver.com/PostView.nhn?blogId=dg_667&logNo=220616006452&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

여기에 있는 것처럼 Cloud9 에 가입해서 루비온레일즈 로 게시판을 만들어 보았다.

비지니스 로직이 들어갈 모델관련 파일은
rails g model 모델명  라는 식으로 생성한다.
그러면 db/migrate/ 밑에 테이블 정의하는
t.string:cell2
t.text:comment
처럼 추가한다.
그리고 나서
rake db:migrate 를 실행해서 실제 디비에 테이블이 생성되도록한다.

이제 게시판의 글목록,쓰기,보기,삭제 등을 구현해야 하는데,
일단
http://blog.naver.com/PostView.nhn?blogId=dg_667&logNo=220638145196&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

이곳을 참고하여 본다.

현재 board_controller.rb 의 write,list,view,list, delete 메소드(def)에 아무것도 없는데 각각 채워넣어주면된다.

def list
    @table1 = Table1.all
end
하고
list.html.erb에선
<%@table1.each do |tablecell|%>
<p><%=tablecell.cell1%></p>
<%end%>
하면 출력끝..오...

등록은

  def register
    if params[:cell1].present? && params[:cell2].present?
      table1 = Table1.new
      table1.cell1 = params[:cell1]
      table1.cell2 = params[:cell2]
      table1.save
    else
      puts "no data"
    end
    redirect_to action:"list"
  end

function 을...왜 def 로 했을까...

def sipal(num1, num2)
  return num1 + num2
end

이나..

 function sipal(num1, num2)
  return num1 + num2
end

 이나...

좋은지 모르겠음..

Ruby On Rails - 기초 설정

일단 앱의 configure 폴더에
environments , initializers , locale , database  등의 설정파일과 폴더가 있다.

환경은 개발, 배포, 테스트 버젼으로 각각 설정할수 있다.

http://guides.rorlab.org/configuring.html 참고

기본 예약어 등은 http://gnuteam.tistory.com/118 여기서.

Ruby On Rails 를 알아보자 - 개요



루비 온 레일즈를 알아보기 전에 공식 사이트의 설명을 보자
http://rubykr.github.io/rails_guides/getting_started.html

레일즈는 루비 언어로 작성된 웹 어플리케이션 프레임워크 
철학
-DRY – “Don’t Repeat Yourself (반복하지 말 것)”
-CoC , Convention Over Configuration
-REST

MVC 아키텍쳐 기반임

프로젝트 생성 

콘트롤러 생성 :  $ rails generate controller boardController write list ...
콘트롤러생성후 라우터에 콘트롤러가 있다는 것을 지정
config/routes.rb
root :to => "home#index"

일반적인 게시판 류는 그냥 스캐폴드 로 생성

$ rails generate scaffold Post name:string title:string content:text
15개(헉)개의 파일이 생성됨
파일목적
db/migrate/20100207214725_create_posts.rb데이터베이스에 ‘posts’ 테이블 생성하는 마이그레이션 (여러분의 파일 이름은, 다른 타임 스템프 값을 가지고 있습니다.)
app/models/post.rbPost 모델
test/fixtures/posts.yml테스트를 위한 더미(Dummy) posts
app/controllers/posts_controller.rbPosts 컨트롤러
app/views/posts/index.html.erb모든 posts 를 출력하는 index 뷰
app/views/posts/edit.html.erb존재하는 post 를 수정하는 edit 뷰
app/views/posts/show.html.erb단일 post를 보여주는 show 뷰
app/views/posts/new.html.erb새로운 post 를 만들기 위한 new 뷰
app/views/posts/_form.html.erbpost 를 수정하거나 새로 만드는데 사용되는 폼(form)을 저장하는 조각(partial) 파일
app/helpers/posts_helper.rbpost 뷰를 위한 헬퍼(Helper) 함수를 위한 파일
test/unit/post_test.rbposts 모델을 위한 유닛 테스트 파일
test/functional/posts_controller_test.rbposts 컨트롤러를 위한 기능 테스트 파일
test/unit/helpers/posts_helper_test.rbposts 헬퍼(Helper)를 위한 유닛 테스트 파일
config/routes.rbposts 를 위한 라우팅 정보를 담은 수정된 라우팅 파일
public/stylesheets/scaffold.css발판(Scaffold) 뷰를 좀 더 미려하게 만드는 CSS파일
그래..어차피 만들 파일들 미리 만들어 놓고 하나씩 삭제하는것도..

2017년 9월 25일 월요일

스프링 프로젝트 개발 전에 알아 두어야 할것들

스프링 3 & 4
- EJB 의 폐쇄적이고 상속 위주의 단점을 극복하고자 만든 프레임워크, 톰캣이 가능하다..ㅋ
- 오픈소스로 만들어진 안정적인 프레임워크
- 자바로 웹 또는 실행 애플리케이션을 만들 때 사용할 수 있는 프레임워크
- 자바로 네트워크 연결, 디비 연결등 귀찮고 짜증나는 작업을 쉽고 편하게 지원하여 , 비지니스 로직 개발에만 전념할수 있도록 해줌.
- POJO 방식을 지우너하고 경량 컨테이너를 지원함으로서 프레임워크에 종속되지 않는 개발 방식이 가능
 -- POJO : 특정 라이브러리를 상속하지 않고 자바 자체의 구현 함수만으로 프로그램이 제작 가능한건.
 -- 경량 컨테이너 : 프레임워크를 전부 로드하는 게 아니라 필요한 기능한 사용가능한 경량 컨테이너 방식
- 의존성주입, 관점 지향 컨테이너, 포터블 서비스 추상화
--의존성 주입 : 헐리우드 법칙, 내가 필요해서 요청하는게 아니라 , 스프링에서 필요한 부분에 호출해 준다. 즉, 빈 컨테이너 (컨테이너 박스) 에 내가 사용할 빈을 미리 등록해 놓으면, 스프링이 해당 부분에서 알아서 빈을 꺼내서 주입해 준다. 프로그램 내에서 사용할 객체를 이것저것 new 하는게 아니라, 빈 컨테이너를 통해 사용함으로서 객체간의 의존성을 최소화함.
-- 관점지향 컨테이너 : 여러 객체에서 공통으로 적용되는 공통관심사항(트랜잭션,로깅,보안등)을 특정 메소드,필드가 실행되기 전후,예외발생등의 시점에 실행해 주는 것을 관리, 기존의 방식이라면, 매번 해당 기능을 호출하고 관리해야 되므로 문제가 생기던것을, 훅 과 같은 방식으로 처리.
-빈 객체의 생성,소멸과 같은 라이프 사이클을 관리
-데이터 베이스 접근의 일관성.

[참고].MAVEN 필요 라이브러리 관리툴
jar 를  library , plugin 등의 폴더에 다운받아서 저장 하는 귀찮은 과정을, Maven 이 대신 해줌.
단순히 다운로드 뿐만 아니라, 모듈간 의존성을 관리해줌.
스프링 뿐만 아니라 기존 프로젝트도 메이븐 프로젝트로 변경할수 있음.
최신의 이클립스에는 기본으로 탑재되어 있음.
또 하나의 기능은 빌드 기능이다. 프로젝트를 컴파일,테스트,패키징,인스톨 과 같은 빌드 라이프 싸이클을 설정하여, 한번에 컴파일->인스톨 까지 가능하도록 도와 준다. 심지어 이클립스에서 설정이 가능하다.

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

주요용어
 빈(bean)
 스프링이 IoC 방식으로 관리하는 오브젝트를 말한다. 관리 되는 오브젝트라고 부르기도 한다.
 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.

 빈 팩토리(bean factory)
 스프링이 IoC를 담당하는 핵심 컨테이너를 가리키다. 빈을 등록하고. 생성하고, 조회하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능을 담당한다.
 보통은 이 빈 팩토리를 바로 사용하지 않고 이를 확장한 애플리 케이션 컨텍스트를 이용한다.

 애플리케이션 컨텍스트(application context)
 빈 팩토리를 확장한 IoC 컨테이너이다. 빈을 등록하고 관리하는 기본적인 기능은 빈 팩토리와 동일하다.
 스프링이 제공하는 각종 부가 서비스를 추가로 제공한다.
 빈 팩토리라고 부를 때는 주로 빈의 생성과 제어의 관점에서 이야기하는 것이고, 애플리케이션 컨텍스트라고 할 때는 스프링이 제공하는
애플리케이션 지원 기능을 모두 포함해서 이야기하는 것이라고 보면 된다.
 설정정보/설정 메타정보(configuration metadata)
 스프링의 설정정보란 애플리케이션 컨텍스트 또는 빈 팩토리가 IoC를 적용하기 위해 사용하는 메타정보를 말한다.
이는 구성정보 내지는 형상정보라는 의미이다.

 스프링 프레임워크
 스프링 프레임워크는 IoC 컨테이너, 애플리케이션 컨텍스트를 포함해서 스프링이 제공하는 모든 기능을 통틀어 말할 때 주로 사용한다.



web.xml 에 관한 설명은 아래에서.
출처: http://seongilman.tistory.com/16 [SEONG]


톰캣 관련
-PSI-Probe : Tomcat 모니터링 툴
https://dukeom.wordpress.com/2011/08/08/psi-probe-tomcat-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%ED%88%B4/
-Tomcat manager GUI 사용하기
https://dukeom.wordpress.com/2011/08/08/tomcat-manager-gui-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/


스프링 강좌
스프링 MVC
http://cloudstudying.kr/courses/12

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

-web.xml 에 대해 알아보자
http://seongilman.tistory.com/16

-스프링 파일 업로드 예제
https://dukeom.wordpress.com/2011/08/25/spring3-file-upload-%EA%B5%AC%ED%98%84/

-스프링 프로퍼티 파일을 @로 읽어오기
https://dukeom.wordpress.com/2016/06/26/%EC%8A%A4%ED%94%84%EB%A7%81%EC%97%90%EC%84%9C-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BC%EC%9D%84-value%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/

-스프링 디비 관련
tomcat(7.x),spring,mybatis 사용시 tomcat connection pool 설정하기

https://dukeom.wordpress.com/2012/02/21/tomcat7-xspringmybatis-%EC%82%AC%EC%9A%A9%EC%8B%9C-tomcat-connection-pool-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/

2017년 9월 16일 토요일

Swift 기초 설명과 예제와 깃 소스,

https://sites.google.com/a/gclue.jp/swift-docs/
강추, 충실한 깃 소스와 화면 캡춰

흠..내가 만들려고 했는데 이미 만들어져 있네요. ㅋ 일본분 화팅

http://docs.fabo.io/swift/
일로 옮겼단다. 책저자 인거 같네요

2017년 9월 14일 목요일

SWIFT , OBJECT-C, APPLE WATCH 개발 정보 사이트(일본)

https://i-app-tec.com/
Nyan 분이셨군요. ㅋ

swift-salaryman 멋지다 일본 개발자

우연히 발견 스위프트 일본 개발자  사이트 이미지로 봐선 나이가 꽤 있으신듯 ㅋ
swift-salaryman.com 멋지다 일본 개발자

2017년 9월 12일 화요일

UIView 를 다이나믹하게!!

http://omarfouad.com/blog/2014/08/02/getting-started-uikitdynamics-swift/

designing-adaptive-layouts-for-iphone-6-plus 적응성디자인?

http://mathewsanders.com/designing-adaptive-layouts-for-iphone-6-plus/

화면을 돌리면 그에 맞게 적응하는 효과

2017년 9월 11일 월요일

SWIFT 항목별로 설명이 잘되어 있는 곳

http://kka7.tistory.com/category/Swift/Language%20Guide

SWIFT 3.0 ㅋㅋ 얼마안의 아이폰 공부인지..

일단 Swift 가이드라고 하니. 먼저 보고..

http://seorenn.blogspot.jp/2014/06/swift_16.html

아이폰 및 맥OS ...개인적으로는 둘다 싫어하지만, 여튼 만들수 있다니 정리가 잘되어있어서 좋음

2017년 7월 28일 금요일

Tomcat 8.5 + sts 3.9 +java 1.8 에서 스프링 기본 프로젝트 실행안될때

Tomcat 8.5 + sts 3.9 +java 1.8 에서 스프링 기본 샘플 생성하고 실행하니 이런 메시지가..
알아보니 pom.xml 앞줄에

<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>


<java-version>1.8</java-version>
<org.springframework-version>4.1.7.RELEASE</org.springframework-version>
응? 4.1.7 RELEASE ? ㅆㅂ야 sts 3.9 받았다니까..
여튼 이렇게 하면 실행됨.

아래 에러 중에 java 버젼이 틀렸다는거 찾을수 있는분?  톰고양이 쉐끼 매번 고생시키네..
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@39fa9a06]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4860)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4992)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6cb46084]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:709)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
... 12 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at sun.misc.IOUtils.readFully(IOUtils.java:65)
at java.util.jar.JarFile.getBytes(JarFile.java:425)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
at java.util.jar.JarFile.getManifest(JarFile.java:180)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:111)
... 13 more

Jul 29, 2017 2:23:52 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:656)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more

Jul 29, 2017 2:23:52 PM org.apache.catalina.startup.Catalina start
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.startup.Catalina.start(Catalina.java:656)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more

2017년 7월 11일 화요일

Java Refactoring

히로시 유키 저 "Java 언어로 배우는 리팩토링 입문" 부록에 나오는 리팩토링 목록입니다.

http://sinihong.tistory.com/m/11#toc_1


2017년 7월 10일 월요일

자바디자인 패턴

1.Strategy pattern
: 대장-관리인(인터페이스)-일꾼 의 구조로 설계함. 일꾼은 항상 다른일을 하기 때문에, 관리인에게 공통된 명령(일시작해,밥줘,퇴근시켜...아..사장쉐키들이 하는거였네..) 사장님 패턴이라고 해야하나..아니면 관리인 패턴인가
한개의 인터페이스와 여러개의 구현체, 인터페이스를 통해 명령을 내릴 대장클래스

2.Adapter Pattern
: 열라좋은 헤어드라이기를 해외여행때마다 가지고 다니고 싶은데, 나라마다 코드가 제각이니 각 나라에 맞는 코드를 끼워넣음. 내가 원하는 것을 하기위해서는 기존의 소스에 아답터인터페이스(돼지코,일자코...)를 확장시켜야 함.
[기존코드]를 추상화된 애댑터에 지정, 확장한 소스에서 기능 확장

3.Template Method Pattern
: 공장에서 자동차를 만들다보니, 본체-바퀴-문짝 조립순이더라, 사람한테 시키니 실수도 많고 표준대로 지키지도 않고...그래서 순서대로 조립할수 있는 라인을 만들고 기계를 도입했다.
추상화된 생산절차-확장해서 자세한 작업을 구현, 총 감독할 실행부

4.작업중...

2017년 7월 9일 일요일

스프링프레임워크 무료 동영상강좌 - inflearn.com

강좌에 대한 요약은 여기 http://mj-documents.readthedocs.io/ko/latest/JAVA%20(%20Spring%20)/Spring%20%ED%95%84%EA%B8%B0/

강좌의 소스에 대한 이해는 대충.
spring_11_2_ex1_springex
--------------------------------------------
1. web.xml 의 <servlet> 설정에서 <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 읽음
2. 콘트롤러 파일을 찾기 위해서 <context:component-scan base-package="com.javalec.ex" /> 지정
3. 화면 표시용 view 가 있는 리소스 위치를 지정하기 위해서 prefix,suffix 값을 지정
4. context root,그러니까 http:localhost:8080/ex 이렇게 뜨는 거는 Server 의 Tomcat v7.0.... 으로 추가한 서버를 더블클릭하고 server.xml 파일의 context path 를 변경하면됨.
5. 프로젝트 에서도 Properties>Web Project Settings 에서도 context root 를 변경
6. HomeController 자바 파일에서는 @Requestmapping 으로 넘어온 value 주소에 대해서만 실행함.
7. model.addAttribute("serverTime", formattedDate ); 로 화면에 출력할 변수를 만들어서 "home" 뷰에 전달함.
8. /WEB-INF/views/ + "home" + jsp 파일에서는 ${serverTime} 값을 출력함

spring_11_3_ex1_springex
--------------------------------------------
spring_11_2_ex1_springex 와 같은 소스 다만
<resources mapping="/resources/**" location="/resources/" /> 로 지정안된 폴더에서 이미지 가져오려 하면, 가져올수 없다는 것을 확인


spring_12_1_ex1_springex
--------------------------------------------
spring_11_2_ex1_springex 와 같은 소스 다만
콘트롤러에서
@RequestMapping("/board/view")
@RequestMapping("/board/content")...
로 했을때의 별도의 메소드에서 처리됨을 확인.
각 메소드에서는 return "뷰값"을 하여
해당 파일(/WEB-INF/views/ + "뷰값" + jsp)이 있으면 그걸 화면 출력한다.


spring_12_4_ex1_springex
--------------------------------------------
spring_11_2_ex1_springex 와 같은 소스 다만
콘트롤러에서 클래스에
@RequestMapping("/board") 를 추가하고
메소드에
@RequestMapping("/")
@RequestMapping("/write")...
로 했을때 웹상에서의 주소접근이
http://localhost:8080/board/
http://localhost:8080/board/write
로 되는 것을 확인- 한참 헤멨네...


spring_13_1_ex1_springex
--------------------------------------------
@RequestMapping("board/confirmId")
public String confirmId(HttpServletRequest httpServletRequest, Model model) {
에서는  httpServletRequest.getParameter("id") 등과 같이 http 로 넘어오는 값을 받아서 처리하는 예제

@RequestMapping("board/checkId")
public String checkId(@RequestParam("id") String id, @RequestParam("pw") int pw, Model model) {
에서는  @RequestParam 어노테이션을 이용하여 request 된 데이터 취득.



spring_13_4_ex1_springex
--------------------------------------------
@RequestMapping("/student/{studentId}")
public String getStudent(@PathVariable String studentId, Model model) {
주소라인에 SEO 방식의 주소로 할수 있도록 하는 예제. 즉 http://localhost:8080/student/아빠/ 라는 식으로 http 주소를 받아서 '아빠' 이름에 해당하는 변수를 활용할수있다. get,post 도 필요없이 주소라인에서 직접 변수를 전달하는 방식, 이렇게 링크를 하는 이유는 검색엔진에서 주소라인의 문구가 검색 결과로 잡하기 때문에...
@RequestMapping("/student/{studentId}/{nickname}")
public String getStudent(
@PathVariable("studentId") Optional<String>  studentId,
@PathVariable("nickname") Optional<String>  nickname,
Model model
) {
머..이런식도 가능.



spring_14_1_ex1_springex
--------------------------------------------
콘트롤러에서 지정한
http://localhost:8080/ex/index 화면에서 전송을 누르면
전송 폼이 나타나고 값을 입력후 전송하면.
@RequestMapping(method = RequestMethod.POST, value = "/student") 또는
@RequestMapping(method = RequestMethod.GET, value = "/student") 가
적절히 실행된다.
get 을 확인하려면
http://localhost:8080/ex/student?id=1234 하면됨.


spring_14_2_ex1_springex
--------------------------------------------
spring_13_4_ex1_springex 랑 비교하면 좋음.
폼정보가 있는 index.jsp 에서 전송을 하면,
콘트롤러에서
@RequestMapping("/studentView")
public String studentView(@ModelAttribute("studentInfo") StudentInformation studentInformation){
메소드를 실행하는데, 이때 넘어온 폼의 정보를 한번에 StudentInformation 클래스에 setter 한다.
물론 form 의 input 이름과 클래스변수의 이름이 같고 seter 가 있는 변수에 한해서만이다.
ModelAttribute("studentInfo") 여기의 "studentInfo" 가 view 에서 변수명이 된다.

***중요한 거는 StudentInformation.java 클래스에 자동으로 담겨주는 거.폼의 인풋 정보랑 modelAttribute 에서 지정한 클래스 정보랑


spring_14_3_ex1_springex
--------------------------------------------
리다이렉트 redirect: 예제들.


spring_15_1_ex1_springex
--------------------------------------------
StudentController 에서  @RequestMapping("/student/create") 주소로 폼 내용이 넘어올때,
public String studentCreate(@ModelAttribute("student") Student student, BindingResult result) {
이름의 인풋값들중에 student 객체에 있는 변수는 할당을 한다.
student 객체에 입력된 값으로 StudentValidator 의 검증 메소드를 실행한다. 이때 에러가 발생하면, crete 페이지로 가고 아니면  done 페이지로 간다.
폼주소  http://localhost:8080/spring_15_1_ex1_srpingex/studentForm


spring_15_2_ex1_springex
--------------------------------------------
spring_15_1_ex1_springex 과 같은 내용, 밸리데이터만 수정


spring_15_3_ex1_springex
--------------------------------------------
spring_15_1_ex1_springex 과 같은 내용, 밸리데이터만 수정
@InitBinder 확인.?


spring_16_1_ex1_springex
--------------------------------------------
BController.java
이 화일에서는 각 요청 주소 에 따른 @RequestMapping("...") 을 한다.
command 패턴을 사용해서 각 코맨드에 맞는 클래스,메소드를 실행한다.(좋음)
com.javalec.spring_16_1_ex1_srpingex.command 패키지에는 각 커맨드에 맞는 클래스가 있다.
Dao 를 썼지만 , 예전 방식으로 접속함.(예제니까..)


spring_21_1_ex1_springex
--------------------------------------------
servelet-context.xml 에서
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
....
</beans:bean>
JDBC 이용한거만 좀 다름..




spring_22_1_ex1_springex
--------------------------------------------
servelet-context.xml 에서
<beans:bean name="dao" class="com.javalec.spring_pjt_ex.dao.TicketDao" >
로 빈 지정하고.
HomeController 에서
@Autowired
public void setDao(TicketDao dao) {
Autowired 처리되어 dao 변수는 com.javalec.spring_pjt_ex.dao.TicketDao 할당됨





spring_22_2_ex1_springex
--------------------------------------------
servelet-context.xml 에서
<beans:bean name="dao" class="com.javalec.spring_pjt_ex.dao.TicketDao" >
로 빈 지정하고.
HomeController 에서
@Autowired
public void setDao(TicketDao dao) {
Autowired 처리되어 dao 변수는 com.javalec.spring_pjt_ex.dao.TicketDao 할당됨
아직 트랜잭션 처리되지 안음.


spring_22_2_ex2_springex
--------------------------------------------
spring_22_2_ex1_springex 동일.
스프링에서 지원하는 TransactionDefinition 으로 간단히 트랜잭션 지정.


spring_23_1_ex1_springex
--------------------------------------------
spring_22_2_ex2_springex 동일.
좀더 간단히 TransactionTemplate 을 이용
설정에 추가됨
<beans:bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dataSource" />
</beans:bean>

<beans:bean name="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<beans:property name="transactionManager" ref="transactionManager"></beans:property>
</beans:bean>





spring_23_2_ex1_springex
--------------------------------------------
spring_23_2_ex2_springex 동일.
좀더 간단히 TransactionTemplate 을 이용
설정에 추가됨
<beans:bean name="ticketCommand" class="com.javalec.spring_pjt_ex.command.TicketCommand" >
빈에 연결
@Autowired
public void setTicketCommand(ITicketCommand ticketCommand) {
this.ticketCommand = ticketCommand;
}
빈에 연결시에 인터페이스와 implement 구형제가 한세트라서, 자동으로 구현클라스에 할당됨
트랜잭션의 전파 속성 별도로 학습 필요






spring_25_1_ex1_springex
--------------------------------------------
보안관련, 한글처리



spring_26_1_ex1_springex
--------------------------------------------
보안관련, 한글처리

spring_26_2_ex1_springex
--------------------------------------------
보안관련, 한글처리

spring_27_1_ex1_springex
--------------------------------------------
보안관련, 한글처리





spring_28_1_ex1_springex
--------------------------------------------
JDBC 방식임.




spring_29_1_ex1_springex
--------------------------------------------
마이바티스 를 사용하기 위해서는

<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mybatis/dao/mapper/*.xml"></beans:property>
</beans:bean>

<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
추가해야함.
value="classpath:com/javalec/spring_mybatis/dao/mapper/*.xml" 는 프로젝트 마다 다름.

스트링에서 마이바티스를 이용하면
mapper 폴더의 xml 과 인터페이스 를 1:1 로 연결함.
즉 mapper/OOO.xml 에는
<mapper namespace="com.javalec.spring_mybatis.dao.IDao">
와 같이
com.javalec.spring_mybatis.dao.IDao 인터페이스에 연결한다.

이는
즉 mapper/OOO.xml 에는 에는
<mapper> 밑으로
<select id="listDao" resultType="com.javalec.spring_mybatis.dto.ContentDto">
SELECT * FROM BOARD ORDER BY MID DESC
</select>
로 선언됨.

이를 가지고 콘트롤러에서
IDao dao = sqlSession.getMapper(IDao.class); Idao 에는 현재 xml 파일이 매핑되어 있음.
model.addAttribute("list", dao.listDao) 매핑된 xml 속성(쿼리element) 중에 id 가 listdao 인 놈만 가져와서 list (모델속성)에 할당해서 화면에 뿌릴수 있게됨.
화면에 뿌릴때는 list.db필드명 식으로딤.





spring_30_1_ex1_springex
--------------------------------------------
xml 이용한 연습.
xml 에 인자 는 #{param1} #{param2} 식으로.

2017년 6월 27일 화요일

redmine 과 eclise 연동 mylyn connector plugin

redmine 과 eclise 연동 mylyn connector plugin 에 대한 설명

http://whybk.tistory.com/65

Redmine 사용법 및 규칙

Redmine 사용법 및 규칙 에 관한 글
http://kindjds.tistory.com/entry/Redmine-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EA%B7%9C%EC%B9%99

2017년 6월 26일 월요일

PostgreSql 9.2.4 문서

http://postgresql.kr/docs/9.2/index.html

2017년 6월 25일 일요일

Cocos2dx 컴파일(디버그개발)시 빠르게

http://nalsil.tistory.com/m/51

요기가 포인트.

5. 프로젝트 속성에서 "구성 속성>링커>일반>추가 라이브러리 디렉터리"에 이전에 빌드한 output 폴더를 추가

-. cocos2d-x-3.13\build\Debug.win32

 

6. "구성 속성>링커>입력>추가 종속성"에  "libcocos2d.lib" 를 추가한다.

 

7. "구성 속성>빌드 이벤트>빌드 후 이벤트"에 다음 내용을 추가한다.

-. copy  cocos2d-x-3.13\build\Debug.win32\*.dll  $(OutDir)

 

 

 

2017년 2월 25일 토요일

VirtualBOX + Yosemite Iso 설치

http://ssamlee.tistory.com/11

capisan ? seirra ? 다 안되고 이걸로 설치 성공.

2017년 2월 23일 목요일

Centos7 apache 80 port open

포트를 방화벽에 추가합니다.
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

방화벽을 리로드
sudo firewall-cmd --reload

2017년 2월 22일 수요일

자바로 개발할때 주의점-책요약

http://joke00.tistory.com/148

 

자바로 개발할때 주의점 책의 중요점이 다 요약되어 있음

[행안부] JAVA_시큐어_코딩_가이드

[행안부] JAVA_시큐어_코딩_가이드


http://joke00.tistory.com/253

2017년 1월 26일 목요일

REDIS 에 대해 .1

http://a07274.tistory.com/325

2017년 1월 25일 수요일

오픈된 소스 링크들

http://kimseunghyun76.tistory.com/153

2017년 1월 12일 목요일

JAVA 면접질문

https://brunch.co.kr/@oemilk/8

2017년 1월 8일 일요일

java-programming-tips-best-practices-beginners

https://www.javacodegeeks.com/2015/06/java-programming-tips-best-practices-beginners.html