반응형

자바 진영은 정말 볼때마다 개발자, 기획자들이 작심하고 딴지 거는 느낌을 갖도록 만든 툴의 요소가 한두개가 아니다.
M$가 정말이지 볼수록 혜자임

토드도 가뜩이나 불편한데(계속 시간 지나면 session이 지멋대로 끊기질 않나) 기본 에디터에 주석을 입력하면 아주 그냥 상콤하게 가독성을 망가뜨려준다.
가독성 뿐만 아니라 커서가 도대체 어디에 위치해 있는지 조차 알 수 없게 만들어 편집 자체를 방해한다.

이렇게


이딴건 바퀴벌레 없애듯 그때 그때 발견 즉시 없애야 한다.
에디터에서 빈땅 클릭하고 마우스 우측 눌러 맨 아래쪽 보면 Editor Options... 메뉴를 눌러준다.
뭔노무 메뉴는 또 이리 많은지

나온 메뉴에서 좌측 트리에 보면 Editor가 있다.
그 안에서 Behavior 클릭

우측 하단 Languages의 ... 클릭


하.. 이제 슬슬 딥빡침이 밀려온다. 
거기서 Highlighting탭을 눌러 Comment를 누르고 중앙에 Font style의 Italic에 체크를 풀어준다.


이제서야 비정상의 정상화가 되었다.

툴을 만들어 판매하려면 여러 기능이 들어가는건 좋지만 애시당초 이용자들이 불편함을 느끼지 않게 배려함이 백만번 맞거늘 변태들도 아니고 -_-

 

추가로 사용하다보니 하.. 진짜 가지가지도 이런 야물찬 가지가 또 있을까
이번엔 줄이 너무 길면 HOME 키를 눌러도 맨 앞으로 커서가 이동하지 않는게 확인되었다.
마찬가지로 Options까지 온 다음 Editor의 Behavior의 Word wrap를 체크해주면 

이렇게 짧아진다.

그런데 짧아도 너무 짧다.
Editor < Display로 이동해서 Gutter and Margin의 Position이 80자로 되어 있는걸 자기 컴에 맞게 설정하면 된다.

반응형
Posted by Hippalus
,

반응형

pm2란?
pm2는 Node.js 애플리케이션을 관리하기 위한 프로세스 매니저로 애플리케이션을 백그라운드에서 실행하고, 자동으로 재시작하며, 여러 가지 기능을 제공한다.

설치와 실행
npm install pm2 -g를 실행하면 설치가 가능하다.
반드시 -g로 전역설치를 해야만 한다.
안그러면 command not found오류를 만나게 될 것이야~

기본 실행방법은 아래와 같다.
(참고로 내 node.js 푸시 서버 이름은 pushServer.js다.)

시작
pm2 start pushServer.js

중지
pm2 stop pushServer.js

만약 실행중인 프로그램을 또 실행하려 들면 기특하게도 이런 오류를 내뱉어준다.

pm2를 사용하는 이유는 로그아웃을 해도 pm2로 돌리면 나중에 관리가 되기 때문이다.



자동 재실행
여기가진 좋다.
그.런.데 
내가 만든 푸시 서버 node.js는 node-cron을 사용하여 1분마다 체크 로직이 들어있는데 이상한게 계속 메모리 점유율이 올라갔다. 59M .. 60M .. 71M ...
의심가는 로직을 주석처리 해보고 별짓 다 해봐도 아무리 용을 써도 메모리 점유율이 그대로였다.
node-cron만 사용하면 그랬다.
혹시나 싶어 pm2 대신 그냥 node pushServer.js로 실행한들 동일했다.

그러다 pm2는 자동 재실행하거나 메모리 사이즈가 일정 수치를 넘어서면 자동 재실행 등 다양한 옵션질이 가능하니 이를 활용하기로 했다.

일단 메모리 오버시 자동 재실행을 하기 위해선 별도의 js를 만들어야 한다.
이름은 process.config.js라 지었다.

