Category Archives: NOTE

CrossPlatformApp 개발 툴 목록

https://en.wikipedia.org/wiki/List_of_platform-independent_GUI_libraries

https://www.qt.io/
http://appjs.com/
https://electron.atom.io/
https://www.wxwidgets.org/
https://wiki.eclipse.org/Rich_Client_Platform

대강 이정도가 있는데

최근 관심을 끄는것은 역시 js진영. electron.
html 기반으로 돌아가서 화면이 깔끔하고 화면만들기가 쉽다.
웹개발하는것처럼 데스크탑 앱을 만들면 된다.
atom 에디터의 엔진을 사용하는 것 같은데… 그냥 그정도 성능으로 돌아간다고 보면 된다.

이전까지는 데스크탑솔루션 하면 이클립스 RCP가 많이 사용됐는데… 요즘은 힘이 좀 빠진 것 같다.
자금이 안 들어오는지…
UI가 크게 예쁠필요가 없다면 그렇게 이것저것 따질필요 없이 자신이 익숙한 언어에서 지원하는걸 사용하면 될 것 같다.
자바 개발자라면 그냥 electron을 쓰는게 나을 것 같고….
이클립스 rcp는 4.x버전을 만들어놓고도 예제는 죄다 3.x버전을 올려놓고 이건 뭐 …. 거의 연구하면서 써야되는 수준이라 포기했다. 자바개발자 대부분 웹개발자고, 웹개발자들 어차피 js는 어느정도 할 줄 알테니 튜토리얼/도큐먼트 잘 나와있는 electron을 추천.
정~RCP를 해야겠다면 예제 참고
http://kosate.tistory.com/187
http://www.vogella.com/tutorials/EclipseRCP/article.html
https://www.nogdoo.com/article/E4.html

Eclipse RCP + Maven 조합 연구

2015년쯤에 갑자기 꽂혀서 찾아보다가…

포기했던 부분.

이클립스 RCP는 멀티플랫폼 애플리케이션 제작용인데

…..

구조 자체가 복잡하고 관련 자료도 별로 없다.

그리고 의존성 관리하는데 maven지원해주면 좋을 것 같은데 이런거 지원이 없었다.

지금은 gradle 지원이 되지 않을까???

근데 이제 새로 시작할거라면 Electron을 쓰는게 나아 보인다.

제대로 확인을 못 해보긴 했지만… 튜토리얼 돌렸을 때는 괜찮아 보였다.

 

——————————————————————————-

org.eclipsercp.hyperbola project running code with jdk7

메이븐적용은중단됨. 이클립스 플러그인/RCP제작에 maven은 적합하지 않음 tycho플러그인도 의존성을 관리해주기보다는 프로젝트 통합과 CI를 위한 역할만으로 한정되는 것으로 보임 p2업데이트사이트를 편리하게 제작할 수 있다고 하는데 이 부분은 조사를 못함 tycho : https://github.com/eclipse/tycho

이 문제를 해결하려는 몇가지 시도가 보이긴 한다.

  1. plugin을 따로 제작하여 이를 해결하려는 시도가 있었으나 편법에 가까운 방법을 사용하고있다.https://github.com/reficio/p2-maven-plugin
  2. 설정파일과 maven의 싱크를 억지로 맞추는 노가다작업

maven은 자체적으로 의존성을 관리하고 소스코드와 도큐먼트를 자동으로 링크시켜주는 부분이 편리해서 애용했는데 이 부분이 제대로 지원이 되지 않는다면 굳이 집착할 필요는 없어 보인다.

실리콘밸리 기업문화

인터넷 어디서 봤던거 메모

Facebook.
Eating your own dog food.

Apple.
“We can see around corner.” = 미래는 우리가 만들어서 보여주는 거지 묻는게 고객이나 사용자에게 질문하는 게 아니다.
Steve wants… Steve said…
극도의 장인정신을 가지고 제품과 서비스를 만들어서 이를 많은 사람들에게 제공함
실제 Apple 에서는 고객이 새로 제품을 받아서 처음으로 Unboxing 하는 경험을 굉장히 중요하게 여겨서 패키지의 재질과 박스를 여는 Task만을 하는 잡도 있다고 함

PIP(Perfomance Improvement Plan)라고 해서 3개월동안 구체적인 목표를 수치화해서 이를 달성하지 못하면 해고시킴

