목차

반응형

 

1. 개요

2. 자주 쓰는 기능

3. 추천 설정 옵션

 

 

 

 

 

1. 개요

생각보다 윈도우 기본 내장인 캡처 도구를 사용하는 사람이 많다. 하지만 나는 오래전부터 픽픽이라는 프로그램을 사용하였는데 정말 편하다. 지금 캡처 도구를 사용하고 있는 사람이라면 한번 사용해보는 것을 강력 추천한다.

 

 

2. 자주쓰는 기능

활성화된 윈도우 캡처하기(Alt + PrintScreen)

윈도우 컨틀로 캡처하기(Ctrl + PrintScreen)

영역을 지정하여 캡처하기(Shift + PrintScreen)

전체선택(Ctrl + A)

이미지 크기 변경(Ctrl + R)

캔버스 크기 변경(Ctrl + E)

 

스탬프

스탬프는 이미지 상에서 순차적인 설명이 필요할 때 굉장히 편리하다.

 

1. Today Headline은 .... 입니다.

2. 색채의 시각적 효과는 ... 입니다.

3. 색채탐방은 ... 입니다.

6주 Color quiz는 ... 입니다.

이런 식으로 설명할 때 굉장히 편리하다.

 

편리한 도형 그리기

무언가 설명할 때 빨간색 박스를 그려야 하는 경우가 굉장히 많다.

그럴 때도 픽픽을 사용하여 박스를 그리고 색을 넣어주면 빠르게 원하는 결과물을 얻을 수 있다.

 

모자이크

1. 모자이크 영역 선택

2. 모자이크 클릭

3. 모자이크 비율 설정

 

모든 파일 저장

1. 다른 이름으로 저장

2. 모든 파일 저장

 

3. 추천 설정 옵션

자꾸 무언가 수정하고 선택할 때마다 수정한 요소를 이미지와 합칠지 물어보는 것을 비활성화하는 것인데 나는 자동으로 합쳐지는 게 편해서 위 설정을 사용해놓고 사용한다.

반응형
반응형

자전거 국토종주 게시물 시리즈

자전거 국토종주 0일차 - 준비

자전거 국토종주 1일차 - 인천~여주

자전거 국토종주 2일차 - 여주~충주

자전거 국토종주 3일차 - 충주~대구

 

 

3일차 충주에서 대구의 고령보까지... 다시 보니 정말 살인적인 일정이었다. 당일 숙소에서 도착해보니 몸살 기운까지 있었다. 다음날 집으로 돌아갔는데 다음날도 자전거 탔으면 죽었을지도 모르겠다 ㅋㅋ

 

 

이화령고개휴게소인증센터

정말 살인적인 코스다. 소조령이라는 산길을 먼저 올라야 하는데 여기서부터 뭔가 느낌이 좋지 않다.

소조령은 몸풀기고 이화령이라는 경사도 10% 되는 산을 5km동안 올라가야 한다. 사실 아침 첫 코스라서 그렇게 힘들지는 않았다. 하지만 여기서 에너지를 많이 써버리는 바람에 이날 전체적으로 힘들었다.

이후 압도적인 길이의 다운힐.... 추웠다.

 

왼쪽은 충청북도, 오른쪽은 경상북도 뭔가 멋있어서 찍었다.

 

 

역시 풍경은 좋다.

 

문경불정역인증센터

문경불정역 인증센터 바로 앞에 카페가 있어서 커피 한잔 했다.

여기서부터는 뭔가 봤던 사람들을 계속 만나게 된다. ㅋㅋ

 

상주상풍교인증센터

슬슬 굉장히 외진 곳이라서 편의점과 식당을 찾아보기 힘들다.

보급할 수 있는 곳이라면 빡세게 해야 한다.

 

상주보인증센터

밥도 맛있지는 않지만 마땅히 먹을 곳이 없어서 허겁지겁 먹었다.

 

낙단보인증센터

이제부터는 거의 비슷한 풍경이 자주 나오고 힘들어서 뇌를 빼고 타게 된다.

 

구미보인증센터

 

 

칠곡보인증센터

칠곡보는 가족단위로 굉장히 많이 놀러 오는 공원 느낌이었다.

그래도 칠곡보만 넘으면 낙동강 자전거길 상류 부분이 끝나고 낙동강 자전거길 하류 부분만 돌면 된다.

 

강정고령보인증센터

숙소는 강정보 근처에 있는 숙소에서 머물렀다. 강정보는 어째서인지 사람들이 엄청 많고 무슨 유흥가처럼 늦게까지 사람들이 엄청 시끄러웠다.

따라서 숙소를 강정보 시내보다는 시내 들어가기 전 자전거 도로를 따라 나있는 외곽의 한적한 숙소를 추천한다.

강정보 부근부터 계속 저런거 타고 다니는데 부러웠다. ㅋㅋㅋ

강정보 부근에는 모텔과 숙소가 엄청 많았다.

