GithubHelp home page GithubHelp logo

k1low / tcpdp Goto Github PK

View Code? Open in Web Editor NEW
126.0 5.0 16.0 2.49 MB

tcpdp is TCP dump tool with custom dumper and structured logger written in Go.

License: MIT License

Go 98.97% Makefile 1.03%
tcp-proxy tcp-dump pcap-parser mysql postgresql

tcpdp's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar hfm avatar k1low avatar kentaro avatar pyama86 avatar rnakamine 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

tcpdp's Issues

panic: runtime error: invalid memory address or nil pointer dereference

Aug  7 10:16:14 xxxxxxxxxxx tcpdp: panic: runtime error: invalid memory address or nil pointer dereference
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x8e2301]
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: goroutine 37 [running]:
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*payloadBuffer).Get(0x0, 0x2, 0xc000397ad0, 0x26, 0x169b400)
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/payload_buffer.go:39 +0x31
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*PacketReader).handlePacket(0xc0001dc480, 0xc0001ca480, 0x1, 0x1, 0x0, 0x0)
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/reader.go:348 +0xab9
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/reader.(*PacketReader).ReadAndDump
Aug  7 10:16:14 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/reader.go:154 +0xcd
Aug  7 10:16:14 xxxxxxxxxxx systemd: tcpdp-eth0.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Aug  7 10:16:14 xxxxxxxxxxx systemd: Unit tcpdp-eth0.service entered failed state.
Aug  7 10:16:14 xxxxxxxxxxx systemd: tcpdp-eth0.service failed.
Aug  7 10:16:44 xxxxxxxxxxx systemd: tcpdp-eth0.service holdoff time over, scheduling restart.
Aug  7 10:16:44 xxxxxxxxxxx tcpdp: 2019-08-07T10:16:44.358+0900#011info#011Starting probe.#011{"dumper": "mysql", "interface": "eth0", "mtu": "1500", "probe_target_addr": "3306", "filter": "tcp and ((port 3306))", "buffer_size": "128MB",\
 "immediate_mode": true, "snapshot_length": "65535B", "internal_buffer_length": 10000}
Aug  7 10:16:44 xxxxxxxxxxx tcpdp: 2019/08/07 10:16:44 Log lotate event error waitid: no child processes
Aug  7 10:16:44 xxxxxxxxxxx tcpdp: 2019/08/07 10:16:44 Log lotate event error waitid: no child processes
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: panic: runtime error: invalid memory address or nil pointer dereference
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x8e2347]
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: goroutine 23 [running]:
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*payloadBuffer).Get(0x0, 0x3, 0xc0002b79e0, 0x26, 0x169b400)
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/payload_buffer.go:44 +0x77
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*PacketReader).handlePacket(0xc0001d9440, 0xc0001ca480, 0x1, 0x1, 0x0, 0x0)
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/reader.go:348 +0xab9
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/reader.(*PacketReader).ReadAndDump
Aug  7 10:34:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.1/reader/reader.go:154 +0xcd
Aug  7 10:34:44 xxxxxxxxxxx systemd: tcpdp-eth0.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Aug  7 10:34:44 xxxxxxxxxxx systemd: Unit tcpdp-eth0.service entered failed state.
Aug  7 10:34:44 xxxxxxxxxxx systemd: tcpdp-eth0.service failed.
Aug  7 10:35:14 xxxxxxxxxxx systemd: tcpdp-eth0.service holdoff time over, scheduling restart.
Aug  7 10:35:14 xxxxxxxxxxx tcpdp: 2019-08-07T10:35:14.590+0900#011info#011Starting probe.#011{"dumper": "mysql", "interface": "eth0", "mtu": "1500", "probe_target_addr": "3306", "filter": "tcp and ((port 3306))", "buffer_size": "128MB",\
 "immediate_mode": true, "snapshot_length": "65535B", "internal_buffer_length": 10000}
Aug  7 10:35:14 xxxxxxxxxxx tcpdp: 2019/08/07 10:35:14 Log lotate event error waitid: no child processes
Aug  7 10:35:14 xxxxxxxxxxx tcpdp: 2019/08/07 10:35:14 Log lotate event error waitid: no child processes

tcpdp_0.10.0-1_amd64.deb installs unexpected file into / (root directory)?

Congrats on #39 ๐ŸŽ‰ I tried deb package at once, and found that tcpdp_0.10.0-1_amd64.deb includes itself. tcpdp_0.10.0-1_amd64.deb installs tcpdp_0.10.0-1_amd64.deb itself into root directory.

Reproduce

I tried on Ubuntu 18.04.

  1. install tcpdp_0.10.0-1_amd64.deb like the following:
