'日常茶飯事'에 해당되는 글 601

  1. 2013.10.24 PythonAnywhere + Bottle
  2. 2013.10.21 Bottle: Python Web Framework
  3. 2013.09.08 [Greasemonkey] 링크 주소 바꾸기
  4. 2013.09.08 Greasemonkey 스크립트 작성
  5. 2013.08.21 MLB 영어
  6. 2013.08.03 마우스가 올라가면 나타나는 기능 버튼
  7. 2013.07.27 [ValidationException: HV000041: Call to TraversableResolver.isReachable() threw an exception.]
  8. 2013.07.27 Your first Play application
  9. 2013.07.24 피싱/파밍/스미싱
  10. 2013.07.17 Ruby, Rails 설치
  11. 2013.07.07 [미완-동적인거 추가하기][Simple Web Server] Node.js - http 모듈 이용
  12. 2013.07.03 Online icon maker
  13. 2013.07.03 T wifi zone 무료로 사용 못함
  14. 2013.04.20 [Perl Advent Calendar] Mojolicious, HTML5, WebSocket을 이용한 비동기 채팅
  15. 2013.03.29 전자정부 표준프레임워크 개발환경에서 servlet-api가 배포되어 에러가 나는 경우
  16. 2013.03.15 DbUnit + Unitils
  17. 2013.02.09 STS 설치 - Grails 플러그인 추가
  18. 2013.01.25 <URL>을(를) 열 수 없습니다. 인터넷 서버 또는 프록시 서버를 찾을 수 없습니다.
  19. 2012.12.30 [Grails] 게시판 만들기 6 - 인증
  20. 2012.12.30 [Grails] Database Console
  21. 2012.12.29 [Grails] 게시판 만들기 1
  22. 2012.12.29 Grails - 2.2.0
  23. 2012.12.19 Grails - Installation
  24. 2012.12.10 업무 설명
  25. 2012.12.10 cos.jar
  26. 2012.11.30 Excel에서 셀의 위치를 지정하기 / INDIRECT
  27. 2012.11.28 Visual Studio 설치
  28. 2012.11.27 구글 문서를 읽기 전용으로 보기
  29. 2012.11.23 Ubuntu에서 터미널 열기
  30. 2012.11.23 [Unix] cal

PythonAnywhere + Bottle

PythonAnywhere is a Python development and hosting environment that displays in your web browser and runs on our servers.

Beginner는 무료
console은 2개 열수 있고
web app은 하나만 만들수 있다.
스토리지 500M 제공
Dropbox와 연결됨.
SSH는 안됨.
MySQL도 제공

- web app 만들기


웹 프레임워크 선택




웹 앱 확인


브라우저에서 소스 수정

Vim이 지원된다.[각주:1]


Reload를 해야 반영이 됨.

access.log, error.log, server.log 파일을 확인할 수 있음.



  1. 정말 마음에 드는 기능! [본문으로]

Bottle: Python Web Framework

http://bottlepy.org
Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library.

- Installation
http://bottlepy.org/docs/dev/tutorial.html#installation
C:\Python33\Scripts> pip install bottle //easy_install도 가능
Downloading/unpacking bottle
  Downloading bottle-0.11.6.tar.gz (60kB): 60kB downloaded
  Running setup.py egg_info for package bottle

Installing collected packages: bottle
  Running setup.py install for bottle

Successfully installed bottle
Cleaning up...


- Hello world


IDLE 쉘상에서 직접 실행하면 잘 안됨.(Flask - Hello world처럼)

- 설치 간단, 의존성 없음.
IDLE로 실행시 Ctrl-C로 내릴 수 있음.(Flask 안됨)========>이거 =-=>별도 파일로 만들어서 실행시켜보자.
리로딩도 된다고 함. 소스 수정하고 F5 누르면 재시작 됨.
자체 템플릿 엔진 제공, 다른 템플릿 엔진도 사용 가능
Dictionary를 리턴하면 json형태로 응답한다.

내가 찾던거다!!!

