728x90
반응형

보안 공부를 시작했다.

아직 네트워크, 해킹, 취약점 같은 것은 아무것도 모르는 상태라서 우선 가장 기본적인 “컴퓨터가 어떻게 동작하는가?”부터 공부해보기로 했다.

보안을 공부하다 보면 프로세스, 메모리, 커널, PID 같은 용어가 계속 등장한다고 한다.

그래서 첫날에는 아래 내용을 이해하는 것을 목표로 잡았다.

  • CPU는 무슨 일을 하는가?
  • RAM은 왜 필요한가?
  • SSD와 RAM은 무엇이 다른가?
  • 운영체제는 왜 필요한가?
  • Kernel은 무엇인가?
  • Program과 Process의 차이는 무엇인가?
  • PID는 무엇인가?
  • 프로그램을 실행하면 컴퓨터 내부에서는 어떤 일이 일어나는가?

1. Hardware와 Software

먼저 컴퓨터를 구성하는 것은 크게 Hardware와 Software로 나눌 수 있다.

Hardware

Hardware는 실제로 존재하는 물리적인 장치를 의미한다.

대표적으로 다음과 같은 것들이 있다.

  • CPU
  • RAM
  • SSD
  • HDD
  • GPU
  • Network Card

즉, 컴퓨터를 열었을 때 실제로 볼 수 있는 부품들이 대부분 Hardware에 해당한다.

Software

Software는 컴퓨터에서 실행되는 프로그램이나 운영체제를 의미한다.

예를 들어 다음과 같다.

  • Windows
  • Chrome
  • Microsoft Teams
  • 게임
  • PowerShell

컴퓨터의 구조를 아주 단순하게 표현하면 다음과 같다.

사용자
 ↓
Software
 ↓
Operating System
 ↓
Hardware

사용자가 Chrome 같은 프로그램을 사용하면 프로그램이 직접 CPU나 RAM을 마음대로 사용하는 것이 아니라, 중간에서 운영체제가 이를 관리한다.

오늘 내가 이해한 내용

여기에 Hardware와 Software의 차이를 내 말로 정리해보기
> 하드웨어는 눈에 보이는 물리적인 것, 소프트웨어는 컴퓨터 속에 있는 프로그램들

 


2. CPU란?

CPU는 Central Processing Unit의 약자다.

흔히 컴퓨터의 두뇌라고 표현하지만, 좀 더 정확하게 표현하면 컴퓨터의 명령어를 실행하는 장치라고 볼 수 있다.

프로그램에는 컴퓨터가 수행해야 할 수많은 명령들이 들어 있다.

예를 들면,

숫자를 더한다.
문자를 비교한다.
파일을 읽는다.
데이터를 처리한다.

와 같은 작업이다.

CPU가 이런 명령들을 실제로 처리한다.

CPU와 관련된 주요 용어

CPU

컴퓨터의 명령을 처리하는 장치.

Core

CPU 내부에서 실제 작업을 처리하는 단위.

Thread

작업이 처리되는 실행 흐름.

Instruction

CPU가 처리하는 명령.

아직 Core와 Thread의 내부 구조까지 공부할 필요는 없지만, 이후 프로그램이나 서버 성능을 볼 때 계속 등장하는 용어이기 때문에 기억하자.

내가 이해한 CPU

CPU가 어떤 역할을 하는지 내 말로 설명해보기
> CPU는 컴퓨터의 명령어를 실행하는 장치


3. RAM이란?

RAM은 Random Access Memory의 약자다.

컴퓨터에서 현재 실행하고 있는 프로그램이나 필요한 데이터를 임시로 저장하는 공간이다.

예를 들어 Chrome이 컴퓨터의 SSD에 설치되어 있다고 하자.

Chrome을 실행하면 대략 다음과 같은 일이 일어난다.

SSD

Chrome 프로그램 저장
     ↓

RAM

Chrome 실행에 필요한 데이터 적재
     ↓

CPU

명령 처리

아주 단순하게 표현하면 다음처럼 기억할 수 있다.

SSD = 보관 공간

RAM = 작업 공간

CPU = 작업 처리

RAM의 특징

RAM에 저장된 데이터는 컴퓨터의 전원이 꺼지면 사라진다.

이러한 메모리를 Volatile Memory, 즉 휘발성 메모리라고 한다.

내가 이해한 RAM

RAM이 왜 필요한지 내 말로 설명해보기
> 사용자의 작업을 빠르게 수행할 수 있도록 임시 작업대 역할을 하기 때문에 필요하다.


