Giter Site home page Giter Site logo

puppylinux-woof-ce / gtkdialog Goto Github PK

View Code? Open in Web Editor NEW
29.0 8.0 17.0 3.03 MB

Script friendly gtk GUI builder

License: GNU General Public License v2.0

Shell 3.44% Makefile 0.35% C 90.25% Inno Setup 1.41% M4 0.31% Lex 1.81% Yacc 2.09% Meson 0.35%
gtkdialog gtk2 gtk3 shell bash ash gui wayland

gtkdialog's Introduction

Gtkdialog - A small utility for fast and easy GUI building

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Downloading the Source Code
===========================

Get it from here:
    https://github.com/puppylinux-woof-CE/gtkdialog/releases

Get the latest revision from git (always stable):
    https://github.com/puppylinux-woof-CE/gtkdialog.git

Get an older revision from git:
    # clone the repo
    git clone https://github.com/puppylinux-woof-CE/gtkdialog.git
    
    # checkout. Use any 7 digit hash in the log
    git checkout 78f7ab3 # this is from 2022-01-24

Compilation and Installation
============================

Using Meson
-----------

    meson [configure-options] build
    ninja -C build
    ninja -C build install

From a Source Package Using Autotools
-------------------------------------

    ./configure [configure-options]
    make
    make install

From git Using Autotools
------------------------

    ./autogen.sh [configure-options]
    make
    make install

