[카테고리:] General

  • Let My Light Shine

    Let My Light Shine

    I scorched the earth with my talent

    and

    I let my light shine.

    -Andre Leon Talley

    나는 내 재능으로 땅을 빛으로 그을게 만들고,

    내 빛이 빛나도록 했다.

    scorched 를 searched 라고 잘못읽고 쓰다가 다시 오타 발견했다.

    그런데 search라고 보고 읽어도 멋지지 않을까라고 생각했다.

    I searched the earth with my talent. 이라고 해도 내 재능과 함께 지구를 찾았다. 그리고 내 빛이 빛나도록 했다. 이런식으로 이해해도 멋진 것 같음.

  • 리뷰) 빠르게 실패하기!

    리뷰) 빠르게 실패하기!

    행동하라

    이 세상에는 사랑과 감사에 굶주린 사람이 빵에 굶주린 사람보다 더 많습니다. – 마더 테레사

    …책 속에는 왠지 모르게 마음에 남는 마더 테레사 명언도 있었다.

    퇴근 후에 가판대에 있는 책을 하나 집어들었다. 책 읽는 거 좋아. 그리고 오늘은 월급날이기도 하니 책을 구매했다. (덤으로 주식도 사고)

    빠르게 실패하기! 라는 문구도 강렬하기도 하고 해서 동기부여도 될 것 같았다.

    실패하기 하면 떠오르는 게 나에겐 운동이 생각이 난다. 3개월 헬스권..ㅋㅋㅋ 헬스권을 끊다가 한 번 가고 안가서 아예 안하고 있다가 어느날 운동을 정말 필요로 의해서 하기 시작했다. 맨 처음은 목과 어깨였다. 팔 저림이 있었다. 약간의 목 디스크도 있었고. 나는 장시간 컴퓨터를 봐야 하기 때문에, 매일 매일 앉아 있는 게 어쩔 수 없었다. 정형외과든 신경외과든 병원가고 도수치료하고 약을 먹어도 그닥 나아지지 않았다. 노트북을 높게 올려다보게 끔 설치하기도 하고, 몇 일동안 컴퓨터를 아예 안보기도 하고.

    그러다가 필라테스 1:1 강의를 신청했다. 강사님은 나에게 1주일에 한 번으로는 안될 것 같고 1주일에 2-3번 정도는 와야 한다고 하셨다. 하지만 3개월 헬스권의 실패도 있고… 2-3번은 정말 무리였고 일주일에 딱 1번, 1시간이였다. 사실 그 시간도 그 때 당시 내가 생각할 땐 터무니 없는 적은 시간이라고 생각했었다. 한 6개월 정도 지나니. 강사님이 그래도 가랑비에 옷이 젖듯이 뭔가 체형이 좋아지고 있네요. 라고 했다. 몸이 약간 좋아졌단 걸 느꼈다. 체중은 물론 전혀 변화는 없었다. 그렇게 또, 1년이 지났고, 그럭저럭 뭔가 습관처럼 익숙해져서 운동 한지 벌써 2년이 지났고, 여전히 1주일에 1번 운동을 받는다. 난 이렇게 꾸준히 운동을 한 효과가 있다는 걸 느낀다…

    책 앞쪽에는 이런 질문들이 있었다.

    당신은 버킷리스트를 작성해 본 적이 있나요?

    이루고 싶은 성공이나 목표를 위해 계획을 세워 본 적이 있나요?

    그것을 이루기 위해 5년, 3년, 1년의 실행 목록들을 적어봤나요?

    하지만 너무 거창하게는 말고,,, Slow… Take it easy…

    작은 행동부터 해야 한다고 말하고 있다. 맨 처음에는 작고 즐거운 일들로 시작하는 걸로.

    즐겁지 않은 일은 계속 지속해나가기 어렵다고 한다. 본문에선 변호사가 되려는 사람의 예가 나왔는데,

    변호사가 되는 게 얼마나 흥미로울지에 대해 말하는 목소리가 마음에 들지 않는 남자와 데이트한 얘기를 들려주는 것 같았다.

    상대에 대한 나쁜 말을 꺼리면서 매너는 훌륭하더라고요 라고 말한다.

    그리고 행동하지 않는 이유로는 과정보다는 결과로만 칭찬을 받는 경우. 성적을 받을 때, 지능을 칭찬한 아이 vs 과정을 칭찬한 아이에게 그 다음 문제를 고르라고 했을 때 지능을 칭찬받은 아이가 일부로 쉬운 문제를 고른다고 한다.

    주된 관심사가 자신이 얼마나 똑똑하고 유능한지를 증명하는 데 있다면,

    그 자체가 지금 당장 행동하는 것에 장애물이 될 수 있다고 책에서는 말한다.

    사람들은 자신의 능력이나 재능이 의심되면 잘하는 것만 하려는 경향을 보인다…

    자신의 전문성이나 능력에 의구심을 던질만한 행동은 절대 하지 않는다.

    행동하지 않고, 나중에 해야지. 조금 있다가 해야지… 라고 미루는 행동의 큰 문제점은…

    미래에 큰 보상만을 바라게 된다.

    인데, 인상에 남았다.

    그러니까 당신의 미스터리한 기부니를 믿지 말라.

    마지막으로,

    더 잘 살기 위해서 더 실패하기!

    나태해지고 싶을 때 읽으면 좋은 책이다.

    마음을 다잡게 만들어주는 책.

  • Linux Ubuntu22.04 Go 언어 설치하다

    Linux Ubuntu22.04 Go 언어 설치하다

    Go 언어와 Rust 언어가 그렇게 핫하다길래…

    파이썬과 함께 go나 rust도 한 번 배워보라고 하셔서 둘 중 고민하다가 그나마 가장 쉽다는 Go부터 파고들려고 한다.

    저 귀여운 동물은 무엇인가

    우선 Go 웹사이트에 가서 다운로드 받기 링크는 하단에

    https://go.dev/learn/

    여기에서 download하면 리눅스용 tar 파일을 받을 수 있었다.

    윈도우용이랑 맥용, 리눅스용, source 파일도 있었다. 맥용이 친절하게 인텔 맥용이랑 m1맥용을 따로 만든 게 인상 깊었다.

    여기에서 리눅스용을 받고 저기 맨 에 installation instructions.부분을 클릭했다.

    installation 방법이 적혀 있었다. 이대로 치면 에러나더라. 호…

    1. 해당 tar파일을 받은 폴더로 이동해서

    cd Downloads/

    보통 다운로드 파일이니 다운로드 폴더로 이동하고

    2 저기 rm -rf는 관리자 권한으로 실행해야 한다.

    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz

    비밀번호 입력하는 란이 있으니 비밀번호 입력

    3 .profile 을 열어서 경로 설정해주기

    nano 열어서 했었는데, 그냥 vim으로 해도 된다.

    홈디렉토리로 이동한 후,

    4 vim .profile해서

    하단에 저 코드를 입력하고

    5 source .profile

    6 그 다음에 go version으로 확인하니 설치되었단 걸 확인했다.

    그리고 돌아가는 걸 확인하기 위해서

    여기 샘플 코드가 있어서 원하는 폴더로 이동 후

    touch hello.go

    만들고

    vim hello.go

    로 들어가서

    그대로 입력해주고 저장했다.

    그 다음으로 터미널에서

    go run hello.go를 쳐주면 되었다.

    그냥 python3 생각해서 python hello.py 처럼 go hello.go 로 쳤다가 에러가 났다.

    go run hello.go 

    였고,

    실행 파일로 빌드하는 건

    go mod init example/hello
    go build
    만들어진 (초록색) 실행 파일

    로 치면 실행파일이 바로 만들어져서

    ./hello

    등으로 치면 실행 되었다.

    설치 끝.

  • Mac) 터미널 꾸미기, iterm2, 터미널 사용자 이름 변경하기

    Mac) 터미널 꾸미기, iterm2, 터미널 사용자 이름 변경하기

    맥북 터미널 사용자 이름을 좀 변경하고 싶어졌습니다. 예전부터 변경하고 싶었는데 이번 기회에 좀 더 바꿔보았습니다.

    Mac 터미널 사용자 이름 변경

    원래는 사용자 이름@사용기기macbook air~ $ ~~ 이런 형태로 되어 있는데 너무 길기도 하고, 이름도 좀 변경해보고 싶었습니다.

    1. 터미널 – 환경설정

    2. 프로파일 – 셀

    에 들어가서 시동 명령어 실행에 export PROMPT=”명령프롬프트에표시되는이름($ 등등)”; clear;

    을 치고 저장하고 다시 들어가면 변경되어 있는 걸 볼 수 있습니다.

    이렇게 꾸미는 것 말고 좀 더 색깔이나 날짜나 이런 것 등등도 집어넣을 수 있을 것 같습니다.

    일단 터미널은 이정도로 수정하고, 실제 터미널로 좀 더 자주쓰는 iterm2에서도 사용자명을 바꿔보기로 했습니다.

    Mac iterm2에서 사용자명 변경

    다음과 같이 수정했습니다. 최종은 맨 하단 란,

    .zshrc 에서 수정했습니다. 수없이 많이 수정했던 흔적들… 이런 거 하면서 약간 재밌다고 생각합니다ㅋㅋㅋ 꾸미는 게 시간 있을 때는 은근히 즐겁더라구요. 시간없으면 귀찮은 작업일 뿐이지만,

    코드는 다음과 같이 수정했습니다.

    PROMPT="%S%B%F{yellow}[summerorange]%f%b%s%S%F{cyan}[%1~]%f%s%S%F{red}[%#]%f%s%S%F{blue}[%D]%f%s%S%F{51}[%T]%f%s"" "

    어느 곳에 적어도 상관없는데 전 주로 하단에 작성합니다. 그리고 mac 카탈리나 os는 .zshrc입니당. vim .zshrc했는데 아무 코드도 적혀져 있지않다면 .bash인지도 한 번 확인을 해보시길.

    PROMPT = “여기에 적힌 게 프롬프트 창에 뜹니다. $ 만 적으면 $만 뜸”

    처음에는 PROMPT= “[사용자이름][working directory][관리자인지 아닌지][날짜][시간]”

    이런 형태로 작성했습니다.

    [] 요 괄호는 없어도 상관없습니다. 개인적으론 깔끔한 게 좋아서 [] 붙였을 뿐.

    %n -> 사용자 이름을 표시합니다

    %m -> 맥북 모델 이름이 표시됩니다 ~ macbook~air~ 이런 형태

    %1~ -> 현재 작업중인 디렉토리 명이 표시됩니다. Downloads 이런 식으로

    %# -> 만약 루트 권한으로 작업하면 # 이 표시되고, 아니라면 일반적으로는 %로 표시됩니다

    %T -> 현재 시간을 24시간을 형태로 표시

    %t -> 12시간 형태로시간이 표시

    %D -> 년도-월-일 형태로 표시

    %W -> 월/일/년도 형태로 표시

    색상 넣기:

    PROMPT = ‘%F{yellow}%n%f”

    이런식으로 한다면

    프롬프트에 사용자 이름이 노란색으로 표시됩니다. %F 가 색상을 넣을 처음 위치를 표시하고 %f는 마지막 위치를 지정하기 때문에 %F ~ %f 사이에 {색상 이름}과 해당 내용을 넣어줍니다

    만약 굵은 글씨로 표시하고 싶다면

    %B ~ %b로 표시

    PROMPT = ‘%B%F{yellow}%n%f%b’

    밑줄 표시는 %U ~ %u

    요런 하이라이트는

    %S ~ %s

    으로 표시합니다.

    그렇게 이것 저것 테스트 해보니 이런 형태로 되었습니다.

    맨 마지막의 ” “으로 공백 넣은 것은 명령어 칠 때 [시간]명령어 치면 불편하니 [시간] 명령어 이런식으로 한 칸 뛰어서 치려고 넣었습니다.

    PROMPT=”%S%B%F{yellow}[summerorange]%f%b%s%S%F{cyan}[%1~]%f%s%S%F{red}[%#]%f%s%S%F{blue}[%D]%f%s%S%F{51}[%T]%f%s”” “

  • 두려움을 가라앉히는 가장 좋은 방법은

    두려움을 가라앉히는 가장 좋은 방법은

    불안을 줄이는 법

    “Nothing diminishes anxiety faster than action.”

    고등학교 때, 영어 문장을 해석할 때 앞에 부정문이 나오면 어떻게 해석해야하는지 늘 어려워했던 기억이 납니다.

    Nothing이 앞에 있잖아. 그럼 어떻게 해석해야하지? 반대로 읽으면 된다고 하는데 그 말도 어려워했었습니다.

    diminishes 줄이다. anxiety를… faster than action 행동보다 더 빠르게?

    조합해보면 행동이 불안을 가장 빠르게 줄인다라는 의미가 되네? 이렇게 야매로 영어를 하나씩 해석했던 기억이 새록새록

    행동보다 더 빠르게 불안을 줄일 수 있는 건 아무것도 없다. 입니다.

    오늘도 퇴근 후에 글 하나씩 완료 했습니다. 끗.

  • Python) Reeborg’s World Maze – 알고리즘

    Python) Reeborg’s World Maze – 알고리즘

    일요일에는 Maze 부분 못 풀었는데 정답 보기는 싫고 어떻게든 알아서 풀어보고자 했고,

    퇴근하고 와서 다시 Maze 부분 붙들고 풀다가 풀었습니다.

    뭐 만들 때 안 풀리면 하루 잠을 자고 다음 날 풀거나 산책하고 와서 풀거나, 커피 마시고 돌아와서 풀고, 수학 문제처럼 머리 속에 두고두고 있다가 어떻게 하다보면 풀리는 것 같습니다.

    Reeborg’s World – Maze 편

    python 함수 move() 를 넣으면 움직이고, turn_left()하면 왼쪽으로 돕니다.

    front_is_clear(), wall_in_front(), right_is_clear(), wall_on_right(), at_goal() 이 부분은 True / False 로 반환 받을 수 있습니다받는 부분입니다.

    while로 루프 써서,

    저 미로를 로봇이 도착지점까지 올 수 있도록 코드를 짜는 것이 요 미로 편이였습니다.

    미로 풀기는 하단 링크에서 할 수 있습니다.

    https://reeborg.ca/reeborg.html?lang=en&mode=python&menu=worlds%2Fmenus%2Freeborg_intro_en.json&name=Maze&url=worlds%2Ftutorial_en%2Fmaze1.json

    주어지는 미로 속에서 로봇이 잘 헤쳐나갈 수 있도록 많은 경우의 수를 고려해서 코드를 짜는 걸 알고리즘이라고 합니다.

    로봇이 보는 곳은 동서남북 중 랜덤으로 방향이 정해집니다.

    풀었던 코드:

    이렇게 저렇게 풀어보다가 풀었던 코드는 이 방법이었습니다.

    def turn_north():
        while is_facing_north() != True:
            turn_left()
    
    def turn_west():
        turn_north()
        turn_left()
        turn_left()
        turn_left()
            
    turn_west()            
    while at_goal() != True:
        if front_is_clear() and wall_on_right():
            move()
        if wall_in_front() and right_is_clear():
            turn_left()
            turn_left()
            turn_left()
            move()
        if wall_in_front() and wall_on_right():
            turn_left()
        if front_is_clear() and right_is_clear():
            turn_left()
            turn_left()
            turn_left()
            move()
        elif front_is_clear():
            move()

    이 중에서 약간 핵심이라고 생각하는 조건이 front_is_clear() and right_is_clear()일 때 어느 방향으로 움직일 지 설정해 주는 거였습니다. 미로를 푸는 방법은 벽을 따라 오른쪽으로 쭉 돌다보면 나가는 곳이 보일테니 오른쪽으로 가도록 설정을 하고, 하지만 벽이 막혀 있다면 왼쪽으로 틀어주는 방법. 으로.

    이렇게 저렇게 실험하 듯 짜다보니 코드가 정리되지 않았는데,

    저 turn_left() 3번 쓰는 걸 함수로 묶는

    def turn_right():
       turn_left()
       turn_left()
       turn_left()

    대략 어떻게 움직일지 동작하는 걸 구현했지만 좀 더 깔끔한 코드 리팩토링이 필요할 것 같네요.

    깊이 우선 탐색, 넓이 우선 탐색 이런 걸 뭔가 몸으로 체득하듯이 코드를 짜는 것 같아서 저 사이트 정말 유용하다고 생각합니다.

    문제는 답지 없이 꼭 풀고. 어떻게든 혼자 힘으로 풀어내는 걸 추천합니다 🤖🤖🤖🤖🤖

    굳었던 머리가 말랑해지는?? 좋아지는 느낌도 듭니다.

    치매 예방! 두뇌 회전!

    (무슨 광고 같아ㅋㅋㅋㅋ)

  • tistory 현재 상황 22.10.17

    tistory 현재 상황 22.10.17

    엄… 티스토리도 일단 들어가는 지는데,

    완전히 복구된 건 아닌 듯합니다.

    15일은 아예 접속이 안되었고, 어제 저녁(16일)은 관리자 페이지에 아예 안들어가졌고.

    지금은 뜨기는 하는데 파비콘을 불러오지는 못하는 것 같네요.

    음… 그리고 포스팅이 모두 m 으로 시작하는 주소로 봐서는 모바일 형식으로 불러와 집니다.

    가로 길이를 모니터 크기에 맞춰서 max로 늘렸는데 여전히 모바일 형태로 나타납니다.

    반응형 부분은 아직 안 먹히는 것 같단 생각이 듭니다.

    블로그… 이전에도 다음카카오는 블로그 운영에 관심을 점점 안 두고 있다는 느낌이 강해서 좀 슬퍼지려고 했는데…🥲

    구글 검색창으로 이것저것 치면 개발과 관련해서 나름 양질의 글은 티스토리가 그래도 선방하는 편이라고 생각했습니다.

    궁금한 거 구글 검색창에 치면 그래도 나름 이런 저런 방향이나 정보 글은 티스토리가 많을 거예요. 네이버는 잘 안들어가서 모르겠지만요.

    아예 접속이 안되다보니 좀 멘붕이 왔습니다. 열심히 포스팅해서 올려놓은 글들이니까요.

    티스토리 방문자 수 추이

    15일과 16일 부분은 아예 접속이 안되었던 것 같은데 방문자 수가 있어서 신기했습니다. 0으로 예상했었거든요.

    그리고 반응형 웹 부분이 확실히 안되니 구글 애드센스 부분도 공란이 많이 보입니다.

    사실 들어가지는데 뭐 건드리는 게 겁납니다.

    (열심히 복구하시는 엔지니어 분들 화이팅🥲)

  • Erica Jong – You take your life in your own hands

    Erica Jong – You take your life in your own hands

    daily_quotes
    daily_quotes

    “You take your life in your own hands, and what happens? A terrible thing, no one to blame.”

    매일 매일 조금씩 변화하기.

  • 랠프 월도 애머슨 – Always do what you are afraid to do

    랠프 월도 애머슨 – Always do what you are afraid to do

    always do
    always do

    당신이 두려워 하는 그 일을 하십시오.

    에서 Always do 라는 단어에 집중했다.

    항상 행동하는 정신이 되자. 라고 생각한다.

  • python) Reeborg’s World Hurdle4 풀기

    python) Reeborg’s World Hurdle4 풀기

    은근히 안되서 될 때까지 붙잡고 풀었습니다.

    python 코드를 연습하기 좋은. 스크래치 게임과 비슷한 Reeborg’s World 입니다.

    Reeborg's World
    Reeborg’s World

    1, 2, 3 단계는 쉽게 풀릴테고, 4단계부터는 코드 하나에 하나하나 어떻게 돌아가는지 확인이 필요합니다.

    코드를 짜는 건 귀찮으니 빠르게 해결하려고 했던 건데… 가는지 안가는지 확인해야 한다니ㅋㅋㅋ

    사람이라면 장애물이 대략 몇 미터인지 파악해서 4미터면 4번 갔다 도는 것, 1미티 정도면 1번 돌고… 이런 식으로 빠를 텐데.

    귀여운 Reeborg는 눈 앞에 장애물이 없으면 이동해, 우측에는 벽이 있어? 앞에는 장애물이 있어? 만약 우측에 벽이 없다면…

    이라고 하나부터 열까지 하나하나 설정해야 합니다.

    일단 4단계 풀었던 코드는 요렇습니다. 그런데 해결된 코드 복붙해봐야 재미없으니 직접 하는 걸 강추…

    원래 가지고 있던 def와 따로 만들어서 움직이도록 짰습니다.

    하다가 에러나면 오기도 생기고, 될 때까지 한다. 이런 느낌으로 해보면 엄청 재밌습니다.

    사이트 주소:

    https://reeborg.ca/reeborg.html?lang=en&mode=python&menu=worlds%2Fmenus%2Freeborg_intro_en.json&name=Hurdle%201&url=worlds%2Ftutorial_en%2Fhurdle1.json

    def turn_right():
        turn_left()
        turn_left()
        turn_left()
    
    def jump():
        turn_left()
        move()
        turn_right()
        move()
        turn_right()
        move()
        turn_left()
        
    while at_goal() != True:
        if right_is_clear():
            turn_right()
            move()
            turn_right()
            move()
        elif front_is_clear():
            move()
        elif wall_in_front():
            turn_left()
        elif wall_on_right():
            move()
            turn_right()

    그리고 다음 스테이지로 이동!

    또다른 솔루션은

    def turn_right():
        turn_left()
        turn_left()
        turn_left()
    
    def jump():
        turn_left()
        while wall_on_right():
            move()
        turn_right()
        move()
        turn_right()
        while front_is_clear():
            move()
        turn_left()
            
        
    while at_goal() != True:
        if wall_in_front():
            jump()
        else:
            move()

    좀 더 깔끔한 코드

error: Content is protected !!