숙소에서 휴식하면서 다음날 비가 온다는 소식과 3박 4일 일정을 위해서 내일 대략 200km를 타야 하는데 몸 컨디션도 좋지 않아서 다음을 기약하기로 했다.

저녁은 족발이랑 맛있는 것 먹었다.

몸살 기운이 있었는지 자는 동안 계속 땀 흘리면서 깨서 잠도 제대로 못 잤다.

여러모로 고집부려서 다음날에도 자전거 탔으면 진짜 고생했을 것 같다.

 

그렇게 다음날은 강정역에서 동대구버스터미널까지 이동해서 고속버스를 타고 집 근처 터미널까지 이동해서 일정 마무리하였다.

 

대구까지 가놓고 끝나서 아쉬움이 많이 남았다.

스스로 많이 부족함을 느꼈다.

다음에 다시 하게 된다면 하체를 더욱 단련해야겠다.

반응형
반응형

자전거 국토종주 게시물 시리즈

자전거 국토종주 0일차 - 준비

자전거 국토종주 1일차 - 인천~여주

자전거 국토종주 2일차 - 여주~충주

자전거 국토종주 3일차 - 충주~대구

 

 

2일차 목표는 여주에서 이화령을 넘어 문경쪽으로 도착하는 것이 목표였으나 이화령을 넘지 못하고 충주 쪽에서 머물렀다. 지인분 페이스를 맞추다 보니 굉장히 속도가 느려졌는데 아무래도 2일 차 일정을 지키지 못한 것이 이번 여정 실패의 가장 큰 패착으로 보인다.

 

 

강천섬게스트하우스

아침 숙소에서 라면과 간단한 에너지 보충을 마치고 바로 출발했다.

 

가는 길에 꽤 괜찮은 풍경이 많이 보였다.

 

비내섬인증센터

비내섬 인증센터 바로 옆에 비내 쉼터라고 식당이 있는데 거기서 간식을 먹었다. 그냥 밥 먹을만하면 먹는거다. ㅋㅋ

냉면이 땡겨서 먹었는데 먹을 땐 맛있게 먹었는데 역시 따뜻한 것을 먹는 게 좋은 것 같다.

 

이제 수도권을 벗어났기 때문에 정말 국토대종주를 하는 사람 아니면 만날 일이 없다고 한다.

사람도 별로 없고 사진을 보면 알겠지만 풍경도 되게 좋다.

 

탄금대인증센터

탄금대 인증센터는 비교적 충주 시내에 위치하기 때문에 근처 식당이 많다.

든든한 갈비탕을 먹었다. 맛없었다...

 

수안보인증센터

수안보라고 해서 왕의 온천으로 유명한 곳에 도착했다.

원래는 다음 코스인 이화령(국토종주에서 가장 힘든 코스 중 하나) 당일 넘으려고 했으나 산이라서 해가 일찍 져서 위험해서 조금 일찍 숙소에서 쉬었다.

사이판 온천호텔이라는 곳에서 머물렀다.

- 3인 1박 7만 원이라는 저렴한 가격

- 자전거 보관시설 o

- 세탁기, 건조기 있음

- 고양이 키움

- 근처 식당 많음

 

생각보다 많이 이동하지 못하여서 돌이켜보면 당일 아침에 훨씬 더 일찍 일어나서 어떻게든 이화령을 넘었어야 했다.

반응형
반응형

자전거 국토종주 게시물 시리즈

자전거 국토종주 0일차 - 준비

자전거 국토종주 1일차 - 인천~여주

자전거 국토종주 2일차 - 여주~충주

자전거 국토종주 3일차 - 충주~대구

 

1일 차 목표 인천 아라 서해갑문 - 여주보 인증센터

 

청라국제도시역

지하철을 타고 이동하여 청라국제도시역에서 시작했다.

아침은 간단하게 때웠다. 이때만 해도 나는 이렇게 힘든 여정인 줄 상상도 못 했다.

 

아라 서해갑문 인증센터

여기서부터 여정을 시작했다.

 

 

아라 한강갑문 인증센터

여기는 연습하면서 자주 들르던 곳이라 사람도 많고 아직까지는 별로 실감이 안 난다.

 

 

광나루 자전거길 인증센터

깜빡하고 여의도 자전거길 인증센터를 안 찍었다. 다음에 찍지 뭐...

곳곳에 편의점, 편의시설도 엄청 많고 마찬가지로 사람도 엄청 많다.

음수대도 많이 있기 때문에 물이 부족하면 음수대를 사용하여 보충하면 돈도 아끼고 좋다.

 

미사리 밀빛 초계국수

점심 초계국수를 먹었다. 먹고 보니 따뜻한 음식을 먹는 게 더 좋은 것 같다.

자전거 주차시설?도 잘 되어있고 내부 시설은 시원하고 나갈 때 얼음물도 공짜로 주고 국토종주하는 사람은 만두도 서비스로 준다. 굿

 

