Giter Club home page Giter Club logo

Comments (9)

zwri avatar zwri commented on May 19, 2024

Ah, yes. iOS splits outgoing messages above ~8k into "partial" messages
followed by a "final" message. I already handle this in src/webinspector.c
wi_parse_msg. So, assuming that the same limit applies for incoming
messages, we'll need similar code in wi_send_msg.

I'll implement a patch. I'll let you know if I can't find time this week,
in case you'd like to submit the patch.

Thanks,
Todd

from ios-webkit-debug-proxy.

snevesbarros avatar snevesbarros commented on May 19, 2024

Thanks for the info. I am more a java person myself, but I'll try and see if I can find someone in the office that can help.

Sergio

from ios-webkit-debug-proxy.

snevesbarros avatar snevesbarros commented on May 19, 2024

Tod,

We have been able to split the outgoing messages based on size (e.g. 100 characters) but the assumption from our side is that each message requires the web inspector protocol elements. We also assumed that the internal "webkit" message is the one to be broken into smaller pieces. See example below. However this doesn't have the desired effect. Any feedback to could help us crack this nut would be appreciated.

First message: ....bplist00.....WIRPartialMessageKeyO...bplist00.....Z__selector..rpc_forwardSocketData:Z__argument.............WIRConnectionIdentifierKey_.$E1B20C9E-660B-47BE-B32C-A9CA6736F29B_..WIRApplicationIdentifierKey_..com.apple.m
obilesafari_..WIRPageIdentifierKey..\WIRSenderKey_.$421C7C20-E0CC-4C33-9D35-02BB488F7CC5_..WIRSocketDataKeyO.d{"method":"Runtime.evaluate","params":{"expression":"document.title","objectGroup":"console","includ........2.=.H.e...............#......................................"........................

Second Message
....bplist00.....WIRFinalMessageKeyO...bplist00.....Z__selector..rpc_forwardSocketData:Z__argument.............WIRConnectionIdentifierKey_.$E1B20C9E-660B-47BE-B32C-A9CA6736F29B_..WIRApplicationIdentifierKey_..com.apple.mobilesafari_..WIRPageIdentifierKey..\WIRSenderKey_.$421C7C20-E0CC-4C33-9D35-02BB488F7CC5_..WIRSocketDataKeyO.deCommandLineAPI":true,"doNotPauseOnExceptions":false,"frameId":"0.7","returnByValue":false},"id":29}
........2.=.H.e...............#...................................... ................................

Received:
GET /devtools/Images/userInputPreviousIcon.png HTTP/1.1..Host: localhost:27753..Connection: keep-alive.Cache-Control: max-
age=0..User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31..If-None-Match: "3dP
Zxw"..Accept: /..Referer: http://localhost:27753/devtools/devtools.html?host=localhost:27753&page=1..Accept-Encoding: gzip,deflate,sdch..Accept-Language: en-US,en;q=0.8..Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3....

PS: if you do feel like fixing this I wouldn't be upset :).

Thanks,

Sergio

from ios-webkit-debug-proxy.

zwri avatar zwri commented on May 19, 2024

Okay, I just pushed a fix.

Here's how I tested it:

  1. start proxy with "-d" for verbose output (optional)
  2. open browser to http://localhost:9222, click page link for devtools,
    click console button
  3. paste a >8k string, e.g.: var s="test_test_test_..."
  4. verify s.length is correct
  5. verify proxy "-d" says it sent the partial & final messages

Todd

from ios-webkit-debug-proxy.

snevesbarros avatar snevesbarros commented on May 19, 2024

Todd,

Thank you very much. It's a bank holiday here in London, but will check tomorrow if it works when we send the compressed javascript library along with the request.

Btw, with regards to breaking down the request...were we far off (see previous comment)? I can always analyze the fix you applied and check the logging to see as well.

Thanks again,

Sergio

from ios-webkit-debug-proxy.

zwri avatar zwri commented on May 19, 2024

On Mon, May 6, 2013 at 12:48 PM, snevesbarros [email protected]:

Todd,

Thank you very much. It's a bank holiday here in London, but will check
tomorrow if it works when we send the compressed javascript library along
with the request.

Sounds good.

Btw, with regards to breaking down the request...were we far off (see
previous comment)? I can always analyze the fix you applied and check the
logging to see as well.

The request breakdown only sends the "_selector" header on the first
message. I'll attach example proxy "-d" output.

Todd

Thanks again,

Sergio

wi.send_packet[7677]:
00 00 1D F9 62 70 6C 69 73 74 30 30 D1 01 02 5F 10 14 57
....bplist00.....W
49 52 50 61 72 74 69 61 6C 4D 65 73 73 61 67 65 4B 65 79
IRPartialMessageKey
4F 11 1D AC 62 70 6C 69 73 74 30 30 D2 01 03 02 04 5A 5F
O...bplist00.....Z

5F 73 65 6C 65 63 74 6F 72 5F 10 17 5F 72 70 63 5F 66 6F
selector..rpc_fo
72 77 61 72 64 53 6F 63 6B 65 74 44 61 74 61 3A 5A 5F 5F
rwardSocketData:Z
_
61 72 67 75 6D 65 6E 74 D5 05 07 09 0B 0D 06 08 0A argument.........
0C 0E 5F 10 1A 57 49 52 43 6F 6E 6E 65 63 74 69 6F 6E 49
....WIRConnectionI
64 65 6E 74 69 66 69 65 72 4B 65 79 5F 10 24 46 41 33 45
dentifierKey
.$FA3E
35 38 31 36 2D 37 37 44 33 2D 34 38 33 36 2D 41 41 30 38
5816-77D3-4836-AA08
2D 34 44 45 46 41 38 30 45 31 37 39 35 5F 10 1B 57 49 52
-4DEFA80E1795_..WIR
41 70 70 6C 69 63 61 74 69 6F 6E 49 64 65 6E 74 69 66 69
ApplicationIdentifi
65 72 4B 65 79 5F 10 16 63 6F 6D 2E 61 70 70 6C 65 2E 6D
erKey_..com.apple.m
6F 62 69 6C 65 73 61 66 61 72 69 5F 10 14 57 49 52 50 61
obilesafari_..WIRPa
67 65 49 64 65 6E 74 69 66 69 65 72 4B 65 79 10 01 5C 57
geIdentifierKey..\W
49 52 53 65 6E 64 65 72 4B 65 79 5F 10 24 36 32 43 43 37
IRSenderKey_.$62CC7
38 39 46 2D 34 43 34 36 2D 34 36 35 44 2D 42 31 41 39 2D
89F-4C46-465D-B1A9-
45 43 41 39 33 41 32 43 34 33 44 31 5F 10 10 57 49 52 53
ECA93A2C43D1_..WIRS
6F 63 6B 65 74 44 61 74 61 4B 65 79 4F 11 60 C0 7B 22 6D
ocketDataKeyO.`.{"m
65 74 68 6F 64 22 3A 22 52 75 6E 74 69 6D 65 2E 65 76 61
ethod":"Runtime.eva
6C 75 61 74 65 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 65
luate","params":{"e
78 70 72 65 73 73 69 6F 6E 22 3A 22 73 3D 5C 22 66 6F 6F
xpression":"s="foo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof +7090
wi.send_packet[7677]:
00 00 1D F9 62 70 6C 69 73 74 30 30 D1 01 02 5F 10 14 57
....bplist00.....W
49 52 50 61 72 74 69 61 6C 4D 65 73 73 61 67 65 4B 65 79
IRPartialMessageKey
4F 11 1D AC 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
O...ofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo +7088
wi.send_packet[7677]:
00 00 1D F9 62 70 6C 69 73 74 30 30 D1 01 02 5F 10 14 57
....bplist00...
..W
49 52 50 61 72 74 69 61 6C 4D 65 73 73 61 67 65 4B 65 79
IRPartialMessageKey
4F 11 1D AC 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
O...ofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo +7088
wi.send_packet[2417]:
00 00 09 6D 62 70 6C 69 73 74 30 30 D1 01 02 5F 10 12 57
...mbplist00..._..W
49 52 46 69 6E 61 6C 4D 65 73 73 61 67 65 4B 65 79 4F 11
IRFinalMessageKeyO.
09 22 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
."ofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo
6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F
ofoofoofoofoofoofoo
66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66
foofoofoofoofoofoof
6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F 6F 66 6F
oofoofoofoofoofoofo +1828

from ios-webkit-debug-proxy.

snevesbarros avatar snevesbarros commented on May 19, 2024

Todd,

I have confirmed the fix has done the job. We are now able to send the compressed js libraries and the request is handled.

Thanks again for your help.

Sergio

from ios-webkit-debug-proxy.

snevesbarros avatar snevesbarros commented on May 19, 2024

Todd,

A final question from my side.

Would it be possible to tag the proxy now that the fix has been applied so that people can install it using brew?

Regards,

Sergio

from ios-webkit-debug-proxy.

rosesandhello avatar rosesandhello commented on May 19, 2024

This issue does not appear to be completely resolved. The upper limit now seems to be around 16K and seems to apply to both incoming and outgoing messages. @zwri

from ios-webkit-debug-proxy.

Related Issues (20)

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.