미칠듯한 망상의 부산물

Heideloon.egloos.com

포토로그

 


[Select2] 태그기능 한글입력 문제 트러블슈팅(자바스크립트/JavaScript/JS/Select2/JQuery) JavaScript/JQuery/Spring

2020.7.14

[대상]
select2 js 플러그인(태그 기능 사용용도)
버전 4.0.8

[증상]
tags 기능 사용 시 한글입력에 중복입력 에러 발생

[해결] : 버전 낮출것(4.0.2 정도로... 4.0.5 이상에서는 한글,일본어,중국어 등 언어입력 이상현상 발생)
ㅅㅂ..... IT 후진국 한국은 역시 애매모호한 트러블슈팅에 대해 한국어 해결방법이 안나온다.

이게 참 애매한 문제였던게, 최소글자수를 4개로 제한해서 기능을 적용했는데 최소글자수까지는 한글이 정상 입력되는데, 그 이상부터 한글이 중복으로 '아메' 입력하면 '앙ㅁ메ㅔ' 이런식으로 막장트리 타는 현상 발생

Option값, 인코딩 등등 건드려가며 별별 생쇼를 다하다가 안되겠어서 검색 시작 

select2 tags 한국어 문제, select2 tags korean type error, select2 tags language error 등등...
별별걸 다 검색해봤는데 안나온다.
Stack Overflow 망망대해를 열심히 뒤져봤는데 안나옴.

검색하다 JSFiddle에 select2 예문이 있어서 그쪽에서 테스트봤는데 잘됨...뭥미...
버전문제인가 하는 방향까지 접근해서 봤는데 JSFiddle에 올라와있는 select2 버전은 4.0.0 이고 내가 쓴 버전은 4.0.8로 더 높다
버전이 낮은것도 아니고 높은 상태라서 버전문제는 아닌가보군 싶어 제껴두고 계속 검색하다가

'select2 tags korean' 으로 검색해서 원하는 정보스러운걸 하나 건짐

제목은 : Select2 tags can't write correctly Japanese, Korean, Chinese

들어가서 내용들을 보니 필자는 4.0.5 버전에서 겪은 이슈였고, 답변들이 다 4.0.2로 낮추라는거더라...
필자도 낮춰서 해결했다더라...
설마...아오설마... 하면서 버전다운 해서 써보니 잘된다.

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
왜 높은버전에서 더 안되냐고요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
여튼 해결.

한국어 결과가 이거 하나라도 나와서 고생을 덜 하시길 하는 마음에 꾸역꾸역 적어봄

0.PyQt5 시작 : Anaconda PyQt5 Pyinstaller 대강(Windows7 64bit) Python

ㅁ2019.4.17 최초 작성
ㅁ과정 : PyQt5를 사용해서 UI를 만들고, exe로 컴파일해서 실행해보는 부분까지
ㅁ환경 : Windows7 64bit
ㅁ사용
-Anaconda
--QT Designer : UI 에디터 Tool
--PyQT : UI 패키지
--pyuic : UI -> Py 변환
--pyinstaller : py -> exe 변환
-PyCharm : 에디터 

ㅁ요약(설치->창띄우는 프로그램 실행까지)
*Anaconda 설치를 설명해둔 블로그 : https://tariat.tistory.com/54

-QT Designer 실행 : 아나콘다 설치폴더/library/designer.exe
(혹은 /pkgs/~~로 길게 나열된 디렉토리에도 있는데.. 동일한 파일로 보이니 library꺼 사용)
--UI 편집 후 저장 : test.ui

-아나콘다 실행 : Anaconda Prompt
--PyQt5 최신버전으로 재설치 : pip install pyqt5
*아나콘다 설치하면 기본으로 깔려있긴 한데, 컴파일 과정에서 Module not found 오류가 발생했다. 재설치하니 해결
--pyinstaller 설치 : pip install pyinstaller
--ui 컴파일 : pyuic5 test.ui -x -o test.py
* -x 옵션을 넣어야 창 띄우는 실행코드까지 생성된다!!! 명심
--exe 파일 생성 : pyinstaller --onefile test.py
* --onefile : 한개 exe에 다 넣기

