목표 : 그랑블루 부계정들 일일 접속보상 자동으로 타기

 

 

1. 계정별 크롬 지정해주기

 

[기타] 크롬 사용자 추가 / 이클립스 사용 설정

1. 크롬 사용자 추가 (사용자 폴더 지정) 1. 기존 크롬 바로가기를 복사해 새 바로가기를 만든다 2. 마우스 우클릭 - 속성 3. 대상 항목에 --user-data-dir=폴더경로 를 추가한다 "C:\Program Files (x86)\Goog..

nato-blog.tistory.com

 

  위 글에서 크롬 사용자 추가 부분을 따라하면 된다

 

  다음과 같이 크롬 바로가기를 계정수만큼 만들고, 각 바로가기마다 속성 - 바로가기 - 대상에

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="c:\\\\chrome\\\\granblue1"
:: 당연히 chrome 설치 경로가 다르다면 수정해줘야한다

  이렇게 서로 다른 user-data-dir을 지정해준다

 

  그 후 각각 로그인해서 게임에 로그인하고, 설정 - 시작그룹 에서 원하는 페이지를 등록해준다

  별도로 "로그인 유지" 같은 옵션이 있다면 체크해준다

  브라우저를 실행했을때 시작화면으로 원하는 계정의 게임화면이 뜨면 성공이다

성공 화면

  

 

2. 자동실행 파일 만들기

 

  이제 저 브라우저들이 자동으로 실행되게 하면 매일매일 로그인보상을 타먹을수 있다

 

  새 txt파일을 만들어서

@Echo off
start "g1" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue1"
start "g2" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue2"
start "g3" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue3"
start "g4" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue4"

  이렇게 설정한 --user-data-dir대로 실행되도록 한다

  (같은 chrome이라 그런지 start "title" 을 다르게 주지 않으면 하나밖에 실행되지 않았다)

 

  txt파일의 확장자를 bat로 바꾼 후 파일을 실행해보면

  이렇게 뜬다 (크롬 탭 위치는 이전에 종료했던 위치/크기로 뜨니, 원하는 순서/위치로 조정하면 된다)

 

 

3. 자동종료하기

  

  로그인보상 받었으면 이제 볼일 없으니 자동으로 종료되게 하면 된다

 

  chrome탭을 구분하는 방법을 찾아봤는데, 이름으로 구분하는 방법이 있다

 

start "g1" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue"
start "g2" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue2"
start "g3" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue3"
start "g4" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --user-data-dir="c:\\\\chrome\\\\granblue4"

timeout 4

taskkill /FI "WINDOWTITLE eq Granblue Fantasy - Chrome"

  아래의 taskkill 한줄 추가해주면 모든 Granblue Fantasy 라는 이름의 탭이 한번에 종료되게 된다

  네트워크 지연/에러 가능성을 생각해 실행-종료 사이에 4초간 여유를 주었다

 

 

4. 자동실행 등록하기

 

  이제 bat 파일을 매일 PC를 켤 때마다 자동으로 실행되게 하면 된다

 

  시작프로그램 경로는 다음과 같다

C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

 

  

  해당 폴더에 bat파일을 넣으면 작업관리자 - 시작프로그램 목록에 뜨고, 매번 PC 시작할때 실행된다

 

 

5. 추가 - 접속 우회 설정

 

  평소에 게임할때 별 문제 없이 잘 되면 위 4번까지만 진행해도 된다

 

  아쉽게도 내 PC에서는 그냥은 게임이 되지 않는다... 인터넷 문제인지 지역락이라도 있는지...

 

  VPN을 키면 잘 작동하긴 하지만 VPN을 자동으로 실행하려면 다음 두가지 작업이 없어야한다

 

