지식메모

반응형

 

다빈치 리졸브를 실행했는데 아무 반응이 없을 때 해결법

 

아마 처음에 종료하고 다시 실행시킬 일이 생겼을 때 이런 현상이 발생하는데

완전 종료가 되지 않고 백그라운드에서 계속 실행되어있어서 발생하는 것 같다.

 

작업관리자에서 다빈치 리졸브를 완전히 종료해주면 해결.

 

반응형
반응형

 

youtu.be/iC2V5E7G2ac

 

 

본 계정에 유튜브 채널을 생성하여 올리고 있었는데 장기적으로는 브랜드 채널에서 운영하는게 좋다고 하여 이전해보았다.

 

구독자도 얼마 없으니 지금 이전해놓는게 좋을 것 같다. 이미 커져버린 채널은 아무래도 부담이 있을듯.

 

이전 하기 전에 미리 브랜드 채널을 생성해 놓는 걸 추천한다.

 

 

채널 이전시 댓글이 사라진다는 이야기가 있어 확인차 댓글을 확인

 

 

댓글 확인 후 설정으로 이동

 

 

고급 설정 > 브랜드 계정으로 채널 이전 클릭

 

 생성해놓은 브랜드 계정을 클릭해준다.

 

 

채널 삭제 탭

 

이미 채널이 있다는 상태는 해당 계정으로 채널이 생성되어있다는 의미이다.

원래 유튜브도 댓글달고 하려면 채널을 개설해야함

 

채널 이전 클릭
댓글과 커뮤니티 설정은 이전할 수 없다고 되어있다.

채널이전 클릭

 

 

 

이전 완료

 

 

본 계정 상태

 

이전 후 본 계정은 초기화 되어 유튜브 채널을 다시 개설해주어야 한다.

 

 

구독자도 옮겨져있다

 

이전 후에도 댓글이?

이전 후에도 댓글이 보이고 있다. 아직 업데이트가 안된 느낌이라 다른 계정으로 전환 후 확인해보았다.

 

 

이전 후 댓글 상태

 

다시 보니 답글이 있따고 나와있지만 내 댓글은 보이지 않았다. 댓글이 모두 삭제되어 반영되었다.

 

이후에도 본 계정으로 전환하여도 댓글은 노출되지 않았따.

 

그런데 하루 뒤..

 

누군가가 다른 동영상에 남긴 댓글에 답글을 달았다

 

그렇다면 본 계정에서 단 댓글들이 남아있다는 소리인데 이전 동영상에서 다시 확인해보았따

댓글이 남아있고 수정 삭제도 가능하였다

댓글은 이전되지 않는다고 나와있었는데 어떻게 남아있는지 궁금했다. 본 계정이라 계속 남는 걸까?

만약 브랜드 계정 > 브랜드 계정 이동이었다면 댓글은 삭제되었을지 싶다.

 

 

그런데 커뮤니티 설정은 남아있었는데 의문..

 

그러나 약 일주일 뒤 다시 확인을 해보니 댓글은 모두 삭제되었고 커뮤니티 설정도 초기화 되었다

브랜드 계정 이동 후 여전히 댓글이 노출되고 있다면 충분한 시간을 가지고 다시 확인해보는걸 추천한다.

 

결론

 

본 계정 > 브랜드 계정 이동시에 본계정으로 남긴 댓글 삭제 및 커뮤니티 설정 모두 초기화됨

 

 

반응형
반응형

 

다빈치 리졸브 16.2.4 기준 따라다니는 글씨와 이미지 만드는 방법입니다.

 

youtu.be/KWSL4amBye0

 

반응형
반응형

youtu.be/FnhnUKtK88c

 

예능에서 보면 특정인물표정을 잡아주는 확대하는 장면이 나오는데 다빈치리졸브16에서 그 효과를 내보는 방법입니다.

반응형
반응형

 

 

 

 

 

뜬금 애드센스 게시자 정책 위반되었다는 메일이 와서 확인해보니 가치 있는 인벤토리: 콘텐츠 없음 이라는 사유로 위반이 되었다고 한다.

메일 내용

 

정책센터 모습

 

확인해보니 저 링크는 삭제된 페이지로 나오지 않는 글인데 왜 이것까지 감지해서 위반됐다고 하는지 의문..

 

검토 2가지 방법이 나와있음

 

이미 삭제된 페이지라 뭐 수정할 것도 없기 때문에 옵션 2 방법으로 수행

 

근데 안내사항은 이상한 방법만 알려준다.

새 URL 그룹 만들기 해도 2번에서 막힌다. 대체 뭘 안내한건지 의문. 진짜 불친절하고 성의없는 안내사항

 

광고 > 개요에서 해당 사이트 수정 버튼 클릭

우측 연필모양 클릭

 

그럼 우측에 메뉴가 뜨는데 페이지 제외의 관리를 클릭한다.

 

관리 클릭

 

그럼 페이지 제외 관리 페이지가 뜨는데 미리보기 준비한답시고 화면을 가려버린다. 좀 기다리면 없어지니 기다린 후에

 

