강의영상

밈(Meme)과 클래스

신혜선 어쩔티비

- 무슨말인지 하나도 몰랐어요

- 하나하나가 요즘 많이 쓰는 말인것은 알겠음

- 멈춰까지 유행어였음!! (몰랐어요, 댓글보고 알았음)

- 이런걸 인터넷밈 혹은 줄여서 그냥 밈이라고 부른다.

- 너무 재밋어서 사람들이 따라하면서 유행시킵니다. (약간변형하기도 하고요)

밈과 인터넷밈

- 밈이란? (유전자처럼) 복제가능한 something

  • 이기적 유전자에서 제시한 개념
  • 유전자는 (1) 복제 (2) 변형되면서 전파되는 속성이 있다는 사실을 관찰
  • 종교, 사상, 이념도 유전자처럼 (1) 복제 (2) 변형되면서 전파되더라..
  • 밈 = 유전자의 일반화된 개념 = 복제가능한 something

- 인터넷 밈

  • 밈의 한 형태
  • 인터넷을 통하여 (1)복제 (2)변형되면서 전파되는 something

신혜선의 어쩔티비에 사용된 밈

(1) 어쩔티비?

- 기원: 불분명

  • 가설1: 초등학생이 유투브채널 개설할때 XX티비 라고 개설하는것에서 유래?
  • 가설2: "어쩌라고 티비나봐"의 줄임말?

- 발전: 인터넷을 통하여 사람들이 쓰기시작하면서 밈화

  • 변형1: 저쩔티비, 안물티비, 안궁티비..
  • 변형2: 어쩔냉장고, 어쩔세탁기, 어쩔다이슨청소기내돈내산..
    Note: 사실 내돈내산도 밈이라고 볼 수 있음

(2) 우짤래미

(3) 아무고토못하쥬?

(4) 크크루삐뽕

(5) 슉슈슈슈슉 ㅅㅂㄹㅁ ($\star$)

- 전혀 다른 성질을 가진 밈으로 재탄생한 경우임

  • 만들어진 계기: 트위치에서 tts를 이용해 조롱을 하기 위해 탄생
  • 유명해진 계기: 택배실수
  • 슉슈슈슈슉: 돌하르방과 결합.. (돌하르방의 기묘한 자세와 결합하여 더 재미있음)

(6) 멈춰! ($\star$)

- 기원 학교폭력, 멈춰

- 이것 역시 전혀 다른 성질을 가진 밈으로 재 탄생한 경우임

(1)~(6) 이외에 더 있을수도.. // 내가 모를 수도 // 떠올리지 못 했을 수도 // 내가 무지했을 수도 // 내가 또 잘못을 // 내가 감히

예제들을 통해 살펴본 밈의 의미

- 딱히 정형화 하기 어렵지만 위의예제들은 복제가 되는 어떠한 틀이 있다. 이것을 밈(=유전자)라고 부른다!!

- 많은 사람들에게 그 복제내용이 확산되어 재생산된다. 이것을 밈화라고 한다.

- 그대로 복제하지 않고 변형을 거치며 전혀 다른 성질을 가질 수 있다.

- 밈이 또 다른 밈을 만들수 있다.

  • 신혜선의 어쩔티비는 다양한 밈의 결합체, 그리고 신혜선의 어쩔티비 자체가 밈화 되었음.
  • 내돈내산 밈과 어쩔티비밈의 변형이 결합하여 어쩔다이슨청소기내돈내산 이 탄생.

클래스

- 클래스의 정의

  • 많은 교재에서 정의를 회피한다.
  • 대신에 비유적으로 설명하거나 다른 대상을 가져와서 설명한다.

- 클래스에 대한 비유적 설명 (implicit definition)

- 클래스에 대한 명시적 정의 (책에 나온것 아니고 제 생각입니다!!)

  • 클래스는 복제, 변형, 재생산을 용이하게 하기 위해 만들어진 확장가능한 프로그램의 코드의 단위(extensible program-code-template)이다. 즉 밈이다.