이런게 있으면 안된다

  1. VPN을 실행할 때 사용자 계정 컨트롤 확인창이 뜨면 안되고

  2. 프로그램 실행과 동시에 VPN이 작동해야한다

 

  2번 조건은 VPN프로그램을 잘 찾으면 되고, 1번 조건은 여러 해결법이 있는데,

  이렇게 계정 컨트롤 설정을 직접 수정하는 방식은 절대 하면 안된다

  (온갖 이상한 프로그램이 최소한의 방어막도 없이 들어온다)

 

  작업 스케줄러를 수정하는 방법도 있는데, 다음에 알아보자

 

 

  VPN 없이 위 조건들을 한번에 해결하는 방법으로 goodbyedpi를 사용하는 방법이 있다

 

  VPN처럼 암호화를 해버리는건 아니고 DPI 우회라고 하는데, 오히려 그 덕분에 좀 더 빠르고 가볍게 사용할수 있다

  사용법은 간단하다, 우선 아래 링크에 가서 최신버전을 다운받는다

 

Releases · ValdikSS/GoodbyeDPI

GoodbyeDPI—Passive Deep Packet Inspection blocker and Active DPI circumvention utility (for Windows) - ValdikSS/GoodbyeDPI

github.com

 

  zip파일 압축 해제시 service_install_russia_blacklist.cmd 파일이 존재한다

  해당 파일에 아래 내용을 복사-붙여넣기 후 실행해주면 된다

@ECHO OFF
PUSHD "%~dp0"
set _arch=x86_64
IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set _arch=x86_64)
IF DEFINED PROCESSOR_ARCHITEW6432 (set _arch=x86_64)

echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
sc stop "GoodbyeDPI"
sc delete "GoodbyeDPI"
sc create "GoodbyeDPI" binPath= "\"%CD%\%_arch%\goodbyedpi.exe\" -f 30 -k 30 -n -e 30 --dns-addr 1.1.1.1"" start= "auto"
sc description "GoodbyeDPI" "Passive Deep Packet Inspection blocker and Active DPI circumvention utility"
sc start "GoodbyeDPI"

POPD

 

  이제 PC가 실행될 때 마다 자동으로 백그라운드에 goodbyedpi가 실행되며, 문제 없이 게임에 접속할 수 있게 된다

1. PMD란?

  • Programming Mistake Detector
  • 미사용 변수, 명명규칙 위반, 중복코드 등을 탐지하는 정적 코드 분석 도구이다.

 

2. 설치하기

File - Settings - Plugins - Marketplace에서 PMD 검색 - Install 후 재시작

 

3. 실행하기

 

재시작 후 Tools - Run PMD - Pre Defined에서 All 선택하면 모든 항목에 대해 코드 분석을 시작한다

각 항목별 분석도 가능하다

 

내 코드는 쓰레기인가?

결과 화면

각 항목별로 몇개의 문제점이 있는지, 어디에 있는지 확인 가능하다

 

위 사진은 콘솔 출력 코드가 총 22개 존재한다는 뜻이다

 

File - Settings - PMD 메뉴에서 직접 RuleSet을 추가해서 사용할 수도 있다

[뱃지 제작 사이트]

 

Shields.io: Quality metadata badges for open source projects

Love Shields? Please consider donating to sustain our activitiesYour BadgeStaticUsing dash "-" separator/badge/ - - Dashes --→- DashUnderscores __→_ Underscore_ or Space  →  SpaceUsing query string parameters/static/v1?label= &message= &color= Colo

shields.io

 

증상 : 로컬 markdown 편집기 (Typora)에서는 뱃지가 정상적으로 출력되는데, github에 업로드하니 출력되지 않는 경우

 

좌 : Typora 화면    우 : Github 화면

 

해결 : URL에 특수문자가 포함되어 있어 제대로 실행하지 못해서 발생한 오류

 

https://img.shields.io/badge/spring%20boot-#4F5DC1.svg?&style=for-the-badge&logo=springboot&logoColor=white

https://img.shields.io/badge/spring%20boot-%234F5DC1.svg?&style=for-the-badge&logo=springboot&logoColor=white

