Class: Aws::AutoScaling::Types::Ebs
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb |
Overview
Describes information used to set up an Amazon EBS volume specified in a block device mapping.
Constant Summary
Instance Attribute Summary
-
#delete_on_termination ⇒ Boolean
rw
Indicates whether the volume is deleted on instance termination.
-
#encrypted ⇒ Boolean
rw
Specifies whether the volume should be encrypted.
-
#iops ⇒ Integer
rw
The number of input/output (I/O) operations per second (IOPS) to provision for the volume.
-
#snapshot_id ⇒ String
rw
The snapshot ID of the volume to use.
-
#throughput ⇒ Integer
rw
The throughput (MiBps) to provision for a
gp3
volume. -
#volume_size ⇒ Integer
rw
The volume size, in GiBs.
-
#volume_type ⇒ String
rw
The volume type.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#delete_on_termination ⇒ Boolean
(rw)
Indicates whether the volume is deleted on instance termination. For
Amazon EC2 Auto Scaling, the default value is true
.
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#encrypted ⇒ Boolean
(rw)
Specifies whether the volume should be encrypted. Encrypted EBS volumes can only be attached to instances that support Amazon EBS encryption. For more information, see Supported instance types. If your AMI uses encrypted volumes, you can also only launch it on supported instance types.
::Aws::KMS
key ID when using a launch configuration.
If you enable encryption by default, the EBS volumes that you create
are always encrypted, either using the Amazon Web Services managed
::Aws::KMS
key or a customer-managed ::Aws::KMS
key, regardless of whether the
snapshot was encrypted.
For more information, see Use Amazon Web Services KMS keys to
encrypt Amazon EBS volumes in the Amazon ::Aws::EC2
Auto Scaling User
Guide.
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#iops ⇒ Integer
(rw)
The number of input/output (I/O) operations per second (IOPS) to
provision for the volume. For gp3
and io1
volumes, this
represents the number of IOPS that are provisioned for the volume.
For gp2
volumes, this represents the baseline performance of the
volume and the rate at which the volume accumulates I/O credits for
bursting.
The following are the supported values for each volume type:
gp3
: 3,000-16,000 IOPSio1
: 100-64,000 IOPS
For io1
volumes, we guarantee 64,000 IOPS only for Instances
built on the Nitro System. Other instance families guarantee
performance up to 32,000 IOPS.
Iops
is supported when the volume type is gp3
or io1
and
required only when the volume type is io1
. (Not used with
standard
, gp2
, st1
, or sc1
volumes.)
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#snapshot_id ⇒ String
(rw)
The snapshot ID of the volume to use.
You must specify either a VolumeSize
or a SnapshotId
.
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#throughput ⇒ Integer
(rw)
The throughput (MiBps) to provision for a gp3
volume.
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#volume_size ⇒ Integer
(rw)
The volume size, in GiBs. The following are the supported volumes sizes for each volume type:
gp2
andgp3
: 1-16,384io1
: 4-16,384st1
andsc1
: 125-16,384standard
: 1-1,024
You must specify either a SnapshotId
or a VolumeSize
. If you
specify both SnapshotId
and VolumeSize
, the volume size must be
equal or greater than the size of the snapshot.
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end
#volume_type ⇒ String
(rw)
The volume type. For more information, see Amazon ::Aws::EBS
volume
types in the Amazon ::Aws::EC2
User Guide for Linux Instances.
Valid values: standard
| io1
| gp2
| st1
| sc1
|
gp3
# File 'gems/aws-sdk-autoscaling/lib/aws-sdk-autoscaling/types.rb', line 2687
class Ebs < Struct.new( :snapshot_id, :volume_size, :volume_type, :delete_on_termination, :iops, :encrypted, :throughput) SENSITIVE = [] include Aws::Structure end


I spent some time thinking about some of the issues that were discussed on this list in the last month, after the first release of Apache JServ 1.0b and after the development pressure was reduced.
It is clear, to me and to others on this list, that Apache JServ 1.0 just barely scratched the potentials of this project in sharing IQ and ideas aiming to fill those gaps the advent of the Java technology on the server world produced.
It is also clear, from different perspectives (users, developers, software engineers, management people), that servers are a big part of the present/future of everyday work and that Java allows the creation of performance oriented, solid and rapid-delivered server solutions. Other languages do not perform as good when all these three "forces" are evaluated together (besides, maybe, SmallTalk, but this is another issue).
Java is trendy, that's true, but we all know that Java is a well-designed object oriented language. May not be the best, I grant that, but it's the only one that came to please all those people I listed above.
Following this direction, and feeling the lack of professional Java server solutions on many fields, the Java Apache Project was created to fill this gap using the power of open source. We don't want to compete with Apache or with any other server implementation. We are betting on Java for the server side, but we will never "rewrite" some server implementation in Java, unless this can lead to significant improvements and doesn't go against other open source projects.
The final goal is a family of 100% pure server solutions for the Java Virtual Machine.
Since server applications share lots of logic/code between them, it is obvious that a common server framework, along with design rules and abstract implementations, would allow faster time-to-market, easier code management, parallel development, bug fix reflection on all projects and tight integration between the different server solutions.
I do believe that the time taken to design and develop such a framework will be "invested" by this project and its developers. The creation of this project doesn't mean other projects can't continue to evolve: the final goal is to integrate existing server solutions (JServ) into the framework but this is not a short term goal so this doesn't influence it's evolution/time-to-market for future releases/features.
For the reasons above, I propose the creation of a new project to handle the design of a the Java Apache Server Framework that will be the foundation on which all server projects hosted by the Java Apache Project will be based on.
This project goals are:
- Design and documentation of the Java Apache Server Framework.
- Creation and implementation of this framework (interfaces, abstract classes, and shared modules).
- Centralized management of the evolution/fixing/patching of both the shared code and the framework design.
It's a design methodology that allows design reuse as well as code reuse between different server projects. These projects gain the advantage of software reuse and the simplicity of developing/managing only the different logic.
This framework will be based on Java technology and would allow:
- Partition of shared logic context into polymorphic modules that are used through their public interfaces and not through their actual implementation (Log systems, Object stores, Virtual File Systems, Configuration repository, Concurrency Strategies, etc..)
- Creation of a common lifecycle for server operations (the Service interface)
- Creation of a ServiceManager for service management (maybe both internal or external the JVM: native wrapping and control via JNI would allow better fault tolerance for the JVM through process separation)
- Shared resources can be either centralized or duplicated for each service, allowing the use of a single JVM for multiple servers and common logic sharing (i.e. common thread pools, log systems and configuration repositories...)
- A central access point for configuration (via HTTP, SMTP, voice, RMI, SNMP, IIOP, depending on the services implemented)
- Reduced effort in service development since they become plugins for this framework and reuse big parts of the code base. The design and behavior is also documented and shared between different services.


When you see or hear the term AI, I am guessing you think it stands for artificial intelligence. It does, of course. But artificial intelligence is not the first thing that comes to mind when I think about AI. For me, AI also refers to aesthetic intelligence.
See full details here!
Product showcase, such as showing your products spinning, usually on a white background gives your customers a look at the entire product from multiple angles and is simple to use with applications like Spin Studio.
See full details here!
You may have already heard about Google Fi (formerly Project Fi) — and you probably already know a lot about it if you have a Google phone. But now there’s more reason to learn about it even if you don’t — Google Fi is now available on ALL unlocked smartphones.
See full details here!On November 21, Xiaomi ecological chain released a MITU building block engineering crane. It is the second product in the "engineering series" of MITU building blocks family. It adopts 1:16 ratio and perfectly restores the details of engineering crane in reality through a large number of dynamic mechanical structures. The details like pulley block design and 360 degree rotation control make the engineering crane have much variety in game play. The Xiaomi MITU building block engineering crane is composed of 750 pieces of building blocks. A large number of dynamic mechanical structures are truly restored at 1:16. this set of MITU engineering crane also provides two official models. Despite the crane model, it also provides another engineering forklift model.
See full details here!Cars have become an indispensable transportation for us. You may go travelling by car on weekends or holiday, and use your smartphone for navigation. However, the most embarrassing thing is that your smartphone is running out of power.
See full details here!We can’t get enough of Xiaomi gadgets this week – and this week we are taking a look at one of the company’s latest portable Bluetooth speakers with an overly complicated name but a simple and compact design – the MDZ-ZB-DE Bluetooth speaker.The speaker sports one touch AI activation: you just need to short or long press the button at the bottom of the device to activate the AI assistant. Then, you will be able to ask the speaker simple questions (weather, movie times, etc.) or send commands to send messages or make calls. With that, priced at just $12.99, Xiaomi's portable speaker is easy to recommend as an audio accessory for a whole variety of situations: bring it along on a picnic, use it for a conference call, enhance your car audio and more. However, the one obvious drawback we've mentioned earlier is that there is no English language support.
See full details here!The fundamentals of eCommerce are simplepurchase or create a product and sell it online. It’s the nagging administrative hassles that aren’t quite so easy to handle. And of those, the administrative detail that gives online sellers the most trouble is sales tax. This guide will provide online sellers with an overview of everything you need to know about sales tax.
See full details here!Recently, a small wireless Bluetooth headset appeared on the FCC (Federal Communications Commission) certification official website, the product name is MI True Wireless Earphonessmall Mizhen wireless headset. It is reported that the net weight of this product is 58g, and the headset itself lasts about 3 hours. According to the exposure pictures on the website, the headset is designed with the same "real wireless" design as Apple AirPods, with a long handle under the headset and a charging box for storage and charging. The difference is that this headset is ear-in design, with a dual microphone, one of which is a noise-reducing microphone.
See full details here!