root@75d5272680a5:~# wget -q https://github.com/k1LoW/tcpdp/releases/download/v0.10.0/tcpdp_0.10.0-1_amd64.deb
root@75d5272680a5:~# dpkg -i tcpdp_0.10.0-1_amd64.deb
Selecting previously unselected package tcpdp.
(Reading database ... 4386 files and directories currently installed.)
Preparing to unpack tcpdp_0.10.0-1_amd64.deb ...
Unpacking tcpdp (0.10.0-1) ...
Setting up tcpdp (0.10.0-1) ...
root@75d5272680a5:~# dpkg -L tcpdp
/.
/usr
/usr/bin
/usr/bin/tcpdp
/tcpdp_0.10.0-1_amd64.deb
root@75d5272680a5:~# ls -l /tcpdp_0.10.0-1_amd64.deb
-rw-r--r-- 1 root root 482 Sep 30 14:26 /tcpdp_0.10.0-1_amd64.deb

tcpdp v0.5.0 (darwin amd64) raises SIGSEGV when doing -help

I tried tcpdp v0.5.0 in Mac (macOS High Sierra 10.13.6 17G65), but tcpdp -help raises SIGSEGV like the following:

$ ./tcpdp_v0.5.0_darwin_amd64/tcpdp -help
Error: unknown shorthand flag: 'e' in -elp
Usage:
  tcpdp [command]

Available Commands:
  config      show currnt config
  help        Help about any command
  probe       probe
  proxy       proxy
  version     print tcpdp version

Flags:
  -h, --help   help for tcpdp

Use "tcpdp [command] --help" for more information about a command.

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x446610e]

goroutine 1 [running]:
github.com/k1LoW/tcpdp/vendor/go.uber.org/zap.(*Logger).check(0x0, 0x5, 0x45b4142, 0x5, 0xc4211d6400)
        /Users/k1low/src/github.com/k1LoW/tcpdp/vendor/go.uber.org/zap/logger.go:264 +0x8e
github.com/k1LoW/tcpdp/vendor/go.uber.org/zap.(*Logger).Fatal(0x0, 0x45b4142, 0x5, 0xc4211d6400, 0x1, 0x1)
        /Users/k1low/src/github.com/k1LoW/tcpdp/vendor/go.uber.org/zap/logger.go:235 +0x44
github.com/k1LoW/tcpdp/cmd.Execute()
        /Users/k1low/src/github.com/k1LoW/tcpdp/cmd/root.go:48 +0x1bf
main.main()
        /Users/k1low/src/github.com/k1LoW/tcpdp/main.go:34 +0x3a

SPEC (My Mac)

  Model Name:	MacBook Pro
  Model Identifier:	MacBookPro14,2
  Processor Name:	Intel Core i7
  Processor Speed:	3.5 GHz
  Number of Processors:	1
  Total Number of Cores:	2
  L2 Cache (per Core):	256 KB
  L3 Cache:	4 MB
  Memory:	16 GB
  Boot ROM Version:	MBP142.0178.B00
  SMC Version (system):	2.44f1
  Serial Number (system):	C02VD0Y9HV2R
  Hardware UUID:	1283D383-75BC-5752-8A85-47C2706C5BF7

fatal error: concurrent map read and map write

