SPA 구조로 만든다면 Main Windows에서 부르는 HTML 파일을 변경할 필요도 없겠지만 간혹 Main Windows에서 HTML 파일을 변경할 일이 생기긴 하더군요

그래서 찾아봤습니다.

물론 데이터를 넘기고 하려면 iprRenderer 등을 써야 하겠지만 순수하게 HTML 파일만 load하는 방법입니다.

1. 메인 HTML 파일

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';">
    <meta http-equiv="X-Content-Security-Policy" content="script-src 'self' 'unsafe-inline';">
    <script src="./renderer.js"></script>
    <script src="./test.js"></script>
    <title></title>
  </head>
  <body>
    <h1>PAGE1</h1>
    <button onclick="test();">test</button>
  </body>
</html>

2. test.js 파일

var remote = require('electron').remote;

function test(){
    remote.getCurrentWindow().loadFile('./index2.html');
}

 

remote.getCurrentWindow().loadFile(파일명)
만 넣으면 되는거였네요..

블로그 이미지

ligilo

행복한 하루 되세요~

,


이번달 한빛출판사의 '나는 리뷰어다' 프로그램에서 선정된 도서는 <모던 자바 인 액션> 입니다.

전반적으로 보면 자바 8, 9, 10 버전의 특징을 잘 집어준 책이라고 할 수 있습니다.

책 구성은 다음과 같습니다.

총 6개 파트, 21개 챕터로 구성되어 있습니다.

첫번째 파트인 기초 파트에서는 자바의 발전과 흐름, 기본적인 자바 8~10 버전의 특징을 얘기하고 있습니다.

두번째 파트인 함수형 데이터 처리에서는 스트림과 병렬 데이터 처리에 대한 얘기를 하고 있습니다.

세번째 파트인 스트림과 람다를 이용한 효과적 프로그래밍에서는 컬렉션, 리팩터링, 테스팅, 디버깅, 도메인 전용 언어에 대해 얘기하고 있습니다.

네번째 파트인 매일 자바와 함께에서는 NullPointerException을 줄일 수 있는 optional 클래스와 더불어 개선된 몇가지 API, 메서드 등을 소개하고 있습니다.

다섯번째 파트인 개선된 자바 동시성에서는 비동기 프로그래밍과 리액티브 프로그래밍에 대해 얘기하고 있습니다.

여섯번째 파트인 함수형 프로그래밍과 자바 친화의 미래에서는 함수형 프로그래밍과 자바의 미래에 대해 얘기하고 있습니다.


저 역시도 10년에 가까운 시간동안 다른일을 하면서도 개발을 꾸준히 해오고 있습니다만 자바라는 언어에는 그리 익숙하지 않습니다. 실제 자바를 이용한 상품화는 해본적도 없습니다.

저같이 자바 문법조차 정확히 모르는 분들께 추천드리고 싶은 책은 아닙니다. 분명 이 책은 자바 기본서는 아니라는 생각이 듭니다. 그럼에도 불구하고 자바 문법을 한번 익히고 이 책을 다시한번 보고싶다는 생각이 들 정도로 어느정도 기초 지식만 있다면 꼭 추천드리고 싶은 책입니다. 더불어 이 책을 보고 현재 사용중인 코드를 다시 정리해본다면 많은 개선을 가져올 수 있지 않을까 싶습니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

이번달 한빛출판사의 '나는 리뷰어다' 프로그램에서 선정된 도서는 <모던 스타트업> 입니다.

제목은 '모던 스타트업'이지만 팀 프로젝트부터 대기업까지 다양하게 사용할 수 있는 여러가지 서비스를 소개하고 있습니다. 다만, 스타트업의 경우 생산성을 극대화 시켜야 하기 때문에 이 때 사용하기 좋은 서비스들을 소개한다는 의미 정도로 받아들이시면 될 것 같습니다.

책의 구성은 총 5개 파트 21개의 챕터로 이루어져 있습니다. 즉 21개의 서비스를 소개하고 있는거죠