능내역 인증센터

평범한 인증센터였다.

 

양평군립미술관인증센터

여기서부터는 양평의 좋은 풍경을 볼 수 있어서 좋다.

 

솔직히 여기까지는 조금 힘들지만 기분이 좋다.

 

 

이포보인증센터

이제 슬슬 날이 어두워지고 사람들이 안보이기 시작한다.

 

여주보인증센터

숙소까지 가려면 거리가 좀 남아서 야간 라이딩을 강행하였다.

 

강천보인증센터

사진도 안 찍은 것 봐서는 되게 힘들었나 보다. ㅋㅋㅋ

 

강천섬게스트하우스

여정의 마지막 숙소인 게스트 하우스다.

숙소 사진은 안 찍어서 인터넷에 있는 사진으로 대체한다. 국토종주길 바로 옆에 위치해서 좋았다.

또한 대표님이 굉장히 친절하셔서 좋았다. 다음에도 이용할 의향이 있다.

치킨, 피자 먹고 잤다.

- 조식제공

- 게스트하우스(깔끔, 11시 소등, 침대마다 콘센트 2개씩 있음)

- 세탁기 있음

- 숙소에서 키우는 강아지 있음

- 주변 배달음식 업체가 많이 없음

 

 

반응형
반응형

자전거 국토종주 게시물 시리즈

자전거 국토종주 0일차 - 준비

자전거 국토종주 1일차 - 인천~여주

자전거 국토종주 2일차 - 여주~충주

자전거 국토종주 3일차 - 충주~대구

 

 

 

1. 개요

2. 준비물

3. 수신호

4. 착각하기 쉬운 것

 

 

 

1. 개요

이번 추석 연휴 동안 자전거 국토종주를 갔다.

2021년 9월 18일 토요일 새벽부터 3박 4일을 목표로 인천부터 낙동강까지 완주를 목표로 하였다.

아는 잘타는 형들 포함해서 3명이서 갔는데 3일 차에 인천~부산까지 찍고 포기하고 돌아왔다.

결과는 실패했다. 본인은 완전히 자전거 초보라서 다른 쌉고수들은 놓칠만한 포인트를 적어가며 글을 써보도록 하겠다.

 

2. 준비물

꼭 아래 준비물을 세팅하고 한번 장거리 라이딩을 연습삼아 해보자

준비물의 링크는 거기서 사라는 게 아니라 이런 걸 사면된다는 예시니까 참고만 하자.

 

국토종주 자전거길 여행 수첩(인천 서해갑문쪽에서도 팜)

자전거 장갑

옷(9월 기준 상황별로 필요한 옷을 쓰겠다.)

일반적인 경우 : 평상시 자전거 옷

비오는 경우 : 비가 안스며드는 재질의 겉옷

숙소에서 입는 평상복 : 반팔 반바지 1쌍

두꺼운 양말 x4

좋은 운동화

썬크림

썬글라스(아랫 부분이 막혀서 바람이 안 들어오는 것으로 추천, 바람이 조금이라도 들어오면 장거리 누적 시 눈이 피로해짐)

얼굴가리개

물통x2(자전거에 가능하면 2개를 설치하자)

펑크수리킷

보조배터리

전조등(성능 좋은 걸로)

후미등

소독약, 데일밴드, 마데카솔

자전거 안장가방

안장가방 방수커버

헬맷

자전거이너튜브(본인 자전거 규격에 맞게, 샵가면 알려줌)

충전기

 

3. 수신호

자전거를 타고 가다 보면 모르는 사람과 같이 가게 될 경우가 많았다.

생각보다 수신호를 보고 쓰게 될 일이 많았다.

빨간색 친 수신호 정도는 자주 썼으니 숙지하자.

 

 

4. 착각하기 쉬운 것

국도로 다닐 일이 꽤 있다.

국도로 길을 다녀야 한다, 국도는 위험하니까 혼자가 아닌 여럿이서 다니는 것을 추천한다.

 

길이 복잡하다.

생각보다 헤매는 경우가 많으니 내비를 본다거나 좋은 가이드를 두거나 하자. 길을 몰라서 멈추고, 헤매는 것이 생각보다 체력 낭비가 심하다.

 

먹을 수 있을 때 먹어둔다.

초콜릿 바, 양갱, 이온음료를 안 먹어도 괜찮을 것 같을 때 먹어두도록 하자. 끊임없이 보충해야 한다. 진짜 살기 위해 먹어야 한다.

내가 진짜 큰 착각을 한 게 11시쯤 '점심밥 맛있게 먹어야지' 하면서 아무것도 안 먹은 것이다. 점심, 저녁밥은 생각하지 말고 그냥 계속 꾸준히 먹어야 한다.

 

자전거 종주 의지만으로는 부족하다.

의지만 있으면 하루 200km는 탈 수 있고 완주는 의지만으로 할 수 있는 것이라고 생각했는데 전혀 아니다.

