"This tool helps you to generate beautiful blurry background images that you can use in any project. It doesn't use CSS3 gradients, but a rather unique approach. It takes a stock image, extracts a very small area (sample area) and scales it up to 100%. The browser's image smoothing algorithm takes care of the rest.
You can then use the image as an inline, base64 encoded image in any HTML element's background, just click Generate CSS button at the bottom of the app. Select source images from the gallery or use yours, the possibilities are endless."
"Everybody that has ever implemented file upload by hand in a Rails app knows that it's no cakewalk, not to mention a major security risk. That's why we use gems to handle file upload for us! But often it's hard to decide which one to choose for your project."
製作像是window,mac上的執行檔
""As a user, I want to download an application from the original author, and run it on my Linux desktop system just like I would do with a Windows or Mac application."
"As an application author, I want to provide packages for Linux desktop systems, without the need to get it 'into' a distribution and without having to build for gazillions of different distributions.""
Refer the YAML Anchors/Aliases documentation for information about how to alias and reuse syntax to keep your .circleci/config.yml file small.
workflow orchestration with two parallel jobs
jobs run according to configured requirements, each job waiting to start until the required job finishes successfully
requires: key
fans-out to run a set of acceptance test jobs in parallel, and finally fans-in to run a common deploy job.
Holding a Workflow for a Manual Approval
Workflows can be configured to wait for manual approval of a job before
continuing to the next job
add a job to the jobs list with the
key type: approval
approval is a special job type that is only available to jobs under the workflow key
The name of the job to hold is arbitrary - it could be wait or pause, for example,
as long as the job has a type: approval key in it.
schedule a workflow
to run at a certain time for specific branches.
The triggers key is only added under your workflows key
using cron syntax to represent Coordinated Universal Time (UTC) for specified branches.
By default,
a workflow is triggered on every git push
the commit workflow has no triggers key
and will run on every git push
The nightly workflow has a triggers key
and will run on the specified schedule
Cron step syntax (for example, */1, */20) is not supported.
use a context to share environment variables
use the same shared environment variables when initiated by a user who is part of the organization.
CircleCI does not run workflows for tags
unless you explicitly specify tag filters.
CircleCI branch and tag filters support
the Java variant of regex pattern matching.
Each workflow has an associated workspace which can be used to transfer files to downstream jobs as the workflow progresses.
The workspace is an additive-only store of data.
Jobs can persist data to the workspace
Downstream jobs can attach the workspace to their container filesystem.
Attaching the workspace downloads and unpacks each layer based on the ordering of the upstream jobs in the workflow graph.
Workflows that include jobs running on multiple branches may require data to be shared using workspaces
To persist data from a job and make it available to other jobs, configure the job to use the persist_to_workspace key.
Files and directories named in the paths: property of persist_to_workspace will be uploaded to the workflow’s temporary workspace relative to the directory specified with the root key.
Configure a job to get saved data by configuring the attach_workspace key.
persist_to_workspace
attach_workspace
To rerun only a workflow’s failed jobs, click the Workflows icon in the app and select a workflow to see the status of each job, then click the Rerun button and select Rerun from failed.
if you do not see your workflows triggering, a configuration error is preventing the workflow from starting.
check your Workflows page of the CircleCI app (not the Job page)
The release stage takes the build produced by the build stage and combines it with the deploy’s current config.
is ready for immediate execution in the execution environment.
The run stage (also known as “runtime”) runs the app in the execution environment
strict separation between the build, release, and run stages.
the Capistrano deployment tool stores releases in a subdirectory named releases, where the current release is a symlink to the current release directory.
Every release should always have a unique release ID
Releases are an append-only ledger and a release cannot be mutated once it is created.
Any data that needs to persist must be stored in a stateful backing service, typically a database.
The memory space or filesystem of the process can be used as a brief, single-transaction cache.
wipe out all local (e.g., memory and filesystem) state
compiling during the build stage
“sticky sessions” – that is, caching user session data in memory of the app’s process and expecting future requests from the same visitor to be routed to the same process.
Sticky sessions are a violation of twelve-factor and should never be used or relied upon
define workers as a simple PHP process that runs in the background with the purpose of extracting jobs from a storage space and run them with respect to several configuration options.
have to manually restart the worker to reflect any code change you made in your application.
instruct Laravel to create an instance of your application and start executing jobs, this instance will stay alive indefinitely which means the action of starting your Laravel application happens only once when the command was run & the same instance will be used to execute your jobs
This will start an instance of the application, process a single job,
and then kill the script.
Using queue:listen ensures that a new instance of the app is created for every job, that means you don't have to manually restart the worker in case you made changes to your code, but also means more server resources will be consumed.
the queue:listen command runs the WorkCommand inside a loop
The connection this worker will be pulling jobs from
"define workers as a simple PHP process that runs in the background with the purpose of extracting jobs from a storage space and run them with respect to several configuration options."
RoleBindings per namespace enable to restrict granted permissions to the very namespaces only that Traefik is watching over, thereby following the least-privileges principle.
The scalability can be much better when using a Deployment
you will have a Single-Pod-per-Node model when using a DaemonSet,
DaemonSets automatically scale to new nodes, when the nodes join the cluster
DaemonSets ensure that only one replica of pods run on any single node.
DaemonSets can be run with the NET_BIND_SERVICE capability, which will allow it to bind to port 80/443/etc on each host. This will allow bypassing the kube-proxy, and reduce traffic hops.
start with the Daemonset
The Deployment has easier up and down scaling possibilities.
The DaemonSet automatically scales to all nodes that meets a specific selector and guarantees to fill nodes one at a time.
Rolling updates are fully supported from Kubernetes 1.7 for DaemonSets as well.
provide the TLS certificate via a Kubernetes secret in the same namespace as the ingress.
If there are any errors while loading the TLS section of an ingress, the whole ingress will be skipped.
create secret generic
Name-based Routing
Path-based Routing
Traefik will merge multiple Ingress definitions for the same host/path pair into one definition.
specify priority for ingress routes
traefik.frontend.priority
When specifying an ExternalName,
Traefik will forward requests to the given host accordingly and use HTTPS when the Service port matches 443.
By default Traefik will pass the incoming Host header to the upstream resource.
traefik.frontend.passHostHeader: "false"
type: ExternalName
By default, Traefik processes every Ingress objects it observes.
It is also possible to set the ingressClass option in Traefik to a particular value. Traefik will only process matching Ingress objects.
It is possible to split Ingress traffic in a fine-grained manner between multiple deployments using service weights.
use case is canary releases where a deployment representing a newer release is to receive an initially small but ever-increasing fraction of the requests over time.
Over time, the ratio may slowly shift towards the canary deployment until it is deemed to replace the previous main application, in steps such as 5%/95%, 10%/90%, 50%/50%, and finally 100%/0%.
"SQL Notebook is a free Windows app for exploring and manipulating tabular data. It is powered by a supercharged SQLite engine, supporting both standard SQL queries and SQL Notebook-specific commands. Everything you need to answer analysis questions about your data, regardless of its format or origin, is built into SQL Notebook."