호그와트

국힙원탑 쿠모린~

영웅*^%&$ 2024. 5. 30. 02:46
728x90

코드를 읽다보면, 내가 스스로 만든 게 아니면 아예 구체적인 부분이 첫눈에 잘 안 들어올 때가 있다

사람마다 편차가 있겠지만, 나는 이 때 타이핑하면서 읽는 편이다

그러면 일단 이해가 되면서 읽는 효과가 있었기 때문이다

그런데 그냥 메모장으로 하기는 좀 그렇고

나만의 코드 메모장을 만들어서 거기다 치는 편이다

(한 15분 정도만에 그냥 뚝딱이처럼 만든 앱이라,

본인에 알맞게 커스터마이징 하세용~

커스터마이징 하라고 올리는 내용이라고 생각해주시면 감사하겠습니다)

(the process)

Download and install Node.js from nodejs.org.

Open Command Prompt or PowerShell and navigate to your project directory.

Initialize your project with `npm init -y`.

Install Electron and Electron Builder with `npm install electron --save-dev` and `npm install electron-builder --save-dev`.

Create the necessary files (main.js, preload.js, index.html) and update package.json.

Build your application with npm run build.

Run the executable from the dist folder.

 

 

~~~~~~~~ index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Code_Handwriting_App</title>
    <style>
      body {
        font-family: 'Courier New', monospace;
        background-color: #000000;
        color: #00FF00;
        margin: 0;
        padding: 0;
        display: flex;
        flex-direction: column;
        height: 100vh;
      }
      h1 {
        margin: 20px;
        color: #00FF00;
        text-align: center;
      }
      #editor {
        flex-grow: 1;
        width: 100%;
        border: none;
        padding: 20px;
        box-sizing: border-box;
        background-color: #000000;
        color: #00FF00;
        font-family: 'Courier New', monospace;
        font-size: 18px;
        resize: none;
        spellcheck: false;
      }
      #editor:focus {
        outline: none;
      }
    </style>
  </head>
  <body>
    <h1>Code Memo App</h1>
    <textarea id="editor" placeholder="Write your code here..."></textarea>
    <script>
      document.getElementById('editor').addEventListener('keydown', function(e) {
        if (e.key === 'Tab') {
          e.preventDefault();
          const start = this.selectionStart;
          const end = this.selectionEnd;

          this.value = this.value.substring(0, start) + '   ' + this.value.substring(end);

          this.selectionStart = this.selectionEnd = start + 3;
        }
      });
    </script>
  </body>
</html>

~~~~~~~~~~~~~~package.json

{
  "name": "code-memo-app",
  "version": "1.0.0",
  "description": "A simple code memo app",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "build": "electron-builder"
  },
  "build": {
    "appId": "com.example.codememoapp",
    "win": {
      "target": "nsis",
      "icon": "icon.ico"
    },
    "extraResources": [
      {
        "from": "node_modules/7zip-bin",
        "to": "7zip-bin",
        "filter": ["**/*"]
      }
    ]
  },
  "devDependencies": {
    "electron": "^latest",
    "electron-builder": "^latest"
  },
  "dependencies": {}
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`main.js

const { app, BrowserWindow } = require('electron');
const path = require('path');

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration: true,
      contextIsolation: false
    }
  });

  win.loadFile('index.html');
}

app.whenReady().then(() => {
  createWindow();

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

~~~~~~~~~~~preload.js

window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector);
    if (element) element.innerText = text;
  });

  for (const dependency of ['chrome', 'node', 'electron']) {
    replaceText(`${dependency}-version`, process.versions[dependency]);
  }
});
728x90