카카오 미러서버 - 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 -..
Jade's Hello World
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 = ..
Splash 화면 구현 경로 : res/drawable/splash.xml (생성) Splash Theme 추가 경로 : res/values/themes.xml ,res/values-night/themes.xml Android Manifest 수정 AndroidManifest.xml Main Activity 수정 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_앱이름); // 앱 기본 테마로 변경 super.onCreate(savedInstanceState); setContentView(R.layout.a..
타이틀 바 없애기 경로 : res/values/themes.xml , res/values-night/themes.xml 상태 바 없애기 경로 : MainActivity.java import android.os.Build; import android.view.WindowInsets; import android.view.WindowInsetsController; import android.view.WindowManager; ... public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 전..
재택근무가 길어지면서 사내메신저의 필요성을 느끼던 중 Slack이나 잔디, 라인웍스 등의 협업 툴을 써봤지만 큰 메리트를 느끼지 못하고 관련 소프트웨어에 익숙하지 않은 직원들도 쉽게 쓸 수 있는 디스코드를 선택했다. 일단 직원들 대부분이 온라인게임을 즐기기 때문에 새로 설치하거나 익숙해질 필요가 없었고, 파일 전송 용량 등 몇가지를 제외하면 Slack과 크게 다른점이 없는데, 구글 클라우드와 사무실 내 스토리지가 있어서 필요가 없는 상태였으며 무엇보다 API를 활용해 직접 필요한 기능을 개발할 수 있는 장점이 컸다. Django로 디스코드 봇을 만들어 프로젝트 관리와 서버에 이슈가 생기면 푸시알림을 보내주려고 했는데 연동 탭에 "웹후크" 항목이 눈에 띄었다. 보자마자 Github에 웹훅 연결하면 되겠네 ..