Giter VIP home page Giter VIP logo

salvadordf / cef4delphi Goto Github PK

View Code? Open in Web Editor NEW
1.2K 154.0 357.0 126.75 MB

CEF4Delphi is an open source project to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC for Windows, Linux and MacOS.

Home Page: https://www.briskbard.com/forum/

License: Other

Batchfile 0.07% Pascal 99.51% HTML 0.39% JavaScript 0.02% NASL 0.01%
delphi cef chromium browser pascal blink v8 vcl fmx firemonkey

cef4delphi's People

Contributors

ahausladen avatar ashumkin avatar dimmaq avatar gregspa avatar jepp avatar mronkain avatar paweld avatar salvadordf avatar wqmeng 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  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

cef4delphi's Issues

Custom TCefResourceHandler problem

I am trying to convert a project that uses dcef3 to CEF4Delphi. I was able to fix most of the issues I encountered, but this one I am not able to: I am using a custom TCefResourceHandler to load some app-specific resources. I have distilled the main part in a simple demo, which loads a browser (via TChromiumWindow component), intercepts the resource loading and tries to load the resource from a custom resource handler. The app consists of a form, edit control with a sample url (that doesn't matter, as we load the same html no matter what page is requested) and a button.

When I click the button, sometimes it works, but most of the times, I get an access violation error:
Project ResourceHandlerTest.exe raised exception class $C0000005 with message 'access violation at 0x11ac91d3: read of address 0xfeef00b6'.

Even if it works the first time, almost always the second click produces the same error as above.

It looks like that there is some (probably memory related) problem with the custom resource handler, but I can't find what could it be. The same code works as expected in dcef3 (2704).

I have the following code (using Rad Studio XE6):

program ResourceHandlerTest;

uses
  Vcl.Forms,
  uCEFApplication,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

begin
  GlobalCEFApp := TCefApplication.Create;

  if GlobalCEFApp.StartMainProcess then
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end;

  GlobalCEFApp.Free;
end.
unit StreamCefResourceHandlerUnit;

interface

uses
  System.Classes, System.SysUtils, uCEFTypes, uCEFInterfaces, uCEFResourceHandler;

type

  StreamCefResourceHandler = class(TCefResourceHandlerOwn)
  private
    status_ : integer;
    statusText_ : string;
    mimeType_ : string;
    dataStream_ : TStream;
  protected
    function ProcessRequest(const request: ICefRequest;
      const callback: ICefCallback): Boolean; override;
    procedure GetResponseHeaders(const response: ICefResponse;
      out responseLength: Int64; out redirectUrl: ustring); override;
    function ReadResponse(const dataOut: Pointer; bytesToRead: Integer;
      var bytesRead: Integer; const callback: ICefCallback): Boolean; override;
  public
    constructor Create(const browser: ICefBrowser; const frame: ICefFrame;
      const schemeName: ustring; const request: ICefRequest; stream: TStream; mimeType: string); reintroduce; virtual;
    destructor Destroy; override;
  end;

implementation

constructor StreamCefResourceHandler.Create(const browser: ICefBrowser; const frame: ICefFrame;
  const schemeName: ustring; const request: ICefRequest; stream: TStream; mimeType: string);
begin
  inherited Create(browser, frame, schemeName, request);
  dataStream_ := stream;
  mimeType_ := mimeType;
end;

destructor StreamCefResourceHandler.Destroy;
begin
  dataStream_.Free;
  inherited;
end;

function StreamCefResourceHandler.ProcessRequest(const request: ICefRequest; const callback: ICefCallback) : Boolean;
begin
  status_ := 200;
  statusText_ := 'OK';
  dataStream_.Seek(0, soFromBeginning);
  callback.Cont;
  result := true;
end;

procedure StreamCefResourceHandler.GetResponseHeaders(const response: ICefResponse; out responseLength: Int64; out redirectUrl: ustring);
begin
  dataStream_.Seek(0, soFromBeginning);
  response.Status := status_;
  response.StatusText := statusText_;
  if mimeType_ <> '' then
    response.MimeType := mimeType_;
  responseLength := dataStream_.Size;
end;

function StreamCefResourceHandler.ReadResponse(const dataOut: Pointer; bytesToRead: Integer;
  var bytesRead: Integer; const callback: ICefCallback): Boolean;
begin
  bytesRead := dataStream_.Read(DataOut^, BytesToRead);
  Result := true;
  callback.Cont;
end;

end.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uCEFWindowParent, uCEFChromiumWindow, uCEFChromium, uCEFInterfaces,
  uCEFTypes, StreamCefResourceHandlerUnit, uCefMiscFunctions, uCEFStreamReader, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    ChromiumWindow1: TChromiumWindow;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Chromium1GetResourceHandler(Sender: TObject; const browser: ICefBrowser;
      const frame: ICefFrame; const request: ICefRequest; out Result: ICefResourceHandler);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(ChromiumWindow1.ChromiumBrowser.OnGetResourceHandler) then
    ChromiumWindow1.ChromiumBrowser.OnGetResourceHandler := Chromium1GetResourceHandler;
  ChromiumWindow1.LoadURL(Edit1.Text);
end;

procedure TForm1.Chromium1GetResourceHandler(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; const request: ICefRequest; out Result: ICefResourceHandler);
var
  fileStream: TFileStream;
  stream: TStream;
begin
  stream := TStringStream.Create('<!DOCTYPE html><html><body><p>test</p></body></html>', TEncoding.UTF8, false);
  result := StreamCefResourceHandler.Create(browser, frame, '', request, stream, CefGetMimeType('html'));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ChromiumWindow1.CreateBrowser();
end;

end.

Dropdown control appearing in wrong place after form moved

If you go to a page with an HTML dropdown control, open/close it, then move the browser window and reopen the control it will appear in the wrong place. This issue can be seen using the SimpleBrowser demo.

It sounds just like this issue from CEF which has been resolved: https://bitbucket.org/chromiumembedded/cef/issues/1208/combobox-drop-down-menu-is-displaced

It may require hooking something up to the WM_MOVE message; (I'm not too sure as I didn't look into it too much).

Check for dll files fails

When CEF4Delphi checks for the presence of all cef dll's during initialization, it will fail when those dll's are not located in the current working directory. Would it be possible to add a setting that allows us to specify a folder where those files are located?

There are already parameters for setting the framework folder, resources folder, locales, cache folder, etc.. This new option could be done in same the way.

getElementById

After loading a webpage with a TChromium component, I need to read and write some data (value, innerHTML). I was hoping I could use some command like "getElementbyId('blabla').value"

I have been searching the internet for 2 days now, but nothing seems to work. I have found some ideas, which are offered as solutions, but they don't seem to work.

Is there an example Delphi project available, that shows me how to get a handle to the HTML document or how to get data from text fields, forms, etc?

I really hope that there is a solution, because I love what I have seen from Chromium, so far.

Strange startup problem

Under Delphi XE6 when I run the MiniBrowser demo (or any of my projects that use CEF4Delphi), in 1 out of 10 starts in average, the browser does not load properly. It will create the DOM (it will be available in ShowDebugTools), but will not display the web page. If you move the mouse around, it will change the cursor when it is over an edit control or a link, but the display will stay blank (mostly white, sometimes gray).

Does anybody else experience this and what could be causing it?

cef4delphi support iframe?

hello,
In HTML, I put an iframe.
For example: <iframe class = "preview_iframe" id = "preview_mobile_iframe" src = "./ pre_mobile.html" frameborder = "0"> </ iframe>
It's normal to open the HTML in FireFox and operate,
But in CEF4D open, when sending data to the iframe,
for example: html: function DO_INIT_ON_WIN(a){
var skyIframe = document.getElementById("preview_mobile_iframe");
var iframeW = skyIframe.contentWindow;
console.info(iframeW);
alert("1"); //reponse
iframeW["DO_INIT_ON_WIN_2"](a);
alert("2"); // no reponse!!!!!
};
delphi:
Chromium4.ExecuteJavaScript('DO_INIT_ON_WIN(' + AJson + ')', URLCbx.Text, 0);
it's failed,No response.
why?
thanks.

Render process crash with large images

The render process crashes when loading really large images.

The tests so far indicate that this only happen in 32bit application running in 64bit Windows.
All other bitness combinations seem to work fine.

More tests are needed.

How to register an extension?

I have adapted the guiclient demo from DCEF3 to use CEF4Delphi. Once the components are replaced, most of the code works as is.

I would like to use the code that registers a custom extension. However I was not sure how to adapt the code from the initialization section:

initialization
CefRemoteDebuggingPort := 9000;
CefRenderProcessHandler := TCustomRenderProcessHandler.Create;
CefBrowserProcessHandler := TCefBrowserProcessHandlerOwn.Create;
end.

guiclient.zip

OnDocumentAvailable not called

The Chromium.OnDocumentAvailable event is never triggered.

How to be able to access the document object ?

I tried using the Frame.VisitDomProc / Frame.VisitDom. Never gets triggered...

Thank you

How can I use CommandLine?

Hi, sorry my bad english...
My name is Rubens and... firstly, congratulations for the project.

I use another dcef3 soluction and I use CommandLine like this:

procedure OnBeforeCommandLine(const  processType: ustring; const  commandLine: ICefCommandLine);
begin
  commandline.AppendSwitch('--use-fake-ui-for-media-stream');
  commandline.AppendSwitch('--enable-media-stream');
  commandline.AppendSwitch('--disable-notifications');

end;


initialization

  DcefBApp.OnBeforeCommandLineProcessing := OnBeforeCommandLine;

end.

How can I use CommandLine in CEF4Delphi?

Thank you!

Problem in Delphi XE3 with initializing

I found this project lately, and I really like the idea to implement Chromium for Delphi in an easy way!

Unfortunately, I have this problem.
On initializing this line produces an error message:
Result := (cef_initialize(@HInstance, @TempSettings, CefGetData(FAppIntf), FWindowsSandboxInfo) <> 0);

I am able to locate the error (see below), but this kind of programming is too complicated for me to understand, so I hope there will be a solution from somebody else. :)