>기본적인 구성은 완료하였으므로 이제 내부 코드에 원하는 이벤트들을 붙여서 사용하면 됨

요약끝.

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

ㅁ발단 및 설치
파이썬 UI 관련하여 찾아보니 생각보다 간단히 정리된 글이 없다... 파이썬으로 UI 짜는 사람이 적기 때문일까.

여튼, 쓰려는 라이브러리가 있는데, 늘 자바나 자바스크립트, JSP 기반으로 프로그램을 짜던터라 이번에도 해당 방식을 고민했었는데, 하려고 보니 난관에 봉착. 자바 스크립트는 해당 라이브러리의 사용을 위해 Node.js 서버를 구동해야하는 이슈가 있고(나는 서버를 쓰면 안되는 환경) 
자바는 해당 라이브러리가 제공해주는 버전이 C 보다 낮은데다가 그 낮은 버전의 기능이 치명적으로 구리다..!
(라이브러리가 기본 C 구현에 자바 래핑이라 버전을 못따라가는듯)

그래서 울며 겨자먹기로 C기반의 프로그램을 고민하게 되었다.
MFC로 짤까 했는데 MFC와 C++은 본능적인 혐오가 있는지라 배제

기왕 하는거 파이썬이나 공부해볼까 하는 생각에 파이썬 기반의 UI를 찾아보기로 했다.

찾아보니 자바 스윙마냥 PyQt 라는 이름의 UI 지원 Tool이 있기에 고고싱~

따로 깔기 귀찮았는데 때마침 아나콘다(Anaconda)라는 패키지가 있더라.

현재 기준 PyQt5가 최신이고 해당 버전을 지원해주길래 망설임 없이 설치
*3.7버전 64bit graphical for window 로 설치
*설치할 때 보면 환경변수를 윈도우에 박을지 아닐지 선택하는 부분이 나온다.
default는 Off고 On은 비추천이라 함. 만일 체크하면 Dependancy 등등의 이유로 경고를 안내함.
그래서 왜지 하고 보니 따로
Anaconda Prompt(윈도형식) 및
Anaconda Powershell Prompt(리눅스형식)를 제공해주기 때문이었다.
실제 아나콘다용 파이썬 쓸 때는 cmd 프롬프트가 아닌 제공해주는 프롬프트를 실행해서 할 것.

에디터는 파이참이 좋다길래 설치
*무료인 Community 버전 쓰자

ㅁQT Designer 사용
PyQt에서는 QT Designer 라는 프로그램으로 UI Tool을 제공해준다.
이클립스에서 자바스윙 연동하는 것처럼 기본 파이썬 에디터랑 결합해서 편집을 제공해주는 방법이 있으면 좋을텐데, 찾아본 바 그렇게까지는 제공해주지 않는듯.
일단 안내해주는 방식은 UI, 코딩 따로였다.

사용하려고 보니 해당 프로그램은 따로 설치할 필요 없이 아나콘다를 설치하면 내장되어있다. 개꿀!
경로는 아나콘다 설치폴더/library/designer.exe
입맛대로 만든 후 .ui 파일로 저장하자.

ㅁUI 프로그램 생성
Designer를 이용해서 UI 파일을 생성해준 후, 해당 UI를 파이썬에 띄우는 방법은 2가지정도가 있다고 한다.
1) py 소스코드에 ui 파일을 로드하여 사용
2) ui파일 자체를 py 코드로 변환하여 사용

위에서 1) 의 경우가 수정 보완이 좋다곤 하는데, 귀찮아서 배제...
2) 의 경우로 진행!!

ui파일을 py 코드로 변환하는데는 pyuic 라는 명령어를 사용해야 한다.
사용하는 PyQt5 에서는 pyuic5 버전으로 사용
>pyuic5 test.ui
 : 위와같이 명령어를 적으면, 해당 UI가 어떤 코드로 변환되는지 콘솔에 출력해준다.
