Git Product home page Git Product logo

serhioromano / vscode-st Goto Github PK

View Code? Open in Web Editor NEW
140.0 12.0 28.0 3.65 MB

Extension for VS Code to support Structured Text language.

Home Page: https://marketplace.visualstudio.com/items?itemName=Serhioromano.vscode-st#overview

License: MIT License

TypeScript 73.47% ANTLR 11.78% Smalltalk 14.75%
vscode-extension vscode-language vscode-snippets structured-text iec61131-3 codesys plc twincat3

vscode-st's Introduction

Structured Text (IEC 61131-3)

Most complete Structured Text language support. Features includes:

  • Syntax highlights in *.st, *.iecst files
  • Syntax highlights in *.md (Markdown) files in iecst code block
  • Syntax highlights in *.xml files in <Declaration> and <ST> code block
  • Snippets (enter st to see list of all snippets)
  • Outline view
  • Breadcrumbs code navigation
  • Go to Symbol in File
  • Formatting (*beta)
  • Commands

Syntax Highlights

Includes syntax highlight based on IEC 61131-3 draft, including namespaces, SFC elements (STEP, ACTION, TRANSITION), constant variables (2#000_1010, 16#1E, INT#23) and more.

Structured Text syntax highlights example

Also highlight in Markdown files

Example

Snippets

Fast growing snippets library. All cycles, conditions and declarations.

Formatter (work in progress)

Utilize VS Code Formatter API. Use general formatting command short keys. It capitalize all known keywords like TRUE, FALSE, IF, BOOL, ... It also add spaces.

Note

Roadmap

  • LSP (Language Server Protocol)
  • Suggestions
  • Lints

Release Notes

1.12.25

  • add spaces formatting
  • add PROPERTY with SET and GET and snippet
  • add METHOD snippet
  • add - CLASS ... END_CLASS keywords and snippet
  • fix - Extra spaces was added after tab or in front of the comment.
  • enhance - highlight Siemens SCL
  • add - (END_?)CONST, (END_?)ORGANIZATION_BLOCK, (END_?)DATA_BLOCK, (END_?)LABEL, BEGIN, COUNTER, VOID, NIL and GOTO keywords
  • add - support for PQ and PI in constants like %PQW10.0.

1.11.14

  • fix - highlight of names with _TO_ in it
  • fix - comment in comment highlight
  • fix - capitalization of s,h,m in T#***

1.11.2

  • fix - highlight for typed variables with - (INT#-100)
  • fix - highlight for typed variables with numeric constants (INT#16#10AE)

1.11.1

  • enhance - performance improve by using bundler
  • enhance - Format add spaces refactored performance and logic improvement.

1.10

  • fix - Format <> and ** correctly.
  • fix - Document format in strings fixed. Now formatting is not done in strings and comments.
  • improve - Formatting add spaces new conditions.
  • improve - Formatting. Add spaces in comments and other places like before := or after.
  • add - file extension *.TcDUT, *.TcPOU.
  • add- syntax highlights for comment attributes like (* @NESTEDCOMMENTS := 'Yes' *) generated by CoDeSys 2.3 in .EXP files.
  • add - Pragma attribute and message highlights like {attribute 'call_after_global_init_slot' := 'slot'} or {info 'TODO: should get another name'} supported in CoDeSys.
  • fix - lot of minor syntax highlight mistakes.
  • improve - syntax highlight was fully revised and improved a lot.

1.9

  • enhance - Outline now understand CONSTANT variables. Thanks to @msftrncs.
  • fix - VAR word break keyword parse issue. Thanks to @msftrncs.
  • fix - Some issues outline tree parse. Thanks to @msftrncs.
  • add - Formatting capitalization for all VAR_* keywords and __NEW and __DELETE
  • fix - one closed comment formatting as function #29
  • enhance - better snippets titles
  • enhance - better symbol navigation in outline and breadcrumbs. Thanks to @msftrncs.
  • add - Formatting capitalize time keys like t#10s to T#10S, ANY_* types

1.8

  • enhance - better snippets titles
  • add - support for UNION syntax
  • add - Highlight ST inside some XML files key.
  • change - enter st to see list of all snippets.
  • add - Highlight ST in Markdown files when use iecst key.
  • add - new icon :))
  • add - new formatting architecture that utilize VS Code formatting API.

1.7

  • add - syntax highlights keyword __TRY, __CATCH, __FINALY, __NEW, __DELETE, S=, R=
  • add - snippets fo __TRY, __CATCH, __FINALY, __NEW, __DELETE

Thanks to @nikvoronin

  • fix - syntax highlights keyword inside another word
  • fix - build document structure with block indented
  • add - outline for Structures and Enumerations
  • enhance - outline for other elements
  • enhance - right click commands now appear only in ST files

1.6

  • add - outline document structure
  • add - Go to symbol in file support
  • add - breadcrumbs

1.5.0

  • improve - function highlights. Now we Highlight all function either user defined or built in.
  • improve - variable declaration or STRUCT declaration section has got a lot of improvements. We highlight custom types now, and whole section looks much cleaner because scopes were changed.
  • improve - If you call for a method of a function block through dot my_fb.method() method is highlighted. We also highlight function block properties or parameters.
  • add - TODO or TODO: in comments attract an attention
  • add - Highlights for action modifiers myAction(DS, T#3s); where DS will be highlighted.
  • add - Highlights for names of parameters of function block.

1.4.0

I've learned few things about syntax highlights. Big refactoring. I added some missing keywords, changed some coloring scopes and improved coloring in general.

1.3.0

  • add - TYPE creation snippets (enumerations ans structure) and enhance it's syntax highlights
  • enhance - Select type out of suggestion list when inset variable in declaration area from snippet
  • enhance - Utilise October 2018 feature for multiple prefixes in snippets and add multiple prefixes to some snippets.
  • fix - syntax highlights for function_block
  • fix - Auto close comments /*. (*.
  • enhance - revision of highlights much better now.

1.2.0

  • fix - Insert END_VAR after VAR is inserted.
  • fix - highlights for WORD datatype.
  • fix - other minor changes
  • fix - Notification "This file not a structured text language!" #6
  • add - Command pallet Ctrl+Shift+P command ST: Format
  • add - same command context menu
  • add - user parameter st.autoFormat

All 3 make the same. Capitalize constants like TRUE, FALSE, EXIT and others. Right now only few. This is only proof of concept. Later we will add more beautifications.

1.1.0

  • add - a lot of different snippets
  • enhance - syntax highlight like function names, program and function definitions, etc..

1.0.0

  • fix - extensions metadata tags
  • add - new functions to support logi.CAD 3 reference variables.
  • enhance - auto indentations inside IF, PROGRAM, VAR, ...
  • fix - close [ bracket
  • add - region folding
  • improve - keywords case
  • improve - readme file
  • improve - syntax highlights scopes
  • add- few new snippets.
  • fix - some keywords highlight issue
  • add- new file extensions to support logi.CAD 3 projects.

vscode-st's People

Contributors

dependabot[bot] avatar msftrncs avatar nikvoronin avatar serhioromano 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

vscode-st's Issues

Suggestion, split view is VS code

Is it possible to split editor to 2 sections, like Visual Studio does?
This would be a step closer to separate Declaration from Definition.

Update README file

Current version of README file is autogenerated. Need an attention.

  • Add screenshots of highlighted ST code
  • Add installation istruction
  • Add language description

1.9.0/1.9.1 SymbolProvider regressions

With the 1.9.0/1.9.1 SymbolProvider changes:

  1. may take excessive time for malformed comments/quoted strings in a VAR(_x) block
  2. fails to mark CONSTANT variables
  3. may show nonexistent '' variables from final comments or from comments separated from previous variable by two line breaks.

I will post a PR shortly.

With issue 1 under control, I was able to open a 32,000 line CoDeSys EXP file, and have a presentation of the approximately 4,000 symbols in under 2 seconds.

VAR/END_VAR scope when as parts of other identifiers

VAR and END_VAR incorrectly scope when run in to other identifiers in certain orders

image

VAR does not validate word break at end, END_VAR does not validate work break at either end.

VAR_x seem to be same as VAR

Looks like the \b is missing from the end of both the begin and end clauses.

Symbol Provider unaware of comments/strings, missing many POU objects, limited breadcrumb support.

The current STDocumentSymbolProvider (outline and breadcrumb feature) is unaware of comments and text strings, and will 'detect' symbols where none exists, and sometimes fails to detect them over small syntactical issues. It doesn't include global VAR's in addition to some issues with VAR's in general (modifiers). It also doesn't provide the data needed for breadcrumbs to work correctly.

It is a great start, though. I have been working on improving it for a few days, and may have drastic improvements done in a few more days.

Duration literals should be in small letters

The document format feature change the duration literals to capital letters but according to IEC 61131-3 (and us) they should be in small letters. Example:
T#1s becomes T#1S
T#1ms becomes T#1MS

Formatter adds spaces at the wrong places

When formatting a file spaces are added where they shouldn't be added. A couple of examples:

Before a comment block
(* bla bla *)
becomes
<space>(* bla bla *)

Before and after ':=' and ':' when they are surrounded by tabs as well as after comments at end of a line
When you have something like this with tabs after the variable, :, type and :=:
VARIABLE_X<tab>: DINT := 0; (* comment *)
becomes
VARIABLE_X<tab><space>: DINT := 0; (* comment *)<space>

Debugging

Hi,

Is it possible to debug the code somehow?

view Twincat *.TcPOU, *.TcDUT, etc...

Hello,
Are they contemplated to open with vscode and the extension Structured Text language Support the Twincat 3 blocks *.TcPOU, *.TcDUT, etc...?
thanks you.

Wrong line comment character

According to the IEC standard comments shall be surrounded by '(' and ')', this extension however uses '//' for line comments. If there are companies that deviate from the standard and actually use '//', perhaps this could be added as a configuration item?

Nested comment and Syntax highlighting /coloring.

Hello,
I have found if there is nested comment like:

(*
		bAddress				: BYTE;
		bLength				: BYTE; (* size of the data *)
		dwID				: DWORD; (* 32 bit long ID *)
*)

because of the first *), the rest of the commented code won't be seen as commented.
Could it be possible to fix this ?
Thanks
Edit: add image for better understanding:
image

Notification "This file not a structured text language!"

The notification "This file not a structured text language!" keeps appearing everytime I change files for example python -> StCode file and vice versa. Can you make a configuration parameter for this or delete it completely?
image

An error message is prompted when executing the command of YARN

$ node ./node_modules/vscode/bin/install
Detected VS Code engine version: 1.52.1
Found minimal version that qualifies engine range: 1.52.1
Fetching vscode.d.ts from: https://raw.githubusercontent.com/Microsoft/vscode/ea3859d4ba2f3e577a159bc91e3074c5d85c0523/src/vs/vscode.d.ts
Error installing vscode.d.ts: Error: read ECONNRESET
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Syntax highlighting doesn't work for ABB compiler

Hi,
first of all, good job so far. I have found couple of things that are not working with my code.

For some reason, I might have configured vscode wrong but i cant get the syntax higlighting to work.
2

  • TRUE is not higlihted

Also it has trouble dealing with brackets of called functions:
1

  • the AND NOT and OR operators are not higlighted

Also I cant get the AutoFormat command to work.

":=" assignment operator should also be highlighted

CLK operator should also be highlighted
3

I think my vscode is somehow overriding the colors as the syntax highlighting doesn't look the same as in your examples.

It would also be good to choose our own prefixes like "v" for local variables and "p" for parameters. you could put that in the config json.

Thanks

Logical Operator Colouring

In some themes, defaults included, the logical operators are not coloured.

To solve this I do one of the following:

  • Change keyword.operator.logical.st to keyword.operator.logical.python in st.tmLanguage.json.
  • Add keyword.operator.logical.st to the same block with keyword.operator.logical.python in dark_vs.json.

The first solution is not correct because this is not a python extension. I'm not sure why python is the only one that gets called out for clouring in the theme.

The second one is more proper but only affects the 1 theme and isn't something the extension can solve on it's own.

Another ST extension uses support.class.collection.st which I don't think is correct either.

Pretty minor issue and I have no idea how to fix it properly but would be nice to get it highlighting in all themes.

Issue with **

Hi Serhioromano,

I've also found an issue with the ** which is automatically changed to * *. Is there also an option, that you fix this?

By the way I have more topics for your grandious extension but I don't know if I can ask here for all these stuff and give you tasks, but I can't realize an extension by my own. Is there any interest from your side to realize some more stuff in this extension or should it be an running version and thats it?

Thanks for all your help and best regards
Chris

Formatter issues

The formatter (capitalizer) has a couple issues, and exposes a grammar issue.

TYPE Bob : (* test *) STRUCT
        A, B : INT; //test
        b : INT; //test
    END_STRUCT
END_TYPE

(* Bool Word Struct Constant 

image

when formatted:
image

Note there are multiple issues.

  1. It capitalized a broken comment. The comment doesn't end, and that lack of an end trips up the regex used to detect keywords, while ignoring comments and quoted strings.
  2. It thought the start of the comment was a parameter list for a function call or operator END_TYPE so it moved it. 'keywords' and the 'end' block keywords should be excluded from this treatment.,
  3. The TM grammar changed the scope of the keyword END_TYPE when it has a parenthesis behind it. Since END_TYPE is a rigid keyword, it should appear very high in the processing in the grammar file, above anything that utilizes a more generic form.

The VAR_ keywords, but not VAR or END_VAR, seem to be missing from the capitalization behavior. This is not shown above.

Lint

Нужно тут выписать все правила которые нужно проверять и их чекать. Можешь добавить в комменте что ты думаешь нужно проверять, я добавлю в список сюда.

  • - Переменная ни где не используется
  • - Переменная не определена
  • - Объявление не закрыто ;

suggestion: remove auto-inserts of other paired keywords, improve snippets

Like #10, I would like to suggest getting rid of the auto inserts of most all keyword pairs. Only happens when they are entered in all uppercase, but that's how I am used to typing them, even though CoDeSys will automatically upper case them for me. This would include PROGRAM, FUNCTION, STRUCT, TYPE and ACTION at least that I have found. I think they cause more problems. Snippets are the way to go. They could use some improvement though.

Snippets prefixes should be unique for each snippet, so that a user can determine a precise input for a specific snippet. For instance, 'func' is used for both FUNCTION and FUNCTION_BLOCK. I know I can type 'func' and press tab and I will get the snippet for FUNCTION, but getting to FUCNTION_BLOCK will require navigation of the intellisense menu. It should just be 'down' one, but that's not certain. Instead a prefix of 'funcb' would be enough. The same would hold for FOR and FOR BY, and all the VAR's

Suggestions

Не совсем уверен что мы это осилим. Хотелось бы анализ и подчказывать какие есть переменные у фукционального блока. Что бы когда точку нажимаешь, выпадали именно эти переменные.

inconsistent scope of user function calls

In the below example, one of the function calls doesn't color or scope as a function call. I can see from the syntax file that this is because of overzealous capture of 'to' instead of hard coding all the known data type converters with something like DWORD_TO_(?:BYTE|WORD|INT|DINT) etc... Otherwise you will scope and theme the invalid DWORD_TO_DWORD

image

	IF Engine_OilPres_kPa >= 65534 THEN
		EngineOilPresMsg := SEL( Engine_OilPres_kPa = 65534, '*N/A*', '*ERR*' );
	ELSIF DisplayUnits_Mgr.EngUnits = 1 THEN
		EngineOilPresMsg := DWORD_kPa_TO_STRING_kPa( Engine_OilPres_kPa );
	ELSE
		EngineOilPresMsg := DWORD_kPa_TO_STRING_bar_2d( Engine_OilPres_kPa );
(*	ELSE
		EngineOilPresMsg := SEL( DisplayUnits_Mgr.EngUnits = 1, DWORD_kPa_TO_STRING_bar_2d( Engine_OilPres_kPa ), DWORD_kPa_TO_STRING_kPa( Engine_OilPres_kPa ) ); *) (* Doesn't Work! causes access violation *)
	END_IF
(*	EngineOilPresMsg := SEL( Engine_OilPres_kPa >= 65534, SEL( DisplayUnits_Mgr.EngUnits = 1, DWORD_kPa_TO_STRING_bar_2d( Engine_OilPres_kPa ), DWORD_kPa_TO_STRING_kPa( Engine_OilPres_kPa ) ), SEL( Engine_OilPres_kPa = 65534, '*N/A*', '*ERR*' ) );*)

Formatting - typo and extra features

When formatting several missing features poped up

Two important rules from PLCopen.org:

  • No space before semi-colon ';'
  • No space before colon ':' . One space after if not located at line end

Example 1:

VAR_INPUT
test: BOOL:=TRUE;
testNumberTwo:    BOOL   :=    TRUE   ;

becomes:

VAR_INPUT
test: BOOL := TRUE;
testNumberTwo:    BOOL   :=    TRUE   ;

but should be:

VAR_INPUT
	test: BOOL := TRUE;
	testNumberTwo: BOOL := TRUE;

or (maybe via setting):

VAR_INPUT
	test: BOOL		:= TRUE;
	testNumberTwo: BOOL	:= TRUE;

Example 2:

CASE test OF
	1   :
		// something
	2:
		// something

becomes:

CASE test OF
	1   :
		// something
	2 :
		// something

but should be:

CASE test OF
	1:
		// something
	2:
		// something

Example 3:

(*Comment*)
IF (something) THEN (*Comment*)

becomes:

(*Comment *)
IF (something) THEN (* Comment *)

but should be:

(* Comment *)
IF (something) THEN (* Comment *)

Issue

On this line change csb to csa:

regEx = new RegExp(`(${addSpace.csb.join('|')})(?! |\\t)`, "ig");

This should fix Example 3 and partially Example 1 and 2.
I say partially because after the fix it correctly doesn't add a space in front of the ':' but it still does not remove redundant spaces in front of it.

Suggestion: auto insert * after typing (*

I don't not know if this is possible in VS Code to fix:

After typing (, the ) is auto inserted past the cursor, so if the next key is * for a multi line comment, a matching * should be auto inserted after the cursor before the ) so the result becomes (*|*) (where the | is the cursor).

Maybe the same thing could be done for /*, but there you would need to do the */ after the * in /* is typed.

Using formatter issue

Hi serhioromano,

I am using your program and it works really nice, but I have an issue using the formatter. How can I set um, that <> isn't change to < >?

Thanks at first and BR
Chris

Request: Make TCP Autocompletion an Extension Option

Often times in robotics / automation the term TCP is used to abbreviate "Tool Center Point".

However, this conflicts with the TCP ... END_TCP auto-completion.

I notice that code is auto-created the instant I type TCP in all upper-case, regardless of what follows.
I am requesting that the auto-completion of TCP ... END_TCP be made optional.

This would save me some sanity and would be greatly appreciated!

For example, I desire to type TCP_X (in general TCP_<>) without a TCP ... END_TCP block getting auto-created.

Thank you for your consideration.
Thank you for your VS code extension. I really appreciate what you have created here!

END_PROPERTY, SET, GET ??

It doesn't seem like these Keywords are supported, or at least they dont work consistently.

  • END_PROPERTY
  • SET (For Property)
  • GET (For Property)

Support for CLASS .. END_CLASS

Is it possible to add support for CLASS / END_CLASS, especially in the context of the outline feature?
I tried it myself and added CLASS / END_CLASS wherever FUNCTION / END_FUNCTION is used, but I broke the syntax highlighting feature and did not get the outline feature working.

Invite for coloboration

Hi @philippranzhin,

You were a collaborator for another ST extension. You had few good ideas. I invite you to join this extension development. Please post your issues here and I'll try to improve extension.

Suggestion: disable auto insert of END_VAR on typing VAR

typing in VAR causes END_VAR to be instantly inserted, yet there is more to type, such as _INPUT.

Code snippets already exist to choose from, but the auto insert of END_VAR prevents them from being selected successfully, because the END_VAR that was auto inserted gets left after selection. The code snippets works successfully if you type 'var' or stop before typing the R and make the selection then.

quoted string character escapes in grammar

The grammar has escape patterns for quoted strings, indicated as \\\\. in the grammar. These would be C style escapes, and they do not seem to be part of the IEC 61131-3 standard.

For reference:
https://www.fernhillsoftware.com/help/iec-61131/common-elements/literals-string.html

Sequence Usage Description
$$ Both Dollar sign ($) character
$' Single Apostrophe (') character
$" Double Double quotation mark (") character
$L Both Line feed (U+000A) character
$N Both Line feed (U+000A) character
$R Both Carriage return (U+000D) character
$T Both Horizontal tab (U+0009) character
$nn Single Single byte character, where nn is the two digit hexadecimal value of the character
$nnnn Double Double byte character, where nnnn is the four digit hexadecimal value of the character

Upper or lowercase letter are allowed.

But I see no support for them in the grammar.

Regarding implementation, from what I can tell, invalid combinations are not supported, and for instance in CoDeSys, they are flagged as an error.

Sample presentation (similar to CoDeSys)
image

Current grammar: (gets out of sync)
image

Do your environments actually support C style escapes, or is this a mistake? This would be a concern for cross platform compatibility of code, if all systems do not utilize a single standard, there are already enough extensions to the standard to make things difficult.

These character escapes also appear in the comment sections of the grammar. They could potentially cause a user unexpected issues:

/*///////// this comment doesn't close \\\\\\\\\*/ oh no this is still comment...

image

I don't know of any systems that allow this, so I don't think this is correct.

Incorrect auto formatting.

Function name or maybe other place contains a keywords will be auto formatted to Upper characters.
for example:
FUNCTION test_return_exit will be auto formatted to FUNCTION test_RETURN_EXIT.

missing data type [WORD] or is it [WORLD]?

The data type WORD and its relatives are not scoping/coloring.

I noticed in the tmLanguage file that instead WORLD appears. Maybe your ST variant supports some kind of WORLD type I am not aware of, so I have included a REGEX for it here:

\b(BOOL|BYTE|(?:D|L)?WORL?D|U?(?:S|D|L)?INT|L?REAL|TIME(?:_OF_DAY)?|TOD|DT|DATE(?:_AND_TIME)?|STRING|ARRAY|(?:POINTER|REF)\\sTO|ANY)\b

If you did not intend WORLD as a type, remove the L? in WORL?D. :)

I also included any number of white space between POINTER or REF and the TO. I also included TOD and DT because CoDeSys supports those as aliases to TIME_OF_DAY and DATE_AND_TIME respectively.

Need a Linter in this extension

Hi @Serhioromano,
to get nice and structured text, I need a linter in this extension. So in best case I want some text in the VS console, when naming of a variable is not right. Don't know if you can implement it? If you can do it I can put all linting-Tasks in a tabular here.

Best regards and stay safe
Chris

Add support for lowercase keywords

Even though we are supposed to use capital letters in keywords such as IF, ELSIF etc we have a lot of files where these are written in lower case (if, elseif...). However the syntax highlighting only check for these words in capital letters.

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.