Giter VIP home page Giter VIP logo

cron-resource's Introduction

Crontab Resource

Implements a resource that reports new versions when the current time matches the crontab expression


Update your pipeline

Update your pipeline to include this new declaration of resource types. See the example pipeline yml snippet below or the Concourse docs for more details here.

---
resource_types:
- name: cron-resource
  type: docker-image
  source:
    repository: cftoolsmiths/cron-resource

resources:
  - name: 10-min-trigger
    type: cron-resource
    source:
      expression: "*/10 * * * *"
      location: "America/New_York"
      fire_immediately: true

Source Configuration

  • expression: Required. The crontab expression:

    field allowed values
    minute 0-59
    hour 0-23
    day of month 1-31
    month 1-12 (or names, see below)
    day of week 0-7 (0 or 7 is Sun, or use names)

    e.g.

    0 23 * * 1-5 # Run at 11:00pm from Monday to Friday

  • location: Optional. Defaults to UTC. Accepts any timezone that can be parsed by https://godoc.org/time#LoadLocation

    e.g.

    America/New_York

    America/Vancouver

  • fire_immediately: Optional. Defaults to false. Immediately triggers the resource the first time it is checked.

Behavior

check: Report the current time.

Returns time.Now() as the version only if a minute since we last fired matches the crontab expression. The first time the script runs it will fire if a minute in the last hour matches the crontab expression.

Parameters

None.

in: Report the given time

If triggered by check, returns the original version as the resulting version.

Parameters

  1. Output directory. The directory where the in script will store the requested version

out: Not supported.

Developer Notes

You can test the behavior by simulating Concourse's invocations. For example:

$ echo '{"source":{"expression":"* * * * *","location":"America/New_York"}}' \
  | go run ./check
[{"time":"2016-08-19T10:15:27.183011117-04:00"}]

cron-resource's People

Contributors

bsnchan avatar dpb587-pivotal avatar jvshahid avatar markstokan avatar osis avatar petahhh avatar peterellisjones avatar

Stargazers

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

Watchers

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

cron-resource's Issues

Updated cron syntax can potentially cause an immediate run

When checking to see if now is after the expected next run, the triggered jobs can potentially run immediately on update instead of the next cron time.

Observed behavior:

Current Cron syntax for Tuesday at 1PM:

00 13 * * 2

If now is Thursday the 28th and we update cron syntax to Wednesday at 1PM:

00 13 * * 3

We will see the resource trigger immediately because now is after the next time following the previous cron triggered date of Tuesday at 1PM.

Expected behavior:

We would expect updating to a Wednesday trigger time would not run until the following Wednesday if it's already past the set cron time.

Bug area in the code:

https://github.com/pivotal-cf-experimental/cron-resource/blob/master/check/check.go#L40-L45

Require image for ARM64 architecture

Hi Team,

I am trying to use “cron-resource” over ARM64v8 but it seems it does not have an arm64 supported tag in docker hub.

I have successfully built the image using the command “docker build -t <image_name> .” and used it successfully on arm64 platform.

Do you have any plans for releasing an ARM64 image?

May I know how the amd64 image is getting published on Dockerhub?

It will be very helpful if the image is released with ARM64 support. To start with can I get suggestions on which CI you are using to push the image to Dockerhub.

Can't manually trigger a pipeline outside time range

My check use to perform Monday to Friday morning at a certain time and suddenly it stopped checking.
For some reason, the resource check didn't perform on the time it should be and i cannot even manually check the resource outside the time range.
Even the second day it didn't check the resource.
I did tried to force check using the fly check-resource which returned 500 error message.

Daylight savings failed trigger

Expected the crontab 30 10 * * 2 to trigger 3/15/2022, but actually triggered at 11:30am instead of 10:30am due to daylight savings. Locally running the check produces the expected result. Is there some caching happening on the resource itself that would maintain an incorrect UTC offset?

sample input

./check
{"source":{"expression":"30 10 * * 2","location":"America/Los_Angeles"}}
[]

runtime: goroutine stack exceeds 1000000000-byte limit

