contemplation-person / juha_refo

42 Seoul

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hi Juha_refo

Usage

git clone git@github.com:contemplation-person/juha_refo.git --recursive-submodul

summary

This repository is the outcome of my project-based learning (PBL) at 42 Seoul.
All assignments were written for the Intel Mac environment.

contents

index (readme) Project name (refo) Simple explanation Skill Collaboration
1 pong-nyan make ping-pong game website Typescript, next, nest, docker, postgresql, metter.js 5 people
2 IRC make irc chatting program cpp 3 people
3 inception written Dockerfiles for WordPress, Nginx, and MariaDB, and bundled them together using Docker Compose, then deployed them to Docker. docker single project
4 CPP I have acquired fundamental C++ skills. cpp single project
5 philo I implemented the well-known Dining Philosophers problem and experimented with multi-threading. C single project
6 minishell make small shell C 2 people
7 so_long Implementing a Small 2D Game using MLX C single project
8 pipex Implementing Pipe Communication. C single project
9 printf Implementing c function printf, using the Variadic Arguments C single project
10 libft Creating My Own Library C single project

Detail

pong-nyan

web programming

main

  • In this assignment, the login function was implemented using Oauth. Oauth

  • If users wish, they can set up 2FA using Google Authenticator. 2fa

  • We have implemented an advanced game that combines the basic ping pong game and pinball. game game scoreboard1 scoreboard1

  • Chat channels and chat rooms have also been implemented, and user profiles can also be changed. chat chat

  • We also implemented a score page that shows each user's recorded score. score

  • We used nginx to connect the socket, front, and backend.
  • User match records are stored in postgresql.
  • A docker compose file was created to allow development regardless of the development environment, nest was used for the backend, and react and next were used for the frontend. docker
  • Rather than using a separate library to maintain the state, we implemented it individually using drilling technology.

top


IRC

IRC