하지만 우리는 py 파일로 만들어야 하므로
>pyuic5 test.ui -o test.py
 : -o 옵션을 통해 output 파일을 지정해주었다. 이렇게 하면 화면에 출력되던 py 코드가 파일로 저장된다.
하지만, 이렇게 하면 UI가 py 코드로 변환만 될 뿐, 실행 가능한 코드로 완성되진 않는다. 우리는 창을 띄우는 파이썬 코드를 만들어야 하므로
>pyuic5 test.ui -o test.py -x
 : -x 옵션을 통해 UI 를 띄우는 실행 코드까지 포함한 파이썬 파일이 생성된다. 이렇게까지 하면 원하는 py 파일 완성!

>python test.py 실행하면 실제 UI가 뜨는지 테스트할 수 있다.

ㅁexe 파일 생성
exe 파일을 생성해주는 방법중에 가장 간단한 방법은, pyinstaller를 설치하는 것이다.
anaconda 환경에서는
>pip install pyinstaller 명령어로 간단히 설치 가능.
사용법 또한 간단하다.
>pyinstaller test.py
매우간단.... 헌데 이렇게 만드는 경우 exe 파일 외 부산물들이 많이 생겨서 번거롭다.
그래서 있는 옵션이 exe 하나의 파일로 패키징하는 --onefile 옵션이다.
>pyinstaller --onefile test.py
이렇게 하면 한개 파일로 프로그램이 생성된다.
창 하나만 해서 프로그램 만들어봤는데 용량이 34메가 ㅋㅋㅋㅋ UI 관련 라이브러리들 용량이 꽤 되는듯

이렇게 해서 완성!

이런저런 게시물들 찾으면서 혼재되어있는 정보들이 귀찮아서 기억저장용으로 작성해둔다.
괜히 다른것들 이것저것 따라했다가 오류만 계속나고 고생만 죽어라했기에.... 그냥 PyQt5 쓸거면 이렇게 하시라

아하하 Just Thinking

문득 이라는 단어가 잘 들어맞는 듯이, 문득 떠오른 나의 이 이글루를 정말 오랜만에 방문해본다.

일있고, 일없고, 나에겐 언제나 기로의 순간들인듯하다.

요즘엔 이것저것 빠져 지내면서도 내 미래를 위한 어떤 활동들을 하고 있다.

아마 5월쯤에는 내가 원하는 삶을 살지, 아니면 타협하는 삶을 살지가 결정될듯.

사실 지금은 따로 집중해야 할 것이 명확히 있는데 곁가지로 신경쓰이는 것들이 있어 온전히 집중을 못하고 있다.

꾸역꾸역 시간을 낭비하고 있는 나에게 정신을 차릴겸 써보는 글.

나중에 보면 어떤 기분이 들까.

싸지르고 버려진 글 Just Thinking

내가 하는 어떤 게임에서 대리 관련글로 논란이 생겼는데,
너무 자기말이 맞다고만 생각하는 것 같아 반박글 겸 의견을 피력하려 하였으나...
논란이 가중될 것 같아 적어만 두고 리플을 올리지 않았다.
헌데 이렇게 적어버린 글이 사라져버리는 것이 아쉬워 그냥 여기에 저장
-하려했는데 더 과열되길래 그냥 올려버린...ㅡㅅ- 그럼 이 게시물은 의미가 없어지는것인가아아아아

---

이런데서 글을 적는게 논란을 가중시킬 수도 있는 부분이라 조심스럽긴 한데,
글이 너무 이상한 방향으로 흘러가는 것 같아 한자 적어봅니다.
일단 제 입장을 얘기하자면 저는 대리를 싫어하고 대리를 맡기지도, 해주지도 않습니다.
대리를 할 바엔 그냥 제가 가능한 점수로 있는게 좋다고 생각하는 1인입니다.
허나 그건 제 기준일뿐이고, 사람마다 각각의 논리와 가치관은 있다고 봅니다.