미리보기 준비 중이라는 화면이 가리는 중..

 

 

제외 추가를 눌러준 후 문제가 생긴 게시글 URL을 입력해준다. 옵션은 이 페이지만 선택 후 에 추가해주면

 

 

이렇게 제외된 페이지로 추가가 된다.

 

페이지제외가 추가된 모습

 

진짜 구글 애드센스도 보면 메일로 안내사항을 적어주는데 제대로 되어있는게 없다. 하라는 대로 따라하면 메뉴 자체가 존재하지도 않은게 태반이다. 결국 직접 뒤젹거리면서 찾아야 해결이 된다. 좀 더 자세하고 친절하게 알려주면 좋겠다. 메일을 받고도 처리를 못해서 방치되는게 한 두개가 아니다.

 

지금도 ads.txt 어쩌구 메일이 왔는데 안내사항대로 따라하려니 해당 메뉴가 안보인다. 답답할 노릇

 

 

 

 

 

반응형
반응형

먼저 CPU 가상화 지원 확인

https://gbworld.tistory.com/1604

 

CPU 가상화 AMD SVM, VT 활성화 하는 방법

이번 포스팅에는 녹스, 미뮤, 모모 등의 앱 플레이어의 퍼포먼스를 높이기 위해 필수적인 CPU 가상화 모드 설정 방법에 대해 정리해봤습니다. 참고로 SVM은 AMD CPU의 가상화 옵션, VT는 인텔 CPU의 가상화 옵션을..

gbworld.tistory.com

 

윈도우 설정 

https://m.blog.naver.com/PostView.nhn?blogId=showmeii1201&logNo=221484780893&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

[Android]안드로이드 스튜디오 AVD(에뮬레이터) AMD CPU에서도 빠르게 사용하기

안드로이드 스튜디오를 이용하면서 AVD(에뮬레이터)를 자주 사용합니다. 하지만 AMD CPU에서는 작...

blog.naver.com

 

반응형
반응형

 

SharedPreferences 사용법은 이분의 블로그를 보고 참고하였음

https://re-build.tistory.com/37

 

[Android] SharedPreferences 사용하기

이래저래 바쁘다는 핑계로 미루다가 오랜만에 포스팅을 하게 되었습니다. 벌써 새해가 밝았네요. 저만 시간이 빨리 가는 것처럼 느껴지는 건 아니겠죠? 모두 새해에는 좋은 일이 생겼으면 좋겠습니다. SharedPrefe..

re-build.tistory.com

앱을 쓰면 자주 보이는 로그인 정보 저장 기능을 구현한다. 

UI 는 다음과 같다

구현 목표는

  • 아이디와 암호를 체크박스 옵션으로 저장 유무를 결정한다.
  • 아이디와 암호를 따로 구분하지 않고 같이 저장함
  • 로그인시 아이디와 암호 둘 중 하나가 입력되지 않으면 "아이디/암호를 입력해주세요" 토스트메시지를 띄운다
  • 아이디/암호 입력 후 로그인 정보 기억하기 체크만 해도 정보가 저장된다.
  • 로그인 정보 기억하기를 체크하면 저장되고 해제하면 정보를 삭제한다

이런 동작을 하도록 구현

위 블로그를 참고하여 PreferenceManager를  만들어주고 MainActivity 이렇게 2개의 파일만 준비되어있으면 된다.

빨간 상자의 클래스는 필수 생성

 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="로그인"
            android:id="@+id/parse"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="QR Scan"
            android:id="@+id/scanQR"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="자산목록"
            android:id="@+id/dbList"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/et_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:hint="사번" />

        <EditText
            android:id="@+id/et_pw"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPassword"
            android:hint="암호"/>

        <CheckBox
            android:id="@+id/cb_save"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="로그인 정보 기억하기" />

    </LinearLayout>

</RelativeLayout>

 

자세한 설명은 주석 참고

