GithubHelp home page GithubHelp logo

gin-admin / gin-admin-cli Goto Github PK

View Code? Open in Web Editor NEW
107.0 5.0 51.0 402 KB

A gin-admin efficiency assistant that provides project initialization, code generation, greatly improves work efficiency, and quickly completes the development of business logic.

Home Page: https://github.com/LyricTian/gin-admin

License: MIT License

Go 64.98% Makefile 0.27% Smarty 34.75%
gin-admin gin go-admin

gin-admin-cli's Introduction

GIN-Admin efficiency assistant

A gin-admin efficiency assistant that provides project initialization, code generation, greatly improves work efficiency, and quickly completes the development of business logic.

Dependencies

  • Go 1.19+
  • Wire go install github.com/google/wire/cmd/wire@latest
  • Swag go install github.com/swaggo/swag/cmd/swag@latest

Quick start

Get and install

go install github.com/gin-admin/gin-admin-cli/v10@latest

Create a new project

gin-admin-cli new -d ~/go/src --name testapp --desc 'A test API service based on golang.' --pkg 'github.com/xxx/testapp'

Quick generate a struct

gin-admin-cli gen -d ~/go/src/testapp -m SYS --structs Dictionary --structs-comment "Dictionaries management" --structs-router-prefix

Use config file to generate struct

More examples can be found in the examples directory

Using Dictionary as an example, the configuration file is as follows dictionary.yaml:

- name: Dictionary
  comment: Dictionaries management
  disable_pagination: true
  fill_gorm_commit: true
  fill_router_prefix: true
  tpl_type: "tree"
  fields:
    - name: Code
      type: string
      comment: Code of dictionary (unique for same parent)
      gorm_tag: "size:32;"
      form:
        binding_tag: "required,max=32"
    - name: Name
      type: string
      comment: Display name of dictionary
      gorm_tag: "size:128;index"
      query:
        name: LikeName
        in_query: true
        form_tag: name
        op: LIKE
      form:
        binding_tag: "required,max=128"
    - name: Description
      type: string
      comment: Details about dictionary
      gorm_tag: "size:1024"
      form: {}
    - name: Sequence
      type: int
      comment: Sequence for sorting
      gorm_tag: "index;"
      order: DESC
      form: {}
    - name: Status
      type: string
      comment: Status of dictionary (disabled, enabled)
      gorm_tag: "size:20;index"
      query: {}
      form:
        binding_tag: "required,oneof=disabled enabled"
./gin-admin-cli gen -d ~/go/src/testapp -m SYS -c dictionary.yaml

Use ant-design-pro-v5 template to generate struct and UI

