분류 전체보기

분류 전체보기

    [etc] MacOS에 Mysql 설치하기 (+ MySQL Workbench)

    1. Homebrew를 통해 mysql을 설치하기 brew install mysql iterm을 통해 해당 명령어를 실행했는데 under Rosetta2.. 어쩌고 하면서 실행이 되지 않았다. 다른 글들을 보는데 그런 말이 없어서 답답해하던 찰나 그냥 터미널에서 명령어를 실행하니 잘만 되었다. 설치완. 2. 초기 설정하기 mysql.server start 서버를 실행해준다. mysql_secure_installation 그리고 해당 명령어를 통해 초기 설정을 시작하면 된다. 비밀번호 설정 복잡한 비밀번호를 사용할 것인지에 대한 질문 익명 유저 사용 여부 기본적으로 익명 유저를 갖는다고 한다. 원하지 않으면 Yes root 접속 권한 로컬에서만 사용 가능 하도록 할 건지 원격에서도 root 접속 가능하도록..

    [Android] 부팅 시 앱 실행하기 | Android 10+ Application startup on BOOT

    들어가며 부팅 시 앱이 실행 되었으면 좋겠다는 요구 사항이 들어왔다. 예전에 부팅 되었을 때 관련 데이터를 삭제하는 기능을 잠깐 검토 했던 기억이 있어서 금방 하겠거니 생각했다. 그렇게 영원한 나의 친구이자 스승인 구글에 관련 기능을 검색했다. 1. AndroidManifest.xml 에 권한을 명시하고 2. Receiver를 만들고 class DeviceBootReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val action = intent?.action if (action.equals(Intent.ACTION_BOOT_COMPLETED)){ val appIntent = Intent..

    집단지성의 날 : 컨퍼런스 개최한 후기

    안녕하세요. 핀수입니다. (이런 인사 해보고 싶었어요.) 오늘은 지난 9월 1일 개최된 컨퍼런스인 집단지성의 날의 후기를 들고 왔습니다. 처음 듣는 컨퍼런스라고요? 당연함. 저희가 만들었음 그 후기, 지금 바로 시작합니다. 집단지성의 방 저는 올해 1월부터 스터디를 만들어서 활동하고 있습니다. 같은 과정을 수료한 동료 두분과 의기투합(?)하여 만들어졌습니다. (이 글을 작성하는 현재는 동료 한분을 더 모실 수 있게 되어 네명이 됐습니다! 박수~~~~) 처음에는 정보처리기사 자격증을 따기 위한 스터디였는데요, 시간이 지날수록 약간 해보고 싶은거 다해보는 스터디로 탈바꿈했습니다. 그렇게 진행한 것들이 정보처리기사 자격증 취득 알고리즘 (코딩테스트) 공부 공모전 참가 (new!) 컨퍼런스 개최 정도가 되겠네요..

    java.lang.SecurityException:Need android.permission.BLUETOOTH_CONNECT permission for AttributionSource | 'onRequestPermissionsResult()' deprecated

    java.lang.SecurityException:Need android.permission.BLUETOOTH_CONNECT permission for AttributionSource android 버전 12에서는 새로운 블루투스 권한이 도입되었다. BLUETOOTH_SCAN 앱이 저전력 (BLE) 블루투스 주변 기기와 같은 블루투스 기기를 검색하는 경우 BLUETOOTH_ADVERTISE 현재 기기를 다른 디바이스에서 검색할 수 있도록 하는 경우 BLUETOOTH_CONNECT 이미 페어링 된 기기와 통신하려는 경우 위 세가지 권한은 *런타임 권한이므로 앱에서 명시적으로 사용자 승인을 요청해야한다. * 런타임 권한 위험한 권한이라고도 하며, 이 권한을 부여 받는 경우는 앱에서 제한된 데이터에 추가로 액..

    Floating Action Button과 BadgeDrawable

    우리가 흔히 알고, 쓰고 있는 floating action button 오늘은 이 플로팅 액션 버튼 위에 이벤트가 있음을 알리는 배지를 달아볼 것이다. BadgeDrawable 배지에 대한 모든 레이아웃 및 그리기 로직이 포함되어 있다. Badge - 앱에 이벤트가 있거나 할 때 알림을 알리기 위해 표시하는 것 기본적인 형태 배지를 나타내기 위한 기본적인 코드는 아래와 같다. val badgeDrawable = BadgeDrawable.create(mContext) badgeDrawable.isVisible = true BadgeUtils.attachBadgeDrawable(badgeDrawable, binding.mainFab) 커스텀하기 badgeDrawable.number = 24 badgeDraw..

    민감한 정보 숨기기 | local.properties에 api key저장하기

    그동안은 앱수준의 build.gradle 에서 보관을 하고 있었다. (하드코딩 하지 않으려고 변수로 지정해 사용중이었음) buildTypes { debug { minifyEnabled false debuggable true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' buildConfigField "String", "BASE_URL", "\"your_url/\"" buildConfigField "String", "APP_KEY", "\"your_key\"" } release { minifyEnabled true proguardFiles getDefaultProguardFile('prog..

    화면 전환 효과 | RecyclerView to fragment transition 적용하기

    fragment to fragment A 에서 B 로 이동한다고 하면 fragment_a.xml 효과를 적용시킬 view에 transitionName 을 지정한다. fragment_b.xml 마찬가지로 똑같은 이름을 지정해준다. 이름은 고유해야한다. transistion.xml을 준비해야한다. res에 transistion 디렉토리를 생성한다. 그리고 xml을 생성한다. transition_move.xml AFragment.java 효과를 적용시킬 view와 view의 transistionName 을 addSharedElement의 인자로 넘겨준다. FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder() .addSharedElem..

    fragment 에서 onBackPressed() 접근하기

    onBackPressed() Called when the activity has detected the user's press of the back key. 말그대로 사용자가 뒤로 가기 버튼을 클릭 했을 때 해당 메서드가 호출된다. @Override public void onBackPressed() { super.onBackPressed(); } ComponentActivity가 들고 있는 메서드이고 AppCompatActivity 는 FragmentActivity를 상속 받고 FragmentActivity는 ComponentActivity를 상속 받는다. 따라서 onBackPressed 메서드는 activty에서는 얼마든지 오버라이딩해서 입맛대로 사용이 가능하다. 메인화면에서 뒤로 가기 버튼을 눌렀을 ..

    [Google Play Store 관련 오류 코드] Install Error(-10): The app is not owned by any user on this device. An app is "owned" if it has been acquired from Play. InstallErrorCode#ERROR_APP_NOT_OWNED

    앱을 실행할 때 업데이트 정보를 받아오기 위해 AppUpdateManager 클래스를 이용해서 정보를 받아온다. AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(mContext); appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AppUpdateInfo appUpdateInfo) { } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { } }); ERROR_..

    특정 commit을 다른 branch 로 가져오기

    아무 생각 없이 master 브랜치에서 작업하고 커밋한 핀수 아뿔싸 여기가 아닌데 해당 브랜치로 checkout 한다. 원하는 커밋을 선택하고 우클릭 - cherry-pick 을 클릭 git cherry-pick [commit hash] 옮겨간 것을 확인한다. 위의 그림을 보면 알겠지만 잘라내 붙이는 것이 아니고 복사되는 것이므로 사용에 유의하는 것이 좋겠다. 참고 https://backlog.com/git-tutorial/kr/stepup/stepup6_4.html https://cselabnotes.com/kr/2021/03/31/56/

    다른 글로 대체합니다

    MVVM 패턴 적용해본 후기 - 1 In the Beginning.. 개발이 어느정도 마무리가 되고 보완하고 싶은 점을 찾아보다 늘 마음에 걸렸던 MVVM 패턴을 적용해보면 어떨까 하는 생각이 들었다. 개발을 들어갈 그 당시의 나는 정말 아무것도 www.pinslog.com 흠 지금까지 다른 글로 대체한게 이번까지 두어번 되는데 이때마다 이 카테고리에 와서 글을 쓰는게 맞는지 의문이 든다. 티스토리도 네이버 블로그처럼 언제 글을 발행 했는지 시각적으로 알려줄만한게 있으면 좋겠다. 마치 깃 잔디처럼 말이야.... 그러면 이렇게 글을 굳이 두번 쓰는 일도 없을 것 같은데 말이다. 한번 찾아봐야겠다..

    MVVM 패턴 적용해본 후기 - 1

    In the Beginning.. 개발이 어느정도 마무리가 되고 보완하고 싶은 점을 찾아보다 늘 마음에 걸렸던 MVVM 패턴을 적용해보면 어떨까 하는 생각이 들었다. 개발을 들어갈 그 당시의 나는 정말 아무것도 몰랐고 프로젝트의 규모가 크지 않다는 핑계 뒤에 숨어 기계처럼 개발하는데에만 급급했던 것 같다. 그동안 몇번이고 공부를 했지만 항상 베일에 쌓여있는 것만 같았던 MVVM 패턴을 실제로 적용해보면서 도대체 뭐가 좋다는 건지? 정말 좋은 건지? 느껴보고자 했다. 🤔 MVVM 패턴이 모죠 해당 글에서 알 수 있듯 Model, View, ViewModel 로 이루어진 패턴이다. Model : 앱에서 사용되는 데이터와 그 데이터를 처리하는 부분 View : 화면 ViewModel : View 를 표현하기 ..