module.exports = {
    apps: [{
      script: "pushServer.js",
      instances: "max",
      exec_mode: "cluster",
      max_memory_restart: '100M' // 프로세스의 메모리가 100MB에 도달하면 reload 실행
    }]
  };

이 process.config.js를 저장하고 실행을 시킨다.
pm2 start process.config.js   (종료는 pm2 stop process.config.js)

이 경우 인스턴스가 max로 되어 있는데
내 경우 새벽 3시마다 재실행을 하고 싶고 1개의 인스턴스만 실행되어야 하므로 내용을 이렇게 바꿔줬다.
max대신 1, cluster대신 fork

module.exports = {
    apps: [{
      name: "pushServer",
      script: "/node/push/pushServer.js",
      instances: 1,
      exec_mode: "fork",
      cron_restart: '0 3 * * *',
      log: "/node/push/log/pushServer.log",
    }],
}

이후 pm2 start process.config.js를 실행하면 알아서 잘 동작한다.
해당 파일안의 script를 원하는 인스턴스의 개수 만큼 실행해주고 로그 또한 원하는 위치에 만들어준다.

혹시라도 실수로 instances를 이미 max로 실행해서 프로세스가 여러개 생성되었다면 pm2 list를 실행해보고 
pm2 delete all 명령어로 깨끗하게 다 지워버리면 된다.
성형 후 다시 새롭게 시작할 수 있다.

모니터링
실행중인 node.js 프로그램의 상태를 확인하고 싶다면 monit 기능을 이용하면 된다.
pm2 monit
좌측 상단엔 실행중인 프로세스 리스트로 화살표로 이동이 가능하다.
우측 하단에 Metadata에서 앱 이름과 버전 재실행 횟수 실행기간 등등 정보와 
좌측 하단엔 메모리 정보들을 확인 가능하다.

모니터 툴을 빠져나올 땐 ctrl+c로 빠져나오면 된다.
하단에 기본적인 사용 안내가 나와있는것을 확인할 수 있다.

로그파일
pm2로 실행중인 node.js 프로그램에서 console.log를 찍으면 로그가 .pm2/logs 폴더에 파일로 계속 쌓이는데 이것도 로그 파일 사이즈별로 컨트롤이 가능하다.
이거 안해주면 나중에 어마어마한 사이즈의 로그파일을 경험하게 되니 반드시 해주자.

방법은 특이하게 npm i가 아닌 pm2 install pm2-logrotate 이렇게 설치해야 한다.
당연히 pm2는 제일 위에 언급하였듯이 npm으로 설치를 미리 해두어야 한다.


pm2 set pm2-logrotate:max_size 1K 또는 pm2 set pm2-logrotate:max_size 1M 이런식으로 실행 후 pm2 start pushServer.js를 실행하면 이후 console.log로 찍은 로그는 저 사이즈를 넘을 경우 자동으로 새로운 파일이 생성된다.

만약 이것도 싫고 하루마다 파일을 생성하고 싶다면?
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'




끝으로 자동재실행까진 괜찮은데 이 경우 메모리 누수가 발생하는건 아닌가 불안하다.
여기까진 확인을 못해봤다.

반응형
Posted by Hippalus
,

반응형

개발하다 8976 포트를 사용하는 node.js 프로그램을 개발하였는데 
listen이 안되길래 분명히 kill을 해줘도 계속 되살아 났다.

포트 현황을 확인하기 위해 리눅스에서 netstat를 실행해보니 아래처럼 주루룩 나온다.

netstat -tnlp


보다 간단하게 확인하기 위해 grep와 포트번호를 입력하고 실행하면 하나만 나오는게 확인 된다.

netstat -nap | grep :8976

(이때 root권한으로 실행을 해야 프로세스아이디 확인이 된다는 이야기를 본것 같다.)
21688을 실행시키고 있는 부모의 프로세스ID를 찾는 명령언데
ps -o ppid= -p 21688

이걸 실행하니 부모의 프로세스 아이디가 내 경우 11811이었다.

ps -p 11811
이 process id로 조회를 해보면 pm2로 실행되고 있었다.
해당 프로세스 아이디를 kill 11811 해주고 pm2가 실행하던 프로세스 아이디도 kill해주면 증상이 해결된다.


반응형
Posted by Hippalus
,

반응형

그냥 이것 저것 만지다 svn을 다시 한 번 연결해 봤는데 어라? 같은 repository가 두개나 존재하네? 잘못본건가?
하나 삭제해야지 싶어 svn 리스트 중 하나를 삭제하였더니 project explorer에서 svn 연결이 그냥 끊겨버렸다.


project explorer의 파일에서 Team을 선택하면 우측에 이런 메뉴들이 나와야 하는데 덩그러니 몇 안되는 메뉴만 나온다.

아마 연결되어 있던 svn을 삭제했나보다. -_-
아 연결되어 있는 svn이면 경고를 주던가!

다시 연결해야하니 일단 project에서 오른쪽 마우스 클릭 → [Team] → [Share Project]
Use existing repository location 라디오 버튼을 선택하고 next를 하면 다시 살아난다.




반응형
Posted by Hippalus
,

반응형

1편에서 기본적인 설정을 통해 node.js를 이용한  IPFS에 파일 업로드를 해보았다.
이번엔 다운로드다.
이미 많은걸 해두었기에 다운로드는 더 쉽다.

일단 IPFS는 실행해둬야 한다.
윈도우용이든  CMD에서 ipfs daemon 명령어를 이용해서든

앞서 만들었던 d:\Project\NFT 폴더를 계속 이용할 것이다.
appdown.js란 파일을 만들고 그 안에 이렇게 타이핑 해보자

const IPFS = require("ipfs-api");

const ipfs = new IPFS({
    host: "127.0.0.1",
    port: 5001,
    protocol: "http"
});

const hash = "QmfHZXP......VHfHkuntm86xY1vg"; // 앞서 업로드 하고 받아낸 해시값

ipfs.files.get(hash, (err, files) => {
    if (err) {
        console.error("Error while downloading file:", err);
    } else {
        if (files && files.length > 0) {
            console.log("File download success! Result:", files[0].content.toString());
        } else {
            console.error("No files found for the given hash.");
        }
    }
});

주의할 점은 hash부분이다.
업로드 하고 받아낸 해시값을 입력해야 한다.

저장 후 node appdown.js를 실행하면

업로드시 사용한 txt파일 내용을 확인할 수 있다.

반응형

'NFT' 카테고리의 다른 글

NFT 개발하기 - 1편 IPFS에 node.js로 파일 업로드하기  (1) 2024.01.18
Posted by Hippalus
,

반응형

먼저 Controller 생성
Project Explorer의 Java Resources에서 마우스 우측 버튼을 눌러 New를 선택하자.

우측에 나온 메뉴의 Class를 선택

Name에 알맞은 컨트롤러 이름을 지정해주자
.java는 안 적어도 된다.

다음엔 Mapper class
똑같이 해되 이번엔 Interface를 선택한다.

똑같이 이름을 적고 Finish를 선택하면

이렇게 컨트롤러 클래스와 매퍼 클래스가 이클립스에 나타난다.

src쪽으로 이동해 보면
나는 log란 폴더 아래에 두길 원했으므로 log밑에 컨트롤러 클래스와 mapper 폴더 아래에 매퍼 클래스가 위치한게 보인다.


이제 마지막으로 매퍼와 연결되는 xml을 만들어 본다.
src폴더 하위의 resources폴더를 찾아간 후 log 폴더를 만든다.

그리고 log폴더에서 New, File을 선택하여 

아까와 마찬가지로 이름을 정해주되 xml을 붙여주자.
애시당초xml을 선택하는 방법도 있겠지만 난 이 방법을 선호한다.

그럼 이렇게 mapper 클래스에서 호출할 xml이 생성된다.
x아이콘은 파일이 xml 규격을 따르지 않기 때문인데 이건 뭐 내용 채워주면 없어진다.




반응형
Posted by Hippalus
,

반응형

NFT가 뭐고 왜 해야 하고 그딴 시덥잖은 이야긴 다른 글을 참조하시고 바로 실전으로 들어간다.
묻지도 따지지도 말고 일단 IPFS에 파일 올리는것부터 해야 하는데 IPFS를 이용하는 이유는 NFT는 그림, 음원, 비디오 그딴건데 파일을 안 올리면 어쩌겠는가?
그런데 이걸 한 개인의 서버에 올리면?
서버 다운되거나 해킹되면?
그러니 분산 파일 시스템인 IPFS에 올리는거

궁금하면 더보기~

더보기

NFT(Non-Fungible Token)는 고유한 디지털 자산을 나타내는 토큰으로, 블록체인 기술을 기반으로 합니다. IPFS(InterPlanetary File System)는 분산 파일 시스템으로, 파일을 분산된 네트워크에 저장하고 검색할 수 있게 해줍니다. NFT를 만들 때 IPFS를 이용하는 이유는 여러 가지가 있습니다:

분산 저장: IPFS는 파일을 여러 노드에 분산하여 저장하므로 중앙 서버에 의존하지 않습니다. 이는 단일 지점의 장애나 특정 서버의 다운으로 인한 데이터 손실을 방지할 수 있습니다.

내구성과 신뢰성: IPFS는 데이터를 여러 노드에 복제하여 내구성과 신뢰성을 높입니다. 파일이 한 노드에서 손상되거나 사용 불가능해지더라도 여러 다른 노드에서 해당 파일을 찾아 사용할 수 있습니다.

비용 효율성: IPFS를 사용하면 파일을 저장하고 검색하는 데 필요한 비용을 최적화할 수 있습니다. 중앙화된 서버를 운영하고 유지하는 데 필요한 비용을 줄일 수 있습니다.

방대한 용량과 확장성: IPFS는 대용량 파일을 효과적으로 처리할 수 있으며, 필요에 따라 확장될 수 있습니다. 블록체인이나 중앙 서버에서 처리하기 어려운 큰 용량의 미디어 파일을 다룰 수 있습니다.

안전성과 보안: IPFS는 데이터를 암호화하고 해시값을 통해 무결성을 검증하여 안전성과 보안을 강화합니다. 블록체인과 결합하여 높은 수준의 보안을 제공합니다.

이러한 이유로, NFT를 만들 때 IPFS를 이용하여 디지털 자산을 저장하고 관리하는 것이 일반적으로 권장됩니다. 이를 통해 더 분산화되고 안전한 환경에서 NFT를 다룰 수 있습니다.

IPFS를 다운받기 위해 공홈에 가보면 
https://docs.ipfs.tech/install/ipfs-desktop/#windows

요런 다운로드 페이지 안내 문구를 발견할 수 있다. 
눌러보면 아래 링크로 이동되는데
https://github.com/ipfs/ipfs-desktop/releases
웃기는건 window용 exe가 없다.

Show all 17 assets를 눌러야 아래처럼 윈도우용 IPFS 인스톨 파일을 확인할 수 있다. -_-

다운받고 실행하면 설치할 위치 선택해주고

설치완료되면 실행 가능하다.

기본 설치 경로로 설치하면 IPFS.exe파일은 아래 경로에 들어가 있다.
C:\Program Files\IPFS Desktop\resources\app.asar.unpacked\node_modules\kubo\kubo

이게 왜 중요하냐면
윈도우용은 설치 후 실행되는 프로그램이 daemon의 일을 맡아 하지만 어떤 책에 보면 이런 설명 조차 없이 daemon을 실행하라고만 해서 한참을 헤매게 만들기 때문이다.

설치 후 IPFS를 실행해보면 저런 화면이 나오는데 상태와 파일 등등 좌측 메뉴를 눌러보면 뭐 대충 잘 동작하는것 같다.