하루에 얼마나 타야 할지 전략을 잘 짜야한다. 머리가 나쁘면 몸이 고생을 하듯이 의지만이 아닌 좋은 계획을 세우는 것은 필수다.

 

짐은 최소화.

짐 무게 1~2kg이 생각보다 엄청난 차이를 가져온다. 필요 없는 짐은 최대한 꾸리지 않도록 하자.

 

본인의 상태를 본인이 잘 알아야 한다.

하루만 타는 것이 아니라 오랫동안 타야 하기 때문에 본인의 몸 상태에 민감하게 대응하여 문제가 생길 것 같거나 사소한 문제가 생긴다면 빠르게 대응하여 장기전에도 괜찮도록 조치를 해줘야 한다.

예를 들어 본인은 사타구니 쪽 살이 벗겨져서 굉장히 고통스러웠는데 지속적으로 약을 발라줘서 그나마 버텼다.

 

야간 라이딩

야간 라이딩은 위험하니까 피하는 것이 좋지만 숙소에 도착하기 위해서, 정해진 일정을 준수하기 위해서 야간 라이딩을 해야 하는 경우가 있으니 꼭 준비를 하도록 하자.

 

반응형
반응형

1. 개요

2. 광고 수익

3. 블로그의 잠재적인 이점

4. 블로그 성장 방법

5. DIA 로직, C-Rank 이해하기

6. 마치며...

 

 

 

 

 

1. 개요

안녕하신가 IT 업계 종사자는 타 직군에 비해 블로그를 많이 하는 편이라고 생각한다.

내 블로그 정도면 투데이가 800~1000 정도 나오는데 엄청 큰 블로그는 아니지만 그래도 이제 막 IT 블로그를 시작하려는 사람, 열심히 블로깅을 하는 사람에게 충분히 방향성과 정보를 줄 수 있을 것 같아서 글을 써본다. 

 

나는 주변 IT 업계 지인에게는 무조건 블로그를 하라고 한다.

하지만 아쉽게도 열에 아홉은 어느 정도 트래픽이 쌓이기 전에 재미도 없고 감흥을 못 느껴서 포기한다.

어려운 것 안다. 블로깅에 대한 모티베이션이 부족하다면 3번을 유의 깊게 보도록 하자

 

2. 광고 수익

티스토리 블로그 지표는 위와 같다. 업무일에는 보통 800~1000을 왔다 갔다 한다. 주말에는 확실히 반토막 난다.

일별로 벌어들이는 수익이다.

2018년부터 본격적으로 시작했는데 광고를 단것은 2019년 중반부터였다.

 

 

작년 기준 한 달 평균 10$, 지금은 평균 15$정도 수익이 생기고 있다.

실망했는가? 확실히 내가 생각하기에도 나는 IT 블로그 중에서도 개발자를 겨냥한 블로그라서 그런지 광고에 반응을 하지 않는 사람들이 적어서 수익이 생각보다 낮다고 생각한다.

나와 지인들만 해도 애드블록 설치자도 엄청 많고 광고를 죽어도 안 누르려고 한다. ㅋㅋ

내 블로그만 유독 수익이 낮은 것인지 궁금하지만 다른 IT 블로그의 수익 자료를 찾아보기는 쉽지 않아서 모르겠다.

 

 

3. 블로그의 잠재적인 이점

2번의 그래프를 보고 실망했을 수도 있지만 이번에는 수치적으로 드러나지 않는 블로그의 이점에 대해서 말하고자 한다.

 

좋은 습관

나는 블로깅을 본격적으로 하기 위해서 자연스럽게 메모하는 습관을 갖게 되었다. 많은 베테랑 블로거들도 메모하는 습관이 있을 것이라고 믿어 의심치 않는다.

나는 기록에 대해서 강박증을 갖고 있을 정도였는데 이처럼 메모하는 습관이 회사 생활을 할 때 많은 도움이 됐다.

돌이켜보면 본인은 회사생활을 하면서 과하게 메모하는 편이었는데 본인이 엄청난 천재가 아닌 이상 메모를 습관화해야 한다고 생각한다. 메모는 과해도 모자람이 없다.(과한 메모는 정리하는데 조금 시간이 걸리겠지만)

 

사업적 능력 향상

게임을 만들고 출시하는 것, 건물을 짓는 것, TV 프로그램을 기획하고 송출하는 것, 블로깅 하는 것 전부 동일선상에 있다고 생각한다.

소비자가 원하는 것을 파악하여 가려운 부분을 긁어주고 그 대가로 돈, 트래픽을 챙기는 것이다.

이것은 사업의 본질과 비슷하다. "문제를 찾아내고 해결하는 것"

"에이 블로깅이 무슨 사업이냐 오바떠네 ㅉㅉ" 라고 생각할 수 있지만 나는 모두 비슷하다는 것을 체감할 때가 많다.

