mogoh-developer의 등록된 링크

 mogoh-developer로 등록된 티스토리 포스트 수는 29건입니다.

2023 동계해커톤 [내부링크]

해커톤 정보 대상자 대구소프트웨어 마이스터 고등학교 7기생 일정 2023.02.07 ~ 2023.02.08 장소 1학년 교실 주제 신입생(8기 입학생)들을 위한 플랫폼 프로젝트 팀명 팀명은 미운오리새끼이다. 왜냐하면 당시 각 팀들의 개발언어는 거의 비슷하였지만 우리팀만은 C언어를 사용하여 개발하였기에 노란오리 사이에 검은오리를 비유하여 미운우리새끼라는 팀명을 지었다. 팀원 한준범[팀장], 구자현, 김민기, 김정원, 이재건 팀아이디어 우리와 같은 대소고 학생들은 소프트웨어 개발을 하기 위해 필연적으로 DB를 학습하게 된다. 프로그래밍을 처음 접한 대소고 학생들은 난해한 영어와 쿼리문 문법들로 난항을 격으며 좌절과 포기를 하기 마련이다. 우리팀 또한 이러한 문제를 겪었기에 대소고 신입생들이 매우 쉽게 접할 ..

Nodejs 로그인&회원가입 구현 [내부링크]

오늘은 Nodejs로 Json을 다루어 로그인&회원가입 로직과 웹페이지를 구현해보았다. 파일구조 Node_UserJoin node_modules bin www.js src database userData.json modules user.js userStorage.js public css error 404.css home login.css signup.css mainPage.css img blueWater.jpg js error 404.j..

로그인&회원가입 페이지 디자인 [내부링크]

