"Mix High Performance Computing with the World Wide Web and you'll get QMachine, a web service that can incorporate ordinary browsers into a World Wide Computer - without installing anything."
Modern IDEs provide developers with sophisticated features like code completion, refactoring, navigating to a symbol's definition, syntax highlighting, and error and warning markers.
an IDE needs a sophisticated understanding of the programming language that the program's source is written in.
Conventional compilers or interpreters for a specific programming language are typically unable to provide these language services, because they are written with the goal of either transforming the source code into object code or immediately executing the code.
Prior to the design and implementation of the Language Server Protocol for the development of Visual Studio Code, most language services were generally tied to a given IDE or other editor.
The Language Server Protocol allows for decoupling language services from the editor so that the services may be contained within a general purpose language server.
LSP is not restricted to programming languages. It can be used for any kind of text-based language, like specifications[7] or domain-specific languages (DSL).
When a user edits one or more source code files using a language server protocol-enabled tool, the tool acts as a client that consumes the language services provided by a language server.
The protocol does not make any provisions about how requests, responses and notifications are transferred between client and server.
Kubernetes supports many types of volumes, and a Pod can
use any number of them simultaneously.
To use a volume, a Pod specifies what volumes to provide for the Pod (the
.spec.volumes
field) and where to mount those into Containers (the
.spec.containers.volumeMounts
field).
A process in a container sees a filesystem view composed from their Docker
image and volumes.
Volumes can not mount onto other volumes or have hard links to
other volumes.
Each Container in the Pod must independently specify where to
mount each volume
localnfs
cephfs
awsElasticBlockStore
glusterfs
vsphereVolume
An awsElasticBlockStore volume mounts an Amazon Web Services (AWS) EBS
Volume into your Pod.
the contents of an EBS
volume are preserved and the volume is merely unmounted.
an
EBS volume can be pre-populated with data, and that data can be “handed off”
between Pods.
create an EBS volume using aws ec2 create-volume
the nodes on which Pods are running must be AWS EC2 instances
EBS only supports a single EC2 instance mounting a volume
check that the size and EBS volume
type are suitable for your use!
A cephfs volume allows an existing CephFS volume to be
mounted into your Pod.
the contents of a cephfs volume are preserved and the volume is merely
unmounted.
A Container using a ConfigMap as a subPath volume mount will not
receive ConfigMap updates.
An emptyDir volume is first created when a Pod is assigned to a Node, and
exists as long as that Pod is running on that node.
When a Pod is removed from a node for
any reason, the data in the emptyDir is deleted forever.
By default, emptyDir volumes are stored on whatever medium is backing the
node - that might be disk or SSD or network storage, depending on your
environment.
you can set the emptyDir.medium field to "Memory"
to tell Kubernetes to mount a tmpfs (RAM-backed filesystem)
An fc volume allows an existing fibre channel volume to be mounted in a Pod.
configure FC SAN Zoning to allocate and mask those LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts can access them.
Flocker is an open-source clustered Container data volume manager. It provides management
and orchestration of data volumes backed by a variety of storage backends.
emptyDir
flocker
A flocker volume allows a Flocker dataset to be mounted into a Pod
have your own Flocker installation running
A gcePersistentDisk volume mounts a Google Compute Engine (GCE) Persistent
Disk into your Pod.
Using a PD on a Pod controlled by a ReplicationController will fail unless
the PD is read-only or the replica count is 0 or 1
A glusterfs volume allows a Glusterfs (an open
source networked filesystem) volume to be mounted into your Pod.
have your own GlusterFS installation running
A hostPath volume mounts a file or directory from the host node’s filesystem
into your Pod.
a
powerful escape hatch for some applications
access to Docker internals; use a hostPath
of /var/lib/docker
allowing a Pod to specify whether a given hostPath should exist prior to the
Pod running, whether it should be created, and what it should exist as
specify a type for a hostPath volume
the files or directories created on the underlying hosts are only writable by root.
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
An iscsi volume allows an existing iSCSI (SCSI over IP) volume to be mounted
into your Pod.
have your own iSCSI server running
A feature of iSCSI is that it can be mounted as read-only by multiple consumers
simultaneously.
A local volume represents a mounted local storage device such as a disk,
partition or directory.
Local volumes can only be used as a statically created PersistentVolume.
Compared to hostPath volumes, local volumes can be used in a durable and
portable manner without manually scheduling Pods to nodes, as the system is aware
of the volume’s node constraints by looking at the node affinity on the PersistentVolume.
If a node becomes unhealthy,
then the local volume will also become inaccessible, and a Pod using it will not
be able to run.
PersistentVolume spec using a local volume and
nodeAffinity
PersistentVolume nodeAffinity is required when using local volumes. It enables
the Kubernetes scheduler to correctly schedule Pods using local volumes to the
correct node.
PersistentVolume volumeMode can now be set to “Block” (instead of the default
value “Filesystem”) to expose the local volume as a raw block device.
When using local volumes, it is recommended to create a StorageClass with
volumeBindingMode set to WaitForFirstConsumer
An nfs volume allows an existing NFS (Network File System) share to be
mounted into your Pod.
NFS can be mounted by multiple
writers simultaneously.
have your own NFS server running with the share exported
A persistentVolumeClaim volume is used to mount a
PersistentVolume into a Pod.
PersistentVolumes are a
way for users to “claim” durable storage (such as a GCE PersistentDisk or an
iSCSI volume) without knowing the details of the particular cloud environment.
A projected volume maps several existing volume sources into the same directory.
All sources are required to be in the same namespace as the Pod. For more details,
see the all-in-one volume design document.
Each projected volume source is listed in the spec under sources
A Container using a projected volume source as a subPath volume mount will not
receive updates for those volume sources.
RBD volumes can only be mounted by a single consumer in read-write mode - no
simultaneous writers allowed
A secret volume is used to pass sensitive information, such as passwords, to
Pods
store secrets in the Kubernetes API and mount them as files for
use by Pods
secret volumes are
backed by tmpfs (a RAM-backed filesystem) so they are never written to
non-volatile storage.
create a secret in the Kubernetes API before you can use it
A Container using a Secret as a subPath volume mount will not
receive Secret updates.
StorageOS runs as a Container within your Kubernetes environment, making local
or attached storage accessible from any node within the Kubernetes cluster.
Data can be replicated to protect against node failure. Thin provisioning and
compression can improve utilization and reduce cost.
StorageOS provides block storage to Containers, accessible via a file system.
A vsphereVolume is used to mount a vSphere VMDK Volume into your Pod.
supports both VMFS and VSAN datastore.
create VMDK using one of the following methods before using with Pod.
share one volume for multiple uses in a single Pod.
The volumeMounts.subPath
property can be used to specify a sub-path inside the referenced volume instead of its root.
Use the subPathExpr field to construct subPath directory names from Downward API environment variables
enable the VolumeSubpathEnvExpansion feature gate
The subPath and subPathExpr properties are mutually exclusive.
There is no limit on how much space an emptyDir or
hostPath volume can consume, and no isolation between Containers or between
Pods.
emptyDir and hostPath volumes will be able to
request a certain amount of space using a resource
specification, and to select the type of media to use, for clusters that have
several media types.
the Container Storage Interface (CSI)
and Flexvolume. They enable storage vendors to create custom storage plugins
without adding them to the Kubernetes repository.
all volume plugins (like
volume types listed above) were “in-tree” meaning they were built, linked,
compiled, and shipped with the core Kubernetes binaries and extend the core
Kubernetes API.
Container Storage Interface (CSI)
defines a standard interface for container orchestration systems (like
Kubernetes) to expose arbitrary storage systems to their container workloads.
Once a CSI compatible volume driver is deployed on a Kubernetes cluster, users
may use the csi volume type to attach, mount, etc. the volumes exposed by the
CSI driver.
The csi volume type does not support direct reference from Pod and may only be
referenced in a Pod via a PersistentVolumeClaim object.
This feature requires CSIInlineVolume feature gate to be enabled:--feature-gates=CSIInlineVolume=true
In-tree plugins that support CSI Migration and have a corresponding CSI driver implemented
are listed in the “Types of Volumes” section above.
Mount propagation allows for sharing volumes mounted by a Container to
other Containers in the same Pod, or even to other Pods on the same node.
Mount propagation of a volume is controlled by mountPropagation field in Container.volumeMounts.
HostToContainer - This volume mount will receive all subsequent mounts
that are mounted to this volume or any of its subdirectories.
Bidirectional - This volume mount behaves the same the HostToContainer mount.
In addition, all volume mounts created by the Container will be propagated
back to the host and to all Containers of all Pods that use the same volume.
Edit your Docker’s systemd service file. Set MountFlags as follows:MountFlags=shared
"Deep Learning is a very hot topic these days especially in computer vision applications and you probably see it in the news and get curious. Now the question is, how do you get started with it? Today's guest blogger, Toshi Takeuchi, gives us a quick tutorial on artificial neural networks as a starting point for your study of deep learning."
"MAME originally stood for Multiple Arcade Machine Emulator.
MAME's purpose is to preserve decades of software history. As electronic technology continues to rush forward, MAME prevents this important "vintage" software from being lost and forgotten. This is achieved by documenting the hardware and how it functions. The source code to MAME serves as this documentation. The fact that the software is usable serves primarily to validate the accuracy of the documentation (how else can you prove that you have recreated the hardware faithfully?). Over time, MAME absorbed the sister-project MESS (Multi Emulator Super System), so MAME now documents a wide variety of (mostly vintage) computers, video game consoles and calculators, in addition to the arcade video games that were its initial focus."
"GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable."
Gobot is set of libraries in the Go programming language for robotics and physical computing.
It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.
Want to use Ruby on robots? Check out our sister project Artoo (http://artoo.io).
Want to use Node.js? Check out our sister project Cylon (http://cylonjs.com).
"A bootloader is a special program that is executed each time a bootable device is initialized by the computer during its power on or reset that will load the kernel image into the memory. This application is very close to hardware and to the architecture of the CPU. All x86 PCs boot in Real Mode. In this mode you have only 16-bit instructions. Our bootloader runs in Real Mode and our bootloader is a 16-bit program."
"Tails is a live operating system, that you can start on almost any computer from a DVD, USB stick, or SD card. It aims at preserving your privacy and anonymity, and helps you to:
"
"Nmap ("Network Mapper") is a free and open source (license) utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major computer operating systems, and official binary packages are available for Linux, Windows, and Mac OS X. In addition to the classic command-line Nmap executable, the Nmap suite includes an advanced GUI and results viewer (Zenmap), a flexible data transfer, redirection, and debugging tool (Ncat), a utility for comparing scan results (Ndiff), and a packet generation and response analysis tool (Nping)."
"In computing, the Two Generals Problem is a thought experiment meant to illustrate the pitfalls and design challenges of attempting to coordinate an action by communicating over an unreliable link. In the experiment, two generals are only able to communicate with one another by sending a messenger through enemy territory. The experiment asks how they might reach an agreement on the time to launch an attack, while knowing that any messenger they send could be captured."