- name: Parameter
  comment: System parameter management
  generate_fe: true
  fe_tpl: "ant-design-pro-v5"
  extra:
    ParentName: system
    IndexAntdImport: "Tag"
    IndexProComponentsImport: ""
    FormAntdImport: ""
    FormProComponentsImport: "ProFormText, ProFormTextArea, ProFormSwitch"
    IncludeCreatedAt: true
    IncludeUpdatedAt: true
  fe_mapping:
    services.typings.d.ts.tpl: "src/services/system/parameter/typings.d.ts"
    services.index.ts.tpl: "src/services/system/parameter/index.ts"
    pages.components.form.tsx.tpl: "src/pages/system/Parameter/components/SaveForm.tsx"
    pages.index.tsx.tpl: "src/pages/system/Parameter/index.tsx"
    locales.en.page.ts.tpl: "src/locales/en-US/pages/system.parameter.ts"
  fields:
    - name: Name
      type: string
      comment: Name of parameter
      gorm_tag: "size:128;index"
      unique: true
      query:
        name: LikeName
        in_query: true
        form_tag: name
        op: LIKE
      form:
        binding_tag: "required,max=128"
      extra:
        ColumnComponent: >
          {
            title: intl.formatMessage({ id: 'pages.system.parameter.form.name' }),
            dataIndex: 'name',
            width: 160,
            key: 'name', // Query field name
          }
        FormComponent: >
          <ProFormText
           name="name"
           label={intl.formatMessage({ id: 'pages.system.parameter.form.name' })}
           placeholder={intl.formatMessage({ id: 'pages.system.parameter.form.name.placeholder' })}
           rules={[
             {
               required: true,
               message: intl.formatMessage({ id: 'pages.system.parameter.form.name.required' }),
             },
           ]}
           colProps={{ span: 24 }}
           labelCol={{ span: 2 }}
          />
    - name: Value
      type: string
      comment: Value of parameter
      gorm_tag: "size:1024;"
      form:
        binding_tag: "max=1024"
      extra:
        ColumnComponent: >
          {
            title: intl.formatMessage({ id: 'pages.system.parameter.form.value' }),
            dataIndex: 'value',
            width: 200,
          }
        FormComponent: >
          <ProFormTextArea
            name="value"
            label={intl.formatMessage({ id: 'pages.system.parameter.form.value' })}
            fieldProps={{ rows: 3 }}
            colProps={{ span: 24 }}
            labelCol={{ span: 2 }}
          />
    - name: Remark
      type: string
      comment: Remark of parameter
      gorm_tag: "size:255;"
      form: {}
      extra:
        ColumnComponent: >
          {
            title: intl.formatMessage({ id: 'pages.system.parameter.form.remark' }),
            dataIndex: 'remark',
            width: 180,
          }
        FormComponent: >
          <ProFormText
            name="remark"
            label={intl.formatMessage({ id: 'pages.system.parameter.form.remark' })}
            colProps={{ span: 24 }}
            labelCol={{ span: 2 }}
          />
    - name: Status
      type: string
      comment: Status of parameter (enabled, disabled)
      gorm_tag: "size:20;index"
      query:
        in_query: true
      form:
        binding_tag: "required,oneof=enabled disabled"
      extra:
        ColumnComponent: >
          {
            title: intl.formatMessage({ id: 'pages.system.parameter.form.status' }),
            dataIndex: 'status',
            width: 130,
            search: false,
            render: (status) => {
              return (
                <Tag color={status === 'enabled' ? 'success' : 'error'}>
                  {status === 'enabled'
                    ? intl.formatMessage({ id: 'pages.system.parameter.form.status.enabled', defaultMessage: 'Enabled' })
                    : intl.formatMessage({ id: 'pages.system.parameter.form.status.disabled', defaultMessage: 'Disabled' })}
                </Tag>
              );
            },
          }
        FormComponent: >
          <ProFormSwitch
            name="statusChecked"
            label={intl.formatMessage({ id: 'pages.system.parameter.form.status' })}
            fieldProps={{
              checkedChildren: intl.formatMessage({ id: 'pages.system.parameter.form.status.enabled', defaultMessage: 'Enabled' }),
              unCheckedChildren: intl.formatMessage({ id: 'pages.system.parameter.form.status.disabled', defaultMessage: 'Disabled' }),
            }}
            colProps={{ span: 24 }}
            labelCol={{ span: 2 }}
          />
./gin-admin-cli gen -d ~/go/src/testapp -m SYS -c parameter.yaml

Remove a struct from the module

gin-admin-cli rm -d ~/go/src/testapp -m SYS -s Dictionary

Command help

New command

NAME:
   gin-admin-cli new - Create a new project

USAGE:
   gin-admin-cli new [command options] [arguments...]

