레이블이 개소리인 게시물을 표시합니다. 모든 게시물 표시
레이블이 개소리인 게시물을 표시합니다. 모든 게시물 표시

2022년 11월 16일 수요일

네이버 ncloud SENS (Simple & Easy Notification Service) jsp로 SMS 전송 개발

어쩌다 보니 2부가 된

네이버 ncloud SENS (Simple & Easy Notification Service) 로 문자 전송

대망의 JSP 편!!

할말이 없으니 바로 소스

네이버 ncloud SENS (Simple & Easy Notification Service) java로 SMS 전송 개발

알바로 이것저것 하는 중에

네이버 ncloud SENS (Simple & Easy Notification Service) 로 

문자 전송 (추후엔 카톡까지 연동) 을 개발하게 됨.


구글링 하다보니.. spring에서 돌리는 소스를 발견


내가 개발 중인 환경은 jsp 이기에 이 소스를 컨버젼해서 쓰면 되겠군.. (아싸 득템)

이란 마음으로 시작...


아오 썩을..

계속 401 오류가 나온다.. (Authentication Failed)

네이버 쉑끼들한데 문의를 해보니 원론적인 답변만...

API 문서 : https://api.ncloud-docs.com/docs/ai-application-service-sens

네이버 쉑끼들한데 일단 한마디..


니들이 뭐가 그리 잘나서 우리는 고객의 코드를 리뷰 안해줌~~ 이딴 소릴 지껄이냐.. 

내가 니들 서비스 공짜로 쓰냐! 다 돈내고 쓰는거고.. 내가 몇백줄을 보낸 것도 아니고..

거기다가.. 니들이 만든 문서하고는.. 온갖 개폼은 다 잡아놓은 문서임.. 

알아먹을려면 알아먹어봐라 라는 중2병스러운 쓰레기를 만들어 놓고는 꼴깝 좀 떨지마라..


그리고.. 잘못된 소스를 올려놓은 어떤 블로그에게 한마디..

님의 소스에 수많은 개발자들이 오늘도 삽질을 합니다.

좀 잘 좀 확인하고 올립시다. 

내 뒤에 오는 사람들은 우리같은 고생은 안하는게 좋지 않겠습니까?


자 이제 진정하고.. 이제 소스 리뷰... 

JAVA 버전부터..

2022년 6월 29일 수요일

2022년 6월 17일 금요일

구글 Flutter 로 하이브리드 웹 앱 띄우기 2

어쩌다 보니 2부작이 되어 버린 Flutter...

Flutter 에서 기본으로 제공하는 Webview를 사용해 보니

큰!!!!! 문제를 발견했다.

jquery를 사용하여 만든 사이트에서 파일 첨부하는 기능이 있는데..

input type='file' 태그가 전혀 동작하지를 않는다!!


쭈~~~욱~~~ 구글링을 해보니..

webview에 있는 버그(?) 라고..


그래서

webview_flutter_upload 란걸 써야 함!




카메라와 파일 첨부 둘 다 되는 것을 확인.

근데 왜 중국어가 나오는 것이여!!! 

이것도 뭐 하다보면 한글 나오겠지...

2021년 6월 3일 목요일

Apache Zeppelin Dynamic Form + JDBC 연동

Apache Zeppelin 에는 Dynamic Form 이란 것이 있다..

paragraph에 사용자가 원하는 매개변수를 입력받을 수 있게 하는 양식을 제공하는 기능이다.

일단 메뉴얼 투척~~!

https://zeppelin.apache.org/docs/0.9.0/usage/dynamic_form/intro.html


메뉴얼 보면.. 매개 변수로 쓸 것을 ${변수명} 으로 사용하면 된다....

라고.. 아주~~~ 간단히 나와있다..


물론.. 이렇게 쓰면 되긴 된다..

그런데 말이지... 이렇게 쓰면.. 큰 문제가 생긴다..(나만 그런걸지도..)


일단 내가 하고 싶은거

공통 입력으로 시작일, 종료일, 매장 선택하여.. 매장별 매출등을 조회하고 싶음


1. 삽질 시작 

아~~ 매뉴얼 대로 쿼리 안에다가 넣으니까 폼이 생기고... 오오~~ 신기하네~~ 잘된다..

흠.. 그럼.. 한 Note에 paragraph 3개 생성해서.. jdbc로 연동한 걸

하나는 표, 차트 두개로 해 볼까?

