Giter Club home page Giter Club logo

staff-device-dhcp-server's Introduction

repo standards badge

Overview

This repository contains the Dockerfile to create the ISC Kea DHCP server docker image. The configuration for this server is managed in the Admin Portal.

The image is published to Amazon Web Services ECR.

High level diagram

diagram source

ISC Kea version

The version of ISC Kea is built from the dockerfile here.

Documentation

CI/CD

Notes

Kea currently does not support connecting to the database over SSL. See kea#15

staff-device-dhcp-server's People

Contributors

astrobinson avatar bagg3rs avatar caitbarnard avatar darey-io avatar dependabot[bot] avatar efuaakum avatar emileswarts avatar gary-h9 avatar jamesgreen-moj avatar jbevan4 avatar jivdhaliwal avatar juddin927 avatar kyphutruong avatar laurentb4 avatar mitchdawson1982 avatar mtouhid avatar neilkidd avatar paulmchenry avatar satishgummadellimoj avatar sb21460 avatar scotteza avatar smjmoj avatar themitchell avatar thip avatar wanieldilson avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

staff-device-dhcp-server's Issues

User access removed, access is now via a team

Hi there

The user emileswarts had Direct Member access to this repository and access via a team.

Access is now only via a team.

You may have less access it is dependant upon the teams access to the repo.

If you have any questions, please post in #ask-operations-engineering on Slack.

This issue can be closed.

On Jira DHCP - Log Enrichment for Security tool

SOC require enhanced logs from the KIA DHCP server.

Test the Kia configuration according to the recommendation in an isolated environment (preferably on a developers workstation) to validate the improved quality of the logs.

https://www.ncsc.gov.uk/files/NCSC_SOC_Feeds.pdf

Example log configuration:

{
    "Dhcp4": {
        "loggers": [
            {
                "name": "kea-dhcp4",
                "severity": "INFO",
                "output_options": [
                    {
                        "output": "/var/log/kea/dhcp4.log",
                        "maxver": 10
                    }
                ]
            },
            {
                "name": "kea-dhcp4.dhcpsrv",
                "severity": "INFO",
                "output_options": [
                    {
                        "output": "/var/log/kea/dhcp4-dhcpsrv.log",
                        "maxver": 10
                    }
                ]
            },
            {
                "name": "kea-dhcp4.leases",
                "severity": "INFO",
                "output_options": [
                    {
                        "output": "/var/log/kea/dhcp4-leases.log",
                        "maxver": 10
                    }
                ]
            }
        ]
    }
}

Acceptance Criteria:

  1. Log configuration tested in local env
  2. Example logs generated from running tests provided to the SOC team

💂‍♀️ SPIKE: Sentry TLS version

"Hi Ministry of Justice,
As you may have seen, Sentry is planning to retire support for TLS 1.0 and 1.1.
Our records show that your organization has some projects using TLS 1.0.
We encourage you to upgrade some of your systems to support TLS 1.2+. We know that in some situations, it may not be possible to switch to newer TLS versions, so alternatively, we ask that you update your Sentry SDK configuration to allow TLS 1.0 usage.
If you are using the domain oXXX.ingest.sentry.io in your Sentry SDK configuration, then you can update it to oXXX.insecure.sentry.io to continue using TLS 1.0.
If you have any questions, please feel free to reply directly to this email.
The Sentry Team"

🐛 DHCP4_PACKET_SEND_FAIL

Describe the bug.

... ERROR DHCP4_PACKET_SEND_FAIL [hwtype=1 a0:ce:c8:97:a1:20], cid=[01:a0:ce:c8:97:a1:20], tid=0xded8f60c: failed to send DHCPv4 packet: pkt4 send failed: sendmsg() returned with an error: Permission denied

I think this started on the 18th of January based on the logs.

To Reproduce

No response

Expected Behaviour

No response

Environment

- OS:
- Browser:
- Browser Version:

Additional context

No response

Collaborator review date expires soon for user emileswarts

Hi there

The user @emileswarts has its access for this repository maintained in code here: https://github.com/ministryofjustice/github-collaborators

The review_after date is due to expire within one month, please update this via a PR if they still require access.

If you have any questions, please post in #ask-operations-engineering on Slack.

Failure to update the review_date will result in the collaborator being removed from the repository via our automation.

Collaborator review date expires soon for user emileswarts

Hi there

The user @emileswarts has its access for this repository maintained in code here: https://github.com/ministryofjustice/github-collaborators