OPTIONS:
   --dir value, -d value  The directory to generate the project (default: current directory)
   --name value           The project name
   --app-name value       The application name (default: project name)
   --desc value           The project description
   --version value        The project version (default: 1.0.0)
   --pkg value            The project package name (default: project name)
   --git-url value        Use git repository to initialize the project (default: https://github.com/LyricTian/gin-admin.git)
   --git-branch value     Use git branch to initialize the project (default: main)
   --fe-dir value         The frontend directory to generate the project (if empty, the frontend project will not be generated)
   --fe-name value        The frontend project name (default: frontend)
   --fe-git-url value     Use git repository to initialize the frontend project (default: https://github.com/gin-admin/gin-admin-frontend.git)
   --fe-git-branch value  Use git branch to initialize the frontend project (default: main)
   --help, -h             show help

Generate command

NAME:
   gin-admin-cli generate - Generate structs to the specified module, support config file

USAGE:
   gin-admin-cli generate [command options] [arguments...]

OPTIONS:
   --dir value, -d value     The project directory to generate the struct
   --module value, -m value  The module to generate the struct from (like: RBAC)
   --module-path value       The module path to generate the struct from (default: internal/mods)
   --wire-path value         The wire generate path to generate the struct from (default: internal/wirex)
   --swag-path value         The swagger generate path to generate the struct from (default: internal/swagger)
   --config value, -c value  The config file or directory to generate the struct from (JSON/YAML)
   --structs value           The struct name to generate
   --structs-comment value   Specify the struct comment
   --structs-router-prefix   Use module name as router prefix (default: false)
   --structs-output value    Specify the packages to generate the struct (default: schema,dal,biz,api)
   --tpl-path value          The template path to generate the struct from (default use tpls)
   --tpl-type value          The template type to generate the struct from (default: default)
   --fe-dir value            The frontend project directory to generate the UI
   --help, -h                show help

Remove command

NAME:
   gin-admin-cli remove - Remove structs from the module

USAGE:
   gin-admin-cli remove [command options] [arguments...]

OPTIONS:
   --dir value, -d value      The directory to remove the struct from
   --module value, -m value   The module to remove the struct from
   --module-path value        The module path to remove the struct from (default: internal/mods)
   --structs value, -s value  The struct to remove (multiple structs can be separated by a comma)
   --config value, -c value   The config file to generate the struct from (JSON/YAML)
   --wire-path value          The wire generate path to remove the struct from (default: internal/library/wirex)
   --swag-path value          The swagger generate path to remove the struct from (default: internal/swagger)
   --help, -h                 show help

MIT License

Copyright (c) 2023 Lyric

gin-admin-cli's People

Contributors

lyrictian avatar sigam-zq avatar whtiehack 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gin-admin-cli's Issues

模板创建成功了,但是控制台打印报错了

用了最简单的命令 gin-admin-cli gen -d ./ -m RBAC -structs Product

打印报错:

2024-05-10T00:43:54.495+0800    INFO    [GEN]   Write file: /Users/zhangzexuan/Codes.localized/work.localized/dev-aoni/dev-server/internal/mods/rbac/schema/product.go
fatal error: runtime: bsdthread_register error

runtime stack:
runtime.throw(0x1202a0c, 0x21)
        /usr/local/go/src/runtime/panic.go:619 +0x81 fp=0x7ff7bfeff1d8 sp=0x7ff7bfeff1b8 pc=0x10293c1
runtime.goenvs()
        /usr/local/go/src/runtime/os_darwin.go:129 +0x83 fp=0x7ff7bfeff208 sp=0x7ff7bfeff1d8 pc=0x1026f43
runtime.schedinit()
        /usr/local/go/src/runtime/proc.go:496 +0xa4 fp=0x7ff7bfeff260 sp=0x7ff7bfeff208 pc=0x102bc84
runtime.rt0_go(0x7ff7bfeff298, 0x3, 0x7ff7bfeff298, 0x0, 0x1000000, 0x3, 0x7ff7bfeff4e0, 0x7ff7bfeff508, 0x7ff7bfeff50b, 0x0, ...)
        /usr/local/go/src/runtime/asm_amd64.s:252 +0x1f4 fp=0x7ff7bfeff268 sp=0x7ff7bfeff260 pc=0x1053f94
2024-05-10T00:43:54.509+0800    ERROR   [GEN]   Failed to exec go imports, err: exit status 2, #file /Users/zhangzexuan/Codes.localized/work.localized/dev-aoni/dev-server/internal/mods/rbac/schema/product.go
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).write
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/internal/actions/generate.go:207
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).generate
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/internal/actions/generate.go:232
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).run
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/internal/actions/generate.go:101
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).RunWithStruct
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/internal/actions/generate.go:84
github.com/gin-admin/gin-admin-cli/v10/cmd.Generate.func1
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/cmd/generate.go:104
github.com/urfave/cli/v2.(*Command).Run
        /Users/zhangzexuan/gopath/pkg/mod/github.com/urfave/cli/[email protected]/command.go:274
github.com/urfave/cli/v2.(*Command).Run
        /Users/zhangzexuan/gopath/pkg/mod/github.com/urfave/cli/[email protected]/command.go:267
github.com/urfave/cli/v2.(*App).RunContext
        /Users/zhangzexuan/gopath/pkg/mod/github.com/urfave/cli/[email protected]/app.go:332
github.com/urfave/cli/v2.(*App).Run
        /Users/zhangzexuan/gopath/pkg/mod/github.com/urfave/cli/[email protected]/app.go:309
main.main
        /Users/zhangzexuan/gopath/pkg/mod/github.com/gin-admin/gin-admin-cli/[email protected]/main.go:47
runtime.main
        /usr/local/go/src/runtime/proc.go:250