MainActivity.java

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private Button parsingBtn;
    private Button scanQRBtn;
    private Button ListBtn;
    private EditText et_id;
    private EditText et_pw;
    private CheckBox cb_save;
    String id,pw;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this; // 이거 필수!

        parsingBtn = (Button) findViewById(R.id.parse);
        scanQRBtn = (Button) findViewById(R.id.scanQR);
        ListBtn = (Button) findViewById(R.id.dbList);
        et_id = (EditText) findViewById(R.id.et_id);
        et_pw = (EditText) findViewById(R.id.et_pw);
        cb_save = (CheckBox) findViewById(R.id.cb_save);
        
        
        boolean boo = PreferenceManager.getBoolean(mContext,"check"); //로그인 정보 기억하기 체크 유무 확인
        if(boo){ // 체크가 되어있다면 아래 코드를 수행
            //저장된 아이디와 암호를 가져와 셋팅한다.
            et_id.setText(PreferenceManager.getString(mContext, "id")); 
            et_pw.setText(PreferenceManager.getString(mContext, "pw"));
            cb_save.setChecked(true); //체크박스는 여전히 체크 표시 하도록 셋팅
        }

        parsingBtn.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){ //로그인 버튼 눌렀을 때 동작
                //아이디 암호 입력창에서 텍스트를 가져와 PreferenceManager에 저장함
                PreferenceManager.setString(mContext, "id", et_id.getText().toString()); //id라는 키값으로 저장
                PreferenceManager.setString(mContext, "pw", et_pw.getText().toString()); //pw라는 키값으로 저장
                
                Intent intent = new Intent(MainActivity.this, Parsing.class); //이건 없어도 무방
                // 저장한 키 값으로 저장된 아이디와 암호를 불러와 String 값에 저장
                String checkId = PreferenceManager.getString(mContext, "id"); 
                String checkPw = PreferenceManager.getString(mContext, "pw");
                //아이디와 암호가 비어있는 경우를 체크
                if (TextUtils.isEmpty(checkId) || TextUtils.isEmpty(checkPw)){
                    //아이디나 암호 둘 중 하나가 비어있으면 토스트메시지를 띄운다
                    Toast.makeText(MainActivity.this, "아이디/암호를 입력해주세요",
                            Toast.LENGTH_SHORT).show();
                }else { //둘 다 충족하면 다음 동작을 구현해놓음
                    intent.putExtra("id",checkId);
                    intent.putExtra("pw",checkPw);
                    startActivity(intent);
                }
            }
        });

        //로그인 기억하기 체크박스 유무에 따른 동작 구현
        cb_save.setOnClickListener(new CheckBox.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (((CheckBox)v).isChecked()) { // 체크박스 체크 되어 있으면
                    //editText에서 아이디와 암호 가져와 PreferenceManager에 저장한다.
                    PreferenceManager.setString(mContext, "id", et_id.getText().toString()); //id 키값으로 저장
                    PreferenceManager.setString(mContext, "pw", et_pw.getText().toString()); //pw 키값으로 저장
                    PreferenceManager.setBoolean(mContext, "check", cb_save.isChecked()); //현재 체크박스 상태 값 저장
                } else { //체크박스가 해제되어있으면
                    PreferenceManager.setBoolean(mContext, "check", cb_save.isChecked()); //현재 체크박스 상태 값 저장
                    PreferenceManager.clear(mContext); //로그인 정보를 모두 날림
                }
            }
        }) ;


        scanQRBtn.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent = new Intent(MainActivity.this, ScanQR.class);
                startActivity(intent);
            }
        });

        ListBtn.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
//                Intent intent = new Intent(MainActivity.this, DBHelper.class);
//                startActivity(intent);
            }
        });
    }
}

 

동작 별 코드를 설명하자면

1. 아이디와 암호를 입력 후 로그인 기억하기를 체크했을 때

이 코드가 동작하게 되어 PreferenceManager에 아이디와 암호가 각각 "id","pw"라는 키값으로 저장된다. 사용할 때는 getString에서 이 키값으로 불러와 사용하면 된다.

 

2. 로그인 기억하기가 체크된 상태로 앱을 종료하고 다시 실행했을 때

        boolean boo = PreferenceManager.getBoolean(mContext,"check"); //로그인 정보 기억하기 체크 유무 확인
        if(boo){ // 체크가 되어있다면 아래 코드를 수행
            //저장된 아이디와 암호를 가져와 셋팅한다.
            et_id.setText(PreferenceManager.getString(mContext, "id"));
            et_pw.setText(PreferenceManager.getString(mContext, "pw"));
            cb_save.setChecked(true); //체크박스는 여전히 체크 표시 하도록 셋팅
        }

위 코드에서 로그인 정보 기억하기 체크 유무를 확인한다. 체크가 된 상태로 종료했기 때문에 boo는 true 가 나올 테고 저장되어 있던 "id","pw"키 값을 불러와 아이디,암호 입력창에 셋팅해놓는다.

 

3. 로그인 기억하기 체크를 해제했을 때

위 코드가 동작하여 현재 체크 해제 상태이므로 false를 PreferencerManager에 상태 값을 저장하고 저장된 로그인 정보를 clear 코드로 모두 날린다. 그럼 앱을 종료하고 다시 실행했을 때 입력창에 아무것도 입력되어있지 않는 상태로 나타난다.

 

구현 방법은 사용자마다 다르고 더 깔끔하고 단순하게 작성할 수도 있지만 동작만 된다면 끝. 더 건드렸다가 다시 미궁 속으로 빠지긴 싫다.

 

반응형
반응형

 

이방법보다 더 편한 방법이 있을지는 모르겠지만 그냥 급한대로 노가다식 노래방 자막 만들기를 해보았다

물론 싱크도 수작업으로 맞춰주어야 한다는 치명적인 단점이 있다.

 

짤막한 가사정도는 급한대로 이 방법으로 노래방 가사를 만들 수 있다.

 

https://youtu.be/94RZvHmWy64

 

 

반응형

+ Recent posts