Veteran
Veteran
Clinician
Assessment Start Date
Location
SNN-4
Program
Duration
Progress
Alert
Status
Pittman, James
04/12/2014
13:50:18
La Jolla
0089
57m:18s
100%
Schwarz, Natasha
04/12/2014
13:50:18
La Jolla
0008
57m:18s
100%
Schwarz, Natasha
04/12/2014
13:50:18
La Jolla
0008
57m:18s
100%
Schwarz, Natasha
04/12/2014
13:50:18
La Jolla
2345
57m:18s
100%
Schwarz, Natasha
04/12/2014
13:50:18
La Jolla
3456
57m:18s
100%
5 Items fouond, Displaying all items.
Filter by location
5 Items fouond, Displaying all items.
A/V Hallucination
1
2
3
4
First
Previous
Next
Last
5
Marked for upload
CSRA Required
SI Present
Imminent Risk
Aggressive Behavior
PTSD Follow-up
DX/TX Present
A/V Hallucination
Deleted
A/V Hallucination
A/V Hallucination
Deleted
Deleted
Deleted
Dashboard
U.S. Department of Veterans Affairs | eScreening Health Assessment (Ver 1.0)
Help
Welcome Last Name, First Name | Logout
* This wireframe provide the workflow, the structure, and the interaction between some specific pages and sections in the eScreening project and it's covered all the interaction between the application features and behaviours.
* Some of the interaction between pages may require using a specific rules and steps in order to demonstrate.
* This wireframe still in progress.
IMPORTANT NOTE - Click to Expand


Signaling Project - Line 3 extension, starting from Noida City Centre to Noida Electronic City
CS-10 map


Event will focus on living through trauma and abuse
by Michael StewardInspiring personal stories of how people have recovered following trauma and abuse will be heard at a special event in Suffolk.
Emerging Proud Through Trauma and Abuse will be held at the Friends Meeting House, St John's Street, Bury St Edmunds on Monday, November 25, between 10am and 1pm.
The event is being hosted by Suffolk User Forum (SUF) - a charity which supports people with mental health and emotional well-being issues.
Jayne Stevens, SUF manager, said: "This event is the last in a series of successful events that have taken events taking place in Suffolk this year to help people suffering with all kinds of distress.
"The event in Bury St Edmunds focuses on living through trauma and abuse. There is sound evidence to indicate all those suffering from distress benefit from listening to personal recovery stories.
"This method leads to people feeling less alone and validates that their distress can be a transient part of their life and not their destination.
"Joining others in authentic sharing can make people feel connected to each other giving them hope and inspiration, this is the beauty of sacred space sharing.
"Of course people who attend do not have to talk they can simply listen to others and their stories of recovery."
Prior to the event attendees will receive some gentle guidelines which will be explained to ensure the space is safe, confidential and equal to all. All attendees will also be given information to the relevant support services available to them in their area.
To book a place at the free event call Chloe at SUF on 01473 907087 or email admin@suffolkuserforum.co.uk


Rare Lion Cub Mummies Revealed in The Latest Treasure Haul at Egypt's Saqqara
by AFPEgypt on Saturday unveiled a cache of 75 wooden and bronze statues and five lion cub mummies decorated with hieroglyphics at the Saqqara necropolis near the Giza pyramids in Cairo.
Mummified cats, cobras and crocodiles and scarabs were also unearthed among the well-preserved mummies and other objects discovered recently.
The Antiquities Ministry announced the find at the foot of the Bastet Temple, dedicated to the worship of cats among ancient Egyptians, in the vast necropolis.
Antiquities Minister Khaled El-Enany described the discovery as "a (whole) museum by itself".
He said initial archaeological studies showed that five of the mummies are lion cubs.
Other artifacts uncovered in the dig included statues of an Apis bull, a mongoose, an ibis, a falcon and the ancient Egyptian god Anubis in animal form.
The artifacts belong to the 26th Dynasty which dates back to the seventh century BCE, Enany said.
The trove also boasts a collection of ancient Egyptian deities in the form of 73 bronze statuettes depicting the god Osiris, six wooden statues of Ptah-Soker and 11 statues of Sekhmet, the warrior goddess of healing.
Egypt has sought to promote its unique heritage as a way to revive its vital tourism sector, which has been badly hit by political insecurity and attacks.
However, critics say archaeological sites and museums suffer from negligence and poor management.
© Agence France-Presse