물론 당신이 아무도 안 읽어줄 나만 읽을 글을 쓴다면 조금 다른 얘기지만 우리 블로거는 많은 사람이 내 글을 읽고 공감을 해주고 기왕이면 광고도 눌러줄 때 행복감을 느낀다.

이는 블로깅은 필연적으로 어떤 글을 사람들이 원하는지 캐치하고 이를 해결하는 사업적 능력을 필요로 한다는 것이다.

내가 장담하는데 정말 천상계 블로거는 사업을 해도 잘할 사람들이다. 아니? 사실 그 사람들은 사업을 하고 있다고 봐도 무방하다

 

마케팅 수단 활용 가능

본인의 블로그는 IT 분야 한정 글을 작성하면 네이버, 구글, 다음 3개 엔진에서 어지간하면 1페이지에 노출되는 영향력을 갖고 있다.

이는 단순 개발자을 하는 사람에게는 큰 의미가 없을지 모르지만 살다 보면 분명히 마케팅의 힘이 필요한 순간이 올 것이다.

요즘은 이미 알겠지만 어느 분야건 SNS, 블로그 마케팅이 거의 필수라서 미래에 대한 준비라고 봐도 좋다.

 

4. 블로그 성장 방법

좋은 블로그가 되는 방법은 인터넷에 찾아보면 굉장히 많이 나온다.

나는 간략하게 핵심만 말하도록 하고 넘어가도록 하겠다.

 

양 vs 질?

명확한 자료는 없지만 감으로 알고 있는 부분이다.

검색 엔진은 게시물에 대하여 기대하는 최소한 퀄리티가 있는데 해당 퀄리티는 항상 만족해야 하는 것 같다.

무조건 글을 길게 쓰는 것도 좋은 글은 아니다. 게시물에 대한 적당선의 퀄리티의 기준을 마련하고 지키면서 글을 쓰도록 하자.

 

내가 원하는 것이 아닌 대중이 원하는 것을 블로깅 하자

내 블로그의 월별 조회수다.

평소에 내가 알고 싶은, 내가 좋은 정보라고 생각해서 올리는 게시물 위주로 올렸다가 어느 날 아무 생각 없이 게임 가디언에 대한 게시물을 올렸는데 아무 기대 안 하고 올렸는데 블로그를 먹여 살리는 메인 게시물이 돼버렸다.

확실히 내가 쓰고 싶은 글과 대중에게 인기가 있을 글은 굉장한 차이가 있음을 인지하고 게시물 주제 선정을 효과적으로 하도록 하자.

 

5. DIA 로직, C-Rank 이해하기

이것도 마찬가지로 검색해보면 굉장히 많은 정보가 있으니 해당 부분은 직접 검색해서 찾아보기를 바란다.

확실히 이 로직은 나도 체감이 된다.

따라서 꾸준히 본인의 분야에 맞춰서 글을 작성하도록 하자.

 

6. 마치며...

어떤 유투버가 그랬다. 유튜브는 취미로 시작하는 것이 좋고 돈 벌려고 시작하면 굉장히 힘들다고

블로그도 비슷하다고 생각한다. 한순간에 돈 벌기 위한 블로그 전략도 분명 있으나 그것은 이슈, 트렌드의 흐름에 편승해서 블로그의 순위를 빠르게 올리고 정말 숙련된 스킬을 요한다.

근데 그런 블로그는 보통 우리가 원하는 블로그가 아닌 우리가 싫어하는 이모티콘 듬뿍 들어고 어그로를 끌기 위한 사건사고 이슈가 가득한 내가 싫어하는 블로그의 형태다.

나 역시 취미로 시작하는 것을 추천하며 꾸준히 하다보면 무조건 성장할 수 있는 플랫폼이다.

나역시 처음에는 투데이 10 찍는 것을 목표로 할 때가 있었다. 내 블로그에 다른 사람보다 내가 더 많이 들어오던 때가 있었다.

투데이 100 정도만 찍어보면 충분히 감이 잡힐 것이다.

 

참고하면 좋은 블로그 -> 나중에 나도 따라해야겠다.

https://kibua20.tistory.com/90

 

Adsense 승인 후 블로그 유입량 및 수익 분석 - 한달 140$ 수입 인증

블로그를 시작한 지 4개월 정도 지났고, 7월부터 애드센스 광고를 게재를 하기 시작했습니다. 블로그 광고 수익으로 100$/월 인증하시는 분들을 종종 있지만, 제 블로그의 경우에는 초반에는 대략

kibua20.tistory.com

 

반응형
반응형

1. 개요
2. Youtube Vanced 설치 방법
3. 계정 추가
4. 사용방법 및 팁

 

 

 

1. 개요

안드로이드 모바일 OS 한정 유튜브 프리미엄을 무료로 사용하는 방법이 있다.

- 백그라운드 재생 지원

- 유튜브 광고 없이 재생 가능

나는 주로 국내 음악 앱에 안 나오는 일본 노래를 듣는 데 사용한다.

