반응형

url 가져오기 

> location.href
 'https://test.com?aa=1&bb=2

 

파라미터 가져오기

split을 이용하여 ?를 기준으로 앞의 url과 쿼리 스트링을 나눠준다.

> let string = location.href.split('?');
> string
 0: "https://test.com"
 1: "a=1&b=2"
 
> string[1]
 a=1&b=2

 

파라미터가 여러개라면 쿼리스트링을 &를 기준으로 나눠주면 된다.

> let params = string[1].split('&');
> params
(2) ['a=1', 'b=2']

> params[0]
'a=1'
> params[1]
'b=2'

나눠진 파라미터를 =를 기준으로 나누어서 사용하면 된다.

다소 귀찮지만 쉬운 방법.

반응형
반응형

encodeURI

일반 문자열을 인코딩하여 이스케이프 문자로 나타냄

> encodeURI("123가나다");
< '123%EA%B0%80%EB%82%98%EB%8B%A4'

 

decodeURI

encodeURI로 이스케이핑 된 문자열을 일반 문자열로 되돌린다.

> encodeURI('123%EA%B0%80%EB%82%98%EB%8B%A4');
< '123가나다'

 

location.href로 가져온 url이 인코딩되어있는 경우 사용하였다. 

반응형
반응형

따로따로 그린 그래프를 말그대로 밑이든 옆이든 이어붙이기

patchwork library 필요

library(patchwork)

 

두 개의 그래프가 있다.

pm2.5plot<-ggplot(tsv,aes(x=date,y=PM2.5, colour=기기이름,group=기기이름))+
  geom_line()+
  theme(legend.position="none", legend.box="vertical")+
  facet_wrap(~"PM2.5",ncol = 1,scales="free")


pm10plot<-ggplot(tsv,aes(x=date,y=PM10, colour=기기이름,group=기기이름))+
  geom_line()+
  theme(legend.position="bottom", legend.box="vertical")+
  facet_wrap(~"PM10",ncol = 1,scales="free")

 

1. 위아래로 붙이기

위 그래프 / 아래 그래프

pm2.5plot/pm10plot

 

 

2. 좌우로 붙이기

좌 그래프 + 우 그래프

pm2.5plot+pm10plot

반응형
반응형

이 책에서 다루는 포르노는,

좁은 의미의 포르노는 우리가 아는 포르노 영상, 즉 '야동'이다.

넓은 의미의 포르노는 전체 포르노 산업을 포함한 모든 것을 얘기한다. 

 

이 책에서는 좁은 의미와 넓은 의미의 포르노를 모두 다루고 있다.

포르노라는 산업이 어디에서 시작되었는지, 현재 포르노산업은 어떻게 구성되고 있는지,

포르노가 남자, 여자의 삶에 어떻게 스며들고 어떻게 영향을 주는지,

또 남자 여자의 측면뿐만 아니라 인종과 아동의 관점에서도 포르노/포르노 산업을 다루고 있다.

 

포르노의 이면을 묘사하느라 굉장히 선정적이고 직설적이라 역겨운 묘사가 다수 있어서 읽기 힘들기도 했다.

극단적이고 파괴적이라고 생각할 수 있지만, 이보다 더 포르노라는 세계와 포르노의 영향을 설명할 수 없다고 생각한다. 

 

남자들은 자신들이 원해서 포르노를 본다고 생각하지만 책에서는 사실 포르노 산업에 의해 생성되고 길러진 욕구라고 말한다.

또한 여성들은 자신들이 원해서 '주체적 섹시'를 갈망하고 아름다운 '여성상'을 추구한다고 생각하지만 그것 역시 포르노 산업에 의해 생성된 이미지에 불과하다.

포르노는 자신들의 판타지를 그린 것이라 말하지만 포르노는 개인이 만들어낸 판타지가 아니라 공장에서 대량생산해낸, 정형화된 상품이라는 것이며, 그 포르노들을 소비하다 보면 사람들은 더 자극적이고 더 폭력적인 것을 원하게 된다.

읽으면서 가장 충격적인 내용은 어느 교도소의 아동 포르노 소지죄로 수감된 사람 중 '소아성도착자'의 정의에 들어 맞는 사람들은 없었으며, 일반적인 포르노에 질려 더 비정상적인 장르를 소비하다보니 아동 포르노로 넘어가게 되었다는 것이다. 

 

포르노가 우리의 삶에 얼마나 깊히, 그리고 얼마나 넓게 퍼져있는지 피상적으로는 알고 있었지만 어떻게 일상에 스며들어 있었는지 알 수 있었다. 생각있는 성인이라면 꼭 한 번씩은 봤으면 한다. 

 