2. 당혹

흠... 되긴 되는데.. 이렇게 되면.. 각 paragraph 마다 입력 폼이 생기잖여.. 입력은 한번만 해서 돌려써야 욕을 안 먹는데..

흠?? 메뉴얼 아래쪽에 Using form Templates (scope: note) 란거 보니.. 전역 변수로 쓸 수 있는 것 같다..

첫번째 paragraph에다가 jdbc interpreter로 쿼리를 날릴때 ${변수명} 을 사용하면 값 입력 폼이 생기고, 이걸 두번째 paragraph에다가 사용하면 되겠지?

해서 jdbc interpreter에다가 $${변수명을} 쓰고 조회!

--> null point exception이 아마 발생할 것이다...

3. 고민

완전 당황함.. sql 프로파일러로 들여다 보니.. 쿼리가 오지도 않음..

왜 이럴까.. 정말 몇일을 고민함..

stacksoverflow에 질문해도 답하는 놈이 없음.

https://stackoverflow.com/questions/67767714/exchanging-variables-between-different-paragraphs

youtube 동영상을 보니.. 다들 기초 예제만 하지..

이렇게 결합해서 하는 경우가 없음.

하여.. 계속 몇일을 삽질을 하다가..

겨우 알아냄..

4. 해결

가) 일단 메뉴얼이 좀 부실하다.. 내용도 좀 잘못된 것이 많음

나) 다른 interpreter는 모르겠으나, 나처럼 jdbc 사용하는 경우에 대해선 메뉴얼이 너무 허접함

다) 하여간 정답 공개

    a) 일단 공통으로 입력을 받을 폼은 첫번째 paragraph에 python으로 작성함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
%python
 
dtst = z.noteTextbox("시작일", "20200101")
dted = z.noteTextbox("종료일", "20201231")
 
print("Textbox note " + dtst)
print("Textbox note " + dted)
 
arrStore = [("001", "PubDept"), ("002", "Store1"), ("003", "Store2")]
 
selStore = z.noteSelect("매장선택", arrStore )
 
print( "Select note " +  selStore )
 
 
z.z.run("paragraph_1622092568030_1007352330")
 
cs

코드 설명 : 
1. Textbox 생성시 noteTextbox를 써야 전체 입력 form으로 생성됨
2. Select도 noteSelect로 생성. 값은 편하게 알아보기 위해서 객체로 한번 선언해주고 사용했음.
3. 하단의 z.z.run 부분은 다른 paragraph를 연속해서 실행시키라는 명령임. (paragraph ID는 각자 사용하는 것을 쓰자!)

   b) 그 다음 paragraph에서 jdbc interpreter를 사용하자

1
2
3
%jdbc
EXEC USP_BIGDATA_003 '$${시작일}', '$${종료일}', '$${매장선택}';
 
cs

 코드 설명 :
1. jdbc interpreter는 이 글을 볼 정도면 알아서 잘했을 것이다. 그래도 모르겠다... 하시는 분들은.. 실력 좀 올려서 오자!! (기본적인 연동은 구글링하면 나온다... jdbc 연동 글 보기 : https://jaymz96.blogspot.com/2021/02/apache-zeppelin.html)
2. 내 경우엔 query 말고 procedure를 날려서 실행하게 했음.
3. python interpreter에서 선언한 이름을 $$개 붙여서 가져와 쓸 수 있다!!
4. 이제 전체 실행, 또는 공통 form에서 값을 입력하고 실행하면. z.z.run으로 연결된 paragraph들이 함께 실행됨을 볼 수 있다.
5. 이후는 입맛대로 진행


5. 교훈
가) 외국꺼라고 다 제대로 됐다고 생각하면 오산이다.
나) 양키 놈들도 아는척~~만 하는거지 제대로 아는 넘들은 없다
다) 네이년 다니는 쉑들도 다 사기꾼들임. 내가 더 잘났다. (옛날에 면접보고 떨어져서 이러는 거 아님.........)
라) 빅데이터는 사기이자 쑈다. 윗 선에 딱 흑세무민 하기 좋은 툴이다.

6. 끗~
이제 나도 윗선에 구라쳐서 이쁨 좀 받아보자!
진짜 끗~!



2021-07-14 내용 추가
jdbc 연동이 잘 안된다면.. 
jdbc 설정시에 zeppelin.jdbc.interpolation 이 항목이 false 라면 true 변경하라!