4. SSD와 RAM은 무엇이 다를까?

SSD 역시 데이터를 저장하는 공간이다.

하지만 RAM과 목적이 다르다.

SSD에는 다음과 같은 데이터들이 저장될 수 있다.

  • Windows
  • 프로그램
  • 사진
  • 문서
  • 게임
  • 동영상

SSD에 저장된 데이터는 컴퓨터의 전원을 꺼도 사라지지 않는다.

반면 RAM에 올라간 데이터는 전원을 끄면 사라진다.

따라서 아주 단순하게 비교하면 다음과 같다.

구분 RAM SSD
역할 현재 작업에 필요한 데이터 저장 파일 및 프로그램 장기 저장
전원 종료 데이터 사라짐 데이터 유지
특징 빠른 임시 작업 공간 장기 저장 공간

Memory라는 용어

컴퓨터에서 Memory라고 표현할 때는 일반적으로 RAM을 의미하는 경우가 많다고 한다.

반면 SSD나 HDD는 Storage라고 부르는 경우가 많다.

내가 이해한 차이

RAM과 SSD의 차이를 내 말로 정리해보기
> RAM은 임시 보관함, SSD는 영구 보관함


5. Operating System은 무엇일까?

Operating System, 줄여서 OS는 운영체제를 의미한다.

대표적인 운영체제로는 다음이 있다.

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

운영체제는 프로그램과 하드웨어 사이에서 컴퓨터의 여러 자원을 관리한다.

예를 들어 Chrome이 실행되고 있다고 생각해보자.

Chrome이 직접 RAM에게

메모리 좀 주세요.

라고 요청하는 것이 아니다.

운영체제가 중간에서 자원을 관리한다.

Chrome
 ↓
Windows
 ↓
RAM

네트워크를 사용할 때도 비슷하다.

Chrome
 ↓
Windows
 ↓
Network Device
 ↓
Internet

운영체제가 관리하는 대표적인 자원은 다음과 같다.

  • CPU
  • Memory
  • Process
  • File
  • User
  • Permission
  • Device
  • Network

보안 공부에서 운영체제가 중요한 이유도 여기에서 시작하는 것 같다.

프로그램이 파일이나 메모리, 네트워크 등을 이용하려면 운영체제의 관리 아래에서 움직이기 때문이다.

내가 이해한 OS

운영체제가 왜 필요한지 내 말로 설명해보기
> 운영체제가 필요한 이유는 컴퓨터를 효율적으로 관리하고, 사용자의 편의를 위해서다


6. Kernel이란?

Kernel은 처음 접했을 때 가장 생소했던 개념이다.

Kernel은 간단하게 말하면 운영체제의 핵심 부분이다.

컴퓨터의 구조를 아주 단순하게 표현하면 다음과 같다.

Application

Chrome
Teams
게임

   ↓

Operating System

   ↓

Kernel

   ↓

Hardware

Kernel은 CPU, Memory, Device, Process와 같은 중요한 시스템 자원을 관리한다.

따라서 Kernel에 문제가 발생하면 단순히 하나의 프로그램에 문제가 생기는 것보다 훨씬 큰 영향을 줄 수 있다.

보안 공부를 하다 보면 앞으로 다음과 같은 용어도 만나게 된다고 한다.

  • Kernel Mode
  • User Mode
  • Kernel Driver
  • Kernel Exploit

아직 이 내용까지 깊게 들어가지는 않고 첫날에는 다음 정도로 이해하기로 했다.

Kernel은 운영체제에서 하드웨어와 시스템 자원을 관리하는 핵심 영역이다.

내가 이해한 Kernel

Kernel이 무엇인지 내 말로 다시 작성해보기
> Kernel은 OS의 핵심 두뇌이자 소프트웨어와 하드웨어를 연결하는 다리


7. Program과 Process의 차이

오늘 공부하면서 가장 중요하게 느껴진 부분이다.

Program과 Process는 같은 것이 아니다.

예를 들어 SSD에 다음 파일이 있다고 하자.

chrome.exe

아직 Chrome을 실행하지 않았다면 이것은 SSD에 저장되어 있는 Program이다.

하지만 Chrome을 실행하면 상황이 달라진다.

chrome.exe

↓ 실행

RAM에 필요한 데이터 적재

↓

CPU가 명령 실행

이렇게 현재 실행되고 있는 프로그램을 Process라고 한다.