run check step: run check step: check: resource script '/opt/resource/check []' failed: exit status 2

stderr:
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow

runtime stack:
runtime.throw(0x53b675, 0xe)
	/usr/local/go/src/runtime/panic.go:774 +0x72
runtime.newstack()
	/usr/local/go/src/runtime/stack.go:1046 +0x6e9
runtime.morestack()
	/usr/local/go/src/runtime/asm_amd64.s:449 +0x8f

goroutine 1 [running]:
time.(*Location).lookup(0xc00006a3c0, 0x5f9437b8, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/local/go/src/time/zoneinfo.go:111 +0x25d fp=0xc0200fa378 sp=0xc0200fa370 pc=0x49bd6d
time.Time.Zone(0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0x0, 0x0)
	/usr/local/go/src/time/time.go:1144 +0x5d fp=0xc0200fa3c0 sp=0xc0200fa378 pc=0x49ae2d
github.com/mbrevoort/cronexpr.utcOffset(...)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:417
github.com/mbrevoort/cronexpr.noTZ(0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0x0, 0x0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:422 +0xa6 fp=0xc0200fa430 sp=0xc0200fa3c0 pc=0x4ef446
github.com/mbrevoort/cronexpr.noTZDiff(0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:426 +0x43 fp=0xc0200fa490 sp=0xc0200fa430 pc=0x4ef503
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fa668, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:245 +0x92 fp=0xc0200fa530 sp=0xc0200fa490 pc=0x4edda2
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fa668, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fa5a8 sp=0xc0200fa530 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fa668, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fa628 sp=0xc0200fa5a8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fa938, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fa760 sp=0xc0200fa628 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fa938, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fa800 sp=0xc0200fa760 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fa938, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fa878 sp=0xc0200fa800 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fa938, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fa8f8 sp=0xc0200fa878 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fac08, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200faa30 sp=0xc0200fa8f8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fac08, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200faad0 sp=0xc0200faa30 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fac08, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fab48 sp=0xc0200faad0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fac08, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fabc8 sp=0xc0200fab48 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200faed8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fad00 sp=0xc0200fabc8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200faed8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fada0 sp=0xc0200fad00 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200faed8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fae18 sp=0xc0200fada0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200faed8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fae98 sp=0xc0200fae18 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fb1a8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fafd0 sp=0xc0200fae98 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fb1a8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fb070 sp=0xc0200fafd0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fb1a8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fb0e8 sp=0xc0200fb070 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fb1a8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fb168 sp=0xc0200fb0e8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fb478, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fb2a0 sp=0xc0200fb168 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fb478, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fb340 sp=0xc0200fb2a0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fb478, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fb3b8 sp=0xc0200fb340 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fb478, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fb438 sp=0xc0200fb3b8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fb748, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fb570 sp=0xc0200fb438 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fb748, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fb610 sp=0xc0200fb570 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fb748, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fb688 sp=0xc0200fb610 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fb748, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fb708 sp=0xc0200fb688 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fba18, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fb840 sp=0xc0200fb708 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fba18, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fb8e0 sp=0xc0200fb840 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fba18, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fb958 sp=0xc0200fb8e0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fba18, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fb9d8 sp=0xc0200fb958 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fbce8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fbb10 sp=0xc0200fb9d8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fbce8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fbbb0 sp=0xc0200fbb10 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fbce8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fbc28 sp=0xc0200fbbb0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fbce8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fbca8 sp=0xc0200fbc28 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fbfb8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fbde0 sp=0xc0200fbca8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fbfb8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fbe80 sp=0xc0200fbde0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fbfb8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fbef8 sp=0xc0200fbe80 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fbfb8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fbf78 sp=0xc0200fbef8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fc288, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fc0b0 sp=0xc0200fbf78 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fc288, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fc150 sp=0xc0200fc0b0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fc288, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fc1c8 sp=0xc0200fc150 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fc288, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fc248 sp=0xc0200fc1c8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fc558, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fc380 sp=0xc0200fc248 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fc558, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fc420 sp=0xc0200fc380 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fc558, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fc498 sp=0xc0200fc420 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fc558, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fc518 sp=0xc0200fc498 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fc828, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fc650 sp=0xc0200fc518 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fc828, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fc6f0 sp=0xc0200fc650 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fc828, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fc768 sp=0xc0200fc6f0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fc828, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fc7e8 sp=0xc0200fc768 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fcaf8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fc920 sp=0xc0200fc7e8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fcaf8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fc9c0 sp=0xc0200fc920 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fcaf8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fca38 sp=0xc0200fc9c0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fcaf8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fcab8 sp=0xc0200fca38 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fcdc8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fcbf0 sp=0xc0200fcab8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fcdc8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fcc90 sp=0xc0200fcbf0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fcdc8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fcd08 sp=0xc0200fcc90 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fcdc8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fcd88 sp=0xc0200fcd08 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fd098, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fcec0 sp=0xc0200fcd88 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fd098, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fcf60 sp=0xc0200fcec0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fd098, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fcfd8 sp=0xc0200fcf60 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fd098, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fd058 sp=0xc0200fcfd8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fd368, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fd190 sp=0xc0200fd058 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fd368, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fd230 sp=0xc0200fd190 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fd368, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fd2a8 sp=0xc0200fd230 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fd368, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fd328 sp=0xc0200fd2a8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fd638, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fd460 sp=0xc0200fd328 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fd638, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fd500 sp=0xc0200fd460 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fd638, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fd578 sp=0xc0200fd500 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fd638, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fd5f8 sp=0xc0200fd578 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fd908, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fd730 sp=0xc0200fd5f8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fd908, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fd7d0 sp=0xc0200fd730 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fd908, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fd848 sp=0xc0200fd7d0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fd908, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fd8c8 sp=0xc0200fd848 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fdbd8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fda00 sp=0xc0200fd8c8 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fdbd8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fdaa0 sp=0xc0200fda00 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fdbd8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fdb18 sp=0xc0200fdaa0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fdbd8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fdb98 sp=0xc0200fdb18 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fdea8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fdcd0 sp=0xc0200fdb98 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fdea8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fdd70 sp=0xc0200fdcd0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fdea8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fdde8 sp=0xc0200fdd70 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fdea8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fde68 sp=0xc0200fdde8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fe178, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fdfa0 sp=0xc0200fde68 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fe178, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fe040 sp=0xc0200fdfa0 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fe178, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fe0b8 sp=0xc0200fe040 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fe178, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fe138 sp=0xc0200fe0b8 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fe448, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fe270 sp=0xc0200fe138 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fe448, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fe310 sp=0xc0200fe270 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fe448, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fe388 sp=0xc0200fe310 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fe448, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fe408 sp=0xc0200fe388 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fe718, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fe540 sp=0xc0200fe408 pc=0x4ed816
github.com/mbrevoort/cronexpr.(*Expression).nextTime(0xc0200fe718, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x0, 0xed728b140, 0x0, 0x61f9e0, 0x0, 0xed728b140)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:279 +0x2b3 fp=0xc0200fe5e0 sp=0xc0200fe540 pc=0x4edfc3
github.com/mbrevoort/cronexpr.(*Expression).nextDayOfMonth(0xc0200fe718, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x48b71a, 0x1)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:126 +0x203 fp=0xc0200fe658 sp=0xc0200fe5e0 pc=0x4ec7d3
github.com/mbrevoort/cronexpr.(*Expression).nextHour(0xc0200fe718, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0x1, 0x1bf4b997, 0xed726c50f)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:136 +0x2be fp=0xc0200fe6d8 sp=0xc0200fe658 pc=0x4ecb4e
github.com/mbrevoort/cronexpr.(*Expression).roundTime(0xc0200fe9e8, 0x1bf4b997, 0xed7262eb8, 0xc00006a3c0, 0xed7262eb8, 0xc00006a3c0, 0xc00006a3c0)
	/go/pkg/mod/github.com/mbrevoort/[email protected]/cronexpr_next.go:208 +0x516 fp=0xc0200fe810 sp=0xc0200fe6d8 pc=0x4ed816

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.