'분류 전체보기'에 해당되는 글 1012

  1. 2014.05.06 Elasticsearch 맛보기
  2. 2014.05.05 할아버지와 대국! 1
  3. 2014.03.20 JCF를 이용한 집합 연산 단위 테스트
  4. 2014.03.14 [비교] 집합 연산
  5. 2014.03.12 WinMerge 공백 비교 안하기
  6. 2014.03.12 [Trac] Ticket 메일 템플릿 변경하기
  7. 2014.02.10 [Grails] 파일 업로드 - 여러 개의 파일을 첨부(데이터베이스에 저장)
  8. 2014.02.07 [Grails] Calendar Plugin 사용하기
  9. 2014.02.04 Grails 정렬 방법
  10. 2014.01.27 [Grails] 게시판 만들기 8 - 메세지 한글 처리
  11. 2014.01.23 [Grails] 게시판 만들기 7 - 사용자 정보 연결
  12. 2014.01.09 PC카메라의 내장 마이크를 작동되지 않게 하기
  13. 2014.01.03 PI(Process Inovation)
  14. 2013.12.01 IPython에서 그래프 그려서 설치 확인 - Python 3(matplotlib, NumPy, pandas)
  15. 2013.10.31 Django-Python Version
  16. 2013.10.24 PythonAnywhere + Bottle
  17. 2013.10.21 Bottle: Python Web Framework
  18. 2013.09.08 [Greasemonkey] 링크 주소 바꾸기
  19. 2013.09.08 Greasemonkey 스크립트 작성
  20. 2013.08.29 오늘은 뭐가 제일 재미있었어?
  21. 2013.08.22 “왜 사자가 멍멍 짖어요?” 짝퉁 중국 동물원
  22. 2013.08.21 MLB 영어
  23. 2013.08.13 똑똑한 파이어폭스
  24. 2013.08.12 악바리 손아섭
  25. 2013.08.11 스콜라스 3D 퍼즐
  26. 2013.08.06 저가 3D 퍼즐 : 절대 사지 마시오
  27. 2013.08.04 머핀 만들기
  28. 2013.08.03 마우스가 올라가면 나타나는 기능 버튼
  29. 2013.08.03 종이나라페스티벌
  30. 2013.07.27 [ValidationException: HV000041: Call to TraversableResolver.isReachable() threw an exception.]

Elasticsearch 맛보기

초간단 맛보기

https://www.elastic.co

설치

Download and unzip

 

실행

Run bin/elasticsearch

 

설정

7.15.2[각주:1] elasticsearch.yml에 xpack.ml.enabled: false 추가

org.elasticsearch.ElasticsearchException: X-Pack is not supported and Machine Learning is not available for [windows-x86]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml

 

확인

http://localhost:9200/