포르노가 제작되는 환경이 불법이든 합법이든,
그 영상이 출연자의 자유의사로 촬영되었건 전혀 모르는 새에 불법적으로 촬영되어 유포되었건
포르노가 일으키는 사회적 영향에는 거의 차이가 없다.
실제 여성이 출연하지 않으므로 피해자가 없는 것처럼 보이는 리얼돌이나 게임 캐릭터, 포르노만화와 야설도
그것이 끼치는 영향에 관해서는 여느 포르노와 다를 바가 없다.
다크웹에서 유통되는 극단적인 하드코어에서부터
남자들에게는 너무나 흔한 '야동', 대중문화에 새어나오는 성적 코드에 이르기까지,
우리는 포르노라는 말을 넓게 이해할 필요가 있다.
각기 이름이 다르고 정도의 차이만 있을 뿐 여성들의 삶과 사회적 지위에 끼치는 영향은 똑같이 크기 때문이다.

반응형

'' 카테고리의 다른 글

완전한 행복 - 정유정  (0) 2022.05.07
매일 인문학 공부 - 김종원  (2) 2021.11.03
네 눈동자 안의 지옥 - 캐서린 조  (0) 2021.08.21
체공녀 강주룡 - 박서련  (0) 2021.07.13
천 개의 파랑 - 천선란  (0) 2021.07.06
반응형

paste0을 사용합시다

paste0(문자열,문자열)

세 개 이상도 가능

 

반응형
반응형
pm2.5plot<-ggplot(tsv,aes(x=date,y=PM2.5, colour=기기이름,group=기기이름))+
  geom_line()+
  theme(legend.position="none", legend.box="vertical", axis.title.y=element_blank())+
  facet_wrap(~"PM2.5",ncol = 1,scales="free")

 

범례 제거하기

legend.position="none"

 

x축 라벨 제거하기

axis.title.x=element_blank()

 

y축 라벨 제거하기

axis.title.y=element_blank()

반응형
반응형

하위컴포넌트 -> 상위컴포넌트로 이벤트&데이터 전달하기

 


1. 자식 컴포넌트의 이벤트 내용에 다음 내용 추가

this.$emit( ' 상위로 전달할 이벤트명 ' , 데이터 ) ;

 this.$emit('update',this.childTime);

이벤트명은 임의로 적어주고 데이터는 전달할 데이터

 

2. 상위컴포넌트의 <하위 컴포넌트>명시 부분에 이벤트 핸들러 추가

@하위에서 전달받을 이벤트명="전달받고 실행할 이벤트"

 <setTime @update="timeChanged"/>

실행할 이벤트는 상위 컴포넌트에서 명시하면 된다.

 timeChanged(childTime){ //전달받은 데이터
    console.log("이벤트전달");
	this.parentTime=childTime;
}

전체 예시 소스

하위 컴포넌트

<template>
    <div id="setTime">
    {{childTime}}
        <button class="minusBtn" @click='setValue' value="-5">-5분</button> 
    </div>
</template>

<script>
export default {
  name: 'setTime',
  data(){
    return{
        childTime:'',
    }
  },
  methods:{
    setValue(){
         this.$emit('update',this.time); //상위 컴포넌트에 이벤트, 데이터 전달
    },
  }
}
</script>

 

상위 컴포넌트

<template>
    <div id="managerMain">
        <div>현재 {{time}} 분</div>
            <setTime @update="timeChanged"/> //이벤트 명시
    </div>
</template>


<script>
import setTime from '@/components/manager_setTime.vue'

export default {
   name: 'managerMain',
   components: {
    setTime
   },
   data(){
    return{
        parentTime:''
    }
   },
   methods:{
    timeChanged(childTime){ //전달받은 데이터
    console.log("이벤트전달");
        this.parentTime=childTime;
    }
   }
}

</script>
반응형
반응형
//클릭한 요소 가져오기
let dv = event.currentTarget;

//클릭한 요소의 className 가져오기
dv.className;
//클릭한 요소의 style 속성 손보기
dv.style.backgroundColor;

//클릭한 요소의 하위 DOM요소 찾기(하위 요소 중 input 타입 찾기)
//input이 여러개라면 맨 처음 하나만 가져온다
dv.querySelector('input');

//특정 요소 모두 찾기
dv.querySelectorAll();

//id가 modal인 요소 찾기
dv.querySelector('#modal');

//클릭한 요소의 부모 요소 찾기
dv.parentNode;

//클릭한 요소의 자식 요소 찾기
dv.children

//자식요소가 여러개다?
dv.children[i]

//선택한 요소의 text 가져오기
dv.innerText 
dv.outerText
반응형
반응형

1. 프로젝트 폴더 내에서 로컬 repository 추가 

$ git init

결과) Initialized empty Git repository in D:/mtMap/.git/

 

2. git 원격저장소 설정

$ git remote add [remote이름]  [원격 repository url]

예시
$ git remote add mytest https://github.com/h92218/mytest.git

 

3. 원격저장소 설정한거 확인

$ git remote

결과) remote이름 표시됨

 

4. git에 올릴 파일 확인

$ git status

결과 ) 파일들 상태 표시 

5. 파일 추가

$ git add -A

-A는 모든 파일 추가임

다시 한번 git status로 확인해보면

 

6. 커밋하기

$ git commit -m "message"

 

7. 푸시하기

$ git push [remote 이름]

예시
$ git push mytest


fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream mt main

근데 아마 최초 푸시면 upstream으로 하라는 문구가 뜰 것.

해주면 됨.

$ git push --set-upstream mt main

Git global setup : 깃 전체 설정입니다~

git config --global user.name "userName"
git config --global user.email "userName@gmail.com"

Create a new repository : 레포지토리를 새로 생성하고 업로드하는 경우입니다~

git clone http://git 레포지토리 주소~~
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main

Push an existing folder : 레포지토리는 존재하고 git 업로드를 최초로 하는 경우입니다.

git init --initial-branch=main
git remote add origin http://git레포지토리주소~
git add .
git commit -m "Initial commit"
git push -u origin main

 

Push an existing Git repository : 사용하던 레포지토리에서 다른 레포지토리로 전환하여 업로드하는 경우

git remote rename origin old-origin
git remote add origin http://git레포지토리주소
git push -u origin --all
git push -u origin --tags

 


github에서 git repository 폴더 화살표 / 디렉토리 화살표 오류 

 

GitHub(깃허브) - 디렉토리에 화살표 표시(폴더 클릭이 안될 때)

📎 GitHub 디렉토리 화살표 표시 -> 폴더 접근 불가능 깃허브에서 한 디렉토리에 다른 디렉토리를 추가하는 도중 위와 같이 디렉토리에 화살표 표시가 생기고, 디렉토리에 접근이 되지않는 문제

zzang9ha.tistory.com

 


CRLF will be replaced error

 

Git 에러 CRLF will be replaced by LF (혹은 반대) 핸들링하는 방법

맥/리눅스 이용 개발자와 윈도우 개발자가 협업할 때 왜 발생할까? 터미널에 git 명령어를 입력했는데 다음과 같은 에러가 뜨는 경우가 있다: ```bash warning: CRLF will be replaced by LF in some/file

blog.jaeyoon.io

git config --global core.autocrlf true

 


non-fast-forward 에러

$ git push -u project master
To http://00.000.0.000:8090/project.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'http://00.000.0.000:8090/project.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

원격 분기의 변경 내용을 로컬로 변경한 내용과 페치하고 병합하여 이 문제를 해결할 수 있습니다.

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

또는 두 명령을 한 번에 모두 수행하는 데만 git pull을 사용할 수 있습니다.

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work

참고

https://docs.github.com/ko/get-started/using-git/dealing-with-non-fast-forward-errors


fatal: refusing to merge unrelated histories

git pull origin mybranch --allow-unrelated-histories

이 명령 옵션은 이미 존재하는 두 프로젝트의 기록(history)을 저장하는 드문 상황에 사용된다고 한다. 즉, git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.

참고

https://gdtbgl93.tistory.com/63

 


 Already up to date

alreay up to date 라면서 pull 안 될 때

$ git fetch --all
$ git reset --hard origin/master


git reset :  HEAD의 포인터를 특정 위치로 옮기는 명령어
--hard 옵션 :  이전 커밋으로 돌아가기. 그 커밋 이후에 내용들은 삭제됨.
--mixed 옵션 : 커밋을 이동함. 변경 이력이 모두 삭제되지만 스테이지에 코드가 남아있음. 이 코드를 add 후 커밋하면 됨.
--soft 옵션 :  mixed 옵션과 같지만 이미 스테이징 되어있음. 이 말은, add 없이 바로 커밋하면 된다~~

https://chanos.tistory.com/entry/GIT-git-pull-%EC%8B%9C-merge-%EC%98%A4%EB%A5%98-%EB%B0%9C%EC%83%9D%ED%96%88%EC%9D%84-%EB%95%8C-%EA%B0%95%EC%A0%9C%EB%A1%9C-%EB%8D%AE%EC%96%B4%EC%93%B0%EB%8A%94-%EB%B0%A9%EB%B2%95-git-fetch-reset-pull

반응형
반응형

git에서 clone받아 npm run serve 입력을 했는데 오류가 뜨면서 안된다.... ㅠ ㅠ

D:\takoyaki23\front>npm run serve

> front@0.1.0 serve D:\takoyaki23\front
> vue-cli-service serve

'vue-cli-service'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! front@0.1.0 serve: `vue-cli-service serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the front@0.1.0 serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\heirr\AppData\Roaming\npm-cache\_logs\2021-09-30T12_13_34_121Z-debug.log

 

>>>>해결방법

1. npm cache clean --force 입력

2. node modules 삭제 후 npm install로 재설치

반응형

+ Recent posts