조직관리, 프로젝트관리, 인프라관리, 서비스 운영, 그로스해킹 다섯개 파트에서 다양한 서비스를 소개하고 있습니다.

각 챕터의 구성은 매우 간단합니다.
소개, 주요기능, 주의사항, 더 고민하기 4개의 영역으로 구성되어 있습니다.

각 서비스별로 많은 내용을 담고 있지는 않습니다. 정말 어떤 일을 할 때 어떤 서비스를 사용할 수 있겠다 정도의 소개서입니다. 서비스별로 구체적인 내용을 공부하고자 하면 서비스별 각각 도서를 찾아봐야 합니다. 그도 그럴것이 이 책에서 소개하는 서비스 하나하나가 도서 한권이 넘는 분량의 해설서로 이미 시중에 너무 많이 나와있습니다.

이 책을 통해서 서비스의 모든것을 알겠다라는 마음가짐으로 읽었다가는 매우 크게 실망할수밖에 없습니다. 스타트업에서 아니면 팀 프로젝트에서 어떤 서비스를 사용하면 유용하겠구나 정도를 알고자 하는 마음가짐으로 보고 사용할 서비스를 선정해 각각의 서비스에 대해서는 전문적인 내용을 찾아보시는게 맞지 않을까 싶습니다.

전문적인 내용을 포함하고 있지는 않지만 생산성의 극대화라는 목표에 적절한 서비스를 찾을 수 있게 도와주는 책이라는 면에 높은 점수를 주고 싶은 책입니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

electron에서 childbrowser 띄울때 에러


에러 : cannot destructure property 'BrowserWindow' of 'require(...).remote' as it is undefined.


렌더러 프로세스에서 버튼 클릭 시 창을 띄워야 하는거라

const { BrowserWindow } = require('electron').remote 을 사용했다.