만약 웹브라우저로 확인해보고 싶다면
http://127.0.0.1:5001/webui
이렇게 해도 동일한 화면 확인이 가능하다.

별건으로 IPFS를 어디서든 동작하게 하려면 환경변수에 IPFS를 등록해야 하는데

아까 설치한 경로를 등록해주면 된다.
C:\Program Files\IPFS Desktop\resources\app.asar.unpacked\node_modules\kubo\kubo

그리고 실행된 IPFS Desktop은 트레이 아이콘으로 동작중인걸 확인할 수 있다.

눌러보면 재시작, 중지 등 추가 작업이 가능하다.

여기까지 IPFS를 설치하였다면 이제 node.js로 IPFS에 파일 업로드를 해보겠다.
node와 npm설치하는 방법은 다른 구글링하여 블로그를 참조하기 바란다.
엄청 쉽다. (https://nodejs.org/ko 여기서 다운받고 설치하면 그만이다.)

IPFS를 설치하면 포트가 5001로 동작하고 파일 업로드시 필요한 모듈은 ipfs-api, fs, bl 정도이다.
일단 프로젝트의 위치를 지정하겠다.
나는 D:\Project\NFT로 지정하였다.

이제 cmd를 눌러 D:\로 이동 후 CD Project, CD NFT를 입력하여 위치를 이동시키자.
모듈 설치하자.  
npm i ipfs-api
npm i fs
npm i bl
각각의 모듈이 무슨 일을 하는지는 chatgpt에게 물어보라. ㅎㅎ

vscode를 실행하여 아래 코드를 타이핑 후 app.js로 저장하자.
당연히 위치는 D:\Project\NFT다.

const IPFS = require("ipfs-api");
const fs = require("fs");
const bl = require('bl'); // 'bl' 모듈을 추가


const ipfs = new IPFS({
    host: "127.0.0.1",
    port: 5001,
    protocol: "http"
});

const file = fs.readFileSync("./test.txt");
const fileBuffer = bl(new Buffer.from(file)); // 'bl' 모듈로 Buffer를 래핑

ipfs.files.add(fileBuffer, (err, result) => {
    if (err) {
        console.error(err);
    } else {
        console.log("File add success! result :", result[0].hash);
    }
});

이제 node로 만든 app.js를 아래처럼 실행하면 성공 메세지와 함께 암호문자열을 확인 가능할것이다.
참고로 업로드할 파일인 test.txt파일은 D:\Project\NFT에 test.txt 파일을 미리 만들어 두자

result 자체를 찍어보면 다음과 같이 나온다.
  {
    path: '******NVAiMNRcGu6x1AwQ4c5SBnJMH',
    hash: '******NVAiMNRcGu6x1AwQ4c5SBnJMH',
    size: 6
  }
path는 경로 cid는 컨텐츠 식별자 size는 파일 용량이다. path와 cid가 동일함을 알 수 있다.

만약 아래처럼 오류가 난다면 IPFS 프로그램이 중지되었기 때문이다.
IPFS를 실행해둔 상태에서 하길 바란다.
(만약 난 좀 있어보이고 싶다란 사람이라면 cmd창에서 ipfs daemon이라 실행하면 동일한 효과를 볼 수 있다.)

한가지 주의해야 할 점은 이후 node.js로 IPFS로 파일을 업로드 시켜볼 예정인데 이 파일 메뉴에 내가 올린 파일이 바로 나오지 않는다란 점이다.

아까 node.js로 업로드 후 성공 메세지로 받았던 문자열을 Browse에 입력하고 검색하면 확인이 가능하다.
File add success! result : Q *************....H

이렇게 잘 나온다.

만약 빈 파일을 업로드했다면 이렇게 나오니 당황하지 말자.

반응형

'NFT' 카테고리의 다른 글

NFT 개발하기 - 2편 IPFS에 node.js로 파일 다운로드하기  (0) 2024.01.19
Posted by Hippalus
,

반응형

정릉시장에 줄서서 먹는다는 호떡집인 남기남 호떡이 있다길래 차를 몰고 정릉시장으로 고고하였다.
호떡을 남기남? (아재 아재~~)

위치를 몰랐는데 정릉시장 공영주차장으로 가는길에 남기남 호떡 집이 있었다.
그런데 줄이 없넹? 춥지도 않은 날인데... 
참고로 주차장에서 한 50m 정도 된다.

호떡 세개를 샀다.
각각 1,500원이었는데 맛은 뭐 평범했다.
맛보다 호떡 하나에 1,500원이라니
하.... 코로나와 러우전쟁 때문에 세상이 이상해져 버렸다.

굳이 멀리서 줄서가며 먹을만한 그런집은 아니었다.

신포도겠지만 사라다 빵과 꽈배기가 맛있어 보였다.

호떡 한개씩 취식하고 발걸음을 정릉 시장 안쪽으로 옮겼다.
시장 여기저기 한바꾸 돌다 보니 엔틱한 이발관이 시야에 들어와 한컷 담아봤다.
왠지 물조리개와 바리깡이 있을 법한 외관이다.

시장에서 가장 마음에 들던 건물이었다.
여기저기 아기자기한 카페들도 있고 하천도 흐르고
여름에 와서 맥주 한 잔 하기 괜찮은 분위기였다.

시장 자체는 다른 시장들에 비해 좀 작은 느낌.
사진은 안 찍었지만 중간쯤 튀김집 색이 아주 쌧노란것이.. 하마터면 지갑 열 뻔 했다.

새로운 그리고 간만의 재래시장 방문이라 시장 투어 자체는 뭐 쏘쏘~

다만 여기 주차가 정말 쉣이다.
공영주차장이랍시고 하나 있는데 주차가능 대수가 15대 정도 되려나? 그중에서 장애인도 1대
유료주차장인데 이중주차에 들어오는 차 나가려는 차 뒤엉키고 난리다.
저렇게 하꼬방만한 주차장을 공영이랍시고 만들어 두고 참 불편하다.
그런데도 재래시장 방문해주세요 뿌잉뿌잉, 주말엔 마트 의무휴일인거 아시죠?
이딴 정책은 정말이지 한심하기 짝이 없다.

보여주기식 정책에 효과도 없는 대형마트 일요일 의무휴업 폐지하는 정치인 나오면 무족헌~ 뽑아준다.
효과 없는거 공식 확인도 됐는데 표 눈치 보느라 생명 연장하는 짓은 이젠 좀 그만둘 때도 되지 않았는가

반응형
Posted by Hippalus
,

반응형

아드님이 호떡이 드시고 싶으시단다.
유명한 호떡집 남기남이 정릉시장에 있다하여 차를 몰고 정릉시장에 방문하였다.
시장을 둘러보니 시장기가 돌아 사전에 조사한 숯불 닭갈비냐 돈까스냐 서울불고기 집이냐 고민하다 서울 불고기에서 돼지갈비를 먹기로 하여 방문.

정릉시장 초입에 있는 서울 불고기집은 가정 양옥을 개조한 집이다.

가격은 대충 이러하다.

육회는 가격이 좀 나가고 돼지갈비가 300g에 15,000원
된장찌개는 2,000원 되신다.

아드님께선 돼지갈비를 드실 땐 항상 된장찌개 두부를 건져 밥과 함께 드신다.
나와는 식성이 정 반대다.
돈 아깝게시리 돈을 주고 된장찌개를 굳이?

돼지갈비 3인분을 주문하여 나왔는데 대부분 뼈가 붙어 있었다.
뼈 있는거 싫은데 -_- (아마 뼈 없는걸로만 달라 요청하면 가능할것이다. 대부분의 돼지갈비 집들이 그러하니)
고기도 약간 다른 집들과는 달랐다.
얇다고 해야 하나.. 그렇다고 중량이 적진 않으니 이점은 그저 취향의 차이

양배추 소스도 나오고

된장찌개도 나왔다.
주문 할 때 "두부 좀..."이라 말씀드리니 센스 있으시게 "아~ 많이요~ ^^" 이래주신다.
정말 두부가 많이 들어 있었다.
약간 아쉬운건 찌개 두부는 아닌것 같았... 

여하튼 고기를 얹고

굽고

구웠다.

창 안으로 햇빛이 비춰 먹음직스럽길래 사진도 여러장 찍었다.
사실 블로그 하려고 찍은건 아니었는데.
찍다보니 블로그에 올려야겠기에 더 찍었다.

전체적인 상차림은 대략 이렇다.
사진에 짤려 안 보이는데 마늘과 쌈장 그리고 동치미가 접시에 조금 나온다.

정말 솔직하게 식후감을 말하자면 막 맛집 그런건 아니다. 평범한 집이다.

아쉬웠던 점은 좁은 방에 테이블이 4개인가 있었는데 그 중 3테이블에서 고기를 굽느라 방안에 연기가 한 가득이었다.
일행은 눈이 아플 지경이었다 했다.
식사를 다 끝낼 때 쯤에서야 환풍기를 돌려주셨고 그래도 안되어서 창문도 열어주셔서... -_-a
1년 동안 마실 미세먼지를 다 마신것 같다.

정릉시장 구경갈 겸 돼지갈비로 식사하실 분은 방문하셔도 괜찮다.
서울페이(제로페이)가맹점이라 서울페이가 있는 분이라면 이용하시길
서울페이 되는집인데 막상 찾아가면 결제 못하는 집들 상당수 있는데 이 집은 된다.

위치와 정보는 네이버~
https://map.naver.com/p/search/%EC%A0%95%EB%A6%89%EC%8B%9C%EC%9E%A5%20%EC%84%9C%EC%9A%B8%EB%B6%88%EA%B3%A0%EA%B8%B0/place/38341807?placePath=?entry=pll&from=nx&fromNxList=true&searchType=place&c=15.00,0,0,0,dh

반응형
Posted by Hippalus
,

반응형

어지간해선 허경영이란 사람을 모르는 사람은 없을것이다.
매번 낙선을 거듭하지만 꾸준하게 대선에 출마하고 그때마다 내놓는 공약이 허황된 공약이라며 사람들에게 놀림을 넘어 손가락질을 받기만 했던 그의 공약.

무서운건 한심한건 그중 상당수 공약은 현실화가 되었다.
토요휴무제, 65세 이상 월 70만원 노인수당, 3천만원 출산수당, 1억원 결혼수당, 청년취업지원금 등

난 허경영의 공약을 보며 왠지 생텍쥐페리의 어린왕자의 한 에피소드가 떠오른다.

터키의 한 천문학자가 소행성 B612를 발견하고, 이를 학계에 보고했지만, 끝내 사실로 인정받지 못한다.
당시 천문학자가 입고 있었던 터키의 전통 복식 때문이었다.
나중에 그는 양복을 입고 다시 한 번 그 별의 좌표를 증명했고, 세계천문학회는 그제서야 그의 발견을 인정했다.

만약 허경영이 아닌 당시 유력했던 거물급 정치인이 발표하였다면 군중은 어떻게 반응했을까 싶다.

요즘 발표되는 정책들은 청년을 위한 정책들로 대홍수를 이룬다.
과연 이 땅의 청년들만 고되고 암울하고 부족한 것일까 물어보고 싶다.
길거리 아무 누구나 붙잡고 요즘 힘드시죠? 라 물으면 백이면 이백 모두 "아 힘들어요 ㅜㅜ" 라 답하지 않을 사람이 있겠는가.

그럼에도 불구하고 왜 청년들에게 온갖 복지와 지원 정책이 쏟아지는가
다 인구와 관련되어 있다.

어차피 선거는 표로 결정되는 구조이니 당연히 MZ세대와 그의 부모 세대의 인구가 차지하는 비율을 보면 납득이 간다.

표는 그렇다 치고 미래를 위해 생각해보자.

요즘 인구 소멸이 사회적 문제로 거론되고 있다.
청년들이 결혼과 출산을 꺼려하는데 그 이유는 과열경쟁으로 쓴맛을 본 청년들이 똑같은 삶을 넘겨주기 싫어하기 때문이다.
상황이 이러하니 정부에선 기껏 내놓은 정책이 청년들에게 돈 몇 푼 쥐어주고 영화 문화 생활 하라 등떠미는 수준인데 그렇다 한들 그들이 안 하던 결혼을 하고 안하던 출산을 하겠는가?
대가리를 굴려도 최소한 상대가 몇년은 속을 만큼 대가리를 굴려 정책을 내놔야지 
이따위 정책들은 내놔봐야 체리피커 성격의 정책 딱 그 수준일 뿐이다.

그럼 어쩌자란 말인가?
허경영처럼 당시엔 허황된 급진적인 정책일지라도 방향타를 꺾어 버리지 않고선 답이 없다.
한국인의 평범한 삶의 궤적은 알다시피 태어나서 어린이집 다니다 유치원 그리고 초중고 내내 학원으로 절어 살다 대학가고 초봉 월 2~300이냐 월 4~500이냐로 인생이 결정난다.
한 번 중소로 시작하면 계속 중소고 한 번 공기업, 대기업으로 시작하면 계속 안정된(?) 삶이 이어진다.
그러니 경쟁에 내몰리고 밤 10시 11시까지 학원질 하다 시장에 나온 애들은 현실이 냉혹하다 못해 불공정해 보인다.
본전 생각이 간절해진다.
난 똑똑한데 저 무능한 자들은 윗자리에 버티며 월급이나 축내고 부당한 지시를 내린다 착각한다.
그러니 헛된 공정을 부르짖고 성별 갈등은 기본이고 세대 간 갈등이 발생한다. 

결국 문제의 시발점인 사교육 철폐 말고는 답이 없다.
사교육에 부모들은 허리가 거꾸로 접히고(최근 발표된 기술 폴더폰은 거꾸로 뒤집힌다더라 기술의 발전이 놀랍도록 닮았다.) 아이들은 경쟁에 올인하고 돈 버는건 불안을 부추기는 사교육 시장이니 돈의 흐름이 자유롭지 못하다.
그렇게 개고생을 한들 한정된 고급 일자리는 어차피 뱁새들에겐 무지개 끝 황금단지일 뿐이다.

그럼 사교육 없이 고급 일자리는 어떻게 가란 말인가?
답은 간단하다.
계층간 이동 사다리를 걷어 차버리면 된다.
너나 나 말고 쟤가 가면 된다.
대신 쟤가 너와 나를 먹여 살리면 된다.
(어쩌면 너가 쟤일수도 있겠다.)
저~ 유럽의 어느 먼 나라처럼 세금은 많이 걷고 어차피 고급 일자리는 엘리트로 채워지고 있는 그 나라처럼 말이다.
다들 가고싶어 하는 삼성도 천재 1명이 10만명 먹여 살린다하지 않았던가?

하지만 사교육의 꿀맛을 본 자들은 이런저런 이유를 들먹이며 절대 동의하지 않는다.
그러니 다함께 인구 소멸을 받아들이자!~

끝으로 
인구절벽을 넘어 인구 소멸이 현실화 되고 있는 요즘 앞서 현실화 되었던 그의 허황된 공약들 중 유력한 공약은
국회의원 100명 감축, 징병제 폐지 및 모병제 전환, 경기도 전체를 서울로 편입, 충남·충북강원을 합쳐 ‘충강도’, 경북·전북을 합쳐 ‘경전도’ 전남·경남을 합쳐 ‘전경도’로의 통합 처럼 인구 소멸로 인해 자연스럽게 현실화 될 것이 유력해 보인다.

반응형
Posted by Hippalus
,