- What tech stack do you use? Are you rolling out new technologies or sunsetting older ones? Do you have any legacy system that you need to maintain?
- What is your maturity stage? Finding a direction, feature work, maintenance...
- What are the next big engineering challenges you will face?
- How are requirements delivered to the engineering teams? How are technical decisions made and communicated?
- What level of involvement do engineers have in relation to architecture and system design? How much freedom for decision making do individual developers have? What happens if an engineer identifies areas of improvement?
- What is the junior/senior balance of the team?
The TrueNAS installer doesn't have a way to use anything less than the full device. This is usually a waste of resources when installing to a modern NVMe which is usually several hundred of GB. TrueNAS SCALE will use only a few GB for its system files so installing to a 16GB partition would be helpful.
The easiest way to solve this is to modify the installer script before starting the installation process.
javascript: Promise.all([import('https://unpkg.com/[email protected]?module'), import('https://unpkg.com/@tehshrike/[email protected]'), ]).then(async ([{ | |
default: Turndown | |
}, { | |
default: Readability | |
}]) => { | |
/* Optional vault name */ | |
const vault = ""; | |
/* Optional folder name such as "Clippings/" */ |
To achieve multitenant behavior for quartz scheduler, we need to setup:
- set tenantId for every job we created.. we use quartz
JobDataMap
(handy key/value store) in Job class JobListener
- to inject tenantId from JobDataMap into current thread-bounded tenant context
This will work with shared quartz database.. if we want to have separated quartz databases/schemas for every tenant, we can instantiate multiple SchedulerFactoryBean with its custom dataSource
class ViewController: UIViewController { | |
@IBAction func onSearch(_ sender: Any) { | |
let fakeWindow = UIWindow(windowScene: view.window!.windowScene!) | |
let fakeTextField = UITextField() | |
fakeTextField.autocorrectionType = .no | |
fakeWindow.addSubview(fakeTextField) | |
fakeWindow.makeKeyAndVisible() | |
fakeTextField.becomeFirstResponder() |
import kotlinx.serialization.* | |
import kotlinx.serialization.descriptors.SerialDescriptor | |
import kotlinx.serialization.encoding.CompositeDecoder | |
import kotlinx.serialization.encoding.Decoder | |
import kotlinx.serialization.encoding.Encoder | |
import kotlinx.serialization.json.* | |
import kotlin.reflect.KType | |
import kotlin.reflect.full.isSubtypeOf | |
import kotlin.reflect.full.starProjectedType |
$NAME is a language-agnostic tool for managing your Postgres schema, designed to make downtime-free schema changes as easy as possible to develop and run.
$NAME improves database migration ergonomics in five major ways:
-
It stores previous versions of your schema in source control and auto-generates scaffolding for new migrations by "diffing" them with the current schema. This ensures that your production schema never drifts out of sync from the schema defined by your application.
-
It automates many recipes for doing tricky migrations like column renames "online," without requiring downtime or a synchronized application deploy. Naive methods of renaming a column require multiple application deploys and costly table rebuilds. $NAME's recipe doesn't require either.
// Ported from https://www.raywenderlich.com/741-swift-algorithm-club-swift-merge-sort | |
func mergeSort<T: Comparable>(_ array: [T]) async -> [T] { | |
guard array.count > 1 else { return array } | |
let middleIndex = array.count / 2 | |
async let leftArray = await mergeSort(Array(array[0..<middleIndex])) | |
async let rightArray = await mergeSort(Array(array[middleIndex..<array.count])) | |
return merge(await leftArray, await rightArray) |
phrase: | |
access_token: <your access token here> | |
project_id: <your project ID here> | |
push: | |
sources: | |
- file: ./lib/l10n/intl_<locale_name>.arb | |
params: | |
file_format: arb | |
pull: | |
targets: |
lane :build do | |
gym( | |
xcargs: "FASTLANE=true" | |
) | |
end |