Intro SSL Handler가 구현되어있는 최초 버전 (버전코드 1번)이 테스트 트랙에 올라가 있다는 이유로 구글플레이에서 삭제되었다. 당장 해당 트랙을 비활성화 한 뒤 업데이트를 시도해 보았지만 Cross App Scripting Vulnerability로 리젝되어 클라이언트의 요청이 지속되는 상황이었다. Vulnerability APK Version(s) Past Due Date Cross-app Scripting Your app(s) are using a WebView that is vulnerable to cross-app scripting. To address this issue, follow the steps in this Google Help Center article. 33 August..
Jade's Hello World
요즘들어 유니티 프로젝트의 의뢰가 많다. 유니티는 자체적으로 Collaborator라는 클라우드 스토리지 서비스를 지원하지만, commit log를 제외하면 git처럼 버전 관리할 수 있는 곳이 암만 찾아봐도 없다. Github는 파일당 100MB 제한이 있고, BitBucket은 파일당 용량 제한은 없지만 총 용량 제한이 있다. 그리고 매우 느리다.. 그래서 그냥 시놀로지 DSM에 있는 Git Server를 활용하기로 했다. 사전에 Git Server와 MariaDB 5 설치가 필요하지만, Git을 사용하고 서버를 구축하기 위해 여기까지 찾아온 여러분께는 구태여 설명할 필요가 없을 것 같으므로 생략합니다. *** 시놀로지에서 Docker를 지원하는 경우 여기를 참조하세요. 도커로 구성하는게 추후 관리가..
DSM 패키지 센터 커뮤니티 소스 리스트 http://packages.synocommunity.com/ http://synology.sysco.ch/ http://www.cphub.net http://syno.dierkse.nl/ 인터넷에 떠돌아다니는 리스트 중 현재는 유효하지 않은 링크는 삭제했습니다 이 게시글의 패키지는 ARM 코어가 탑재된 보급형 Synology 기기에서도 사용이 가능합니다. 설치방법 Perl 패키지가 필요합니다. 시놀로지 공식 패키지센터에서 설치합니다. 패키지센터 우측 상단의 설정 버튼을 누르고, 패키지 소스 탭에 위 리스트를 추가합니다. ipkg만 설치하실거면 맨 아래 cphub 링크만 추가하셔도 됩니다. 패키지센터를 종료 후 다시 엽니다. 검색창에 ipkg를 검색 후 Easy ..
카카오 미러서버 - apt sudo sed -i -re 's/([a-z]{2}.)?archive.ubuntu.com|security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list sudo apt update sudo apt upgrade -y 카카오 미러서버 - pip mkdir ~/.pip echo "[global] index-url=http://ftp.daumkakao.com/pypi/simple trusted-host=ftp.daumkakao.com" >> ~/.pip/pip.conf pip3 install --upgrade pip zsh 및 oh-my-zsh 설치 sudo apt install -y zsh curl git sh -c "$(curl -..
iOS 에서의 Javascript Interface Bridge는 단방향, JS -> Native로밖에 값을 전달하지 못한다. 따라서 js에 setValue() 등의 함수를 사용해야 한다.. 그러나 window.webkit.messageHandler.foo.postMessage(args) 를 호출하고, 네이티브에서 evalJavascript로 setFooValue(bar) 함수를 호출해 밸류를 지정해준다 한들, 완성된 js코드를 보는 후임 개발자 입장에서 코드가 쉽게 눈에 들어오지 않을 것이고, 예쁘지도 않다. 또 리턴받아야 하는 함수가 여러 개인 경우 setValue() 함수를 여러번 생성해야 하며, Android JavascriptInterface Bridge와 다른 방식으로 사용해야 한다. 안드로이..
카톡로그인 인텐트를 아래와 같이 처리해줬다. @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("intent:")) { try { Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage()); if (existPackage!=null) { startActivity(intent); } else { Intent marketIntent = new Intent(Intent.ACTI..
MainActivity.java private long backKeyPressedTime = 0; private Toast toast; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { // 웹뷰 History상 이전 페이지가 있을 경우 if(mWebView.canGoBack()){ mWebView.goBack(); // 뒤로가기 return true; } // 없을 경우 앱 종료 전 Toast로 물어보기 else{ // 토스트메세지 출력 if (System.currentTimeMillis() > backKeyPressedTime + 2000) { backKeyP..
Activity에서 처리하는 경우 activity_main.xml MainActivity.java WebView mWebView; WebSettings mWebSettings; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.mWebview); // 웹뷰 선언 mWebSettings = mWebView.getSettings(); mWebView.setWebChromeClient(new WebChromeClient()); // 크롬클라이언트 사용 mWebVi..
이전 포스팅 : 안드로이드 프래그먼트 활용하기 안드로이드 프래그먼트 활용하기 MainActivity.java public class MainActivity extends AppCompatActivity { private FragmentManager fragmentManager; private Fragment_Main fragment_main; private Fragment_MyPage fragment_my_page; privat.. jyspw.tistory.com 사전 작업 1. res 폴더 우클릭 -> New -> Android Resources Directory -> menu 폴더 생성 2. res/drawable -> New -> Vector Asset -> 사용할 Clipart 이미지 생성 Mai..
MainActivity.java public class MainActivity extends AppCompatActivity { private FragmentManager fragmentManager; private Fragment_Main fragment_main; private Fragment_MyPage fragment_my_page; private FragmentTransaction fragmentTransaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = ..