2019년 3월 13일 수요일

과연 10년뒤에도 행복할수 있을까?



짤막한 영상을 통해 로봇간 토론을 볼수 있었다.

10~20년 안에 인간이 하는 일 대부분을 로봇이 대체할 수 있을 것이라고 한다.

대다수의 인간은 놀 수 있게 될것이고 노동/ 근로는 로봇이 하는거라는 인식이 자리잡게 될거다.

그건 틀림없지만 인간이 세상에  특이점이 도달하기 전까지 과연 안전할 수 있을까?

누군가는 큰 돈을 위해 영화/게임 바이오하자드 처럼 엄브렐라 사와 같은 회사를 만들수도 있고

3차 세계대전이 일어날수도 있다.



앞으로 10년 ~15년 세상은  초 단위로 발전하는데 이런 세상에서 나 자신을 지킬 수 있을까?

2019년 3월 7일 목요일

시간을 낭비하지 않기위한 노력

뽀모도르 앱을 사용해서
하고자하는 행동을 1단위로 바꾼다.

독서 (1뽀모도르 25분)

강의 따라하기 (2뽀모도르)



운동의 단위처럼 운동도 1pushup/ 1chinup 이렇게 달력에 표시한다.

오늘 저녁 5시쯤 교통사고를 목격했다.

도서관에서 나와서 작은 횡단보도를 걷는데

내앞 을 걷던 60대 아저씨가 프라이드(?) 차에 치였다.

순간 놀라서 아무것도 못하고 보기만 했는데 아저씨는 사고난 직후 바닥에 누워서 움직이지 못하는 상태였고 운전자 + 동승자 모두 차밖으로 나와서 사고를 수습했다.

보고도 놀란게 횡단보도에서 할아버지는 정면을 응시하고 가고있었고 맞은편 구청에서 좌회전 하던 차량은 우측을 보면서 좌회전을 했던게 사고원인 같았다.

횡단보도에 사람이 건너면 차량은 일단 정지한 상태에서 가려는 방향에 아무도 없는걸 확인하고 출발해야하는데  운전자 대부분 성격이 급해  빨리 출발하지 않으면 큰일이라도 날것처럼 바로 악셀부터 밟는다.

보행자 신호가 파란불일때 우회전하는 차량도 서행 해서 통과 하는게 아니고 일단 정지 해야 하는게 맞다.

보행자 신호 파란불이 점멸 상태일때 서행해서 통과하는것도 나는 불만스럽다.

보행자 신호가 빨간불이 되야 그제서 움직이는게 맞지않나? 그 운전습관만 바꿔도 한해 교통사고로 발생되는 사회적 비용이 훨씬 줄어들거같은데

한국은 아직도 생명보다는 돈이 우선인 사회인거같다.

내가 국토교통부 장관이 되면

1. 불법주차는 평일 주말 할것없이 무조건 신고제로 신고 당한 차량은 무조건 30회누적시 out
+ 면허정지

2. 음주운전자는 1차적발시 무조건 면허정지 추후 10년간 면허응시 불가
 -면허 합격해도 번호판 빨간색으로 강제  (음주운전 사고시 최소 징역 15년)

3. 신호위반,불법개조 일반인 동영상촬영 제보로 적발되면
벌금 25만원 제보자에게 30% 수당으로 지급

이렇게 바꿔야지

2019년 3월 6일 수요일

vue-cli를 사용하면서 만난 에러

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/scar/workspace/vueex/vuex/node_modules/node-sass/build'
gyp ERR! System Linux 4.18.0-15-generic
gyp ERR! command "/usr/local/bin/node" "/home/scar/workspace/vueex/vuex/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/scar/workspace/vueex/vuex/node_modules/node-sass
gyp ERR! node -v v11.10.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1

vuex/vuex/node_modules/node-sass/build 에 파일을 쓰려고 했는데 권한이 없나보다.

여러가지 해결방법을 찾아보았다.

이상한건 전엔 sudo 를 붙이지 않아도 잘 동작하던 vue-cli 왜? 권한에 대해 계속 이런 에러를뿜는걸까

어쨋든

sudo vue init webpack-simple 에서 css전처리기인 sass는 설치하지않으면 된다.

강좌에서도 N라고설정;;

하 이렇게 또 시간만 가버림 ㅋ


vue-router를 배우면서 보게된 에러

Unknown custom element: <router-link> - did you register the component correctly? For recursive components, make sure to provide the "name" option.


router-link 라는 커스텀 엘리먼트를 알수없다. 너혹시 제대로 컴포넌트 등록한거 맞니?
라고 물어본다.


분명히 router/router.js에
import Vue from 'vue'
import VueRouter from 'vue-router' 라고 임포트했고

main.js에서 이 라우터를 임포트했는데?

어라?

main.js에서

import router from './router.js' 라고 되어있네? 이것도 바꾸고

src/components에 one, two,three vue파일이 없다.

이것도 대충 만들어서 넣어놓고

하니까

잘된다.

라우터파일에서 뷰와 뷰라우터를 임포트하고
라우터 파일에서 라우팅 하고자 하는 vue파일들을 임포트하고
Vue.use(VueRouter) 하고
라우트들을 path,component 지정해주고
VueRouter를 export default로 외부에서 참조할수 있게
해주면 라우터.js에서 해야할일은 다했다.

이제 main.js에서 App.vue 에서 쓸수있게 router.js를 올바르게 임포트 해주고

App.vue 에서
<router-view></roueter-vue> 라고 컴포넌트들이 보여질 자리에 배치해해 주면 끝
!! 아

끝이아니다
사용할 navi.vue에서
각 컴포넌트로 이동할 버튼에
<router-link to='/comp_one'><button>1</button></router-link>를 씌어줘야된다.

중요한건 상대적위치이다.
router.js에서 컴포넌트 밑에있는 vue파일들을 접근하려면
router폴더에서 벗어나기위해 ../ 폴더한칸 위로 올라가서 컴포넌트 폴더쪽으로 접근을 해야한다.

워낙 대충대충인 성격이라 이거 때문에 3시간은 에러메시지 보면서 골치아팠다.

방금 뭔가를 해결했다.

visual studio code

vs code를 사용하면서

처음으로 고구마 천만개를 먹고 물을 안먹은느낌

바로 tab 키가 내가 원하는대로 움직이지 않아서 정말 답답했다.

콘솔에서도 탭을누르면 원래 기존에 node_modules/.bin

여기서 node_까지만 치고 탭을치면 자동완성되는 그런기능이나

에디터에서 4칸? 8칸? 정도 간격을 띄우는 역할을 해줘야되는데

tab을 누르니까 마우스를 쓰지않고

키보드만을 쓰기위한 기능 (다른탭 가선택)기능?뭐이런게 되버려서

이걸어쩌나 싶어 구글링을 해봤더니

나같은사람이 많더라는...

해결방법은 컨트롤 + M을 누르면

바뀐다

하 하루종일 유튜브보고 딴짓하다가

에헴 공부좀해볼까 해서 실상 공부는커녕 이런 작은 불편함 해결해서

뿌듯해하는 모습보면 하 진짜 밥과 공기가 아깝다 ㅠ

2019년 3월 5일 화요일

웹팩

/.node-modules/.bin/webpack-dev-server --open

짜잔

크롬에 걍열려버린다

설정에서 entry가 여러개일때 이런 에러를 뱉는다.

ERROR in chunk m1 [entry]
bundle.js
Conflict: Multiple chunks emit assets to the same filename bundle.js (chunks 0 and 1)

ERROR in chunk m2 [entry]
bundle.js
Conflict: Multiple chunks emit assets to the same filename bundle.js (chunks 0 and 2)


웹펙에서 css파일을 추가하고 webpack.config.js 에서 로더를 설정하다가 만난 에러







ERROR in ./src/css.css (./node_modules/css-loader!./node_modules/style-loader!./node_modules/css-loader!./src/css.css)
Module build failed (from ./node_modules/css-loader/index.js):
Unknown word (5:1)

  3 | // load the styles
  4 | var content = require("!!../node_modules/css-loader/index.js!./css.css");
> 5 | if(typeof content === 'string') content = [[module.id, content, '']];
    | ^
  6 | // Prepare cssTransformation
  7 | var transform;
  8 |

 @ ./src/css.css (./node_modules/style-loader!./node_modules/css-loader!./src/css.css) 4:14-146

before

const path = require('path')
module.exports = {
entry:'./src/entry.js',
output:{
path:path.resolve(__dirname,'dist'),
// path:__dirname+'/dist',
filename:'bundle.js'
},
module:{
rules:[
{
test:/\.css$/,
use:[{loader:"style-loader"},{loader:"css-loader"}]
}
]
}
}


after

const path = require('path')
module.exports = {
entry:'./src/entry.js',
output:{
path:path.resolve(__dirname,'dist'),
// path:__dirname+'/dist',
filename:'bundle.js'
},
module:{
rules:[
{ test: /.scss$/, use: [ "style-loader" , "css-loader" ] }
]
}
}

2019년 3월 1일 금요일

vue 연습

  <body>  
   <div id="app">  
     <p>{{togglehiding}}</p>  
     <p v-if="togglehiding==1"> v if New p tag</p>  
     <p v-else-if="togglehiding==2"> v-else-if -2 New p tag</p>  
     <p v-else-if="togglehiding==3"> v-else-if -3 New p tag</p>  
     <p v-else-if="togglehiding==4"> v-else-if -4 New p tag</p>  
     <p v-else-if="togglehiding==5"> v-else-if -5 New p tag</p>  
     <p>  
     <button @click="togglehiding=!togglehiding">clickme</button>  
     <button @click="plus">plus ++</button>  
     </p>  
   </div>    
   <script type='text/javascript'>  
   var vm = new Vue({  
     el:'#app',  
     data:{  
       message:true,  
       togglehiding:1  
     },  
     methods:{  
       sayhi:function(v){   
         alert(v)  
       },  
       plus:function(){  
         this.togglehiding++  
       }        
     }  
   })  
   </script> 
 
 


커스텀 이벤트

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        h1,h2,h3,h4,h5,h6,div,p,span{font-size:36px; font-family: helvetica; padding:0; margin:0;}
        .comp_root{background:red; color:white;}
        #app{background:orange; padding:25px; color:blue}
    </style>
    <script type="text/javascript" src='../vue.js'>
    export default {
        
    }
    </script>
</head>
<body>
    <div id="app">

      <h1>Parent DIV</h1>     
      <comp v-on:relay='allocate'> </comp>
      <hr>
      <p>{{content1}}</p>
      <hr>
      <p>{{content2}}</p>     

    </div>  

    <template id="temp">
      <div class="comp_root">
        <h2>Component</h2>
        <input v-model='message1'>
        <input v-model='message2'>
        <button v-on:click='send'>Send data</button>
      </div>
    </template>  

</body>    
<script type='text/javascript'>

    var vm = Vue.component('comp', {
      template:'#temp',
      data:function(){
        return{
          message1:'저장된 �"시지1',
          message2:'저장된 �"시지2'
        }
      },
      props:[],
      methods:{
        send:function(){
          this.$emit('relay', this.message1, this.message2)
        },
        allocate:function(v1,v2){
            this.content1 =v1,
            this.content2 =v2
        }
      },
    })

    var vm = new Vue({
      el:'#app',
      data:{
        content1:'컨텐트1',
        content2:'컨텐트2'

      }
    })   
</script>
    

</html>