- 참고 자료
http://bottlepy.org/docs/0.11/
http://bottlepy.org/docs/dev/tutorial.html

API Reference
http://bottlepy.org/docs/dev/api.html

Tutorial: Todo-List Application
http://pantarei.tistory.com/3539
http://bottlepy.org/docs/dev/tutorial_app.html

[Greasemonkey] 링크 주소 바꾸기

- 파일 확장자는 user.js

- 모든 링크를 찾아서 주소를 변경한다.
	var links = document.getElementsByTagName("a");
	for(var i = 0 ; i < links.length ; i++){
		ahref = links[i].href;
		if(ahref.indexOf("http://1.2.4.130:8088") == 0){
			links[i].href = ahref.replace("http://1.2.4.130", "http://211.8.3.20");
		}
	}

- Gmail에서는 잘 안되는거 같아 실행을 지연시킨다.
window.setTimeout(function(){
	//
}, 1000*3);

- 실행이 되긴 하지만 Gmail은 매번 페이지를 읽지 않으므로 다른 메일을 읽으면 동작하지 않는다.

- click 이벤트에 연결한다.
document.addEventListener('click', function(event) {
	ahref = "" + event.target;	
	if(ahref.indexOf("http://1.2.4.130:8088") == 0){
		window.location.href = "http://naver.com";
		event.stopPropagation();
		event.preventDefault();
	}
}, true);

- 현재 페이지가 이동하므로, 링크의 주소를 직접 고친다.
// ==UserScript==
// @name				Forwarding Trac IP
// @namespace		http://pantarei.tistory.com
// @description		Forwarding 130 to 20
// @include				https://mail.google.com/*
// @include				https://www.google.com/calendar/*
// @include				http://211.8.3.219/*
// ==/UserScript==

document.addEventListener('click', function(event) {
	if(event.target.tagName == "A"){
		ahref = "" + event.target;	
		if(ahref.indexOf("1.2.4.130") > 0){		
			event.target.setAttribute("href", ahref.replace("1.2.4.130", "211.8.3.20"));
		}
	}
}, true);
Trac 티켓 메일도 있지만 구글 캘린더에서도 Trac 링크가 있으므로 "http://"를 뺀다.
지메일에서 ":"와 같은 문자를 인코딩한다.
실제 발생한 click 이벤트가 처리되도록 막지 않는다.

- 지메일에서 구글 캘린더 알림 메일 링크
http://1.2.4.130:8088/projects/HelloTOW/attachment/wiki/WikiStart/fiddler.PNG //실제 링크
https://www.google.com/url?q=http%3A%2F%2F1.2.4.130%3A8088%2Fprojects%2FHelloTOW%2Fattachment%2Fwiki%2FWikiStart%2Ffiddler.PNG&usd=2&usg=AFQjCNH7xeM7IdMWgpYZBmGXde7gBgmWEg

- 2013-09-09
a 태그에서 실행되도록 추가


=-=>mouseover에 넣으면 더 좋을거 같다.





Greasemonkey 스크립트 작성

- 작성한 스크립트를 파이어폭스에 떨어뜨리면 설치 창이 뜬다.
또는 에디터플러스에서 브라우저로 보기가 파이어폭스로 설정되어 있으면 설치 창이 뜬다.


- 동작할 페이지를 주의해서 설정한다.

https 주의


- 스크립트 수정
User Scripts - Script Settings - 편집할 수 있다.




MLB 영어

- Tigers turn double play
Miguel Cabrera turns a 5-5-3 double play on Trevor Plouffe, stepping on third then throwing to first to end the top of the second

- shoestring grab



마우스가 올라가면 나타나는 기능 버튼

마우스가 올라가면 추가적인 기능 버튼이 펼쳐진다.

모 광고 배너도 이런 식인데 느낌이 다르다.ㅋ



[ValidationException: HV000041: Call to TraversableResolver.isReachable() threw an exception.]

Play Framework todolist 예제를 따라하다가 발생한 에러


