Giter Site home page Giter Site logo

mirrors's Introduction

mirrors's People

Contributors

altushost avatar andrewlukoshko avatar ani-gil avatar bharat-b avatar cdragut avatar codyro avatar dokodemo5 avatar emrekeles avatar ezamriy avatar gvalfer avatar intercloudomc avatar iwfjacob avatar jonathanspw avatar kwabang avatar maciejkupiec avatar malhuda avatar marcomuskus avatar mkmonir123 avatar niyyie avatar pcburakq avatar phirephly avatar serverionnl avatar soksanichenko avatar starburstservices avatar sysdev-isu avatar tomas-si avatar trippyboy avatar velocihost avatar webtel avatar xl-maggus 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

Watchers

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

mirrors's Issues

Explicitly ignore specific mirrors

[Maybe I could use better search terms, but I was unable to find an answer to this, which became a problem with the automatic geo-based mirror choice.]

Unfortunately my closest fast mirror does not support HTTPS and so I'd prefer not to use it. As a result updates frequently come up with things like this: [MIRROR] kernel-4.18.0-305.12.1.el8_4.x86_64.rpm: Curl error (7): Couldn't connect to server for https://almalinux-mirror.datakeepers.co.za/8/BaseOS/x86_64/os/Packages/kernel-4.18.0-305.12.1.el8_4.x86_64.rpm [Failed to connect to almalinux-mirror.datakeepers.co.za port 443: Connection refused]

How can I only resolve HTTPS-capable sites or is there a way to set up blacklists?

Both would have their uses but in this case the former would be best.

Continent not shoiw in https://mirrors.almalinux.org/

Dears

The location is fine in maxmind GeoIP it shows the continent Asia but not reflected into https://mirrors.almalinux.org/

GeoIP2 City Results

IP Address Country Code Location Network Postal Code Approximate Coordinates* Accuracy Radius (km) ISP Organization Domain Metro Code
212.138.72.17 SA Riyadh,Riyadh Region,Saudi Arabia,Asia 212.138.64.0/20   24.6569,46.7179 5 King Abdul Aziz City for Science and Technology King Abdul Aziz City for Science and Technology

Regards

Implement timeout during mirrors check

There should be a timeout when checking mirrors for availability that can be changed in config file.
I suppose default timeout should be 15 seconds for every connection.

Only return private mirrors

When using private mirrors, I really only want the mirrorlist query to return my private mirrors.

It could very well be that my machines can only reach my mirrors.

Even if my machines can reach public mirrors, if my mirrors are broken, I want dnf to break and tell me that the mirror is broken rather than doing an end-run around it and using public mirrors.

Perhaps this functionality should be optional/selectable.

removing old versions from the mirrors

Other distros uses to remove the old version when a new one comes off. For example it 8.4/ is liberated, we suggest to empty 8.3/ 8.3-rc/ 8.3-beta/ and so on.
Our mirrors are growing too fast by keeping old versions present in the mirrors. I suggest to create, for example, a vault.almalinux.org in order to store old versions and not hit the mirrors HD usage too hard.

mirror.mijn.host IP change

Because of a server migration, our IPs will change for mirror.mijn.host.

178.162.180.129
2001:1af8:8100:a005:5::2

Currently we cannot rsync from this IPs. Can you add these IPs please?

mirror.hnd.cl fixed

Hi,

Our mirror has been fixed after a disk capacity problem, please can you re-add it? The mirror file its already on mirrors.d #614

Sorry for the problem, our internal monitoring system has been reconfigured to avoid this problems in the future.

Thanks
Regards

mirrors.almalinux.org broken

Hi,

it looks like your mirror website is broken: mirrors.almalinux.org

$dig mirrors.almalinux.org

; <<>> DiG 9.10.6 <<>> mirrors.almalinux.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21080
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mirrors.almalinux.org.		IN	A

