본문 바로가기

ALL260

현재화면을 캡쳐해서 공유하기 btnShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 현재화면을 캡쳐해서 공유하기 View view1 = getWindow().getDecorView(); // 현재 화면을 가져옴 // 현재 화면을 가져오는 방법은 여러가지가 있지만, 여기서는 가장 간단한 방법을 사용 view1.setDrawingCacheEnabled(true); // 캐시를 사용하도록 설정 // 캐시를 사용하면, 화면이 바뀌어도 캐시를 사용하기 때문에 화면이 바뀌지 않는다. Bitmap captureView = view1.getDrawingCache(); // 캐시를 비트맵으로 변환 // 비트맵이란 픽셀로 .. 2023. 3. 29.
MySQL AUTO_INCREMENT 값을 초기화 후, 테이블 안의 모든 데이터의 ID값을 재조정하는 방법 ALTER TABLE `테이블` AUTO_INCREMENT=1; SET @COUNT = 0; UPDATE `테이블` SET id = @COUNT:=@COUNT+1; 위 쿼리문은 현재 모든 데이터 ID값을 1부터 재조정하고, 다음 인덱스 값을 [마지막 행번호 + 1] 로 정하는 명령어입니다. id값의 AUTO_INCREMENT를 초기화한것. 2023. 3. 28.
android Spannable을 이용한 TextView에 버튼 만들고 버튼을 클릭하면 선택한 Spannable만 제거 결론 : Spannable의 클릭 빌드할때 오버라이딩한 클릭메소드를 적용해서 해결했다. 주석부분은 시행착오 참고용 void getAlcoholNetworkData() { Retrofit retrofit = NetworkClient.getRetrofitClient(MyRecipeWriteSecondActivity.this); CreatingApi api = retrofit.create(CreatingApi.class); SharedPreferences sp = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE); String accessToken = "Bearer " + sp.getString(Config.ACCESS_TOKEN, ""); offset .. 2023. 3. 24.
Android Textview 아이템 클릭이벤트 [Spannable] 첫번째 적용할XML파일에 TextView에 버퍼타입설정 android:bufferType="spannable" 두번째 코드에 텍스트뷰의 상태를 확인하는 부분을 추가해야함 리스너같은거인듯 textView.setMovementMethod(new android.text.method.LinkMovementMethod().getInstance()); // 클릭이벤트를 사용하기 위해 필요한 코드 // 이거 안하면 클릭이벤트가 안먹힘 전체코드 package com.leopard4.testingapp; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import andr.. 2023. 3. 23.
fragment에서 activity 로 이동할때 LifeCycle을 Log로 확인 Log.D는 플래그먼트의 라이프사이클 Log.I는 액티비티의 라이프사이클 탭바의 화면은 플래그먼트로 구성된것이고 리사이클러뷰의 아이템 한개를 클릭하면 뜨는것은 액티비티이다. 아래코드는 진행중인 프로젝트에서 테스트한것이므로 코드가 지저분하니 안보는걸 추천 FirstFragment 코드 package com.leopard4.alcoholrecipe; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; impor.. 2023. 3. 21.
Retrofit2 cache & Wireshark packet capture Q: Retrofit 2에서 api 인터페이스를 생성할 때 @Body 부분에 객체를 넣어야 한다는 것을 알고 있어서 Map으로 임시 객체를 생성하여 사용하는 방법을 알고 있습니다. 그러나 개체를 정의하는 클래스를 사용하는 경우 해당 개체에는 여러 멤버 변수가 있습니다. 그럴 수 있습니까, 아니면 그 중 하나만 사용할 수 있습니까? A: 예, Retrofit 2에서 요청 본문을 생성할 때 클래스에서 하나의 멤버 변수만 사용할 수 있습니다. 이렇게 하려면 요청 본문에서 사용하려는 멤버 변수만 포함하는 새 클래스를 만들 수 있습니다. 예를 들어 여러 멤버 변수가 있는 클래스가 있지만 요청 본문에서만 변수를 User사용하려는 경우 name다음과 같이 새 클래스를 만들 수 있습니다. 코틀린코드 복사 public .. 2023. 3. 20.
retrofit2 okhttp response의 글자가 깨진다면 유니코드가 인코딩이 제대로 되지않았기 때문이다. try { String errorBody = response.errorBody().string(); // 에러바디를 String으로 변환 JSONObject jsonObject = new JSONObject(errorBody); // String을 JSON으로 변환 String errorMessage = jsonObject.getString("error"); // JSON에서 error 키의 값을 가져옴 Log.i("REGISTER_ACTIVITY1", errorMessage); // else if errorMessage == 이미 존재하는 이메일입니다. 이런식으로 // 오류 메시지 처리 } catch (Exception e) { // 에러바디를 Strin.. 2023. 3. 16.
S3 delete_objects access denied S3 버킷에 이미지를 삭제하기위해 boto3를 연결 client = boto3.client('s3', aws_access_key_id = Config.ACCESS_KEY, aws_secret_access_key = Config.SECRET_ACCESS ) 삭제 메소드를 실행 client.delete_objects( Bucket=Config.BUCKET_NAME, Delete={ 'Objects': [ { 'Key': imgUrl } ], }, ) an error occurred (accessdenied) when calling the deleteobject operation: access denied 액세스 권한이 없다는 에러 메세지를 반환했다. 나는 S3 풀액세스 권한을 분명히 설정해두었고 ACL도 문.. 2023. 3. 15.
Postman authToken 자동토큰 환경변수등록 회원가입 & 로그인에만 해당코드작성 var data = JSON.parse(responseBody); pm.environment.set("token", data.access_token); 나머지 자동 토큰 인증이 필요한 api에만 이후 로그인이나 회원가입으로 토큰을 생성하면 이 토큰값이 자동으로 환경변수에 할당됨 2023. 3. 7.
pandas selenium base64 재미로 보는 예제 In [ ]: import pandas as pd In [ ]: # 부재료 - 시트1.csv 파일을 판다스로 읽어옵니다 df2 = pd.read_csv('부재료가공완료.csv', encoding='utf-8') # df2 index를 1부터 시작하게 바꿔줍니다 df2.index = range(1, len(df2) + 1) df2 Out[ ]: 재료 사진 Unnamed: 2 1 소주잔 NaN https://www.google.com/imgres?imgurl=https%3A%... 2 맥주잔 NaN https://www.google.com/imgres?imgurl=https%3A%... 3 얼음 NaN https://www.google.com/imgres?imgurl=http%3A%2... 4 토닉워터 Na.. 2023. 3. 7.
Mysql 데이터 유형을 고려할때, 설계의 핵심(정규화) 아래 내용은 스스로 학습한 내용을 바탕으로 작성한 주관적인 글이므로 맹신하지 마세요 개인참고용입니다 데이터타입 설정에 관한 지식 1.참조하는 외래키는 참조당하는 키와 데이터 타입이 같아야한다. ? 꼭 그럴필요는 없지만 기본적으로 맞추는것이 좋다 이것은 잠재적 에러를 방지한다 pk에 int형 un 을 설정했다면 pk를 참조하는 fk도 un(양의정수만)을 설정하는것이 상식이지않을까 ? 2.NOTNULL이 있을경우 속도가 좀더좋다는 걸 얼핏봣다? 근거는 null인지 체크하려고 한번의 연산?을 거치는 것같다 (아닐수도있음) 아무튼 꼭필요한 경우가 아니라면 null로 할 이유가 없다는것 3.float은 4바이트 decimal은 5바이트 금융관련데이터는 decimal이나 numeric 을 이용해야한다 더정확한 실수.. 2023. 3. 7.
Crawling 구글자동검색이미지다운 1.필요한 라이브러리를 그냥많이 불러온다 import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.keys import Keys import time import pandas as pd import numpy as np import csv import os from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.. 2023. 3. 6.