Python Anaconda – 버전관리? 환경구성?

https://conda.io/docs/user-guide/tasks/manage-environments.html

환경 목록

conda info –envs

환경 생성

conda create –name envname python=3.6

 

Activate the new environment:

  • Windows: activate myenv
  • macOS and Linux: source activate myenv

 

환경 삭제

conda remove –name envname –all

설치된 패키지 목록

conda list

Linux Chmod 스타일 권한 숫자 만들기.

JWT토큰 관련 설계를 만들다가

파라미터를 짧게 만들려고

웹사이트 화면이나 API에서 사용할 수 있는 권한의 종류는 생각보다 많지 않아서 미리 정의가능하다.

 

좀 더 나올수도 있지만

Chmod Style

여기서 숫자 규칙은..

어떤숫자 조합을 더해도 중복숫자가 없어야한다.

이 규칙에 따라 위의 정의된 권한에 숫자를 부여해보면

ex) WRITE = VIEW + READ + 1

이런 규칙으로 계산을 하면된다. 어차피 2씩 곱하는거나 마찬가지.

숫자를 더 줄일 규칙이 있는지 찾아봐야겠다.

 

인코딩 지옥탈출 가이드

깨지는 모양으로 인코딩 판별하기

이미지는 생각나면 추가

가오리 : EUC-KR을 UTF-8로 인식하고 열면

수식 : UTF-LATIN1 으로 인식하고 열면

외계어 :

쫩쫠뻴 : utf를 EUC로 인식하고 열면

참고

한글 인코딩의 역사

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0LMWJ&articleno=8181316

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0LMWJ&articleno=8181317

한글 인코딩 – 개념

https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B8%80_%EC%99%84%EC%84%B1%ED%98%95_%EC%9D%B8%EC%BD%94%EB%94%A9

https://namu.wiki/w/%ED%95%9C%EA%B8%80%20%EC%9D%B8%EC%BD%94%EB%94%A9

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

http://studyforus.tistory.com/167

http://mwultong.blogspot.com/2006/12/hwp-unicode-utf-8.html

https://ko.wikipedia.org/wiki/UTF-8

http://ssaemo.tistory.com/28

https://encoder.mattiasgeniar.be/index.php

https://docs.python.org/3/howto/unicode.html#encodings

코드

어디거 퍼온거 합쳐놓은거

 

[소프트웨어] Kotlin+Java-SpringBoot 프로젝트 진행 후기

프로젝트라고 할 수준은 아니고 새로 만드는 마이크로 서비스에 꼬출린을 적용하다가 겪은 일들

사용기술 키워드

Java,Kotlin,SpringBoot,JPA,QueryDSL,RESTful API

문제상황

문법

TypeScript,Swift,Kotlin 문법이 상당히 비슷하다.

세개 언어의 합병은 불가능할까?

Reflection, Ananotation

JVM언어라 최종적으로 동일한 바이트코드가 나오는거니까 리플렉션도 동일한 형태로 나오겠지 생각했는데 아니었나보다.

리플렉션이 필요한 부분에서 오류가 나는 것 같다.

QueryDsl, jackson, Lombok(은좀다르지만)

 

생성자 선언

이건 좀 다른데.. 그냥 언어에 익숙하지 않아서 그런면도 있고

되게 편한것처럼 써있던데 막상 써보면

문법이 그리 편하지는 않다.

Lombok

Java와 혼용시 lombok 적용이 안된다.

컴파일타임 문제때문에…

같은 모듈에서 Java+Kotlin을 쓰는경우 오류가 난다.

해결방법은…(회피방법은?)

core<–web

core에 Java를 쓰고 web의 kotlin에서 가져다 쓰는건 가능하다.

근데 왜 쓰나?

그냥 한 번 써볼라고

그리고 아직 많이는 안 써봤찌만 쓰다보니 언어 자체가 조금 심플함이 좀 있다.

SSO(SingleSignOn) – Solution vs 직접개발

개요

요즘엔.. SSO 관련 개발은 거의 필수인데
막상개발하려면 여기저기 다 있는거 또 만드는 것 같은 생각이 들지만…
오픈소스나 뭐 갖다 쓰려고 하면 또 마땅한게 없다.

대안

OpenSource

