리디셀렉트

 

엄마는 유튜브로 연봉 번다 - 리디셀렉트

자존감도 높이고, 돈도 벌고 싶다! 하루 4시간 일하고 아이 키우며 유튜브하는 법 아이 하나를 온종일 보살피는 것도 보통 힘든 일이 아니다. 하물며 워킹맘은 늘 어느 하나 제대로 하지 못하는

select.ridibooks.com

아이들이 유튜버를 하고 싶다고 해서 취미삼아 하라고 하다보니 본의아니게 편집 등 얽혀들어가고 있다.

수익이 생길거라고 생각은 안하고 있고 몇 년이 지나도 조회수 100 도 안될테지만 일단 현실적인 벽을 봐야 자신들이 쉽게 생각하는 일이 어떤 어려움이 있는지 알 수 있겠다 싶어 이것 저것 편집해보고 있다.

그러던 중에 이런 챡 제목을 보니 관심이 갈 수 밖에 없었다.

유튜브 영상에서 필요한 요소가 무엇인지 그리고 기본적으로 손쉽게 만들 수 있는 기법이나 방법에 대해 볼 수 있으면 더 좋겠다 싶어서 골랐는데 그런 목적에서는 실패했다.

이 책은 본격적으로 엄마가 창업을 한 사람이 쓴 글이었다. 엄마를 주제로 창업을 하는 이야기가 80-90이고 유튜브 이야기는 10 정도?

원래 방송 일을 하셨던 분이라 아마츄어가 유튜브를 하면서 하나씩 익혀나가는 이야기와는 아주거리가 있었고 오히려 기존의 라디오 방송에서 접근하듯이 제대로 기획하고 갖추어서 방송을 만들어가는 느낌이 들었다.

애초에 골랐던 의도와는 다른 내용이었다. 그렇지만 시간을 나눠쓰고 콘텐츠를 고민하며 수익과 같이 민감한 문제에 대해 모두 챙겨야 하는 1인 기업으로써의 크리에이터의 고단함과 역동성이 느껴지는 책이었다.

애들이 하고 싶어하는 직업이 쉽지 않겠다 싶다. 그렇다고 꼭 그것을 직업으로 하지 않더라도 자기를 표현하는 시대에 살면서 자기가 자신을 표현하는 방법이라도 익히면 그걸로 되는게 아닌가 싶다.

'유튜브' 카테고리의 다른 글

유튜브 로고 및 인트로  (0) 2021.05.09

[Python] 내장함수 getattr()를 활용해 코드 간소화 시키기

 

[Python] 내장함수 getattr()를 활용해 코드 간소화 시키기

getattr()의 기능 getattr(object, 'name') 이라는 함수는 object라는 오브젝트 내부의 name이라...

blog.naver.com

python에서 getattr함수를 이용하면 위의 링크에서 설명해주고 있는 것처럼 method의 이름을 string으로 호출할 수 있게 된다.

이런 기능은 함수 포인트를 사용하는 것처럼 코드를 깔끔하게 만들 수 있는데 사용될 수 있다고 생각되어 유용하게 활용될 수 있겠다.

그런데 정작 getattr 함수를 찾았던 내용과는 또 달라서 더 찾아봐야했다.

  label_type = getattr(processor, "label_type", None)
  is_regression = getattr(processor, "is_regression", False)
  has_sample_weights = getattr(processor, "weight_key", False)

위와 같은 코드였는데 세 항목은 모두 함수가 아니었다. 위의 두 개는 class에 정의된 변수였고, 마지막 string은 선언한 class에서 정의되지 않은 문자열이었다.

추측하기로는 class의 내부 변수로 세 번째 값을 설정하고 그 값을 다시 반환하는게 아닐까? 하고 추측을 했지만 자신할 수가 없어서 더 찾아 보았다.

Python getattr()

 

Python getattr()

Python getattr() The getattr() method returns the value of the named attribute of an object. If not found, it returns the default value provided to the function. The syntax of getattr() method is: getattr(object, name[, default]) The above syntax is equiva