따라서 다음과 같이 구분할 수 있다.

Program
= 저장되어 있는 실행 코드

Process
= 현재 실행 중인 프로그램

같은 프로그램이라도 여러 개의 Process가 만들어질 수 있다.

실제로 Chrome을 실행한 상태에서 Windows 작업 관리자를 보면 chrome.exe가 여러 개 실행되어 있는 것을 확인할 수 있다.

내가 이해한 Program과 Process

Program과 Process의 차이를 내가 이해한 방식으로 작성해보기
> 프로그램은 풀기 전 선물, 프로세스는 풀고 있는/푼 선물


8. PID란?

컴퓨터에서는 동시에 굉장히 많은 Process가 실행된다.

예를 들어 내 컴퓨터에서도 다음과 같은 프로그램들이 동시에 실행될 수 있다.

Chrome
Teams
Explorer
백신
Discord
PowerShell

운영체제 입장에서는 각각의 Process를 구분할 방법이 필요하다.

그래서 Process마다 고유한 번호를 할당한다.

이 번호를 PID(Process ID)라고 한다.

예를 들면 다음과 같다.

chrome.exe      PID 4812
Teams.exe       PID 9224
notepad.exe     PID 12540

같은 프로그램을 종료했다가 다시 실행하면 PID는 달라질 수 있다.

즉 PID는 프로그램 자체에 영구적으로 붙어 있는 번호가 아니라 현재 실행 중인 Process를 구분하기 위한 번호다.

내가 이해한 PID

PID가 왜 필요한지 내 말로 설명해보기
> 현재 실행중인 프로세스의 임시 이름표


9. 직접 내 컴퓨터의 Process 확인하기

개념만 공부하지 않고 직접 확인해봤다.

Windows에서는 다음 단축키를 이용해 작업 관리자를 열 수 있다.

Ctrl + Shift + Esc

작업 관리자에서는 현재 컴퓨터에서 실행되고 있는 Process를 확인할 수 있다.

또한 다음과 같은 정보도 확인할 수 있다.

  • CPU 사용량
  • Memory 사용량
  • Disk 사용량
  • Network 사용량

세부 정보 탭으로 들어가면 각 Process의 PID도 확인할 수 있다.

내가 확인한 Process

ProcessPID무엇을 하는 프로그램인가?

node.exe 5464
cmd.exe 20576
   

실제로 Process가 생각했던 것보다 훨씬 많이 실행되고 있었다.


10. CMD에서 Process 확인하기

Windows의 CMD에서도 실행 중인 Process를 확인할 수 있다.

CMD를 실행한 다음 다음 명령어를 입력한다.

tasklist

그러면 현재 실행 중인 Process 목록을 확인할 수 있다.

예를 들어 결과에 다음과 같은 내용이 표시될 수 있다.

Image Name            PID

chrome.exe            4812
explorer.exe          5020

작업 관리자에서 확인했던 PID와 CMD에서 확인한 PID가 동일한지도 비교해볼 수 있다.

직접 확인한 결과

작업 관리자와 tasklist에서 Process와 PID를 비교한 결과 기록하기


11. 프로그램을 실행하면 어떤 일이 일어날까?

오늘 배운 내용을 한 번 연결해보면 다음과 같다.

예를 들어 Chrome을 실행한다고 가정해보자.

먼저 Chrome 프로그램은 SSD에 저장되어 있다.

SSD

chrome.exe

사용자가 Chrome을 실행한다.

사용자

↓ 실행

chrome.exe

운영체제가 Chrome 실행에 필요한 자원을 준비한다.

SSD

chrome.exe

↓

RAM

실행에 필요한 코드와 데이터

그 이후 CPU가 프로그램의 명령을 처리한다.

SSD
 ↓
RAM
 ↓
CPU

그리고 운영체제는 실행된 Chrome을 하나의 Process로 관리한다.

Chrome Process

PID = XXXX

결국 오늘 공부한 개념들이 서로 독립적인 내용이 아니라 하나로 연결된다.

Program
   ↓
실행
   ↓
Process 생성
   ↓
RAM 사용
   ↓
CPU 명령 처리
   ↓
Operating System이 관리

12. 그런데 이게 보안과 무슨 관계가 있을까?

아직 해킹 기법을 공부하지 않았지만 여기서부터 보안과 연결되는 부분이 보이기 시작한다.

예를 들어 컴퓨터에서 다음과 같은 Process를 발견했다고 해보자.

abc123.exe