The doc/reference/* and examples/* don't install by default so you might
like to copy them somewhere.

Support for using Glade generated user interfaces is very old and I'd
rather not encourage folk to create Gtkdialog applications in this way.

VTE
---
Gtkdialog's configure script will compile-in support for the Virtual
Terminal Emulator if it finds libvte and its development headers.
libvte source package -> http://ftp.gnome.org/pub/GNOME/sources/vte/

ARM
---
A problem was encountered when compiling on the ARM platform whereby the
widgets were being packed in the wrong order and I have applied a fix for
this wrapped in an #ifdef __arm__ preprocessor macro in automaton.c.

Contacting Us
=============

https://github.com/puppylinux-woof-CE/gtkdialog

2022-03-20

gtkdialog's People

Contributors

01micko avatar dimkr avatar peabee avatar step- avatar woodenshoe-wi 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gtkdialog's Issues

problem with r180 and pixmap

Hello :)
thank you again for all the work you do on gtkdialog:)

i have a problem with r180 and pixmap
it's ok on r175
but on r180 return ==> "Segmentation fault"
tested on Ubuntu 11.04... 

code:
<pixmap>
<input file>/path/drop.gif</input>
</pixmap>

François Fabre

Original issue reported on code.google.com by [email protected] on 7 Aug 2011 at 9:16

Scroll bar for hbox and vbox

Thank you for creating this project.

Some applications like Puppy Linux pnethood 
(http://www.murga-linux.com/puppy/viewtopic.php?t=60672&start=22) have 
limitated functionality beacuase of windows size and monitor resolution 
restrictions.   I`ll like to request:

Add scroll bar for gtkdialog vbox and hbox

GtkScrolledWindow

http://www.gtk.org/api/2.6/gtk/GtkScrolledWindow.html

"For widgets that lack native scrolling support, the GtkViewport widget acts as 
an adaptor class, implementing scrollability for child widgets that lack their 
own scrolling capabilities. Use GtkViewport to scroll child widgets such as 
GtkTable, GtkBox, and so on. "

GtkViewport

GtkViewport — An adapter which makes widgets scrollable

http://www.gtk.org/api/2.6/gtk/GtkViewport.html

Best regards,
clarf

Original issue reported on code.google.com by [email protected] on 22 Jun 2011 at 4:15

Various improvements

Various improvements

Zigbert

http://www.murga-linux.com/puppy/viewtopic.php?t=38608&start=510

1) Support connecting user action signals after the default signal handler: 
maybe <action signalafter="button-press-event">echo 
button-press_event</action>. They're all connected in widget_connect_signals.

2) A right-click menu.

3) <table> column sorting: a sorting function needs to be written and activated 
when a header is clicked.

4) <tree> rendering similar to <table> i.e. after shown: no idea about this.

5) Supporting <item stock=gtk-open>coloumn1|coloumn2</item> from an input file: 
see fill_tree_view_by_command.

6) (Moved to the scales/sliders feature request).

7) <menu> submenus.

Original issue reported on code.google.com by [email protected] on 22 Jun 2011 at 11:03

Launch and Closewindow

Launch and closewindow are bugged but they've been patched to work. This 
example illustrates the behaviour:

{{{
#!/bin/sh

GTKDIALOG=gtkdialog

export LAUNCHED_DIALOG='
    <window title="winClosewindow" resizable="false" margin="50">
        <button label="Closewindow">
            <variable>btnClosewindow</variable>
            <action>closewindow:btnClosewindow</action>
        </button>
        <variable>winClosewindow</variable>
        <action signal="hide">""</action>
    </window>'

export MAIN_DIALOG='
    <window title="winLaunch" resizable="false" margin="50">
        <vbox>
            <button label="Launch">
                <action>launch:LAUNCHED_DIALOG</action>
            </button>
            <button label="Closewindow">
                <action>closewindow:winClosewindow</action>
            </button>
        </vbox>
        <variable>winLaunch</variable>
        <action signal="hide">exit:Exit</action>
    </window>'

$GTKDIALOG --program=MAIN_DIALOG
}}}

You should be able to execute closewindow:LAUNCHED_DIALOG but instead any 
variable from the launched dialog has to be passed. Also, if you launch more 
than once then only the most recent will close. Any tidying-up of these 
functions will have to support the current behaviour for backwards 
compatibility.

I'm currently thinking about recording the program names on launch and maybe 
preventing duplicates from being launched. The application developer really 
should be creating unique program names if he wants to open duplicate dialogs.

Original issue reported on code.google.com by [email protected] on 28 Jul 2011 at 3:06

Timer widget

Timer widget.

Maybe something like:

<timer interval="1000">
    <variable>TIMER</variable>
    <action>Tick</action>
</timer>

Some of the action functions could be made use of, such as enable, disable, 
clear or removeselected (delete).

g_timeout_add and maybe g_timeout_add_seconds (choice)

http://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#g-timeout
-add

Original issue reported on code.google.com by [email protected] on 20 Jul 2011 at 10:32

Togglebutton Widget

GtkToggleButton

http://developer.gnome.org/gtk/2.24/GtkToggleButton.html

With the same features as the existing button (refactor the button widget 
first, then duplicate it for the togglebutton).

Original issue reported on code.google.com by [email protected] on 10 Aug 2011 at 9:51

HBox and VBox custom spacing attributes

HBox and VBox custom spacing attributes.

GtkHBox and GtkVBox

http://developer.gnome.org/gtk/2.24/GtkHBox.html
http://developer.gnome.org/gtk/2.24/GtkVBox.html

Gtkdialog fixes spacing to 5, but the tags accept attributes and it's trivial 
to support spacing="value".

Original issue reported on code.google.com by [email protected] on 22 Jun 2011 at 9:14

tree widget hover mode refresh on cursor_changed crash

tree widget hover mode refresh on cursor_changed crash.

Reported by François via email.

#!/bin/sh

GTKDIALOG=gtkdialog

export script='
<vbox>
    <tree rules_hint="true" exported_column="0" hover_selection="true">
        <label>One|Two|Three</label>
        <item stock="gtk-yes">1|1|1</item>
        <item stock="gtk-no">2|2|2</item>
        <item stock="gtk-no">3|3|3</item>
        <variable>TREE1</variable>
        <height>100</height><width>200</width>
        <action signal="cursor_changed">echo cursor_changed $TREE1</action>
        <action signal="cursor_changed">refresh:TREE1</action>
    </tree>
</vbox>
'

$GTKDIALOG --center --program=script

Original issue reported on code.google.com by [email protected] on 30 Aug 2011 at 10:11

Feature: Scrollable windows

Previously posted at http://murga-linux.com/puppy/viewtopic.php?p=342785&#342785
As you can see, I wasn't sure exactly what needed to be implemented to enable 
this ;)
==================
I've been looking into the problem: "there are too many shares on my network so 
the pnethood window doesn't fit on my screen" (the same problem applies with 
too many partitions in pmount etc). 

It seems to me that it is currently impossible to make a scrollable part of a 
gtkdialog window to contain buttons and things (except maybe by using the glade 
interface?). Am I right about this? 

I think the solution is to implement the GtkScrolledWindow or GtkViewport 
container (or whatever you call it) in gtkdialog. It looks to me like it should 
be fairly easy for someone who knows what they're doing. I wonder if we have 
anyone confident enough with their C/Gtk... 

Are there other programs that would significantly benefit from this? If not I 
guess you could always say it would be better to rewrite pmount and pnethood in 
genie or something. 

Original issue reported on code.google.com by [email protected] on 24 Jun 2011 at 7:49

comboboxtext and comboboxentry searching

comboboxtext and comboboxentry searching.

Implemented in code and activated via a custom tag atttribute.

comboboxtext:
User presses a key, the next item that begins with that case insensitive char 
is selected and it'll wrap back to the first.

comboboxentry:
It can't be search-as-you-type because then the user would be trying to type 
something into the entry and the code would be attempting to set it to an item 
in the list, so the search code must be activated on Enter and it'll have to be 
done on the "activate" signal before the signal reaches the application. This 
could of course interfere with an <action signal="activate"> so the application 
developer is not going to want to use the both together.

Original issue reported on code.google.com by [email protected] on 14 Oct 2011 at 10:32

Allowing Enter key to end entry input

When making a password script as in 01mico's example, pressing enter has no 
effect when I added the "Enter_Ok" code button in place of the one he used.
It seems logical that the user would enter his password and press Enter so can 
that be made to work?
This does not.
[code]
#! /bin/bash
export DLG='<window>
   <vbox>
    <hbox>
         <text>
     <label>Password</label>
    </text>
    <entry tooltip-text="Enter your password here">
       <default>""</default>
       <visible>password</visible>
       <variable>ENCKEY</variable>
     </entry>
   <button can-default="true" has-default="true" use-stock="true">
    <input file icon="gtk-ok"></input>
    <label>Ok</label>
   </button>
     </hbox>
    </vbox>
   </window>'
gtkdialog -p DLG
echo $ENCKEY
[/code]

Original issue reported on code.google.com by [email protected] on 21 Aug 2011 at 8:10

GtkBuilder support

technosaurus

http://www.murga-linux.com/puppy/viewtopic.php?p=534417#534417

Original issue reported on code.google.com by [email protected] on 4 Jul 2011 at 11:23

Implement WebKitGTK in the future ...

Hello Thunor :)
Is it possible to implement in the future WebKitGTK
http://webkitgtk.org/

Example of using in python:
http://code.google.com/p/pywebkitgtk/

Original issue reported on code.google.com by [email protected] on 10 Nov 2011 at 3:36

checkbox widget input file directive

checkbox widget input file directive.

I've noticed that <input file> is faster than <input> and the checkbox can be 
useful for executing code conditionally so this is important. Currently the 
checkbox menuitem is good for this but then you need a menu and menubar and the 
menubar doesn't accept tag attributes and so you can't hide it ;) Swings and 
roundabouts.

Original issue reported on code.google.com by [email protected] on 18 Nov 2011 at 2:05

MAXWIDGETS

MAXWIDGETS

Currently hardcoded to 529.

The widget pointer array really needs to be dynamically allocated rather than 
the simple fixed size that it currently is. A GList linked-list is the solution 
and a priority since I'm writing something that uses a lot of widgets and I 
have to think about the limit which is silly.

Original issue reported on code.google.com by [email protected] on 28 Sep 2011 at 9:06

Create a new <listview> widget based upon the GtkListStore model

Create a new <listview> widget based upon the GtkListStore model

The existing <tree> widget uses the incorrect GtkTreeStore model and is limited.

Support column data types.

Support application developer defined hidden columns.

Possibly support all text, pixbuf, progress, combo, toggle cell renderers.

Make it as configurable as possible.

http://developer.gnome.org/gtk/2.24/GtkListStore.html

Original issue reported on code.google.com by [email protected] on 21 Sep 2011 at 2:58

tree widget column data types

Specify the column data types for the tree widget to correct the sorting

Disciple

http://www.murga-linux.com/puppy/viewtopic.php?p=562748#562748

The default directive isn't being used so it could go in there like this:

<label>Column 0 | Column 1 | Column 2</label>
<default>G_TYPE_STRING | G_TYPE_INT | G_TYPE_FLOAT</default>

Easy enough as far as I can see: widget_tree.c:widget_tree_create_tree_store()

Original issue reported on code.google.com by [email protected] on 20 Sep 2011 at 5:14

Fake or non-widget tags

Fake or non-widget tags.

Useful for lots of things such as comments or setting application/project level 
properties.

vovchik

http://www.murga-linux.com/puppy/viewtopic.php?p=572946#572946

Original issue reported on code.google.com by [email protected] on 13 Oct 2011 at 11:06

Tree widget multi-selection mode

Tree widget multi-selection mode.

GtkSelectionMode

http://developer.gnome.org/gtk/2.24/gtk-Standard-Enumerations.html#GtkSelectionM
ode

A few functions require updating to cope with it (remove_selected_variable and 
widget_get_text_value).

The default is GTK_SELECTION_SINGLE but this allows it to be deselected. The 
mode that stops this deselection is GTK_SELECTION_BROWSE and would probably 
already work if set.

Original issue reported on code.google.com by [email protected] on 18 Jun 2011 at 10:34

gtk-window-set-icon-from-file

gtk-window-set-icon-from-file

http://developer.gnome.org/gtk/2.24/GtkWindow.html#gtk-window-set-icon-from-file

As requested by Vovchik:

http://www.murga-linux.com/puppy/viewtopic.php?p=580114#580114

Original issue reported on code.google.com by [email protected] on 18 Nov 2011 at 2:22

New action functions

New action functions.

The enable and disable action functions are very simply implemented within 
Gtkdialog and there are other similar GtkWidget methods that would be useful:

hide and show - 
http://developer.gnome.org/gtk/2.24/GtkWidget.html#gtk-widget-set-visible

activate - 
http://developer.gnome.org/gtk/2.24/GtkWidget.html#gtk-widget-activate

There might be more but I wanted to get these written down now.

Original issue reported on code.google.com by [email protected] on 14 Oct 2011 at 11:27

GtkEventBox

GtkEventBox

Useful for setting the background colour of widgets that don't support this and 
for adding signal support to the pixmap widget.

http://developer.gnome.org/gtk/2.24/GtkEventBox.html

Original issue reported on code.google.com by [email protected] on 26 Sep 2011 at 8:29

File Chooser File Filter

gtk_file_chooser_add_filter

http://developer.gnome.org/gtk/2.24/GtkFileChooser.html#gtk-file-chooser-add-fil
ter

jpeps

Original issue reported on code.google.com by [email protected] on 12 Aug 2011 at 10:36

gtk_window_set_resizable

Hello,
Would it be possible to add the ability to resize a window by an action?
add a tag input and input file Ex: <input>640x480<input>

gtk_window_set_resizable ()
http://developer.gnome.org/gtk/2.24/GtkWindow.html#gtk-window-set-resizable

François

Original issue reported on code.google.com by [email protected] on 25 Aug 2011 at 10:09

Tag Attribute Value Consistency

Tag Attribute Value Consistency

true/false, yes/no, 0/1 within the existing [custom] tag attributes.

Also I've noticed that "exported_column" for example should also be accepting 
"exported-column".

A general issue with the existing code that requires attention.

Original issue reported on code.google.com by [email protected] on 30 Jul 2011 at 8:44

Setting the pixmap's image from a command

disciple and vovchik

http://www.murga-linux.com/puppy/viewtopic.php?p=539783#539783
http://www.murga-linux.com/puppy/viewtopic.php?p=540188#540188

It basically amounts to adding a fill_pixmap_by_command function but with 
binary data that bash (etc.) doesn't support in shell variables, although 
vovchik has suggested using hexdump to convert the binary data into ASCII.

There's a nice piece about storing binary data within shell variables here: 
http://mywiki.wooledge.org/BashFAQ/058

Currently unscaled images are loaded using the original gtkdialog method of 
calling gtk_image_set_from_file. This function is very useful as animated gifs 
animate after loading. Scaled images call gdk_pixbuf_new_from_file_at_size and 
then gtk_image_set_from_pixbuf, but animated gifs need to be managed 
differently as I have already found out (I've yet to write support for scaled 
animated gifs). So my initial thoughts are that this is going to be a lot of 
work using gdk_pixbuf_new_from_data and maybe gdk_pixbuf_scale_simple and then 
adding support for animated gifs on top of that.

Original issue reported on code.google.com by [email protected] on 4 Jul 2011 at 12:13

Lexer errors

I've found two errors now in gtkdialog_lexer.l so I'd better record them before 
I forget.

"chackbox" I expect isn't correct:
377: \<checkbox[ ]+             { Token="<chackbox>"; 

"hbox" is likely a copy and paste error:
202: \<vbox[ ]+ { 
    Token="<hbox>"; 
    BEGIN(ST_TAG_ATTR);
    return(PART_VBOX);
}

Original issue reported on code.google.com by [email protected] on 25 Jun 2011 at 5:42

..../examples/miscellaneous/fileselect

I tried starting the example in a terminal and the File button doesn't do 
anything.
When I tried running it with the original gtkdialog3, clicking the button gave 
me a segmentation fault.
Thought you might like to know.


Original issue reported on code.google.com by [email protected] on 4 Sep 2011 at 4:27

GTK-3

Would it be complicated to port gtkdialog to gtk3?

Original issue reported on code.google.com by [email protected] on 26 Jun 2012 at 6:54

Happy New Year

Happy New Year and best wishes for 2012:)
and long live gtkdialog!

Original issue reported on code.google.com by [email protected] on 15 Jan 2012 at 5:51

GtkFontButton

GtkFontButton

http://developer.gnome.org/gtk/2.24/GtkFontButton.html

Original issue reported on code.google.com by [email protected] on 20 Sep 2011 at 9:36

Control the alignment of a label plus image inside a button

Requested by frafa via email:

This example demonstrates the problem:

#!/bin/sh

GTKDIALOG=gtkdialog

export MAIN_DIALOG='
<window title="Button Align" resizable="false">
    <vbox>
        <button width-request="300" height-request="50" xalign="0" yalign="0">
            <height>32</height>
            <input file icon="gtk-new"></input>
            <label>button 1</label>
        </button>
        <button width-request="300" height-request="50" xalign="0" yalign="0">
            <height>32</height>
            <input file icon="gtk-open"></input>
            <label>button 22222</label>
        </button>
        <button width-request="300" height-request="50" xalign="0" yalign="0">
            <height>32</height>
            <input file icon="gtk-save"></input>
            <label>button 333333</label>
        </button>
        <button width-request="300" height-request="50" xalign="0" yalign="0">
            <height>32</height>
            <input file icon="gtk-properties"></input>
            <label>button 444444444444</label>
        </button>
    </vbox>
</window>
'

$GTKDIALOG --center --program=MAIN_DIALOG

Because the label plus image are inside a h/vbox inside the button, there is 
currently no control over the h/vbox.

This isn't a particularly difficult thing to do, it just needs some thought.


Original issue reported on code.google.com by [email protected] on 22 Aug 2011 at 12:00

Widget timer and input

Hi Thunor :)
If possible add to a widget <timer>
<input> and <input file>
tu start and stop timer by à function

Regards,
François 

Original issue reported on code.google.com by [email protected] on 11 Oct 2011 at 3:18

Vte Terminal Widget

Vte Terminal Widget

http://developer.gnome.org/vte/unstable/VteTerminal.html

Requested by François

Original issue reported on code.google.com by [email protected] on 7 Aug 2011 at 8:22

Setting properties through on_any_widget_realized is flawed

Setting properties through on_any_widget_realized is flawed.

The menuitems I've discovered aren't realized until viewed, and this also 
appears to apply to the notebook widget and everything within it. That results 
in tag attributes that are GTK+ widget properties hanging around waiting to be 
set and an action function could have modified the widget in that time!

I found this message within the ChangeLog:

* Wed Nov 29 2006 Laszlo Pere <[email protected]> 0.7.11
- The widget properties are set only when the widget is realized. This
  modification has been made because some properties can be set only if there
  is a parent window. (See 16.02.widget_properties_default for example)

Original issue reported on code.google.com by [email protected] on 31 Jul 2011 at 8:59

function () and Ubuntu...

Hello,
I say, thank you again for all your work on gtkdialog,
it's wonderful:)

Do you have any idea why in Ubuntu "function xxx () {....}" do not work?
apparently "export -f now" does not work,
Perhaps because of the default shell is dash by default?
ls -l $(which sh)
lrwxrwxrwx 1 root root 4 2011-08-12 19:55 /bin/sh -> dash


this code:

#!/bin/bash
function now () {
date > /tmp/date
}
export script='
<vbox>
<entry>
<variable>ENTRY_DATE</variable>
<input>cat /tmp/date</input>
</entry>
<button>
<label>Refresh</label>
<action>now</action>
<action>refresh:ENTRY_DATE</action>
</button>
</vbox>'
export -f now
gtkdialog3  -p script

return: sh: now: not found
sorry for my bad english ...
François

Original issue reported on code.google.com by [email protected] on 13 Aug 2011 at 10:43

A non-editable combo box

A non-editable combo box.

GtkComboBox

http://developer.gnome.org/gtk/2.24/GtkComboBox.html

Gtkdialog is currently using gtk_combo_new() which is deprecated. It's now 
gtk_combo_box_new().

Original issue reported on code.google.com by [email protected] on 18 Jun 2011 at 11:04

Notebook buttons to activate pages instead of tabs

Is it possible that you can add the ability to display a tab with a button if 
you hide the tabs with ==> show-tabs = "false", example:

    <notebook tab-pos="2" show-border="false" show-tabs="false"
        page="0" enable-popup="true" homogeneous="false">
        ...
        ...
        ...
    </notebook>

If you add this option then much more complex GUIs could be made :)

François Fabre via email

Original issue reported on code.google.com by [email protected] on 3 Aug 2011 at 11:27

gtkdialog create global variable/destroy global variable

From what I have read, gtkdialog does not support making/destroying global 
variables.
In Puppy, as a workaround variables are passed out of a function to an external 
file to be read back in for use in MAIN_DIALOG.
Being able to define a global variable in a function for use by the script 
would be great.

Although, from what I can find on the web, gtk does not support global 
variables.

Comments?

This also seems to be the problem with passing a variable from a function back 
to MAIN_DIALOG.

Original issue reported on code.google.com by [email protected] on 3 Sep 2011 at 7:56

Feature: spinbox widget

Vovchick expressed a desire for this at 
http://murga-linux.com/puppy/viewtopic.php?p=344726#344726

Original issue reported on code.google.com by [email protected] on 24 Jun 2011 at 7:52

Animated gif scaling

Animated gif scaling.

Viewnior ( http://xsisqox.github.com/Viewnior/ ) manages it and searching the 
net hasn't helped so the easiest route is to see how they're doing it :)

Original issue reported on code.google.com by [email protected] on 18 Jun 2011 at 10:15

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.