2024-05-10T00:43:54.511+0800    INFO    [GEN]   Write file: /Users/zhangzexuan/Codes.localized/work.localized/dev-aoni/dev-server/internal/mods/rbac/dal/product.dal.go
fatal error: runtime: bsdthread_register error

......

How can i generate frontend ui with generate command?

Hi,

It seems that if I call gin-admin-cli gen without a json/yaml config file, the frontend ui is not created even if I specify the fe-dir value. Looking at the code, it seems that the frontend ui-related values must be set in the json/yaml file to generate code in the fe-dir entered when calling cli. right?

Can you provide yaml example for generate frontend ui? I would like to simply add a record struct and check the record list through the created top UI.

unknown field RightDelim in struct literal

Hello, I am not sure if I can get the documentation well.
I have just made the following commands:

$gin-admin-cli new -d ~/go/src --name test-gin-admin --desc 'A test API service based on golang.' --pkg 'github.com/mgazzin/test-gin-admin'
$ gin-admin-cli gen -d ~/go/src/test-gin-admin -m SYS --structs Dictionary --structs-comment "Dictionaries management" --structs-router-prefix
2024-01-23T14:55:10.805+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/schema/dictionary.go
2024-01-23T14:55:10.823+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/dal/dictionary.dal.go
2024-01-23T14:55:10.828+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/biz/dictionary.biz.go
2024-01-23T14:55:10.834+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/api/dictionary.api.go
2024-01-23T14:55:10.842+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/main.go
2024-01-23T14:55:10.848+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/sys/wire.go
2024-01-23T14:55:10.854+0100	INFO	[GEN]	Write file: /home/mgem/go/src/test-gin-admin/internal/mods/mods.go
wire: github.com/mgazzin/test-gin-admin/internal/wirex: wrote /home/mgem/go/src/test-gin-admin/internal/wirex/wire_gen.go
swag init --parseDependency --generalInfo main.go --output internal/swagger 
2024/01/23 14:55:12 Generate swagger docs....
2024/01/23 14:55:12 Generate general API Info, search dir:./
2024/01/23 14:55:14 Generating util.ResponseResult
2024/01/23 14:55:14 Generating errors.Error
2024/01/23 14:55:14 Generating schema.Captcha
2024/01/23 14:55:14 Generating schema.LoginForm
2024/01/23 14:55:14 Generating schema.LoginToken
2024/01/23 14:55:14 Generating schema.User
2024/01/23 14:55:14 Generating schema.UserRoles
2024/01/23 14:55:14 Generating schema.UserRole
2024/01/23 14:55:14 Generating schema.UpdateLoginPassword
2024/01/23 14:55:14 Generating schema.Menu
2024/01/23 14:55:14 Generating schema.Menus
2024/01/23 14:55:14 Skipping 'schema.Menu', recursion detected.
2024/01/23 14:55:14 Generating schema.MenuResources
2024/01/23 14:55:14 Generating schema.MenuResource
2024/01/23 14:55:14 Generating schema.UpdateCurrentUser
2024/01/23 14:55:14 Generating schema.MenuForm
2024/01/23 14:55:14 Generating schema.Role
2024/01/23 14:55:14 Generating schema.RoleMenus
2024/01/23 14:55:14 Generating schema.RoleMenu
2024/01/23 14:55:14 Generating schema.RoleForm
2024/01/23 14:55:14 Generating schema.UserForm
2024/01/23 14:55:14 Generating schema.Dictionary
2024/01/23 14:55:14 Generating schema.DictionaryForm
2024/01/23 14:55:14 Generating schema.Logger
2024/01/23 14:55:14 create docs.go at internal/swagger/docs.go
2024/01/23 14:55:14 create swagger.json at internal/swagger/swagger.json
2024/01/23 14:55:14 create swagger.yaml at internal/swagger/swagger.yaml
$ make swagger
2024/01/23 15:02:44 Generate swagger docs....
2024/01/23 15:02:44 Generate general API Info, search dir:./
2024/01/23 15:02:46 Generating util.ResponseResult
2024/01/23 15:02:46 Generating errors.Error
2024/01/23 15:02:46 Generating schema.Captcha
2024/01/23 15:02:46 Generating schema.LoginForm
2024/01/23 15:02:46 Generating schema.LoginToken
2024/01/23 15:02:46 Generating schema.User
2024/01/23 15:02:46 Generating schema.UserRoles
2024/01/23 15:02:46 Generating schema.UserRole
2024/01/23 15:02:46 Generating schema.UpdateLoginPassword
2024/01/23 15:02:46 Generating schema.Menu
2024/01/23 15:02:46 Generating schema.Menus
2024/01/23 15:02:46 Skipping 'schema.Menu', recursion detected.
2024/01/23 15:02:46 Generating schema.MenuResources
2024/01/23 15:02:46 Generating schema.MenuResource
2024/01/23 15:02:46 Generating schema.UpdateCurrentUser
2024/01/23 15:02:46 Generating schema.MenuForm
2024/01/23 15:02:46 Generating schema.Role
2024/01/23 15:02:46 Generating schema.RoleMenus
2024/01/23 15:02:46 Generating schema.RoleMenu
2024/01/23 15:02:46 Generating schema.RoleForm
2024/01/23 15:02:46 Generating schema.UserForm
2024/01/23 15:02:46 Generating schema.Dictionary
2024/01/23 15:02:46 Generating schema.DictionaryForm
2024/01/23 15:02:46 Generating schema.Logger
2024/01/23 15:02:46 create docs.go at internal/swagger/docs.go
2024/01/23 15:02:46 create swagger.json at internal/swagger/swagger.json
2024/01/23 15:02:46 create swagger.yaml at internal/swagger/swagger.yaml
$ make wire
wire: github.com/mgazzin/test-gin-admin/internal/wirex: wrote /home/mgem/go/src/test-gin-admin/internal/wirex/wire_gen.go
$ make start
fatal: Needed a single revision
# github.com/mgazzin/test-gin-admin/internal/swagger
internal/swagger/docs.go:2309:2: unknown field LeftDelim in struct literal of type "github.com/swaggo/swag".Spec
internal/swagger/docs.go:2310:2: unknown field RightDelim in struct literal of type "github.com/swaggo/swag".Spec
make: *** [Makefile:21: start] Error 1