- 클래스도 결국 밈이다. 생각해보면 클래스를 만들고 사용하는 과정이 인터넷에서 밈을 만들고 노는것과 닮아 있다.

  • 1단계: 개념의 인지 (이거 재미있겠다 밈으로 만들자 // 이 코드 쓸모있다, 이 코드를 쉽게 찍어내는 클래스로 만들어두자)
  • 2단계: 복사하고 싶은 속성을 추려 복사가능한 틀을 만듬 (밈 초기 컨텐츠 // 클래스의 선언)
  • 3단계: 밈에서 다양한 컨텐츠를 재생산, 때로는 변형하여 재생산, 때로는 그것을 응용한 다른밈을 만듬 (밈화 // 클래스의 인스턴스화, 상속, 메소드오버라이딩)

"멈춰"밈을 컨텐츠화

- 멈춰밈을 이용하여 코스피하락, 수강신청매크로등 다양한 예제를 만들고 놀고 싶다.

from IPython.core.display import HTML 

예비학습

문자열포맷팅 (문자열끼워넣기)

- 예제1

'제 이름은 {}입니다'.format('최규빈')
'제 이름은 최규빈입니다'

- 예제2

'제 이름은 {}이고 사는곳은 {}입니다.'.format('최규빈','전주')
'제 이름은 최규빈이고 사는곳은 전주입니다.'
'제 이름은 {}이고 사는곳은 {}입니다.'.format('전주','최규빈')
'제 이름은 전주이고 사는곳은 최규빈입니다.'
'제 이름은 {}이고 사는곳은 {}입니다.'.format('전주')
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/tmp/ipykernel_560529/3071290817.py in <module>
----> 1 '제 이름은 {}이고 사는곳은 {}입니다.'.format('전주')

IndexError: Replacement index 1 out of range for positional args tuple

- 예제3

'제 이름은 {name}이고 사는곳은 {add}입니다.'.format(name='최규빈',add='전주')
'제 이름은 최규빈이고 사는곳은 전주입니다.'
'제 이름은 {name}이고 사는곳은 {add}입니다.'.format(add='전주',name='최규빈')
'제 이름은 최규빈이고 사는곳은 전주입니다.'

HTML

- 예제1

HTML("<p> 이름 </p>")

이름

- 예제2

"<img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>"
"<img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>"
HTML("<img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>")

- 예제3

HTML("<p> 전북대학교 </p> <img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>")

전북대학교

HTML을 이용한 밈생성

- 밈을 위한 이미지 주소

url1='https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true'
url2='https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop2.png?raw=true'

- 예제1: 원본

htmlstr = "<p> {title} </p> <img src= '{url}'> <p> {end} </p> " 
HTML(htmlstr.format(title='학교폭력',url=url1,end='멈춰~~~~'))

학교폭력

멈춰~~~~

- 예제1: 코스피하락

HTML(htmlstr.format(title='코스피하락',url=url1,end='멈춰~~~~'))

코스피하락

멈춰~~~~

- 예제3: 수강신청 매크로

HTML(htmlstr.format(title='수강신청 매크로',url=url1,end='멈춰~~~~'))

수강신청 매크로

멈춰~~~~

함수를 만들어서 코드를 관리

- 함수의 선언

def stop():
    htmlstr = "<p> {title} </p> <img src= '{url}'> <p> {end} </p> " 
    display(HTML(htmlstr.format(title=ttl,url=url,end=end))) #display 명시해야 명확하게 출력가능

예제 1,2,3을 함수로 동시관리

$t=1$ "학교폭력 멈춰" 생성

ttl = '학교폭력'
url = url1
end = '멈춰~~~~'
stop()

학교폭력

멈춰~~~~

$t=2$: "코스피하락 멈춰" 생성

ttl = '코스피하락'
url = url1
end = '멈춰~~~~'
stop()

코스피하락

멈춰~~~~

$t=3$: "수강신청 매크로 멈춰" 생성

ttl = '수강신청 매크로'
url = url1
end = '멈춰~~~~'
stop()

수강신청 매크로

멈춰~~~~

$t=4$: "수강신청 매크로 멈춰"의 끝을 물결대신 느낌표로!

ttl = '수강신청 매크로'
url = url1
end = '멈춰!!!!!'
stop()

수강신청 매크로

멈춰!!!!!

$t=5$: "코스피하락 멈춰"를 다시 출력 <-- 실수발생가능

ttl = '코스피하락'
url = url1
end = '멈춰!!!!!'
stop()

코스피하락

멈춰!!!!!

  • 앗 실수
ttl = '코스피하락'
url = url1
end = '멈춰~~~~'
stop()

코스피하락

멈춰~~~~

$t=6$: "학교폭력 멈춰"와 "코스피하락 멈춰"를 동시에 출력

ttl = '학교폭력'
url = url1
end = '멈춰~~~~'
stop()

학교폭력

멈춰~~~~

ttl = '코스피하락'
url = url1
end = '멈춰~~~~'
stop()

코스피하락

멈춰~~~~

$t=7$ "학교폭력 멈춰"의 이미지를 신혜선으로 변경, "코스피하락 멈춰"의 title을 'KOSPI하락'으로 변경

ttl = '학교폭력'
url = url2
end = '멈춰!!!!!'
stop()

학교폭력

멈춰!!!!!

ttl = 'KOSPI 하락'
url = url1
end = '멈춰!!!!!'
stop()

KOSPI 하락

멈춰!!!!!

예제 1,2,3을 클래스를 이용해 동시관리

class STOOOP: # STOOOP 은 양식문서의 이름이라 생각할 수 있다. 
    title = "학교폭력" 
    url = url1 
    end = "멈춰~~~~" 
    def stop(self): ## 규칙1: class안에서 정의된 함수는 첫번째 입력으로 무조건 self 
        htmlstr = "<p> {title} </p> <img src= '{url}'> <p> {end} </p> " 
        display(HTML(htmlstr.format(title=self.title,url=self.url,end=self.end)))
        ## 규칙2: class안에서 정의된 변수 (title, url, end)를 쓰려면 "self.변수이름"의 형태로 써야함

$t=1$ "학교폭력 멈춰" 생성

school = STOOOP() 
# STOOOP이라는 이름의 양식문서를 복사해 하나의 hwp를 파일을 만들어 밈을 생성하고 그 파일이름을 school이라고 하자.
# 그러니까 STOOP.hwp 와 school.hwp가 있는 상황
school.title
'학교폭력'
school.url
'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true'
school.end
'멈춰~~~~'
school.stop()

학교폭력

멈춰~~~~

$t=2$: "코스피하락 멈춰" 생성

kospi = STOOOP() # 코스피하락 멈춰를 위해 STOOP.hwp양식문서에서 하나의 밈을 찍어낸다(=kospi.hwp 생성).
kospi.title, kospi.url, kospi.end
('학교폭력',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰~~~~')
kospi.title = '코스피하락' # kospi.hwp 제목을 코스피하락으로 변경 
kospi.title, kospi.url, kospi.end
('코스피하락',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰~~~~')
kospi.stop()

코스피하락

멈춰~~~~

$t=3$: "수강신청 매크로 멈춰" 생성

macro = STOOOP() 
macro.title, macro.url, macro.end
('학교폭력',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰~~~~')
macro.title = '수강신청 매크로'
macro.title, macro.url, macro.end
('수강신청 매크로',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰~~~~')
macro.stop()

수강신청 매크로

멈춰~~~~

$t=4$: "수강신청 매크로 멈춰"의 끝을 물결대신 느낌표로!

macro.end = '멈춰!!!!!'
macro.stop()

수강신청 매크로

멈춰!!!!!

$t=5$: "코스피하락 멈춰"를 다시 출력

kospi.stop()

코스피하락

멈춰~~~~

$t=6$: "학교폭력 멈춰"와 "코스피하락 멈춰"를 동시에 출력

school.stop()

학교폭력

멈춰~~~~

kospi.stop()

코스피하락

멈춰~~~~

$t=7$ "학교폭력 멈춰"의 이미지를 신혜선으로 변경, "코스피하락 멈춰"의 title을 'KOSPI하락'으로 변경

school.url = url2 
kospi.title = 'KOSPI 하락'
school.stop()

학교폭력

멈춰~~~~

kospi.stop()

KOSPI 하락

멈춰~~~~

숙제

- "수강신청 멈춰"의 이미지를 신혜선으로 변경하고 출력해볼 것

  • macro.url 변경
  • macro.stop() 을 사용
macro.url = url2
macro.stop()

수강신청 매크로

멈춰!!!!!