The review_after date is due to expire within one month, please update this via a PR if they still require access.

If you have any questions, please post in #ask-operations-engineering on Slack.

Failure to update the review_date will result in the collaborator being removed from the repository via our automation.

🐛 `sentry-ruby` causing `make build-dev` to fail

Describe the bug.

The bug occurs when running make build-dev. This seems to only occur on Windows users laptops but it should be confirmed.

 => ERROR [staff-device-dhcp-server_dhcp-test 7/7] RUN cd metrics &&   bundle config set no-cache 'true' &&   bundle install                                                                             17.8s
------
 > [staff-device-dhcp-server_dhcp-test 7/7] RUN cd metrics &&   bundle config set no-cache 'true' &&   bundle install:
#0 2.898 Fetching gem metadata from http://rubygems.org/..........
#0 11.03 Resolving dependencies...
#0 11.07 Fetching aws-partitions 1.577.0
#0 11.07 Fetching jmespath 1.6.1
#0 11.07 Using bundler 2.2.32
#0 11.07 Fetching concurrent-ruby 1.1.9
#0 11.07 Using rexml 3.2.5
#0 11.07 Fetching diff-lcs 1.5.0
#0 11.07 Fetching public_suffix 4.0.6
#0 11.07 Fetching aws-eventstream 1.2.0
#0 11.07 Fetching mysql2 0.5.3
#0 11.08 Fetching hashdiff 1.0.1
#0 11.16 Installing aws-eventstream 1.2.0
#0 11.16 Installing hashdiff 1.0.1
#0 11.18 Installing jmespath 1.6.1
#0 11.21 Exception while verifying /usr/local/bundle/cache/concurrent-ruby-1.1.9.gem
#0 11.21 Fetching rspec-support 3.11.0
#0 11.22 Installing aws-partitions 1.577.0
#0 11.23 Installing diff-lcs 1.5.0
#0 11.24 Installing mysql2 0.5.3 with native extensions
#0 11.24 Installing public_suffix 4.0.6
#0 11.25 Fetching sequel 5.56.0
#0 11.28 Installing rspec-support 3.11.0
#0 11.30 Fetching timecop 0.9.5
#0 11.36 Fetching crack 0.4.5
#0 11.44 Installing timecop 0.9.5
#0 11.48 Installing crack 0.4.5
#0 11.53 Installing sequel 5.56.0
#0 17.61 --- ERROR REPORT TEMPLATE -------------------------------------------------------
#0 17.61 
#0 17.61 ```
#0 17.61 NoMethodError: undefined method `size' for nil:NilClass
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package/tar_reader/entry.rb:139:in `read'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:364:in `block in digest'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:361:in `each'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:361:in `digest'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:647:in `verify_entry'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:666:in `block in verify_files'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package/tar_reader.rb:65:in `each'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:665:in `verify_files'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:596:in `block (2 levels) in verify'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package/tar_reader.rb:27:in `new'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:593:in `block in verify'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package/file_source.rb:29:in `open'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package/file_source.rb:29:in `with_read_io'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:592:in `verify'
#0 17.61   /usr/local/lib/ruby/3.0.0/rubygems/package.rb:573:in `spec'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/rubygems_integration.rb:250:in `spec_from_gem'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/source/rubygems.rb:163:in `install'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:54:in `install'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:186:in `do_install'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/worker.rb:62:in `apply_func'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/worker.rb:57:in `block in process_queue'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `loop'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `process_queue'
#0 17.61   /usr/local/lib/ruby/3.0.0/bundler/worker.rb:91:in `block (2 levels) in create_threads'
#0 17.61 ```
#0 17.61 
#0 17.61 ## Environment
#0 17.61 
#0 17.61 ```
#0 17.61 Bundler       2.2.32
#0 17.61   Platforms   ruby, x86_64-linux-musl
#0 17.61 Ruby          3.0.3p157 (2021-11-24 revision 3fb7d2cadc18472ec107b14234933b017a33c14d) [x86_64-linux-musl]
#0 17.61   Full Path   /usr/local/bin/ruby
#0 17.61   Config Dir  /usr/local/etc
#0 17.61 RubyGems      3.2.32
#0 17.61   Gem Home    /usr/local/bundle
#0 17.61   Gem Path    /root/.local/share/gem/ruby/3.0.0:/usr/local/lib/ruby/gems/3.0.0:/usr/local/bundle
#0 17.61   User Home   /root
#0 17.61   User Path   /root/.local/share/gem/ruby/3.0.0
#0 17.61   Bin Dir     /usr/local/bundle/bin
#0 17.61 OpenSSL       
#0 17.61   Compiled    OpenSSL 1.1.1l  24 Aug 2021
#0 17.61   Loaded      OpenSSL 1.1.1o  3 May 2022
#0 17.61   Cert File   /etc/ssl/cert.pem
#0 17.61   Cert Dir    /etc/ssl/certs
#0 17.61 Tools         
#0 17.61   Git         not installed
#0 17.61   RVM         not installed
#0 17.61   rbenv       not installed
#0 17.61   chruby      not installed
#0 17.61 ```
#0 17.61 
#0 17.61 ## Bundler Build Metadata
#0 17.61 
#0 17.61 ```
#0 17.61 Built At          2022-06-29
#0 17.61 Git SHA           unknown
#0 17.61 Released Version  false
#0 17.61 ```
#0 17.61 
#0 17.61 ## Bundler settings
#0 17.61 
#0 17.61 ```
#0 17.61 app_config
#0 17.61   Set via BUNDLE_APP_CONFIG: "/usr/local/bundle"
#0 17.61 no-cache
#0 17.61   Set for the current user (/root/.bundle/config): "true"
#0 17.61 silence_root_warning
#0 17.61   Set via BUNDLE_SILENCE_ROOT_WARNING: true
#0 17.61 ```
#0 17.61 
#0 17.61 ## Gemfile
#0 17.61 
#0 17.61 ### Gemfile
#0 17.61 
#0 17.61 ```ruby
#0 17.61 # frozen_string_literal: true
#0 17.61 
#0 17.61 source "http://rubygems.org"
#0 17.61 ruby File.read(".ruby-version").chomp
#0 17.61 
#0 17.61 gem "aws-sdk-cloudwatch", "~>1.64"
#0 17.61 gem "sequel", "~> 5.56"
#0 17.61 gem "mysql2", "~> 0.5.3"
#0 17.61 gem "sentry-ruby"
#0 17.61 
#0 17.61 group :test do
#0 17.61   gem "rspec"
#0 17.61   gem "timecop"
#0 17.61   gem "webmock"
#0 17.61 end
#0 17.61 ```
#0 17.61 
#0 17.61 ### Gemfile.lock
#0 17.61 
#0 17.61 ```
#0 17.61 GEM
#0 17.61   remote: http://rubygems.org/
#0 17.61   specs:
#0 17.61     addressable (2.8.0)
#0 17.61       public_suffix (>= 2.0.2, < 5.0)
#0 17.61     aws-eventstream (1.2.0)
#0 17.61     aws-partitions (1.577.0)
#0 17.61     aws-sdk-cloudwatch (1.64.0)
#0 17.61       aws-sdk-core (~> 3, >= 3.127.0)
#0 17.61       aws-sigv4 (~> 1.1)
#0 17.61     aws-sdk-core (3.130.1)
#0 17.61       aws-eventstream (~> 1, >= 1.0.2)
#0 17.61       aws-partitions (~> 1, >= 1.525.0)
#0 17.61       aws-sigv4 (~> 1.1)
#0 17.61       jmespath (~> 1.0)
#0 17.61     aws-sigv4 (1.4.0)
#0 17.61       aws-eventstream (~> 1, >= 1.0.2)
#0 17.61     concurrent-ruby (1.1.9)
#0 17.61     crack (0.4.5)
#0 17.61       rexml
#0 17.61     diff-lcs (1.5.0)
#0 17.61     hashdiff (1.0.1)
#0 17.61     jmespath (1.6.1)
#0 17.61     mysql2 (0.5.3)
#0 17.61     public_suffix (4.0.6)
#0 17.61     rexml (3.2.5)
#0 17.61     rspec (3.11.0)
#0 17.61       rspec-core (~> 3.11.0)
#0 17.61       rspec-expectations (~> 3.11.0)
#0 17.61       rspec-mocks (~> 3.11.0)
#0 17.61     rspec-core (3.11.0)
#0 17.61       rspec-support (~> 3.11.0)
#0 17.61     rspec-expectations (3.11.0)
#0 17.61       diff-lcs (>= 1.2.0, < 2.0)
#0 17.61       rspec-support (~> 3.11.0)
#0 17.61     rspec-mocks (3.11.0)
#0 17.61       diff-lcs (>= 1.2.0, < 2.0)
#0 17.61       rspec-support (~> 3.11.0)
#0 17.61     rspec-support (3.11.0)
#0 17.61     sentry-ruby (5.2.1)
#0 17.61       concurrent-ruby (~> 1.0, >= 1.0.2)
#0 17.61       sentry-ruby-core (= 5.2.1)
#0 17.61     sentry-ruby-core (5.2.1)
#0 17.61       concurrent-ruby
#0 17.61     sequel (5.56.0)
#0 17.61     timecop (0.9.5)
#0 17.61     webmock (3.14.0)
#0 17.61       addressable (>= 2.8.0)
#0 17.61       crack (>= 0.3.2)
#0 17.61       hashdiff (>= 0.4.0, < 2.0.0)
#0 17.61 
#0 17.61 PLATFORMS
#0 17.61   ruby
#0 17.61 
#0 17.61 DEPENDENCIES
#0 17.61   aws-sdk-cloudwatch (~> 1.64)
#0 17.61   mysql2 (~> 0.5.3)
#0 17.61   rspec
#0 17.61   sentry-ruby
#0 17.61   sequel (~> 5.56)
#0 17.61   timecop
#0 17.61   webmock
#0 17.61 
#0 17.61 RUBY VERSION
#0 17.61    ruby 2.7.2p137
#0 17.61 
#0 17.61 BUNDLED WITH
#0 17.61    2.1.4
#0 17.61 ```
#0 17.61 
#0 17.61 --- TEMPLATE END ----------------------------------------------------------------
#0 17.61 
#0 17.61 Unfortunately, an unexpected error occurred, and Bundler cannot continue.
#0 17.61 
#0 17.61 First, try this link to see if there are any existing issue reports for this error:
#0 17.61 https://github.com/rubygems/rubygems/search?q=undefined+method+%60size%27+for+nil+NilClass&type=Issues
#0 17.61 
#0 17.61 If there aren't any reports for this error yet, please fill in the new issue form located at https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md, and copy and paste the report template above in there.
------
failed to solve: executor failed running [/bin/sh -c cd metrics &&   bundle config set no-cache 'true' &&   bundle install]: exit code: 1
make: *** [Makefile:31: build-dev] Error 17