On executing the above mentioned line, the program enters this procedure several times:
procedure cef_base_add_ref(self: PCefBase); stdcall;
The third time result in the error message: the program enters this function:
function CefGetObject(ptr: Pointer): TObject; inline;
This function's result is '()', and after returning to 'cef_base_add_ref', the error comes up.

It seems to be some memory problem, but I don't know what kind of error it is or what to do to fix it.

And here is some more: it does not matter if I run the 32bit version or the 64bit version, there is always this error. The message content differs, but I think they are basically the same.

errormessage
errormessage_x64

How can I use DLL's and Resource files in another folder?

Hi,
How can I use dlls and resource files in different EXE folder?

Like this:

  CefCache := 'cef\__cache';
  CefLibrary := 'cef\libcef.dll';
  CefResourcesDirPath := 'cef\';
  CefLocalesDirPath   := 'cef\locales\';


I tried this bu don't work:

  GlobalCEFApp.Library := 'cef\libcef.dll'; <---- ???? This property "Library" do not exists
  GlobalCEFApp.FrameworkDirPath := 'cef\';
  GlobalCEFApp.ResourcesDirPath := 'cef\';
  GlobalCEFApp.LocalesDirPath   := 'cef\locales\';

In my project structure I separated my main EXE from another files (DLLs/resources).