;; AUTHORITY SECTION:
almalinux.org.		3600	IN	SOA	arvind.ns.cloudflare.com. dns.cloudflare.com. 2037974018 10000 2400 604800 3600

;; Query time: 19 msec
;; SERVER: 192.168.100.12#53(192.168.100.12)
;; WHEN: Wed Aug 04 12:50:03 CEST 2021
;; MSG SIZE  rcvd: 114

Looks like you removed the A-Record ... Your documentation still points to the URL: https://wiki.almalinux.org/Mirrors.html

Regards,
Kilian

Regarding the ownership of Taiwan in your mirror list

I found that you declared taiwan is a country in your mirror list site in this website: https://mirrors.almalinux.org/
我发现您在此网站 https://mirrors.almalinux.org/ 的镜像列表网站中宣称**是一个国家/地区。

However, Taiwan is not a country, but a part of the PRC (People's Republic of China).
然而,**并不是一个国家/地区,而是中华人民共和国的一部分。

Please correct the attribution of Taiwan in the mirror list. You can just write "China(Taiwan)". Thanks!
请您将镜像列表中**的归属进行修正。您可以直接写“**(**)”。谢谢!

Mirror expired

Dear Admin,

I have noticed that our mirror at https://mirror.amscloud.co.id/almalinux is listed as expired. I'm unable to sync with the follow ing error message:

@error: max connections (101) reached -- try again later
rsync error: error starting client-server protocol (code 5) at main.c(1675) [Receiver=3.1.3]

Step to reproduce this issue:

  1. Login ssh to my mirror server
  2. Run "rsync rsync://rsync.repo.almalinux.org/almalinux/"

Thank you

Pulp synchronisation issues

Hi There,
sorry if I'm in the wrong place with this ticket. If I am please direct me to the right direction.

I have the following issue:
I have Pulp v3 (pulpcore https://github.com/pulp/pulpcore + pulp-rpm https://github.com/pulp/pulp_rpm). I use it to replicate various rpm repos, I also replicate repos from mirror.centos.org with no issues.
Last week I added AlmaLinux repos:

and I cannot synchronise AppStream and Base (here's how I do it: https://pulp-rpm.readthedocs.io/en/latest/workflows/create_sync_publish.html#sync-repository-foo-using-remote-bar ).

For AppStream I get this error message:

"No declared artifact with relative path \"images/boot.iso\" for content \"<DistributionTree: pk=ec636140-6053-4bdc-93f2-9f3dc9413d02>\""

For Base this:

"Incoming and existing advisories have the same id but different timestamps and non-intersecting package lists. It is likely that they are from two different incompatible remote repositories. E.g. RHELX-repo and RH
ELY-debuginfo repo. Ensure that you are adding content for the compatible repositories. Advisory id: ALBA-2021:0566"

From previous experience I can tell that something's wrong with the repos.

Mirror service over IPv6 returns full list of mirrors

When I request the mirror list over IPv4, the mirror service works as expected and returns a total of 9 mirrors.
Over IPv6 the service always returns the full list.

Both my IPv4 and IPv6 address are resolved to the correct country when tested with the Maxmind demo.

The service should be able to detect the correct country based on my IPv6 address utilizing the Maxmind database, so something else is causing the mirror service to fall back to returning the complete list.

flock: -c requires exactly one command argument

Using the instructions at https://wiki.almalinux.org/Mirrors.html to setup a cronjob:

0 */3 * * * /usr/bin/flock -n /var/run/almalinux_rsync.lock -c /usr/bin/rsync -avSH -f 'R .~tmp~' --delete-delay --delay-updates rsync://rsync.repo.almalinux.org/almalinux/ /almalinux/dir/on/your/server/

results in the following error: flock: -c requires exactly one command argument

To fix this, you can enclose the rsync command in quotes:

0 */3 * * * /usr/bin/flock -n /var/run/almalinux_rsync.lock -c "/usr/bin/rsync -avSH -f 'R .~tmp~' --delete-delay --delay-updates rsync://rsync.repo.almalinux.org/almalinux/ /almalinux/dir/on/your/server/"

We run our mirror on AlmaLinux of course :)

# cat /etc/redhat-release 
AlmaLinux release 8.3 (Purple Manul)
# uname -r
4.18.0-240.15.1.el8_3.x86_64
# rpm -qa | grep util-linux
util-linux-2.32.1-24.el8.x86_64
# flock -V
flock from util-linux 2.32.1

No source of entropy in _get_nearest_mirrors_by_network_data()

https://github.com/AlmaLinux/mirrors/blob/mirrors_service/src/backend/api/handlers.py#L73

When a client matches the network data service cone for any mirror, the offered mirror list is built using the following logic:

  1. Append mirror matching on ASN or subnet
  2. Create sorted list of mirrors by distance, filter out mirrors matching on first criteria, and extend list to desired minimum (LENGTH_CLOUD_MIRRORS_LIST)

The issue is that this process is completely deterministic and there is no load balancing for clients that match on any mirror's network service cone. There is no shuffling happening in either the first list of suitable_mirrors or the geographically based extension of the list to meet the minimum number of mirrors to offer.

Failure modes:

  1. A particularly large install base of hosts relies on a local mirror. When this mirror goes offline and before the health checkers have disqualified this mirror, ALL clients on the local subnet are steered to the next closest public mirror.
  2. An EXTREMELY large install base of hosts with two local mirrors are not able to load balance between the two mirrors. The list of mirrors is always returned in the same order (probably based on the order they happened to be added to the mirror database)

Recommendation:

  1. Shuffle list of mirrors which match on network data before the geographically based extension of the list.
  2. Generate a longer geographic extension of the list, shuffle, and then use to extend the original list. i.e. find the 2 * LENGTH_CLOUD_MIRRORS_LIST closest mirrors, shuffle this list, then suitable_mirrors.extend(nearby_mirrors_shuffled)[:LENGTH_CLOUD_MIRRORS_LIST - len(suitable_mirrors)]

Add route to fetch closest ISO URL

Something similar to /mirrorlist but that will only return the base URL of the closest mirror. Perhaps we could simply add a route for /mirrorlist/<version> to serve this list of base URLs.

This would allow a quality of life improvement in https://github.com/AlmaLinux/cloud-images so that it can fetch ISOs from a better mirror than the currently hard-coded repo.almalinux.org.

This can probably be used in other automated processes and projects as well.

Mirrors Service not updating mirrors from git (permission issue)

At some point during the last image building the master branch of git with the mirror configs got updated/pulled as root so now the mirror-service user under which the scripts run cannot perform pulls from git.

Nov 25 21:25:47 ip-172-30-145-101.ec2.internal systemd[1]: Starting Update a local mirrors list Service...
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: /etc/mirrors_service/prod/mirrors/updates /
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Fetching origin
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: error: insufficient permission for adding an object to repository database .git/objects
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: fatal: failed to write object
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: fatal: unpack-objects failed
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: error: Could not fetch origin
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: HEAD is now at a8e8b95 Update config.yml
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: warning: Pulling without specifying how to reconcile divergent branches is
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: discouraged. You can squelch this message by running one of the following
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: commands sometime before your next pull:
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:   git config pull.rebase false  # merge (the default strategy)
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:   git config pull.rebase true   # rebase
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:   git config pull.ff only       # fast-forward only
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: You can replace "git config" with "git config --global" to set a default
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: preference for all repositories. You can also pass --rebase, --no-rebase,
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: or --ff-only on the command line to override the configured default per
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: invocation.
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: error: insufficient permission for adding an object to repository database .git/objects
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: fatal: failed to write object
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: fatal: unpack-objects failed
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: /
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:                                  Dload  Upload   Total   Spent    Left  Speed
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: [158B blob data]
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: HTTP/1.1 200 OK
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Server: nginx/1.14.1
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Date: Thu, 25 Nov 2021 21:25:47 GMT
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Content-Type: text/html; charset=utf-8
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Content-Length: 581146
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: Connection: keep-alive
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: [1B blob data]
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Nov 25 21:25:47 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]:                                  Dload  Upload   Total   Spent    Left  Speed
Nov 25 21:27:42 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: [9.0K blob data]
Nov 25 21:27:42 ip-172-30-145-101.ec2.internal local_mirrors_list.sh[154999]: {"result":"Done","status":"success","timestamp":1637875662}
Nov 25 21:27:42 ip-172-30-145-101.ec2.internal systemd[1]: local_mirrors_list.service: Succeeded.
Nov 25 21:27:42 ip-172-30-145-101.ec2.internal systemd[1]: Started Update a local mirrors list Service.
[root@ip-172-30-58-116 updates]# pwd
/etc/mirrors_service/prod/mirrors/updates
[root@ip-172-30-58-116 updates]# ls -lah
total 62M
drwxr-xr-x. 7 mirror-service mirror-service  229 Nov 17 18:04 .
drwxr-xr-x. 3 root           root             61 Nov 17 15:38 ..
drwxr-xr-x. 8 mirror-service mirror-service  198 Nov 26 03:10 .git
drwxr-xr-x. 3 mirror-service mirror-service   23 Nov 17 14:53 .github
-rw-r--r--. 1 mirror-service mirror-service   43 Nov 17 14:53 .gitignore
-rw-r--r--. 1 mirror-service mirror-service  35K Nov 17 14:53 LICENSE
drwxr-xr-x. 2 mirror-service mirror-service   39 Nov 17 14:53 ci
-rw-r--r--. 1 root           root           2.1K Nov 17 18:04 config.yml
-rwxr-xr-x. 1 mirror-service mirror-service  294 Nov 17 14:53 deploy.sh
drwxr-xr-x. 5 mirror-service mirror-service   83 Nov 17 14:53 docs
-rw-r--r--. 1 mirror-service mirror-service  62M Nov 17 14:53 geoip_db.mmdb
drwxr-xr-x. 2 mirror-service mirror-service  12K Nov 17 14:53 mirrors.d
-rwxr-xr-x. 1 mirror-service mirror-service  19K Nov 17 14:53 mirrors_update.py
-rw-r--r--. 1 mirror-service mirror-service  310 Nov 17 14:53 package.json
-rw-r--r--. 1 mirror-service mirror-service   49 Nov 17 14:53 requiremnts.txt

The result is that new mirrors and/or changes aren't able to be deployed.

I've fixed this on all current mirrors service servers but we need to fix this in the image next time we build images.

Mirror not listed?

Our mirror is synced but not listed on mirrors.almalinux.org, can anyone check ?

io_uring support

Hi Alma Team,

for the 9.0 Version - is there may any Chance you provide also an io_uring supported Kernel. the Default one seems not beeing compiled with it.

thx

Mirrors showing expired

I see that even though timestamps are updated, the mirrors are showing up as expired since more than 72 hours.

Option to fill in variables in mirrorlist

Is there an option to fill in the variables that the mirrorlist returns? We have Spacewalk running and the mirrorlist returns a list of URL's that have the variable $basearch in them. Spacewalk can't resolve or change that variable.

It would be nice to have the option to generate that URL without those variables so it returns static URL's.

Now

The URL https://mirrors.almalinux.org/mirrorlist/8/baseos returns the following:

http://mirror.nl.altushost.com/almalinux/8/BaseOS/$basearch/os/
http://mirror.nforce.com/pub/linux/almalinux/8/BaseOS/$basearch/os/
http://mirror.previder.nl/almalinux/8/BaseOS/$basearch/os/
http://mirrors.evoluso.com/almalinux/8/BaseOS/$basearch/os/
http://mirror.wd6.net/almalinux/8/BaseOS/$basearch/os/
http://almalinux.mirror.wearetriple.com/8/BaseOS/$basearch/os/
http://mirror.mijn.host/almalinux/8/BaseOS/$basearch/os/
http://mirrors.mvps.net/almalinux/8/BaseOS/$basearch/os/
http://almalinux.mirror.liteserver.nl/8/BaseOS/$basearch/os/
http://mirror.almalinux.ams01.readydedis.com/almalinux/8/BaseOS/$basearch/os/

Suggestion

Adding a parameter to the URL will fill in those variables, simething like <url>?basearch=x86_64
The following URL would return the below URL's: https://mirrors.almalinux.org/mirrorlist/8/baseos?basearch=x86_64

http://mirror.nl.altushost.com/almalinux/8/BaseOS/x86_64/os/
http://mirror.nforce.com/pub/linux/almalinux/8/BaseOS/x86_64/os/
http://mirror.previder.nl/almalinux/8/BaseOS/x86_64/os/
http://mirrors.evoluso.com/almalinux/8/BaseOS/x86_64/os/
http://mirror.wd6.net/almalinux/8/BaseOS/x86_64/os/
http://almalinux.mirror.wearetriple.com/8/BaseOS/x86_64/os/
http://mirror.mijn.host/almalinux/8/BaseOS/x86_64/os/
http://mirrors.mvps.net/almalinux/8/BaseOS/x86_64/os/
http://almalinux.mirror.liteserver.nl/8/BaseOS/x86_64/os/
http://mirror.almalinux.ams01.readydedis.com/almalinux/8/BaseOS/x86_64/os/

Add the ability to filter mirrorlist by protocol type (ie only get HTTPS mirrors).

I've been all over the code, and I can't find a route inside mirror listing code (on the mirrors_service branch) that will let me filter the results by protocol.

I would like to update the DNF repo config mirrorlist URL so it only retrieves and uses HTTPS capable mirrors.

With the Fedora mirror service, it's possible to filter the results by appending &protocol=https to the mirrorlist URL. For example, to get a list of HTTPS mirrors for the EPEL repo, you could use:

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir&protocol=https

Or to get a list HTTPS mirrors for the Fedora 36 repo:

metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&protocol=https

validate repomd.xml files

We should validate the content of repomd.xml files. These files are integral to a working mirror system even if other packages are out of date, missing, etc. the proper repomd.xml file will at least let dnf fall back to a working mirror.

Last night we had an instance of a mirror having an incorrect repomd.xml file resulting in a user not being able to update. We could've easily prevented this situation if we validated all repomd.xml files on a given mirror before considering it as healthy/online.

Marking this as a bug since in the current state non-working mirrors can be marked as OK rendering dnf transactions impossible without user intervention.

mirrormanager

Are there any plans to move to or otherwise utilize mirrormanager?

It does a really good job at solving the problem of making machines use local (private even, if desired) mirrors using the distro supplied "out of the box" .repo files -- no need to edit to set baseurls etc.

_get_nearest_mirrors_by_network_data() fails to exclude near-by private mirrors for extra options.

https://github.com/AlmaLinux/mirrors/blob/mirrors_service/src/backend/api/handlers.py#L105-L117

When a client matches against the network data service cone of a mirror, the list offered to them is appended up to LENGTH_CLOUD_MIRROR_LIST (5) with other nearby mirrors.

This list of additional mirrors can include private mirrors if the private mirror accidentally included geo data in their configuration.

This suitable_mirrors.extend also fails to check the health of these additional mirrors, meaning that the additional mirrors are not verified to be ok and may be outdated or flapping.

Failure mode is that if a mirror with a specified network data match for clients goes down, when the clients slide down the list to subsequent mirrors, this list of additional mirrors is not filtered for private mirrors or only healthy mirrors.

Unable to download older versions of Almalinux

I've noticed that older versions of Almalinux are no longer available from all mirrors. This causes issues with tools such as Netboot and prevents installations from using these versions.

These versions should at least be available for 12-24 months.

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.