{
  "status" : 200,
  "name" : "Quicksilver",
  "version" : {
    "number" : "1.1.1",
    "build_hash" : "f1585f096d3f3985e73456debdc1a0745f512bbc",
    "build_timestamp" : "2014-04-16T14:27:12Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

 

이걸로 끝!

 

하나 더 실행하면 9201로 실행됨.

 

- 1.5.2 버전에서는 JDK 1.7이 필요한데, 1.8을 권장함.

 

  1. 2021-12-07 [본문으로]

할아버지와 대국!


JCF를 이용한 집합 연산 단위 테스트

[비교] 집합 연산

- Java
- Groovy
a = [1, 2, 3]
a.class
Result: class java.util.ArrayList

- Python
- SQL
http://pantarei.tistory.com/1197

-----------
JavaScript로 Set(집합), 관련 함수(합집합, 교집합, 차집합)들 구현하기
https://jun-choi-4928.medium.com/javascript%EB%A1%9C-set-%EC%A7%91%ED%95%A9-%EA%B4%80%EB%A0%A8-%ED%95%A8%EC%88%98-%ED%95%A9%EC%A7%91%ED%95%A9-%EA%B5%90%EC%A7%91%ED%95%A9-%EC%B0%A8%EC%A7%91%ED%95%A9-%EB%93%A4-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-e7d4d820b03c
Set()은 ie11부터...ㅋㅋ

jQuery 합집합, 교집합, 차집합, 대칭차
https://zetawiki.com/wiki/JQuery_%ED%95%A9%EC%A7%91%ED%95%A9,_%EA%B5%90%EC%A7%91%ED%95%A9,_%EC%B0%A8%EC%A7%91%ED%95%A9,_%EB%8C%80%EC%B9%AD%EC%B0%A8




WinMerge 공백 비교 안하기

내용이 다르다고 표시되는데 차이점이 안보인다. 탭 때문인거 같다.


공백을 비교하지 않도록 하면 된다. 공백-변경 내용 무시로 설정


[Trac] Ticket 메일 템플릿 변경하기

TOW\Python\share\trac\templates\ticket_notify_email.cs Ticket 링크가 밑에 있어서 불편하다. 위에도 추가

[Grails] 파일 업로드 - 여러 개의 파일을 첨부(데이터베이스에 저장)

[Grails] Calendar Plugin 사용하기

http://grails.org/plugin/calendar

> grails install-plugin calendar


start가 Date형으로 선언되어 있으면 Grails가 알아서 처리해 준다. (start를 display:false로 해서 등록 화면에서 나타나지 않게 해야 함.)

Grails 정렬 방법

[Grails] 게시판 만들기 8 - 메세지 한글 처리


- 기본 메세지 파일을 복사해서 한글 메세지 파일을 만든다.
grails-app\i18n\messages_ko.properties

...
default.paginate.prev=이전
default.paginate.next=다음
...
default.deleted.message={0}이(가) 삭제되었습니다.
...
default.home.label=Home
default.list.label={0} 목록
default.add.label=Add {0}
default.new.label=새 {0}
default.create.label=Create {0}
default.show.label={0} 보기
default.edit.label={0} 수정
...
entry.label=글
entry.title.label=제목
entry.lastUpdated.label=일시
entry.content.label=내용
entry.user.label=글쓴이
entry.comments.label=댓글
entry.tags.label=태그

comment.label=댓글
...

[Grails] 게시판 만들기 7 - 사용자 정보 연결

글을 입력할 때 세션의 사용자 정보가 들어가도록 해보자.

- Entry에 User 추가, nullable:false

- EntryController 수정
grails> generate-controller com.sample.blog.Entry

User를 test라는 사용자로 입력했는데 실제 입력된 데이터는 admin이다.
그러나 수정하는 경우에는 update()가 실행되므로 EntryController를 수정해야 한다.

- 입력화면에서 보이지 않게 하려면 display를 false로 둔다.  EntryController#update()를 수정하지 않아도 된다.
grails> generate-views com.sample.blog.Entry
entry/_form.gsp에서 User 부분을 없앤다.


이 상태에서 GSP를 만들지 않고 수정 화면에서 user가 보이게 하는 방법

PC카메라의 내장 마이크를 작동되지 않게 하기

장치관리자에서 해당 장치를 찾아서 사용하지 않도록 한다.


다른 카메라는 PC Camera로 표시되기도 한다.

PI(Process Inovation)

CJ프레시웨이, '수익성 개선' PI 나섰다

CJ 프레시웨이가 SCM(Supply Chain Management, 공급망 관리) 역량 강화 및 수익성 개선을 위해 외부 컨설팅을 받는다. 현 비즈니스 상의 주요 이슈들을 해결하고, 프로세스 혁신을 통해 식자재 유통 산업 내 톱티어(Top-Tier) 자리를 확고히 한다는 목표다.

14일 관련업계에 따르면 CJ프레시웨이는 최근 국내 주요 컨설팅 업체를 대상으로 PI(Process Inovation) 프로젝트에 대한 제안요청서(RFP)를 발송했다. PI란 운영·관리·조직 등 사업 전반에 대한 재정비 및 개선 작업을 일컫는다.

특히 이번 프로젝트는 SCM 역랑을 강화하고 IT시스템을 일원화하는데 초점이 맞춰져 있으며, 2009년 출범한 조인트벤처 '프레시원'과의 SCM 및 ERP 통합 관리 시스템 구축 또한 병행된다.

IPython에서 그래프 그려서 설치 확인 - Python 3(matplotlib, NumPy, pandas)

Enthought Python Distribution (EPD)나 Python(x,y) 배포판이 좋다고 함.
그러나 기존에 설치된 Python을 삭제하기 싫어서 직접 설치함.

- Python 3.3과 easy_install이 설치된 상태

- IPython
http://ipython.org/index.html
http://ipython.org/ipython-doc/stable/install/install.html

> easy_install pyreadline
> easy_install ipython
> iptest3
//에러
> easy_install nose
> iptest3


- 그래프 그려서 설치 확인하기

> ipython3 --pylab
...
ImportError: No module named 'matplotlib'


- matplotlib
http://matplotlib.org/index.html
http://matplotlib.org/downloads.html
matplotlib-1.3.1.win32-py3.3.exe
pip로도 설치됨.

> ipython3 --pylab
...
ImportError: matplotlib requires dateutil


- dateutil
> easy_install python_dateutil

> ipython3 --pylab
...
ImportError: matplotlib requires pyparsing

- pyparsing
> easy_install pyparsing

> ipython3 --pylab
...
ImportError: No module named 'numpy'


- NumPy
http://www.numpy.org/
http://www.scipy.org/scipylib/download.html
numpy-1.8.0-win32-superpack-python3.2.exe //버전이 맞지 않아서 설치가 안된다.
Unofficial Windows Binaries for Python Extension Packages에서 numpy-MKL-1.8.0.win32-py3.3.exe를 받아서 설치
Windows에서는 pip를 이용하면 MKL이 설치되지 않아 scipy 설치시 문제가 된다. Numpy+MKL을 설치한다.

> ipython3 --pylab
//OK

- pandas
> easy_install pandas

> ipython3 --pylab
In [1]: import pandas
In [2]: plot(arange(10))


- IPython HTML Notebook
> ipython3 notebook --pylab=inline
...
ImportError: No module named 'zmq'

- pyzmq
> easy_install pyzmq

> ipython3 notebook --pylab=inline
...
ImportError: No module named 'tornado'

- tornado
> easy_install tornado

> ipython3 notebook --pylab=inline //제대로 실행이 되면 브라우저가 자동으로 열린다.

- Notebook을 하나 생성하고 코드를 입력한 뒤, 실행시켜본다.



Django-Python Version

https://docs.djangoproject.com/ko/3.1/faq/install/

https://docs.djangoproject.com/en/1.6/faq/install/#what-python-version-can-i-use-with-django

Django version Python versions
 1.5  2.6, 2.7 and 3.2, 3.3 (experimental)
 1.6  2.6, 2.7 and 3.2, 3.3
 1.7 (future)  2.7 and 3.2, 3.3

Python 3에서도 사용가능함. 윽...가상머신...

2021-03-14 Django에서는 Python 3을 사용해라.

django2.x vs django3.x 차이가 많은가요? -> 거의 차이 없습니다.[각주:1]

 

> python --version
Python 3.3.1

> python -c "import django; print(django.get_version())"
1.7.2

# python -m django --version

 

  1. 거의 차이 없습니다.장고 3.x 를 설치한 상태에서 이 강의를 따라하셔도 문제가 없습니다. 

    단, 관계형모델 정의할 때, 필드 중에 on_delete=True라고 하는 부분이 강의에 나오는데, 이때 on_delete=models.CASCADE로 하시면 됩니다. 

    나머지는 모두 동일합니다.  [본문으로]

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 - 편집할 수 있다.




오늘은 뭐가 제일 재미있었어?

오늘은 뭐가 제일 재미있었어?
뭐가 제일 신났어?
뭐가 제일 고마웠어?
뭐가 제일 맛있었어?

“왜 사자가 멍멍 짖어요?” 짝퉁 중국 동물원

http://www.hani.co.kr/arti/international/china/599669.html

얼마전 중국 허난성 뤄허시 동물원을 찾았던 류 아무개씨는 깜짝 놀랐다.
류씨는 동물원을 구경하며 6살배기 아들 둥둥에게 동물 울음소리를 가르쳐 주고 있었다. 아프리카 사자 우리 앞에 도착한 류씨는 아들에게 사자는 “어흥”하고 운다고 말했다. 그러나 둥둥은 고개를 저으며 말했다.
“엄마가 저를 속인거 아니에요? 보세요, 사자가 이렇게 멍멍하고 울고 있잖아요.”
그 말을 들은 류씨는 우리 안을 자세히 들여다봤다. 아프리카 사자라고 적힌 우리 안엔 티벳산 개인 짱아오(마스티프) 한마리가 들어있었다. 티베트 유목민들이 양치기용으로 사육하는 짱아오는 털이 북숭하고 몸집이 커 생김새가 사자와 유사한 맹견류다.
...
홍콩 <사우스차이나모닝포스트>는 “과거 중국에서 개를 하얀색과 검은색으로 염색해 팬더로 둔갑시키는 등 애완동물의 털을 염색해 다른 동물로 속이는 경우는 종종 있었다. 하지만 이번처럼 터무니없는 가짜 전시는 전례가 없어 비난이 빗발치고 있다”고 전했다.

ㅋㅋㅋ


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



똑똑한 파이어폭스

링크가 걸려 있지 않아도 URL을 나타내는 글자라면 링크로 인식한다.



악바리 손아섭

김현수가 롤모델이라고 했던게 기억나는데.
예전에는 이런 당돌한 놈이 있나했었는데 니가 더 낫다!

악바리 정근우가 극찬한 '닮은꼴 손아섭'

스콜라스 3D 퍼즐




저가 3D 퍼즐 : 절대 사지 마시오

에코마트에서 1000원 주고 산 3D 퍼즐
조립도 제대로 되지 않고, 종이에서 염료가 묻어 나온다.

 무

머핀 만들기

워니와 함께, 여름방학

영등포 에코마트 2층



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

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

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



종이나라페스티벌

영등포 신세계백화점 6층


이거 말고도 몇 개 더 있었는데, 지원양 별로 흥미 없음.



[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를 넣지 않아서 발생했다.