검색해보면 setter/getter를 추가해라는 답변도 있는데, 콘솔 에러를 보면
! @6f4fl4mol - Internal server error, for (POST) [/tasks] ->

play.api.Application$$anon$1: Execution exception[[ValidationException: HV000041: Call to TraversableResolver.isReachable() threw an exception.]]
        at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.2]
    ...
        at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:133) ~[hibernate-validator.jar:4.3.0.Final]
Caused by: java.lang.RuntimeException: No @javax.persistence.Id field found in class [class models.Task]
        at play.db.ebean.Model._idAccessors(Model.java:54) ~[play-java-ebean_2.10.jar:2.1.2]
        at play.db.ebean.Model._getId(Model.java:67) ~[play-java-ebean_2.10.jar:2.1.2]
        at play.db.ebean.Model.hashCode(Model.java:208) ~[play-java-ebean_2.10.jar:2.1.2]
        at org.hibernate.validator.internal.engine.resolver.SingleThreadCachedTraversableResolver$TraversableHolder.buildHashCode(SingleThreadCachedTraversableResolver.java:153) ~[hibernate-validator.jar:4.3.0.Final]
        at org.hibernate.validator.internal.engine.resolver.SingleThreadCachedTraversableResolver$TraversableHolder.<init>(SingleThreadCachedTraversableResolver.java:114) ~[hibernate-validator.jar:4.3.0.Final]
        at org.hibernate.validator.internal.engine.resolver.SingleThreadCachedTraversableResolver$TraversableHolder.<init>(SingleThreadCachedTraversableResolver.java:96) ~[hibernate-validator.jar:4.3.0.Final]

1.X 문서에서는 Play Model 클래스에서 @Id를 제공한다고 해서, @Id를 넣지 않아서 발생했다.

Your first Play application

http://www.playframework.com/documentation/2.1.x/JavaTodoList

Play 2.1.2
아주 간단한 예제

> play new todolist //프로젝트 생성
> cd todolist
> play
[todolist] $ run


There is no need to compile the code yourself or restart the server to see the modification. It is automatically reloaded when a change is detected.

- 라우팅 추가
conf/routes
# Home page
GET     /                             controllers.Application.index()
                               
# Tasks         
GET     /tasks                      controllers.Application.tasks()
POST    /tasks                    controllers.Application.newTask()
POST    /tasks/:id/delete       controllers.Application.deleteTask(id: Long)

- Task 모델
- 템플릿 수정
index.scala.html

- Rendering the first page


- form 전송 처리 - 데이터베이스 처리
conf/application
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
...
ebean.default="models.*"
서버 재시작할 필요없음.

EBean (Play’s default ORM) 사용
- 삭제 기능
- Heroku에 배포
...다음 기회에

피싱/파밍/스미싱

- 피싱(phishing) : ‘private date(개인정보)’ + ‘fishing(낚시)’의 합성어
  불특정 다수에게 이메일을 보내 개인정보를 입력하도록 유도하는 수법

- 파밍(pharming): ‘farming(경작하다)’에서 유래된 신조어
가짜 사이트(dummy site)를 만들어 사용자들로 하여금
  진짜 사이트로 오인해 접속하도록 유도하여, 개인정보를 훔치는 수법

- 스미싱(smishing) : ‘SMS(문자메시지)’ + ‘phishing(피싱)’의 합성어
  휴대폰 사용자에게 웹사이트 링크를 포함하는 문자 메시지를 보내
  사용자가 모바일로 웹사이트에 접속하면 바로 결제가 되어,
  돈을 잃게 만드는 수법

출처는 www.igm.or.kr/bbs/board.php?bo_table=morning_touch&wr_id=147 

 

 

Ruby, Rails 설치

- Linux

- Windows
http://rubyinstaller.org/downloads/에서 RubyInstaller를 다운로드해서 설치
2013-07-16 ruby 2.0, rails 4.0

> ruby -v
ruby 1.9.3p448 (2013-06-27) [i386-mingw32]

> gem update --system
> gem -v
2.0.5