We created a chat server using the basic Internet Relay Chat Protocol. (socket programming) * I created a server using multiplexing technology using the select function. * I was in charge of server implementation and implemented the channel topic and mode. [top](#contents)

INCEPTION

docker programming * This is a project that involves writing Dockerfiles and Docker Compose files to make Docker and Docker Compose work. To verify this, you need to make nginx, MariaDB, and WordPress run, and display the WordPress page. ---

shell_prompt shell_prompt

  • The shell prompt runs Docker based on the Dockerfile and Docker Compose file I have written.

basic_webpage basic_weblogin

  • When you navigate from the default page to the login page, you can log in.

basic_dashboard Bulletin_board basic_Bulletin_board basic_Bulletin_board

  • Write a post on the bulletin board.

top


CPP

chapter 00 : I have learned about namespaces, classes, member functions, stdio streams, initialization lists, static, const, and some other basic stuff.

cpp00

  • Module 00 - 00 is a simple project that prints a sentence.
  • Module 00 - 01 is creating the phonebook.

Usage

cd juha_refo/success_mission/CPP/CPP00/ex*
make
chapter 01 : I have learned about Memory allocation, pointers to members, references, switch statement.

cpp01_00

cpp01_00

  • This program used C++ memory allocation techniques to create an object called "zombie."

Usage

cd juha_refo/success_mission/CPP/CPP01/ex00
make
./Zombie

cpp01_01

cpp01_01

  • I have written a C++ program that allocates and deallocates a zombie array.

Usage

cd juha_refo/success_mission/CPP/CPP01/ex01
make
./Zombie

cpp01_02

cpp01_02

  • I studied pointers and references, and confirmed the differences through output.

Usage

cd juha_refo/success_mission/CPP/CPP01/ex02
make
./Brain

cpp01_03

cpp01_03

  • I gained a clearer understanding of the differences between pointers and references through the specific situation of equipping weapons.

Usage

cd juha_refo/success_mission/CPP/CPP01/ex03
make
./Human

cpp01_04

cpp01_04

  • A program that reads the content of a file and replaces specific words or sentences with others.

Usage

cd juha_refo/success_mission/CPP/CPP01/ex03
make
./Replace infile "let it" "go"

cpp01_05

cpp01_05

  • The assignment is to learn writing elegant code using the switch statement.
  • command : debug, info, warning, error

Usage

cd juha_refo/success_mission/CPP/CPP01/ex03
make
./Harl debug

cpp01_06

cpp01_06

  • The assignment is to learn writing elegant code using the switch statement.
  • command : debug, info, warning, error

Usage

cd juha_refo/success_mission/CPP/CPP01/ex03
make
./Harl debug
chapter 02 : I have learned about Ad-hoc polymorphism, operator overloadingand Orthodox Canonical class form

cpp02_00

cpp02_00

  • The topic is learning about CPP's orthodox canonical form and polymorphism.

Usage

cd juha_refo/success_mission/CPP/CPP02/ex00
make
./Fixed

cpp02_01

cpp02_01

  • I study fixed point numbers

Usage

cd juha_refo/success_mission/CPP/CPP02/ex01
make
./Fixed

cpp02_02

cpp02_02

  • I study operator overloading

Usage

cd juha_refo/success_mission/CPP/CPP02/ex02
make
./Fixed
chapter 03 : This chapter focuses on learning about inheritance in C++. Additionally, in this assignment, I studied about diamond inheritance.

cpp03_00

cpp03_00

  • Create a monster that can attack, repair itself, and display damage.

Usage

cd juha_refo/success_mission/CPP/CPP03/ex00
make
./ClapTrap

cpp03_01

cpp03_01

  • create ScavTrap by inheriting from the previously made ClapTraps, using constructors and destructors for ScavTrap. The functionalities for attack, repair, and damage display are used separately. Additionally, unlike ClapTraps, ScavTrap has defense capabilities.

Usage

cd juha_refo/success_mission/CPP/CPP03/ex01
make
./ScavTrap

cpp03_02

cpp03_02

  • Implement FragTrap, which inherits from ClapTrap, and ensure it displays different messages upon creation and destruction.Additionally, create a function named highFivesGuys.

Usage

cd juha_refo/success_mission/CPP/CPP03/ex02
make
./FragTrap

cpp03_03

cpp03_03

  • Inherit from ClapTrap and FragTrap using the name DiamondTrap, and implement a function called whoAmI to examine what occurs with "diamond inheritance."

Usage

cd juha_refo/success_mission/CPP/CPP03/ex03
make
./DiamondTrap

top


philo

Philosophers

A program that implements the famous dining philosophers problem in code. * I used multithreading to write the program. * The output may vary depending on the user's computer environment.

Usage

  • 1 < Number of philosohpers < 100
  • eating time + sleeping time * 1.4 < Total suvival time
  • 0 < Meal time per philosopher < INT_MAX
cd juha_refo/success_mission/philo
make; ./philo 20 500 200 200 4
#./philo [Number of philosophers] [Total survival time] [Eating time] [Sleeping time] [Meal time per philosopher]

top


Minishell

It's an assignment to create a small shell.

minishell

Usage

cd juha_refo/success_mission/minishell
make; ./minishell
  • Handle ’ (single quote) which should prevent the shell from interpreting the meta- characters in the quoted sequence.
  • Handle " (double quote) which should prevent the shell from interpreting the meta- characters in the quoted sequence except for $ (dollar sign).
  • Implement redirections:
  • < should redirect input.
  • > should redirect output.
  • << should be given a delimiter, then read the input until a line containing the delimiter is seen. However, it doesn’t have to update the history!
  • >> should redirect output in append mode.
  • Implement pipes (| character). The output of each command in the pipeline is connected to the input of the next command via a pipe.
  • Handle environment variables ($ followed by a sequence of characters) which should expand to their values.
  • Handle $? which should expand to the exit status of the most recently executed foreground pipeline.
  • Handle ctrl-C, ctrl-D and ctrl-\ which should behave like in bash.
  • In interactive mode:
  • ctrl-C displays a new prompt on a new line.
  • ctrl-D exits the shell.
  • ctrl-\ does nothing.
  • Your shell must implement the following builtins:
  • echo with option -n
  • cd with only a relative or absolute path
  • pwd with no options
  • export with no options
  • unset with no options
  • env with no options or arguments
  • exit with no options

top


So_long

so_long

It's a simple 2D program where you pass through the exit after collecting all the coins.

Usage

cd juha_refo/success_mission/so_long
make; ./so_long ./map/13.ber

Movement keys: Up : w Down : s Left : a Right: d

game clear condition

  • Collect all the coins and exit pipe

top


Pipex

The task is to implement pipes, a shell command-line option.

pipex

Usage

cd juha_refo/success_mission/printf
make; ./pipex [input_filename] [cmd] [cmd] [output_filename]

top


Printf

make printf function

Printf

  • %c, %s, %p, %d, %i, %u, %x, %X, %% of actual printf were implemented using variable arguments.

Usage

cd juha_refo/success_mission/printf
make

top


Libft

The libft task is to create my own static C library.

Libft

  • Some functions were created identically to the standard C library, and functions such as list functions and get_next_line were created as needed.

Usage

cd juha_refo/success_mission/libft
make

top

About

42 Seoul


Languages

Language:C 64.0%Language:C++ 23.4%Language:Objective-C 5.9%Language:Makefile 5.7%Language:PHP 0.5%Language:Shell 0.3%Language:Dockerfile 0.2%