위와 같이 커스텀 색 지정 중 #가 %23으로 변환되지 않았기 때문이었다.

시나리오 : 회사의 출석 시스템이 있을때, 매일 밤 12시에 전 사원의 당일 출석 데이터가 생성되도록 하고 싶다

 

1. 테이블 생성

 

TimeStamp default current_timestamp()

위와 같은 방식으로 현재 시각을 넣어줄 수 있겠지만, 그럴 경우

2021-01-15 13:58:12

위와 같이 년월일 뿐 아니라 시분초까지 저장되게 된다

 

이렇게 되니 프론트에 뿌릴때도 한번 가공해야하고.. 비교하기도 힘들고.. 여러모로 귀찮아서 더 좋은 방법을 찾아봤다

 

date default (CURRENT_DATE)

이런 방식으로 저장할 경우, 시간 정보는 없이 날짜 정보만 저장되게 된다

 

create table ATTENDANCE(
	date date DEFAULT (CURRENT_DATE),
	userId varchar(15),
	attend int default 1,
	primary key(date, userId),
	FOREIGN KEY (userId) references USER(userId)
);

위와 같이 날짜 | 계정id | 출석여부 3가지로 테이블을 구성했다

 

 

2. 이벤트 등록

 

우선 MySQL의 이벤트가 활성화 상태인지 체크해야한다

 

show variables like "event%";

위 명령어를 입력하여 확인할 수 있다

ON 이라면 활성화 된 것이다.

 

OFF라면 cnf파일이나 ini파일 내부에

event_scheduler = ON

이렇게 설정해주면 된다 (MySQL에서 바로 바꿀 경우, 재시작되면 설정이 증발한다)

 

 

그 후 매일매일 실행될 이벤트를 등록하면 된다

create event if not exists INSERTATTENDANCE # event 이름
	on schedule
		every 1 day # 매일매일
        STARTS '2021-07-02 00:05:00' # 기준이 될 시작 시간
	on completion preserve enable # 수행 후 삭제하지 않음
    DO
    insert into ATTENDANCE (`userid`) select userId from user; #실제 수행될 SQL문

다음과 같은 이벤트로, 7/2 00:05분에 시작하여 하루마다 한번씩 실행되니 매일 00시 05분에 실행되는 것이다

 

마지막 insert문이 실행되며, ATTENDANCE 테이블에 모든 userId를 넣어주며, 나머지 date와 attend 컬럼은 default값이 설정되 있으므로 매일 / 모든 user에 대해 / 기본 attend 1(결석) 의 값이 들어가게 된다

 

실제로 며칠정도 두면 다음과 같이 자동으로 데이터가 생성된걸 확인할 수 있다

 

 

+ 혹시 해당 시간이 되었는데 이벤트가 실행되지 않았다면, MySQL의 시간이 우리 시간과 맞지 않을 수 있다

 

select now();

다음 명령어로 확인 가능하다

 

 

HackMD - Collaborative Markdown Knowledge Base

Best way to write and share your knowledge in markdown.

hackmd.io

 

hackmd.io 서비스를 이용하면 가능하다

 

 

New note를 이용해 새 노트를 생성한 후

 

 

우상단 공유버튼에서 읽기 권한, 수정 권한 설정 후 Copy를 눌러 링크를 공유하면 된다

링크 공유로 할 경우 Publish는 필요 없는듯하다

 

mode는 초기에 어떤 형태로 페이지가 열릴지 설정한다

1. chrome://flags 접속

 

2. calcuated-native 검색

 

 

3. Disabled로 변경 후 크롬 재시작

@DynamicInsert
@DynamicUpdate

 

어노테이션을 클래스 상단에 붙여주면 null 값은 insert/update문에 들어가지 않게 된다

해결방법 : auto_increment 옵션은 int나 float같은 숫자값에만 사용할 수 있다

 

+ Recent posts