> gem install rails
Fetching: i18n-0.6.4.gem (100%)
Successfully installed i18n-0.6.4
Fetching: multi_json-1.7.7.gem (100%)
Successfully installed multi_json-1.7.7
Fetching: tzinfo-0.3.37.gem (100%)
Successfully installed tzinfo-0.3.37
Fetching: minitest-4.7.5.gem (100%)
Successfully installed minitest-4.7.5
Fetching: atomic-1.1.10.gem (100%)
ERROR:  Error installing rails:
        The 'atomic' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'


//DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe

devkit> ruby dk.rb init

devkit> ruby dk.rb review
devkit> ruby dk.rb install

> gem install rails
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
        ERROR: Failed to build gem native extension.

    C:/Ruby193/bin/ruby.exe extconf.rb
creating Makefile

make "DESTDIR="
generating atomic_reference-i386-mingw32.def
compiling atomic_reference.c
linking shared-object atomic_reference.so
d:/devkit/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: can
not find -lmsvcrt-ruby191
collect2: ld returned 1 exit status
make: *** [atomic_reference.so] Error 1

Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/atomic-1.
1.10 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/atomic-1.1.10/ext/gem_make
.out


//DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
//위와 동일한 에러, devkit 컴파일도 안됨.

//Ruby 1.9.2-p290로 다시 설치함.

> ruby -v
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

> gem update --system
> gem -v
2.0.5

> gem install rails
//위와 동일한 에러, devkit 컴파일도 안됨.

//Ruby 2.0.0-p247
//DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe


> ruby -v
ruby 2.0.0p247 (2013-06-27) [i386-mingw32]

> gem -v
2.0.3
> gem update --system
> gem -v
2.0.5

> gem install rails
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed atomic-1.1.10
Fetching: thread_safe-0.1.0.gem (100%)
Successfully installed thread_safe-0.1.0
Fetching: activesupport-4.0.0.gem (100%)
Successfully installed activesupport-4.0.0
...
Installing ri documentation for rails-4.0.0
25 gems installed


> rails -v
Rails 4.0.0




[미완-동적인거 추가하기][Simple Web Server] Node.js - http 모듈 이용

그 다음은 동적으로 처리, 그 다음은 ap서버처럼
 
- Hello World
- 파일
- 이미지

Online icon maker

http://convertico.org/

==favicon만들어주는 사이트 있잖아


T wifi zone 무료로 사용 못함

2011년 7월 1일부터는 타이동통신사나 회선이 없는 기기의 무료 사용이 중단됨.
예전 포스팅들을 보면 MAC주소를 등록해서 된다고 하는데 정책이 변경되었음.
꿈도 꾸지 마.

[Perl Advent Calendar] Mojolicious, HTML5, WebSocket을 이용한 비동기 채팅

- 2011 스무번째 날: Mojolicious, HTML5, WebSocket을 이용한 비동기 채팅

- Mojolicious 설치
> cpan Mojolicious
> mojo generate app Chat //
> tree
> morbo chat/script/chat
http://127.0.0.1:3000/

- lib/Chat.pm에 라우팅 추가

- lib/Chat/ChatControl.pm 작성
- View 작성
templates/ChatControl/chatAction.html.ep
templates/layouts/chatLayout.html.ep

- 그런데 서버가 응답을 주지 않는다.
Control까지는 진행되는데 View를 찾지 못한다.
한참동안 이것저것 해보다 log 디렉토리가 있다는 것을 보고 로그를 확인해 봤다.
[Sat Apr 20 15:24:43 2013] [debug] Routing to controller "Chat::ChatControl" and action "chatAction".
[Sat Apr 20 15:24:43 2013] [debug] Template "chat_control/chatAction.html.ep" not found.
[Sat Apr 20 15:24:43 2013] [debug] Template "chat_control/chatAction.html.ep" not found.
[Sat Apr 20 15:24:43 2013] [debug] Nothing has been rendered, expecting delayed response.
[Sat Apr 20 15:24:47 2013] [debug] Inactivity timeout.
(진작 로그를 확인했어야 한다.)

