Coder Social home page Coder Social logo

jzero-io / jzero Goto Github PK

View Code? Open in Web Editor NEW
45.0 5.0 3.0 9.68 MB

Used to create project from templates and generate Server/Client/Model code by proto/api/sql file.

Home Page: https://jzero.jaronnie.com/

License: MIT License

Go 77.39% Smarty 22.12% Dockerfile 0.49%
api cobra go-zero grpc grpc-gateway cloud-native code-generation go microservice proto

jzero's People

Contributors

dependabot[bot] avatar djski avatar jaronnie avatar mintsberry avatar soulping avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jzero's Issues

docker build failing for example.

Hey,

Really liking this approach fro code gen...

I cant seem to get a docker build working on may Mac m2.

I followed the docs: https://github.com/jzero-io/jzero/blob/main/README-EN.md

export ORGANIZATION=gedw99

I am running off main version btw.

At the bottom is the error, but I include all the steps here just in case.

I am using the Makefile that is inside the example project btw. Not my Makefile.

# crreate the test project...
mkdir -p /Users/apple/workspace/go/src/junk/jzero/.data
mkdir -p /Users/apple/workspace/go/src/junk/jzero/.data/workspace
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && jzero new test-proj
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && touch go.work
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && go work use test-proj

# gen
# generate server code ...
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen
Enter working dir /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj
Start to generate proto code. 
Using proto file desc/proto/v1/hello.proto
Done
Start to generate internal/server/server.go
Done
Start to generate api code.
Using api file desc/api/3954155950.api
Done
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && go mod tidy
go: finding module for package github.com/common-nighthawk/go-figure
go: finding module for package github.com/spf13/cobra
go: finding module for package github.com/zeromicro/go-zero/core/conf
go: finding module for package github.com/zeromicro/go-zero/rest/httpx
go: finding module for package github.com/jzero-io/jzero-contrib/gwx
go: finding module for package github.com/zeromicro/go-zero/gateway
go: finding module for package github.com/zeromicro/go-zero/core/proc
go: finding module for package github.com/zeromicro/go-zero/core/logx
go: finding module for package github.com/jzero-io/jzero-contrib/swaggerv2
go: finding module for package github.com/zeromicro/go-zero/zrpc
go: finding module for package github.com/zeromicro/go-zero/rest
go: finding module for package github.com/zeromicro/go-zero/core/service
go: finding module for package github.com/zeromicro/go-zero/core/logc
go: finding module for package github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options
go: found github.com/common-nighthawk/go-figure in github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be
go: found github.com/jzero-io/jzero-contrib/gwx in github.com/jzero-io/jzero-contrib v0.5.0
go: found github.com/spf13/cobra in github.com/spf13/cobra v1.8.1
go: found github.com/zeromicro/go-zero/core/conf in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/logx in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/proc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/service in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/gateway in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/zrpc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/jzero-io/jzero-contrib/swaggerv2 in github.com/jzero-io/jzero-contrib v0.5.0
go: found github.com/zeromicro/go-zero/rest in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/rest/httpx in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/logc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options in github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0
# generate swagger json
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen swagger
# generate http sdk
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen sdk
# generate zrpcclient
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen zrpcclient
# gen docs
#cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen doc
apple@apples-MacBook-Pro jzero % 