Thank you!!!

Popup window does not close

When i click a link that opens another page inside a popup, everything works fine, but i can't close the popup.

Is there any configuration needed to close popups?

Differect directory FrameworkDirPath and ResourcesDirPath - App not start

Example

  GlobalCEFApp.FrameworkDirPath     := 'cef\';
  GlobalCEFApp.ResourcesDirPath     := 'cef\resources\';

cef.log

[0717/154140.059:ERROR:icu_util.cc(173)] Invalid file descriptor to ICU data received.
[0717/154140.060:ERROR:CEF4Delphi(1)] TCefApplication.InitializeLibrary error : External exception 80000003

Some already defined constants in C++Builder

I have a slight problem with three constants that are already defined in C++Builder (in winnt.h and winuser.h respectively):

IMAGE_FILE_LARGE_ADDRESS_AWARE
USER_TIMER_MINIMUM
USER_TIMER_MAXIMUM

I can easily comment them out, but it is a repetitive work to do after each update of CEF4Delphi, so I was wondering is there a way to fix this?

How can I use CommandLine with Args/Parameters?

In another dcef3 soluction I used:
...

commandline.AppendSwitchWithValue('--touch-events', 'disabled');
commandline.AppendSwitchWithValue('--use-file-for-fake-video-capture', 'video.y4m');

