| DetNet | B. Varga, Ed. |
| Internet-Draft | J. Farkas |
| Intended status: Standards Track | Ericsson |
| Expires: December 10, 2020 | A. Malis |
| Malis Consulting | |
| S. Bryant | |
| Futurewei Technologies | |
| June 8, 2020 |
DetNet Data Plane: MPLS over IEEE 802.1 Time Sensitive Networking (TSN)
draft-ietf-detnet-mpls-over-tsn-03
This document specifies the Deterministic Networking MPLS data plane when operating over a TSN sub-network.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 10, 2020.
Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Deterministic Networking (DetNet) is a service that can be offered by a network to DetNet flows. DetNet provides these flows with a low packet loss rates and assured maximum end-to-end delivery latency. General background and concepts of DetNet can be found in [RFC8655].
The DetNet Architecture decomposes the DetNet related data plane functions into two sub-layers: a service sub-layer and a forwarding sub-layer. The service sub-layer is used to provide DetNet service protection and reordering. The forwarding sub-layer is used to provides congestion protection (low loss, assured latency, and limited reordering) leveraging MPLS Traffic Engineering mechanisms.
[I-D.ietf-detnet-mpls] specifies the DetNet data plane operation for MPLS-based Packet Switched Network (PSN). MPLS encapsulated DetNet flows can be carried over network technologies that can provide the DetNet required level of service. This document focuses on the scenario where MPLS (DetNet) nodes are interconnected by a IEEE 802.1 TSN sub-network.
This document uses the terminology established in the DetNet architecture [RFC8655] and [I-D.ietf-detnet-mpls], and the reader is assumed to be familiar with that document and its terminology.
The following abbreviations are used in this document:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
The basic approach defined in [I-D.ietf-detnet-mpls] supports the DetNet service sub-layer based on existing pseudowire (PW) encapsulations and mechanisms, and supports the DetNet forwarding sub-layer based on existing MPLS Traffic Engineering encapsulations and mechanisms.
A node operating on a DetNet flow in the Detnet service sub-layer, i.e. a node processing a DetNet packet which has the S-Label as top of stack uses the local context associated with that S-Label, for example a received F-Label, to determine what local DetNet operation(s) are applied to that packet. An S-Label may be unique when taken from the platform label space [RFC3031], which would enable correct DetNet flow identification regardless of which input interface or LSP the packet arrives on. The service sub-layer functions (i.e., PREOF) use a DetNet control word (d-CW).
The DetNet MPLS data plane builds on MPLS Traffic Engineering encapsulations and mechanisms to provide a forwarding sub-layer that is responsible for providing resource allocation and explicit routes. The forwarding sub-layer is supported by one or more forwarding labels (F-Labels).
Edge Transit Relay Node Node Node (T-PE) (LSR) (S-PE) +---------+ <--|Svc Proxy|-- End to End Service -----------> +---------+ +---------+ |IP | |Svc|<-- DetNet flow ---| Service |---> +---+ +---+ +---------+ +---------+ |Fwd| |Fwd| | Fwd | |Fwd| |Fwd| +-.-+ +-.-+ +--.----.-+ +-.-+ +-.-+ : / ,-----. \ : Link : : .....+ +-[TSN Sub]-+ +........+ +..... [Network] `-----' |<----------- LSP ---------->| |<--- LSP -->| |<------------- DetNet MPLS ------------
Figure 1: Part of a Simple DetNet MPLS Network using a TSN sub-net
Figure 1 illustrates an extract of a DetNet enabled MPLS network. Edge/relay nodes sit at MPLS LSP boundaries and transit nodes are LSRs. In this figure, two MPLS nodes (the edge node and the transit node) are interconnected by a TSN sub-network.
DetNet edge/relay nodes are DetNet service sub-layer aware, understand the particular needs of DetNet flows and provide both DetNet service and forwarding sub-layer functions. They add, remove and process d-CWs, S-Labels and F-labels as needed. MPLS enabled DetNet nodes can enhance the reliability of delivery by enabling the replication of packets where multiple copies, possibly over multiple paths, are forwarded through the DetNet domain. They can also eliminate surplus previously replicated copies of DetNet packets. MPLS (DetNet) nodes also include DetNet forwarding sub-layer functions, support for notably explicit routes, and resources allocation to eliminate (or reduce) congestion loss and jitter.
DetNet transit nodes reside wholly within a DetNet domain, and also provide DetNet forwarding sub-layer functions in accordance with the performance required by a DetNet flow carried over an LSP. Unlike other DetNet node types, transit nodes provide no service sub-layer processing.
The DetNet WG collaborates with IEEE 802.1 TSN in order to define a common architecture for both Layer 2 and Layer 3, what maintains consistency across diverse networks. Both DetNet MPLS and TSN use the same techniques to provide their deterministic service: [RFC8655] and also illustrated here in Figure 1 a sub-network provides from MPLS perspective a single hop connection between MPLS (DetNet) nodes. Functions used for resource allocation and explicit routes are treated as domain internal functions and does not require function interworking across the DetNet MPLS network and the TSN sub-network.
As described in the DetNet architecture
In case of the service protection function due to the similarities of the DetNet PREOF and TSN FRER functions some level of interworking is possible. However, such interworking is out-of-scope in this document and left for further study.
Figure 2 illustrates a scenario, where two MPLS (DetNet) nodes are interconnected by a TSN sub-network. Node-1 is single homed and Node-2 is dual-homed to the TSN sub-network.
MPLS (DetNet) MPLS (DetNet) Node-1 Node-2 +----------+ +----------+ <--| Service* |-- DetNet flow ---| Service* |--> +----------+ +----------+ |Forwarding| |Forwarding| +--------.-+ <-TSN Str-> +-.-----.--+ \ ,-------. / / +----[ TSN-Sub ]---+ / [ Network ]--------+ `-------' <---------------- DetNet MPLS ---------------> Note: * no service sub-layer required for transit nodes
Figure 2: DetNet Enabled MPLS Network Over a TSN Sub-Network
The Time-Sensitive Networking (TSN) Task Group of the IEEE 802.1 Working Group have defined (and are defining) a number of amendments to IEEE 802.1Q that provide zero congestion loss and bounded latency in bridged networks. Furthermore IEEE 802.1CB defines frame replication and elimination functions for reliability that should prove both compatible with and useful to, DetNet networks. All these functions have to identify flows those require TSN treatment.
TSN capabilities of the TSN sub-network are made available for MPLS (DetNet) flows via the protocol interworking function defined in Annex C.5 of IEEE 802.1CB. For example, applied on the TSN edge port it can convert an ingress unicast MPLS (DetNet) flow to use a specific Layer-2 multicast destination MAC address and a VLAN, in order to direct the packet through a specific path inside the bridged network. A similar interworking function pair at the other end of the TSN sub-network would restore the packet to its original Layer-2 destination MAC address and VLAN.
Placement of TSN functions depends on the TSN capabilities of nodes. MPLS (DetNet) Nodes may or may not support TSN functions. For a given TSN Stream (i.e., DetNet flow) an MPLS (DetNet) node is treated as a Talker or a Listener inside the TSN sub-network.
Mapping of a DetNet MPLS flow to a TSN Stream is provided via the combination of a passive and an active stream identification function that operate at the frame level. The passive stream identification function is used to catch the MPLS label(s) of a DetNet MPLS flow and the active stream identification function is used to modify the Ethernet header according to the ID of the mapped TSN Stream.
Clause 6.8 of IEEE P802.1CBdb defines a Mask-and-Match Stream identification function that can be used as a passive function for MPLS DetNet flows.
Clause 6.6 of IEEE 802.1CB defines an Active Destination MAC and VLAN Stream identification function, what can replace some Ethernet header fields namely (1) the destination MAC-address, (2) the VLAN-ID and (3) priority parameters with alternate values. Replacement is provided for the frame passed down the stack from the upper layers or up the stack from the lower layers.
Active Destination MAC and VLAN Stream identification can be used within a Talker to set flow identity or a Listener to recover the original addressing information. It can be used also in a TSN bridge that is providing translation as a proxy service for an End System.
This section covers required behavior of a TSN-aware MPLS (DetNet) node using a TSN sub-network. The implementation of TSN packet processing functions MUST be compliant with the relevant IEEE 802.1 standards.
From the TSN sub-network perspective MPLS (DetNet) nodes are treated as Talker or Listener, that may be (1) TSN-unaware or (2) TSN-aware.
In cases of TSN-unaware MPLS DetNet nodes the TSN relay nodes within the TSN sub-network must modify the Ethernet encapsulation of the DetNet MPLS flow (e.g., MAC translation, VLAN-ID setting, Sequence number addition, etc.) to allow proper TSN specific handling inside the sub-network. There are no requirements defined for TSN-unaware MPLS DetNet nodes in this document.
MPLS (DetNet) nodes being TSN-aware can be treated as a combination of a TSN-unaware Talker/Listener and a TSN-Relay, as shown in Figure 3. In such cases the MPLS (DetNet) node must provide the TSN sub-network specific Ethernet encapsulation over the link(s) towards the sub-network.
MPLS (DetNet) Node <----------------------------------> +----------+ <--| Service* |-- DetNet flow ------------------ +----------+ |Forwarding| +----------+ +---------------+ | L2 | | L2 Relay with |<--- TSN --- | | | TSN function | Stream +-----.----+ +--.------.---.-+ \__________/ \ \______ \_________ TSN-unaware Talker / TSN-Bridge Listener Relay <----- TSN Sub-network ----- <------- TSN-aware Tlk/Lstn -------> Note: * no service sub-layer required for transit nodes
Figure 3: MPLS (DetNet) Node with TSN Functions
A TSN-aware MPLS (DetNet) node impementations MUST support the Stream Identification TSN component for recognizing flows.
A Stream identification component MUST be able to instantiate the following functions (1) Active Destination MAC and VLAN Stream identification function, (2) Mask-and-Match Stream identification function and (3) the related managed objects in Clause 9 of IEEE 802.1CB and IEEE P802.1CBdb.
A TSN-aware MPLS (DetNet) node implementations MUST support the Sequencing function and the Sequence encode/decode function as defined in Clause 7.4 and 7.6 of IEEE 802.1CB if FRER is used inside the TSN sub-network.
The Sequence encode/decode function MUST support the Redundancy tag (R-TAG) format as per Clause 7.8 of IEEE 802.1CB.
A TSN-aware MPLS (DetNet) node implementations MUST support the Stream splitting function and the Individual recovery function as defined in Clause 7.7 and 7.5 of IEEE 802.1CB when the node is a replication or elimination point for FRER.
TSN Streams supporting DetNet flows may use Frame Replication and Elimination for Redundancy (FRER) as defined in Clause 8. of IEEE 802.1CB based on the loss service requirements of the TSN Stream, which is derived from the DetNet service requirements of the DetNet mapped flow. The specific operation of FRER is not modified by the use of DetNet and follows IEEE 802.1CB.
FRER function and the provided service recovery is available only within the TSN sub-network as the TSN Stream-ID and the TSN sequence number are not valid outside the sub-network. An MPLS (DetNet) node represents a L3 border and as such it terminates all related information elements encoded in the L2 frames.
As the Stream-ID and the TSN sequence number are paired with the similar MPLS flow parameters, FRER can be combined with PREOF functions. Such service protection interworking scenarios may require to move sequence number fields among TSN (L2) and PW (MPLS) encapsulations and they are left for further study.
Implementations of this document SHALL use management and control information to map a DetNet flow to a TSN Stream. N:1 mapping (aggregating DetNet flows in a single TSN Stream) SHALL be supported. The management or control function that provisions flow mapping SHALL ensure that adequate resources are allocated and configured to provide proper service requirements of the mapped flows.
DetNet flow and TSN Stream mapping related information are required only for TSN-aware MPLS (DetNet) nodes. From the Data Plane perspective there is no practical difference based on the origin of flow mapping related information (management plane or control plane).
The following summarizes the set of information that is needed to configure DetNet MPLS over TSN:
This information MUST be provisioned per DetNet flow.
TSN-aware MPLS DetNet nodes are member of both the DetNet domain and the TSN sub-network. Within the TSN sub-network the TSN-aware MPLS (DetNet) node has a TSN-aware Talker/Listener role, so TSN specific management and control plane functionalities must be implemented. There are many similarities in the management plane techniques used in DetNet and TSN, but that is not the case for the control plane protocols. For example, RSVP-TE and MSRP behaves differently. Therefore management and control plane design is an important aspect of scenarios, where mapping between DetNet and TSN is required.
In order to use a TSN sub-network between DetNet nodes, DetNet specific information must be converted to TSN sub-network specific ones. DetNet flow ID and flow related parameters/requirements must be converted to a TSN Stream ID and stream related parameters/requirements. Note that, as the TSN sub-network is just a portion of the end2end DetNet path (i.e., single hop from MPLS perspective), some parameters (e.g., delay) may differ significantly. Other parameters (like bandwidth) also may have to be tuned due to the L2 encapsulation used within the TSN sub-network.
In some case it may be challenging to determine some TSN Stream related information. For example, on a TSN-aware MPLS (DetNet) node that acts as a Talker, it is quite obvious which DetNet node is the Listener of the mapped TSN stream (i.e., the MPLS Next-Hop). However it may be not trivial to locate the point/interface where that Listener is connected to the TSN sub-network. Such attributes may require interaction between control and management plane functions and between DetNet and TSN domains.
Mapping between DetNet flow identifiers and TSN Stream identifiers, if not provided explicitly, can be done by a TSN-aware MPLS (DetNet) node locally based on information provided for configuration of the TSN Stream identification functions (Mask-and-match Stream identification and active Stream identification function).
Triggering the setup/modification of a TSN Stream in the TSN sub-network is an example where management and/or control plane interactions are required between the DetNet and TSN sub-network. TSN-unaware MPLS (DetNet) nodes make such a triggering even more complicated as they are fully unaware of the sub-network and run independently.
Configuration of TSN specific functions (e.g., FRER) inside the TSN sub-network is a TSN domain specific decision and may not be visible in the DetNet domain. Service protection interworking scenarios are left for further study.
Security considerations for DetNet are described in detail in [I-D.ietf-detnet-security]. General security considerations are described in [RFC8655]. DetNet MPLS data plane specific considerations are summarized in [I-D.ietf-detnet-mpls]. This section considers exclusively security considerations which are specific to the DetNet MPLS over TSN sub-network scenario.
The sub-network between DetNet nodes needs to be subject to appropriate confidentiality. Additionally, knowledge of what DetNet/TSN services are provided by a sub-network may supply information that can be used in a variety of security attacks. The ability to modify information exchanges between connected DetNet nodes may result in bogus operations. Therefore, it is important that the interface between DetNet nodes and TSN sub-network are subject to authorization, authentication, and encryption.
The TSN sub-network operates at Layer-2 so various security mechanisms defined by IEEE can be used to secure the connection between the DetNet nodes (e.g., encryption may be provided using MACSec [IEEE802.1AE-2018]).
This document makes no IANA requests.
The authors wish to thank Norman Finn, Lou Berger, Craig Gunther, Christophe Mangin and Jouni Korhonen for their various contributions to this work.
| [I-D.ietf-detnet-mpls] | Varga, B., Farkas, J., Berger, L., Malis, A., Bryant, S. and J. Korhonen, "DetNet Data Plane: MPLS", Internet-Draft draft-ietf-detnet-mpls-06, April 2020. |
| [RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
| [RFC3031] | Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, DOI 10.17487/RFC3031, January 2001. |
| [RFC8174] | Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017. |


Verify the following completions by typing the prefix and pressing TAB:
"obj.A" ⇒ "obj.AbcD"
"obj.a" ⇒ "obj.aBcdE"
"obj.AB" ⇒ "obj.AB"
"obj.ab" ⇒ "obj.aBdeE"
"obj.abx<backspace>" ⇒ "obj.AbcD"
"obj.Abcd" ⇒ "obj.AbcD"
"document.gete" ⇒ "document.getElementById"
"decodeu" ⇒ "decodeURI"
"obje" ⇒ "obje"
"Obje" ⇒ "Object"
Verify that when typing ";obj.ab", the completion text starts
with that, but the popup has the correct case (and excludes the
semicolon, as per issue 5999).
Expected Results
Case-insensitive matches should appear as completions.
Typed capital letters should force case at those points.
Completions that match case should be preferred as defaults.
When typing another letter, the completion should remain unless
another completion suddenly appears better at matching case.
For global completions, the first letter should not be matched
case-insensitively.


ZwWdP 15.02.2011
|
Zeit |
Interpret |
Titel |
|
20 h |
Feist |
Gatekeeper |
|
|
The Divine Comedy |
Your Daddy's Car |
|
|
Gruff Rhys |
Shark Ridden Waters |
|
|
Josh Mease |
White Diamonds |
|
|
The Candle Thieves |
Dreaming Of Lucy |
|
|
Ben Folds Five |
Don't Change Your Plans |
|
|
The High Llamas |
Sailing Bells |
|
|
Sounds Orchestral |
Pink Panther |
|
|
Erland & The Carnival |
Trouble In Mind |
|
|
Van Dyke Parks |
Number Nine |
|
|
Colorama |
Runaround |
|
|
Malkovic |
This Is The Music |
|
|
Marc Eric |
United Airlines Commercial |
|
|
High Llamas |
Over the River |
|
|
Broken Beats |
The Rules |
|
|
Saint Etienne |
Roseneck |
|
21 h |
The Dostoyevskijs |
Am Fenster |
|
|
Incarnations |
Meet Me At Midnight |
|
|
Patrick Watson |
The Storm |
|
|
Hopeful Monster |
Uncivilized |
|
|
House Of Hiss |
Shang |
|
|
The Symbols |
To Make You Smile Again |
|
|
Plastic Bertrand |
Tout Petit La Planète |
|
|
Goro Ito |
Happiness |
|
|
Depeche Mode |
dreaming of me |
|
|
Tokyo's Coolest Combo |
Wichita Lineman |
|
|
The Boo Radleys |
Vegas |
|
|
The Phoenix Foundation |
Eventually |
|
|
Benny Sings |
Unconditional Love |
|
|
Radiohead |
Creep |
|
|
Josh Rouse |
Under Cold Blue Stars |
|
|
Stereolab |
Get Carter |
|
22 h |
Foo Fighters |
Walking After You |
|
|
Saint Etienne |
Dream Lover |
|
|
Elbow |
Teardrop |
|
|
The Zombies |
Without Her |
|
|
Paul Weller |
Wishing On A Star (Steve Mason Remix) |
|
|
The Yellow Melodies |
So. Central Rain |
|
|
John Cameron |
The Protectors Suite |
|
|
Undersea Poem |
Juju's Theme |
|
|
Rare Bird |
Sympathy |
|
|
Faithless |
Not Enuff Love |
|
|
Basil Kirchin |
Primitive London 2 |
|
|
The Association |
Under Branches |
|
|
Giorgio Tuma |
Uncolored |
|
|
Piero Piccioni |
Charms |


Welcome to the Protocore Studio stack generation wizard.
Be sure to carefully read and understand all the rights. You must accept the license terms before you can generate stack and click Next to continue.
Kickstart new Project
Please fill up the below form, as an initial step to create the new project stack, project name and location is required.
Choose your tool
Do you want Protocore scaffolding to include:


Eddie Stansberry scores career-high 28 points as Hawaii beats Portland State | Honolulu Star-Advertiser
Eddie Stansberry scored a career-high 28 points as host Hawaii beat Portland State 83-75 tonight.
A turnstile crowd of 3,502 at the Stan Sheriff Center saw Stansberry make his first six attempts from 3-point range as the Rainbow Warriors improved to 3-1. The Vikings fell to 1-2.
Stansberry scored 26 in UH’s win over Pacific last week.
Matt Hauser led Portland State with 18 points.
Drew Buggs scored 13 points, Samuta Avea added 12, and Zigmars Raimo contributed 10 for Hawaii.
Stansberry made 6-of-7 shots from behind the 3-point line, and UH was 11-for-20 as a team on 3-pointers.
UH had just a few rough moments against Portland State’s pressure defense, but mostly solved it, resulting in open shots.
Buggs hit a 12-footer with 1 second left in the first half, and Hawaii led 40-38 at the break. Holland Woods of PSU started the second half scoring with a fast break basket, but Stansberry and Drew Buggs then hit 3-pointers and UH never lost its lead.
Stansberry made all four of his first-half attempts from behind the 3-point line and had 14 points before the break.
Freshman guard Justin Webster made his debut for UH and made his first shot as a Rainbow, a 3-pointer. He finished with four points.
Hawaii’s next game is Monday at Illinois. The Rainbows return home for three games, starting with New Orleans on Nov. 24.


Savegame Editor
for Sushi Striker
by
Marc Robledo
See on GitHub
Donate
Close file
Save changes
Items
Searing Torch
Exp Charm S
Exp Charm M
Exp Charm L
Guardian Charm S
Guardian Charm M
Guardian Charm L
Skill Charm
Great Skill Charm
Canned Stamina
Canned Power
Small Renewal Bean
Renewal Bean
Big Renewal Bean
Great Renewal Bean
Jacket
Sushi Sprite Catalog
Secret Scroll
Kodiak's Key
Ausprey's Key
Purrsilla's Key
Research Notes
Mysterious Stone
weird round rock
Party Charm
Training Black Belt
Potential Plate
Potential Plate (Kazurava Rank 4)
Potential Plate (Golekan Rank 3)
Potential Plate (Crowkan Rank 5)
Potential Plate (Garu-o Rank 7)
Potential Plate (Alt?)
Potential Plate (Kyatten Rank 2)
Exclusive Japanese DLC
Potential Plate (Owlten Rank 7)
Potential Plate (Suiten Rank 2)
Potential Plate (Boneten Rank 8)
Potential Plate (Batten Rank 6)
Potential Plate (Faeten Rank 2)
Potential Plate (Hohten Rank 3)


| Image Map
Creation - FULL Images Adding art to your T2D game is as simple as dragging and dropping your graphic files onto the T2D window while it is running. When you drop an image of a supported type on T2D it will be automatically imported into your game's (data/images) path and will be named as an imagemap in your game based on it's filename.
|
| Image Map
Modification - Celled Images Once you've added art to your project, you may want to specify some graphics as containing more than one image for your game, per file. This is accomplished with a simple three-step process outlined below.
|


Companies big and small need teams of people to look after their finances: who to pay, who owes them money, how to invest and how to grow.
These companies also need help to sort out their tax affairs and make sure employees get paid on time, while making them as profitable as possible. And not just businesses. From the student taking out a loan to the retired pensioner, everyone needs financial advice at some stage.
You can specialise too, as smaller legal and accountancy firms focus on one particular industry or area, for example marine or property law, or freelance and small business accountancy.


| DOSE: T+ 0:00 |
18 mg |
oral |
AMT |
(powder / crystals) |
| T+ 3:00 |
1 glass |
oral |
Alcohol |
(liquid) |
| T+ 6:00 |
25 mg |
insufflated |
MDMA |
(powder / crystals) |
I was with one friend and a group of people I didn't know very well in an unfamiliar setting. I was warned beforehand that AMT sometimes causes nausea, so I was a little nervous about that. I made sure I knew where there was a bucket I could throw up in, just in case. I did not know much about the substance, so was going in without any particular expectations. I was not on any OTC meds or supplements at the time. I had significant prior experiences with medium and high doses of LSD, as well as familiarity with several other psychedelics.
I took 18 mg of AMT orally. After about an hour, I had the sudden urge to wander around and felt extremely energetic. I took a brisk walk for maybe fifteen minutes, and then decided it was time to have a seat. For the next hour, I felt chatty and friendly towards the people I was just meeting, and things all seemed a bit more 'vivid' visually. I was at one + or so.
I had one drink at about the 3 hour mark, and was still energetic and felt like dancing to some music, but had begun to feel much less talkative.
At about the 3.5 hour mark, I hit ++. There was speculation that this was potentiated by the alcohol. There were no open-eye visuals during the experience, aside from the sense of vividness. For a while, I could see some very faint closed-eye visuals - tightly interlaced patterns that slowly shifted. Around this time I started to feel excessively mellow - at any point I sat or lay down, I had no urge to move at all. It was as if my inertia had increased: when I sat, I did not want to stop sitting, and when I moved around or was standing, I didn't want to sit.
This got pretty boring after a couple hours. I snorted 25 mg of MDMA at about the 6 hour mark. Everything appeared very lush at that point, and I got some of the typical empathic MDMA feelings. I remember being enthralled with the way lights looked behind fabric. However, I was also full of inertia and barely felt like talking with anyone, so I simply sat, observed, and listened (for the most part). I felt a bit of jaw clenching after the MDMA.
I went back down to + around the 9 hour mark, and lingered there. I felt tired but not sleepy. I got a couple of hours of restless sleep, and finally felt like I was at baseline around the 15 hour mark.
I stayed up for several more hours after baseline and felt lucidly introspective, and thought through a lot of things about myself and how I relate to people and things in my life.
I luckily did not experience nausea at any point. During the main part of my AMT experience (the 2.5 - 9 hour mark), I felt like I was coming down off of LSD but without any negative body load. I never felt any 'peak' persay. I also never felt like I wasn't myself, or like my ego was affected in any real way.
It was an interesting place to go, but annoyingly long for such mild effects (probably because of the low dose). From what other people have told me about AMT, I might be interested in trying it again at a higher dosage, but it is a significant time commitment.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- layout: post title: "Endomorphism monoid" description: "A method that returns the same type of output as its input forms a monoid. An article for object-oriented programmers." date: 2017-11-13 7:10 UTC tags: [Software Design] --- {% include JB/setup %}
{{ page.description }}
This article is part of a series about monoids. In short, a monoid is an associative binary operation with a neutral element (also known as identity). Methods that return the same type of value as their input form monoids over composition. The formal term for such an operation is an endomorphism.
Imagine that you have to develop some functionality for scheduling events in the future. As a concrete example, I recently wrote about adjusting dates while taking bank holidays into account. For instance, if you want to find the latest bank day before a given date, you could call the AdjustToLatestPrecedingDutchBankDay
method. If you give it a normal bank day (say, a Thursday), it'll simply return the input date, but if you give it a Sunday, it'll return the preceding Friday. That is, unless that particular Friday is a bank holiday, in which case it'll return the Thursday before - as long as that's not also a bank holiday, and so on.
In that previous article, the AdjustToLatestPrecedingDutchBankDay
method is an extension method, but you can also model it as an instance method, like this:
public DateTimeOffset Adjust(DateTimeOffset value) { var candidate = value; while (!(IsDutchBankDay(candidate.DateTime))) candidate = candidate.AddDays(-1); return candidate; }
This method would be part of a class that implements an interface:
public interface IDateTimeOffsetAdjustment { DateTimeOffset Adjust(DateTimeOffset value); }
You can make other implementations of this interface. Here's one that adjusts a date and time to business hours:
public class BusinessHoursAdjustment : IDateTimeOffsetAdjustment { private readonly static TimeSpan startOfBussiness = TimeSpan.FromHours(9); private readonly static TimeSpan endOfBusiness = TimeSpan.FromHours(17); public DateTimeOffset Adjust(DateTimeOffset value) { // Warning: May not handle DST changes appropriately! // It's only example code... if (value.TimeOfDay < startOfBussiness) return value - value.TimeOfDay + startOfBussiness; if (endOfBusiness < value.TimeOfDay) return (value - value.TimeOfDay + startOfBussiness).AddDays(1); return value; } }
To keep the example simple, business hours are hard-coded to 9-17.
You could also adapt conversion to UTC:
public class UtcAdjustment : IDateTimeOffsetAdjustment { public DateTimeOffset Adjust(DateTimeOffset value) { return value.ToUniversalTime(); } }
Or add a month:
public class NextMonthAdjustment : IDateTimeOffsetAdjustment { public DateTimeOffset Adjust(DateTimeOffset value) { return value.AddMonths(1); } }
Notice that the Adjust
method returns a value of the same type as its input. So far when discussing monoids, we've been looking at binary operations, but Adjust
is a unary operation.
An operation that returns the same type as its input is called an endomorphism. Those form monoids.
It's easy to connect two adjustments. Perhaps, for example, you'd like to first use BusinessHoursAdjustment
, followed by the bank day adjustment. This will adjust an original input date and time to a date and time that falls on a bank day, within business hours.
You can do this in a general-purpose, reusable way:
public static IDateTimeOffsetAdjustment Append( this IDateTimeOffsetAdjustment x, IDateTimeOffsetAdjustment y) { return new AppendedAdjustment(x, y); } private class AppendedAdjustment : IDateTimeOffsetAdjustment { private readonly IDateTimeOffsetAdjustment x; private readonly IDateTimeOffsetAdjustment y; public AppendedAdjustment( IDateTimeOffsetAdjustment x, IDateTimeOffsetAdjustment y) { this.x = x; this.y = y; } public DateTimeOffset Adjust(DateTimeOffset value) { return y.Adjust(x.Adjust(value)); } }
The Append
method takes two IDateTimeOffsetAdjustment
values and combines them by wrapping them in a private implementation of IDateTimeOffsetAdjustment
. When AppendedAdjustment.Adjust
is called, it first calls Adjust
on x
, and then calls Adjust
on y
with the return value from the first call.
In order to keep the example simple, I omitted null guards, but apart from that, Append
should work with any two implementations of IDateTimeOffsetAdjustment
. In other words, it obeys the Liskov Substitution Principle.
The Append
method is a binary operation. It takes two IDateTimeOffsetAdjustment
values and returns an IDateTimeOffsetAdjustment
. It's also associative, as a test like this demonstrates:
private void AppendIsAssociative( IDateTimeOffsetAdjustment x, IDateTimeOffsetAdjustment y, IDateTimeOffsetAdjustment z) { Assert.Equal( x.Append(y).Append(z), x.Append(y.Append(z))); }
As usual in this article series, such a test doesn't prove that Append
is associative for all values of IDateTimeOffsetAdjustment
, but if you run it as a property-based test, it demonstrates that it's quite likely.
In true monoidal fashion, IDateTimeOffsetAdjustment
also has an identity element:
public class IdentityDateTimeOffsetAdjustment : IDateTimeOffsetAdjustment { public DateTimeOffset Adjust(DateTimeOffset value) { return value; } }
This implementation simply returns the input value without modifying it. That's a neutral operation, as a test like this demonstrates:
private void AppendHasIdentity(IDateTimeOffsetAdjustment x) { Assert.Equal( x.Append(new IdentityDateTimeOffsetAdjustment()), x); Assert.Equal( new IdentityDateTimeOffsetAdjustment().Append(x), x); }
These two assertions verify that left and right identity holds.
Since Append
is associative and has identity, it's a monoid.
This holds generally for any method (or function) that returns the same type as it takes as input, i.e. T SomeOperation(T x)
. This matches the built-in library in Haskell, where Endo
is a Monoid
.
A method that returns a value of the same type as its (singular) input argument is called an endomorphism. You can compose two such unary operations together in order to get a composed operation. You simply take the output of the first method and use it as the input argument for the second method. That composition is a monoid. Endomorphisms form monoids.
Next: Maybe monoids.
Comments
Hi, Mark!
I'm really enjoing your series on category theory. I think you're doing a great job in making such abstract concepts accessible to us programmers. However, I found this particular episode puzzling. You claim that any composition of endomorphisms is a monoid, and you also claim to have tested that your
Append
method is associative. However, it is not hard to come up with a counter-example:Here,
WeekendAdjustment
is just a simplifiedDutchBankDayAdjustment
.It would also be interesting to see how you can do property based testing on this, i.e. how to automatically generate meaningful instances of
IDateTimeOffsetAdjustment
. When I try to run your test, I get: "IDateTimeOffsetAdjustment is not handled automatically by FsCheck. Consider using another type or writing and registering a generator for it."Tor, thank you for writing, and for your kind words. I suppose that the
CounterExample
test fails when one executes it; you don't explicitly write that, but that's what I expect would happen.The
Append
operation is, indeed, not commutative. This is, however, not a requirement for monoids, or even for groups. Some monoids, such as addition and multiplication, are also commutative, while others, like list concatenation or, here, the endomorphism monoid, aren't.When it comes to the FsCheck properties, I admit that I cheated slightly with the code listing in the article. I did this because the properties are a bit more complicated than what I show, and I was concerned that the extra infrastructure surrounding those tests would detract from the overall message.
The associativity property in its entirety looks like this:
Where
GenerateAdjustment
is defined like this:Not only did I omit all that extra scaffolding, I also pretended that
IDateTimeOffsetAdjustment
objects could be compared using their default implementations ofEquals
, which they meaningfully can't. Notice that the full property listed here also asserts using a custom equality comparer:The custom comparer's
Equals
method creates a random number of ticks and uses it to create aDateTimeOffset
value. It then callsAdjust
on both objects, which are considered equal if they produce the same result.The test for identity is defined in a similar fashion; it also uses
GenerateAdjustment
andDateTimeOffsetAdjustmentComparer
.Thank you for such a prompt and thorough reply. You are of course correct, I have been confusing associativity with commutativity. I didn't run into the same mistake during the list concatenation article, though, maybe because list concatenation more obviously is associative and not commutative. In the current article, however, I intuitively felt that the operations needed to be commutative, but your reply clears that up.
It is also helpful to see the extra scaffolding around your property based test. The article itself seemed to imply that instances of
IDateTimeOffsetAdjustment
could be automatically generated. Your approach to set up such a test will come in handy now that I'm convinced that I should let more of my tests be property based, even in C#!Tor, I made the same mistake several times when I started researching all of this. I think that there's something intuitive and fundamental about commutativity, so at a superficial glance, it seems odd that we can do without it, while at the same time requiring a less intuitive property like associativity.
When it comes to computation, though, I think that it's exactly the nature of associativity that enables us to decompose big problems into several small problems. The order of how you deal with those small problems doesn't matter, as long as you apply the intermediate results in the correct order.
Dear Mark!
These additional explanations and contextual information in the comment sections deserve a place in the original text. To keep the text uncluttered this site uses clickable popups: . If you click on some of the numbers, you'll see what I mean. You might consider adding this feature to the text.
Best regards, Norbert.


Kyle is currently a full time student attending Lambda for full stack web development. Kyle is located in Jacksonville, FL and when he is not coding, can be found completing home renovations as well as helping friends buy and sell real estate.
WEB UI DEVELOPER | WEB 25
Cody M Russell is a UI Dev from Detroit, MI and is currently attending Lambda for Full Stack Web Development, when not setting up floral arrangements for weddings on the weekends.
WEB UI DEVELOPER | WEB 25
Hugo Oliveira is an aspiring web developer from Kansas City and does his best to balance time between coding and enjoying the outdoors until a big football or basketball game comes on.
WEB REACT I | WEB 24
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Doloribus quo architecto est consequatur, vitae dolorum id veritatis error a aspernatur voluptatum doloremque ad sunt similique, distinctio quam, incidunt ab quod.
WEB REACT II | WEB 24
James Starks is a Software Engineer who currently leads over 300 web developers and works hard to inspire thousands of people on a daily basis.
PROJECT LEAD | WEB 19


Content goes here.
Content goes here.
Content goes here
Some other text
This is some important text. Please reade caerfuly.


Exporting
For businesses who export outside the EU.
Overview
Exporting and doing business abroad
- Get export advice and finance
- Get help researching export markets
- Find overseas business opportunities
- Get export insurance or export finance
- Export licences and special rules
- Register for an EORI number
- Commodity codes and reporting
- Wood packaging
- Trade barriers
- Financial sanctions
You can get advice and financial support from the government to export or do business abroad.
You must have a licence, or follow special rules to export some things.
You must register for an EORI number, if you don’t have one. How you apply depends on whether you’re:
You must find the right commodity code for your export to make sure you pay the right tax.
You can report a trade barrier to the Market Access Unit (MAU). Trade barriers make imported goods and services less competitive than those produced locally.
???


| Function name | Function info |
|---|---|
get_num_of_results_sets(1) : get_num_of_results_sets(x), where variable x is return of an in-line solve block, returns the number of results sets stored in variable x. |
|
get_solved_results_set(2) : get_solved_results_set(x, y), where variable x is return of an in-line solve block, returns No. y + 1 results set stored in variable x. Note that this function returns an 1-dim array. The first element in the array is the result of the first to-be-solved variable in the solve block; the second element in the array is the result of the second to-be-solved variable in the solve block; etc ... |
|
get_variable_results(2) : get_variable_results(x, y), where variable x is return of an in-line solve block, returns all results of No. y + 1 to-be-solved variable in the solve block which returns x. Note that this function returns an 1-dim array. Each element in the array is one root of the to-be-solved variable. |


Methods
back (History::Container)
force_store (History::Container)
history (History::ClassMethods)
history_skip (History::ClassMethods)
included (History)
last_location (History::InstanceMethods)
logger (History::Container)
new (History::Container)
peek (History::Container)
peek_last_location (History::InstanceMethods)
redirect_back (History::InstanceMethods)
skip (History::Container)
store (History::Container)
store_location (History::InstanceMethods)


Are you ready to make a difference?
We need your help to make Denver great again!
Welcome to the A.S.S. Cloud


 They are simply a list of things, of any type. They are similar to objects, which we cam across last week, but they don’t have named keys. Instead they are indexed; each thing in the array is numbered, starting from zero.
An example of some arrays are:
var someStrings = ["This string", "That string", "The other string"];
var someNumbers = [15, 9128476, 2442, 30, 463, 123, -10, 24, 56, 41, 52, 34, 64, 12];
var aMixedListOfStuff = [
"a string",
["nested", "array", "of", "strings"],
123,
{wow: "An object!"},
function() {
return "What is this!? A FUNCTION! IN an ARRAY! Madness!"
}
];
As you can see from the examples, an array in Javascript can be a list of anything of any type. Even mixed types. It is unusual to mix types though, and is usually best avoided. Arrays are most powerful when they contain a list of similar things that you can perform the same operation on repeatedly.
The language gives you a few handy features with an array. Firstly, you can always read its length using .length
. For example:
someStrings.length; // is 3
someNumbers.length; // is 14
aMixedListOfStuff.length; // is 5
You can always access an element by its index as well, and you do this using square brackets like this:
someStrings[0]; // is "This string" because array indexing starts at zero.
someStrings[2]; // is "The other string"
someNumbers[5]; // 123
aMixedListOfStuff[0]; // "a string"
aMixedListOfStuff[1]; // ["nested", "array", "of", "strings"]
aMixedListOfStuff[1][3]; // "strings" - get the element at index 3 from the array at index 1
As well as these builtins, you can use various standard methods for accessing and using arrays. Some of the commonest are push()
, pop()
, unshift()
and shift()
. Other handy ones are forEach()
, some()
and indexOf()
. You can find a big list of these at the MDN page on arrays and you should go read that page.
A more in depth example
So, putting it all together, here’s a “real world”(ish) example of using an array in a bit of code managing a shopping basket.
function getTotal(items) {
// start the total as zero
var total = 0;
// first check we actually have an array
if (!(items instanceof Array)) {
throw new Error("getTotal requires an array. " + typeof(items) + " given instead.");
}
// Now loop through the array items.
items.forEach(function(item, index) {
if (typeof(item.cost) !== 'number' || typeof(item.qty) !== 'number') {
// Make sure each item is a valid item.
throw new Error("getTotal requires an array of valid items. Item " + index + " appears to be invalid.");
}
// Add the cost onto the total for each item.
total += (item.cost * item.qty);
});
return total;
}
In this example, we’d pass in something like this:
var basketItems = [
{desc: "Electric pencil sharpener", qty: 1, cost: 10.00},
{desc: "HB Pencil", qty: 10, cost: 0.50},
{desc: "2B Pencil", qty: 2, cost: 1.00},
{desc: "Pencil Eraser", qty: 2, cost: 1.50}
];
var total = getTotal(basketItems); // total returned is 20.00
The array os passed into the function which loops over all the items and extracts the information it needs from each one, incresing the total as it goes. (The objects in the array can contain any extra keys, so long as the qty and cost are always numbers. In this example desc
is just ignored by the function.)


Talking : Etienne Roudeix / @__etienne
Free software : AGPL
Eponymous company
v1 : 2011
NoSQL
JSON documents
A new language
Tools
Architecture
Performance
lock free
Primary Key
Secondary Index
Composed Index
by Etienne Roudeix / @__etienne
http://github.roudeix.net/talks-rethinkDB


If a faulty service is deployed, it will be displayed on the Available Services page as [n] faulty service(s):
Clicking on the faulty service link will open the page as shown below, on which the details of the faulty services will be listed. Select the faulty service(s) that you want to delete and click the delete button.
Figure: Deleting Faulty Services


From;Mr.Daniel Kargbu and Family, Lome. Republic of Togo. My Dear , Good day.This very confidential request should come as a surprise to you.But it is because of the nature of what is happening to me and my family urged me to contact you, and I quite understand that this is not the best way to contact you because of the nature of my request and the attention it requires.I got your contact information from your country's information directory during my desperate search for someone who can assist me secretly and confidentially in relocating and managing some family fortunes. My name is Mr.Daniel Smith Kargbu , the second son of Retired Major.George Smith Kargbu , of Monrovia Liberia,.At the height of the current political crises in our country,in which the rebel group of the opposition party in our country slain and ripp off the supporters of our president,Mr Charles Taylor,in their efforts to reclaim power in our country,my father and my elder brother were brutally slained to a painful death on the 6th of July,2003, in their struggle to protect some civilians who ran to take refuge in our house.My father,during his life on earth was a retired major with our countrys army and a prominent business man who trades on diamond and gold from some foreign countries .He publicly opposes the crude policies and crime against humanity on the civilians by the rebel group in which they force the younger civilians to fight with guns and grenades and in the process loose either their lives or some parts of their body upon refusal ! to take the ammunition for war.I therefore decided to move my mother and my younger sister and brother to the Republic of Togo for refuge,where we presently stay without anything and without any source of livelyhood. During my fathers life on earth,he had deposited the sum of Eight Million and Six Hundred Thousand United States Dollars[$8.600.000.00],in a box with a Finance and Security Company in the Republic of Togo for a cash and carry Diamond and Gold business with some foreign business customers, awaiting instructions to be moved to its destination,which he never completed before he met his untimely death with my elder brother in the night of that faithful day.In view of this and as the only surviving grown up son of my father,I therefore humbly wish to inform you of my intentions to use your name and adress in making sure that this fund is lifted out of Republic of Togo finally.And also seek for your honest and trustworthy assistance to help me clear and accommodate this money before it is dictated out and blocked by the incoming regime in our country, and also to improve my familys worsening condition at present. Now this is what I actually want you to do for me; 1. I want you to be presented to the Finance and Security company as the person I contacted to assist my family for this purpose, with whose name and adress myself and my mother will forward to their office here in the Republic of Togo as the person that will clear and accomodate this money for my family . 2. To finally assist us in accommodating and managing this money in any lucrative business in your country for at least three years after I must have joined you first. Please,I hope you will grant and view this very request with favour and much understanding of our unexpected bad situation now,and will be a very honest and reliable person to deal with.And also bearing in mind the confidential nature of this my request,I emphasize please that you keep every bit of it to yourself so as to protect my familys future and yourself rendering this help. Thanking you in anticipation of your urgent response as soon as you read this very request. Best Regards, Mr.Daniel Kargbu and family.


fixerapi
is an R client for the fixer.io currency conversion and exchange rate API. The API requires registration and some features are only available on paid accounts. Full API documentation is available here, and additional details are available in the vignette
To install from CRAN, use:
install.packages("fixerapi")
You can install the development version from GitHub with:
# install.packages("remotes") remotes::install_github("evanodell/fixerapi")
fixerapi
To access a tibble
with the name and currency symbol (a three letter code) for all currencies available through the API, use fixer_symbols()
.
There are five currency exchange query types, which fixer.io calls endpoints. They are:
fixer_latest()
(available with free account)fixer_historical()
(available on all paid accounts)fixer_convert()
(available on all paid accounts)fixer_time_series()
(available on “professional” and higher grade accounts)fixer_fluctuation()
(available on “professional plus” and “enterprise” grade accounts)With the exception of fixer_convert()
, which is limited to two currencies, all functions give an option for a base currency that is indexed to 1 and other currencies are compared to – the default is the Euro – and to limit the currencies it is compared with, using the symbols
parameter, which takes a character vector of currency symbols. If no symbols are specified, all available currencies are returned.
library(fixer) today_symbols <- fixer_latest(base = "EUR", symbols = c("JPY", "GBP", "USD", "CAD", "CHF")) print(today_symbols) #> A tibble: 5 x 2 #> name value #> <chr> <dbl> #> 1 JPY 131. #> 2 GBP 0.873 #> 3 USD 1.23 #> 4 CAD 1.57 #> 5 CHF 1.18
The example above shows some exchange rates on 2018-04-03.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
This project is not affiliated with or supported by fixer.io.
To cite package fixerapi
in publications use:
Odell E (2018). fixerapi: An R Client for the “Fixer.io” Currency API. doi: 10.5281/zenodo.1211687 (URL: http://doi.org/10.5281/zenodo.1211687), R package version 0.1.6, <URL: https://docs.evanodell.com/fixerapi>.
A BibTeX entry for LaTeX users is
@Manual{,
title = {{fixerapi}: An R Client for the "Fixer.io" Currency API},
author = {Evan Odell},
year = {2018},
note = {R package version 0.1.6},
doi = {10.5281/zenodo.1211687},
url = {https://docs.evanodell.com/fixerapi},
}


Your game has started, but no opponent has joined the game yet.
You can tell a friend to directly join the game with the game id
{{getGameId()}}
Account ID used for this game: {{getGame().self.accountId}}
Start color: {{getGame().self.color}}
Hooray, you are now in an ongoing chess game.
You have won this game
You have lost this game
{{gameStatus}}
{{gamePgn}}


GODZILLA
STARRING: Matthew Broderick, Jean Reno, Hank Azaria, Maria Pitillo, Michael Lerner, Harry Shearer WRITTEN BY: Dean Devlin & Roland Emmerich DIRECTED BY: Roland Emmerich
**OVERVIEW**
...No Firebreath...
There are two things I realized that are different with this Godzilla...let's get it out right now. No Firebreath is one thing. This could prove very useful to those pesky helicopters. The other is his legs, not erect like a man's but more like a chicken's. Because of that, he walks sloped over, unlike the man-in-the-rubber-suit of the original films.
So...let us begin with Godzilla. After a very clever introduction, a Japanese fisher gets sliced in half. Then reports from the Philippines point that a creature took a troll across an island and dove back into the water. The military soon calls upon the government's top nuclear research agent to investigate the strange residue left behind the creature's imprints. This is where Nick Tatopoulos (which no one-can pronounce), no doubt named after the man who designed the new creature, Patrick Tatopoulos, enters. He believes this creature has mutated from a previous reptilian species by fallout from a French nuclear testing site nearby. This mutation soon destroys a trio of fishing boats. The path points towards a destination: The city that never sleeps...
Okay, Manhattan for those not paying attention to the trailers.
The creature jumps the pier and rides into the island, causing mayhem and grief for all, including its Mayor, Ebert. Okay...first of all, he looks like the guy (played by Lerner). He has that goofy "thumbs up" slogan, PLUS his aid is named Gene...the whole joke is as subtle as a 2x4 in the face...let's move on.
In an amazingly short time, all of Manhattan is evacuated. Even the death count here seems very minor and virtually no one is seen on screen getting killed but we are assuming some get stomped. Course, the media jumps on it...A cameraman, nicknamed "Animal" (Azaria in a scene stealing performance) gets a shot and fear spreads quickly. By nightfall, all of Manhattan is more or less clear. Now, I don't care but if they could do that, call up those Deep Impact people, you would probably save a lot more in that movie.
Night--and the place is deserted--a fantastic battleground for a ten story tall monster...without firebreath. Another figure trying to cash in the popularity is Audrey Timmonds (Pitillo).  She meets up with him in the military quarantine and steals his information for a story break, which is then promptly stolen by Audrey's mean boss, Charles Caimen (Shearer...that's two from the Simpsons...Azaria being the other one). She is bummed, and very depressed since Nick lost his job with the military because of the leaked story. Out on his luck, he moves to leave town, but is kidnapped by the enigmatic Phillippe Roche (Reno as great as ever). Roche is a man who claims to be from the insurance company when he first appears but is eventually revealed to be from the French Secret Service, trying to clean up the mess his country began.
He believes Nick's latest finding, a finding that the US military doesn't endorse: That this creature (named Godzilla for the totally inept) was born, and currently is, pregnant. Perfect, above all things, this creature is a tribble as well. They decide to venture forth into the deserted Manhattan to locate the Lizard's nest. Course, as Nick and Phillipe sneak back into town, A pesky reporter and her freaky reporter follow them in...
Did I mention there was a big lizard In this movie...Oh yes, and the army sends everything they got against this thing...That includes seemingly a hundred attack choppers, jets, submarines, tanks and lots of expendable soldiers with machine guns. All they have to believe in is what Arnold said once in a movie, "If it bleeds, we can kill it."
**REVIEW**
Its just too bad they couldn't get access to the Z-1000 Attack Hovercraft from Godzilla 1985. Could have taken care of this creature early.
I loved the opening of this film. It was craftily made with cleaver old fashion photography of French nuclear testing under the observing eye of some Iguanas. It then moves into introducing its characters, some of the best the Devlin / Emmerich have made. The film doesn't focus on four or five groups, just one. Unfortunately, they can't seem to put that much skill into writing that one plot. When the film discusses the creature, the town, or the major plot points to resolve problems, the film works well. However when the film lowers itself to discussing the personal problems of its characters, the films stalls. I mean who cares. The writing is so immature when dealing with the romance of two characters as a ten story tall creature destroys New York.
I felt that Timmonds and Tatopolous to be very boring. Just get back to the action. I wasn't interested in Sam Neil's relationship with Laura Dern in Jurassic Park. Who cares? The other characters are great. I love Reno's character and Azaria steals his scenes. They make sense and if the film concentrated on them reacting rather than dealing with their personal lives, the film would work a lot better.... But when the action starts, it totally powers the simple script.
The first appearance of the creature is simple. I must admit, I miss the erect rubber suit creature. This new one looks too much like an oversized raptor...and thus spawns the only real problem with e action. The film has some great scenes as choppers race down the fast moving Godzilla through the streets at night. And there are some submarine sequences that really caught my eye. And the climax is to die for, but near the end of the film, as the group searches for the rest, there are some sequences that seem taken right out of Jurassic Park. I have seen these before and didn't really care to see them again. We only care about the big destruction, and I am happy to say the film delivers, kudos to the advertising campaign that kept so many scenes out of the commercials. It left so much more to see. I really enjoyed this thrill ride of a film.
Is it better than ID4? I have to say yes. It is not as funny (because of the lack of Will Smith) but the action is much more exciting with more screams and yelps from the audience. I found myself following along the fun and clapping at the destruction of the town. Godzilla was an exciting film and worth seeing twice, just as long as you don't mind the petty love story...and no firebreath...jeez...
TOP POINTS
+AMAZING SPECIAL EFFECTS +FANTASTIC ACTION SCENES
PLUSES +ACTING
MINUSES -POOR LOVE SUBPLOT -JURRASIC PARK SECTION TOO FAMILIAR
RATING: * * * * stars out of 5
DEMOGRAPHIC: Godzilla has very little onscreen violence but there is wall to wall destruction. People get crushed but you don't seem them after. There is not hefty violence beyond that. Honestly, Godzilla has probably the lowest body count of all the creature flicks of the same name. In those films, the town is not luckily deserted when the mayhem begins...I still think that is very peculiar...
-- --- Chris T. Dias --- "The man who runs with scissors."
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


We are a small but great
design-team from Moscow.
We are following principles of minimalism and clarity. We are making accurate and working design rather than creative one. We are working 24/7, like robots.
WE ARE DEVELOPING DESIGN FOR:
- Web sites
- Mobile applications (iOs & Android)
- Slide shows and presentations
SINCE 2004
HOW WE WORK:
- With 146% devotion
- With 100% before deadline guarantee
- With 50% advance payment


Part-time System Administrator
The Clinical Brain Lab housed within the Division of Psychology at NTU is seeking a part-time system administrator to help with setting up and maintaining networked servers used for image analyses within the lab. The main research focus of the lab is studying brain functions using neuroimaging methods.
Who can apply
Graduate or undergraduate students may apply. It is an hourly position or 8-10 hours per week (negotiable). The Clinical Brain Lab is currently involved in various projects in neuroimaging and technological applications in education. The above position would allow acquisition of research experience in this field if the applicant has related interest.
Duties
- Evaluate and install software packages on behalf of users
- Manage software licenses (E.g. CALs, Matlab etc)
- Ensure QoS and security for servers (Security design and implementation)
- Upgrading and patching server operating systems
- Plan and manage storage life cycle, including backups
- Evaluating software for future deployment
- Troubleshoot any other software and hardware problems
- Website webmaster
- Attend weekly lab meetings
- Communicate with related IT personnel for network issues
Skill Requirements
- Experience with servers and other high availability appliances
- Managing and configuring network services (E.g. VPN, routing, channel bonding etc.)
- Troubleshooting FlexNET license manager, remote desktop license manager
- Proficiency in RAID and Network file systems (iSCSI LUN, Targets, CIFS)
- Knowledge in web services (Apache, MySQL, FTP)
- Design and implementation of Hypervisors and virtualization (E.g., ESXI, resource pools, virtual switches)
- Matlab, R, C++ and Scripting (Windows PowerShell, or bash/tcsh)
- Familiar with Windows 2008 R2, 2012, CentOS environments.
If you have the suitable qualifications and are interested, please send detailed CV and inquiry to annabelchen@ntu.edu.sg.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/vcode.20vim.html ---
@Gabriel Ebner I'm trying to use the vim extension together with the VScode extension. I also enjoy being able to use comma instead of \. But then something really weird happens. If I type comma and then enter then it gets expanded to a subscript zero instead of creating a new line. Of course I can type TAB first (which is also a great recent addition). Can you reproduce this bug?
Actually this has nothing to do with the vim extension! I modified too many parameters at the same time. Simply setting a different leader key gives the bug.
So backslash+newline gives a newline? That's strange. Please file a bug. I'll look into it when I'm back in Vienna.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


This is a current work in process with very limited CSS in place at the moment.
This is a custom web-based bookkeeping solution that I built from the ground up to support Farmhouse on the Pond's accounting needs. Due to the unique business model, none of the existing bookkeeping programs met all of the business's needs. It tracks accounting, expenses, sales (both of individual and farmers markets) as well as allowing for real time pricing of recipes and ingredients. There is extensive tracking and custom reports can be generated on any data point that is tracked. Sample reports include how many of a recipe is sold, what a customer orders and how often, when eggs are bought, how many and how much they cost each time, etc.
Below is a snippet of some of the code with a more complex query that I built. When looking up recipe details for sales, you need to look at both Farmers Market and individual sales items. This function finds and merges the relevant data from each table and returns a combined result.
Finally, here is a snippet of the code that takes an array that was filled by a function which pulled recipe information from the database. It loops through the array to compile a list of all the recipes visible to the user.


suspend fun getCharacterFavorite(characterFavoriteId: Long): CharacterFavorite?
Obtain database favorite character by identifier.
characterFavoriteId - Character identifier.
characterFavoriteId
Return Favorite character if exist, otherwise null


| Top |
Whenever a client attempts to load a page protected by HTTP authentication, credentials will need to be provided to authorize access. To allow the client to decide how it wishes to handle authentication, WebKit will fire a “authenticate” signal with a WebKitAuthenticationRequest object to provide client side authentication support. Credentials are exposed through the WebKitCredential object.
In case the client application does not wish to handle this signal WebKit will provide a default handler. To handle authentication asynchronously, simply increase the reference count of the WebKitAuthenticationRequest object.
void webkit_authentication_request_authenticate (WebKitAuthenticationRequest *request
,WebKitCredential *credential
);
Authenticate the WebKitAuthenticationRequest using the WebKitCredential
supplied. To continue without credentials, pass NULL
as credential
.
Since: 2.2
void
webkit_authentication_request_cancel (WebKitAuthenticationRequest *request
);
Cancel the authentication challenge. This will also cancel the page loading and result in a
“load-failed” signal with a WebKitNetworkError of type WEBKIT_NETWORK_ERROR_CANCELLED
being emitted.
Since: 2.2
gboolean
webkit_authentication_request_can_save_credentials
(WebKitAuthenticationRequest *request
);
Determine whether the authentication method associated with this
WebKitAuthenticationRequest should allow the storage of credentials.
This will return FALSE
if WebKit doesn't support credential storing
or if private browsing is enabled.
Since: 2.2
const gchar *
webkit_authentication_request_get_host
(WebKitAuthenticationRequest *request
);
Get the host that this authentication challenge is applicable to.
Since: 2.2
guint
webkit_authentication_request_get_port
(WebKitAuthenticationRequest *request
);
Get the port that this authentication challenge is applicable to.
Since: 2.2
gboolean
webkit_authentication_request_is_retry
(WebKitAuthenticationRequest *request
);
Determine whether this this is a first attempt or a retry for this authentication challenge.
Since: 2.2
WebKitCredential *
webkit_authentication_request_get_proposed_credential
(WebKitAuthenticationRequest *request
);
Get the WebKitCredential of the proposed authentication challenge that was stored from a previous session. The client can use this directly for authentication or construct their own WebKitCredential.
A WebKitCredential encapsulating credential details
or NULL
if there is no stored credential.
[transfer full]
Since: 2.2
const gchar *
webkit_authentication_request_get_realm
(WebKitAuthenticationRequest *request
);
Get the realm that this authentication challenge is applicable to.
Since: 2.2
WebKitAuthenticationScheme
webkit_authentication_request_get_scheme
(WebKitAuthenticationRequest *request
);
Get the authentication scheme of the authentication challenge.
Since: 2.2
gboolean
webkit_authentication_request_is_for_proxy
(WebKitAuthenticationRequest *request
);
Determine whether the authentication challenge is associated with a proxy server rather than an "origin" server.
Since: 2.2
WebKitCredential * webkit_credential_new (const gchar *username
,const gchar *password
,WebKitCredentialPersistence persistence
);
Create a new credential from the provided username, password and persistence mode.
username |
The username for the new credential |
|
password |
The password for the new credential |
|
persistence |
The WebKitCredentialPersistence of the new credential |
Since: 2.2
WebKitCredential *
webkit_credential_copy (WebKitCredential *credential
);
Make a copy of the WebKitCredential.
Since: 2.2
void
webkit_credential_free (WebKitCredential *credential
);
Free the WebKitCredential.
Since: 2.2
const gchar *
webkit_credential_get_password (WebKitCredential *credential
);
Get the password currently held by this WebKitCredential.
Since: 2.2
WebKitCredentialPersistence
webkit_credential_get_persistence (WebKitCredential *credential
);
Get the persistence mode currently held by this WebKitCredential.
Since: 2.2
const gchar *
webkit_credential_get_username (WebKitCredential *credential
);
Get the username currently held by this WebKitCredential.
Since: 2.2
gboolean
webkit_credential_has_password (WebKitCredential *credential
);
Determine whether this credential has a password stored.
Since: 2.2
Enum values representing the authentication scheme.
Since: 2.2
Enum values representing the duration for which a credential persists.
Since: 2.2
“cancelled”
signalvoid user_function (WebKitAuthenticationRequest *request, gpointer user_data)
This signal is emitted when the user authentication request is cancelled. It allows the application to dismiss its authentication dialog in case of page load failure for example.
Flags: Run Last
Since: 2.2


Data Fields | |
| bool(* | put )(qentry_t *entry, const char *name, const void *data, size_t size, bool replace) |
| bool(* | putstr )(qentry_t *entry, const char *name, const char *str, bool replace) |
| bool(* | putstrf )(qentry_t *entry, bool replace, const char *name, const char *format,...) |
| bool(* | putint )(qentry_t *entry, const char *name, int num, bool replace) |
| void *(* | get )(qentry_t *entry, const char *name, size_t *size, bool newmem) |
| void *(* | getlast )(qentry_t *entry, const char *name, size_t *size, bool newmem) |
| char *(* | getstr )(qentry_t *entry, const char *name, bool newmem) |
| char *(* | getstrf )(qentry_t *entry, bool newmem, const char *namefmt,...) |
| char *(* | getstrlast )(qentry_t *entry, const char *name, bool newmem) |
| int(* | getint )(qentry_t *entry, const char *name) |
| int(* | getintlast )(qentry_t *entry, const char *name) |
| void *(* | caseget )(qentry_t *entry, const char *name, size_t *size, bool newmem) |
| char *(* | casegetstr )(qentry_t *entry, const char *name, bool newmem) |
| int(* | casegetint )(qentry_t *entry, const char *name) |
| bool(* | getnext )(qentry_t *entry, qentobj_t *obj, const char *name, bool newmem) |
| int(* | size )(qentry_t *entry) |
| int(* | remove )(qentry_t *entry, const char *name) |
| bool(* | truncate )(qentry_t *entry) |
| bool(* | reverse )(qentry_t *entry) |
| bool(* | save )(qentry_t *entry, const char *filepath) |
| int(* | load )(qentry_t *entry, const char *filepath) |
| bool(* | print )(qentry_t *entry, FILE *out, bool print_data) |
| bool(* | free )(qentry_t *entry) |
| int | num |
| qentobj_t * | first |
| qentobj_t * | last |
| int qentry_s::num |
number of objects
first object pointer
last object pointer


初学者
Toggle navigation
后台管理
流水
我的任务
教程文挡
4
You have 4 messages
See All Messages
10
You have 10 notifications
View all
9
You have 9 tasks
View all tasks
Alexander Pierce - Web Developer
Member since Nov. 2012
Followers
Sales
Friends
Profile


Technology Preview
Created by reUrgency.com
Who is...
Web Application Development
Comprised of...
Architects
Engineers
Graphic Artists
Specialties...
Web Applications
Phones
Tablets
Desktops
Our Clients...
Who am I...
Jeff Boothe, one of you!
20+ years Direct Sales Industry
Rep, Owner, Consultant, Vendor
Like
Many of you...
100's of...
Tuesday Night Meetings
1000's of...
3-Way Phone calls
10,000's of...
Organization Members
Company Owner
100,000
Customers
130
Countries
90
Days
Vendor
Since 1997
Serving 30+
Direct Sales Companies
Like...
Financial Destination
SupraLife
The mission...
Unite
20/yrs Direct Sales
Team reUrgency
Youngevity
Your...
Competitive Advantage
Tools that will make your rivals jealous!
Watcha' got?
* Special Preview *
Mobile Cart
But...
this is not
your average
shopping cart
Tailored to Youngevity
Shop by Brand
Shop by Treatment
Smart Cart!
Intelligent Recommendations
Your usage
Others purchases
Up/Downline Recommendations
Your Healthy Target Profile
Up/Downline Recommendations
Upline Recommendations
Your Healthy Target Profile
Your Healthy
Target Profile
Business Impacts
More Satisfied Customers
Find Products Easier
Find Products Never Knew Existed
Buy with confidence on others suggestion
Healthier Happy Customers
Customer Request App
Send Customer Requests
Manually or from Contacts
Sends Email & Text
View All Customers
Save Customers to Contacts
Customer Request App
Search: "90forLife"


Kodi's UWP app will go away if it doesn't find more developers
Kodi will likely drop support for its UWP app if it doesn't find more developers.
by Sean EndicottSource: Windows Central
What you need to know
- Kodi is looking for active developers to work on Kodi's UWP app.
- Kodi states that if no developers are interested, the UWP app will likely be dropped.
- Kodi began as Xbox Media Center for the original Xbox.
Kodi will likely drop support for its UWP app if the company doesn't find more developers. Kodi posted a "help wanted" post (via Neowin) on its website asking for active and experienced Windows developers. The post states, "Bottom line, without developer interest, the likelihood of there being a UWP release for v19 is slim, and v20 would be zero."
Kodi states that due to a switch to Python 3, there is a lot of work required to make things functional again within the Windows version of Kodi. The post bluntly implies that Kodi doesn't have an interest in the Windows platform, "This is a breaking change for us, and there is a lot of work that needs to be done to get things functional again. In turn, this has brought the lack of experience of (or even interest in) developing on the Windows platforms in the team to a crisis."
Kodi is seeking active and experienced developers with knowledge of C++ on the Windows platform. More details on the desired experience of developers can be found in the blog post by Kodi.
Kodi started as Xbox Media Center on the original Xbox. Discontinuation of the Windows version could mean that Kodi never returns to its Xbox origins.


My files
Recent
Shared with me
Option Type
Choose a option type
Put
Call
Stock Price
Strike Price
Years to maturity
Risk free rate
Volatility
Run code
Create Table
This is the recent tab.
This is the shared with me tab.


Example illustrating options for coloring GFF and GTF annotation tracks
- color by attribute (column 9)
- color by source (column 2)
- color by source with color table
- color by strand
var options =
{
genome: "hg38",
locus: "chr22:21,913,513-22,216,565",
tracks:
[
{
name: "Color by attribute \"biotype\"",
format: "gff3",
displayMode: "expanded",
height: 300,
url: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz",
indexURL: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz.tbi",
visibilityWindow: 1000000,
colorBy: "biotype",
// Uncomment to explicitly set a colorTable
colorTable: {
"antisense": "blueviolet",
"protein_coding": "blue",
"retained_intron": "rgb(0, 150, 150)",
"processed_transcript": "purple",
"processed_pseudogene": "#7fff00",
"unprocessed_pseudogene": "#d2691e",
"*": "black"
}
},
{
name: "Color by function",
format: "gff3",
displayMode: "expanded",
height: 300,
url: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz",
indexURL: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz.tbi",
visibilityWindow: 1000000,
color: (feature) => {
switch (feature.getAttributeValue("biotype")) {
case "antisense":
return "blueviolet"
case "protein_coding":
return "blue"
case "retained_intron":
return "rgb(0, 150, 150)"
case "processed_transcript":
return "purple"
case "processed_pseudogene":
return "#7fff00"
case "unprocessed_pseudogene":
return "#d2691e"
default:
return "black"
}
}
},
{
name: "Color by \"source\"",
format: "gff3",
displayMode: "expanded",
height: 300,
url: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz",
indexURL: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz.tbi",
visibilityWindow: 1000000,
colorBy: "source",
colorTable: {
"Ensembl": "blueviolet",
"ensembl": "blueviolet",
"ensembl_havana": "purple",
"havana": "blue",
"insdc": "#7fff00",
"mirbase": "#d2691e",
"*": "black"
}
},
{
name: "Color by \"source\" - default color table",
format: "gff3",
displayMode: "expanded",
height: 300,
url: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz",
indexURL: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz.tbi",
visibilityWindow: 1000000,
colorBy: "source",
},
{
name: "Color by strand",
format: "gff3",
displayMode: "expanded",
height: 300,
url: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz",
indexURL: "https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz.tbi",
visibilityWindow: 1000000,
color: "blue",
altColor: "red"
}
]
}


QueueUserAPC()
An alternative to the previous techniques, that doesn’t create a new thread in the target/remote process, is the ‘QueueUserAPC()’ call.
As documented on MSDN, this call “adds a user-mode asynchronous procedure call (APC) object to the APC queue of the specified thread.”
Here’s the definition.
DWORD WINAPI QueueUserAPC(
_In_ PAPCFUNC pfnAPC,
_In_ HANDLE hThread,
_In_ ULONG_PTR dwData
);
pfnAPC [in]
A pointer to the application-supplied APC function to be called when the specified thread performs an alertable wait operation. (...)
hThread [in]
A handle to the thread. The handle must have the THREAD_SET_CONTEXT access right. (...)
dwData [in]
A single value that is passed to the APC function pointed to by the pfnAPC parameter.
So, if we don’t want to create our own thread, we can use ‘QueueUserAPC()’ to “hijack” an existing thread in the target/remote process. That is, calling this function will queue an asynchronous procedure call on the specified thread.
We can use a real APC callback function instead of ‘LoadLibrary()’. The parameter can actually be a pointer to the filename of the DLL we want to inject.
DWORD dwResult = QueueUserAPC((PAPCFUNC)pfnThreadRtn, hThread, (ULONG_PTR)pszLibFileRemote);
There’s a little gotcha that you might notice if you try this technique, which is related to the way MS Windows executes APC’s. There’s no scheduler looking at the APC queue, meaning the queue is only examined when the thread becomes alertable.
Because of this we basically hijack every single thread, see below.
BOOL bResult = Thread32First(hSnapshot, &threadEntry);
while (bResult)
{
bResult = Thread32Next(hSnapshot, &threadEntry);
if (bResult)
{
if (threadEntry.th32OwnerProcessID == dwProcessId)
{
threadId = threadEntry.th32ThreadID;
wprintf(TEXT("[+] Using thread: %i\n"), threadId);
HANDLE hThread = OpenThread(THREAD_SET_CONTEXT, FALSE, threadId);
if (hThread == NULL)
wprintf(TEXT("[-] Error: Can't open thread. Continuing to try other threads...\n"));
else
{
DWORD dwResult = QueueUserAPC((PAPCFUNC)pfnThreadRtn, hThread, (ULONG_PTR)pszLibFileRemote);
if (!dwResult)
wprintf(TEXT("[-] Error: Couldn't call QueueUserAPC on thread> Continuing to try othrt threads...\n"));
else
wprintf(TEXT("[+] Success: DLL injected via CreateRemoteThread().\n"));
CloseHandle(hThread);
}
}
}
}
We basically do this expecting one thread to become alertable.
As a side note, it was nice to see this technique being used by DOUBLEPULSAR.
For the complete source code see ‘t_QueueUserAPC.cpp’.


Pressure
public struct Pressure
Contains a value, unit and a label describing atmospheric pressure
-
Double
representing atmospheric pressureDeclaration
Swift
private(set) public var value : Double = 0
-
PressureUnit
of the valueDeclaration
Swift
public let unit : PressureUnit
-
Human-readable representation of the value and unit together
Declaration
Swift
public var label : String
-
Same as
Pressure.label
, but converted to a specific unitDeclaration
Swift
public func label(as unit : PressureUnit) -> String
Parameters
unit
PressureUnit
to convert label toReturn Value
String
-
Same as
Pressure.value
, but converted to a specific unitDeclaration
Swift
public func value(as unit : PressureUnit) -> Double
Parameters
unit
PressureUnit
to convert value toReturn Value
Float


Voting is disabled.
You don't have rights to vote.
Remaining votes: {{ voting.remainingVotes }}
{{ ::voting.truncate(project.title, 48) }}
Remaining votes: {{ voting.remainingVotes }}


Welcome to Chushka application
Name:
Description:
Type:
Choose type...
Food
Domestic
Health
Cosmetics
Other
Create Product
Back to Home page


Home
Sales
Recipes
About Us
Pat's World Famous Salmon Cookies
Enter Store Information
Store Location:
Minimum Customers:
Maximum Customers:
Average Sales:
Submit


|
Version 3.11.0 |
|
LAPACK is a software package provided by Univ. of Tennessee; Univ. of California, Berkeley; Univ. of Colorado Denver; and NAG Ltd..
Presentation
LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.
The original goal of the LAPACK project was to make the widely used EISPACK and LINPACK libraries run efficiently on shared-memory vector and parallel processors. On these machines, LINPACK and EISPACK are inefficient because their memory access patterns disregard the multi-layered memory hierarchies of the machines, thereby spending too much time moving data instead of doing useful floating-point operations. LAPACK addresses this problem by reorganizing the algorithms to use block matrix operations, such as matrix multiplication, in the innermost loops. These block operations can be optimized for each architecture to account for the memory hierarchy, and so provide a transportable way to achieve high efficiency on diverse modern machines. We use the term "transportable" instead of "portable" because, for fastest possible performance, LAPACK requires that highly optimized block matrix operations be already implemented on each machine.
LAPACK routines are written so that as much as possible of the computation is performed by calls to the Basic Linear Algebra Subprograms (BLAS). LAPACK is designed at the outset to exploit the Level 3 BLAS — a set of specifications for Fortran subprograms that do various types of matrix multiplication and the solution of triangular systems with multiple right-hand sides. Because of the coarse granularity of the Level 3 BLAS operations, their use promotes high efficiency on many high-performance computers, particularly if specially coded implementations are provided by the manufacturer.
Highly efficient machine-specific implementations of the BLAS are available for many modern high-performance computers. For details of known vendor- or ISV-provided BLAS, consult the BLAS FAQ. Alternatively, the user can download ATLAS to automatically generate an optimized BLAS library for the architecture. A Fortran 77 reference implementation of the BLAS is available from netlib; however, its use is discouraged as it will not perform as well as a specifically tuned implementation.
This material is based upon work supported by the National Science Foundation and the Department of Energy (DOE). Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF) or the Department of Energy (DOE).
Software
Licensing
LAPACK is a freely-available software package. It is available from netlib via anonymous ftp and the World Wide Web at http://www.netlib.org/lapack . Thus, it can be included in commercial software packages (and has been). We only ask that proper credit be given to the authors.
The license used for the software is the modified BSD license, see:
Like all software, it is copyrighted. It is not trademarked, but we do ask the following:
-
If you modify the source for these routines we ask that you change the name of the routine and comment the changes made to the original.
-
We will gladly answer any questions regarding the software. If a modification is done, however, it is the responsibility of the person who modified the routine to provide support.
LAPACK, version 3.11.0
-
Download: lapack-3.11.0.tar.gz
-
Updated: November 11 2022
-
LAPACK GitHub Open Bug (Current known bugs)
Standard C language APIs for LAPACK
collaboration LAPACK and INTEL Math Kernel Library Team
-
LAPACK C INTERFACE is now included in the LAPACK package (in the lapacke directory)
-
Updated: November 16, 2013
-
header files: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_utils.h
LAPACK for Windows
LAPACK is built under Windows using Cmake the cross-platform, open-source build system. The new build system was developed in collaboration with Kitware Inc.
A dedicated website (http://icl.cs.utk.edu/lapack-for-windows/lapack) is available for Windows users.
-
You will find information about your configuration need.
-
You will be able to download BLAS, LAPACK, LAPACKE pre-built libraries.
-
You will learn how you can directly run LAPACKE from VS Studio (just C code, no Fortran!!!). LAPACK now offers Windows users the ability to code in C using Microsoft Visual Studio and link to LAPACK Fortran libraries without the need of a vendor-supplied Fortran compiler add-on. To get more information, please refer to lawn 270.
-
You will get step by steps procedures Easy Windows Build.
GIT Access
The LAPACK GIT (http://github.com/Reference-LAPACK/lapack) repository is open for read-only for our users.
Please use our link:http://github.com/Reference-LAPACK/lapack[*LAPACK development repository*] to get the latest bug fixed, submit issues or pull requests.
Support
Do not forget to check our GitHub repository for Current and Fixed issues and Improvements
Contributors
LAPACK is a community-wide effort.LAPACK relies on many contributors, and we would like to acknowledge their outstanding work. Here is the list of LAPACK contributors since 1992.
If you are wishing to contribute, please have a look at the LAPACK Program Style. This document has been written to facilitate contributions to LAPACK by documenting their design and implementation guidelines.
LAPACK Project Software Grant and Corporate Contributor License Agreement (“Agreement”) [Download]
Contributions are always welcome and can be sent to the LAPACK team.
Documentation
Release Notes
The LAPACK Release Notes contain the history of the modifications made to the LAPACK library between each new version.
Improvements and Bugs
LAPACK is a currently active project, we are striving to bring new improvements and new algorithms on a regular basis. Here is the list of the improvement since LAPACK 3.0.
Please contribute to our wishlist if you feel some functionality or algorithms are missing by emailing the LAPACK team.
Here is the list (corrected, confirmed and to be confirmed) since 3.6.1
Here is the list of the bugs (corrected, confirmed and to be confirmed) between LAPACK 3.0 and LAPACK 3.6.1
FAQ
Consult LAPACK Frequently Asked Questions.
Please contribute to our FAQ if you feel some questions are missing by emailing the LAPACK team.
The LAPACK User Forum is also a good source to find answers.
Browse, Download LAPACK routines with on-line documentation browser
Here you will be able to browse through the many LAPACK functions, and also download individual routine plus its dependency.
To access a routine, either use the search functionality or go through the different modules.
Users' Guide
Manpages
Please follow the instructions of the README to install the LAPACK manpages on your machine.
The LAPACK team would like to thank Sylvestre Ledru for helping us maintain those manpages and Albert from the Doxygen team.
LAWNS: LAPACK Working Notes
Release History
Version 1.0 : February 29, 1992
-
Revised, Version 1.0a: June 30, 1992
-
Revised, Version 1.0b: October 31, 1992
-
Revised, Version 1.1: March 31, 1993
Version 2.0: September 30, 1994
Version 3.0: June 30, 1999
-
Update, Version 3.0: October 31, 1999
-
Update, Version 3.0: May 31, 2000
Version 3.1.0: November 12, 2006
-
Version 3.1.1: February 26, 2007
Version 3.2: November 18, 2008
-
Version 3.2.1: April 17, 2009
-
Version 3.2.2: June 30, 2010
Version 3.3.0: November 14, 2010
-
Version 3.3.1: April 18, 2011
Version 3.4.0: November 11, 2011
-
Version 3.4.1: April 20, 2012
-
Version 3.4.2: September 25, 2012
Version 3.5.0: November 19, 2013
Version 3.6.0: November 15, 2015
-
Version 3.6.1: June 18, 2016
Version 3.7.0: December 24, 2016
-
Version 3.7.1: June 25 2017
Version 3.8.0: November 17, 2017
Version 3.9.0: November 21, 2019
-
Version 3.9.1: April 1, 2021
Version 3.10.0: June 28, 2021
-
Version 3.10.1: April 12, 2022
Version 3.11.0: November 11, 2022
Previous Release
LAPACK, version 3.11.0
-
Download: lapack-3.11.0.tar.gz
-
Updated: Nov 11, 2022
LAPACK, version 3.10.1
-
Download: lapack-3.10.01.tar.gz
-
Updated: Apr 12, 2022
LAPACK, version 3.10.0
-
Download: lapack-3.10.0.tar.gz
-
Updated: Jun 28, 2021
LAPACK, version 3.9.1
-
Download: lapack-3.9.1.tar.gz
-
Updated: Apr 1, 2021
LAPACK, version 3.9.0
-
Download: lapack-3.9.0.tar.gz
-
Updated: Nov 21, 2019
LAPACK, version 3.8.0
-
Download: lapack-3.8.0.tar.gz
-
Updated: Nov 12, 2017
LAPACK, version 3.7.1
-
Download: lapack-3.7.1.tgz
-
Updated: June 25, 2017
LAPACK, version 3.7.0
-
Download: lapack-3.7.0.tgz
-
Updated: December 24, 2016
LAPACK, version 3.6.1
-
Download: lapack-3.6.1.tgz
-
Updated: June 18, 2016
LAPACK, version 3.6.0
-
Download: lapack-3.6.0.tgz
-
Updated: November 15, 2015
LAPACK, version 3.5.0
-
Download: lapack-3.5.0.tgz
-
Updated: November 19, 2013
LAPACK, version 3.4.2
-
Download: lapack-3.4.2.tgz
-
Updated: September 25, 2012
LAPACK, version 3.4.1
-
Download: lapack-3.4.1.tgz
-
Updated: April 20, 2012
LAPACK, version 3.4.0
-
Download: lapack-3.4.0.tgz
-
Updated: November 11, 2011
LAPACK, version 3.3.1
-
Download: lapack-3.3.1.tgz
-
Updated: April 18, 2011
LAPACK version 3.3.0
-
Download: lapack-3.3.0.tgz
-
Updated: November 14, 2010
LAPACK version 3.2.2
-
Download: lapack-3.2.2.tgz
-
Updated: June 30, 2010
LAPACK version 3.2.1
-
Download: lapack-3.2.1.tgz
-
Updated: April 17, 2009
LAPACK version 3.2 with CMAKE package
-
Download: lapack-3.2.1-CMAKE.tgz
-
Download: lapack-3.2.1-CMAKE.zip
-
Updated: January 26, 2010
LAPACK version 3.2
-
Download: lapack-3.2.tgz
-
Updated: November 18, 2008
LAPACK version 3.1.1 with manpages and html
-
Download: lapack-3.1.1.tgz
-
Updated: February 26, 2007
LAPACK version 3.1.1
-
Download: lapack-lite-3.1.1.tgz
-
Updated: February 26, 2007
LAPACK version 3.1
-
Download: lapack-lite-3.1.0.tgz
-
Updated: November 12, 2006
LAPACK version 3.0 + UPDATES
-
Download: lapack-3.0.tgz
-
Updated: May 31, 2000
LAPACK UPDATES for version 3.0
-
Download: update.tgz
-
Instructions: cd LAPACK; gunzip -c update.tgz | tar xvf -
-
Updated: May 31, 2000
Vendors LAPACK library
Please report to our FAQ to know the list of the current vendors implementations.
Related Projects
PLASMA
The Parallel Linear Algebra for Scalable Multi-core Architectures (PLASMA) project aims to address the critical and highly disruptive situation that is facing the Linear Algebra and High Performance Computing community due to the introduction of multi-core architectures.
PLASMA’s ultimate goal is to create software frameworks that enable programmers to simplify the process of developing applications that can achieve both high performance and portability across a range of new architectures.
The development of programming models that enforce asynchronous, out of order scheduling of operations is the concept used as the basis for the definition of a scalable yet highly efficient software framework for Computational Linear Algebra applications.
MAGMA
The MAGMA (Matrix Algebra on GPU and Multicore Architectures) project aims to develop a dense linear algebra library similar to LAPACK but for heterogeneous/hybrid architectures, starting with current "Multicore+GPU" systems.
The MAGMA research is based on the idea that, to address the complex challenges of the emerging hybrid environments, optimal software solutions will themselves have to hybridize, combining the strengths of different algorithms within a single framework. Building on this idea, we aim to design linear algebra algorithms and frameworks for hybrid manycore and GPUs systems that can enable applications to fully exploit the power that each of the hybrid components offers.
Related older Projects
LAPACK extensions for high performance linear algebra computations. This version includes support for solving linear systems using LU, Cholesky, and QR matrix factorizations. lapack++ by Roldan Pozo
Subdirectory containing CCI (Call Conversion Interface) for LAPACK/ESSL. See lawn82 for more information.


{% block title %}ChromaQR API | Home{% endblock %}
{% endblock %}
{% block content %}
A traditional QR code allows for a maximum of just 2953 bytes to be encoded, as it only uses black and white colours. I saw an easy upgrade here: why not use the three RGB colour channels separately to triple the storage to 8859 bytes? So that's what ChromaQR does, in the form of a CLI, HTTP API, and Python package.