PID 8240

내가 설치한 기억이 없는 프로그램이다.

보안 담당자라면 여기서 질문을 시작할 수 있다.

  • 이 Process는 무엇인가?
  • 어디에서 실행되었는가?
  • 누가 실행했는가?
  • 어떤 권한으로 실행되고 있는가?
  • 얼마나 많은 Memory를 사용하고 있는가?
  • 어떤 파일에 접근하는가?
  • 외부 Network와 통신하고 있는가?

결국 보안은 단순히 '해킹 기술'을 배우는 것이 아니라 컴퓨터가 정상적으로 어떻게 동작하는지를 이해하고 정상적이지 않은 행동을 찾아내는 과정이라고 볼 수도 있을 것 같다.


Day 1 핵심 정리

오늘 공부한 내용을 한 문장씩 정리해봤다.

CPU

RAM

SSD

Operating System

Kernel

Program

Process

PID


오늘의 최종 질문

공부를 마무리하면서 아래 질문에 자료를 보지 않고 답해보려고 한다.

1. CPU는 어떤 역할을 하는가?

2. RAM은 왜 필요한가?

3. RAM과 SSD는 무엇이 다른가?

4. 운영체제는 어떤 역할을 하는가?

5. Kernel은 무엇인가?

6. Program과 Process는 무엇이 다른가?

7. PID는 무엇이며 왜 필요한가?

8. SSD에 저장된 프로그램을 실행하면 어떤 일이 발생하는가?


Day 1 공부를 마치며

오늘은 보안 기술 자체를 배우지는 않았다.

대신 앞으로 계속 등장할 CPU, RAM, OS, Kernel, Process, PID 같은 기본적인 컴퓨터 용어를 공부했다.

특히 오늘 가장 중요하게 기억하고 싶은 흐름은 이것이다.

SSD에 Program이 저장되어 있다.

↓

사용자가 Program을 실행한다.

↓

운영체제가 Process를 생성한다.

↓

필요한 데이터가 RAM에 올라간다.

↓

CPU가 명령을 처리한다.

↓

운영체제가 해당 Process와 자원을 관리한다.

다음 공부에서는 오늘 배운 컴퓨터 내부 구조를 기반으로 조금씩 시스템과 네트워크가 어떻게 연결되는지 알아볼 예정이다.

728x90
반응형
728x90
반응형

바쁜 하루하루를 살다가(?)

즐거운 휴가를 보내고 왔다.

놀고 왔으니 할 건 해야지


1. 사이트 파비콘 만들기

사이트 이름 옆에 존재하는 동그란 저 로고가 파비콘이다.

내가 브라우저를 막 열었을 때 사이트를 식별하는 것에 도움을 주고, 브랜드의 정체성을 보여주기도 한다.

당연 필수는 아니다.

하지만 없으면 밋밋하니
Figma와 일러스트레이터를 이용해 난 만든다 :)

Before
After

export const metadata = {
  title: "타로타르트",
  description: "달콤하게 맛보는 나의 운명: 타로타르트",
  icons: {
    icon: [
      { url: "/favicon.ico", type: "image/x-icon", sizes: "any" },
      { url: "/favicon-32x32.png", type: "image/png", sizes: "32x32" },
      { url: "/android-icon-192x192.png", type: "image/png", sizes: "192x192" },
    ],
    apple: { url: "/apple-icon-180x180.png", sizes: "180x180" },
    manifest: "/manifest.json",
  },
  other: {
    "google-adsense-account": "ca-pub-4184442303277144",
  },
};

metadata까지 수정하면 끝

 

2. Google Search Console

여기에 내 사이트를 등록해 보자

그럼 검색 시 내 사이트가 잘 나올 수 있다!

 

2-1. 필요한 파일 만들기

- public/robots.txt

User-agent: *
Allow: /
Sitemap: https://tarot-tart.vercel.app/sitemap.xml

- user-agent: * 설정으로 모든 검색엔진에 적용하겠다는 말이고

- Allow: / 설정으로 모든 경로 크롤링을 허용하겠다는 말이다.

- sitemap: your domain 설정으로 사이트맵 위치를 명시하여 검색 효율을 높인다.

 

- public/sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://tarot-tart.vercel.app/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>

- loc은 노출시키고 싶은 URL이고

- changefreq는 얼마나 자주 바뀌는지

- priority: 는 검색엔진에게 중요도를 표시한다.

 

2-2. 메타태그 설정