www.programiz.com

이 사이트에서 찾을 수 있었는데 class에서 정의되지 않은 변수의 경우 오류 메시지가 반환되는데 이때 오류를 발생하지 않고 반환값의 default 값을 지정해주는데 사용된다고 한다.

default (Optional) - value that is returned when the named attribute is not found

찾고 보니 아 이게 있으면 코드가 더 깔끔하곘다 싶다.

강제로 값을 할당하는 것보다 기존의 인스턴스의 값도 바꾸지 않으니 더 유용할 것 같고..

reference를 찾아보는게 더 필요하구나 싶다.

'개발' 카테고리의 다른 글

Abseil Python Common Libraries  (0) 2021.05.07
docker를 이용한 tensorflow 2.x 개발환경 설정  (0) 2021.05.04
pdf2docx를 이용한 pdf 변환 코드  (0) 2021.04.30
eclipse encoding 변경  (0) 2014.08.20
[펌] 언어학 관련 원어 해석  (0) 2011.05.17

아이들이 장래에 어떤 일을 하고 싶냐고 물으면 빠지지 않고 들어가는게 유튜버다.

인기가 있긴 있나보다. 재미있는 것도 하면서 돈도 벌 수 있다는 유혹처럼 매력적으로 들리는 말이 있을까?

아이들에게도 마찬가지인듯 하다.

그동안에는 글쓰기를 해보고 글 쓴 내용을 가지고 블로그를 만들어주고, 그걸 꾸준히 하면 유튜버를 시켜주겠다고 했다.

근데 책을 몇 권 읽다보니 생각이 바뀌었다.

아이들이 하고 싶어 하는 일에 그런 장벽을 쌓아서 거리감을 두게 하는게 옳은가 하는 생각이 들었다.

이야기를 하다보니 오프닝 발화라든지 여러가지를 고민하고 있었나보다.

그 말 중에서 인사하고 소개하는 영상이 쫙 올라가고 이런 이야기를 했다.

아 그러고보니 유명한 유튜버들은 그런게 있었지 그걸 어떻게 만들지? 하는 생각이 들었다.

동영상 편집이나 디자인은 1도 관련이 없는뎨? 어쩌지? 싶었다.

역시 답답할 때는 검색이지 근데 그런 영상을 뭐라고 하지? 하고 고민하다보니 '로고'라는 단어가 떠올랐다.

찾아보니 로고는 역시 아니었다. 다만 로고도 필요하다는 이야기가 있었는데 투명이미지로 우상단에 띄워둔다던지 그런 용도다.

역시 애들이니 간단하게 노력없이 하는 방법을 찾아보았다.

고민안하고 찾아본 게 Logo Maker 제대로된 이미지를 다운받으려면 당연히 유료가입을 해야하지만 png 파일을 다운 받기까지는 무료였다.

Free Logo Maker - Create your own logo in minutes! (logomakr.com)

 

Free Logo Maker - Create your own logo in minutes!

Create & design your logo for free using an easy logo maker tool. Choose from hundreds of fonts and icons. Then just save your new logo on to your computer! Watch our video tutorial on how to create your logo.

logomakr.com

아쉬운 점은 한글은 입력이 안된다는 한계는 있었다.

다음은 이래저래 찾다보니 인트로 영상이라는 용어가 채널을 소개하는 영상으로 많이 사용되는 듯했다.

물론 5분도 안되는 내용에 10초씩 영상을 보여주는데 대한 비판적인 글도 없는 것은 아니지만.. .일단 폼은 중요하니 찾아보자 싶어서 그것도 검색했다.

유튜브에서 간단히 인트로를 위한 No Text 템플릿을 제공해주는 곳들도 있었다.

유튜브에서 검색해보니 간단히 만들 수 있는 방법을 소개해주는 영상이 있었고 그 영상에서 알려준 방법을 기초로 해서 진행했다.