2021년 5월 26일 수요일

Apache Zeppelin 에서 Helium 사용하기

Zeppelin 기본 차트로는 기능이 많이 부족하다!

왜 내가 본 너튜브에는 차트가 멋지던데 내 화면은 왜 이렇나!!


하셨던 분들...

Apache Zeppelin 설치하니까.. Helium 이라고 써있는데..

이게 뭔가 하신 분들..


이게 오픈 소스 차트 프레임 웍이다~~ 이거지요...

너튜브엔 뭐 그냥.. 이렇게~ 저렇게 하시면 Helium 플러그인 중에

이런 차트를 enable, disable 하실 수 있어요~~ 라고 하던데..


개뿔~~!

플러그인 자체가 목록에 안 나옴!

이래저래 Helium Install 관련 찾아봐도 안 나옴.

결국은 메뉴얼 안에 답이 있다~~~ 이거지!!

https://zeppelin.apache.org/docs/latest/development/helium/overview.html

근데.. 메뉴얼이 애매함..

내장되어 있다고 했는데.. 정작 interpreter 폴더에도 helium이 없고

플러그인 이라던지.. 어떤 곳에도 흔적이 없음..

현재 Zeppelin 버전은 2021년 5월 기준 0.9.0 임.

메뉴얼을 잘 보니.. zeppelin-site.xml 이 안에다가 구성할 수 있다고 써 있음..

그런데 왜 안 보이지? 한참을 또 이것저것 찾아 봄..

.

.

.

.

.

.

.

야이~~! X불넘들아~~!!! 주석으로 막아 놓으면 어쩌라고!!!

파일 안에 주석으로 막혀 있어서 안 나왔던 거임!

주석 풀고 Zeppelin 재시작 -> Helium 메뉴 들어가면...


오오~~ 이제 잘 보일 것이다~!!!


최근에 몇가지 기술들을 구글링하고 영상도 보고 하면서 느낀거...

대기업 다니고, 영어 좀 씨부린다고 해서 다를거 없다.. 그 쉐리들도 몰라.. 다 기본만 설명하지 어려운건 쏙 빼놓고 지 잘하는 거만 떠들어 대더라..


결론 : 나도 잘났다..


끗~! 뭘봐!



2021년 4월 30일 금요일

Apache Zeppelin에서 jdbc 연동시 조회할때 TLS 관련 오류 발생

0. 현재 개발환경

    - OS : Ubuntu 20.4

    - Main DB : SQL Server on Linux 2019 Express

    - 보조 DB : SQL Server 2008, SQL Server 2014

    - Java : Apache Zeppelin 권장 버전 (OPENJDK 1.8)

1. 보다시피 버전차이가 엄청 남.

2. Zeppelin에 jdbc (9.2.1) 연결을 했을때, SQL Server 2014는 아무 문제가 없음

3. SQL Server 2008에 연결시 TLS 버전을 지원 안한다는 오류 발생함.

4. 해당 서버 버전의 TLS 1.0 프로토콜이 너무 오래되서 지원을 안함.

5. 일단.. 해당 서버의 OS인 Windows 2008 R2에 TLS 1.1 / TLS 1.2 설정을 해줌.

6. 동일 에러 발생 - SQL Server 2008 자체에서 TLS 1.0 통신만 지원하는 것으로 판단.

7. jdbc 4.2를 쓰면 된다는 개소리 믿고 삽질하다가.. 다음과 같은 글 발견..

https://blog.naver.com/PostView.nhn?blogId=hgp33&logNo=221293449287&from=search&redirect=Log&widgetTypeCall=true&directAccess=false

8. 뭐 내용은 Java jdbc 보안문제로 동일함.

9. 문득 깨닮음을 얻은 나는 Ubuntu의 JRE에 있는 security 설정을 건들면 되겠다는 생각이 듬.

10. 저 링크에는 싹 지우라고 했지만... 글 자체가 3년이 넘은지라.. 

    내 목적인 TLS 관련 부분만 지움..

    jdk.tls.disabledAlgorithms 에서 TLS 1.0, TLS 1.1을 지워주자..

11. 당근 바로 안된다.. 서버 재부팅!!!

12. 해결!

13. 끗! 뭘봐!

2020년 7월 7일 화요일

Synology에서 unzip 사용하기

openMAINT를 사용하려고 하는데..