...

In Dcef4Delphi I tryed:
...

GlobalCEFApp.AddCustomCommandLine('--touch-events=disabled');
GlobalCEFApp.AddCustomCommandLine('--use-file-for-fake-video-capture=video.y4m');

...
Isn't one, but all commands that need parameter I tested and do not work.

How can I use CommandLine passing parameters/args in CEF4Delphi?

Thank you!!!

Compatibility with DCEF3 ?

Hi

Not an issue, but a question : currently i use DCEF3, but it's outdated and seems abandoned. Is this CEF4 compatible with DCEF3 ? If i just uninstall DCEF3 and install CEF4, will my apps still run without need to change my code ?

Thanks !

FireMonkey support (FMX)

Are there any plans to make this compatible with FireMonkey, as the Henri G. project (dcef3) has FMX units in it (that can be used as a basis).

Thanks for your work on this.

Browser closed after RecreateWnd called

When host form position property changed, by default it would call RecreateWnd API, this function makes the browser closed, it is however CreateBrowser does not bring it back.

Error when try to install in Delphi XE4

I have followed your install instructions but receive the following error when trying to install the package into DXE4:

cef4delphi_error

I have placed libcef.dll & chrome_elf.dll into system folder

Does it support H.245?

I am very excited to find this open source project, thank you very much, but does it support H.245? How to make it support mp3 or MP4 format? Thank you!

Delphi XE compile problem.

In Delphi XE any units compile problem.

uCEFMiscFunctions.pas

  • "UITypes" unit not found in this XE. Change to "Controls".

uCEFDragAndDropMgr.pas

  • System.AnsiStrings change to AnsiStrings at function TCEFDragAndDropMgr.HtmlToCFHtml, procedure TCEFDragAndDropMgr.CFHtmlToHtml.

uHelloScheme.pas

  • function THelloScheme.ProcessRequest - FStream.WriteData not found in Delphi XE rewrite this...

uSimpleTextViewer.pas

  • uses block change to

    {$IFDEF DELPHI16_UP}
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls
    {$ELSE}
    Forms, Classes, Windows, SysUtils, Controls, StdCtrls
    {$ENDIF}
    ;

Not TUrlParts ?

Why removed TUrlParts?

(dcef3 )

var
u: TUrlParts;
begin
u.host := 'github.com';
request.Url := CefCreateUrl(u);

(dcef4)

E2003 Undeclared identifier: 'TUrlParts'
E2003 Undeclared identifier: 'CefCreateUrl'

FMX support

Will there be FMX version of the component?
Thank you!

Disable GeoLocation Sharing

Hi,

how can I disable the geolocation sharing in Chromium webbrowser? I want to make it from code.

Thank you for your answer,
Kristóf

Document.referrer doesn't work

Hello, i'm trying to set custom HTTP-Referrer in my application. I tested it using (and expanding a little) the demo MiniBrowser.

To do that i wrote a function for event-handler OnBeforeResourceLoad.

procedure TWinRETestReferrerFrm.ChromeOnBeforeResourceLoad(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; const callback: ICefRequestCallback; out Result: TCefReturnValue);
begin
request.SetReferrer(String('http://mysite.com'), REFERRER_POLICY_ALWAYS);
end;

This code works and if i test my HTTP-Referrer header on some web-sites like https://www.whatismyreferer.com/ it displays me the correct referrer.

But i discovered a problem - it doesn't set corresponding referrer in "document.referrer" in Javascript. This way this referrer cannot be tracked by Google Analytics and some other trackers. To do the test i use method "LoadURL" like

Chromium1.LoadURL(URLCbx.Text);

Is it possible to manage it from Delphi? Or do i need probably to configure something? Thank you by advance.

Support for D7?

Hi,

Are you willing to add support for Delphi 7? I spent some time making the code compatible with D7 (based on DCEF3), and was pleased to see that there was not that much required. Not sure what your thoughts on that are.

