Giter VIP home page Giter VIP logo

news-o-o's Introduction

openSUSE News

Should you post on news.o.o? Or should you post to your own blog?

The openSUSE News Website, provides news to the community.

news.opensuse.org is meant for the publishing of official news about the openSUSE Project and it distributions. Only articles about official packages in the distribution or announcements in the interest of the community and Project should be published. Articles out of scope, in particular written to promote packages or home repositories, are discouraged and may be subject to the removal of the article.

We advise that information that fits the following circumstances be published on the author's blogs, on an email list or other appropriate communication channel and not published on news.opensuse.org:

  • Information about a call to action for the community

  • Information about an open-source project, its community and users

  • "How to use" or "tutorials" about packages (official or unofficial)

Blogs are shared on https://planet.opensuse.org/, which is a web feed aggregator that collects blog posts from people about openSUSE.

How to submit a new post?

  1. Create a new markdown file in _posts directory. File name should follow yyyy-mm-dd-title.md format. For example, 2020-02-27-my-first-post.md. You can start by clicking this link.

  2. Write content. You can start with the following template:

    ---
    author: Jacob Michalskie   # please use your real name (at least your first name) and/or your openSUSE user name
    date: 2020-02-27 12:00:00+01:00
    layout: post
    license: CC-BY-SA-3.0
    title: My First Post
    image: /wp-content/uploads/(year)/(month)/omw.png   # Place in the correct folder (see 3 below)
    categories:
    - Announcements
    tags:
    - infrastructure
    - websites
    ---
    
    Write you post in Markdown and HTML...
    
    

    The date and time you set here, in the header, will be the date and time your article, once merged, will be published and available on news.opensuse.org. Please be aware that +01:00 above represents 1 hour ahead of UTC time. Should you be more ahead of UTC time, include + or, if behind, include - UTC time) If you set the current day's date, be aware that there might be up to 2 hours delay between the time the PR got accepted and the time it actually gets picked up by the server.

  3. Please use an illustration image with at least 1153x505px size. It should be referenced under image in the header above, and the image should be placed in its own directory in /wp-content/uploads/(year)/(month) and named. For example: //wp-content/uploads/2022/04/my-first-post-image.png. If you need help with creating some approriate image feel free to ask in #artwork on IRC, Matrix or Discord.

  4. Save the file and create a pull request. You can find the button at page bottom.

Previews of posts

Before publishing, you can preview the post at https://news-o-o-preview.netlify.app/. Posts are published at the top of the hour and should be finish building in Actions before the top of the hour, which are usually recongnized by the server and publish within 3-8 minutes after the top of the hour.

How to build?

In order to run bundle the two following addional packages are needed: 'rubygem(bundler)' ruby-devel.

bundle install --path vendor/bundle
bundle exec jekyll build

Resulting site will be in _site directory.

How to serve locally?

bundle install --path vendor/bundle
bundle exec jekyll serve

Visit http://127.0.0.1:4000/ in your browser.

How to use emojis in your blog post?

We are using the Jemoji plugin, which allows you to use GitHub like syntax for emojis in your blog posts. For example, it's raining :cat:s and :dog:s!, will be rendered as:

it's raining ๐Ÿฑs and ๐Ÿถs!

How to update the theme?

If there's a newer revison of the openSUSE jekyll-theme you need to put the commit id into Gemfile.lock and count up the version number.

news-o-o's People

Contributors

ana avatar ana06 avatar andrii-suse avatar aplanas avatar cabelo avatar cboltz avatar curiousdtu avatar danigm avatar ddemaio avatar dependabot[bot] avatar dirkmueller avatar emf37 avatar ethanol6 avatar ggardet avatar guoyunhe avatar hellcp avatar hollowman6 avatar karatekhd avatar lkocman avatar lrupp avatar mslacken avatar msmeissn avatar okurz avatar sjpp avatar syutadeveloper avatar tacerus avatar victorhck avatar vinyanalista avatar vinzv avatar why-not-try-calmer 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

news-o-o's Issues

Split _posts by year

To make browsing easier, especially in the GitHub web interface, which truncates long directory listings, it would be great to refactor the repository layout to split files under the _posts/ directory into subdirectories for every year.

Build fails with latest ruby

Hi,

The project fails to build on Ruby 3.3 but works fine on 3.2.

root@777b5b1b45c0:/src# bundle exec jekyll build
                    ------------------------------------------------
      Jekyll 4.3.2   Please append `--trace` to the `build` command 
                     for any additional information or backtrace. 
                    ------------------------------------------------
