Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into add-persistence-support
Browse files Browse the repository at this point in the history
  • Loading branch information
rohitpaulk committed Sep 29, 2023
2 parents 5ecdef9 + 622cd51 commit 35255a7
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 24 deletions.
4 changes: 2 additions & 2 deletions compiled_starters/javascript/codecrafters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ debug: false
# Use this to change the JavaScript version used to run your code
# on Codecrafters.
#
# Available versions: nodejs-16
language_pack: nodejs-16
# Available versions: nodejs-18
language_pack: nodejs-18
36 changes: 18 additions & 18 deletions course-definition.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ name: "Build your own Redis"
short_name: "Redis"
release_status: "live"

description_md: |
description_md: |-
In this challenge, you'll build a toy Redis clone
that's capable of handling basic commands like PING, GET
and SET. Along the way, we'll learn about event loops, the Redis
Protocol and more.
short_description_md: |
short_description_md: |-
Learn about TCP servers, the Redis protocol and more
completion_percentage: 30
Expand Down Expand Up @@ -40,15 +40,15 @@ marketing:
author_description: "Software Engineer, Stripe"
author_avatar: "https://codecrafters.io/images/external/testimonials/charles-guo.png"
link: "https://github.com/shaldengeki"
text: |
text: |-
The Redis challenge was extremely fun. I ended up having to read the
Redis Protocol specification doc pretty carefully in its entirety! The result
felt like lightly-guided independent study, if that makes sense. (Which, again, was lots of fun)
- author_name: "Patrick Burris"
author_description: "Senior Software Developer, CenturyLink"
author_avatar: "https://codecrafters.io/images/external/testimonials/patrick-burris.jpeg"
link: "https://github.com/Jumballaya"
text: |
text: |-
I think the instant feedback right there in the git push is really cool.
Didn't even know that was possible!
Expand All @@ -65,7 +65,7 @@ extensions:
# - slug: "streams"
# name: "Streams"
# description_markdown: |
# description_markdown: |-
# In this challenge extension you'll add support for the [Stream][redis-streams-data-type] data type to your Redis implementation.

# Along the way you'll learn about commands like [XADD][xadd-command], [XRANGE][xrange-command] and more.
Expand All @@ -78,10 +78,10 @@ stages:
- slug: "init"
concept_slugs: ["network-protocols", "tcp-overview"]
name: "Bind to a port"
description_md: |
description_md: |-
In this stage, your task is to start a TCP server on port 6379, the default port that redis uses.
difficulty: very_easy
marketing_md: |
marketing_md: |-
In this stage, you'll start a TCP server on port 6379, which is the
default port that Redis uses.
tester_source_code_url: "https://github.com/codecrafters-io/redis-tester/blob/a58b9d58b33870fe26a164c0e323f809275a7250/internal/test_bind.go#L11"
Expand All @@ -90,7 +90,7 @@ stages:
concept_slugs: ["network-protocols", "tcp-overview"]
name: "Respond to PING"
difficulty: easy
description_md: |
description_md: |-
In this stage, you'll respond to the
[PING](https://redis.io/commands/ping) command.
Expand Down Expand Up @@ -123,7 +123,7 @@ stages:
concept_slugs: ["network-protocols", "tcp-overview"]
name: "Respond to multiple PINGs"
difficulty: easy
description_md: |
description_md: |-
In this stage, you'll respond to multiple
[PING](https://redis.io/commands/ping) commands sent by the same connection.
Expand Down Expand Up @@ -155,7 +155,7 @@ stages:
Just like the previous stage, you can hardcode `+PONG\r\n` as the response for this stage. We'll get to parsing
client input in later stages.
marketing_md: |
marketing_md: |-
In this stage, you'll respond to multiple
[PING](https://redis.io/commands/ping) commands sent by the same client.
tester_source_code_url: "https://github.com/codecrafters-io/redis-tester/blob/a58b9d58b33870fe26a164c0e323f809275a7250/internal/test_ping_pong.go#L35"
Expand All @@ -164,7 +164,7 @@ stages:
concept_slugs: ["network-protocols", "tcp-overview"]
name: "Handle concurrent clients"
difficulty: medium
description_md: |
description_md: |-
In this stage, your server will need to handle multiple concurrent
clients. Just like the previous stages, all clients will only send `PING`
commands for now.
Expand All @@ -186,7 +186,7 @@ stages:
Since the tester client _only_ sends the PING command at the moment, it's okay to
ignore what the client sends and hardcode a response. We'll get to parsing
client input in later stages.
marketing_md: |
marketing_md: |-
In this stage, you'll add support for multiple concurrent clients to your
Redis server. To achieve this you'll use an [Event
Loop](https://en.wikipedia.org/wiki/Event_loop),
Expand All @@ -196,7 +196,7 @@ stages:
- slug: "echo"
name: "Implement the ECHO command"
difficulty: medium
description_md: |
description_md: |-
In this stage, you'll respond to the
[ECHO](https://redis.io/commands/echo) command.
Expand All @@ -209,7 +209,7 @@ stages:
Seems confusing? Read up about [sending commands to a Redis
server](https://redis.io/docs/reference/protocol-spec/#send-commands-to-a-redis-server).
marketing_md: |
marketing_md: |-
In this stage, you'll respond to the
[ECHO](https://redis.io/commands/echo) command. You'll parse user input
according to the [the Redis protocol
Expand All @@ -220,12 +220,12 @@ stages:
- slug: "set_get"
name: "Implement the SET & GET commands"
difficulty: medium
description_md: |
description_md: |-
In this stage, you'll need to implement the [SET](https://redis.io/commands/set) &
[GET](https://redis.io/commands/get) commands. For now, you can ignore all extra
options for `SET` and just implement the simple form: `SET key value`. You'll add support
for expiry in the next stage.
marketing_md: |
marketing_md: |-
In this stage, you'll need to implement the
[SET](https://redis.io/commands/set) &
[GET](https://redis.io/commands/get) commands.
Expand All @@ -234,7 +234,7 @@ stages:
- slug: "expiry"
name: "Expiry"
difficulty: medium
description_md: |
description_md: |-
In this stage, you'll need to support setting a key with an expiry. The
expiry is provided using the "PX" argument to the
[SET](https://redis.io/commands/set) command.
Expand All @@ -248,7 +248,7 @@ stages:
The [time](https://hackage.haskell.org/package/time) package is available
to use as a dependency.
{{/lang_is_haskell}}
marketing_md: |
marketing_md: |-
In this stage, you'll add support for setting a key with an expiry. The
expiry is provided using the "PX" argument to the
[SET](https://redis.io/commands/set) command.
Expand Down
1 change: 1 addition & 0 deletions dockerfiles/nodejs-18.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
FROM node:18.18.0-alpine3.17
4 changes: 2 additions & 2 deletions solutions/javascript/01-init/code/codecrafters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ debug: false
# Use this to change the JavaScript version used to run your code
# on Codecrafters.
#
# Available versions: nodejs-16
language_pack: nodejs-16
# Available versions: nodejs-18
language_pack: nodejs-18
4 changes: 2 additions & 2 deletions starter_templates/codecrafters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ language_pack: go-1.19
language_pack: php-7.4
{{/ language_is_php }}
{{# language_is_javascript }}
# Available versions: nodejs-16
language_pack: nodejs-16
# Available versions: nodejs-18
language_pack: nodejs-18
{{/ language_is_javascript }}
{{# language_is_c }}
# Available versions: c-9.2
Expand Down

0 comments on commit 35255a7

Please sign in to comment.