Usage
git clone git@github.com: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 | Project name | 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 |
- 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.
- 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.
- Module 00 - 00 is a simple project that prints a sentence.
- Module 00 - 01 is creating the phonebook.
- 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]
Usage
cd juha_refo/success_mission/minishell
make; ./minishell
- It's an assignment to create a small shell.
- 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]
- %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