지금 몇분의 의견을 보면 뭐랄까... 대리를 '불법' 의 요소로만 보시는 것 같네요.
그 논리를 내세우기 위해 한분은 현실사회의 대리시험을 예로 들고 계시는데 저는 이것과 그것은 엄연히 같은 잣대를 대기 어려운 이슈라고 봅니다.
왜냐하면 현실의 어떤 시험에서의 ID는 순수하게 그 사람임을 증명하기 위한 수단이고  
이 게임의 계정은 그 사람을 증명하는 수단이 아니기 때문입니다.

오히려 현실에서의 대리시험 이슈는 게임에서 수치적인 부분을 조작하는 핵과 더 밀접하다고 할 수 있습니다. 대리시험이 현실에서 시험 ID와 일치하는 사람이 아닌 사람으로 스펙조작이 이루어지는 것 처럼 게임내에서도 핵은 게임 캐릭터-또는 어떤 시스템적인-의 스테이터스나 특질을 조작한 채 경쟁에 임하기 때문입니다.
 
이 게임에서 대리가 일종의 조작이나 잘못된 행위냐? 저는 아니라고 봅니다. 왜냐면 이게임은 시스템적으로 계정양도가 이루어질 수 있게끔 이루어져 있습니다. 그리고 개인과 매칭시킬 수 있는 어떤 연동을 제공해주지도 않죠. 한마디로 게임의 유저를 강제하지 않는다는 겁니다. 일종의 플스같은 콘솔게임과 비슷한 시스템이죠.

일단 비유를 위해 이 게임을 온라인으로 랭킹을 매기는 일종의 콘솔게임류로 분류 해보겠습니다.
(왜냐하면 이 게임은 솔로잉이 주 메타고 온라인적인 요소는 스코어 비교, 부차적인 부분을 차지하는 멀티플레이정도밖에 없기 때문입니다. 온라인 기능을 어느정도 지닌 플스같은 게임기의 타이틀을 생각하시면 이해가 쉬울겁니다.)
누군가 콘솔 게임을 하다가 막히는 부분이 생겨 옆 친구에게 깨달라고 잠시 넘겨주었습니다. 그렇게해서 클리어를 했습니다. 
그럼 그건 대리로써 지금처럼 취급되어야 할까요?
상대적인 이득이 없기 때문에 괜찮다?
그럼 그게 온라인으로 랭킹이 매겨지고 랭킹에 따라 디지털적인 보상이 주어진다면?
지금 이 상황과 비슷해지니 그건 하지말아야 할 불법적인 것이 되는 것일까요?
그건 누가 정하나요? 게임 약관에 그런 부분이 명기가 되어 있나요? 
아니면 어떤 과반의 통계적인 동의라도 있는 건가요?
...이건 법제나 규범적인 부분이 아니라 다분히 도덕적인 이슈입니다. 

법제화 된 것을 어기는 것은 불법이 맞습니다. 하지만 이 게임에서의 대리 부분은 규정되어있는 어떤 규범도 어긴것이 없습니다.
단지 그로인해 상대적인 이익을 취하고, 반대로 상대적인 불이익을 받는 사람이 생기기 때문에 지양해야 할 도덕적 가치로써 인식이 되고 있는것 뿐.
..이하 생략

으아아 Just Thinking

뭐랄까.... 굉장히 낭비도 하고 뭔가 비일상적인 삶들을 계속 살고있는 것같다.

원래 내가 생각했던 대로 이곳을 소홀히 한다는 것은 그만큼 나에대한 여유가 없다는 반증이랄까...

퀘도에 다시 올리기 위한 의미로 슬쩍 써보는 글.

그간 많은 일들이 있었다. 국토종주는 이제

동해 하단부, 제주도 정도만 돌면 그랜드 슬램 달성이고
뭔가 일에서 개인적인 상도 타고
동아리에서 단체상도 타고

정신없이 달려 12월에 다다른 즈음. 조금은 나 자신에 대한 정리가 필요하다는 생각이 들었는지 문득 떠올라서 들르고,
휴면계정을 풀고, 글을 올리고있는 내가 있다.

1 2 3 4 5 6 7 8 9 10 다음