/usr/local/lib/ruby/3.3.0/logger.rb:384:in `level': undefined method `[]' for nil (NoMethodError)

    @level_override[Fiber.current] || @level
                   ^^^^^^^^^^^^^^^
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/log_adapter.rb:45:in `adjust_verbosity'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:27:in `process'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `each'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
	from /src/vendor/bundle/ruby/3.3.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
	from /src/vendor/bundle/ruby/3.3.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
	from /src/vendor/bundle/ruby/3.3.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
	from /src/vendor/bundle/ruby/3.3.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
	from /src/vendor/bundle/ruby/3.3.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
	from /src/vendor/bundle/ruby/3.3.0/gems/jekyll-4.3.2/exe/jekyll:15:in `<top (required)>'
	from /src/vendor/bundle/ruby/3.3.0/bin/jekyll:25:in `load'
	from /src/vendor/bundle/ruby/3.3.0/bin/jekyll:25:in `<top (required)>'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli/exec.rb:58:in `load'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli/exec.rb:58:in `kernel_load'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli/exec.rb:23:in `run'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli.rb:491:in `exec'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli.rb:34:in `dispatch'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/cli.rb:28:in `start'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/exe/bundle:45:in `block in <top (required)>'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
	from /src/vendor/bundle/ruby/3.3.0/gems/bundler-2.4.6/exe/bundle:33:in `<top (required)>'
	from /usr/local/bin/bundle:25:in `load'
	from /usr/local/bin/bundle:25:in `<main>'
root@777b5b1b45c0:/src# ruby --version
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
root@777b5b1b45c0:/src# exit
exit

Some posts with only a number in file name

For example, _posts/2007-07-19-63.markdown:

---
author: Andreas Jaeger
comments: true
date: 2007-07-19 11:16:07+00:00
layout: post
link: https://news.opensuse.org/2007/07/19/63/
slug: '63'
title: News.openSUSE.org Goes Live
wordpress_id: 63
categories:
- Announcements
- Project
---

We are happy to announce our new news.opensuse.org website. This news portal will provide the latest openSUSE news.  We will continue to send important announcements to the opensuse-announce mailing list, but they should also be added to this site as well.

Comments on the news articles is open for everybody, just for contributing new stories, you need to have an account.  If you like to contribute, contact [email protected] - and if you like to submit a story without an account mail to [email protected].

We also have a calendar (with .ical) for events and other important openSUSE events.

In general, for blogs of openSUSE folks, I'd like to point to the [Planet SUSE agregator ](http://www.planetsuse.org) and say a big thank you to James Ogley for running this service for several years now!

Is this caused by converting? Should it be fixed?

Can't be used mailto tag?

Hello!
Recently I can read in news.o.o articles that share a email address as contact. Can't be used in Jekyll some kind of mailto tag to make more easy to write an email to that address?
Greetings.

full feed vs. shortened feed

Since an hour, the RSS feed gets shortened to 50 words, while it historically was a full feed with the complete article.

I'd prefer to keep the full feed as feed.xml (so that I can read everything in Akregator), but maybe you could add an alternative, shortened feed (shortfeed.xml?) for people who prefer that.

Request for translation branches and sites

The plan is to create branches:

  • lang/de
  • lang/fr
  • lang/ja
  • lang/pt
  • lang/zh
  • ...

And they will be deployed to:

  • news.opensuse.org/de/
  • news.opensuse.org/fr/
  • news.opensuse.org/ja/
  • news.opensuse.org/pt/
  • news.opensuse.org/zh/

Or:

  • de.news.opensuse.org/
  • fr.news.opensuse.org/
  • ja.news.opensuse.org/
  • pt.news.opensuse.org/
  • zh.news.opensuse.org/

How contributors participate translations:

  1. Fork the repo
  2. Checkout the lang branch
  3. Merge master branch to get latest posts
  4. Translate latest posts
  5. Commit and create PR (to the lang branch)
  6. Review, accept and deploy the lang branch

large images in wp-content/uploads/2024/01

I noticed that loading news-o-o took a long time and checked it in Firefox's developer tools and found it downloaded some rather big images.

I've tracked them down to wp-content/uploads/2024/01. leap.png in particular is almost 10MB.

Seems to be a simple miss, might it be possible to replace them with more optimized images?

License for published content

Hello!
Great work done!! I like it this new site.
Maybe should be added under what license is published the content in the site. (maybe a foot note, or head note)

Greetings.

Warning: Empty `slug` generated for ''

After updated to jekyll 4.1, I run:

bundle exec jekyll serve

And got a lot of warnings:

Warning: Empty `slug` generated for ''.
Warning: Empty `slug` generated for ''.
Warning: Empty `slug` generated for ''.
...

It doesn't seem to affect the site, but good to fix.

Upstream issue jekyll/jekyll#8259

Is this going to replace WordPress site?

I am planing to apply Chameleon theme to news.o.o website. I saw it still use WordPress. But here the code is static website generator.

If it will replace WordPress, I can start to adopt theme for it.

Add Mastodon share option

We have share options for Twitter, Facebook etc. in the footer of each article.

However, a "share on Mastodon" button is missing - would be a nice addition.

bundle exec jekyll build is failed

I tried to bulid/run jekyll to check my article which is Call For Host openSUSE.Asia Summit 2023.
But it had error.

Do I miss anything else?

environment

openSUSE Leap 15.4

reproduce

$ git clone https://github.com/openSUSE/news-o-o.git
$ docker run -it -v $(pwd)/news-o-o:/mnt/news -p 4000:4000 ruby sh
# cd mnt/news
# bundle install --path vendor/bundle
# bundle exec jekyll build

error message

sorry for long....

Configuration file: /mnt/news/_config.yml
            Source: /mnt/news
       Destination: /mnt/news/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
  Liquid Exception: undefined method `tainted?' for "":String in /mnt/news/_layouts/post.html
                    ------------------------------------------------
      Jekyll 4.1.0   Please append `--trace` to the `build` command 
                     for any additional information or backtrace. 
                    ------------------------------------------------
/mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/variable.rb:124:in `taint_check': undefined method `tainted?' for "":String (NoMethodError)

      return unless obj.tainted?
                       ^^^^^^^^^
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/variable.rb:89:in `render'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:80:in `render'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:39:in `block (3 levels) in render!'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:59:in `measure_counts'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:38:in `block (2 levels) in render!'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:63:in `measure_bytes'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:37:in `block in render!'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:70:in `measure_time'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/liquid_renderer/file.rb:36:in `render!'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/renderer.rb:127:in `render_liquid'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/renderer.rb:190:in `render_layout'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/renderer.rb:159:in `place_in_layouts'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/renderer.rb:89:in `render_document'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/renderer.rb:63:in `run'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:532:in `render_regenerated'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:517:in `block (2 levels) in render_docs'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:516:in `each'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:516:in `block in render_docs'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:515:in `each_value'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:515:in `render_docs'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:207:in `render'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/site.rb:80:in `process'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/command.rb:28:in `process_site'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/commands/build.rb:65:in `build'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/commands/build.rb:36:in `process'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `each'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from /mnt/news/vendor/bundle/ruby/3.2.0/gems/jekyll-4.1.0/exe/jekyll:15:in `<top (required)>'
        from /mnt/news/vendor/bundle/ruby/3.2.0/bin/jekyll:25:in `load'
        from /mnt/news/vendor/bundle/ruby/3.2.0/bin/jekyll:25:in `<top (required)>'
        from /usr/local/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `load'
        from /usr/local/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/local/lib/ruby/3.2.0/bundler/cli/exec.rb:23:in `run'
        from /usr/local/lib/ruby/3.2.0/bundler/cli.rb:492:in `exec'
        from /usr/local/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/local/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/local/lib/ruby/3.2.0/bundler/cli.rb:34:in `dispatch'
        from /usr/local/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/local/lib/ruby/3.2.0/bundler/cli.rb:28:in `start'
        from /usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.10/libexec/bundle:45:in `block in <top (required)>'
        from /usr/local/lib/ruby/3.2.0/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.10/libexec/bundle:33:in `<top (required)>'
        from /usr/local/bin/bundle:25:in `load'
        from /usr/local/bin/bundle:25:in `<main>'

I couldn't run it on Leap 15.4 because of nokogiri ver.
so I did it on docker.

thanks.

BUG: Can't checkout on non-linux platform

warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'wp-content/uploads/2011/11/OwnCloud2.png'
  'wp-content/uploads/2011/11/owncloud2.png'

These files need to likely be renamed to prevent collision.

Typo in Entering Leap Bugs Gains New Clarity article

Hello.

In 2nd parragraph you can read:

A the distribution evolved from...

Should be?

As the distribution evolved from...

I wrote a comment:
972addc#r69742477

BTW: I always mail to @ddemaio when I found a typo or similar in the articles, but I maybe open an issue here it's better.
Maybe can be added a tag with typo or similar...

Regards.

Weekly "update in Tumbleweed" posts - reverse order?

Hi. I realise this is more of a content question than a technical issue with the site - please direct me elsewhere if more appropriate.

Regarding the weekly "update in Tumbleweed" posts, e.g. https://news.opensuse.org/2023/04/28/gear-grep-gtk-up-in-tw/

Within each post, the snapshots during the week are discussed in reverse chronological order, i.e. the most recent first, followed by the previous day, 2 days ago etc.

Is there a particular reason for this? This is probably subjective, but for me this reads rather oddly - I'd expect each post to go through the week's snapshots in forward chronological order.

Thanks for reading this! And thanks for the posts in the first place - despite their order, I find them informative and helpful :)

Build news-o-o in OBS

We would like build news-o-o in https://build.opensuse.org/project/users/openSUSE:infrastructure:software.opensuse.org
Any volunteer for packaging the sofware? This would then unblock automated deployments via salt.

We have a cron-based building in VM at this moment @hellcp can provide more information.

Ideally it would be build as software-o-o (osc service takes care of all rubygems and generates source tarball and changes file)
https://build.opensuse.org/package/show/openSUSE:infrastructure:software.opensuse.org/software_opensuse_org

Similar request is openSUSE/get-o-o#33

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.