유튜브에서 "Intro Templates no text"로 검색해서 찾았더니 다운 받을 수 있도록 링크가 있었다.

https://www.youtube.com/watch?v=oQX39Q3Lazs&ab_channel=RKMFX

거기서 마음에 드는 걸 받아두고 앞에서 만든 로고와 한글이름으로 간단한 인트로를 만들어 봤다.

후보 이름 중 하나가 팥빙수 티비란다.

애들 노는 정도라면 이정도도 괜찮지 않을까?

 

그 결과물이 상단의 첨부된 인트로다.

 

제대로 하려면 어렵겠지만 부담가지지 않고 간단하게 하니 재미있기도 했다.

'유튜브' 카테고리의 다른 글

[책] 엄마는 유튜브로 연봉 번다  (1) 2021.05.16

https://select.ridibooks.com/book/734001923?utm_source=etc&utm_medium=etc&utm_campaign=inhouse&utm_term=unknown&utm_content=P001

나는 말하듯이 쓴다 - 리디셀렉트

회장님도 대통령도 아닌 우리 “그래서 어떻게 합니까” 가정, 학교, 회사에서 말하고 써야 하는 바로 당신을 위해! 강원국이 집대성한 좋은 말과 글의 조건 김우중 회장, 김대중 대통령, 노무현

select.ridibooks.com


대통령의 글쓰기를 쓴 강원국 저자의 책이다.

학술 저작 활동을 하는 것도 일종의 글쓰기니 논문을 쓰는데 도움이 될까 하는 생각에 글쓰기 책을 봤다.

보면서 많이 느끼고 내용도 다양하게 포함되어 얻을 수 있는 부분이 많았다.

생각을 몇 가지로 열거형으로 정리하는 것이나 글쓰기에 대한 노하우, 다양한 주제에 대한 글 쓰기 등 도움을 받을 수 있는 내용이 많았다.

하나의 생각을 일관성있게 쓰여진 글은 아니고 다양한 글이 엮여진 글이니 만큼 하나의 주제를 관통하는 일관성있는 책이라기보다는 참고서나 백과사전과 같이 다양한 관점들을 참고하여 다양한 관점들을 그때 그때 찾아보는 용도로 활용할 수 있는 책으로 보인다.

글쓰기의 테크닉을 익히려는 생각으로 접근했더니 하나하나의 글마다 참고할 내용들이 나오고, 각각이 서로 상황과 느낌이 달라서 한권을 읽고 나니 왠지 '자 그래서 어떻게 글을 쓰지?' 하는 느낌이 든다.

정보가 없어서가 아니라 너무 많아서 어떻게 시작할지를 모르겠다는 느낌이라고 할까...

다만 자기계발서들이 한두가지 생각으로 책한권을 우려먹고 우려먹고 하는데 그보다 아주 도움이 된 책이다.

짧고 서툴더라도 꾸준하게 글을 쓰면서 생각을 정리해봐야 겠다는 동기가 되기에는 충분한 책이었다.


'일상' 카테고리의 다른 글

MZ 세대  (0) 2021.05.06

abseil/abseil-py

 

abseil/abseil-py

Abseil Common Libraries (Python). Contribute to abseil/abseil-py development by creating an account on GitHub.

github.com

absl-py

 

absl-py

Abseil Python Common Libraries, see https://github.com/abseil/abseil-py.

pypi.org

 

기본 사용 방법

from absl import app
from absl import flags

FLAGS = flags.FLAGS
flags.DEFINE_string("name", None, "Your name.")
flags.DEFINE_integer("num_times", 1,
                     "Number of times to print greeting.")

# Required flag.
flags.mark_flag_as_required("name")

def main(argv):
  del argv  # Unused.
  for i in range(0, FLAGS.num_times):
    print('Hello, %s!' % FLAGS.name)


if __name__ == '__main__':
  app.run(main)

django 등에서 봤던 프로그래밍 방식을 지원하는 라이브러리로 보인다.