JOSSO : 설치하면 실행된다. 쉽게 사용은 가능한데 커스터마이징도 쉬울까가 고민..
CAS : 코드가 매우 복잡.. 잘 이해가 안간다. 새로 만드는게 더 빠르지 않을까? 그냥 실행되는것도 아니라서 갖다쓰기도 편하지 않다.

상용Commercial

직접개발

관련기술

SAML : 삼를.. 잘 모르겠다.
http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_roles_providers_saml.html
OAuth : 오앗. 토큰받아다가 쓰는거. 많이 쓰니까 설명생략
GlobalCookie : 여러서버에서 동일한 네임의 쿠키를 바라본다. auth서버를 호출해야겠지
IP : 접속주소
MacAddress : 랜카드 주소기반
LDAP : 디렉토리 서비스 계층형으로 권한을 저장하는방식??/정도로 알고있는데..
Token : Stateless 호출에 사용. API에 많이 사용됨
등등…
다 지원되면 좋겠지만 다 하기는 힘들고 필요한것만 사용하는게 좋다.

~~~~~

위의 기술을 그대로 구현할수도 있고.. 유사하게 구현할수도 있고..라이브러리를 갖다쓸 수도 있고

이전에 쓸 때는 OAuth서버를 구현하고 OAuth(Like)방식으로 내부 SSO를 구현했는데…
좀 개선해보려면 어떻게 하는게 좋을지

CRUD 네이밍 결정. 고민.

https://ko.wikipedia.org/wiki/CRUD

ABCD: add(추가), browse(보기), change(변경), delete(삭제)
ACID: add(추가), change(변경), inquire(질의), delete(삭제)[1]
BREAD: browse(보기), read(읽기), edit(편집), add(추가), delete(삭제)
VADE(R): view(참조), add(추가), delete(삭제), edit(편집), 트랜잭션 처리에서는 restore(복원) 추가

게시판의 경우
write, read, modify, delete

파일
change

데이터인 경우
add, remove,

근데 나눠쓰면 헷갈린다.

Java -> Kotlin 전환시 발생하는 문제들 + 안좋은점

JPA모델설계시

Java에서는 @OneToOne Many등 표시안하고 그냥써도 됐는데.. Kotlin에서는 오류가 난다.

kotlin data class constructor

생성자 만드는게 몹시 짜증이난다다
써보니 이름이 왜 꼬출린인지 알겠다

자동완성이 구리다

자바개발에서 귀찮은 getter, setter, slf4j은 lombok으로 처리해서 귀찮은 자바의 단점이었던 난잡한 코드 문제가 많이 해결됐는데

변수 선언에서 자동완성이 좀 안된다.

 

java는 클래스명을 쓰면 변수명이 자동으로 나올 수 있는데
Kotlin은 … 그게안된다.

커뮤니티에 엉터리가 많다

아직 초보자들이 많은지 잘못된 정보가 간혹 있다.
JPA Entity설계할 때 dataclass를 사용하라고 한다던가 하는…
해보니까 그냥 class로 선언하는게 편하다.
아닌가?? 더 익숙해지면 data class가 더 나을까?

QueryDSL 미지원

QueryDSL에서는 Gradle을 공식적으로 지원하지 않는건가?
github에 가보니 maven만 있고 Gradle은 안 보인다.
third party를 이용해서 하긴했는데…
Kotlin은 변환이 안된다. (이것은 아직 지원안되는 것 같다)
결국 Entity는 Java로 다시 변환했다.

Java와 혼용시 문제

Java와 Kotlin을 같은 프로젝트에 섞어서 쓰면 kotlin에서 lombok의 getter, setter이 인식되지 않는다. (컴파일 타임의 문제니까 노력하지말자 – lombokforkotlin을 만들게 아니라면)
멀티모듈로 하면 상위 코드의 core를 조회 가능
groovy가 더 잘 섞이는 것 같다. 테스트코드 짤 때 써볼라고하니까

결론

꽤 안정화됐지만 그래도 아직 갈길이 멀었다.
아직 한창 개발중인 언어로, 언어 자체의 문제로 인한 버그가 간혹 존재한다.
그리고 현재의 문법체계가 언제까지 유지될거라고 보기도 힘들다.
IDE, 프레임워크, 라이브러리 지원도 아직은 Java를 대체할 수준은 아니다.

가장 오류없이 무난한 개발을 하려면 Maven-Java

좀 고생을 하더라도 다른거 써보고 싶으면 다른거 쓰면 될 것 같다.