전체 글 552

폐쇄망 PC(MAC) 개발환경 localhost:8081 -> 안드로이드 기기로 확인

MAC m1 에서 로컬환경구성후 (localhost:8081) 해당 페이지를 안드로이드에서 확인할수 있도록 하기 위함이다. 이는 폐쇄망(은행권 등) 에서 인터넷이 안될때 할수 있는 방법이다. 필요사항 PC (MAC M1) localhost 서버 환경 (KB star 베이직 환경) 안드로이드 기기 (갤럭시 S20FE) 1. (MAC) 로컬 개발환경 구축 2. (MAC) adb 설치 및 환경 설정 완료후 adb devices 명령어 실행 usb 로 연결된 휴대폰 아래와 같이 R3CNC~~ 로 보임 3. (MAC) 크롬에서 chrome://inspect/#devices 접속 Port forwarding.. 클릭 8081 포트 추가 와 Enable port forwarding 체크 4. (휴대폰) 휴대폰 크롬을..

카테고리 없음 2023.01.11

MAC 에서 아이폰 디바이스 사파리 디버깅 방법 (모바일 사파리)

목적 : 모바일 Safari 디버깅을 MAC 에서 디버깅 하기 위한 목적 필요목록 MAC 아이폰 (아이폰7) 케이블 . MAC 과 아이폰을 케이블로 연결한다. . [아이폰] "이 컴퓨터를 신뢰하시겠습니까" 팝업시 "신뢰" 클릭 . [MAC] Safari > 설정 > 고급 탭에서 메뉴 막대에서 개발자용 메뉴 보기 체크 메뉴바에 "개발자용" 메뉴가 생긴다. . [아이폰] 설정 > Safari > 고급 에서 웹 속성을 활성화 한다. . [아이폰] Safari 실행후 디버깅 하려는 웹페이지 접속한다. . [MAC] Safari > 개발자용 > iPhone > 디버깅하려는 페이지 선택 (hotbest.com 클릭)

카테고리 없음 2023.01.11

크롬에서 안드로이드 디바이스 디버깅 방법 (모바일 크롬)

목적 : 모바일 크롬을 PC 크롬에서 디버깅 할수 있도록 하기 위함. 아이폰은 xcode 의 시뮬레이터를 이용해야 해서 다음 블로그를 참조 필요목록 안드로이드 디바이스 (갤럭시 S20FE) USB 케이블 PC 크롬브라우져 1. 안드로이드 디바이스와 PC 케이블 연결 설정 > 개발자옵션 > USB 디버깅 On 으로 변경 USB 디버깅을 허용하시겠습니까? 허용 2. PC 크롬 주소창에 입력 chrome://inspect/#devices 아래와 같이 갤럭시 S20FE 모델명이 나오고 휴대폰 디바이스의 크롬에서 현재 접속되어 있는 목록이 나열된다. 뽐뿌 아래에 있는 inspect 클릭한다. 안드로이드 디바이스의 크롬을 PC 에서 디버깅 할수 있다. 끝

카테고리 없음 2023.01.11

[ES6] 템플릿 메소드 패턴 예제

상속을 이용한 템플릿 메소드 패턴 예제 다형성을 이용하여 load() 메소드 호출시 각각 자식의 _load() 메소드가 호출된다. 다형성 = 내적일관성 + 대체가능성 // 공통 부분 const Order = class { #id; #name; constructor(name) { this.#name = name; } getName() { return this.#name; } load() { const content = "[공통] 부모 > 자식변수 [content]"; this._load(content); // 위임 부분 } _load(v) { throw "override"; } // HOOK } const ord1 = class extends Order { constructor() { super("자식 >..

객체지향 2022.05.09

websocket 바이너리 전송 arraybuffer

웹소켓 전송시 response ByteBuffer 로 받을때에 결과 JS let SOCKET_URL = "wss://~~~"; let socket = new WebSocket(SOCKET_URL); socket.binaryType = "arraybuffer"; // 바이너리로 받을려면 해야함 socket.onopen = function(e) { socket.send("---> socket send"); } socket.onmessage = function(event) { if(typeof event.data == "string") console.log("string 메세지"); else { console.log("스트링타입아님"); console.log(event.data.byteLength); cons..

프로그래밍/Js 2022.05.06

[헤드퍼스트 디자인패턴] 1. 전략패턴

헤드퍼스트 디자인 패턴의 첫번째 디자인 패턴을 분석해본다. 본 문서는 본인의 개발향상과 기억의 장기화를 위해 기록해둔다. 또한 왜 이렇게 해야 되는지를 레거시 코드를 통해 알아보도록 하겠다. 아래와 같이 청둥오리/고무오리/나무오리 가 존재한다. 각각의 오리는 아래와 같은 상황이다. package Duck; public class Legacy_Duck { public Legacy_Duck(String duck) { if(duck == "청둥오리") { display("저는 청둥오리"); quack("꽥꽥"); fly("날다"); } else if(duck == "고무오리") { display("저는 고무오리"); quack("삑삑"); fly("날지 못한다. XX"); } else if(duck == "나..

객체지향 2022.03.29

java 스케쥴러 중복 실행될때

아래와 같이 server.xml 을 설정 하게 되면 배포한 appTest 어플리케이션이 Host의 appbase 설정에 따라서 /home/ubuntu/html/webapps 로 배포 하고 또 context 설정에 따라서 /로 배포 하게 되어 이중으로 로딩하는 문제가 발생 하게 됩니다. 이런 경우 소스를 appbase 아래가 아닌 다른곳에 설치 하거나 host 속성에 기동시에 appbase 아래의 어플리케이션을 배포 하지 않도록 아래 처럼 deployOnStartup 을 false로 설정을 해주면 됩니다. autoDeploy="false" deployOnStartup="false"

아주 쉬운 Java 에서 Python 호출 방법

build.gradle 추가 implementation 'org.apache.commons:commons-exec:1.3' java 소스코드 @GetMapping(value = "exe_python") public String exePython() { File file = new File(""); File rootPath = file.getAbsoluteFile(); System.out.println("현재 프로젝트의 경로 : "+rootPath ); System.out.println("Python Call"); String[] command = new String[4]; command[0] = "python3"; command[1] = rootPath+"/zz.py"; //command[1] = roo..

[안드로이드] 웹뷰 + 카카오톡 적용

@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { /* if (startUrl != null && startUrl.equals(url)) { view.loadUrl(url); } else { //交给系统处理 return super.shouldOverrideUrlLoading(view, url); } return true; */ // 2020.02.04 수정 : 앱에서 카카오톡 적용 if (url.startsWith("intent:")) { try { Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); Intent existPackage = getPacka..