Usage
git clone [email protected]:contemplation-person/juha_refo.git --recursive-submodul
This repository is the outcome of my project-based learning (PBL) at 42 Seoul.
All assignments were written for the Intel Mac environment.
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 |
web programming
- 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.
- Rather than using a separate library to maintain the state, we implemented it individually using drilling technology.
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)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. ---- The shell prompt runs Docker based on the Dockerfile and Docker Compose file I have written.
- When you navigate from the default page to the login page, you can log in.
- Write a post on the bulletin board.
chapter 00 : I have learned about namespaces, classes, member functions, stdio streams, initialization lists, static, const, and some other basic stuff.
- 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.
- This program used C++ memory allocation techniques to create an object called "zombie."
Usage
cd juha_refo/success_mission/CPP/CPP01/ex00
make
./Zombie
- I have written a C++ program that allocates and deallocates a zombie array.
Usage
cd juha_refo/success_mission/CPP/CPP01/ex01
make
./Zombie
- I studied pointers and references, and confirmed the differences through output.
Usage
cd juha_refo/success_mission/CPP/CPP01/ex02
make
./Brain
- 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
- 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"
- 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
- 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
- The topic is learning about CPP's orthodox canonical form and polymorphism.
Usage
cd juha_refo/success_mission/CPP/CPP02/ex00
make
./Fixed
- I study fixed point numbers
Usage
cd juha_refo/success_mission/CPP/CPP02/ex01
make
./Fixed
- 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.
- Create a monster that can attack, repair itself, and display damage.
Usage
cd juha_refo/success_mission/CPP/CPP03/ex00
make
./ClapTrap
- 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
- 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
- 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
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]
It's an assignment to create a small shell.
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
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
The task is to implement pipes, a shell command-line option.
Usage
cd juha_refo/success_mission/printf
make; ./pipex [input_filename] [cmd] [cmd] [output_filename]
make printf function
- %c, %s, %p, %d, %i, %u, %x, %X, %% of actual printf were implemented using variable arguments.
Usage
cd juha_refo/success_mission/printf
make
The libft task is to create my own static C library.
- 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