I will highlight the main changes here. (Full source is attached)

  • The most widespread change is OutputDebugString(PWideChar(...)) which needs PAnsiChar. It would help if this could be refactored into a separate debug procedure or unit (maybe in uCEFTypes).
  • Definition for D7 types. (uCEFTypes)
  • reference to -> {$IFDEF DELPHI12_UP}reference to{$ENDIF}
  • inline -> {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF}
  • TCefRTTIExtension -> {$IFDEF DELPHI14_UP}... {$ENDIF}
  • IOUtils -> Commented out.
  • Some small other changes

Thanks

source_D7.zip

Access violation error on StartMainProcess

Hi
Thanks for your worthwhile efforts.
I'm using Delphi XE8 under Windows 10. My application is 32 bit so I use the 32 bit equivalent for your recommended libcef.dll:
Windows 64-bit Builds: CEF 3.2924.1561.g06fde99 / Chromium 56.0.2924.76
Windows 32-bit Builds: CEF 3.2924.1564.g0ba0378 / Chromium 56.0.2924.76
But I get error (access violation read of a memory address) when calling StartMainProcess (the same error raised when running the demos).
I trace the error: I reached cef_initialize in TCefApplication.InitializeLibrary.
Can you guide me what should I do?
Thanks in advance.

How to show DevTools

Thank you for this project. I think it is a great initiative.

Question: Can you please provide an example of how to show the DevTools.

Differences between CEF4Delphi and dcef3 focus/window messaging handling

I am trying to use my own popup menu component with CEF4Delphi. I use the BeforeContextMenu event to clear the ICefMenuModel parameter and then show my own popup menu.

It used to work just fine with dcef3, but now with CEF4Delphi there are two issues:

  1. If I use the DevExpress dxBarPopupMenu, it will show, but then clicking in the Chromium window or anywhere else in the application does not hide it and in most cases it even causes Systen Error Code 5: access is denied error (related to the DestroyWindow function I think).
  2. I tried using the standard TPopupMenu instead in a sample project, but it will no even show when using Popup(x, y).

So, what have changed in this regard between the two components that could cause this problem?

CEF4Delphi Cannot run on Windows XP

I wrote an application and sent it to user .
I got an error on open app in Windows XP
Error meesage likes
Cannot find QueryUnbiasedInterruptTime on Kernel32.dll

errorxp

I check Windows XP , it don't have the function on kernel32 .

Why delay when shutting down?

Just curious why there is a delay of about 2 seconds when the application is closed. Other implementations (e.g. DCEF3, CefSharp) seem to be able to close immediately.
I wonder if this is something that could be improved?
Thanks

Crashes immediately, All Demos Running FLASH on facebook (Game Playing)

I am developing with Delphi XE4 . Version 3071.1645 was the last version that worked. All branches afterwards (including current) will allow me to login to facebook then a few seconds later, it dies if i enable flash.
exception class $COOOOOO5 access violation at 0x5c950171 read of address 0x00000008
(libcef.dll)
CEF 3.3112.1655.gd97fbff
Chromium 60.0.3112.90
OS Windows
WebKit 537.36 (@e6ccc355a03184b2a4fa2b22bd15b89324d6a137)
JavaScript 6.0.286.52
Flash 26.0.0.151
User Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Command Line "C:\Users\Public\Documents\RAD Studio\11.0\Projects\CEF4Delphi\3112.1655\demos\MiniBrowser\MiniBrowser.exe"
--no-sandbox --lang=en-US --log-file=cef.log
--log-severity=verbose
--resources-dir-path="C:\CEF2\WIN32\Release"
--locales-dir-path="C:\CEF2\WIN32\Release\locales"
--remote-debugging-port=9000
--enable-spelling-service=1
--enable-media-stream=0
--enable-speech-input=1
--enable-system-flash
Module Path C:\CEF2\WIN32\Release\libcef.dll
Cache Path

Your browser (BriskBard) works fine..
Do I need to add/replace more commandline parms or insert more code to allow "FLASH BASED GAMES" to function right?

The CEFCLIENT demo works, as well as the Latest CHROME.EXE (same ceflib.dll version).

Attached is the verbose error log... not sure why 3071.1645 runs but not 3112.1649 or 3112.1655..
I can get versions of cef3 (1979) (2171) (2454) (2704) to ALL WORK.

ceflog.txt

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.