cape cod mass condos - Extensions
Hyannis Condos For Sale Trulia.com Find Condos For Sale in Hyannis. Search Hyannis, Massachusetts real estate, recently sold properties, foreclosures, new . Cape Cod Real Estate Serv
http://www.trulia.com/for_sale/Hyannis,MA/CONDO_type/
You can develop your own extensions
using the independence missouri scooter laws.
Syntax-Highlighting Addons
Cape Cod Condos for Sale - Condo.com Search for Cape Cod condos for sale and Cape Cod real estate for sale on Condo.com. http://www.condo.com/ForSale/United-States/Massachusetts/Barnstable-Town
Cape Cod Waterfront Condos | Cape Cod Real Estate Waterfront 44 listings . Come explore waterfront condos for sale in Outer Cape Cod with Atlantic Bay . Cape Cod MA Beach Shore . 963 Commercial St , Provincetown MA . http://atlanticbaysir.com/cape-cod-real-estate/waterfront-condos-for-sale/ in one installer (526 kb).
A simple JavaScript Formatter (47kb)Cape Cod Condominiums View Mid-Cape Condominiums · View Mashpee Condominiums. News for Cape Cod and Massachusetts. Cape Cod Online (the online version of the Cape Cod . http://www.capecodcondominiums.com/
Ocean Edge Condos | Brewster Resort | Sales and Rentals Condo Sales and Rentals at Ocean Edge in Brewster with Leighton Realty. Providing real estate services in this Cape Cod resort. http://www.leightonrealty.com/ocean-edge.asp CertMaker for iOS and Android
Ocean Club On Smugglers' Beach (Cape Cod/South Yarmouth, MA ... Ocean Club On Smugglers' Beach, Cape Cod: See 83 traveler reviews, 40 candid . Ocean Club On Smugglers' Beach Condominium, Cape Cod/South Yarmouth, MA . 329 South Shore Drive, Cape Cod, South Yarmouth, MA 02664- 5863 . http://www.tripadvisor.com/Hotel_Review-g41841-d250211-Reviews-Ocean_Club_On_Smugglers_Beach-South_Yarmouth_Cape_Cod_Massachusetts.html
Windows 8 AppContainer Loopback Utility
Dennisport Cape Cod Oceanside Condos - Affordable Cape Cod ... Cape Cod complex at the beach welcomes children. Offers site photos, rates and contact form. http://www.oceansidecondominiums.com/ Download
Now (60kb) or
map of russia's regions
Traffic Differ
Riverview Resort on Cape Cod (South Yarmouth, MA ... - TripAdvisor Riverview Resort on Cape Cod Condominium, South Yarmouth, MA. Home · South Yarmouth . on Cape Cod. 37 Neptune Lane, South Yarmouth, MA 02664 . http://www.tripadvisor.com/Hotel_Review-g41841-d94047-Reviews-Riverview_Resort_on_Cape_Cod-South_Yarmouth_Cape_Cod_Massachusetts.html Download now (47kb).
SAZ Clipboard
Cape Cod Rentals, Cottages, Condos and Beachfront Vacation ... 138 matches . Cape Cod Rentals, Cottages, Condos and Beachfront Vacation Rentals in Cape Cod MA. VirtualCapeCod - the best source for Cape Cod vacation . http://www.virtualcapecod.com/vacation-rentals-homes,vcc.asp
Gallery
The Gallery extension (50kb) Yachtsman Condominium Rentals The Yachtsman is a Cape Cod beachfront condominium community located in Hyannis, MA. This complex is overlooking Lewis Bay and Nantucket Sound with . http://www.yachtsmancondo.com/
Leighton Realty: Cape Cod Real Estate | Homes For Sale View Cape Cod Homes for sale, Ocean Edge condos and Vacation Rentals. . is a 65 mile peninsula in the eastern most portion of the state of Massachusetts. http://www.leightonrealty.com/
AnyWHERE (sample)
The AnyWHERE extension (40kb) Ocean Edge Brewster: Cape Cod Condos - Ocean Edge Rentals ... Cape Cod Condos at Ocean Edge in Brewster. . Brewster Massachusetts is situated far enough on Cape Cod to be free from the hustle and bustle of the fast . http://oceanedge.net/
RulesTab (sample)
Cape Cod Condominium | HOA | Condo Association Condominiums on Cape Cod are popular to purchase. . You can browse all the condos that are for sale on Cape Cod below. . Provincetown MA 02657 . http://www.oncaperealestate.com/home/cape-cod-condominiums/
Privacy Scanner
The Privacy Scanner
(41kb) Falmouth Vacation Rental condo in Cape Cod MA 02540, !! Directly ... Falmouth summer vacation rental condo in Cape Cod. Directly on Falmouth Heights Beach. Casino Wharf Condominium. http://www.weneedavacation.com/Cape-Cod/Falmouth-Vacation-Rental-17070/
Content-Blocking (sample)
The Content Blocker
sample (11kb) Cape Cod Beach Condominiums - FlipKey Rent Cape Cod Beach Condominiums from Sharon Frisby Vacation Rentals: See large . Captain Alexander's Hide-a-way West Harwich MA in West Harwich . http://www.flipkey.com/hyannis-condo-rentals/p181446/
Image-Flipper (sample)
The Image
Flipper sample (6kb) Mercantile Property Mgmt Corp - Company Profile Mercantile Property Management Corporation (MPM) is one of Southeastern Massachusetts and Cape Cod's largest condominium management companies. http://www.mercantileproperty.com/mercantile/sub_category_list.asp?category=12&title=Company+Profile
3rd-Party Extensions
Brewster Vacation Rental - VRBO 177310 - 3 BR Cape Cod Condo ... Location: Brewster, Cape Cod, Massachusetts, USA (60 Miles from Boston, MA) View Map. Accommodations: Condo, 3 Bedrooms, 2 Baths (Sleeps 6). WE KEEP . http://www.vrbo.com/177310
Hyannis Vacation Rental - VRBO 6409 - 3 BR Cape Cod Condo in ... Location: Hyannis, Cape Cod, Massachusetts, USA (On Nantucket Sound, near Kennedy Memorial and Hyannis Center) View Map. Accommodations: Condo, 3 . http://www.vrbo.com/6409
neXpert Performance Report Generator
Cape Cod Vacation Rental - weekly home and condo rentals ... Cape Codder Residence Club - One, Two and Three Bedroom Rentals available . come stay in our luxury residences for your next family vacation on Cape Cod. . Cape Codder Resort & Spa 1225 Iyannough Road Hyannis, MA 02601 . http://www.capecodderresort.com/cape-cod-vacation-rental.php
StresStimulus
Condos For Sale at Ocean Edge , Brewster Cape Cod Condos for sale at Ocean Edge in Brewster on Cape Cod. . Located right on the Cape Cod Bay in the historic sea captains' town of Brewster, MA, Ocean Edge . http://oceanedge.net/condos_for_sale.htm
Watcher - Passive Security Auditor
North Truro Vacation Rental - VRBO 33546 - 0 BR Cape Cod Condo ... Location: North Truro, Cape Cod, Massachusetts, USA (Short Trip to Provincetown or Wellfleet or the Beach!) Accommodations: Condo, Studio, 1 Bath (Sleeps 4) . http://www.vrbo.com/33546
cape cod / islands real estate - all classifieds - craigslist (MLS Properties)?? (Centerville Ma) pic broker · ??Harwich homes buyers needed (Harwich Cape Cod) pic broker · Office/Retail Condominium $11 / 2000ft² . http://capecod.craigslist.org/rea/
Ammonite - Security Scanner
The Yachtsman Condominiums Rentals (Hyannis, Cape Cod, MA ... The Yachtsman Condominiums Rentals, Hyannis: See traveler reviews, 12 candid photos, and great deals for The Yachtsman Condominiums Rentals, ranked . http://www.tripadvisor.com/Hotel_Review-g41623-d1227328-Reviews-The_Yachtsman_Condominiums_Rentals-Hyannis_Cape_Cod_Massachusetts.html
falloutboy from under the cork tree
x5s - Automated XSS Security Testing AssistantVacation Condos for Sale, Cape Cod, MA | The Big Fisherman Vacation condos for sale in Cape Cod, Massachusetts. http://www.thebigfisherman.com/vacation-condos-for-sale.shtml
- Detecting where safe encodings were not applied to emitted
user-inputs
- Detecting where Unicode character transformations might bypass
security filters
- Detecting where non-shortest UTF-8 encodings might bypass security
filters
scooby doo addams familly
intruder21
Falmouthport, a Cape Cod Community in Falmouth, Massachusetts Falmouthport, Cape Cod is a village of condominium homes in a peaceful environment, bordered on one side by Great Pond. Falmouthport residents enjoy 2.5 . http://www.falmouthport.com/
chaya chaya chaya chaya
HTML Inspector
Finding homes in Falmouth MA Real Estate, Mashpee MA Real ... finding homes in Falmouth MA Real Estate, Mashpee MA Real Estate, Bourne . The only all-condo website on Cape Cod with all the information that you will . http://www.steveclaycapecod.com/
Luxury Cape Cod Condo Across from Craigville Beach - VRBO.com Sep 25, 2012 . Location: Centerville, Cape Cod, Massachusetts, USA View Map. Accommodations: Condo, 3 Bedrooms + Convertible bed(s), 2.5 Baths . http://www.vrbo.com/418369
WCF Binary-Encoded Message Inspector
Oak Run Condos | Dennis MA Cape Cod Condominiums View detailed condominium info, videos and picture of Oak Run condos in Dennis MA on Cape Cod. http://www.cape-cod-condos.com/CondoComplex/Oak-Run
Chad Sowald's Request-To-Code
Crockers Neck Condos | Dennis MA Cape Cod Condominiums View detailed condominium info, videos and picture of Crockers Neck condos in Dennis MA on Cape Cod. http://www.cape-cod-condos.com/CondoComplex/Crockers-Neck
Eyal's Extensions
- dysfunctional care bear test has written two extensions:
Thomas Deml's Export WCAT Script extension
Southpoint Condos | Sandwich MA Cape Cod Condominiums View detailed condominium info, videos and picture of Southpoint condos in Sandwich MA on Cape Cod. http://www.cape-cod-condos.com/CondoComplex/Southpoint-SA
Per-Response Latency Extension
Brewster Green Resort (MA - Cape Cod) - Condominium Reviews ... Brewster Green Resort, Brewster: See 30 traveler reviews, 5 candid photos, and great deals for Brewster Green Resort, ranked #3 of 6 specialty lodging in . http://www.tripadvisor.com/Hotel_Review-g41476-d89630-Reviews-Brewster_Green_Resort-Brewster_Cape_Cod_Massachusetts.html
WPAD Server
Colonial Acres Resort (West Yarmouth, Cape Cod, MA ... - TripAdvisor Colonial Acres Resort Condominium, West Yarmouth, Cape Cod, MA. Home · West Yarmouth . 114 Standish Way, West Yarmouth, MA 02673. Hotel amenities . http://www.tripadvisor.com/Hotel_Review-g41922-d93987-Reviews-Colonial_Acres_Resort-West_Yarmouth_Cape_Cod_Massachusetts.html
XML Request InspectorOcean Edge Condos | Brewster MA Cape Cod Condominiums View detailed condominium info, videos and picture of Ocean Edge condos in Brewster MA on Cape Cod. http://www.cape-cod-condos.com/CondoComplex/Ocean-Edge XML DataSet InspectorSummerset Condos | Orleans MA Cape Cod Condominiums View detailed condominium info, videos and picture of Summerset condos in Orleans MA on Cape Cod. http://www.cape-cod-condos.com/CondoComplex/Summerset
©2013 Telerik
|


I am an aspiring developer from Cairo and kickstarted my career with a full stack development program at columbia university. I've always want to focus my efforts on improving the quality of life at my home country and technology's is limitlessness will be at the forefront.
As the name describes, this project is a fun little trivia game that generates random video game related trivia questions from an open API. The API allows for more themes and difficulty levels. Look out for updates!
Your favorite childhood game with a Star Wars themed twist.
A fun math based game that requires you to reach the target number by clicking on the crystals
A train scheduling application made using Bootstrap and JS
Generate some exciting gifs from the existing buttons or create your own for more specific gifs


public interface ServiceSession
| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
getAttribute(java.lang.String name)
Returns the object bound with the specified name in this session, or
null if no object is bound under the name. |
java.util.Iterator<java.lang.String> |
getAttributeNames()
Returns an
Enumeration of String objects
containing the names of all the objects bound to this session. |
long |
getLastAccessedTime()
Returns the last time the requestor sent a request associated with this
session, as the number of milliseconds since midnight January 1, 1970
GMT, and marked by the time the container received the request.
|
int |
getMaxInactiveInterval()
Returns the maximum time interval, in seconds, that the service provider
will keep this session open between requestor accesses.
|
void |
invalidate()
Invalidates this session then unbinds any objects bound to it.
|
boolean |
isNew()
Returns
true if the caller does not yet know about the
session or if the requestor chooses not to join the session. |
void |
removeAttribute(java.lang.String name)
Removes the object bound with the specified name from this session.
|
void |
setAttribute(java.lang.String name,
java.lang.Object value)
Binds an object to this session, using the name specified.
|
void |
setMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the
service provider will invalidate this session.
|
long getLastAccessedTime() throws ContextException
Actions that your application takes, such as getting or setting a value associated with the session, do not affect the access time.
long
representing the last time the client sent a
request associated with this session, expressed in milliseconds
since 1/1/1970 GMTContextException
- if this method is called on an invalidated sessionvoid setMaxInactiveInterval(int interval)
interval
- An integer specifying the number of secondsint getMaxInactiveInterval()
setMaxInactiveInterval
method.
A zero or negative time indicates that the session should never timeout.setMaxInactiveInterval(int)
java.lang.Object getAttribute(java.lang.String name) throws ContextException
null
if no object is bound under the name.name
- a string specifying the name of the objectContextException
- if this method is called on an invalidated sessionjava.util.Iterator<java.lang.String> getAttributeNames() throws ContextException
Enumeration
of String
objects
containing the names of all the objects bound to this session.Enumeration
of String
objects
specifying the names of all the objects bound to this sessionContextException
- if this method is called on an invalidated sessionvoid setAttribute(java.lang.String name, java.lang.Object value) throws ContextException
After this method executes, and if the new object implements
net.jini.core.event.RemoteEventListener
, the provider calls
net.jini.core.event.RemoteEventListener.notify
. The requestor then
notifies any related provider in the service federation.
If an object was already bound to this session of this name that
implements net.jini.core.event.RemoteEventListener
, its
ProviderSessionBindingListener.valueUnbound
method is called
to indicate the unbound value of this session.
If the value passed in is null, this has the same effect as calling
removeAttribute()
.
name
- the name to which the object is bound; cannot be nullvalue
- the object to be boundContextException
- if this method is called on an invalidated sessionvoid removeAttribute(java.lang.String name) throws ContextException
After this method executes, and if the object implements
net.jini.core.event.RemoteEventListener
, the provider calls
net.jini.core.event.RemoteEventListener.notify/code>. The container then
notifies any related service in the exerting federation to indicate the unbound
value of this session.
name
- the name of the object to remove from this sessionContextException
- if this method is called on an invalidated sessionvoid invalidate()
boolean isNew()
true
if the caller does not yet know about the
session or if the requestor chooses not to join the session. For example, if
the requestor had disabled the session then a session would be new on each request.true
if the server has created a session, but the
client has not yet joined


| BooleanProperty | Boolean Property. |
| CountryProperty | Country Property. |
| DateProperty | Date Property. |
| DatetimeProperty | Datetime Property. |
| DecimalProperty | Decimal Property. |
| EmailProperty | Email Property. |
| EntityProperty | Entity Property. |
| FileProperty | File Property. |
| IntegerProperty | Integer Property. |
| PasswordProperty | Password Property. |
| StringProperty | String Property. |
| TextProperty | Text Property. |


Creator Basic
- Single User
- Create up to 5 Channels
- Single Admin
- Basic Statistics
- 3 Customizable themes
- Learn more
Creator Pro
- Up to 30 users
- Create up to 30 Channels
- Up to 5 Admin
- E-Mail Support
- Advanced Statistics
- 10 customizable themes
- Learn more
Enterprise
- Unlimited Users
- Unlimited Channels
- Unlimited Admins
- Deep Statistics
- 24/7 Support by phone
- 100+ customizable themes
- Use your own themes
- APIs and integration options
- Learn more


Welcome to Pat’s Salmon Cookies
Sales page
Seattle
Tokyo
Dubai
Paris
Lima
Our Opening Hours: 6am Until 7pm


Choose a plot to begin
Choose a category to review or add observations
Plants
Animals
Soil/Water
Weather
When you are finished with your observations for this plot, click "done"
Choose a category for your new observation
Category: Plants
Subcategory:
Title:
Surface cover:
Note:
Observation made by:
Category: Animals
Count:
Category: Soil/Water
Soil color:
Texture:
Organics:
Water:
Water level:
Category: Weather
Conditions:


[]
of a character class.
Although unescaped opening curly braces {
outside of character classes are allowed in some dialects (JavaScript, Python, and so on),
it can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters.
For this reason the inspection does not report escaped opening curly braces.
Example:
\-\;[\.]
After the quick-fix is applied:
-;[.]
The Ignore escaped closing brackets '}' and ']' option specifies whether to report \}
and \]
outside of a character class
when they are allowed to be unescaped by the RegExp dialect.
New in 2017.3


These are the dedicated men and women who will lead the charge!
Darrell Mitchell
Board President
Hello. My name is Darrell Mitchell. I have been married to my wife, Helen, for over fifty-one years. We have three children, Mark, Monica, and Adam. We have eleven grandchildren. I graduated from Valley High School and the University of Louisville.
I came to saving faith in the Lord Jesus in 1976, and was called into the ministry in 1978. I have served as the lead pastor in two churches and as associate pastor in several other churches. I have also served as interim pastor in several churches, and I am an elder in Cedar Grove Baptist Church. It is my honor to serve as president of the school board at Cedar Grove Christian Academy.
We at Cedar Grove Baptist Church believe that Christian education is essential for the preservation of our our Christian heritage and a future that honors The God of Scripture. The very best way to do that is to “bring up the children in the nurture and admonition of the Lord” (Ephesians 6:4).
To the God of all glory be praise now and forever!
Ralph Brothers
Board Vice-President
My name is Ralph Brothers. I’m a father of 2 and grandfather of 4. I'm also a retired business professional and small business owner. I retired from Chesapeake Packaging 23 years ago. During my 36 year career with Chesapeake, I was advanced from the manufacturing floor to their top-rated sales professional. I became a Christian at the age of 16 and credit both my personal and professional success to my strong faith in Christ.
I've been married to my wife Joyce for 59 years. We started our married life in the small town of Willisburg, KY but soon moved to Louisville and joined the congregation of Highview Baptist Church. My wife and I were devoted members for over 12 years. During that time I served as a deacon of the church, a member of the bus ministry, and was also a founding member of their school, Highview Christian School(now known as Whitfield Academy).
In 1978, my wife and I made the decision to move our family to Shepherdsville, KY, and join the congregation of Cedar Grove Baptist Church. Over the past 45 years, I have faithfully served as a deacon of the church as well as in several other leadership roles. I am honored to have the opportunity to serve on the board of Cedar Grove Christian Academy and be a founding member of another faith-based learning institution. With God's guidance, we will provide a safe and loving Christian environment for children to learn, grow, and thrive.
David Nuckolls
Board Treasurer
Hello. My name is David Nuckolls. I have been married to my wife, Allison, for 17 years. I am both honored and humbled to serve as a founding member of the board of Cedar Grove Christian Academy.
I began serving Christ at the age of 26, and look for opportunities to serve Him more and share the Gospel of Hope to whomever will listen. My wife and I are both active members at Cedar Gove Baptist Church, since moving into Shepherdsville five years ago. I have been a software engineer for more than 30 years, and am constantly looking for ways to leverage technology to further the Kingdom of Christ. I am extremely passionate about using technology in the service of our King!
Our mission here at Cedar Grove Christian Academy is to not only educate young students, but to help them develop a solid foundation that God can build upon. This not only gives them the tools, skills, and knowledge; but will train them to be the servant leaders we need.
Monica Thomas
Board Secretary
Hello! My name is Monica Thomas and I am so humbled to serve as a founding board member of Cedar Grove Christian Academy.
I have been a follower of Christ since around the age of 14 and by God’s grace have been married to my husband, Byron, for 23 years. We have three children; Lindsey, Brennan and Mason. I am a native of Bullitt County but have lived in Louisville since 2015, in part, to provide a Christian education for our children. Most of my family still lives in Bullitt County and I have many ties to this community. Christian education and a biblical worldview are paramount to raising a generation of people with conviction for the truth of God’s Word, the beauty of God’s creation, the understanding of God and Man, and the hope we have in Jesus Christ.
We hope to come alongside your family and church to educate your child with excellence and academic rigor and to serve the people of Bullitt County and beyond as a mission of Cedar Grove Baptist Church.


Police Recorded Crime Data Visualiser
Select Time Period
6-2013
Select Region
Please select a region...
East Midlands
East Of England
London
North East
North West
South East
South West
West Midlands
Yorkshire And Humber
Wales
You must have a modern browser that supports HTMTL5 canvas to view the chart.


| | |
- TestCase(object)
-
- SimpleParseGrammarTests
-
- SimpleParseRecursiveTests
class SimpleParseGrammarTests(TestCase) |
| |
Test parsing of the the simpleparse grammar elements |
| |
- Method resolution order:
- SimpleParseGrammarTests
- TestCase
- object
Methods defined here:
- doBasicTest(self, parserName, testValue, expected)
- testChar1(self)
- testChar2(self)
- testChar3(self)
- testChar4(self)
- testChar5(self)
- testChar6(self)
- testChar7(self)
- testChar8(self)
- testChar85(self)
- testChar9(self)
- testCharNoBrace1(self)
- testCharRange1(self)
- testComment1(self)
- testComment2(self)
- testCutToken2(self)
- testCutToken3(self)
- testCutToken4(self)
- testDeclaration(self)
- testDeclaration2(self)
- testDeclaration3(self)
- testDeclaration4(self)
- testDeclaration5(self)
- testDeclarationSet1(self)
- testDeclarationSet2(self)
- Just tries to parse and sees that everything was parsed, doesn't predict the result
- testElementToken1(self)
- testElementToken2(self)
- testElementToken3(self)
- testElementToken4(self)
- testElementToken5(self)
- testElementToken6(self)
- Lookahead indicator with positive
- testElementToken7(self)
- Lookahead indicator with negative
- testElementToken8(self)
- Error on fail indicator
- testElementToken9(self)
- Error on fail indicator with message
- testErrorOnFailFlag1(self)
- testExpandedName1(self)
- testExpandedName2(self)
- testFOGroup1(self)
- testGroup1(self)
- testGroup2(self)
- testGroup3(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup4(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup5(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup6(self)
- Test group with multiple / 'd values
- testLiteral1(self)
- testLiteral2(self)
- testLiteral3(self)
- testLiteral4(self)
- testLiteral5(self)
- testLiteral6(self)
- testLiteralDecorator(self)
- testLiteralDecorator2(self)
- testLiteralDecorator3(self)
- Decorator must be right next to literal, no whitespace
- testLookAheadIndicator1(self)
- testLookAheadIndicator2(self)
- testName1(self)
- testName2(self)
- testName3(self)
- testNegposIndicator1(self)
- testNegposIndicator2(self)
- testOccurenceIndicator1(self)
- testOccurenceIndicator2(self)
- testOccurenceIndicator3(self)
- testOccurenceIndicator4(self)
- testOccurenceIndicator5(self)
- testRange1(self)
- testRange2(self)
- testRange3(self)
- testRange4(self)
- Test optional repeating children running into eof
Original SimpleParse had a major failure here,
system hung trying to parse the [] string. Basically,
there was no check for EOF during a repeating-item
parse (save for literals and character sets), so you
wound up with infinite loops.
- testRange5(self)
- Test optional repeating children with no termination
Original SimpleParse had a major failure here,
system hung trying to parse the [] string. Basically,
there was no check for EOF during a repeating-item
parse (save for literals and character sets), so you
wound up with infinite loops.
- testSEQGroup1(self)
- testSEQToken1(self)
- testSeqGroup2(self)
- testUnreportedName1(self)
- testUnreportedName2(self)
- testWhitespace1(self)
- testWhitespace2(self)
- testWhitespace3(self)
- testWhitespace4(self)
- testWhitespace5(self)
- Bug in 2.0.0 where Null comments such as:
"#
"
didn't parse.
Methods inherited from TestCase:
- __call__(self, *args, **kwds)
- __init__(self, methodName='runTest')
- Create an instance of the class that will use the named test
method when executed. Raises a ValueError if the instance does
not have a method with the specified name.
- __repr__(self)
- __str__(self)
- assertAlmostEqual = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertAlmostEquals = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertEqual = failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- assertEquals = failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- assertFalse = failIf(self, expr, msg=None)
- Fail the test if the expression is true.
- assertNotAlmostEqual = failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertNotAlmostEquals = failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertNotEqual = failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- assertNotEquals = failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- assertRaises = failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
- Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
- assertTrue = failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- assert_ = failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- countTestCases(self)
- debug(self)
- Run the test without collecting errors in a TestResult
- defaultTestResult(self)
- fail(self, msg=None)
- Fail immediately, with the given message.
- failIf(self, expr, msg=None)
- Fail the test if the expression is true.
- failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
- Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
- id(self)
- run(self, result=None)
- setUp(self)
- Hook method for setting up the test fixture before exercising it.
- shortDescription(self)
- Returns a one-line description of the test, or None if no
description has been provided.
The default implementation of this method returns the first line of
the specified test method's docstring.
- tearDown(self)
- Hook method for deconstructing the test fixture after testing it.
Data and other attributes inherited from TestCase:
- __dict__ = <dictproxy object>
- dictionary for instance variables (if defined)
- __weakref__ = <attribute '__weakref__' of 'TestCase' objects>
- list of weak references to the object (if defined)
- failureException = <class exceptions.AssertionError>
- Assertion failed.
|
class SimpleParseRecursiveTests(SimpleParseGrammarTests) |
| |
Test parsing of grammar elements with generated version of simpleparse grammar |
| |
- Method resolution order:
- SimpleParseRecursiveTests
- SimpleParseGrammarTests
- TestCase
- object
Methods defined here:
- doBasicTest(self, parserName, testValue, expected)
Methods inherited from SimpleParseGrammarTests:
- testChar1(self)
- testChar2(self)
- testChar3(self)
- testChar4(self)
- testChar5(self)
- testChar6(self)
- testChar7(self)
- testChar8(self)
- testChar85(self)
- testChar9(self)
- testCharNoBrace1(self)
- testCharRange1(self)
- testComment1(self)
- testComment2(self)
- testCutToken2(self)
- testCutToken3(self)
- testCutToken4(self)
- testDeclaration(self)
- testDeclaration2(self)
- testDeclaration3(self)
- testDeclaration4(self)
- testDeclaration5(self)
- testDeclarationSet1(self)
- testDeclarationSet2(self)
- Just tries to parse and sees that everything was parsed, doesn't predict the result
- testElementToken1(self)
- testElementToken2(self)
- testElementToken3(self)
- testElementToken4(self)
- testElementToken5(self)
- testElementToken6(self)
- Lookahead indicator with positive
- testElementToken7(self)
- Lookahead indicator with negative
- testElementToken8(self)
- Error on fail indicator
- testElementToken9(self)
- Error on fail indicator with message
- testErrorOnFailFlag1(self)
- testExpandedName1(self)
- testExpandedName2(self)
- testFOGroup1(self)
- testGroup1(self)
- testGroup2(self)
- testGroup3(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup4(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup5(self)
- Test group with sequential added group
Note that this test also serves to test
the function of non-reporting names
- testGroup6(self)
- Test group with multiple / 'd values
- testLiteral1(self)
- testLiteral2(self)
- testLiteral3(self)
- testLiteral4(self)
- testLiteral5(self)
- testLiteral6(self)
- testLiteralDecorator(self)
- testLiteralDecorator2(self)
- testLiteralDecorator3(self)
- Decorator must be right next to literal, no whitespace
- testLookAheadIndicator1(self)
- testLookAheadIndicator2(self)
- testName1(self)
- testName2(self)
- testName3(self)
- testNegposIndicator1(self)
- testNegposIndicator2(self)
- testOccurenceIndicator1(self)
- testOccurenceIndicator2(self)
- testOccurenceIndicator3(self)
- testOccurenceIndicator4(self)
- testOccurenceIndicator5(self)
- testRange1(self)
- testRange2(self)
- testRange3(self)
- testRange4(self)
- Test optional repeating children running into eof
Original SimpleParse had a major failure here,
system hung trying to parse the [] string. Basically,
there was no check for EOF during a repeating-item
parse (save for literals and character sets), so you
wound up with infinite loops.
- testRange5(self)
- Test optional repeating children with no termination
Original SimpleParse had a major failure here,
system hung trying to parse the [] string. Basically,
there was no check for EOF during a repeating-item
parse (save for literals and character sets), so you
wound up with infinite loops.
- testSEQGroup1(self)
- testSEQToken1(self)
- testSeqGroup2(self)
- testUnreportedName1(self)
- testUnreportedName2(self)
- testWhitespace1(self)
- testWhitespace2(self)
- testWhitespace3(self)
- testWhitespace4(self)
- testWhitespace5(self)
- Bug in 2.0.0 where Null comments such as:
"#
"
didn't parse.
Methods inherited from TestCase:
- __call__(self, *args, **kwds)
- __init__(self, methodName='runTest')
- Create an instance of the class that will use the named test
method when executed. Raises a ValueError if the instance does
not have a method with the specified name.
- __repr__(self)
- __str__(self)
- assertAlmostEqual = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertAlmostEquals = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertEqual = failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- assertEquals = failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- assertFalse = failIf(self, expr, msg=None)
- Fail the test if the expression is true.
- assertNotAlmostEqual = failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertNotAlmostEquals = failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- assertNotEqual = failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- assertNotEquals = failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- assertRaises = failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
- Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
- assertTrue = failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- assert_ = failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- countTestCases(self)
- debug(self)
- Run the test without collecting errors in a TestResult
- defaultTestResult(self)
- fail(self, msg=None)
- Fail immediately, with the given message.
- failIf(self, expr, msg=None)
- Fail the test if the expression is true.
- failIfAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- failIfEqual(self, first, second, msg=None)
- Fail if the two objects are equal as determined by the '=='
operator.
- failUnless(self, expr, msg=None)
- Fail the test unless the expression is true.
- failUnlessAlmostEqual(self, first, second, places=7, msg=None)
- Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
- failUnlessEqual(self, first, second, msg=None)
- Fail if the two objects are unequal as determined by the '=='
operator.
- failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
- Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
- id(self)
- run(self, result=None)
- setUp(self)
- Hook method for setting up the test fixture before exercising it.
- shortDescription(self)
- Returns a one-line description of the test, or None if no
description has been provided.
The default implementation of this method returns the first line of
the specified test method's docstring.
- tearDown(self)
- Hook method for deconstructing the test fixture after testing it.
Data and other attributes inherited from TestCase:
- __dict__ = <dictproxy object>
- dictionary for instance variables (if defined)
- __weakref__ = <attribute '__weakref__' of 'TestCase' objects>
- list of weak references to the object (if defined)
- failureException = <class exceptions.AssertionError>
- Assertion failed.
| |


Develop programs using sockets for various traditional Internet protocols
Overall rating
Please write your comments about well this learning outcome was covered.


Comptroller
Extends:
This is the main Comptroller class. It serves as the entry point into all of Comptroller's higher level functionality.
Static Method Summary
| Static Public Methods | ||
| public static |
mergePatches(a: Patch, b: Patch): Patch Merges patches generated by child packages in order to apply to the parent package. |
Constructor Summary
| Public Constructor | ||
| public |
Creates a new Comptroller instance. |
Member Summary
| Public Members | ||
| public get |
The child packages. |
|
| public get |
The packages directory. |
Method Summary
| Public Methods | ||
| public |
getChildByName(name: string): Package | boolean A convenience method that locates a package in Comptroller#children by it's name in Package#packageJson. |
|
| public |
async linkPackages() Links the packages to node_modules in a way that enables them to be resolved by other packages by name. |
|
| public |
Logs patch operations. |
|
| public |
readChildren(): Package[] Scans the Comptroller#packages directory, finds package.json files and generates Packages. |
|
| public |
async updatePackages() Analyzes the dependencies and inherits of each package and applies the respective patches to each package. |
|
| public |
updatePatches(patches: Patch[]): Patch[] Takes an array of raw patches (returned by Package#generateDependencyPatches or Package#generateInheritPatches) and updates them with the information in the Comptroller#packageJson |
|
| public |
async updateSelf() Analyzes the dependencies of the root package and applies the respective patches. |
|
| public |
async writePackages() Loops through all packages in Comptroller#children and writes it's package.json. |
Inherited Summary
| From class Package | ||
| public static |
generateExcludes(excludes: Array<string|object>): * Generates an exclude array |
|
| public get |
An object representing the package's dependencies. |
|
| public get |
The options to pass through to detective. |
|
| public get |
A glob that matches the package's dev files |
|
| public get |
An object representing the package's devDependencies. |
|
| public get |
An array of package names to ignore in all operations. |
|
| public get |
An array of globs that match files not to be included with the package's source files. |
|
| public get |
An array of field names the package should inherit from it's parent package.json. |
|
| public get |
An object representing the package's package.json. |
|
| public get |
The "maximum fixed character width" parameter to pass to json-beautify. |
|
| public get |
Whether or not unused dependencies should be pruned from the package.json. |
|
| public get |
The package's root directory. |
|
| public get |
A glob that matches the package's source files |
|
| public |
async analyzeSourceDependencies(): Map<string, object> Analyzes the package's source files and returns all of the invoked dependencies mapped to the files invoking them. |
|
| public |
applyPatch(patch: Patch) Applies a given patch to Package#packageJson. |
|
| public |
generateDependencyPatches(dependencies: object): Patch[] Compares a dependency object (as returned from Package#analyzeSourceDependencies) with the dependencies listed in {@link Package@packageJson} and returns an array of patches. |
|
| public |
Generates the patches that will satisfy Package#inherits |
|
| public |
resolveDependency(dependency: string): string | boolean Takes a dependency name and resolves it to the actual dependency name, stripping any subdirectories from the dependency name (retaining @org style dependencies). |
|
| public |
async writePackageJson() Writes Package#packageJson to it's respective package.json file. |
Static Public Methods
Public Constructors
public constructor() source
Creates a new Comptroller instance. It accepts all of the arguments in Package#constructor as well as...
Override:
Package#constructorParams:
| Name | Type | Attribute | Description |
| opts.config.packages | string |
|
The directory name where packages can be found. |
Public Members
Public Methods
public getChildByName(name: string): Package | boolean source
A convenience method that locates a package in Comptroller#children by it's name in Package#packageJson.
Params:
| Name | Type | Attribute | Description |
| name | string | The name of the child package. |
Return:
| Package | boolean | The found package, or |
public async linkPackages() source
Links the packages to node_modules in a way that enables them to be resolved by other packages by name.
public readChildren(): Package[] source
Scans the Comptroller#packages directory, finds package.json files and generates Packages. Note that all package.json files must be in a direct subdirectory of the packages directory.
public async updatePackages() source
Analyzes the dependencies and inherits of each package and applies the respective patches to each package.
public updatePatches(patches: Patch[]): Patch[] source
Takes an array of raw patches (returned by Package#generateDependencyPatches or Package#generateInheritPatches) and updates them with the information in the Comptroller#packageJson
Params:
| Name | Type | Attribute | Description |
| patches | Patch[] | The patches to update. |
public async updateSelf() source
Analyzes the dependencies of the root package and applies the respective patches.
public async writePackages() source
Loops through all packages in Comptroller#children and writes it's package.json.


Provides the classes and interfaces of the MEKON Frames Model API (see {@link uk.ac.manchester.cs.mekon} for general description). The main point-of-access for the client is {@link uk.ac.manchester.cs.mekon.model.CModel}, which provides methods for accessing and instantiating the entities in the model.
NOTE: This is a companion package to the {@link uk.ac.manchester.cs.mekon.model.motor} package, with which it shares circular dependencies at the implementation level, though not at the API level. See {@link uk.ac.manchester.cs.mekon} for further details.


fffff
Gallery 1
image 1
image 2
image 3
Gallery 2
image 4
image 5
image 6
Gallery 3
image 7
image 8
image 9


Somehow the awesomeness was misconfigured and therefore cannot service your request because of internal fail.
">Shoot us a love letter and let us know you saw this.  If you feel that you did not break the shit, let us know.


Many machine learning algorithms (e.g. Isomap) employ graph data structures internally. Graphs are mathematical structures used to model pairwise relations between objects from a certain collection. A graph is an abstract representation of a set of objects where some pairs of the objects are connected by links. The interconnected objects are represented by mathematical abstractions called vertices (also called nodes or points), and the links that connect some pairs of vertices are called edges (also called lines). The edges may be directed (asymmetric) or undirected (symmetric).
There are different ways to store graphs in a computer system. The data
structure used depends on both the graph structure and the algorithm
used for manipulating the graph. Theoretically one can distinguish between
list and matrix structures but in concrete applications the best structure
is often a combination of both. List structures are often preferred for
sparse graphs as they have smaller memory requirements. Matrix structures
on the other hand provide faster access for some applications but can
consume huge amounts of memory. In Smile, we support both adjacency list
(class AdjacencyList
) and adjacency matrix
(class AdjacencyMatrix
).
In adjacency list, each vertex has a list of which vertices it is adjacent to. This causes redundancy in an undirected graph. Adjacency queries are faster, at the cost of extra storage space.
An adjacency matrix is an n by n matrix A, where n is the number of vertices in the graph. If there is an edge from a vertex x to a vertex y, then the element A(x,y) is 1 (or in general the number of edges or a weight), otherwise it is 0. In computing, this matrix makes it easy to find subgraphs, and to reverse a directed graph.
Both AdjacencyList
and AdjacencyMatrix
implement
the abstract interface Graph
. The basic operation on graph is
traversal, i.e. to visit the vertices in some systematic order.
Typically, we have breadth first search (BFS) and depth first search (DFS).
Both of these construct spanning trees with certain properties useful
in other graph algorithms. In Graph
, the methods bfs()
and dfs()
returns the connected components of graph. In addition,
the overloaded bfs(Visitor)
and dfs(Visitor)
can take a user-define Visitor
object to perform specific
operations when visiting a vertex.
Graph traversal can be used to compute the topological ordering of graph
by the methods sortbfs
or sortdfs
. The topological
ordering of a directed graph to be one in which, whenever we have an edge
from x
to y
, the ordering visits x
before y
. Note that a graph has a topological ordering if
and only if it is a directed acyclic graph.
With the method dijkstra()
, we can calculate the shortest path
from a source to all other vertices in the graph by Dijkstra algorithm.
Many manifold algorithms employ the shortest path among the samples as
a similarity measure instead of pairwise distance.


This tutorial explains advanced functionality, such as setting transfer, category managing, and LINQ enumerating.
When I delete you maybe I'll stop feeling so bad
Individual settings can be deleted using the .DeleteKey() method, passing the key of a setting. If the setting doesn't exist, this call will do nothing.
var config; // Assume initialized // Delete a global setting config.DeleteKey("Timespan"); // Delete a categorized setting config.DeleteKey("User1:Token");
You can also delete entire categories in a single call, using the .DeleteSection() method. In this case, pass the name of a category as a parameter:
var config; // Assume initialized config.Write("User:Name", "Foo"); config.Write("User:Age", 18); config.Write("ServerPort", 80); // Delete the User category config.DeleteSection("User"); // Both User:Name and User:Age are deleted // ServerPort isn't part of the User category, so it remains unaffected
Settings can be transferred from one file to another.
This process generates a copy of all settings in the source file, leaving it untouched. This is useful to create backups, for example.
To do so, use the .TransferTo() method, passing another config instance:
var config = XmlConfig.From("source.xml"); // Transfer to another XML file config.TransferTo(XmlConfig.From("target.xml")); // Transfer to a different file format config.TransferTo(IniConfig.From("target.ini"));
Note that you can even transfer between different file formats while keeping all data, including comments.
Time to cast some magic.
There are two main ways to obtain enumerables from a settings file:
Call .SettingsIn() to receive an instance of IDictionary<string, string> with all settings inside the specified section.
Or call .AsTransferable().ReadAll() to receive an instance of IEnumerable<Setting> with all settings in the file.
var config; // Assume initialized // Operate on the settings of a category var settings = config.SettingsIn("User"); var result = settings.Where(kvp => kvp.Key.Length > 2) .Select(kvp => kvp.Value); // Operate on all settings in the file var settings = config.AsTransferable().ReadAll(); var result = settings.Where(s => s.Key is "Age") .OrderBy(n => n) .Select(s => int.Parse(s.Value)) .Distinct();


Instructions
In regards to the map:
- Click the little map markers to see more information about a specific battle. The map markers in the case of the Spanish American War have the following significance based on
- Spanish victory
- American victory
- Inconclusive
Instructions
In regards to the map:
- Click the little map markers to see more information about a specific battle. The map markers have the following significance based on Civil War Sites Advisory Commission classifications:
- Click highlighted countries to see some information about how they responded to the conflict.
- Use the "Map Settings" tab to adjust the heatmap visuals for the battles.
- Use the "War Report" tab to see general conflict statistics related to the year.
In regards to the tabs:
- Use the "Troop Statistics" tab to see a slideshow infographic-esque visual of certain statistics about the conflict.
- Use the "Morse Code" tab to see a text to morse code (and vice versa) converter.
33 years after the end of the Civil War, the United States was an industrialized and most importantly united nation. Nearing the turn of the century, the United States would begin to act as a world power, laying the foundations for the American foreign policy of today. This was exemplified in the Spanish American war, a "splendid little war" that saw the United States acquiring overseas possessions in the Caribbean and Pacific from the ailing Spanish Empire. Many of America's generals during this war were Civil War veterans who fought on both sides of that conflict, and were now on the same side fighting to take territory from a foreign power.
Click a state to see its election results.
Show heatmap for all years all at once or show it on a year by year basis?


Global Specialist Electronic Component Distribution
is a group of distribution companies dedicated to providing the electronic components and value-added services to manufacturers around the world.
is a group of distribution companies dedicated to providing the electronic components and value-added services to manufacturers around the world.


In reverse proxy mode, mitmproxy accepts standard HTTP requests and forwards them to the specified upstream server. This is in contrast to upstream proxy mode, in which mitmproxy forwards HTTP proxy requests to an upstream proxy server.
| command-line | -R http[s]://hostname[:port] |
|---|---|
| mitmproxy shortcut | P |


LDAP authentication
Guacamole supports LDAP authentication via an extension available from the main project website. This extension allows users and connections to be stored directly within an LDAP directory. If you have a centralized authentication system that uses LDAP, Guacamole’s LDAP support can be a good way to allow your users to use their existing usernames and passwords to log into Guacamole.
To use the LDAP authentication extension, you will need:
An LDAP directory as storage for all authentication data, such as OpenLDAP.
The ability to modify the schema of your LDAP directory.
The instructions here assume you already have an LDAP directory installed and working, and do not cover the initial setup of such a directory.
Important
This chapter involves modifying the contents of GUACAMOLE_HOME
- the
Guacamole configuration directory. If you are unsure where GUACAMOLE_HOME
is
located on your system, please consult Configuring Guacamole before
proceeding.
How Guacamole uses LDAP
If the LDAP extension is installed, Guacamole will authenticate users against your LDAP server by attempting a bind as that user. The given username and password will be submitted to the LDAP server during the bind attempt.
If the bind attempt is successful, the set of available Guacamole connections
is queried from the LDAP directory by executing an LDAP query as the bound
user. Each Guacamole connection is represented within the directory as a
special type of group: guacConfigGroup
. Attributes associated with the group
define the protocol and parameters of the connection, and users are allowed
access to the connection only if they are associated with that group.
This architecture has a number of benefits:
Your users can use their existing usernames and passwords to log into Guacamole.
You can manage Guacamole connections using the same tool that you already use to manage your LDAP directory, such as Apache Directory Studio.
Existing security restrictions can limit visibility/accessibility of Guacamole connections.
Access to connections can easily be granted and revoked, as each connection is represented by a group.
Important
Though Guacamole connections can be stored within the LDAP directory, this is not required. Connection data can alternatively be stored within a database like MySQL or PostgreSQL as long as the LDAP username matches the username of the database user. Configuring Guacamole to use a database for authentication or connection storage is covered in Database authentication and later in this chapter in Associating LDAP with a database.
Downloading the LDAP extension
The LDAP authentication extension is available separately from the main
guacamole.war
. The link for this and all other officially-supported and
compatible extensions for a particular version of Guacamole are provided on the
release notes for that version. You can find the release notes for current
versions of Guacamole here: http://guacamole.apache.org/releases/.
The LDAP authentication extension is packaged as a .tar.gz
file containing:
guacamole-auth-ldap-1.5.2.jar
The Guacamole LDAP support extension itself, which must be placed in
GUACAMOLE_HOME/extensions
.schema/
LDAP schema files. An
.ldif
file compatible with OpenLDAP is provided, as well as a.schema
file compliant with RFC-2252. The.schema
file can be transformed into the.ldif
file automatically.
Preparing your LDAP directory (optional)
Although your LDAP directory already provides a means of storing and authenticating users, Guacamole also needs storage of connection configuration data, such as hostnames and ports, and a means of associating users with connections that they should have access to. You can do this either through modifying the LDAP directory schema, or through using a database like MySQL or PostgreSQL. If you do not wish to use the LDAP directory for connection storage, skip ahead to Associating LDAP with a database.
If you wish to store connection data directly within the LDAP directory, the
required modifications to the LDAP schema are made through applying one of the
provided schema files. These schema files define an additional object class,
guacConfigGroup
, which contains all configuration information for a
particular connection, and can be associated with arbitrarily-many users and
groups. Each connection defined by a guacConfigGroup
will be accessible only
by users who are members of that group (specified with the member attribute),
or who are members of associated groups (specified with the seeAlso
attribute).
Important
The instructions given for applying the Guacamole LDAP schema changes are specific to OpenLDAP, but other LDAP implementations, including Active Directory, will have their own methods for updating the schema.
If you are not using OpenLDAP, a standards-compliant schema file is provided that can be used to update the schema of any LDAP directory supporting RFC-2252. Please consult the documentation of your LDAP directory to determine how such schema changes can be applied.
The schema files are located within the schema/
directory of the archive
containing the LDAP extension. You will only need one of these files:
guacConfigGroup.schema
A standards-compliant file describing the schema. This file can be used with any LDAP directory compliant with RFC-2252.
guacConfigGroup.ldif
An LDIF file compatible with OpenLDAP. This file was automatically built from the provided
.schema
file for convenience.
This chapter will cover applying guacConfigGroup.ldif
to an OpenLDAP server.
If you are not using OpenLDAP, your LDAP server should provide documentation
for modifying its schema. If this is the case, please consult the documentation
of your LDAP server before proceeding.
Applying the schema changes to OpenLDAP
Schema changes to OpenLDAP are applied using the ldapadd utility
with the provided guacConfigGroup.ldif
file:
# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f schema/guacConfigGroup.ldif
adding new entry "cn=guacConfigGroup,cn=schema,cn=config"
#
If the guacConfigGroup
object was added successfully, you should see output
as above. You can confirm the presence of the new object class using
ldapsearch:
# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: cn={4}guacConfigGroup,cn=schema,cn=config
#
Associating LDAP with a database
If you install both the LDAP authentication as well as support for a database
(following the instructions in Database authentication), Guacamole will automatically
attempt to authenticate against both systems whenever a user attempts to log
in. In addition to any visible objects within the LDAP directory, that user
will have access to any data associated with their account in the database, as
well as any data associated with user groups that they belong to. LDAP user
accounts and groups will be considered equivalent to database users and groups
if their unique names are identical, as determined by the attributes given for
the ldap-username-attribute
and ldap-group-name-attribute
properties.
Data can be manually associated with LDAP user accounts or groups by creating corresponding users or groups within the database which each have the same names. As long as the names are identical, a successful login attempt against LDAP will be trusted by the database authentication, and that user’s associated data will be visible.
If an administrator account (such as the default guacadmin
user provided with
the database authentication) has a corresponding user in the LDAP directory
with permission to read other LDAP users and groups, the Guacamole
administrative interface will include them in the lists presented to the
administrator, and will allow connections from the database to be associated
with those users or groups directly.
Installing LDAP authentication
Guacamole extensions are self-contained .jar
files which are located within
the GUACAMOLE_HOME/extensions
directory. To install the LDAP authentication
extension, you must:
Create the
GUACAMOLE_HOME/extensions
directory, if it does not already exist.Copy
guacamole-auth-ldap-1.5.2.jar
withinGUACAMOLE_HOME/extensions
.Configure Guacamole to use LDAP authentication, as described below.
Important
You will need to restart Guacamole by restarting your servlet container in order to complete the installation. Doing this will disconnect all active users, so be sure that it is safe to do so prior to attempting installation. If you do not configure the LDAP authentication properly, Guacamole will not start up again until the configuration is fixed.
Configuring Guacamole for LDAP
Additional properties may be added to guacamole.properties
to describe how
your LDAP directory is organized and how Guacamole should connect (and bind) to
your LDAP server. Among these properties, only the ldap-user-base-dn property
is required:
ldap-hostname
The hostname of your LDAP server. If omitted, “localhost” will be used by default. You will need to use a different value if your LDAP server is located elsewhere.
ldap-port
The port your LDAP server listens on. If omitted, the standard LDAP or LDAPS port will be used, depending on the encryption method specified with
ldap-encryption-method
(if any). Unencrypted LDAP uses the standard port of 389, while LDAPS uses port 636. Unless you manually configured your LDAP server to do otherwise, your LDAP server probably listens on port 389.ldap-encryption-method
The encryption mechanism that Guacamole should use when communicating with your LDAP server. Legal values are “none” for unencrypted LDAP, “ssl” for LDAP over SSL/TLS (commonly known as LDAPS), or “starttls” for STARTTLS. If omitted, encryption will not be used.
If you do use encryption when connecting to your LDAP server, you will need to ensure that its certificate chain can be verified using the certificates in Java’s trust store, often referred to as
cacerts
. If this is not the case, you will need to use Java’skeytool
utility to either add the necessary certificates or to create a new trust store containing those certificates.If you will be using your own trust store and not the default
cacerts
, you will need to specify the full path to that trust store using the system propertyjavax.net.ssl.trustStore
. Note that this is a system property and not a Guacamole property; it must be specified when starting the JVM using the-D
option. Your servlet container will provide some means of specifying startup options for the JVM.ldap-max-search-results
The maximum number of search results that can be returned by a single LDAP query. LDAP queries which exceed this maximum will fail. This property is optional. If omitted, each LDAP query will be limited to a maximum of 1000 results.
ldap-search-bind-dn
The DN (Distinguished Name) of the user to bind as when authenticating users that are attempting to log in. If specified, Guacamole will query the LDAP directory to determine the DN of each user that logs in. If omitted, each user’s DN will be derived directly using the base DN specified with
ldap-user-base-dn
.ldap-search-bind-password
The password to provide to the LDAP server when binding as
ldap-search-bind-dn
to authenticate other users. This property is only used if ldap-search-bind-dn is specified. If omitted, butldap-search-bind-dn
is specified, Guacamole will attempt to bind with the LDAP server without a password.ldap-user-base-dn
The base of the DN for all Guacamole users. This property is absolutely required in all cases. All Guacamole users must be descendents of this base DN.
If a search DN is provided (via
ldap-search-bind-dn
), then Guacamole users need only be somewhere within the subtree of the specified user base DN.If a search DN is not provided, then all Guacamole users must be direct descendents of this base DN, as the base DN will be appended to the username to derive the user’s DN. For example, if
ldap-user-base-dn
is “ou=people,dc=example,dc=net
”, andldap-username-attribute
is “uid”, then a person attempting to login as “user
” would be mapped to the following full DN: “uid=user,ou=people,dc=example,dc=net
”.ldap-username-attribute
The attribute or attributes which contain the username within all Guacamole user objects in the LDAP directory. Usually, and by default, this will simply be “uid”. If your LDAP directory contains users whose usernames are dictated by different attributes, multiple attributes can be specified here, separated by commas, but beware: doing so requires that a search DN be provided with
ldap-search-bind-dn
.If a search DN is not provided, then the single username attribute specified here will be used together with the user base DN to directly derive the full DN of each user. For example, if
ldap-user-base-dn
is “ou=people,dc=example,dc=net
”, andldap-username-attribute
is “uid”, then a person attempting to login as “user
” would be mapped to the following full DN: “uid=user,ou=people,dc=example,dc=net
”.ldap-member-attribute
The attribute which contains the members within all group objects in the LDAP directory. Usually, and by default, this will simply be “member”. If your LDAP directory contains groups whose members are dictated by a different attribute, it can be specified here.
ldap-member-attribute-type
Specify whether the attribute defined in
ldap-member-attribute
(Usually “member”) identifies a group member by DN or by usercode. Possible values: “dn” (the default, if not specified) or “uid”.Example: an LDAP server may present groups using the
groupOfNames
scheme:dn: cn=group1,ou=Groups,dc=example,dc=net objectClass: groupOfNames cn: group1 gidNumber: 12345 member: user1,ou=People,dc=example,dc=net member: user2,ou=People,dc=example,dc=net
ldap-member-attribute
ismember
andldap-member-attribute-type
isdn
.Example: an LDAP server may present groups using the
posixGroup
scheme:dn: cn=group1,ou=Groups,dc=example,dc=net objectClass: posixGroup cn: group1 gidNumber: 12345 memberUid: user1 memberUid: user2
ldap-member-attribute
ismemberUid
andldap-member-attribute-type
isuid
ldap-user-attributes
The attribute or attributes to retrieve from the LDAP directory for the currently logged-in user, separated by commas. If specified, the attributes listed here are retrieved from each authenticated user and dynamically applied to the parameters of that user’s connections as parameter tokens with the prefix “
LDAP_
”.When a user authenticates with LDAP and accesses a particular Guacamole connection, the values of these tokens will be the values of their corresponding attributes at the time of authentication. If the attribute has no value for the current user, then the corresponding token is not applied. If the attribute has multiple values, then the first value of the attribute is used.
When converting an LDAP attribute name into a parameter token name, the name of the attribute is transformed into uppercase with each word separated by underscores, a naming convention referred to as “uppercase with underscores” or “screaming snake case”.
For example:
LDAP Attribute
Parameter Token
lowercase-with-dashes
${LDAP_LOWERCASE_WITH_DASHES}
CamelCase
${LDAP_CAMEL_CASE}
headlessCamelCase
${LDAP_HEADLESS_CAMEL_CASE}
lettersAndNumbers1234
${LDAP_LETTERS_AND_NUMBERS_1234}
aRANDOM_mixOf-3NAMINGConventions
${LDAP_A_RANDOM_MIX_OF_3_NAMING_CONVENTIONS}
Usage of parameter tokens is discussed in more detail in Configuring Guacamole in Parameter tokens.
ldap-user-search-filter
The search filter used to query the LDAP tree for users that can log into and be granted privileges in Guacamole. If this property is omitted the default of
(objectClass=*)
will be used.ldap-config-base-dn
The base of the DN for all Guacamole configurations. This property is optional. If omitted, the configurations of Guacamole connections will simply not be queried from the LDAP directory. If specified, this base DN will be used when querying the configurations accessible by a user once they have successfully logged in.
Each configuration is analogous to a connection. Within Guacamole’s LDAP support, each configuration functions as a group, having user members (via the
member
attribute) and optionally group members (via theseeAlso
attribute), where each member of a particular configuration group will have access to the connection defined by that configuration.ldap-group-base-dn
The base of the DN for all user groups that may be used by other extensions to define permissions or that may referenced within Guacamole configurations using the standard seeAlso attribute. All groups which will be used to control access to Guacamole configurations must be descendents of this base DN. If this property is omitted, the
seeAlso
attribute will have no effect on Guacamole configurations.ldap-group-name-attribute
The attribute or attributes which define the unique name of user groups in the LDAP directory. Usually, and by default, this will simply be “cn”. If your LDAP directory contains groups whose names are dictated by different attributes, multiple attributes can be specified here, separated by commas.
ldap-group-search-filter
The search filter used to query the LDAP tree for groups that may be used by other extensions to define permissions. If this property is omitted the default of
(objectClass=*)
will be used.ldap-dereference-aliases
Controls whether or not the LDAP connection follows (dereferences) aliases as it searches the tree. Possible values for this property are “never” (the default) so that aliases will never be followed, “searching” to dereference during search operations after the base object is located, “finding” to dereference in order to locate the search base, but not during the actual search, and “always” to always dereference aliases.
ldap-follow-referrals
This option controls whether or not the LDAP module follow referrals when processing search results from a LDAP search. Referrals can be pointers to other parts of an LDAP tree, or to a different server/connection altogether. This is a boolean parameter, with valid options of “true” or “false.” The default is false. When disabled, LDAP referrals will be ignored when encountered by the Guacamole LDAP client and the client will move on to the next result. When enabled, the LDAP client will follow the referral and process results within the referral, subject to the maximum hops parameter below.
ldap-max-referral-hops
This option controls the maximum number of referrals that will be processed before the LDAP client refuses to follow any more referrals. The default is 5. If the
ldap-follow-referrals
property is set to false (the default), this option has no effect. If theldap-follow-referrals
option is set to true, this will limit the depth of referrals followed to the number specified.ldap-operation-timeout
This option sets the timeout, in seconds, of any single LDAP operation. The default is 30 seconds. When this timeout is reached LDAP operations will be aborted.
Again, even if the defaults are sufficient for the other properties, you must
still specify the ldap-user-base-dn
property. An absolutely minimal
configuration for LDAP authentication will look like the following:
# LDAP properties
ldap-user-base-dn: ou=people,dc=example,dc=net
Using multiple LDAP servers
If you have several LDAP servers that Guacamole should authenticate against, it
is possible to provide the configuration details for multiple servers by
creating or editing a YAML file within GUACAMOLE_HOME
called
ldap-servers.yml
. This file consists of a single list of servers (a YAML
array of objects) and any number of corresponding configuration options (the
key/value pairs within each YAML object). The available options correspond
exactly to the properties described above except that they lack an ldap-
prefix.
For example, the following guacamole.properties
:
ldap-hostname: dc1.example.net
ldap-user-base-dn: ou=Users,dc=example,dc=net
ldap-username-attribute: sAMAccountName
ldap-search-bind-dn: cn=Guacamole,ou=Service Users,dc=example,dc=net
ldap-search-bind-password: SomePassword!
is exactly equivalent to the following ldap-servers.yml
- hostname: dc1.example.net
user-base-dn: ou=Users,dc=example,dc=net
username-attribute: sAMAccountName
search-bind-dn: cn=Guacamole,ou=Service Users,dc=example,dc=net
search-bind-password: SomePassword!
The benefit of using ldap-servers.yml
is that the format allows multiple
servers to be defined, relying on the properties within guacamole.properties
as defaults. For example, the following ldap-servers.yml
defines two LDAP
servers:
- hostname: dc1.example.net
user-base-dn: ou=Users,dc=example,dc=net
username-attribute: sAMAccountName
search-bind-dn: cn=Guacamole,ou=Service Users,dc=example,dc=net
search-bind-password: SomePassword!
- hostname: dc2.example.net
user-base-dn: ou=Users,dc=example,dc=net
username-attribute: sAMAccountName
search-bind-dn: cn=Guacamole,ou=Service Users,dc=example,dc=net
search-bind-password: SomePassword!
Leveraging the fact that values within guacamole.properties
are used as the
default values for all LDAP servers in ldap-servers.yml
, the above can be
abbreviated by moving the common options into guacamole.properties
:
ldap-user-base-dn: ou=Users,dc=example,dc=net
ldap-username-attribute: sAMAccountName
ldap-search-bind-dn: cn=Guacamole,ou=Service Users,dc=example,dc=net
ldap-search-bind-password: SomePassword!
Leaving ldap-servers.yml
containing, simply:
- hostname: dc1.example.net
- hostname: dc2.example.net
If multiple LDAP servers are listed within ldap-servers.yml
, and a user
attempts to log into Guacamole, each defined LDAP server is tried, in order,
until one server successfully authenticates the user or until all servers fail.
If not all LDAP servers are relevant to all users, and it is reasonable to determine which user is relevant to which LDAP server by the format of their username, patterns can be specified on a per-server basis to narrow which servers apply to which login attempts. For example:
- hostname: dc1.example.net
match-usernames: COMPANYA\\(.*)
- hostname: dc2.example.net
match-usernames: COMPANYB\\(.*)
The value for match-usernames
can be any regular expression accepted by Java,
where the capturing group dictates the portion that should be considered the
user’s username with respect to Guacamole. If multiple patterns should apply to
a particular LDAP server, this can be specified with a list of patterns for
match-usernames
:
- hostname: dc1.example.net
match-usernames:
- COMPANYA\\(.*)
-<EMAIL_ADDRESS>- hostname: dc2.example.net
match-usernames:
- COMPANYB\\(.*)
-<EMAIL_ADDRESS>Completing the installation
Guacamole will only reread guacamole.properties
and load newly-installed
extensions during startup, so your servlet container will need to be restarted
before the LDAP authentication will take effect. Restart your servlet container
and give the new authentication a try.
Important
You only need to restart your servlet container. You do not need to restart guacd.
guacd is completely independent of the web application and does not deal with
guacamole.properties
or the authentication system in any way. Since you are
already restarting the servlet container, restarting guacd as well technically
won’t hurt anything, but doing so is completely pointless.
If Guacamole does not come back online after restarting your servlet container, check the logs. Problems in the configuration of the LDAP extension will prevent Guacamole from starting up, and any such errors will be recorded in the logs of your servlet container. If properly configured, you will be able to log in as any user within the defined ldap-user-base-dn.
The LDAP schema
Guacamole’s LDAP support allows users and connections to be managed purely
within an LDAP directory defined in guacamole.properties
. This is
accomplished with a minimum of changes to the standard LDAP schema - all
Guacamole users are traditional LDAP users and share the same mechanism of
authentication. The only new type of object required is a representation for
Guacamole connections, guacConfigGroup
, which was added to your server’s
schema during the install process above.
Users
All Guacamole users, as far as the LDAP support is concerned, are LDAP users with standard LDAP credentials. When a user signs in to Guacamole, their username and password will be used to bind to the LDAP server. If this bind operation is successful, the available connections are queried from the directory and the user is allowed in.
Connections and parameters
Each connection is represented by an instance of the guacConfigGroup
object
class, an extended version of the standard LDAP groupOfNames
, which provides
a protocol and set of parameters. Only members of the guacConfigGroup
will
have access to the corresponding connection.
The guacConfigGroup
object class provides two new attributes in addition to
those provided by groupOfNames
:
guacConfigProtocol
The protocol associated with the connection, such as “
vnc
” or “rdp
”. This attribute is required for everyguacConfigGroup
and can be given only once.guacConfigParameter
The name and value of a parameter for the specified protocol. This is given as
name=value
, where “name” is the name of the parameter, as defined by the documentation for the protocol specified, and “value” is any allowed value for that parameter.This attribute can be given multiple times for the same connection.
For example, to create a new VNC connection which connects to “localhost” at
port 5900, while granting access to user1
and user2
, you could create an
.ldif
file like the following:
dn: cn=Example Connection,ou=groups,dc=example,dc=net
objectClass: guacConfigGroup
objectClass: groupOfNames
cn: Example Connection
guacConfigProtocol: vnc
guacConfigParameter: hostname=localhost
guacConfigParameter: port=5900
guacConfigParameter: password=secret
member: cn=user1,ou=people,dc=example,dc=net
member: cn=user2,ou=people,dc=example,dc=net
The new connection can then be created using the ldapadd utility:
$ ldapadd -x -D cn=admin,dc=example,dc=net -W -f example-connection.ldif
Enter LDAP Password:
adding new entry "cn=Example Connection,ou=groups,dc=example,dc=net"
$
Where cn=admin,dc=example,dc=net
is an administrator account with permission
to create new entries, and example-connection.ldif
is the name of the .ldif
file you just created.
There is, of course, no need to use only the standard LDAP utilities to create connections and users. There are useful graphical environments for manipulating LDAP directories, such as Apache Directory Studio, which make many of the tasks given above much easier.