layout.tsx 에 메타태그를 야무지게 채워 넣는다.

export const metadata = {
  title: "타로타르트",
  description: "달콤하게 맛보는 나의 운명: 타로타르트",
  keywords: ["타로", " 타로카드", "타로점", "운세", "운명"],
  url: "https://tarot-tart.vercel.app/",
  siteName: "타로타르트",
  locale: "ko_KR",
  type: "website",
  icons: {
    icon: [
      { url: "/favicon.ico", type: "image/x-icon", sizes: "any" },
      { url: "/favicon-32x32.png", type: "image/png", sizes: "32x32" },
      { url: "/android-icon-192x192.png", type: "image/png", sizes: "192x192" },
    ],
    apple: { url: "/apple-icon-180x180.png", sizes: "180x180" },
    manifest: "/manifest.json",
  },
  openGraph: {
    title: "타로타르트",
    description: "달콤하게 맛보는 나의 운명: 타로타르트",
    url: "https://tarot-tart.vercel.app/",
    siteName: "타로타르트",
    images: [
      {
        url: "/banner.png",
        width: 1200,
        height: 630,
        alt: "타로타르트 미리보기 이미지",
      },
    ],
    locale: "ko_KR",
    type: "website",
  },
  twitter: {
    card: "summary_large_image",
    title: "타로타르트",
    description: "달콤하게 맛보는 나의 운명: 타로타르트",
    images: ["/banner.png"],
  },
  other: {
    "google-adsense-account": "ca-pub-4184442303277144",
    "google-site-verification": "KjRABD7__6IdKg9gv6RUmh1X2R1lFUEtT44FXGXxSr4",
  },
};

 

마지막 other를 보면 뭔가 있다.

첫 번째 꺼는 에드센스 등록을 위한 코드고

두 번째 거는 구글 서치 소유권 인증 코드이다.

(노출돼도 무방하다)

 

https://search.google.com/

 

Google

 

www.google.com

그리고 여기 가서 등록하자

등록은 전부 했다.

시간이 조금 걸린다고 하니

오늘은 여기까지!


 

동호회 어플 기능 추가해야 한다...

형님들이 극성이야!

728x90
반응형
728x90
반응형

오래간만에 글을 쓴다.

이제 백수가 된 나는 심심하던 차 장난감을 하나 만들기로 한다.

예전부터 기획만 했던 서비스였는데,

바로 '타로점' 프로젝트다.


1. 디자인 구체화

 

먼저, 머릿속에 있는 디자인/기획을 공책에 적고 GPT와 Figma를 이용해 구체화시켜준다.

(GPT 없었으면 이미지 못 만들 뻔)

 

2. 프로젝트 시작한다. 완성!!

https://tarot-tart.vercel.app/

 

타로타르트

타르트 시간세트 - 과거-현재-미래 -

tarot-tart.vercel.app

 

-끝-

 


[잘한 일]

1. supabase 

- 1인 개발이었기에 여러 가지 사용해 보는 것이 경험치 축적에 좋다고 생각했다.

- 타로서비스의 핵심은 '결과'였는데, 내가 생각하는 다양한 해석의 결과를 보여주려면 예전에 가벼운 사이드프로젝트 할 때 사용했던 json 파일 하나로는 부족하다고 생각했다.

- Firebase를 활용하자니 noSQL이라 구조관리가 번거로울 것 같았고, 예전에 백엔드 교육을 받을 때 SQL을 다뤄본 기억이 남아있어 PostgreSQL 기반 supabase을 쓰기로 했다.

- Next.js와 잘 어울린다는 이야기를 아는 개발자 지인에게 들었다. (형님 감사합니다!)

 

supabase 사용해 보기

- 사실 딱히 어려움은 없었다. (제대로 못써서 그런가..)

- 그냥 테이블 만들어서 데이터를 만들고 insert 했다.

- 실시간 이용자 집계는 좀 헷갈렸다. (sessionId를 만들고, 로그 기록 테이블에 insert 한다. 그걸 사용자 집계로 썼다.)

- 사실 실시간이라기보다 간단한 방문자 집계에 가까운 기능이었다.

export const handleCountUsers = async (page: string) => {
  await supabase.from(로그 기록 테이블).insert({
    session_id: getSessionId(),
  });
};

 

2. 셔플

- 셔플에는 대표적으로 Fisher-Yates 셔플이 있다.

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1)); // 0 ≤ j ≤ i
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

- 이 무작위성에 추가로 사람의 손을 탄 셔플을 구현했다.