매개변수나 필수 항목, 기본 값, USAGE 출력 등을 미리 처리해주기 때문에 기본적인 스크립트를 작성할 때 간단한 코드로 귀찮은 작업들을 대신해준다.

위와 같은 간단한 코드로 아래와 같은 결과를 얻을 수 있다.

  • python adsl_test.py

  • python adsl_test.py
  • python adsl_test.py --name=TEST
  • python adsl\_test.py --help

Logging

  • 로그를 남기는데 사용되는 함수 형태

abseil / Logging

 

abseil / Logging

An open-source collection of core C++ library code

abseil.io

from absl import app
from absl import flags
from absl import logging

FLAGS = flags.FLAGS
flags.DEFINE_string("name", None, "Your name.")
flags.DEFINE_integer("num_times", 1,
                     "Number of times to print greeting.")

# Required flag.
flags.mark_flag_as_required("name")

def main(argv):
    del argv  # Unused.
    for i in range(0, FLAGS.num_times):
        print('Hello, %s!' % FLAGS.name)
    logging.info("test %s" % FLAGS.name)
    logging.info('Interesting Stuff')
    logging.info('Interesting Stuff with Arguments: %d', 42)

    logging.set_verbosity(logging.INFO)
    logging.log(logging.DEBUG, 'This will *not* be printed')
    logging.set_verbosity(logging.DEBUG)
    logging.log(logging.DEBUG, 'This will be printed')

    logging.warning('Worrying Stuff')
    logging.error('Alarming Stuff')
    logging.fatal('AAAAHHHHH!!!!')  # Process exits

if __name__ == '__main__':
  app.run(main)
  • 위의 코드에 대한 출력 결과

'개발' 카테고리의 다른 글

[python] getattr 함수  (0) 2021.05.10
docker를 이용한 tensorflow 2.x 개발환경 설정  (0) 2021.05.04
pdf2docx를 이용한 pdf 변환 코드  (0) 2021.04.30
eclipse encoding 변경  (0) 2014.08.20
[펌] 언어학 관련 원어 해석  (0) 2011.05.17

팟케스트를 듣다보니 MZ 세대라는 용어가 들렸다.

Z세대나 밀레니엄세대라는 건 익숙한데 MZ는 또 머냐 하는 생각에 찾아보았더니 단순하게 밀레니엄 세대와 제너레이션(Z)가 합쳐진 용어라고 한다.

MZ세대란 무엇인지 알아보기 | 생각의힘

 

 

알던 세대 용어 두개가 합쳐진 개념이긴 한데 15-39세를 대상으로 한다니 재미있는건 인구의 1/3을 지칭하는 용어인데도 가까운 사람들이 없어서 특성을 알기 어렵겠다 싶다.

5개의 키워드로 제시된 건 하나도 알고 있던 용어가 없다.

  • 다양한 만남을 추구한다는 '다만추'는 나이가 들수록 사람을 만나고 싶지 않아지는 성향과 거리가 있고
  • 온라인에서는 누구라도 친구가 될 수 있다는 '후렌드'는 위와 같은 이유로 웹에서 상호작용을 하거나 답글 등을 달지 않으니 해당 사항이 없었다.
  • '선취력'이라고 능동적으로 행동한다는 성향은 주도성과 관계가 없고
  • '판플레이'는 콘텐츠에 대해 하나의 놀이판과 같은 개념으로 접근한다고 한다.
  • '클라우드 소비'는 구독 중심의 소비로 공유 개념을 뜻한다고 한다.

뭐랄까 하나도 해당사항이 없다는게 신기한 느낌이 든다.

주로 컴퓨터 관련된 일을 하고 늘 온라인에 노출되어 있어서 나이가 들더라도 세대 차이가 적지 않을까 하는 막연한 기대를 하고 있었는데 이런 글을 읽다보면 과연 나도 차이를 분명하게 느끼게 된다.

단순히 최신 트렌드의 물건이나 서비스를 이용할 줄 모른다는 측면이 아니라 어떤 상황을 대하는 태도가 다르다는 측면이 되니 어쩔 수 없이 인정하게 된다.