Synology의 OS가 일반 linux 계열이 아니어서..

여러가지 난관이 발생함..

일단.. Java야 뭐 어찌어찌 깔았지만..

정작 다운받은 패키지에 sh 파일 안의 unzip이 먹지 않는 상황..

구글링을 통하여

다음과 같은 글을 참고하여..


ipkg를 사용하면 되는 것을 알게 됨..

1. 패키지 센터에 설정에서 다음의 패키지 소스 추가
http://www.cphub.net


2. 갱신하고 커뮤니티 탭으로 가서
iPKGui 와 Easy Bootstrap Installer 를 설치


3. iPKGui 를 사용하여 unzip을 깔았지만,
ssh로 들어가서 실행해도 command not found 나올 것임.
4. ssh 에서 /opt/bin/ 로 이동하면 ipkg 실행파일이 있음.


5. vi 나 nano를 사용해서 /etc/profile의 PATH를 추가해 줘야함..


6. nano를 쓸려면.. 다음으로 설치
sudo /opt/bin/ipkg update
sudo /opt/bin/ipkg install nano
sudo /opt/bin/nano /etc/profile


7. /etc/profile 을 열어보면..
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
가 있고..
끝에 :/opt/bin 를 추가해 줌..


8. 저장하고 닫은 다음.. 현재 세션에 바로 적용하려면..
source /etc/profile
해주면 적용 완료..


9. 확인하려면..
echo $PATH | tr ":" "\n" | nl
로 출력되는 것을 확인..

끗~!~! 뭘봐!!

2020년 5월 15일 금요일

Classic ASP로 네이버 단축주소 개발하기..

언어가 오래되서리...

갈아타지도 못하고...

편하게 Java 쓰고 싶뜨아....

기존에 bitly 쓰다가, 이 쉐리들이 API를 v3에서 v4로 업그레이드 하면서

기존 서비스를 완전히 먹통이 되게 함... (뭐 요딴놈들이 다 있나 싶다.. 무료 사용자라 무시하냐!)

v4로 업그레이드 하려는데.. 잘 안됨...(뭐든 시작이 이렇구만..)

만사가 귀찮아진 나는.. 또 머리를 굴렸다!!!

네이버 단축 주소 쓰자.... (따...딱히 자본력에 굴복한게 아니라는!!!)

어차피 xml http 통신만 구현하면 되고

기존에 xml 기반이던 것을 json 통신 기반으로 변경하면 됨.

소스 요약...

  1. Function fnNaverShorten(longURL)
  2.     Response.ContentType = "application/json"
  3.     reqAPIUrl = "https://openapi.naver.com/v1/util/shorturl?url=" & longURL
  4.     set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")  
  5.     xmlhttp.open "POST", reqAPIUrl, false
  6.     xmlhttp.setRequestHeader "content-type","application/x-www-form-urlencoded; charset=UTF-8"
  7.     xmlhttp.setRequestHeader "X-Naver-Client-Id", naverShortenClientID
  8.     xmlhttp.setRequestHeader "X-Naver-Client-Secret", naverShortenClientSecret
  9.     xmlhttp.send
  10.     if Request.QueryString("dbug") = "T" then Response.Write(reqAPIUrl)
  11.     fnNaverShorten = xmlhttp.responseText
  12.     set xmlhttp = nothing
  13. End Function

해설...
0. 일단.. 네이버개발자 센터에서 사전 준비 사항을 챙긴다!! (이것저것 생성 및 ID / 비번)
1. 난 그냥.. 컨텐츠 유형은 당연히 "application/json"
2. 뭐 너무 평범한 Classic ASP용 xml 통신 소스라.. 설명이 필요한지...
3. 발급한 ClientID와 ClientSecret를 잘 넣기만 해라..
4. 받는 Page에서 json 파싱은 알아서 해라.
5. 설명 귀찮다.. 끗...







2020년 1월 28일 화요일

안쓰던 구글 Nexus 7 2012 Wifi 모델을 살림.

잠들어 있던 넥서스 7 2012 Wifi (1세대)를 꺼내봄..

큰 아들 중학교에 올라가기에 인강용으로 쓸려고

리뉴월드에 수리 맞겨서 살려냄..

간만에 켜보니 롬이 Omni 롬인데.. 반응이 너무 늦고 고스트 터치가 발생해서

검색을 해보니.. 요새는 LineageOS가 대세임..