나의 자세한 사용 방법은 4번에 기재해놓겠다.

 

2. Youtube Vanced 설치 방법

플레이스토어에 등록이 안되어 있어서 직접 아래 링크로 들어가서 Youtbue Vanced APK를 다운받는다.

https://vancedapp.com/

 

YouTube™ Vanced

The official website of YouTube™ Vanced - a modded YouTube™ client for Android.

vancedapp.com

 

 

 

설치하고 나서 Vanced Manager라는 앱을 실행하자

 

나는 Youbue Music Vanced는 사용하지 않았다. 아무래도 유튜브 뮤직까지 구현해놓은 것 같다. 유튜브 뮤직을 사용하고 싶으면 아랫부분까지 체크해서 설치하도록 하자

 

보통은 루팅이 안되어있으니 저 번튼을 눌러서 진행하자

 

그러면 이제 3개의 앱 중 Vanced microG는 필수로 설치해야 한다.

만약에 Youtube Vanced를 설치하고 싶으면

Vanced microG -> Youtube Vanced 순서로 설치하면 된다.

 

microG의 다운로드 버튼을 눌러서 설치한다.

 

다음은 Youtube Vanced를 설치한다. 이건 유독 오래 걸린다. 한 2분 정도?

 

설치가 끝나면 Youtube Vanced라는 앱이 설치됐을 것이다. 실행시켜보면 그냥 유튜브 같다.

 

기본적인 설명은 끝났다.

이제부터는 원하는 대로 사용하면 된다.

아래에는 Youtube Vanced를 사용할 때 알면 좋은 추가 정보를 기재해놨다.

 


3. 계정 추가

구독, 좋아요, 재생목록 담기를 하기 위해서는 로그인을 해야 한다.

 

우측 위의 계정 아이콘을 눌러서 로그인을 하자.

 

계정 추가 > HUAWEI SIGN IN을 누른다.

 

 

그러면 구글 로그인 창이 나오는데 본인 계정을 로그인해도 되지만 보안상 좋지 않을 것 같기도 하고 본계정과 분리하고 싶어서 나는 여기서 Youtube Vanced를 위한 계정을 따로 하나 만들었다.

본계정은 정말 평소에 보는 영상, Youtube Vaned는 일본 음악 위주로 시청하는 편이다.

 

 

4. 사용방법 및 팁

- 영상 PIP모드 끄기

기본적으로 영상을 시청하다 홈 화면을 누르면 위와 같이 화면이 작아지면서 안 없어진다. 완전 창이 사라지도록 백그라운드 재생을 원하면 다음 설정을 해주면 된다.

 

설정 > 일반 > PIP 모드를 꺼주면 된다.

 

- 다크 모드 설정 방법

설정 > 일반 > 어두운 테마를 활성화하면 된다.

 

그러면 위와 같이 어두운 다크 모드가 활성화된다.

반응형
반응형

1. 개요

비즈엠의 카카오톡 알림톡 확실히 엄청 좋은 기능이다. 별 다른 약관 동의 없이도 목적이 인정되면 카카오톡으로 보낼 수 있다는 것이 얼마나 좋은가?
근데 그건 알바아니고 개발자인 우리는 귀찮을 뿐
비즈엠 카카오톡 알림톡 전송 API를 개발하면서 정리할만한 부분을 정리해봤다.
다른 개발자들은 나보다는 빨리 원하는 결과에 도달하기를 바라며 오늘도 글을 싸 본다. 뿌직뿌직

특이사항이라면 보통 템플릿을 지원하면 request에 템플릿 id와 교체해줄 문구만 보내면 알아서 발송해주는 개념으로 생각했는데 그게 아니라 템플릿의 모든 정보(모든 문자, 기타 설정값)를 다 보내줘야 한다.
이 부분은 이해가 안 된다. 굳이...?
글고 뭔가 내가 특정 유저라는 것을 증명하는 API 키 같은 것도 없긴 하다. 근데 Send API 호출 난이도가 좀 높은 편이라서 필요 없는 것도 이해는 간다.

 

2. 필요한 정보

알림톡 전송 API를 호출하기 위해 필요한 최소한의 정보다.
전부 찾아오세요

 

비즈엠 로그인 ID

비즈엠 로그인할때 쓰는 로그인 ID

 

비즈엠 발신프로필키

발신 프로필 > 발신 프로필 목록 > 발신프로필키
전송하고자 하는 메시지의 발신프로필키 값과 메시지의 생성한 계정이 발신프로필이 동일해야 한다.

 

템플릿 ID

템플릿 > 템플릿 목록 > 보내고자 하는 메시지의 템플릿코드

 

메시지

저 메시지 내용을 1byte도 안 틀리고 똑같이 갖고 있어야 한다.

 

실제 받는 사람 전화번호

이건 그냥 본인 테스트용 전화번호로 해보자

 

버튼 정보

템플릿에 등록한 버튼 정보 전부 다 갖고 있어야 한다.

 