To Reproduce

On a windows machine.

  1. Clone the repo / pull latest.
  2. run make build-dev
  3. observe the errors

Expected Behaviour

A successful build. Build succeeds if you remove the mentioned sentry-ruby gem.

Environment

- OS: Windows / WSL

Additional context

No response

⬆ Upgrade `glibc` 2.34 -> 2.35

We encountered errors mentioned here when attempting the upgrade:

2023-01-12T16:51:08.021+00:00CopyError relocating /usr/local/bin/aws: __strcat_chk: symbol not found | Error relocating /usr/local/bin/aws: __strcat_chk: symbol not found
-- | --
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __snprintf_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __vfprintf_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __realpath_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __strdup: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __memcpy_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __vsnprintf_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __strcpy_chk: symbol not found
  | 2023-01-12T16:51:08.021+00:00 | Error relocating /usr/local/bin/aws: __fprintf_chk: symbol not found

👷‍♂️ Dependabot Monitor of Alpine version

User Story

As a… Cloud Ops Admin
I need/want/expect to… have a PR raised when a new version of Alpine is released
So that… we keep our images up to date.

Value / Purpose

Security etc etc

Useful Contacts

No response

Additional Information

No response

Definition of Done

  • Dependabot creates a PR / (or Issue) / (or both) when a new version is released