# run server to check it compiles, etc 
# Starting rpc server: http://localhost:8000
# Starting gateway server:  http://localhost:8001/swagger
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && go run main.go server
       __   ________   _______ .______        ______
      |  | |       /  |   ____||   _  \      /  __  \
      |  | `---/  /   |  |__   |  |_)  |    |  |  |  |
.--.  |  |    /  /    |   __|  |      /     |  |  |  |
|  `--'  |   /  /----.|  |____ |  |\  \----.|  `--'  |
 \______/   /________||_______|| _| `._____| \______/
2024-08-23T14:31:54.968+10:00    info   Starting rpc server at 0.0.0.0:8000...  caller=cmd/server.go:80
2024-08-23T14:31:54.968+10:00    info   Starting gateway server at 0.0.0.0:8001...      caller=cmd/server.go:81



# build binary in place
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && make build
make[1]: Entering directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
make[1]: Leaving directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
# FAILS: Something to do with §TARGETARCH i think. !
# build docker in place
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && make docker
make[1]: Entering directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
#0 building with "galene" instance using docker-container driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 609B done
#1 WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
#1 WARN: RedundantTargetPlatform: Setting platform to predefined $TARGETPLATFORM in FROM is redundant as this is the default behavior (line 18)
#1 DONE 0.0s

#2 [auth] jzero-io/jzero:pull token for ghcr.io
#2 DONE 0.0s

#3 [internal] load metadata for ghcr.io/jzero-io/jzero:latest
#3 ...

#4 [internal] load metadata for docker.io/library/alpine:latest
#4 DONE 1.0s

#3 [internal] load metadata for ghcr.io/jzero-io/jzero:latest
#3 DONE 1.3s

#5 [internal] load .dockerignore
#5 transferring context: 2B done
#5 DONE 0.0s

#6 [builder 1/4] FROM ghcr.io/jzero-io/jzero:latest@sha256:f390d5f7b0032dde06a84dc4056d53d4df8c4d36e9dcc1c560ee611950811963
#6 resolve ghcr.io/jzero-io/jzero:latest@sha256:f390d5f7b0032dde06a84dc4056d53d4df8c4d36e9dcc1c560ee611950811963 0.0s done
#6 DONE 0.0s

#7 [stage-1 1/3] FROM docker.io/library/alpine:latest@sha256:0a4eaa0eecf5f8c050e5bba433f58c052be7587ee8af3e8b3910ef9ab5fbe9f5
#7 resolve docker.io/library/alpine:latest@sha256:0a4eaa0eecf5f8c050e5bba433f58c052be7587ee8af3e8b3910ef9ab5fbe9f5 0.0s done
#7 DONE 0.0s

#8 [stage-1 2/3] WORKDIR /dist
#8 CACHED

#9 [internal] load build context
#9 transferring context: 77.81MB 0.5s done
#9 DONE 0.5s

#10 [builder 2/4] WORKDIR /usr/local/go/src/app
#10 CACHED

#11 [builder 3/4] COPY ./ ./
#11 DONE 0.2s

#12 [builder 4/4] RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags="$LDFLAGS" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc
#12 0.054 go: downloading github.com/fullstorydev/grpcurl v1.9.1
#12 0.054 go: downloading github.com/jhump/protoreflect v1.16.0
#12 0.070 go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
#12 0.086 go: downloading go.etcd.io/etcd/client/v3 v3.5.15
#12 0.157 go: downloading k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
#12 4.149 /go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/[email protected]/runtime/handler.go:13:2: google.golang.org/genproto/googleapis/[email protected]: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/gateway/server.go:9:2: github.com/fullstorydev/[email protected]: read "https://goproxy.cn/github.com/fullstorydev/grpcurl/@v/v1.9.1.zip": stream error: stream ID 7; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/gateway/server.go:11:2: github.com/jhump/[email protected]: read "https://goproxy.cn/github.com/jhump/protoreflect/@v/v1.16.0.zip": stream error: stream ID 5; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/gateway/internal/descriptorsource.go:9:2: github.com/jhump/[email protected]: read "https://goproxy.cn/github.com/jhump/protoreflect/@v/v1.16.0.zip": stream error: stream ID 5; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/gateway/internal/descriptorsource.go:10:2: google.golang.org/genproto/googleapis/[email protected]: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/core/discov/internal/etcdclient.go:8:2: go.etcd.io/etcd/client/[email protected]: read "https://goproxy.cn/go.etcd.io/etcd/client/v3/@v/v3.5.15.zip": stream error: stream ID 1; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/util/validation/validation.go:28:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/labels/selector.go:30:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/util/cache/expiring.go:24:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/util/flowcontrol/backoff.go:25:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/util/flowcontrol/backoff.go:26:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/shared_informer.go:30:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:45:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/delta_fifo.go:28:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 ERROR: process "/bin/sh -c CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags=\"$LDFLAGS\" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc" did not complete successfully: exit code: 1
------
 > [builder 4/4] RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags="$LDFLAGS" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc:
4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/gateway/internal/descriptorsource.go:10:2: google.golang.org/genproto/googleapis/[email protected]: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/github.com/zeromicro/[email protected]/core/discov/internal/etcdclient.go:8:2: go.etcd.io/etcd/client/[email protected]: read "https://goproxy.cn/go.etcd.io/etcd/client/v3/@v/v3.5.15.zip": stream error: stream ID 1; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/util/validation/validation.go:28:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/labels/selector.go:30:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/pkg/util/cache/expiring.go:24:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/util/flowcontrol/backoff.go:25:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/util/flowcontrol/backoff.go:26:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/shared_informer.go:30:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:45:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/[email protected]/tools/cache/delta_fifo.go:28:2: k8s.io/[email protected]: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
------

 3 warnings found (use docker --debug to expand):
 - FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
 - RedundantTargetPlatform: Setting platform to predefined $TARGETPLATFORM in FROM is redundant as this is the default behavior (line 18)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 6)
Dockerfile:12
--------------------
  11 |     
  12 | >>> RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags="$LDFLAGS" -o /dist/app main.go \
  13 | >>>     && jzero gen swagger \
  14 | >>>     && cp -r etc /dist/etc \
  15 | >>>     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc
  16 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags=\"$LDFLAGS\" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc" did not complete successfully: exit code: 1
make[1]: *** [Makefile:23: docker] Error 1
make[1]: Leaving directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
make: *** [Makefile:130: run-6-build] Error 2
apple@apples-MacBook-Pro jzero % 

``

jzero gen --remove-suffix error

syntax = "proto3";

package hellopb;

import "google/api/annotations.proto";

option go_package = "./pb/hellopb";

message Empty {}
  
message SayHelloResponse {
      string message = 1;
}

service hello {
    rpc SayHello(Empty) returns(SayHelloResponse) {
        option (google.api.http) = {
            get: "/api/v1/hello"
        };
    };
}

service helloV2 {
    rpc SayHelloV2(Empty) returns(SayHelloResponse) {
        option (google.api.http) = {
            get: "/api/v2/hello"
        };
    };
}

error:

Error: open /Users/jaronnie/Desktop/jaronnie/github/jzero-io/examples/simplegateway/internal/server/hellov2/hellov2.go: no such file or directory

gopathwalk: scanning directory: operation not permitted in macos

2024/05/20 17:30:08 gopathwalk: scanning directory /Users/jaronnie: open /Users/jaronnie/Library/IntelligencePlatform: operation not permitted
2024/05/20 17:30:13 gopathwalk: scanning directory /Users/jaronnie: open /Users/jaronnie/Library/Weather: operation not permitted
2024/05/20 17:30:20 gopathwalk: scanning directory /Users/jaronnie: open /Users/jaronnie/Library/DoNotDisturb: operation not permitted

docker makefile changes.

Hey @jaronnie

what do you think about this...

Update docker file to:

  1. Print statement for override confirmation.
  2. rename "build" to go-build"
  3. new "go-run" target to run the binary
  4. add "docker-run" for running the docker build, for local confirmation.
ORGANIZATION = "organization"
APP = "test-proj"

VERSION := $(shell git describe --tags --always --match='v*' 2>/dev/null)
ifeq ($(VERSION),)
    VERSION = "latest"
endif

COMMIT = $(shell git rev-parse --short HEAD 2>/dev/null)
ifeq ($(COMMIT),)
    COMMIT = ""
endif

DATE = `date "+%Y-%m-%d %H:%M:%S"`
ARCH = `go env GOARCH`

.PHONY: print
print:
	@echo ""
	@echo "ORGANIZATION:   $(ORGANIZATION)"
	@echo "APP:            $(APP)"
	@echo "VERSION:        $(VERSION)"
	@echo "COMMIT:         $(COMMIT)"
	@echo "DATE:           $(DATE)"
	@echo "ARCH:           $(ARCH)"
	@echo ""

.PHONY: go-build
go-build:
	@go build -ldflags "-X 'test-proj/cmd.Date=$(DATE)' -X 'test-proj/cmd.Version=$(VERSION)' -X 'test-proj/cmd.Commit=$(COMMIT)'" -o $(APP) main.go

.PHONY: go-run
go-run:
	./$(APP) server


.PHONY: docker-build
docker-build:
	@docker buildx build --platform linux/$(ARCH) --progress=plain -t $(ORGANIZATION)/$(APP):$(VERSION) . --load

.PHONY: docker-run
docker-run:
	# TODO...
	#@docker ...

.PHONY: docker-push
push:
	@docker buildx create --use --name=mybuilder --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master 2> /dev/null || true
	@docker buildx build --platform linux/amd64,linux/arm64 --progress=plain -t $(ORGANIZATION)/$(APP):$(VERSION) . --push

Then devs can wrap this make file easily on top. This keeps the code generated docker file generic.

# extra variables for makefile
MK=ORGANIZATION=gedw99 APP=test

run-6-build:
	# check values
	$(RUN_PROJ) $(MAKE) $(MK) print
	# build binary in place
	$(RUN_PROJ) $(MAKE) $(MK) go-build
	# build dockerin place
	$(RUN_PROJ) $(MAKE) $(MK) docker-build

run-7-run:
	# run binary in place
	$(RUN_PROJ) $(MAKE) $(MK) go-run

run-8-push:
	# push docker to 
	$(RUN_PROJ) $(MAKE) docker-push

``

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.