- [수정] chatAction.html.eptemplates/chat_control/에 만든다.

- 페이지는 보이는데 제대로 기능이 동작하지 않는다.
[Sat Apr 20 18:44:35 2013] [debug] Routing to controller "Chat::Control" and action "wsAction".
[Sat Apr 20 18:44:35 2013] [error] Can't locate object method "send_message" via package "Mojo::Transaction::WebSocket" at D:/resources/reps/perl_workspace/chat/script/../lib/Chat/Control.pm line 20.

[Sat Apr 20 18:44:35 2013] [debug] Template "exception.development.html.ep" not found.
[Sat Apr 20 18:44:35 2013] [debug] Template "exception.html.ep" not found.
[Sat Apr 20 18:44:35 2013] [debug] Rendering inline template.
[Sat Apr 20 18:44:35 2013] [debug] Rendering inline template.
[Sat Apr 20 18:44:35 2013] [debug] 500 Internal Server Error (0.032355s, 30.907/s).

send_message 메서드가 없다고?
찾아보니 send 라는 메서드가 있다. 수정!

자알 된다.

전자정부 표준프레임워크 개발환경에서 servlet-api가 배포되어 에러가 나는 경우

- 아래와 같은 에러가 난다.
심각: Exception starting filter springSecurityFilterChain
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined

심각: Error configuring application listener of class org.springframework.security.ui.session.HttpSessionEventPublisher
java.lang.ClassNotFoundException: org.springframework.security.ui.session.HttpSessionEventPublisher

심각: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/common/error.jsp]
org.apache.jasper.JasperException: /common/error.jsp(2,62) Unable to read TLD "META-INF/c.tld" from JAR file "file:/C:/egovfrm/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/testprj/WEB-INF/lib/jstl-1.2.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

- 개발자들이 servlet-api-2.5.jar, jsp-api-2.0.jar가 배포되어서 나는 에러라고 한다.
전자정부 표준프레임워크 개발환경 2.5에서는 발생하지 않고, 2.0에서만 발생.
Server를 Clean하고, servlet-api-2.5.jar, jsp-api-2.0.jar[각주:1]를 제거하면 정상적으로 동작한다고 함.
매번 이래야 된다고.

- 먼저 Dependcy 설정을 의심.
provided로 되어 있음.