⚰️ Remove subnet statistics publishing logic from KEA server

User Story

As a engineer
I want to save on resources on the KEA server
So that we can process a high number of lease requests

Value / Purpose

Remove unused code, address tech debt

Useful Contacts

[email protected]

Additional Information

No response

Definition of Done

Example

  • KEA server has been deployed to production with the subnet statistics logic removed.

DHCP server error count high

User Story

    Labels:

Value / Purpose

these alert has been triggered multiple times today

Useful Contacts

No response

Additional Information

No response

Definition of Done

  • Investigate the logs
  • document the findings
  • Generate recommendations if any
  • Another team member has reviewed
  • Tests are green

📝Spike: Connect to DB over SSL

Investigate the statement at the bottom the page relating to connecting to the database over SSL.

Does this need to be done? If so create Issue to do so and update any documentation / ADRs.

Device with no DHCP scope and error logs

User Story

THIS TICKET IS FOR TRACKING WORK WILL BE CARRIED OUT BY LAN/WIFI

As a… Devops engineer I need to be able to filter out known error out of the system and investigate the actual error events
Currently there are hundreds of error events being generated by single source IP:10.150.211.1 and there are no scope defined for this on the portal as a result all queries are failings and logging being overwhelmed by the failure events.

2023-07-27 23:18:16.617 ERROR [kea-dhcp4.bad-packets/119.140609219889976] DHCP4_PACKET_NAK_0001 [hwtype=1 40:b0:34:9c:40:32], cid=[01:40:b0:34:9c:40:32], tid=0x7eba0000: failed to select a subnet for incoming packet, src 10.150.211.1, type DHCPDISCOVER

