# Quartz

Published articles for Quartz.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## DB-Scheduler: A Persistent, Cluster-Friendly Scheduler for Java

DevFeed: [DB-Scheduler: A Persistent, Cluster-Friendly Scheduler for Java](<https://devfeed.tech/articles/db-scheduler-a-persistent-cluster-friendly-scheduler-for-java-4492.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-db-scheduler>)

Author: Graham Cox

Published: 2026-08-22T23:11:36Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Quartz](<https://devfeed.tech/topics/quartz.md>)

Tags: [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [persistence-popular-quartz](<https://devfeed.tech/tags/persistence-popular-quartz.md>), [popular](<https://devfeed.tech/tags/popular.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [quartz](<https://devfeed.tech/tags/quartz.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how to use the db-scheduler library for persistent, cluster-aware task scheduling in Java. It covers one-time and recurring tasks, project dependencies, the required database table, PostgreSQL schema setup, and Scheduler configuration.

### Source excerpt

Learn how to use the db-scheduler library to store, manage and execute persistent scheduled tasks in Java. The post DB-Scheduler: A Persistent, Cluster-Friendly Scheduler for Java first appeared on Baeldung.

## Optimizing the Metal pipeline to maintain 120 FPS in GPUI

DevFeed: [Optimizing the Metal pipeline to maintain 120 FPS in GPUI](<https://devfeed.tech/articles/optimizing-the-metal-pipeline-to-maintain-120-fps-in-gpui-13397.md>)

Original publisher: [Read original article](<https://zed.dev/blog/120fps>)

Author: Nathan Sobo, Antonio Scandurra

Published: 2024-02-07T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Quartz](<https://devfeed.tech/topics/quartz.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [code](<https://devfeed.tech/tags/code.md>), [latency](<https://devfeed.tech/tags/latency.md>), [performance](<https://devfeed.tech/tags/performance.md>), [quartz](<https://devfeed.tech/tags/quartz.md>)

### AI overview

This article explains how Zed investigated and fixed frame drops and janky scrolling in GPUI on an M2 MacBook. The issue involved differences between direct and composited rendering modes, Quartz compositor behavior, and synchronization between Metal presentation and window drawing.

### Source excerpt

Read the "Optimizing the Metal pipeline to maintain 120 FPS in GPUI" blog post.

## Temporal v1.20: Simpler dev environments & Workflow scheduling

DevFeed: [Temporal v1.20: Simpler dev environments & Workflow scheduling](<https://devfeed.tech/articles/temporal-v1-20-simpler-dev-environments-workflow-scheduling-36050.md>)

Original publisher: [Read original article](<https://temporal.io/blog/temporal-v1-20-lighter-and-simpler-development-environments-and-improved>)

Author: Justin Pirie

Published: 2023-03-20T07:00:00Z

Content type: release

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [elasticsearch](<https://devfeed.tech/topics/elasticsearch.md>), [datadog](<https://devfeed.tech/topics/datadog.md>), [cURL](<https://devfeed.tech/topics/curl.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Quartz](<https://devfeed.tech/topics/quartz.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [cli](<https://devfeed.tech/tags/cli.md>), [containers](<https://devfeed.tech/tags/containers.md>), [curl](<https://devfeed.tech/tags/curl.md>), [datadog](<https://devfeed.tech/tags/datadog.md>), [dev](<https://devfeed.tech/tags/dev.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [elasticsearch](<https://devfeed.tech/tags/elasticsearch.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [product-news](<https://devfeed.tech/tags/product-news.md>), [quartz](<https://devfeed.tech/tags/quartz.md>), [scheduling](<https://devfeed.tech/tags/scheduling.md>), [v1](<https://devfeed.tech/tags/v1.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Temporal v1.20 simplifies local development environments by packaging Temporalite into the core product and adding a Temporal CLI with installation options including curl, Homebrew, and binary downloads. The release also adds Advanced Visibility to the CLI, deprecates direct Advanced Visibility on Cassandra without Elasticsearch, and makes Scheduled Workflows generally available.

### Source excerpt

Explore Temporal v1.20's improvements in dev environments and Workflow scheduling, making it easier to adopt distributed systems best practices.

## How to schedule jobs with Quartz on Ktor

DevFeed: [How to schedule jobs with Quartz on Ktor](<https://devfeed.tech/articles/how-to-schedule-jobs-with-quartz-on-ktor-25567.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/ktor-jobs-quartz/>)

Author: Marco Gomiero

Published: 2022-04-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Quartz](<https://devfeed.tech/topics/quartz.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Database](<https://devfeed.tech/topics/database.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [database](<https://devfeed.tech/tags/database.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [quartz](<https://devfeed.tech/tags/quartz.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [scheduling](<https://devfeed.tech/tags/scheduling.md>)

### AI overview

This tutorial explains how to schedule recurring jobs in a Ktor backend project using Quartz. It covers Quartz's persistence of job state, database table setup, logging configuration, and scheduler creation, with MySQL used in the example.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5: Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Sometimes, on a backend project, there is the need to run one or more tasks periodically, like for system administration, maintenance, backup, syncing content in the background, etc. These types of tasks can be scheduled "manually" with a cron job or with a scheduling library like Quartz, that makes easy for example the persistence of the task's state even after a reboot of the server.

## NSTableView vim keys

DevFeed: [NSTableView vim keys](<https://devfeed.tech/articles/nstableview-vim-keys-25382.md>)

Original publisher: [Read original article](<https://smileykeith.com/2013/01/08/nstableview-vim-keys/>)

Author: Keith Smiley

Published: 2013-01-09T00:19:00Z

Content type: tutorial

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [Vim](<https://devfeed.tech/topics/vim.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>), [data](<https://devfeed.tech/topics/data.md>), [Quartz](<https://devfeed.tech/topics/quartz.md>), [Stack Overflow](<https://devfeed.tech/topics/stackoverflow.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [app](<https://devfeed.tech/tags/app.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [quartz](<https://devfeed.tech/tags/quartz.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

This article explains how to add Vim-style j and k navigation to an NSTableView in an OS X application. It describes attempts involving manual selection handling and Quartz Event Services, then presents an approach that works in a sandboxed application while preserving expected selection behavior.

### Source excerpt

I'm currently working on a OS X application that uses a few different NSTableViews to display user data. I was testing them out a bit to make sure multiple deletions worked correctly from my database and I found myself pressing 'j' and 'k' to try and move down and up. I decided it would be pretty cool to implement those two vim shortcuts into my table view just in case anyone else thinks like me. This functionality already exists in The Hit List an awesome GTD app that has a lot of baggage with me, and I'm sure it exists in other applications as well. In my NSTableView subclass' keyDown: method I tried a few things. Attempt 1: First I tried to re implement the functionality myself. In retrospect this doesn't make any sense but at first it was pretty simple. It looked something like this. NSUInteger flags = [theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask; NSNumber *shiftPressed = (flags & NSShiftKeyMask); if ([theEvent keyCode] == 38) { // j NSUInteger index = [[self selectedRowIndexes] lastIndex] + 1; if ([shiftPressed boolValue]) { [self selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:YES]; } else { [self selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:NO]; } } else if ([theEvent keyCode] == 40) { // k NSUInteger index = [[self selectedRowIndexes] lastIndex] - 1; if ([shiftPressed boolValue]) { [self selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:YES]; } else { [self selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:NO]; } } The issue with this is the way NSTableView typically expands it's selection. I think of it as a pivot point where you start. Then you go up and down relative to that point. So if you start at index 2 and go down till index 4, you should have 2 rows selected. Then when you go back up you should deselect the rows and indexes 3 and 4 and select the rows and index 1 and 0. At this point I realized it was more difficult than I r