- 관련 글을 참고해서 해결
프로젝트의 Deployment Assembly에서 Maven Dependencies를 제거하고 war:inplace Goal(Run As - Maven build ...)을 실행시키면 된다.
(그래도 남아 있으면 Maven clean을 하던지[각주:2], WEB-INF/lib/*.jar를 모두 지우자)
Maven Dependencies에는 해당 라이브러리가 있지만 WEB-INF/lib/에는 없다.


  1. C:\egovfrm\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testprj\WEB-INF\lib\ [본문으로]
  2. maven clean 플러그인에서 WEB-INF/classes/와 WEB-INF/lib/를 지우도록 설정되어 있다면 [본문으로]

DbUnit + Unitils

- DbUnit을 좀더 사용하기 쉽게 Unitils를 이용해본다.

- unitils.properties
database.dialect=hsqldb
database.driverClassName=org.hsqldb.jdbcDriver
database.url=jdbc:hsqldb:file:res/db/data/tos
database.userName=sa
database.password=
database.schemaNames=public
#transactionManager.type=simple #simple로 해도 Spring Transaction 관련 라이브러리는 있어야 함.

- DbUnitTest.java
- DbUnitTest.xml : 같은 패키지에 넣어둔다. 파일명을 지정하지 않으면 클래스명과 동일한 데이터셋 파일이 필요함.
- 필요한 라이브러리
unitils-dbunit-3.3.jar
unitils-core-3.3.jar
unitils-database-3.3.jar
org.springframework.transaction-3.0.3.RELEASE.jar : 트랜잭션 관리를 Spring에 위임함.
commons-dbcp-1.2.2.jar
commons-pool-1.3.jar
commons-lang-2.3.jar
hsqldb.jar
dbunit-2.4.9.jar
slf4j-api-1.6.2.jar
slf4j-simple-1.6.2.jar

- 좀 더 테스트


DbUnit이 기본적으로 CLEAN_INSERT를 해서 데이터개수는 1이다.
이것을 확인하기 위해 테스트를 추가한다.
- 스프링을 사용하지 않고 있으면 귀찮겠다.
@DataSet 하나 쓰자고 ...
내가 어노테이션 하나 그냥 만들고 만다.

STS 설치 - Grails 플러그인 추가

- STS 다운로드
zip 파일로 된 배포본을 다운로드받고 압축을 푼다.

- Grails 플러그인 추가


- Grails requires a JDK
Grails 프로젝트 생성시 JDK를 필요로 하면 Installed JREs에서 설정한다. 

<URL>을(를) 열 수 없습니다. 인터넷 서버 또는 프록시 서버를 찾을 수 없습니다.

- 엑셀 파일을 열때 아래와 같은 창이 뜨면서 한참을 기다려야 된다.


- 연결 편집에서 필요없는 링크를 삭제한다.



- 삭제해도 안되는 경우 시작할 때 다른 문서에 대한 연결을 업데이트하지 않도록 한다.
(이렇게 하면 다른 문서에 대한 연결이 필요한 경우에는 문제가 생길수도 있을거 같다.)


- 매크로를 뒤져 봐도 이 연결에 대한 것을 못찾았는데, 이름 관리자에 있었음.
Ctrl + F3으로 이름 관리자를 열고 필요없는 항목은 지운다.

=-=> 이거는? 그리고 vba 속도향상에 있는 옵션도 있잖아.



[Grails] 게시판 만들기 6 - 인증

- 권한을 설정해서 인증 과정을 통과한 사용자만 글쓰기를 하도록 한다.
권한을 설정하는 방법은 많지만 필터를 사용한다.   =-=>이 방법들 조사해서 정리하고 링크!!!

- 필터 생성
grails> create-filters com.sample.auth.security

- 사용 도메인 생성
grails> create-domain-class com.sample.auth.User
grails> create-controller com.sample.auth.User
- login.gsp를 만든다.
grails> generate-views com.sample.auth.User
create.gsp를 login.gsp로 바꾼다. 몇군데 수정
필터에서 리다이렉트 시킨다.

- Bootstrap에 User 데이터를 넣어둔다. =-=>[todo] Bootstrap관련 글 하나 쓰고 거기로 다 모아. 그리고 링크

- http://localhost:8080/blog/entry/index를 요청하면 http://localhost:8080/blog/user/login으로 이동한다.






[Grails] Database Console

H2 database console
http://localhost:PORT/APPNAME/dbconsole




[Grails] 게시판 만들기 1

- 시작
> mygrails create-app blog
> cd blog
> grails //start mygrails
grails> create-domain-class com.sample.blog.Entry
grails> create-controller com.sample.blog.Entry
grails> run-app

- 스캐폴딩
EntryContoller를 클릭하면 404에러가 난다.
EntryContoller.groovy
다시 호출해본다.
아직은 입력 필드가 없다.

- 도메인 생성
Entry.groovy




- stats 로 확인

Grails - 2.2.0

Grails가 버전이 올라가면서 많은 부분이 바뀌었다.

개발환경에 대화형 모드를 사용했고
자동 완성 기능도 지원한다. Grails 명령어만 지원하는게 아니고, 패키지명에도 지원된다.
HSQLDB 대신 H2를 사용함.[각주:1] Database Console 제공
UI도 변경되었음.
기본적으로 jQuery를 사용
그리고 메세지가 한글이 지원된다.[각주:2]

- Hello World Example
> grails create-app helloworld
> cd helloworld
> grails
grails> create-controller hello
grails-app/controllers/helloworld/HelloController.groovy
def index() { render "Hello World!" }
grails> run-app


  1. 오늘 몇시간 사용해보고, PetClinic 예제도 돌렸는데, UserGuide를 보고야 알았다. 데이터 계층을 잘 추상화해서 개발하는 입장에서 차이점을 모를 정도다. [본문으로]
  2. 1.X에서 이것도 때문에 고생했는데 [본문으로]

Grails - Installation

  1. Download, extract the archive
  2. Set GRAILS_HOME, JAVA_HOME environment variables
  3. Add $GRAILS_HOME/bin/ to PATH
  4. Type grails -version to check installation

업무 설명

전체적인 업무 흐름을 먼저 설명해주자.
큰 그림을 그려주고.

시스템 구성과 흐름을 알려주자.

- 무턱대로 마구잡이로 설명하려는 경향이 있다.

cos.jar


- 크기 : 56KB
- 위치 : http://www.servlets.com/cos/
- 패키지
com.oreilly.servlet
com.oreilly.servlet.multipart
- Jason Hunter 아저씨의 파일 업로드 모듈


사용방법???

Excel에서 셀의 위치를 지정하기 / INDIRECT

입력된 값을 이용해서 셀의 값을 참조하고 싶다.




다른 시트라면
INDIRECT("Sheet2!A" & A1)
문자열만 제대로 넣어주면 되네.

Visual Studio 설치

- Visual Web Developer 2010 Express
http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express

닷넷프레임워크, SQL Server Express 2008, IIS Express?...한참을 설치한다.
Azure도?
설치하다가 멈춘거 같아서 프로세스를 죽이고 다시 진행.
다행히 다운로드를 처음부터 받지는 않는다.
Windows 7에서는 실패
Winodws XP에서 다시 시도, 몇 번을 재부팅하더니 겨우 설치, 뭘 잔뜩 설치해놨다.

제품 인증을 받으면 30일 평가판을 계속 사용할 수 있다.
도움말 - 제품 등록

- Visual C++

https://github.com/TooTallNate/node-gyp#installation
Microsoft Visual Studio C++ 2012/13 for Windows Desktop (Express version works well)
http://go.microsoft.com/?linkid=9816758

wdexpress_full.exe


Visual Studio Community 2013
https://www.visualstudio.com/products/visual-studio-community-vs
vs_community.exe

vs_community.exe


Visual C++ 2010 Express
http://go.microsoft.com/?linkid=9709949

vc_web.exe


Visual Studio 2010 Express All-in-One ISO.
http://go.microsoft.com/?linkid=9709969






구글 문서를 읽기 전용으로 보기

주소록을 공유하고 있는데 대부분 문서를 읽기만 한다.
읽기 전용으로 보는 방법이 몇 가지 있음.

1. Publish to the web을 이용하면 문서에 대한 URL만 알고 있으면 누구라도 접근이 가능하다.

회사 업무와 관련된 파일이라 문서를 공유한 사람만 보게하고 싶다.

2. HTML로 다운로드를 할 수 있는데 이것을 이용하면 읽기 전용으로 볼 수 있다.
원본 파일이 수정되어도 새로 고침을 하면 반영이 된다.

- 2015-04

html로 다운로드를 할 수가 없게 되었다.

문서가 변경되면 메일로 변경 내역을 받는데 그 링크를 이용하면 된다.

Ubuntu에서 터미널 열기

Ctrl + Atl + T

Ctrl + Shift + N




[Unix] cal

> cal
      11월 2012       
일 월 화 수 목 금 토 
             1  2  3 
 4  5  6  7  8  9 10 
11 12 13 14 15 16 17 
18 19 20 21 22 23 24 
25 26 27 28 29 30   


> cal -3 //Display the previous, current and next month surrounding today.
                            2012
        10월                   11월                   12월          
일 월 화 수 목 금 토  일 월 화 수 목 금 토  일 월 화 수 목 금 토 
...


> cal 2012
> cal 1 2012 //month year
> cal -A 2 //Months to add after.
> cal -B 2 //Months to add before.