Value / Purpose

We need to remove this device from the network or allocate a range so it doesn't cause unnecessary error on the DHCP error logging.

Useful Contacts

No response

Additional Information

No response

Definition of Done

  • configure the device/remove/allocate dhcp range
  • Another team member has reviewed
  • Tests are green

🐛 DHCP4_PACKET_PROCESS_STD_EXCEPTION

Describe the bug.

We are sporadically seeing the following error in logs:

  |   | 2022-06-22 11:20:25.470 ERROR [kea-dhcp4.packets/114.139651171683128] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed
  |   | 2022-06-22 11:20:21.724 ERROR [kea-dhcp4.packets/114.139651171683128] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed
  |   | 2022-06-22 11:20:17.312 ERROR [kea-dhcp4.packets/114.139651166448440] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed
  |   | 2022-06-22 11:20:09.300 ERROR [kea-dhcp4.packets/114.139651205913400] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed
  |   | 2022-06-22 11:20:03.628 ERROR [kea-dhcp4.packets/114.139651171203896] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed
  |   | 2022-06-22 09:33:50.237 ERROR [kea-dhcp4.packets/114.139651171060536] DHCP4_PACKET_PROCESS_STD_EXCEPTION exception occurred during packet processing: Empty DUIDs are not allowed

To Reproduce

Unable to reproduce, current theory is that this is a device on the network. When we next see the errors we are going to ask the networks team for a packet capture.

Expected Behaviour

No response

Environment

No response

Additional context

No response

Collaborator review date expires soon for user emileswarts

Hi there

The user @emileswarts has its access for this repository maintained in code here: https://github.com/ministryofjustice/github-collaborators

The review_after date is due to expire within one month, please update this via a PR if they still require access.

If you have any questions, please post in #ask-operations-engineering on Slack.

Failure to update the review_date will result in the collaborator being removed from the repository via our automation.

User access removed, access is now via a team

Hi there

The user emileswarts had Direct Member access to this repository and access via a team.

Access is now only via a team.

You may have less access it is dependant upon the teams access to the repo.

If you have any questions, please post in #ask-operations-engineering on Slack.

This issue can be closed.

🐛 aborted DB connections

Describe the bug.

Errors appearing in /aws/rds/instance/staff-device-production-dhcp-db/error logs of the form:

[Note] Aborted connection 33205 to db: 'staffdeviceproductiondhcp' user: 'dhcpuser' host: 'a.b.c.d' (Got an error reading communication packets)

To Reproduce

No response

Expected Behaviour

No response

Environment

- OS:
- Browser:
- Browser Version:

Additional context

No response

📦 Update Kea version to the current supported stable release 2.0.2

User Story

As a member of the Cloudops team.
I need to ensure that the software versions of the Kea dhcp software are kept up to date.
So that we can ensure that our products remain within windows where the vendor will accept bug reports or questions on the given version.

Value / Purpose

The current version of the Kea DHCP software 1.8.2 goes end of life in July 2022. We therefor need to upgrade to the current stable version 2.0.2 which has a longer end of life in order to retain the ability to raise bugs against the software.

Useful Contacts

Mitch Dawson, Touhidal Islam

Additional Information

https://www.isc.org/kea/

2.0.2 Release Notes - https://downloads.isc.org/isc/kea/2.0.2/Kea-2.0.2-ReleaseNotes.txt

Definition of Done

  • Kea dhcp server software updated to 2.0.2
  • Documentation has been written / updated
  • README has been updated
  • User docs have been updated
  • Another team member has reviewed
  • Tests are green

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.