- 추가로 애니메이션까지 :)

 


[어려웠던 점]

 

1. supabase 활용하기

- 잘 쓰려면 일단 sql문에 익숙해져야 했다. 근데 아주 다행이었던 건 supabase의 인터페이스가 쉽게 테이블을 만들 수 있게 되어 있었다. 구글링을 통해 사용법을 간단하게 익혀준 다음 Table을 만들고, RSL 설정까지 적용해 봤다. 진입장벽이 그리 높지 않았기에 다행이었다.

 

2. 해석에 대한 정리

-  사람들은 왜 타로를 볼까?라는 생각을 깊게 해보지 못했었다. 그냥 인간이라면 당연하게 자신의 운명, 행운 등을 보고 싶을 것이라는 막연한 생각에 결과에 대한 템플릿만 생각했었다. 이를 본 우리 집 대장님의 왈

타로는 고민에 대한 조언을 얻고 그 속에서 공감을 받고 싶어서 보는 거야.!

 

그 말을 듣고 정신이 번쩍 들었고, 내가 너무 가볍게 생각했다는 것을 깨달았다.

때문에 몇 가지 룰을 설정했다.

1. 진짜 사람이 섞는 듯한 셔플 로직을 만들기

2. 인공지능을 사용할 순 없지만, 다양한 해석을 종합해 썩 괜찮은 조언을 만들자

 

... 이후 내용은 영업 비밀!
하지만 정말 많은 고민과 시행착오가 있었다.

 

이번 프로젝트는 어떤 결과가 나올까?

많은 사람들이 즐겁게 봐줬으면 좋겠다 :)

728x90
반응형
728x90
반응형

요즘 J-pop의 매력에 빠져 살고 있다.

밴드 음악이나 인디스러운 음악을 좋아해서 어쩌다 듣게 되었는데,

지금까지 푹 빠져있다..ㅎㅎ

 

J-pop을 매일 듣다보니 자연스럽게 일본어에 관심이 갔고,

최근에는 지인들과 도쿄에도 다녀왔다.

여행을 하면서 간간히 일본어가 들리고, 이해하게 되니까

공부에 대한 욕심이 확 생겨버렸다.

 

함께 간 형들이 일본어 공부 어플같은 거 있으면

잘 쓸 것같다고 해서 

행동파인 나는 바로 작업에 착수

 

이런 앱이 탄생하게 되었다.

 

1. 취지

실용적인 공부를 원했다.

목표는 진지하게 일본어에 대해 공부를 하고, 원어민 급 혹은 자격증 공부를 하기 위함이 아니다.

여행을 가면 무슨 말하는 지 알아는 들을 수 있고, 가벼운 대답 정도는 할 줄 알게 만들자!

가 목표였기 때문에 깊게 들어가고 싶지 않았다.

때문에 사용자가 이 서비스를 이용하고 '일본어란 이런거구나.', '첫 공부로 좋네' 정도의 생각을 가졌으면 하는 바람이다.

 

2. 학습 방법

단순하게 반복학습을 목표로 했다.

히라가나를 외우고 싶으면 히라가나를 무한 반복, 단어를 외우고 싶으면 단어를 무한 반복 ...

그리고 발음은 로마지라는 영어를 많이 사용하던데.. 

잊지말자! 한국어는 모든 발음이 가능하다는 든든함이 있다^_^

 

3. 앞으로의 계획

일단 해당 앱을 계속적으로 업데이트 할 예정이다. 처음에는 포트폴리오로 써야하니까 '가볍게 하고 말자' 했는데..?

생각보다 주변 지인들은 잘 사용해주고 있다. 피드백도 간간히 해주고 있고 ...

 

"실용적인 회화 패턴" 까지 끝내면 내 나름의 시즌 1 개발 은 끝!

 

그리고 앞으로의 계획은...

사실 누가 얼마나 이용할 지는 잘 모르겠다. 그래도 이용해주는 사람들을 위해 질릴때까지 할 생각이다.

 

p.s 혹시 이걸 보고 들어오시는 분들!

절대로 이상한거 아니니 많이 이용해주시고, 피드백 주시면 너무나 감사하겠습니다!~~

 

- 해당 서비스가 불법적으로 사용될 경우 바로 감옥갑니다!

 

 

 

https://study-japanese.vercel.app/

 

Study-Japanese

 

study-japanese.vercel.app

많관부~

728x90
반응형

+ Recent posts