Is there anything I am not considering?

mac os path

I successfully downloaded gin-admin-cli in but the command cannot be executed

gin-admin-cli: command not found

配置文件中的table_name字段没有实际使用

当前使用版本
feat/v10

Bug描述
使用-c参数指定配置文件生成业务模型,table_name参数指定的表名不生效,应该是template中没有使用这个创建表名
我在scheme.go.tpl中添加的如下代码重新编译的,作者大大可以考虑修复下这个问题

{{ if .TableName }}
// Use `{{ .TableName }}` as TableName
func (a *{{$name}}) TableName() string {
	return "{{ .TableName }}"
}
{{ end }}

window 生成寻找不到模板文件报错

win10 64位

gin-admin-cli 版本如下

gin-admin-cli version v10.3.1

错误报错如下

gin-admin-cli gen -d . -m Comm --structs Param --structs-comment 'Param 系统参数' --structs-router-prefix=true
2024-01-19T09:40:32.530+0800 ERROR [GEN] Failed to parse tpl, err: open tpls\default\schema.go.tpl: file does not exist, #struct Param, #tpl default\schema.go.tpl
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).generate
D:/desktop/gitDemo/go/gin-admin-cli/internal/actions/generate.go:216
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).run
D:/desktop/gitDemo/go/gin-admin-cli/internal/actions/generate.go:89
github.com/gin-admin/gin-admin-cli/v10/internal/actions.(*GenerateAction).RunWithStruct
D:/desktop/gitDemo/go/gin-admin-cli/internal/actions/generate.go:84
github.com/gin-admin/gin-admin-cli/v10/cmd.Generate.func1
D:/desktop/gitDemo/go/gin-admin-cli/cmd/generate.go:104
github.com/urfave/cli/v2.(*Command).Run
C:/Users/zq102/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:274
github.com/urfave/cli/v2.(*Command).Run
C:/Users/zq102/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:267
github.com/urfave/cli/v2.(*App).RunContext
C:/Users/zq102/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:332
github.com/urfave/cli/v2.(*App).Run
C:/Users/zq102/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:309
main.main
D:/desktop/gitDemo/go/gin-admin-cli/main.go:47
runtime.main
D:/Environment/go1.21/go1.21.0.windows-amd64/go/src/runtime/proc.go:267
panic: open tpls\default\schema.go.tpl: file does not exist

尝试重新编译 也不通过

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.