뭔 발송하는데 벌써부터 이렇게 복잡하냐...
일단 전부다 모아 왔으면 코드로 설명하기 전에 간단히 개념적으로 설명 들어가겠다.

 

비즈 엠 카카오톡 알림 톡 Send API의 호출하기 위한 정보는 아래와 같다.

let options = {
method:"POST",
"url":`https://alimtalk-api.bizmsg.kr/v2/sender/send`,
headers: {
"userid": "loginid",
"Content-Type": "application/json",
},
data: [{
        "message_type":"at","profile":"23456422626","phn":phone,
        "msg":tempMsg,
        "tmplId":join,
        "button1":

{
            "name": "마켓쿵 바로가기",
            "type": "WL",
            "url_mobile": "https://naver.com",
            "url_pc": "https://naver.com"
        }


    }]
}

비즈엠 로그인 ID는 헤더의 userid
이후 발송 요청에 대한 내용은 request body로 들어간다.(기본적으로 배열)

 

3. 코드

const templateInfo = {
    "join": {
        msgParamCount: 3,
        msgBody: "내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라",
        buttonInfo: {
            "name": "마켓쿵 바로가기",
            "type": "WL",
            "url_mobile": "https://naver.com",
            "url_pc": "https://naver.com"
        }
    },
    "payment":{msgParamCount:2, msgBody:"내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라",
        buttonInfo:{}
    },
    "login": {
        msgParamCount: 6,
        msgBody: "내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라",
        buttonInfo: {
            "name": "주문 내역 조회하기",
            "type": "WL",
            "url_mobile": "https://naver.com",
            "url_pc": "https://naver.com"
        }
    },
    "test": {
        msgParamCount: 5,
        msgBody: "내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라내용솰ㄹ라솰라",
        buttonInfo: {
            "name": "배송 조회하기",
            "type": "WL",
            "url_mobile": "https://naver.com",
            "url_pc": "https://naver.com"
        }
    }
}

exports.alrimtalkService = {
    sendAlrimtalkMessage(templateId, messageParams, phone) {
        return new Promise(async (resolve, reject) => {
            //1. 정보 전부 제대로 들어왔는지 확인
            if(!templateId || !messageParams || !phone)
            {
                console.log("[alimtalk] : sendKakaoTalkMessage 함수 호출시 인자 설정이 제대로 되지 않았습니다.")
                return resolve("[alimtalk] : sendKakaoTalkMessage 함수 호출시 인자 설정이 제대로 되지 않았습니다.")
            }

            //2. 템플릿 정보 있는지 확인
            if(!(templateId in templateInfo))
            {
                console.log(`[alimtalk] : 존재하지 않는 템플릿 정보 ${templateId}`)
                return resolve(`[alimtalk] : 존재하지 않는 템플릿 정보 ${templateId}`)
            }

            //3. 템플릿 정보의 메시지 인자 수와 함수 호출된 메시지 인자 개수가 같은지 확인
            if(templateInfo[templateId].msgParamCount !== messageParams.length)
            {
                console.log(`[alimtalk] : 메시지 인자 개수가 일치하지 않습니다. ${templateInfo[templateId].msgParamCount} : ${messageParams.length}`)
                return resolve(`[alimtalk] : 메시지 인자 개수가 일치하지 않습니다. ${templateInfo[templateId].msgParamCount} : ${messageParams.length}`)
            }

            //전송 바디 생성
            let body = buildRequestBody(templateId, messageParams, phone)

            let options = {
                method:"POST",
                "url":`https://alimtalk-api.bizmsg.kr/v2/sender/send`,
                headers: {
                    "userid": "633463466",
                    "Content-Type": "application/json",
                },
                data: body
            }

            //4. 전송 제대로 됐는지 확인
            return await axios(options).then(result =>{
                if(result.data[0].code !== "fail") resolve(result)
                else
                {
                    console.log(`[alimtalk] : ${result.data[0].message}`)
                    resolve(result.data[0].message)
                }
            }).catch(error => {
                console.log(`[alimtalk] : ${result.data[0].message}`)
                resolve(`[alimtalk] : 비즈엠 전송 실패 ${error}`)
            })
        });
    }
}


