분류 전체보기

    Ios 웹뷰 쿠키 native에서 세팅

    Ios 웹뷰 쿠키 native에서 세팅

    ios의 웹뷰에서 쿠키를 세팅해주고 싶었습니다. ios에서는 안드로이드 같이 cookie만 관리해주는 도구를 찾지 못했습니다. 그래서 찾은 방법은 웹뷰가 실행될때 js script를 실행시켜주자 였습니다. 브라우저에서 setCookie(key, value)를 통해 특정 도메인에 원하는 쿠키 값을 세팅해줄수 있습니다. 이걸 웹뷰가 실행될때 실행시켜주자는 생각이였습니다. var webView: WKWebView! override func viewDidLoad() { ~~~~~ let config = WKWebViewConfiguration() let atDocumentStartScript = WKUserScript(source: "alert('start')", injectionTime: .atDocument..

    Android 웹뷰 쿠키 native에서 세팅

    Android 웹뷰 쿠키 native에서 세팅

    프로젝트를 진행하던 중 앱의 설치된 버전을 웹뷰에서 판단하여 다른 화면을 렌더링 해줘야 하는 경우가 있었습니다. 설치된 앱의 버전은 네이티브에서만 접근할 수 있어 이것을 get하여 웹뷰의 쿠키에 값을 넣어주었습니다. 아래의 내용은 안드로이드에서 웹뷰에 쿠키를 추가해주고자 하는 내용입니다. 1. 설치된 앱 버전 가져오기 * 설치된 앱 버전은 아래의 예시 코드에는 나오지 않습니다. PackageInfo pInfo; // onCreate 안에 추가 try { pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } 2. ..

    Android 웹뷰 디버깅

    Android 웹뷰 디버깅

    안드로이드 디버깅은 간단하면서도 체크해야할게 많습니다. 휴대폰에서 체크해야 할 내용 시스템 > 개발자 옵션에서 usb 디버깅을 활성화 해줍니다. (개발자 설정이 되어있지 않으면 시스템 > 휴대전화 정보 > 빌드번호를 10번 정도 눌러줍니다.) 코드 추가해주어할 내용 아래의 코드 내용을 MainActivity의 Oncreate안에 추가해줍니다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } 크롬 접속 주소창에 chrome://inspect 검색후 휴대폰이 나오면 inspect를 클릭해줍니다. 아래 이미지처럼 inspector가 나온것을 볼수 있습니다 * secre..

    Ios 웹뷰 디버깅

    Ios 웹뷰 디버깅

    웹뷰 개발시 디버깅은 필수 입니다. 이 방법을 모를때는 일일히 alert로 데이터를 출력했던 기억이 나네요.... 디버깅 방법은 엄청 간단합니다 1. xcode에서 개발중인 앱을 휴대폰에 연결후 실행시켜줍니다. 2. safari를 mac에서 실행시켜줍니다 3. develop > 핸드폰 이름 > ip를 선택해줍니다. (safari에서 안뜨면 Safari Technology Preview.app 에서 출력되는 경우도 있습니다.) 4. 웹 inspector가 등장한 모습을 볼 수 있습니다. 이제 에러 로그를 볼수 있고 자바스크립트 실행도 가능합니다! 출처: https://d0gf00t.tistory.com/41

    postgresql instance update 문

    postgresql instance update 문

    cli에서 update 칠때를 위한 포스팅 입니다. update 테이블명 set 칼럼명=바꿀값 where 조건; 실 사용 예시 * where를 생략하면 해당 테이블의 모든 데이터 들이 업데이트 됩니다. * postgresql에서 데이터베이스 변경 /c [데이터베이스 이름] 출처 : https://dog-developers.tistory.com/172 PostgreSQL UPDATE 문 UPDATE 문법 테이블의 존재하는 데이터를 수정하는 작업이다. 업무를 처리하는데 필수적인 것이며 동시성에 유의해야 한다. 기본문법 - 업데이트 할 테이블을 작성하고 수정할 컬럼과 데이터를 dog-developers.tistory.com

    python 출력 형식 정리[format 활용]

    python 출력 형식 정리[format 활용]

    아래 문제를 풀면서 python format 관련하여 정리한 내용입니다. https://dkrnfls.tistory.com/140 평균은 넘겠지[백준 - 4344] - python import math import sys input = sys.stdin.readline def BOJ4344() : C = int(input()) for _ in range(C) : inputs = list(map(int, input().split())) total = inputs[0] scores = inputs[1:] standard = sum(.. dkrnfls.tistory.com javascript의 template literal을 굉장히 편하게 쓰고 있다. python에도 있을까 찾아봤는데 역시나 있었다. 아래의 ..

    안드로이드 UGC 심사 거절

    안드로이드 UGC 심사 거절

    안드로이드 앱 출시 심사 과정이 빡세졌습니다. (예전엔 웹뷰에 Url 잘못 넣어도 업데이트 해주었는데..... 요게 비정상 이었죠 ㅎㅎㅎ) 제가 겪은 상황은 커뮤니티 에서는 글쓴이를 신고하고 차단할 수 있어야 합니다. 댓글 에서도 글쓴이를 신고하고 차단할 수 있어야 합니다. 앱 테스터 분들이 차단 동작 후에 실제로 차단 되었는지 안되었는지 확인후에 안되었으면 스크린샷으로 내용 보내줍니다. 저는 커뮤니티의 글이 두 종류(공지, 유저들의 글)가 있었습니다. 공지를 차단했을때 계속 노출이 되고 있어서 몇번 심사 거절을 받은적이 있었습니다. 모두 한번씩 확인 더 해서 심사 거절로 스트레스 받는 일 없도록 합시다!

    cra typescript 초간단 세팅

    CRA(Create React App)에 typescript를 적용하고 eslint와 prettier까지 적용해보는 스크립트 입니다. [blah blah] -> 괄호안의 내용을 blah blah가 의미하는 것으로 변경하면 됩니다. npx create-react-app [projectName] --template typescript // typescript로 cra 수행 yarn add -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin yarn add -D eslint-plugin-react yarn add -D prettier eslint-config-prettier eslint-plugin-prettier yarn remove p..

    Vercel 배포시 process.env.CI = true 에러

    Vercel 배포시 process.env.CI = true 에러

    최근에 vercel을 처음 접해 보았다. react로 간단히 페이지 하나 만든것을 배포해야했고 vercel을 이용하면 엄청 편하다 길래 바로 이용했고 10분도 안되어서 바로 도메인과 함께 배포해 버렸다(점점 더 간편해지네????) 처음과 두번째 시도에 위의 이미지와 같은 에러가 뜨면서 배포가 안되었다. Error: Treating warnings as errors because process.env.CI = true. 해결책은 아래와 같다 settings > project Settings > General 에서 build command를 CI=npm run buiild로 override 해주었다 이후에 redeploy를 해주면 해결된다 해결은 netlify의 공식문서를 보고 해결했는데 Continuous..

    평균은 넘겠지[백준 - 4344] - python

    평균은 넘겠지[백준 - 4344] - python

    import math import sys input = sys.stdin.readline def BOJ4344() : C = int(input()) for _ in range(C) : inputs = list(map(int, input().split())) total = inputs[0] scores = inputs[1:] standard = sum(scores) / total over_standard_scores = list(filter(lambda x: float(x) > standard, scores)) # result = math.floor(((len(over_standard_scores) / total * 100) + 0.0005) * 1000) / 1000 result = round((len(..