Jul 12 15:52:44 xxxxxxxxxxx tcpdp: fatal error: concurrent map read and map write
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 7 [running]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: runtime.throw(0xa451c2, 0x21)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/runtime/panic.go:617 +0x72 fp=0xc0002d3a08 sp=0xc0002d39d8 pc=0x42f212
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: runtime.mapaccess2_faststr(0x97a500, 0xc00024a0f0, 0xc0001ca570, 0x26, 0xc00059f270, 0xc0001c0c01)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/runtime/map_faststr.go:116 +0x4a4 fp=0xc0002d3a78 sp=0xc0002d3a08 pc=0x415724
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*PacketReader).handlePacket(0xc0001fb3e0, 0xc00000e4e0, 0x1, 0x1, 0x0, 0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:335 +0x92b fp=0xc0002d3fb0 sp=0xc0002d3a78 pc=0x8e543b
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: runtime.goexit()
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/runtime/asm_amd64.s:1337 +0x1 fp=0xc0002d3fb8 sp=0xc0002d3fb0 pc=0x45b8c1
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/reader.(*PacketReader).ReadAndDump
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:154 +0xcd
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 1 [chan receive, 2 minutes]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/cmd.glob..func2(0x1106cc0, 0xc0000a2960, 0x0, 0x2)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/cmd/probe.go:112 +0x115f
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/spf13/cobra.(*Command).execute(0x1106cc0, 0xc0000a2940, 0x2, 0x2, 0x1106cc0, 0xc0000a2940)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/spf13/[email protected]/command.go:830 +0x2ae
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/spf13/cobra.(*Command).ExecuteC(0x1107440, 0x0, 0x0, 0x8fcc4a)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/spf13/[email protected]/command.go:914 +0x2bb
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/spf13/cobra.(*Command).Execute(...)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/spf13/[email protected]/command.go:864
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/cmd.Execute()
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/cmd/root.go:49 +0x2e
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: main.main()
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/main.go:26 +0x20
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 35 [syscall, 2 minutes]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: os/signal.signal_recv(0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/runtime/sigqueue.go:139 +0x9c
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: os/signal.loop()
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/os/signal/signal_unix.go:23 +0x22
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by os/signal.init.0
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /usr/local/go/src/os/signal/signal_unix.go:29 +0x41
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 4 [runnable]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*PacketReader).ReadAndDump(0xc0001fb3e0, 0xc00000e4e0, 0x1, 0x1, 0x0, 0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:159 +0x1d0
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/server.(*ProbeServer).Start(0xc000220000, 0x0, 0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/server/probe_server.go:231 +0x106b
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/cmd.glob..func2
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/cmd/probe.go:110 +0x1136
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 51 [select]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*payloadBufferManager).startPurgeTicker(0xc0002b4010, 0xb0d240, 0xc00025a040, 0xc0000af140, 0x0, 0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/payload_buffer.go:131 +0x1d8
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/reader.(*PacketReader).handlePacket
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:176 +0x189
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 5 [select]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/server.(*ProbeServer).checkStats.func1(0xc000220000, 0xc0001fb200)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/server/probe_server.go:252 +0xfb
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/server.(*ProbeServer).checkStats
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/server/probe_server.go:246 +0x49
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 6 [runnable]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket/pcap._Cfunc_pcap_next_ex_escaping(0x7f66b4000c40, 0xc0001fb248, 0xc0001fb250, 0x1)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: _cgo_gotypes.go:544 +0x4d
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket/pcap.(*Handle).pcapNextPacketEx.func1(0xc0001fb200, 0xc000055e40)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/pcap/pcap_unix.go:400 +0x89
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket/pcap.(*Handle).pcapNextPacketEx(0xc0001fb200, 0x558)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/pcap/pcap_unix.go:400 +0x2b
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket/pcap.(*Handle).getNextBufPtrLocked(0xc0001fb200, 0xc000055eb0, 0xc000055e80, 0x80f5ad)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/pcap/pcap.go:302 +0x62
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket/pcap.(*Handle).ReadPacketData(0xc0001fb200, 0x10, 0x558, 0xb00f20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/pcap/pcap.go:245 +0x84
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket.(*PacketSource).NextPacket(0xc0001f3800, 0xc000055fb8, 0xc000250000, 0x0, 0x0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/packet.go:801 +0x48
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/google/gopacket.(*PacketSource).packetsToChannel(0xc0001f3800)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/packet.go:818 +0x65
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/google/gopacket.(*PacketSource).Packets
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /go/pkg/mod/github.com/google/[email protected]/packet.go:861 +0x8d
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: goroutine 8 [select]:
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: github.com/k1LoW/tcpdp/reader.(*PacketReader).checkBufferdPacket(0xc0001fb3e0, 0xc0001fb4a0)
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:551 +0xe2
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: created by github.com/k1LoW/tcpdp/reader.(*PacketReader).ReadAndDump
Jul 12 15:52:44 xxxxxxxxxxx tcpdp: /root/rpmbuild/BUILD/tcpdp-0.21.0/reader/reader.go:156 +0xfc
Jul 12 15:52:44 xxxxxxxxxxx systemd: tcpdp-eth0.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Jul 12 15:52:44 xxxxxxxxxxx systemd: Unit tcpdp-eth0.service entered failed state.
Jul 12 15:52:44 xxxxxxxxxxx systemd: tcpdp-eth0.service failed.
Jul 12 15:53:14 xxxxxxxxxxx systemd: tcpdp-eth0.service holdoff time over, scheduling restart.
Jul 12 15:53:14 xxxxxxxxxxx tcpdp: 2019-07-12T15:53:14.508+0900#011info#011Starting probe.#011{"dumper": "mysql", "interface": "eth0", "mtu": "1500", "probe_target_addr": "3306", "filter": "tcp and ((port 3306))", "buffer_size": "128MB", "immediate_mode": true, "snapshot_length": "65535B", "internal_buffer_length": 10000}
Jul 12 15:53:14 xxxxxxxxxxx tcpdp: 2019/07/12 15:53:14 Log lotate event error waitid: no child processes
Jul 12 15:53:14 xxxxxxxxxxx tcpdp: 2019/07/12 15:53:14 Log lotate event error waitid: no child processes

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.