dkonst / isynergyclient Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/isynergyclient
Automatically exported from code.google.com/p/isynergyclient
What steps will reproduce the problem?
1. Open iSynergyClient
2. Enter Server Address and Client Name
3.Tick "Mouse" to On
What is the expected output? What do you see instead?
Switch turning to on and Synergy Client Connecting. No idea what happens next,
I'm curious to see that myself
What version of the product are you using? On what operating system?
iSynergyClinet 0.9-2 on iOS 7.0.1 (JailBreak), iPad Air connecting to Synergy
Premium 1.4.16 on OSX 10.9.2
Please provide any additional information below.
The iPad running the Synergy client can connect to the Synergy Server's ip and
port as shown in the session below.
Jays-iPad:~ root# telnet 10.0.1.15 24800
Trying 10.0.1.15...
Connected to 10.0.1.15.
Escape character is '^]'.
H�|��Ա�U�K^]
telnet> q
Connection closed.
Jays-iPad:~ root#
However, when trying to activate the Mouse on the Synergy Client on iPad, the
status switches to "Connecting...", stays like that for about a minute and
returns to Not connected (with no error notification like Timeout or something
similar)
On the server, the logs show
NOTE: accepted client connection
NOTE: new client is unresponsive
Original issue reported on code.google.com by [email protected]
on 14 Mar 2014 at 4:31
What steps will reproduce the problem?
1.Start Synergy
2.Connect to Server
3.Move mouse on server into iOS device 'window'
What is the expected output? What do you see instead?
Expect to see a mouse pointer on iPhone, Synergy app crashed instead, server
shows iOS client disconnected
What version of the product are you using? On what operating system?
Server running on Win7 x64, Client running on iPhone 4 iOS 5.0.1. Client
downloaded from
http://synergy.googlecode.com/files/ch.ringwald.synergyclient_0.8-9_iphoneos-arm
.deb link on synergy
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 26 Feb 2012 at 10:42
What steps will reproduce the problem?
1. With the new iOS 7 jailbreak, iSynergy Client connects, and the Synergy
server recognizes that it is connected and the mouse moving between the 2, but
the cursor is not visible, nor does the Home button key sequence work.
2.
Original issue reported on code.google.com by [email protected]
on 26 Dec 2013 at 5:22
I've just installed iSynergyClient 0.8 from Cyida onto my 4.2.1 iPad and I've
noticed a couple of strange behaviours.
1) The mouse is sometimes unusable in apps. TuneMark radio for example, the
mouse will not activate the play/stop, forward or volume controls.
This seems to happen in other apps too such as Cydia where trying to click the
Search icon, however it works for anything in the main screen.
2) Turn iPad from portrait to landscape and the mouse movements are not
adjusted (forward on the mouse is left, back is right etc)
3) Probably more of a wish list item but auto-reconnect would be very nice!
Original issue reported on code.google.com by nick%[email protected]
on 8 Feb 2011 at 12:04
What steps will reproduce the problem?
1. I run synergy on my PC
2. I configure the server and set up a new device named "iPad"
3. I run iSynergyClient 0.8 on my iPad and enter the server address and "iPad"
under client name
4. I tap the switch for "Mouse" under "Activation" in iSynergyClient 0.8
What is the expected output? What do you see instead?
I expect the two devices to connect, but this is the dialog that pops up in the
Synergy desktop log:
INFO: watchdog status: ok
NOTE: accepted client connection
INFO: crypto mode: cfb
NOTE: new client is unresponsive
What version of the product are you using? On what operating system?
I'm using the 64-bit Synergy app on Windows 8.1 and iSynergyClient 0.8 from
BigBoss on my iPad 3.
Please provide any additional information below.
Full log from Synergy:
NOTE: connecting to service...
NOTE: connection established
NOTE: stopped server
WARNING: detected application not running, pid=6304
INFO: backing off, wait=2s, failures=1
INFO: starting new process
INFO: Synergy 1.4.16 Server on Microsoft Windows 6.2 x64
NOTE: started server, waiting for clients
INFO: watchdog status: ok
NOTE: stopped server
WARNING: detected application not running, pid=8212
INFO: backing off, wait=2s, failures=1
INFO: starting new process
INFO: Synergy 1.4.16 Server on Microsoft Windows 6.2 x64
NOTE: started server, waiting for clients
INFO: watchdog status: ok
INFO: watchdog status: ok
NOTE: accepted client connection
INFO: crypto mode: cfb
NOTE: new client is unresponsive
I also tried leaving the client name blank and entering the other device name
in iSynergyClient, but had the same results.
Original issue reported on code.google.com by [email protected]
on 6 Mar 2014 at 9:54
What steps will reproduce the problem?
1. Connect client to server. Works OK until...
2. Exit the client by either click home button at any time or clicking the left
mouse click
3. Client crashes. A few seconds later the log registers client is dead.
Using iSynergy 0.9-2 on iOS 6.1 and Synergy 1.4.12 on Windows 7 64bit
Original issue reported on code.google.com by [email protected]
on 21 Aug 2013 at 10:41
Feature Req: Keyboard support using HID-Support
Below is a patch that adds keyboard support using your HID-SUPPORT. The old
mouse support was left in place since it displays the cursor and seemed to work
better on my device (iPad 2 5.0.1)
Add libhidsupport.dylib to the project, and its header:
### Eclipse Workspace Patch 1.0
#P iSynergyClient
Index: SynergyClient.h
===================================================================
--- SynergyClient.h (revision 2)
+++ SynergyClient.h (working copy)
@@ -84,6 +84,7 @@
-(BOOL) openConnection:(NSString *) remote;
-(void) handleSocketCallback;
+- (void) sendResetOptionsMessage;
-(void) handleMessageWithLen:(uint16_t)len;
-(NSString *) connectionStatus;
-(BOOL) isConnecting;
@@ -98,6 +99,8 @@
-(NSString *) serverAddress;
-(void) setClientName:(NSString *) clientName;
-(NSString *) clientName;
+-(BOOL) homeButtonHotkey;
+-(void) setHomeButtonHotKey:(BOOL) homeButtonHotKey;
-(CLIENT_STATE) clientState;
@property (nonatomic, assign) id delegate;
@property (nonatomic, retain) NSString *connectionError;
Index: ConfigurationViewController.m
===================================================================
--- ConfigurationViewController.m (revision 2)
+++ ConfigurationViewController.m (working copy)
@@ -39,6 +39,7 @@
@synthesize serverAddress;
@synthesize clientName;
@synthesize activeSwitch;
+@synthesize homeButtonSwitch;
@synthesize activityIndicator;
#pragma mark -
@@ -103,7 +104,7 @@
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
- return 3;
+ return 4;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
@@ -112,7 +113,7 @@
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
- static NSString * titles[] = { @"Server Address", @"Client Name",
@"Activation", @"Status", @"Keyboard Support"};
+ static NSString * titles[] = { @"Server Address", @"Client Name", @"Special
Keys", @"Activation", @"Status", @"Keyboard Support"};
return titles[section];
}
@@ -156,6 +157,12 @@
}
break;
case 2:
+ cell.textLabel.text = @"Home Button Hot Key";
+ homeButtonSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
+ homeButtonSwitch.on = [synergyClient homeButtonHotkey];
+ cell.accessoryView = homeButtonSwitch;
+ break;
+ case 3:
cell.textLabel.text = @"Mouse";
activeSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
activeSwitch.on = [synergyClient enabled];
@@ -163,9 +170,6 @@
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
cell.accessoryView = activeSwitch;
break;
- case 3:
- // cell.textLabel.text = [synergyClient connectionStatus];
- break;
case 4:
cell.textLabel.text = @"Purchase BTstack Keyboard from Cydia Store";
// keyboard support installed?
@@ -197,12 +201,13 @@
NSString * helpTexts[] = {
@"IP address of Synergy server, either as dot notation like 192.168.3.2 or server.home.com",
@"Client name as configured on server, leave empty for local hostname",
+ @"Use Command + Shift + H to simulate pressing the Home button?",
@"Start/stop connection to server",
@"Current status, indicates if connection was established successfully",
@"To enter text, the BTstack Keyboard package is required"
};
- if ([indexPath indexAtPosition:0] == 2) {
+ if ([indexPath indexAtPosition:0] == 3) {
cell.textLabel.text = [NSString stringWithFormat:@"Current status: %@", [synergyClient connectionStatus]];
CLIENT_STATE state = [synergyClient clientState];
switch (state) {
@@ -310,6 +315,7 @@
- (void) updateDefaultsFromView {
[synergyClient setClientName:clientName.text];
[synergyClient setServerAddress:serverAddress.text];
+ [synergyClient setHomeButtonHotKey:homeButtonSwitch.on];
[synergyClient setEnabled:activeSwitch.on];
}
@@ -322,6 +328,7 @@
[BackgroundApplication setRunInBackground:NO];
serverAddress.enabled = YES;
clientName.enabled = YES;
+ homeButtonSwitch.enabled = YES;
serverAddress.borderStyle = UITextBorderStyleBezel;
clientName.borderStyle = UITextBorderStyleBezel;
}
@@ -350,6 +357,7 @@
clientName.borderStyle = 0;
serverAddress.enabled = NO;
clientName.enabled = NO;
+ homeButtonSwitch.enabled = NO;
[self.tableView reloadData];
[BackgroundApplication setRunInBackground:YES];
@@ -385,6 +393,7 @@
[clientName release];
[activeSwitch release];
[activityIndicator release];
+ [homeButtonSwitch release];
}
@end
Index: ConfigurationViewController.h
===================================================================
--- ConfigurationViewController.h (revision 2)
+++ ConfigurationViewController.h (working copy)
@@ -37,6 +37,7 @@
UITextField *serverAddress;
UITextField *clientName;
UISwitch *activeSwitch;
+ UISwitch *homeButtonSwitch;
UIActivityIndicatorView *activityIndicator;
}
- (void) updateDefaultsFromView;
@@ -44,5 +45,6 @@
@property (nonatomic, retain) UITextField *serverAddress;
@property (nonatomic, retain) UITextField *clientName;
@property (nonatomic, retain) UISwitch *activeSwitch;
+@property (nonatomic, retain) UISwitch *homeButtonSwitch;
@property (nonatomic, retain) UIActivityIndicatorView *activityIndicator;
@end
Index: SynergyClient.m
===================================================================
--- SynergyClient.m (revision 2)
+++ SynergyClient.m (working copy)
@@ -45,9 +45,11 @@
#include "mouse_msgs.h"
#import "../libactivator/libactivator.h"
+#import "hid-support.h"
NSString *keyServerAddress = @"ServerAddress";
NSString *keyClientName = @"ClientName";
+NSString *keyHomeButtonHotkey = @"HomeButtonHotKey";
NSString *keyActivatorDefautsApplied = @"ActivatorDefaultsApplied";
const char* kMsgHello = "Synergy%2i%2i";
@@ -87,6 +89,10 @@
#define KEEPALIVE_PERIOD 2
+
+//not the best place for it, but im lazy
+NSInteger printableCharacters[] =
{32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,5
8,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,
85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108
,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129
,130,131,132,134,135,137,139,140,141,142,143,144,145,146,147,148,149,151,153,155
,156,157,158,161,162,163,164,165,166,167,169,170,171,172,174,175,176,177,178,179
,181,182,183,184,185,186,187,188,189,190,191,197,198,199,208,215,216,222,223,229
,230,231,240,247,248,254};
+
static void socketDataCallback (CFSocketRef s,
CFSocketCallBackType callbackType,
CFDataRef address,
@@ -520,36 +537,87 @@
if (strncmp(kMsgDKeyDown, (char*)message, 4) == 0){
int a1, a2, a3;
[self parseMessage:kMsgDKeyDown, &a1, &a2, &a3];
- // NSLog(@("kMsgDKeyDown ID %04x, MASK %04x, BUTTON %04x\n", a1, a2, a3);
- if (a1 == 0xefe1) {
- shiftDown = 1;
- }
- if (a1 == 0xefe3) {
- ctrlDown = 1;
- }
- // NSLog(@("CtrlActive = %u, ShiftActive = %u\n", ctrlDown, shiftDown);
+ //NSLog(@"kMsgDKeyDown ID %04x, MASK %04x, BUTTON %04x\n", a1, a2, a3);
+ //NSLog(@"DOWN %u, %u, %u\n", a1, a2, a3);
+ //Do some checking that function keys are translated properly
+ //if its not a printable character and not a supported function key
dont emulate it
+ //here are the function keys we're going to support.
+ /*
+ NSUpArrowFunctionKey 61266
+ NSDownArrowFunctionKey 61268
+ NSLeftArrowFunctionKey 61265
+ NSRightArrowFunctionKey 61267
+ NSBackspaceKey 61192
+ NSCarriageReturnKey 61197
+ NSDeleteKey
+ */
+ switch (a1) {
+ case 61266:
+ a1 = NSUpArrowFunctionKey;
+ break;
+ case 61268:
+ a1 = NSDownArrowFunctionKey;
+ break;
+ case 61265:
+ a1 = NSLeftArrowFunctionKey;
+ break;
+ case 61267:
+ a1 = NSRightArrowFunctionKey;
+ break;
+ case 61192:
+ a1 = NSBackspaceKey;
+ break;
+ case 61197:
+ a1 = NSCarriageReturnKey;
+ break;
+ default:{
+ //cant call contains with an int, run through the array, if
found, break, else return
+ BOOL found = NO;
+ int len=sizeof(printableCharacters)/sizeof(int);
+ for (int i=0;i<len; i++){
+ if(a1 == printableCharacters[i]){
+ found = YES;
+ break;
+ }
+ }
+ if(!found){
+ return;
+ }
+ }
+ break;
+ }
+
+ //Shift+apple+H = home key
+ //HWButtonHome
+ if(a1 == 72 && a3 == 5 && [self homeButtonHotkey]){
+ hid_inject_button_down(HWButtonHome);
+ hid_inject_button_up(HWButtonHome);
+ return;
+ }
+
+ hid_inject_key_down(a1, 0);
+ // NSLog(@"CtrlActive = %u, ShiftActive = %u\n", ctrlDown, shiftDown);
}
if (strncmp(kMsgDKeyUp, (char*)message, 4) == 0){
int a1, a2, a3;
[self parseMessage:kMsgDKeyUp, &a1, &a2, &a3];
- // NSLog(@("kMsgDKeyUp ID %04x, MASK %04x, BUTTON %04x\n", a1, a2, a3);
- if (a1 == 0xefe1) {
- shiftDown = 0;
- }
- if (a1 == 0xefe3) {
- ctrlDown = 0;
- }
- // NSLog(@("CtrlActive = %u, ShiftActive = %u\n", ctrlDown, shiftDown);
+ //NSLog(@"kMsgDKeyUp ID %04x, MASK %04x, BUTTON %04x\n", a1, a2, a3);
+ //NSLog(@"UP %u, %u, %u\n", a1, a2, a3);
+
+ //a1 is always 0, problem with parse message? or by design?
+ hid_inject_key_up(a1);
+ // NSLog(@"CtrlActive = %u, ShiftActive = %u\n", ctrlDown, shiftDown);
}
if (strncmp(kMsgDMouseMove, (char*)message, 4) == 0){
int x, y;
[self parseMessage:kMsgDMouseMove, &x, &y];
mouseX = x; mouseY = y;
- mouseSendEvent( mouseX, mouseY, mouseButton);
+ //hid_inject_mouse_abs_move(mouseButton, mouseX, mouseY);
+ mouseSendEvent( mouseX, mouseY, mouseButton);
+ //NSLog(@"Mouse button %u at %f,%f\n", mouseButton, mouseX, mouseY);
}
if (strncmp(kMsgDMouseDown, (char*)message, 4) == 0){
-
- int button;
+ int button;
[self parseMessage:kMsgDMouseDown, &button];
// simulate middle/right mouse button
@@ -596,15 +664,17 @@
} else {
mouseButton = 0;
}
+ //hid_inject_mouse_abs_move(mouseButton, mouseX, mouseY);
mouseSendEvent( mouseX, mouseY, mouseButton);
- // NSLog(@("Mouse down %u at %f,%f\n", button, mouseX, mouseY);
+ // NSLog(@"Mouse down %u at %f,%f\n", mouseButton, mouseX, mouseY);
}
if (strncmp(kMsgDMouseUp, (char*)message, 4) == 0){
int i;
[self parseMessage:kMsgDMouseUp, &i];
mouseButton = 0;
+ //hid_inject_mouse_abs_move(mouseButton, mouseX, mouseY);
mouseSendEvent( mouseX, mouseY, mouseButton);
- // NSLog(@("Mouse up %u at %f,%f\n", i, mouseX, mouseY);
+ // NSLog(@"Mouse up %u at %f,%f\n", mouseButton, mouseX, mouseY);
}
if (strncmp(kMsgCEnter, (char*)message, 4) == 0){
// connected
@@ -687,7 +757,7 @@
return _enabled;
}
-(BOOL) keyboardSupportInstalled{
- return NO;
+ return YES;
}
-(void) setScreenWidth:(int)width andHeight:(int)height{
@@ -708,4 +778,10 @@
-(void) setClientName:(NSString *) clientName{
[[NSUserDefaults standardUserDefaults] setObject:clientName forKey:keyClientName];
}
+-(BOOL) homeButtonHotkey{
+ return [[NSUserDefaults standardUserDefaults] boolForKey:keyHomeButtonHotkey];
+}
+-(void) setHomeButtonHotKey:(BOOL) homeButtonHotKey{
+ [[NSUserDefaults standardUserDefaults] setBool:homeButtonHotKey
forKey:keyHomeButtonHotkey];
+}
@end
Original issue reported on code.google.com by [email protected]
on 26 May 2012 at 4:17
What steps will reproduce the problem?
1. press backspace on windows computer
What is the expected output? What do you see instead?
delete a character
What version of the product are you using? On what operating system?
latest, windows, ios
Please provide any additional information below.
the backspace button doesnt work
Original issue reported on code.google.com by [email protected]
on 19 Apr 2014 at 6:51
What version of the product are you using? On what operating system?
iSynergyClient 0.9-2 Ipone 4 IOS 6.1.2
Please provide any additional information below.
I have installed isynergyclinet from cydia source thnorth- myrepospace.com
All working well but my mouse scroller does not work
Original issue reported on code.google.com by [email protected]
on 9 Jun 2013 at 1:56
What steps will reproduce the problem?
1. i installed isynergyclient 0.8 on to ipad and synergy km on to my mac book
2. on my mac book under general within the km system preferences i have SHARE
MY KEYBOARD AND MOUSE clicked. in server configuration i have two screens
added. 1 is my mac book screen which i have named as my wifi server name and
second screen is listed as the name of my ipad. Roger Moore's iPad
3. on my ipad within the isynergyclient 0.8 i have listed under under server
address my i.p address for my macbook and under the client name i have my
macbooks wifi server name listed
What version of the product are you using? On what operating system? i am
running an ipad 2 os 5.1.1 and a mac book osx 10.6.8
i have a brand new magic mouse i just purchased
Original issue reported on code.google.com by [email protected]
on 4 Jun 2012 at 10:47
What steps will reproduce the problem?
1. not sure but sometimes clicking on some buttons on ios screen makes a crash
2. eg popup buttons
3. sometimes there is a crash jus after some time of working
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
isynergycient 0.8-20-1
synergy-1.4.10 on linux
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 7 Feb 2013 at 6:35
What steps will reproduce the problem?
1. configure and start server/client
2. move mouse from pc to iPhone screen
3. go to bottom of the screen
What is the expected output? What do you see instead?
expect to reach absolute bottom but it is not possible to go under iphone 4
screen size
What version of the product are you using? On what operating system?
latest from cydia: 0.8-20-1
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 7 Feb 2013 at 6:27
What steps will reproduce the problem?
1. Installing latest iSynergyClient 0.8 (with 05-March update - which fixed
previous CRASH problem that occured!)
2. Using Windows 7 as the server with latest version of server (beta)
3. Activate Mouse in the iSynergyClient App
4. Get the mouse cursor into the iPad screen (works great!)
5. Open a Note (or other) App and try to type in with the desktop keyboard
6. Change the orientaion of iPad and move the mouse (this is not related to #5
step)
What is the expected output? What do you see instead?
1. Typing text (inside a focused text field) while inside iPad screen should
work but it does not do anything (not in iPad and not in Desktop) not matter
what App is used.
2. (Unrelated to #1) - When changing iPad orientation, the mouse orientation
should be adjusted but it stays as if the device is still in Portrait mode.
Please provide any additional information below.
Original issue reported on code.google.com by shemesh.mail
on 7 Mar 2012 at 5:46
What steps will reproduce the problem?
1. Start Synergy client 1.4.6 on intel based macbook
2. Notice that there is a Synergy icon in the menu bar
What is the expected output? What do you see instead?
I expect to have the option to hide this icon from my menu bar. Instead, it is
permanently there.
What version of the product are you using? On what operating system?
Synergy 1.4.6
Please provide any additional information below.
I don't expect this is a "bug" per se, I just think that it is important for
mac users to have the capability to hide the menu bar icons, or else my screen
gets very cluttered. Therefore, please create a way to remove it. I think the
simplest way to do this, while still letting synergy run in the background with
no dock icon, is to create a system preferences pane under "other". Other
applications that do this are hyperdock, secrets, and flip4mac (growl used to
do this too). I have included a picture of the system preferences pane as an
example
Original issue reported on code.google.com by [email protected]
on 20 Mar 2012 at 7:43
Attachments:
What steps will reproduce the problem?
1.Factory reset on iPad 5.1.1 (9B206)
2.Jail break via Absinthe for Linux
3.Installed iSynergy from existing repo (worked fine)
4.Removed iSynergy
5.Installed new repo
6.Installed new iSynergy 0.9-2
7.Cannot open application
What is the expected output? What do you see instead?
The application to open
What version of the product are you using? On what operating system?
iSynergy 0.9-2
iPad 2 5.1.1 (9B206)
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 18 Oct 2014 at 2:22
>iOS 5.1.1
>Install following instructions, deb file in /var/mobile/synergy
>Run dpkg, reboot
iPad does not boot, hangs on logo. Untethered jailbreak using Redsn0w 0.9.12b2.
The device, however, does show up in iTunes. I used the linked .deb file in the
tutorial.
Original issue reported on code.google.com by [email protected]
on 7 Oct 2012 at 6:47
What steps will reproduce the problem?
1. try to make a client crash
2.
3.
What is the expected output? What do you see instead?
the cursor stays on screen even when I start the client again and turn it off
without a crash. Also after crash and restart after moving mouse again into the
iPhone screen and then move it back to the pc, the cursor is left on the edge
if the iPhone screen (however it is also back on a pc screen). It is possible
to return again to the iPhone screen.
to remove the cursor respring is needed
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 7 Feb 2013 at 6:39
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.