간만에. NRT 로 밀고 재설치..

그런데.. Gapps를 설치할 때 지속적으로 오류가 발생..

처음엔 아무 생각없이 가이드 따라하다보니..

32 bit용을 안 깔고 64 bit 용을 설치하다가 오류..

정신차리고 다시 32 bit를 설치하려 했으나.. 지속적으로 70 오류가 발생..

구글링 해보니.. 내부 시스템 공간이 부족해서 그런건데.. 일반적인 해결 방법인

시스템 파티션 수리로는 되지 않는다.. 결국 찾아낸 것이 아래 링크..

가장 마지막 빌드로 했더니.. 손쉽게 해결..

삽질만 3일했네..

https://forum.xda-developers.com/nexus-7/development/rom-lineageos-14-1-nexus-7-2012-t3530261

2018년 4월 19일 목요일

코넬식 필기

오늘 웹서핑 하다가 발견한 것..

상당히 유용할 듯..

울집 얘들한데 함 시켜봐야 겠다..


2018년 2월 23일 금요일

법무법인이나 총판이란 곳에서 소프트웨어 라이선스 위반이라고 연락이 왔다면?

몇일전 회사에 법무법인 양X 의 변호사란 쉑이 전화해서
니들 마이크로소프트 불법 쓰고 있는거 걸렸고
우리가 그걸로 법적 조치 들어가는 중이야~ 라고 개솔 시전함
뭐 난 경험적으로 무시해도 된다고 했으나.. 불안한
부장님께서 그 법적조치는 어떻게 확인하냐 해서리..
민사조정신청 번호를 주더구만...
조회해 보니.. 접수한건 사실이네..
그래서 우리보고 니네 소프트웨어 내역 제출해라 라고 지럴...
뭐 대응안해도 되긴 하는데..
불안한 부장님을 위해.. 가족(동서형님이 변호사)을 동원...
민사조정신청이란게 완전 웃기더구만...
MS가 우리를 적발하는게 아니고.. 이런 쉑들이 먼저 사건 만들어서 협박건을 만들어서 만약 진짜 위법건이면 MS에다가
야! 우리가 이렇게 건수 만들어 와쓰~~ 나 이뻐? 우쮸쮸~~ 하는 거더구만..
하여간.. 동서형님에게 공식적인 조언을 들음..
요약하면.. 이 구라쟁이 쉑끼들아~~ 어디서 협박질이여..
니들이 우리 위반했다는 증거 있어? 있으면 니네가 구체적으로 내놔봐.
그리고 계속 개솔 지껄이면 법적 책임을 졸라 묻겠으!!
라고 내용 증명을 보내면 된다고 함.(원본은 점잖음.. 근엄근엄)
물론 무시해도 상관은 없다고 함. 정 찝찝하면 저런 내용을 점잖게 쓰라고 함...
다른 IT 종사자 여러분.. 적어도 회사껀 정품쓰는거 알죠?
쫄지 맙시다!


===============================후기==========================================

이 쉐리들 우리가 규모가 되는거 같으니까 민사 만들어서 재판 진행함..

우리 회사도 변호사 고용하여 맞대응..

이 쉐리들이 이슈화 한 것은..

1. MS-SQL DB 서버에 대한 익스터널 커넥터 라이선스가 있는가?

2.Windows Server에 대한 SPLA 라이선스가 있는가?

이렇게 크게 2가지로 요약할 수 있다.

나머지 업무용 PC에 대해선 용무가 없다..

특히 SPLA 라이선스는 MS 측의 입장으로 코에 걸면 코걸이, 귀에 걸면 귀걸이 식이라..

상당히 골때리는 라이선스이다..

결국은 상대측에서 고소취하로 갔지만...

SPLA 라이선스는 좀 말이 많을 듯 하다.. MS 맘대로 해석을 하면 어쩔수 없지 않을까...

결론 : 쇼핑몰 운영하는 분들은 SPLA 라이선스 꼭 체크하시길...


[낯선] 2026.06.20 이태원 MZK MuzikBar 공연

간만의 공연 이태원 비틀즈가 이전하여 MZK MuzikBar 로 새 단장 오픈을 한 뒤로 2번째 공연 새 베이시스트가 합류한 뒤로 첫 공연이기도 함.. 이래저래 틀린 부분도 많지만.. 그래도 간만에 그럭저럭 잘했다.. https://www.youtub...