이러다보면 새로운 기기나 활용도 익숙치 않아 거리를 두면 결국은 예전 어른들의 기분을 느끼게 되지 않을까 싶다.

'일상' 카테고리의 다른 글

[책] 나는 말하듯이 쓴다  (0) 2021.05.08

개발 환경을 docker에서 설정하는게 맞는지는 모르겠다. 그래도 자꾸만 환경이 바뀌어서 예전 코드가 동작하지 않는 등의 문제에 대응하기 위해서  개발용 이미지, 수행용 이미지를 만들어 보관하는 것이 하나의 대안이 될 수도 있을 듯 하다. 

다만 project하나마다 수십기가의 백업이 있어야 하는지는 좀 고민스럽긴 하다. 

image download

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash

  • 이 명령을 통해서 tensorflow-gpu가 인식되는 버전을 다운로드 받고 실행을 확인함
  • bash 안에서 nvidia-smi를 실행하면 docker의 host에서 설정한 nvidia driver가 잡혀있는 것을 확인할 수 있고, nvidia-smi를 통해 GPU도 동작하는 것을 확인함.

개발 환경 설정

  • 받아진 이미지는 단순하게 python과 tensorflow만 설정된 상태의 docker이기 때문에 개발을 위해서는 container에 관련 환경 설정을 해줘야 함.
  • 아래의 명령들로 기본적인 툴 들을 설치 함apt install net-tools apt install openssh-server apt-get install vim apt-get install git
  • docker는 실행하고 바로 내려가기 때문에 bash와 연계되어 내려가지 않도록 하고, ssh로 접근할 수 있도록 데몬을 띄워주는 script를 작성 : /run/run.sh#!/bin/bash /usr/sbin/sshd /bin/bash
  • 여기까지 만들어진 container를 image로 생성하여 향후 다양한 project에서 사용될 수 있도록 commit 함
    • 기존에 떠 있던 container를 stop 하고 CONTAINER ID를 확인
      • docker stop <container_name>
      • docker ps -a
    • image로 commit
      • docker commit -a 'lazgob' <container ID> <image name>
  • 이미지로부터 run.sh를 실행하여 개발환경을 시작함 이때 ssh로 접속할 수 있도록 port도 처리하고 향후 사용을 위해 이름도 정의
    • docker run -p 2222:22 --name classifysent --gpus all -it <image name> /run/run.sh
  • 다른 서버에서도 사용할 수 있도록 image를 저장하고 image에 등록 하는 방법
    • 저장: docker image save -o 압축이름.tar 이미지이름
    • 등록: docker load < 압축이름.tar

'개발' 카테고리의 다른 글

[python] getattr 함수  (0) 2021.05.10
Abseil Python Common Libraries  (0) 2021.05.07
pdf2docx를 이용한 pdf 변환 코드  (0) 2021.04.30
eclipse encoding 변경  (0) 2014.08.20
[펌] 언어학 관련 원어 해석  (0) 2011.05.17

웹에서 다양한 자료들을 crawling해서 정리할 때 pdf로 된 경우 복사, 붙여넣기가 너무 힘들어서 시간이 오래걸리는 문제가 있다.

이런 번거로움을 줄이기 위해서 검색을 하다보니 pdf를 word문서인 docx로 변환하는 python library가 있었다.

그 것을 이용해서 간단하게 코드를 짜서 정리하니 표로 정리된 부분이 훨씬 수월하게 복사가 되어 조금은 편해졌다.

from pdf2docx import Converter
import sys
import re


if len(sys.argv)== 1:
    print ("USAGE: %s file.pdf", sys.argv[0])
print (sys.argv)

pdf_file = sys.argv[1]
docx_file = re.sub(".pdf", ".docx", pdf_file, flags=re.I)

# convert pdf to docx
cv = Converter(pdf_file)
cv.convert(docx_file, start=0, end=None)
cv.close()

 

+ Recent posts