오늘은 로그인&회원가입 페이지를 디자인 해보았습니다. 소스 코드 index.html Sign up Sign up Login Login next index.css body { margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; min-height: 100vh; font-family: 'Jost', sans-serif; background: radial-gradient(circle farthest-corner at 32% 106%,#2e17c5 0%,#6251ff 5%,#103dae 18%,#1116aa 32%,transparent 82%) , linear-gradient(135deg,#31088a 24%,#4..

C++ 틱택토 만들기!! [내부링크]

오늘은 C++로 간단한 틱택토 게임을 만들어 보았습니다. 전체 소스코드 #include #include using namespace std; char randomTurn(); void header(); void gameGui(char array[][3]); int insertIcon(char array[][3], int x, int y, char icon); char turnChange(char turn); int cheak(char array[][3], int cnt); void win(char winner); void tie(); int main() { char array[][3] = { { ' ',' ',' ' }, { ' ',' ',' ' }, { ' ',' ',' ' } }; int x, y; ..

리눅스 기본 명령어 Chapter 3 [내부링크]

오늘은 리눅스 기본 명령어의 세번째 시간이며 기타 명령어에 대하여 살펴보도록 하겠습니다. 네트워크 관련 명령어 ~$ ping 외부 호스트에 신호를 보내며 신호를 받은 호스트는 응답을 주면서 서로 네트워크가 연결되어 있음을 확인 [형식] ~$ ping 옵션 (도메인명 OR IP주소) [옵션] -c : ping을 보낼 횟수. 생략시 무제한으로 실행. -i : 신호를 보내는 시간 간격. 생략시 1초 단위로 설정. -s : 전송하는 패킷 크기를 byte 단위로 설정 ~$ traceroute 목적지 호스트까지의 경를 표시하고 그 구간의 정보 기록 [형식] ~$ traceroute 도메인명 OR IP주소 ~$ nslookup 도메인명으로 IP주소 조회 OR IP주소로 도메인명 조회 [형식] ~$ nslookup 옵..

리눅스 기본 명령어 Chapter 2 [내부링크]

오늘은 리눅스 기본 명령어의 두번째 시간이며 디렉터리 및 파일에 대한 명령어를 살펴보도록 하겠습니다. 디렉터리 관리 명령어 ~$ pwd 현재 작업 중인 디렉터리 위치 표시 [형식] ~$ pwd [예제] ~$ pwd /home/stllin ~$ cd 디렉터리 이동 [형식] ~$ cd (상대경로 OR 절대경로) 설정경로 상대 경로 : 현재 작업 디렉터리 기준으로 표시 절대 경로 : /를 기준으로 경로에 모든 디렉터리 표시 [설정경로] ~ : 홈 디렉터리 . : 현재 디렉터리 .. : 한단계 상위 디렉터리 / : 루트 디렉터리 - : 이전 디렉터리 [예제] ~$ cd ~ ~$ pwd / ~$ mkdir 디렉터리 생성 [형식] ~$ mkdir 옵션 디렉터리명 [옵션] -m : 권한 설정 (기본 : 755) -p..

Javascript 피아노 만들기! [내부링크]

오늘은 Javascript로 피아노를 만들어 보았다. 소스코드 index.html ONSTAR PIANO Volume Show Keys a w s e d f t g y h u j k o l p ; style.css @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body { display: flex; align-items: center; justify-content: center; min-height: 100vh; backgro..

Node.js 다중 클라이언트 웹 소켓 채팅 [내부링크]

오늘은 여러 클라이언트가 접속하여 통신할 수 있는 웹 소켓 채팅 서비스를 구현하였다. 파일 구조 BukJeokBukJeok node_modules public css style.css js main.js chat.html index.html utils messages.js users.js server.js package-lock.json package.json 소스코드 설명 package.json { ... "main": "server.js", "scripts": { "start": "node server", "dev": "nodemon server" }, ... "license": "MIT",..

랜덤함수를 이용한 C언어 콘솔 게임 [내부링크]

오늘은 2022년 1학기때 C언어 수행평가 과제인 랜덤함수를 이용한 C언어 콘솔게임을 소개하겠습니다. 일단 바로 시연 영상을 보도록 하겠습니다. 시연 영상 일단 실행부터 해보고 싶은 분들을 위해 알려드리겠습니다. 해당 글에 올려진 소스코드만으로는 위 시연영상처럼 정상적인 실행이 불가합니다. 왜냐하면 로그인할 때 사용하는 텍스트 파일과 배경음악파일을 요구하는 소스코드이기 때문입니다. 그렇기에 첨부파일링크를 따로 올려두었습니다. 글을 내려보면 제목이 첨부파일인 부분에 가셔서 링크를 접속하여 압축파일을 다운로드한 후 압축을 풀어 소스코드 파일과 동일한 상위 폴더에 두시면 됩니다. 소스 코드 분할 이때는 왜 그랬는지 모르겠지만 반환도 제대로 안쓰고 비효율적이게 함수도 겁나 많이 호출하고 반복문도 많고 시간복잡도..

리눅스 기본 명령어 Chapter 1 [내부링크]

오늘은 리눅스 기본 명령어의 첫번째 시간이며 사용자 생성 및 계정관리에 대한 명령어를 살펴보도록 하겠습니다. 리눅스 명령어 개요 ~$ which 명령어 경로를 확인하는 명령어이다. 명령어 위치를 찾아주거나 alias를 보여주는 명령어이다. 사용자가 현재 위치에서 명령을 실행시켰을 때 어떤 명령이 실행되는지를 알고 확인할 수 있다. $PATH가 설정되어 있는 경로에서만 해당 명령어의 경로를 찾는다. [형식] ~$ which 명령어 [예제] ~$ which pwd /bin/pwd ~$ alias 자주 사용하는 명령어를 특정 문자로 입력해 두고 명령어 대신 해당 문자를 사용할 수 있게 하는 명령어이다. [형식] ~$ alias 별명='명령어' [예제] ~$ alias pl='pwd | ls -al' ~$ un..

Node.js 간단한 웹 채팅 [내부링크]

오늘은 Node.js, express와 Socket.io를 이용하여 웹에 실시간 채팅 서비스를 구현해 보았다. 소스코드 설명 파일 구조 NODE_CHAT node_modules public css style.css js main.js index.html server.js package-lock.json package.json server.js const path = require('path') const express = require('express') const app = express() const SocketIO = require('socket.io') var os = require('os'); Path 모듈은 Node..

리눅스의 부트 매니저 [내부링크]

오늘은 리눅스의 부트 매니저에 대해 알아보는 시간을 갖도록 하겠습니다. 부트로더 부트로더란? Bootstrap Loader의 준말 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해주는 프로그램 부트로더 기능 OS 실행 전 커널이 정상 실행을 위해 필요 모든 관련 작업을 마무리하고 최종적으로 OS를 실행시키기 위한 프로그램 임베디드 시스템 부트로더는 PC의 BIOS와 OS Loader기능 수행하며 시스템이 부팅할 때 가장 먼저 수행 OS 실행에 필요한 환경 설정하고 OS 이미지 메모리에 복사한다. 부트로더는 부트매니저라고도 부르며 크기는 512byte로 하드디스크의 첫 번째 섹터인 MBR(Master Boot Record)에 위치한다. 주 파티션마다 부트 섹터..

JAVA AES-256 양방향 암호화 [내부링크]

오늘은 AES-256 암호화 방식을 이용하여 간단한 보안 프로그램을 구현해보도록 하겠습니다. 개념 다지기 일단 코드를 짜기전에 개념을 살펴보도록 하겠습니다. 첫번째는 AES입니다. 우리가 만들 보안 프로그램은 AES기반의 암호화 방식을 이용한 프로그램입니다. "그럼 AES가 뭘까요??" 바로.. AES는 Advanced Encryption Standard의 약자로 고급 암호화 표준이란 뜻을 가지고 있습니다. AES는 암호화 및 복호화에 동일한 키를 사용하는 대칭키 알고리즘으로 높은 안전성과 빠른 속도로 인해 양방향 암호화에서 가장 많이 사용되는 방식입니다. AES 암호화의 종류는 AES-128, AES-192, AES-256이 있으며 뒤에 붙은 숫자는 키의 길이를 의미합니다. 우리가 사용할 암호화는 AE..

파티션이란? [내부링크]

오늘은 파티션에 대해 알아보는 시간을 갖도록 하겠습니다. 파티션 파티션이란? 하나의 물리적 디스크를 여러 개의 논리적인 디스크로 분할하는 것이다. 다중 파티션의 장점 파티션마다 독립적인 파일 시스템이 운영되기 때문에 파일 점검 시간이 줄어들어 부팅 시간을 단축시킬 수 있다. 특정 파티션의 파일 시스템이 손상되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성을 보장한다. 필요한 파티션만 포맷할 수 있기 때문에 백업과 업그레이드가 편리하다. 파티션 상태 정보를 확인할 수 있는 파일은 /proc/partitions 이다. 파티션 종류 주 파티션(Primary) 부팅이 가능한 기본 파티션 하나의 하드디스크에 최대 4개의 주 파티션 분할 가능 확장 파티션(Extended) 주 파티션 내에 생성, 하나의 ..

JAVA 간단한 암호화와 복호화 [내부링크]

오늘은 JAVA를 이용한 간단한 암호화/복호화 프로그램을 구현해 보았다. 로직 간단한 암호화/복호화 원리는 ASCII 코드를 이용하여 로직을 짰습니다. 암호화 입력 범위 영어 : a b c d e f g h i j k l m n o p q r s t u v w x y z 숫자 : 0 1 2 3 4 5 6 7 8 9 출력 범위 ` ~ ! @ # $ % ^ & * ( ) - _ + = | [ ] { } ; : , . / q w e r t y u i o p 영어 입력 → 특수문자 출력 a → ` b → ~ c → ! d → @ e → # f → $ g → % h → ^ i → & j → * k → ( l → ) m → - n → _ o → + p → = q → | r → [ s → ] t → { u → } v..

Flask WEB Server [내부링크]

오늘은 Flask 라이브러리를 이용한 Python WEB Server를 구축하여 간단한 WEB Service를 구현해보았다. app.py from flask import Flask, render_template, request app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/smile') def smile(): return render_template("smile.html") @app.route('/dots') def dots(): return render_template("dots.html") @app.route('/404') def error(): return rende..

2022 나르샤 프로젝트 [내부링크]

팀 팀 이름은 새싹콩나물로 정해졌다. 팀 이름에 대한 의미는 우리 팀원들과 새싹과 콩나물을 비유하여 빠르게 성장해나가고 있는 개발자를 의미합니다. 팀원들은 개인정보 차원해서 비공개하도록 하겠습니다. 서비스 저희 서비스명은 PLURA입니다. PLURA 서비스는 무료 음악 스트리밍 웹서비스입니다. 기술 Design Tool : Figma Frontend Tool : Visual Studio Code Script : HTML, CSS, JS Framework : React, Node.js Backend Tool : Intellij, Dbeaver, Excel Language : JAVA Framework : Spring Boot Database : Mysql 일정 분석 : 2022.08.29 ~ 2022.09..

JavaScript Clock [내부링크]

오늘은 HTML + CSS + JS를 이용하여 간단하게 WEB에 시계를 뛰어 보도록 하겠습니다. index.html 00 00 00 AM style.css @import url('https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap'); *{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body{ display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #2f363e; } #time..

C언어를 이용한 정렬 프로그램 [내부링크]

오늘은 C언어를 이용하여 정렬 프로그램을 구현해보도록 하겠습니다. 기능 배너 C언어 객체 지향 프로그래밍 정렬 방법 선택 정렬할 리스트는 자동 생성 오름차순, 내림차순 모두 출력 프로그램 종료 소스 코드 #include #include // system(); 함수 포함 라이브러리 #include // rand() 함수 포함 라이브러리 #include // time() 함수 포함 라이브러리 #define MAX_SIZE 25 int List_after_sorting[MAX_SIZE]; // 정렬 후 리스트 (오름차순) int List_after_sorting2[MAX_SIZE]; // 정렬 후 리스트 (내림차순) int List_before_sorting[MAX_SIZE]; // 정렬 전 리스트 void ..

Python Database [내부링크]

오늘은 Pymysql을 통해 Python과 Mysql을 연동하여 데이터베이스를 구축하는 Python 코드를 짜보도록 하겠습니다. 패키지 설치 일단 Python과 Mysql을 연동시키기 위한 라이브러리인 Pymysql 패키지를 설치한다. 1. 터미널창을 실행한다. 2. 아래 명령어를 입력한다. pip install pymyql 3. ENTER Key를 누른다. 버전 확인하기 정상적으로 패키지가 설치되었는지 학인하여야 합니다. 1. 터미널창을 실행한다. 2. 아래 명령어를 입력한다. pip show pymyql 3. ENTER Key를 누른다. 4. 패키지 정보가 정상인지 확인한다 소스 코드 import pymysql db = pymysql.connect(host="localhost", user="root"..

Python Translator [내부링크]

오늘은 Python에서 구글 번역 라이브러리를 이용하여 간단한 번역기를 구현해보도록 하겠습니다. 패키지 설치 제일 먼저 구글 번역 라이브러리를 사용하기 위한 패키지를 설치한다. 1. 터미널창을 실행한다. 2. 아래 명령어를 입력한다. pip install googletrans==4.0.0-rc1 3. ENTER Key를 누른다. 버전 확인하기 정상적으로 패키지가 설치되었는지 학인하기 위해 버전을 확인하여야 합니다. 1. 터미널창을 실행한다. 2. 아래 명령어를 입력한다. pip show googletrans 3. ENTER Key를 누른다. 4. Version이 4.0.0인지 확인한다 소스코드 import googletrans import time translator = googletrans.Transl..

Rust Socket Programming - Chapter2 [내부링크]

오늘은 Rust를 이용한 다중 클라이언트 채널형 채팅 프로그램을 구현해 보았다. server.rs use std::io::{self, ErrorKind, Read, Write}; use std::net::TcpListener; use std::sync::mpsc; use std::thread; use std::time::Duration; const MSG_SIZE: usize = 100; fn main() { println!("[Server]"); println!("\nEnter server ip"); let mut ip = String::new(); io::stdin().read_line(&mut ip).expect("Reading from stdin failed"); let server_ip = ip..

Rust Socket Programming - Chapter 1 [내부링크]

오늘은 간단하게 Rust를 이용하여 다중클라이언트 에코 서비스를 구현해보도록 하겠습니다. server.rs use std::thread; use std::net::{TcpListener, TcpStream, Shutdown}; use std::io::{Read, Write}; use std::str::from_utf8; fn handle_client(mut stream: TcpStream) { let mut data = [0 as u8; 1000]; while match stream.read(&mut data) { Ok(_size) => { let text = from_utf8(&data).unwrap(); print!("[{}] : {}", stream.peer_addr().unwrap(), text)..

C++ Socket Programming [내부링크]

오늘은 C/C++로 echo service를 구현해보았다. 코드 설명은 소스코드에 주석이 다 적혀있있기 때문에 따로 설명은 안하겠습니다. SERVER.h #define _WINSOCK_DEPRECATED_NO_WARNINGS #pragma comment(lib, "ws2_32") #include #include #include #include using namespace std; class server { public: WSADATA wsaData; // WSADATA : Windows 소켓 구현에 대한 정보 포함 구조체 SOCKET server_socket, client_socket; SOCKADDR_IN server_address, client_address; /* SOCKADDR_IN : IPv4의..

리눅스의 설치 [내부링크]

오늘은 리눅스의 기본 설치 및 유형에 대해 알아보는 시간을 갖고 실습으로 CentOS 리눅스를 설치해보록 하겠습니다. 리눅스 설치의 개요 리눅스 설치 파일은 해당 배포본의 홈페이지에서 다운로드 받을 수 있다. 리눅스는 단 하나의 제품 또는 한 종류의 제품만 있는 것이 아니다. 리눅스 배포판마다 설치 환경과 설치 과정이 다르다. 사용자 설정 시스템을 제외한 설치 유형을 선택하면 하드디스크를 자동으로 재구성하여 기존 데이터는 제거된다. [Minimal] · 리눅스 설치 시 필수 패키지 [데스크탑] · 개인용 컴퓨터에 적합한 패키지 · 하드디스크의 모든 리눅스 파티션 삭제 후 데스크탑 운영에 적합한 환경으로 설치 · 문서 작성, 멀티미디어, 그래픽 도구 관련 프로그램 설치 · Minimal Desktop은 예..

리눅스 라이선스에 대해 [내부링크]

오늘은 리눅스 라이선스에 대해 알아보는 시간을 갖도록 하겠습니다. GNU GNU : GNU's Not UNIX 리처드 스톨만이 1983년에 GNU 개발을 처음 시작하였다. 자유 소프트웨어 재단 FSF : 자유 소프트웨어 재단 (Free Software Foundation) 1985년 리처드 스톨만이 설립한 재단이다. 자유 소프트웨어는 사용자가 소프트웨어를 실행, 복제, 배포, 학습, 개작, 향상시킬 수 있는 소프트웨어이다. 오픈 소스 소프트웨어 오픈 소스 소프트웨어 (Open Source Software) 1998년 일부 커뮤니티에서 '자유 소프트웨어' 대신 '오픈 소스 소프트웨어'라는 용어를 사용하기 시작했다. GNU GPL GPL : (General Public License) GPL은 자유 소프트웨..

리눅스의 역사를 알아보자!! [내부링크]

오늘은 리눅스의 역사에 대해 간단하게 알아보는 시간을 갖도록 하겠습니다. 리눅스의 역사 [1960년대 후반] 1969년 프로젝트에 참여했던 벨 연구소 연구원 켄 톰슨이 초기 형태의 UNIX를 개발하였다. [1970년대] 1971년 벨 연구소의 데니스 리치가 C언어를 개발함으로써, 어셈블리 언어로 되어 있던 UNIX가 C언어로 재작성된다. [1980년대 초중반] 1985년 리처드 스톨먼은 FSF 라는 비영리 단체를 설립 후 'GNU 선언문'을 발표한다. 1987년 앤드루 스튜어트 타넨바움은 MINIX를 개발한다. [1990년대 초중반] 핀란드의 헬싱키 대학의 리누스 토발즈가 MINIX의 커널 소스를 고쳐 GNU 시스템에 적합한 커널을 개발하였다. 참고서 : 2023 이기적 리눅스마스터 2급 기본서 내용 :..

Python Socket Programming [내부링크]

오늘은 파이썬으로 TCP/IP 멀티 스레드 소켓 통신을 하는 다중 클라이언트 채팅 프로그램을 구현해 보았다. [기본 로직] [서버 코드 설명] 패키지, 모듈 선언 import socket import threading from queue import Queue - import socket : 통신을 위한 파이썬 기본 패키지에 포함된 내장 socket 모듈 - import threading : 쓰레드를 사용하기 위한 모듈 - from queue import Queue : FIFO(First In First Out)기반의 자료구조인 큐(queue) 모듈 if __name__ == '__main__': - 해당 파일을 직접 실행 한다면 True 큐 생성 send_queue = Queue() PORT 번호 지정..

리눅스가 뭐지?? [내부링크]

요즘 리눅스 마스터 2급 자격증을 따기위해 리눅스에 대해 공부하면서 간단하게 정리해보도록 하겠습니다. 리눅스란 [특징] 오픈 소스 운영 체제이다 멀티유저, 멀티태스킹 운영체제이다. 다중 스레드를 지원하는 네트워크 운영체제이다. 여러 종류의 파일 시스템을 지원하는 운영체제이다. [장단점] 리눅스는 유닉스와 완벽하게 호환 가능하다. 리눅스는 PC용 운영체제보다 안정적이다. 하드웨어 기능을 효과적으로 사용한다. 리눅스는 오픈 소스 운영체제이다, 공개 운영체제이기 때문에 문제점 발생시 기술 지원를 받는 데 한계가 있다. 한글 지운이 미흡하다. 보안상의 취약점이 쉽게 노출될 가능성이 있다. 리눅스 디렉터리 디렉터리란 파일저장소를 의미하며, 리눅스 디렉터리는 계층적 트리 구조로 구성되어 있다. [종류&특징] / :..