function buildRequestBody(templateId, messageParams, phone)
{
    let tempMsg = templateInfo[templateId].msgBody
    for(let i = 0;i < templateInfo[templateId].msgParamCount;i++)
        tempMsg = tempMsg.replace(/#{.+}/,`${messageParams[i]}`)

    return [{
        "message_type":"at","profile":"757545775753","phn":phone,
        "msg":tempMsg,
        "tmplId":templateId,
        "button1":templateInfo[templateId].buttonInfo
    }]
}

//실제 사용 코드
await alrimtalk.alrimtalkService.sendAlrimtalkMessage("test", [purchase.order.sender.username, purchase.productName, purchase.order.orderNo, purchase.order.receiver.address1, purchase.delivery.number], purchase.order.sender.phone)

코드의 buildRequestBody와 templateInfo에 대한 부분은 꼭 필요한 건 아니지만 최소한 이 정도 설계 없이는 개판일 것 같아서 설계한 거니까 적당히 이해해주세여

반응형
반응형

1. 개요

2. 필요한 정보

3. 코드

4. 기타

 

 

 

 

1. 개요

대량의 유저 정보를 채널톡 Upsert API를 사용하여 Upsert 해야 하는 상황이다.

근데 설명서가 조온나 불친절하다. 에러코드도 제대로 정의 안되어있다.

그래서 채널톡 개발자랑 문의하면서 정리해놓은 Upsert API 활용 방법을 적도록 하겠다.

이미 개발자가 이런 게시물을 정리해서 작성해야 할 정라고 생각이 들 정도면 API Docs를 똑바로 못 만든 거다.

반성해라 채널톡

 

2. 필요한 정보

API를 사용하기 위한 최소한의 필요정보는 아래 3개다.

API 키 값 x-access-key, x-access-secret

유저 ID 정보

유저정보(profile 값)

 

 

API 키 값 x-access-key, x-access-secret 조회하는 방법

 

설정 > API 인증 및 관리
없으면 새로 만들어주자

 

유저 ID 정보

정말로 유저의 고유 ID 값이다. Upsert API니까 이미 채널톡에 등록되어 있는 ID를 사용하면 Update고 없는 ID면 Insert를 하게 된다.

 

유저정보(profile 값)

기입하고 싶은 유저 정보다. 이 부분은 본인 코드로 알아서 가져오도록 하자.

 

 

그러면 아래 3개의 데이터가 모였다. 이 데이터를 조합해서 채널톡의 API를 호출해야 한다.

API 키 값 x-access-key, x-access-secret

유저 ID 정보

유저정보(profile 값)

 

https://api.channel.io/open/v4/users/@유저ID정보

method: 'put',
            headers: {
                'Content-Type': 'application/json',
                'x-access-key': '----',
                'x-access-secret': '----'
            },
            data:유저정보

 

요런 식으로 쏴주면 되겠다. node의 axios 형식인데 알잘딱 이해하도록 하자!

 

3. 코드

나는 또 친절하기 때문에 node로 어떤 코드를 짜야하는지 내가 사용한 코드까지 올려두도록 하겠다.

let body = { "profile": {
	"name": data.name ? data.name : "미정",
	"mobileNumber": data.phone && data.phone.split('-').length === 3 ? `+8210${data.phone.split('-')[1]}${data.phone.split('-')[2]}` : "",
	"phoneVerified":data.phoneVerified
    }, 
"unsubscribed": data._doc._terms?.length >= 3 ? false : true }

let url = `https://api.channel.io/open/v4/users/@${data.id}`

let options = {
method: 'put',
  headers: {
    'Content-Type': 'application/json',
    'x-access-key': '----',
    'x-access-secret': '----'
  },
    data:body
}


await axios(url, options).then(result =>{
	console.log(result)
}).catch(error => {
	console.log(error)
})

 

 

4. 기타

- 전화번호는 +81 국제전화 양식으로 해야 한다.

- API docs의 example에 보면 "vanlia" : { profile: { ... } } 이런식으로 예제를 짜놨는데 개소리고 그냥 { profile : { ... } }만 넣어주면 된다.(여기서 빡침 ㅋㅋ 그러면 공식 문서에 왜 이따구로 써놨냐고)

- 추가한 필드가 유저 정보 리스트 조회 페이지에서 나오도록 하려면 "채널 설정 → 고객 프로필 정보"에서 설정 가능하다.

- 에러 문구가 불친절하니 님이 해석해서 해결하려는 에너지 낭비하지 말고 그냥 채널톡 왼쪽 하단의 "채널팀에 문의하기" 를 통하여 개발 문의를 하자(답변 빨리 옴, 근데 밤에 문의해놓으면 확인을 못하는지 아예 답장이 안 오니까 영업시간에 물어보도록 하자)

반응형
반응형

상황

너무 친절한 우리의 서브라임텍스트는 업데이트 팝업을 실행할때마다 띄워준다 개같네 진짜

유저 세팅에서 설정하는 방법은 3버전부터 작동안한다는 말이 있어서 host를 변조해주는 방식으로 이 개자슥이 나대지 못하도록 하자.

 

 

해결방법

C:\Windows\System32\drivers\etc\hosts 파일을 수정하자

관리자 권한으로 실행하거나 바탕화면에 복사해서 다시 etc 폴더에 붙여넣거나 자세한 부분은 우린 컴맹이 아니니까 생략한다.

127.0.0.1       www.sublimetext.com

 

 

그 다음 ipconfig /flushdns 명령어로 새로고침 하고 ping www.sublimetext.com을 했을때 127.0.0.1을 가리키면 끝이다.

재시작 해보면 아무것도 안뜬다.

 

반응형