(main 프로세스에서 띄울꺼면 require('electron')만 사용하면 된다.


그런데 위와 같은 에러가 뜨더라...


엄청 간단한 문제였음

main.js 파일에서 만들어주는 메인 브로우저윈도우에서

webPreferences에

enableRemoteModule: true을 넣어주면 된다

  const mainWindow = new BrowserWindow({

    width: 800,

    height: 600,

    webPreferences: {

      nodeIntegration : true,

      enableRemoteModule: true

    },

    show: false

  });


정리는 추후에...

블로그 이미지

ligilo

행복한 하루 되세요~

,

이미 개발자 생활을 접은지도 3년이 지났습니다.

하지만 보안 일을 하면서 그때그때 필요한 프로그램은 만들어 사용하고 있는데요

이번에 점검 툴을 하나 만들면서 팀원들도 같이 사용하기 위해

electron과 sqlite3를 이용한 앱을 하나 만들었습니다.

electron을 설치하고 sqlite3를 설치하고 드디어 npm start!!!

cannot find module sqlite3

제가 캡쳐를 안해놔서 정확히 이 문구였는지 경로가 포함되었는지 기억은 나지 않습니다만

대략 이런 내용이었습니다.

온갖 방법을 찾아서 개발 버전에서 npm start로 해서 실행은 시켰습니다.

실행시키고 나서 팀원들에게 배포하려고 npm run deploy를 실행!!

또다시 저놈이 나타났습니다.

또한번 이리저리 찾아 헤맸습니다.

드디어 방법을 찾았네요

윈도우 버전은 visual studio에서 배포하면 큰 문제가 없는 것 같습니다.

하지만 저는 visual studio code에서 작업을 하고 있다보니 빌드에 필요한 환경이 만들어지지 않았던 것 같습니다.

그래서 빌드에 필요한 툴을 제공해주는 패키지를 설치해야 합니다.

npm install -g windows-build-tools

이걸 설치하고 빌드를 하니 여전히 모듈을 못불러 옵니다.

제가 npm run deploy를 하기 전에 package.json에 있는 dependencies를 devdependencies로 변경했거든요..

그걸 다시한번 복사해서 dependencies도 만들어 줍니다. 단, electron-builder는 빼고...

그럼 다 됐습니다.

실행!!

실행이 됩니다.

cannot find module도 뜨지 않습니다.

다만, db 파일을 못찾습니다.

db 파일의 경로가 상대경로로 해도 바뀌네요

이렇게 넣어줍니다.

const path = require('path'); 
const dbFile = path.join(__dirname, path.sep+'database.db').replace(path.sep+'app.asar', '');

여기까지는 아직 테스트가 덜됐습니다.

일단 두서없이 써놨는데요(잊어먹을까봐)

일단 정리가 안된 문서지만 공개합니다.

오후에 다시 정리할께요~

 

 

참고.

medium.com/@wdlcho/electron-sqlite-%EC%95%B1-%EB%A7%8C%EB%93%A4%EA%B8%B0-4ab81845f9f4

 

Electron+Sqlite 앱 만들기

참고글

medium.com

ccambo.gitlab.io/2017/04/18/node-gyp%20%EB%B9%8C%EB%93%9C%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0/

블로그 이미지

ligilo

행복한 하루 되세요~

,


이번달 한빛출판사의 '나는 리뷰어다' 프로그램에서 선정된 도서는 <매니징 쿠버네티스> 입니다.

이 책에 대해 한줄평을 하자면 '쿠버네티스의 모든것을 담고있는 책'으로 표현할 수 있을 것 같습니다.

211페이지밖에 안되는 얇은 책입니다만 '모든것'을 담고 있다고 얘기할 정도로 많은 내용이 실려 있습니다.

책의 구성은 다음과 같습니다.

CHAPTER 1. 쿠버네티스란
CHAPTER 2. 쿠버네티스 살펴보기
CHAPTER 3. 아키텍처
CHAPTER 4. 쿠버네티스 API 서버
CHAPTER 5. 스케줄러
CHAPTER 6. 쿠버네티스 설치
CHAPTER 7. 인증과 사용자 관리
CHAPTER 8. 인가
CHAPTER 9. 승인 제어
CHAPTER 10. 네트워킹
CHAPTER 11. 모니터링
CHAPTER 12. 재해복구
CHAPTER 13. 쿠버네티스 확장하기

책의 초입에서 얘기하듯 이 책은 쿠버네티스를 운영하는 사람이나 아키텍처와 설치 및 유지방법에 대한 깊은 지식을 얻고자 하는 사람을 위한 책입니다.

그렇기 때문에 모든 것을 설명해주고 어쩌면 재미없게 느낄수도 있습니다.

분명 쿠버네티스 초보자를 위한 책은 절대로 아닙니다. 많은 내용이 이론적인 내용으로 이루어져 있으며 쿠버네티스를 정말 맛만 보긴 했습니다만 기본적인 쿠버네티스에서 사용하는 용어 정도는 알고 있는 저 조차도 쉽지 않은 내용이 대부분이었습니다.

하지만 서비스 환경 변화의 필요성을 느끼든 아니면 쿠버네티스 도입을 검토하라는 지시가 내려왔든 실제로 환경을 구성할 필요가 있는 분이라면 그리고 사용자 관점이 아닌 운영자 관점에서 깊이있게 알아볼 필요가 있는 분이라면 이 책을 보고 상세히 쉽게 얘기하고 있는 다른 도서도 참고하는 것도 괜찮을 것 같다는 생각이 듭니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

이번달 한빛출판사의 '나는 리뷰어다' 프로그램에서 선정된 도서는 <만들면서 배우는 워드프레스> 입니다.

이 책을 간단히 설명드리자면 개발자 없이 사이트를 만들 수 있도록 도와주는 매뉴얼 정도로 설명할 수 있을 것 같습니다.

물론 HTML이나 스크립트 등을 알면 훨씬 고급 기술을 사용할 수 있겠지만 그렇지 않더라도 쇼핑몰 등을 만들어서 실제 결제까지 정상적으로 이루어지도록 할 수 있고 소개되지 않은 수많은 플러그인을 사용해서 아주 다양한 사이트를 만들 수 있을 것으로 보입니다.

책의 구성은 다음과 같습니다.

PART 01. 최강의 오픈소스 콘텐트 관리 시스템, 워드프레스

여기서는 워드프레스에 대한 소개부터 설치까지 나와 있는데요 이 책은 카페24를 기반으로 설명하고 있습니다. 큰 비용은 아니지만 무료 서비스가 필요하신 분들께는 닷홈의 무료 호스팅을 추천합니다. 닷홈의 무료호스팅을 사용해도 책의 내용을 따라 하는데는 별 지장이 없습니다.(다만, 용량 제약이 있어 워드프레스 업그레이드는 하지 않는게 좋습니다.)

PART 02. 워드프레스 기본기 다지기

이 챕터는 가장 기본적인 페이지와 콘텐츠를 만들고 테마와 테마 안의 사용자 정의를 이용해 간단하게 각 영역을 만들어 내는 과정을 안내하고 있습니다. 마지막에서는 마인드맵을 그려볼 수 있도록 새로운 프로그램을 소개하고 있습니다.
이 챕터까지만 해도 가장 기본적인 웹사이트의 모습은 보실 수 있습니다.

PART 03. 워드프레스에 날개를 달아주는 기술

이 챕터에서 정말 많은 내용이 나오고 응용해볼만한 것들이 담겨 있습니다. 이 챕터는 대부분 워드프레스의 플러그인 사용법을 안내하고 있는데요 특히 SEO나 보안 등 웹사이트를 만들면서 중요한 요소들에 대한 대표적인 플러그인들을 소개하고 있어 여기서 개개인 취향에 맞는 다양한 플러그인을 응용해서 사용해볼 수도 있습니다.

PART 04. 본격 리얼 웹사이트 제작 프로젝트

이 챕터는 회사 웹사이트, 쇼핑몰, 웹진, 포트폴리오 4개의 사이트를 만들어보면서 PART 03에서 배우지 못한 플러그인을 배워보기도 하고 실제 사이트에 접목시킬 수 있는 방법을 생각해볼 수 있는 챕터입니다. 이 챕터 수준의 사이트를 혼자서 만들 수 있다면 웬만한 사이트는 응용해서 만들 수 있지 않을까 싶습니다.


책은 제목에서처럼 '만들면서 배우는' 책이기 때문에 너무나 쉽게 할 수 있습니다. 물론 그동안 워드프레스로 만든 사이트를 많이 봐 왔고 수시로 점검을 했기 때문에 더욱 쉽게 할 수 있었을지 모르겠습니다만 내용을 보면 컴퓨터나 개발에 대한 지식이 없어도 너무 쉽게 따라할 수 있는 수준이었습니다.

다만, 아쉬운 점이 있다면 카페24에서 제공해주는 메일 서비스가 아닌 외부 메일을  사용하는 방법이나 DB를 별도로 이용하는 방법, 별도 서버에 구축하는 방법 등 호스팅 업체를 이용하지 않는 방법에 대해서는 전혀 안내되지 않아 아쉬움이 남았습니다.

전반적으로 개발자를 고용하기에는 부담스럽고 당장 사이트는 필요한 분들께는 정말 강추하고 싶은 도서입니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

이 블로그를 구독하시는 분은 없겠지만 글을 많이 보신 분은 알지도 모르겠습니다만

저는 매월 한빛미디어의 '나는 리뷰어다'라는 프로그램을 통해

한권의 IT 관련 도서에 대한 리뷰를 작성하고 있습니다.

이번달에 선정된 도서는 리뷰를 곧 남기겠지만 '만들면서 배우는 워드프레스'라는 책인데요 처음에 WP를 어떻게든 내부 구축을 해보려다 요즘 이것저것 설치를 해댔더니 도커와 VMWare과 Virtual Box까지 설치하고 지우기를 반복했더니 뭔가 네트웍이 꼬인듯 해서 이건 나중에 하기로 하고 무료 도메인인 닷홈의 무료호스팅을 이용하여 WP 공부를 하고 있습니다.

이 와중에 메일 발송이 되어야 하는 플러그인에서 메일이 날라가지 않아 검색을 해보니 닷홈의 SMTP서비스를 이용하려면 약간의 비용이 들어가는 듯 합니다.

그래서 굳이 연습과정에서 그렇게까지 할 필요는 없을 것 같아서 그리고 어차피 WP로 서비스를 하더라도 원래 사용하는 이메일의 SMTP 서비스를 이용하게 될 듯 해서 플러그인을 찾아봤습니다.

Easy WP SMTP 라는 플러그인인데요

설치하고 활성화를 하게 되면 '설정' 메뉴에 'Easy WP SMTP' 메뉴가 생깁니다.

이 메뉴에 들어가시면 다음과 같이 설정 화면이 뜨게 되는데요

'From Email Address'와 'From Name'은 필수항목인 듯 합니다.

당연히 가장 중요한건 SMTP 서버 설정이겠죠..

이건 각 메일 서비스마다 안내가 되어 있구요

직접 SMTP 서버를 만드셨다면 당연히 알고 계실테니 넘어가겠습니다.

(외부 메일을 사용하는 경우 메일 담당부서, 직접 구축한 경우 인프라 담당 부서에 문의하세요~)

SMTP 설정이 모두 완료되면 다음과 같이 'Setting Saved'가 나타나게 됩니다.

이렇게 나타나면 정상적으로 설정이 완료된거구요

이제 테스트를 해봐야겠죠

아래처럼 Successfully가 뜨면 정상적으로 메일이 전송됐을테니 확인해보시면 되구요

Error가 발생했다면 설정을 다시한번 확인하시기 바랍니다.


블로그 이미지

ligilo

행복한 하루 되세요~

,

firebase init 과정에서 에러 발생 해결방안입니다.

발생한 에러는 다음과 같습니다.

Error: Cloud resource location is not set for this project but the operation you are attempting to perform in Cloud Firestore requires it. Please see this documentation for more details: https://firebase.google.com/docs/projects/locations

이건 firebase에서 Google CloudPlatform(GCP) 리소스 위치를 설정하지 않아서 발생하는 에러입니다.

이 문제를 해결하기 위해서는
프로젝트 설정 > 일반 > Google CloudPlatform(GCP) 리소스 위치
를 보시면 '아직 선택하지 않음'이라는 문구가 나오게 됩니다.

여기에서 GCP 리소스의 위치를 설정해주시면 되는데요
리소스 위치는 firebase 문서에서 확인하실 수 있습니다.
(https://firebase.google.com/docs/projects/locations?authuser=0#default-cloud-location)

 

프로젝트의 위치 선택  |  Firebase

위치 설정이 필요한 Firebase 제품은 다음과 같습니다. Firebase용 Google 애널리틱스 — Firebase 프로젝트를 새로 만들면 애널리틱스 보고 위치를 선택하라는 메시지가 표시됩니다. 이 위치는 조직의 국가 또는 리전을 나타냅니다. 즉, 애널리틱스 위치를 통해 수익 보고서의 통화를 설정합니다. 참고: 애널리틱스 보고 위치는 Google에서 Firebase의 고객 데이터를 처리하고 저장하는 위치에는 영향을 주지 않습니다. 이 위치는 기본 G

firebase.google.com

이후에 다시 firebase init을 하게 되면 리소스 위치가 설정되었기 때문에 firestore 설정은 정상적으로 됩니다.
(firestore index쪽에 에러가 뜨네요.. 이건 다음편에...)

블로그 이미지

ligilo

행복한 하루 되세요~

,

centos에 IP주소가 할당되었다는 전제에서 시작됩니다. 현재 제 설정은 centos minimal 버전이 설치된 상태에서 net-tools만 설치된 말그대로 깨끗한 버전입니다.

1. yum 패키지 업데이트

yum -y update

 

2. Docker, Docker-registry 설치

yum -y install docker docker-registry

 

3. 부팅 시 도커가 실행되도록 설정

systemctl enable docker.service

 

4. 도커 실행

systemctl start docker.service

 

5. 도커 실행상태 확인

systemctl status docker.service

블로그 이미지

ligilo

행복한 하루 되세요~

,