| Name | Total Lines | Lines of Code | Total Coverage | Code Coverage |
|---|---|---|---|---|
| gems/gems/highline-1.5.1/lib/highline/menu.rb | 395 | 177 | 53.92%
|
14.69%
|
Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.
1 #!/usr/local/bin/ruby -w |
2 |
3 # menu.rb |
4 # |
5 # Created by Gregory Thomas Brown on 2005-05-10. |
6 # Copyright 2005. All rights reserved. |
7 # |
8 # This is Free Software. See LICENSE and COPYING for details. |
9 |
10 require "highline/question" |
11 |
12 class HighLine |
13 # |
14 # Menu objects encapsulate all the details of a call to HighLine.choose(). |
15 # Using the accessors and Menu.choice() and Menu.choices(), the block passed |
16 # to HighLine.choose() can detail all aspects of menu display and control. |
17 # |
18 class Menu < Question |
19 # |
20 # Create an instance of HighLine::Menu. All customization is done |
21 # through the passed block, which should call accessors and choice() and |
22 # choices() as needed to define the Menu. Note that Menus are also |
23 # Questions, so all that functionality is available to the block as |
24 # well. |
25 # |
26 def initialize( ) |
27 # |
28 # Initialize Question objects with ignored values, we'll |
29 # adjust ours as needed. |
30 # |
31 super("Ignored", [ ], &nil) # avoiding passing the block along |
32 |
33 @items = [ ] |
34 @hidden_items = [ ] |
35 @help = Hash.new("There's no help for that topic.") |
36 |
37 @index = :number |
38 @index_suffix = ". " |
39 @select_by = :index_or_name |
40 @flow = :rows |
41 @list_option = nil |
42 @header = nil |
43 @prompt = "? " |
44 @layout = :list |
45 @shell = false |
46 @nil_on_handled = false |
47 |
48 # Override Questions responses, we'll set our own. |
49 @responses = { } |
50 # Context for action code. |
51 @highline = nil |
52 |
53 yield self if block_given? |
54 |
55 init_help if @shell and not @help.empty? |
56 update_responses # rebuild responses based on our settings |
57 end |
58 |
59 # |
60 # An _index_ to append to each menu item in display. See |
61 # Menu.index=() for details. |
62 # |
63 attr_reader :index |
64 # |
65 # The String placed between an _index_ and a menu item. Defaults to |
66 # ". ". Switches to " ", when _index_ is set to a String (like "-"). |
67 # |
68 attr_accessor :index_suffix |
69 # |
70 # The _select_by_ attribute controls how the user is allowed to pick a |
71 # menu item. The available choices are: |
72 # |
73 # <tt>:index</tt>:: The user is allowed to type the numerical |
74 # or alphetical index for their selection. |
75 # <tt>:index_or_name</tt>:: Allows both methods from the |
76 # <tt>:index</tt> option and the |
77 # <tt>:name</tt> option. |
78 # <tt>:name</tt>:: Menu items are selected by typing a portion |
79 # of the item name that will be |
80 # auto-completed. |
81 # |
82 attr_accessor :select_by |
83 # |
84 # This attribute is passed directly on as the mode to HighLine.list() by |
85 # all the preset layouts. See that method for appropriate settings. |
86 # |
87 attr_accessor :flow |
88 # |
89 # This setting is passed on as the third parameter to HighLine.list() |
90 # by all the preset layouts. See that method for details of its |
91 # effects. Defaults to +nil+. |
92 # |
93 attr_accessor :list_option |
94 # |
95 # Used by all the preset layouts to display title and/or introductory |
96 # information, when set. Defaults to +nil+. |
97 # |
98 attr_accessor :header |
99 # |
100 # Used by all the preset layouts to ask the actual question to fetch a |
101 # menu selection from the user. Defaults to "? ". |
102 # |
103 attr_accessor :prompt |
104 # |
105 # An ERb _layout_ to use when displaying this Menu object. See |
106 # Menu.layout=() for details. |
107 # |
108 attr_reader :layout |
109 # |
110 # When set to +true+, responses are allowed to be an entire line of |
111 # input, including details beyond the command itself. Only the first |
112 # "word" of input will be matched against the menu choices, but both the |
113 # command selected and the rest of the line will be passed to provided |
114 # action blocks. Defaults to +false+. |
115 # |
116 attr_accessor :shell |
117 # |
118 # When +true+, any selected item handled by provided action code, will |
119 # return +nil+, instead of the results to the action code. This may |
120 # prove handy when dealing with mixed menus where only the names of |
121 # items without any code (and +nil+, of course) will be returned. |
122 # Defaults to +false+. |
123 # |
124 attr_accessor :nil_on_handled |
125 |
126 # |
127 # Adds _name_ to the list of available menu items. Menu items will be |
128 # displayed in the order they are added. |
129 # |
130 # An optional _action_ can be associated with this name and if provided, |
131 # it will be called if the item is selected. The result of the method |
132 # will be returned, unless _nil_on_handled_ is set (when you would get |
133 # +nil+ instead). In _shell_ mode, a provided block will be passed the |
134 # command chosen and any details that followed the command. Otherwise, |
135 # just the command is passed. The <tt>@highline</tt> variable is set to |
136 # the current HighLine context before the action code is called and can |
137 # thus be used for adding output and the like. |
138 # |
139 def choice( name, help = nil, &action ) |
140 @items << [name, action] |
141 |
142 @help[name.to_s.downcase] = help unless help.nil? |
143 end |
144 |
145 # |
146 # A shortcut for multiple calls to the sister method choice(). Be |
147 # warned: An _action_ set here will apply to *all* provided |
148 # _names_. This is considered to be a feature, so you can easily |
149 # hand-off interface processing to a different chunk of code. |
150 # |
151 def choices( *names, &action ) |
152 names.each { |n| choice(n, &action) } |
153 end |
154 |
155 # Identical to choice(), but the item will not be listed for the user. |
156 def hidden( name, help = nil, &action ) |
157 @hidden_items << [name, action] |
158 |
159 @help[name.to_s.downcase] = help unless help.nil? |
160 end |
161 |
162 # |
163 # Sets the indexing style for this Menu object. Indexes are appended to |
164 # menu items, when displayed in list form. The available settings are: |
165 # |
166 # <tt>:number</tt>:: Menu items will be indexed numerically, starting |
167 # with 1. This is the default method of indexing. |
168 # <tt>:letter</tt>:: Items will be indexed alphabetically, starting |
169 # with a. |
170 # <tt>:none</tt>:: No index will be appended to menu items. |
171 # any String:: Will be used as the literal _index_. |
172 # |
173 # Setting the _index_ to <tt>:none</tt> a literal String, also adjusts |
174 # _index_suffix_ to a single space and _select_by_ to <tt>:none</tt>. |
175 # Because of this, you should make a habit of setting the _index_ first. |
176 # |
177 def index=( style ) |
178 @index = style |
179 |
180 # Default settings. |
181 if @index == :none or @index.is_a?(String) |
182 @index_suffix = " " |
183 @select_by = :name |
184 end |
185 end |
186 |
187 # |
188 # Initializes the help system by adding a <tt>:help</tt> choice, some |
189 # action code, and the default help listing. |
190 # |
191 def init_help( ) |
192 return if @items.include?(:help) |
193 |
194 topics = @help.keys.sort |
195 help_help = @help.include?("help") ? @help["help"] : |
196 "This command will display helpful messages about " + |
197 "functionality, like this one. To see the help for " + |
198 "a specific topic enter:\n\thelp [TOPIC]\nTry asking " + |
199 "for help on any of the following:\n\n" + |
200 "<%= list(#{topics.inspect}, :columns_across) %>" |
201 choice(:help, help_help) do |command, topic| |
202 topic.strip! |
203 topic.downcase! |
204 if topic.empty? |
205 @highline.say(@help["help"]) |
206 else |
207 @highline.say("= #{topic}\n\n#{@help[topic]}") |
208 end |
209 end |
210 end |
211 |
212 # |
213 # Used to set help for arbitrary topics. Use the topic <tt>"help"</tt> |
214 # to override the default message. |
215 # |
216 def help( topic, help ) |
217 @help[topic] = help |
218 end |
219 |
220 # |
221 # Setting a _layout_ with this method also adjusts some other attributes |
222 # of the Menu object, to ideal defaults for the chosen _layout_. To |
223 # account for that, you probably want to set a _layout_ first in your |
224 # configuration block, if needed. |
225 # |
226 # Accepted settings for _layout_ are: |
227 # |
228 # <tt>:list</tt>:: The default _layout_. The _header_ if set |
229 # will appear at the top on its own line with |
230 # a trailing colon. Then the list of menu |
231 # items will follow. Finally, the _prompt_ |
232 # will be used as the ask()-like question. |
233 # <tt>:one_line</tt>:: A shorter _layout_ that fits on one line. |
234 # The _header_ comes first followed by a |
235 # colon and spaces, then the _prompt_ with menu |
236 # items between trailing parenthesis. |
237 # <tt>:menu_only</tt>:: Just the menu items, followed up by a likely |
238 # short _prompt_. |
239 # any ERb String:: Will be taken as the literal _layout_. This |
240 # String can access <tt>@header</tt>, |
241 # <tt>@menu</tt> and <tt>@prompt</tt>, but is |
242 # otherwise evaluated in the typical HighLine |
243 # context, to provide access to utilities like |
244 # HighLine.list() primarily. |
245 # |
246 # If set to either <tt>:one_line</tt>, or <tt>:menu_only</tt>, _index_ |
247 # will default to <tt>:none</tt> and _flow_ will default to |
248 # <tt>:inline</tt>. |
249 # |
250 def layout=( new_layout ) |
251 @layout = new_layout |
252 |
253 # Default settings. |
254 case @layout |
255 when :one_line, :menu_only |
256 self.index = :none |
257 @flow = :inline |
258 end |
259 end |
260 |
261 # |
262 # This method returns all possible options for auto-completion, based |
263 # on the settings of _index_ and _select_by_. |
264 # |
265 def options( ) |
266 # add in any hidden menu commands |
267 @items.concat(@hidden_items) |
268 |
269 by_index = if @index == :letter |
270 l_index = "`" |
271 @items.map { "#{l_index.succ!}" } |
272 else |
273 (1 .. @items.size).collect { |s| String(s) } |
274 end |
275 by_name = @items.collect { |c| c.first } |
276 |
277 case @select_by |
278 when :index then |
279 by_index |
280 when :name |
281 by_name |
282 else |
283 by_index + by_name |
284 end |
285 ensure |
286 # make sure the hidden items are removed, before we return |
287<EMAIL_ADDRESS>- @hidden_items.size, @hidden_items.size) |
288 end |
289 |
290 # |
291 # This method processes the auto-completed user selection, based on the |
292 # rules for this Menu object. If an action was provided for the |
293 # selection, it will be executed as described in Menu.choice(). |
294 # |
295 def select( highline_context, selection, details = nil ) |
296 # add in any hidden menu commands |
297 @items.concat(@hidden_items) |
298 |
299 # Find the selected action. |
300 name, action = if selection =~ /^\d+$/ |
301 @items[selection.to_i - 1] |
302 else |
303 l_index = "`" |
304 index = @items.map { "#{l_index.succ!}" }.index(selection) |
305 @items.find { |c| c.first == selection } or @items[index] |
306 end |
307 |
308 # Run or return it. |
309 if not @nil_on_handled and not action.nil? |
310 @highline = highline_context |
311 if @shell |
312 action.call(name, details) |
313 else |
314 action.call(name) |
315 end |
316 elsif action.nil? |
317 name |
318 else |
319 nil |
320 end |
321 ensure |
322 # make sure the hidden items are removed, before we return |
323<EMAIL_ADDRESS>- @hidden_items.size, @hidden_items.size) |
324 end |
325 |
326 # |
327 # Allows Menu objects to pass as Arrays, for use with HighLine.list(). |
328 # This method returns all menu items to be displayed, complete with |
329 # indexes. |
330 # |
331 def to_ary( ) |
332 case @index |
333 when :number |
334 @items.map { |c| "#{@items.index(c) +<EMAIL_ADDRESS>} |
335 when :letter |
336 l_index = "`" |
337 @items.map { |c|<EMAIL_ADDRESS>} |
338 when :none |
339 @items.map { |c| "#{c.first}" } |
340 else |
341 @items.map { |c|<EMAIL_ADDRESS>} |
342 end |
343 end |
344 |
345 # |
346 # Allows Menu to behave as a String, just like Question. Returns the |
347 # _layout_ to be rendered, which is used by HighLine.say(). |
348 # |
349 def to_str( ) |
350 case @layout |
351 when :list |
352 '<%= if @header.nil? then '' else "#{@header}:\n" end %>' + |
353 "<%= list( @menu<EMAIL_ADDRESS>|
354<EMAIL_ADDRESS>) %>" + |
355 "<%= @prompt %>" |
356 when :one_line |
357 '<%= if @header.nil? then '' else "#{@header}: " end %>' + |
358 "<%= @prompt %>" + |
359 "(<%= list( @menu<EMAIL_ADDRESS>|
360<EMAIL_ADDRESS>) %>)" + |
361 "<%= @prompt[/\s*$/] %>" |
362 when :menu_only |
363 "<%= list( @menu<EMAIL_ADDRESS>|
364<EMAIL_ADDRESS>) %><%= @prompt %>" |
365 else |
366 @layout |
367 end |
368 end |
369 |
370 # |
371 # This method will update the intelligent responses to account for |
372 # Menu specific differences. This overrides the work done by |
373 # Question.build_responses(). |
374 # |
375 def update_responses( ) |
376 append_default unless default.nil? |
377 @responses = { :ambiguous_completion => |
378 "Ambiguous choice. " + |
379 "Please choose one of #{options.inspect}.", |
380 :ask_on_error => |
381 "? ", |
382 :invalid_type => |
383 "You must enter a valid #{options}.", |
384 :no_completion => |
385 "You must choose one of " + |
386 "#{options.inspect}.", |
387 :not_in_range => |
388 "Your answer isn't within the expected range " + |
389 "(#{expected_range}).", |
390 :not_valid => |
391 "Your answer isn't valid (must match " + |
392 "#{@validate.inspect})." }.merge(@responses) |
393 end |
394 end |
395 end |
Generated on Thu Nov 12 16:05:07 +0530 2009 with rcov 0.9.6


Just want to see what Kibana is capable of doing? View the demo site.
Kibana documentation is always available to help.


University Visvesvaraya College of Engineering
Computer science and Engineering
5th SEM
Time Table
Syllabus


Pablo Picasso
(Málaga, Spain, 25 October 1881 - Mougins, France, 8 April 1973)
Pablo Picasso is probably the most important figure of 20th century, in term of art, and art movements that occurred over this period. To say that Pablo Picasso conquered western art is, by today, the merest usual place. Before the age of 50, the Spanish born artist had become the most well known name in modern art, with the most distinct style and eye for artistic creation. There had been no other artists, prior to Picasso, who had such an impact on the art world, or had a mass following of fans and critics alike, as he did.
Although his art career spanned over a 7 decade period, Pablo Picasso is most known for his introduction of cubism, and modern approach to painting, which set forth the movements to follow in to the twentieth century. Not only was his art form well ahead of his time, but the works he created went on to influence artists and painters down the line, for a period of more than 50 years, and still influences the styles of many artists today.
With his introduction of the cubism art form, alongside Georges Braque, Picasso introduced the world to a new way of looking at art. Although most people during his early career did not appreciate his work, Pablo Picasso created art that focused on new, colorful, and expressionist ways of looking at art forms. Rather than seeing art as a two-dimensional form, the new movement of cubism focused on how art could be seen in a number of ways, dimensions, and angles.
Les Demoiselles D'Avignos was his first piece, that in and of itself, introduced the cubism form to the world. It took five women, and the picture distorted their faces, bodies, and seemed that their heads were on backwards. Forcing the viewer to look at the painting at more than one angle, and direction, it was meant to showcase more than met the eye.
With this first piece Picasso was greatly criticized. But, today, it is one of the most iconic pieces he created. What he did for modern art was to create a new way of looking at art. Basically, he broke away from tradition, and what was believed to be art, and focused on creating work that challenged the mind, challenged your vision, and created different ways of looking at the same thing. Much of his work was painted in the form of cubes and squares, to mimic what they looked like in different dimensions.
Cubism becomes a form that was no longer intended to depict reality; it was meant to be viewed as an abstract, allowing the viewer of the art to see what they wanted to see. In this way, Pablo Picasso truly transcended the art world, the way in which art came to be, and future works created by other artists that followed him. He placed a focus on creating different viewing angles, and different ways of looking at the same piece, so that viewers could maintain their own perspective of the piece, rather than look at a picture, and know exactly what it was. With his work, every viewer could see something different, and could view what they perceived to be reality in his art work.


Toggle navigation
Home
Catalogues
Categories
Admin
Manage Users
Bob
Logout
Administrator View
Toggle navigation
RECEIPT-HOME Vendors
Catalogues
Categories
English
|
Chinese
Bob
Logout
Client View


Please note: This guide is incomplete, due to some exploits (such as RocketLauncher) being unreleased. For now, we will walk you through installing firmware version 1.4 on your DSi, which is the firmware version required for RocketLauncher to function once it's released.
This guide currently works with the DSi and DSi XL with the United States region.
This guide is for retail (consumer purchased) DSi and DSi XL consoles only!
Read all of the introductory pages before proceeding.
What is homebrew?
Homebrew means software that is not made or authorized by Nintendo. This lets you play games made by homebrew developers, edit your saves, and much, much more.
DSi homebrew is free as long as you have a copy of Flipnote Studio.
What is Custom Firmware?
Custom Firmware (“CFW”) enables you to use more advanced hacks that any normal DSiWare homebrew can't acheive, like custom DSiWare apps, and emulating the GBA with a higher speed than a traditional DS system, for example.
Once released, CFW can be easily set up on any console.
What does this guide install?
This guide, when RocketLauncher is released, will install RocketLauncher (a modified flashcart whitelist) and a version of DSi Custom Firmware known as "HiyaCFW." For now, we are installing firmware 1.4 as well as installing a homebrew entrypoint.
What can I do with Custom Firmware, once released?
- Install DSiWare much easier than previously possible
- Protect against bricks by making the DSi use your SD card as its internal memory
- Play games for older systems by using emulators faster than a normal DS system can
- Install homebrew titles to your system, and have them appear on your Nintendo DSi Menu
- Run many old Nintendo DS flash carts that were blocked long ago or never worked on the DSi/DSi XL
What do I need to know before starting?
- Every time you modify your system, there is a chance that your console will brick! Precautions are taken so that this is unlikely to happen, but the risk is present.
- This guide currently only works on US-region DSi and DSi XL systems. It will work on EU-region systems once ugopwn, the Flipnote Studio exploit, is released for the EU version of Flipnote Studio.
- Keep your DSi plugged in AT ALL TIMES DURING THIS PROCESS to avoid sudden power loss!


After the following statements execute, what item is at the front of the queue?
QueueInterface zooDelivery = new LinkedQueue(); zooDelivery.enqueue(“lion”); zooDelivery.enqueue(“tiger”); zooDelivery.enqueue(“cheetah”); String next = zooDelivery.dequeue(); next = zooDelivery.dequeue(); zooDelivery.enqueue(“jaguar”);
There are no hints for this question


Please fill in your details
By creating an account you agree to our Terms & Conditions.
Already have an account? Sign in.


This package contains Widget
class.  This defines appearance.
Widgets can also has widget-actions assigned. This defines behaviour.
The package contains a set of low-level widgets. E.g.:
Widget
- base/abstract widget - similar to JComponent in Swing
Scene
- widget which represents and holds whole scene - similar to JFrame in Swing
LayerWidget
- special transparent widget used for overlays - similar JGlassPane in Swing
ConnectionWidget
- specific widget which represents path defined by control-points
LabelWidget
- widget with a single-line text - similar to simple version of JLabel in Swing
ImageWidget
- widget with an image - similar to simple version of JLabel in Swing
ScrollWidget
- widget with scrollable viewport - similar to simple version of JScrollPane in Swing
SwingScrollWidget
- widget with scroolable viewport which is using JScrollBars
ComponentWidget
- widget used for integration of Swing component into a scene


{% extends "base.html" %} {% block title %}Upload Fish Pic{% endblock %} {% block scripts %} {{ super() }} {% endblock %} {% block content %}
We use a photo of your fish to classify the species,
and give you important information like if your catch
is an invasive species or legal to keep.


{% extends "tasting/base.html" %} {% load static %} {% load crispy_forms_tags %}
You must login to add a wine.
Once you are logged in, you'll be able to fill out a form to add a wine.


Posted by bbkgl on October 11, 2019
Posted by bbkgl on October 10, 2019
Posted by bbkgl on October 9, 2019
Posted by bbkgl on October 6, 2019
Posted by bbkgl on September 28, 2019
Posted by bbkgl on September 27, 2019
写过Hello World, 下过矿。
✉ zoujiakun@zju.edu.cn


So, for those of you that don’t know, Ubuntu Community Appreciation Day is the first day that we set apart to say “Thank you” to all the various folks who help make the Ubuntu Community possible, and awesome.
So, without furthur ado (whatever “ado” is!), I’ll start the list of lists (in absolutely no particular order):
Jorge Castro - it was Jorge who really got me kickstarted in the Ubuntu Community.
Jason Maas. While I haven’t spoken (or even really communicated with him) in several years, this was the guy who introduced me to Ubuntu, so I have to thank him for that.
Bill Childers. This guy taught me many tiny, newbie tricks, such as how to refresh the GRUB list (yeah, I didn’t know how to do that until he showed me). He also wrote an awesome (somewhat outdated, but awesome) book I have read many, many times.
Philip Ballew. He’s awesome, if you’ve ever done anything with him, you’d know why. If you haven’t, I suggest you get started.
Bilal Akhtar. He’s more of an inspiration than anything else, mainly because he’s another young (he’s 15, same as me) Ubuntero.
Amber Graner. She’s done an awesome job of getting the Ubuntu Leadership team off the ground and to find it’s place in the existing Ubuntu ecosystem. Thanks!
Marco Ceppi. He’s an awesome guy, one of the excellent team of Community moderators on Ask Ubuntu.
So, I’ll leave you with this thought:


Project Lead
Frontend Developer / Dog Collector
Frontend Developer
Backend Developer
WEB UI DEVELOPER
Have something on your mind? Let us know.


LANTANA
Reviewed by Harvey Karten Lions Gate Films Director: Ray Lawrence Writer: Andrew Bovell, from play "Speaking in Tongues" Cast: Anthony LaPaglia, Geoffrey Rush, Barbara Hershey, Kerry Armstrong, Rachael Blake, Vince Colosimo, Daniella Farinacci, Peter Phelps, Leah Pucell, Glenn Robbins, Russell Dykstra, Nicholas Cooper, Marc Dwyer Screened at: Disney Screening Rm NYC 9/24/01
With a crime's serving as a vehicle to explore its characters deeply, Ray Lawrence's "Lantana," which is adapted by playwright Andrew Bovell from his own theater piece "Speaking in Tongues," shares a common theme with the Coen Brothers' "The Man Who Wasn't There"--released shortly before the Lawrence picture. "The Man Who Wasn't There" featured Billy Bob Thornton as a barber who goes through the story numb, believing himself metaphorically to be invisible not only to others but even to himself--perhaps the essence of the modern, alienated man. "Lantana," which gets its name from an exotic flower which is smooth and lovely on the outside but which hides a thick, thorny growth (therefore the opposite of a sabra, or prickly pear), focuses on people who are undergoing mid-life crises, albeit at various ages, folks who think they are becoming invisible--taking leave of the lives they dreamed of having when they were kids. Though the story takes place in a suburb of Sydney, Australia, many of the people react in similar ways to Americans who undergo that psychological phenomenon. Some carry on affairs, others, lonely and perhaps not even interested in testing the sexual waters, become masochistic, make trouble, or grow suicidal.
Structured by Ray Lawrence like a Robert Altman film, featuring stories of families of strangers who become connected to one another through circumstance, "Lantana" avoid the pitfalls of soap opera by the authenticity of the acting and the maturity of the narrative. At no point does Lawrence allow the audience to take their eyes away from the screen: these Australians play characters who probably inhabit all our fears and desires as we grow older and surrender our illusions.
The principal target of Lawrence's probing lens, Leon Zat (Anthony LaPaglia), is a troubled police officer who, were he to patrol the streets of New York, might turn into what we here call a rogue cop. Partnered to a woman who seeks a mate and who looks to him for counsel, Claudia Weis (Leah Purcell), Leon is married to Sonja (Kerry Armstrong) long enough to feel the need to go astray. Carrying on what estranged Jane O'May (Rachael Blake) considers an affair but which is really just "a one-night stand done twice" (as Leon cruelly explains to her), he undergoes some enlightenment while pursuing the suspicious death of psychiatrist Dr. Valerie Somers (Barbara Hershey), whose daughter Eleanor had been murdered two years earlier, causing a rift in Valerie's marriage to John Knox (Geoffrey Rush). Leon's investigation leads him to suspect both Valerie's husband, John, and a father of three, Nik D'Amato (Vince Colosimo)--married to Paula (Daniella Farinacci)--who had given Valerie a nocturnal lift when the latter's car broke down.
One of the more interesting aspects of this complex, yet easy-to- follow plot, is that Nik and Paula, the most financially challenged and perhaps least educated couple in the story, are the happiest people around. They are undergoing no crises, do not consider themselves invisible, are not emotionally numb, and do not have to profess their love for each other: the audience goes away believing that they are the only twosome in the drama who retain their mutual chemistry. Anthony LaPaglia, interestingly cast as an Australian though known to New York theatergoers for his role in Arthur Miller's very American "A View from the Bridge" (which I saw some years back at the Circle in the Square) and to moviegoers for Spike Lee's "Summer of Sam" among other productions, conveys his tension throughout. You don't want to be arrested by this guy. Seething with frustration because of his inability to get turned on by his wife, he beats the stuffing out of a drug pusher, viciously grounds his own teenage son for doing weed, and shouts down a fellow he literally runs into on the street as he jogs in an attempt to convince himself that he's still youthful. Barbara Hershey is also terrific as a shrink who is oh-so-confident while gently questioning a client but who demonstrates Freud's theory of counter-transference in his dislike for a gay patient, Patrick (Peter Phelps), whose dilly-dallying with a married man forces her to confront her own paranoia about her marriage to John.
"Lantana" is for a mature audience, people who go to the theater to learn more about themselves rather than to escape from their daily problems. Ray Lawrence wonderfully mines territory similar to what he dug into with the underappreciated "Bliss"-- capturing the same, almost clinical dimensions of a therapist (played by Terence Stamp) who in treating a man with emotional problems unlocks the door to his wife's forgotten past.
Rated R. Running time: 121 minutes. (C) 2001 by Harvey Karten<EMAIL_ADDRESS>========== X-RAMR-ID: 29587 X-Language: en X-RT-ReviewID: 251160 X-RT-TitleID: 10000649 X-RT-SourceID: 570 X-RT-AuthorID: 1123
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


ecg_api module¶
-
ecg_api.
inc_count
()¶ Method that counts number of requests handled by the web service. :params: None :return: number of requests in json format
This module takes in JSON inputs and uses a previously created class to determine average heart rate over an averaging window, as well as outputting brady/tachycardia arrays on the avghr data.
Returns:
-
ecg_api.
send_error
(message, code)¶ This module will be used to throw HTTPS server error codes and messages when we specify them. :param message: Output that user will see :param code: HTTPS server error code :return: jsonified version of message and code
-
ecg_api.
show_count
()¶
-
ecg_api.
summary
()¶


Engineering Notes
POWER RF AMPLIFIERS TECHNICAL REFERENCE MATERIAL
Noise Figure & Level
Noise figure is defined as:
NF = ((Si/Ni) Signal To Noise At Input (Source)) / ((So/No) Signal To Noise At Output)
Background
N = Noise Power = kTB
Where K = Boltzman's Constant = 1.38 *10-23 Joules/Kelvin
T = Absolute Temperature, K(0°C = 273K)
B = 3 dB Noise Bandwidth, Hz
Example: What is the noise level, in dBm, of a resistor (black body) at 17°C (room temperature)
over a 1 MHz bandwidth?
N = kTB = (1.38 *10-23) * (273 + 17) * (1 *106)
= 1.37 *10-17 *290 = 4.0 *10-15 Joules/Second
Or = 4 *10-15 Joules/Second = 4 *10-15 Watts
In dBm 1 *10-15 Watts = 1 *10-12 mW = -120 dBm
Power Ratio of 4 = +6 dB
Noise level = -120 dBm + 6 dB = -114 dBm
(Plot A on nomograph)
Note: NF of transistors are 2 dB to 30 dB due to bias currents, materials, etc.
Noise Level in dBm at the input of an amplifier assuming NF = 10 dB is - 104 dBm (Plot B):
Noise Level at the output, assuming the gain of the amplifier is 50 dB is:
No = KTB + NF + Gain = -114 dBm + 10 dB + 50 dB = -54 dBm
Example: If you add the gain of the amplifier to its NF (e.g., 50 dB + 10 dB = 60 dB),
plot C indicates -54 dBm output noise level.
Noise Figure Momograph
NEED A SPECIFIC AMPLIFIER? VISIT EmpowerRF.com
|


The ubiquity of sensor-rich and computationally powerful smartphones makes them an ideal platform for health and wellness applications. To facilitate the development of social sensing and data collection applications, we are developing a set of open-source smartphone libraries to collect, store and transfer, and query sensor data. All of our code, including these documentation pages, can be found on our Github Page.
The Sensor Manager (Android Code, Android Docs) provides a uniform and easily configurable access to sensor data, supporting both one-off and continuous sensing scenarios.
We use an open format to represent data from each sensor, using JSON. In the data section of these docs, you can find descriptions and example data from all of the sensors that our library can currently sense from; the Data Manager library includes methods to format data.
To encapsulate the ideas of formatting, storing, querying, and transmitting data, we built a Data Manager (Android Code, Android Docs) that acts as a data sink for sensor-enhanced applications. The manager directly supports formatting sensor data and can also store and transmit any data that is identified with an appropriate tag. Since applications may collect large amounts of data, the manager can also be configured to transmit data asynchronously.


RedisBloom Tutorial
RedisBloom extends Redis core to support additional probabilistic data structures. It allows for solving computer science problems in a constant memory space with extremely fast processing and a low error rate. It supports scalable Bloom and Cuckoo filters to determine (with a specified degree of certainty) whether an item is present or absent from a collection.
The RedisBloom module provides four data types:
- Bloom filter: A probabilistic data structure that can test for presence.  Bloom filters typically exhibit better performance and scalability when inserting items (so if you're often adding items to your dataset then Bloom may be ideal).
- Cuckoo filter: An alternative to Bloom filters, Cuckoo filters comes with additional support for deletion of elements from a set. These filters are quicker on check operations.
- Count-min sketch: A count-min sketch is generally used to determine the frequency of events in a stream. You can query the count-min sketch to get an estimate of the frequency of any given event.
- Top-K: The Top-k probabilistic data structure in RedisBloom is a deterministic algorithm that approximates frequencies for the top k items. With Top-K, you’ll be notified in real time whenever elements enter into or are expelled from your Top-K list. If an element add-command enters the list, the dropped element will be returned.
#
Step 1. Register and subscribeFollow this link to register and subscribe to Redis Enterprise Cloud
#
Step 2. Create a database with RedisBloom Module
#
Step 3. Connect to a databaseFollow this link to know how to connect to a database
#
Step 4. Getting Started with RedisBloomIn the next steps you will use some basic RedisBloom commands. You can run them from the Redis command-line interface (redis-cli) or use the CLI available in RedisInsight. (See part 2 of this tutorial to learn more about using the RedisInsight CLI.) To interact with RedisBloom, you use the BF.ADD and BF.EXISTS commands.
Let’s go ahead and test drive some RedisBloom-specific operations. We will create a basic dataset based on unique visitors’ IP addresses, and you will see how to:
- Create a Bloom filter
- Determine whether or not an item exists in the Bloom filter
- Add one or more items to the Bloom filter
- Determine whether or not a unique visitor’s IP address exists
Let’s walk through the process step-by-step:
#
Create a Bloom filterUse the BF.ADD command to add a unique visitor IP address to the Bloom filter as shown here:
#
Determine whether or not an item existsUse the BF.EXISTS command to determine whether or not an item may exist in the Bloom filter:
In the above example, the first command shows the result as “1”, indicating that the item may exist, whereas the second command displays "0", indicating that the item certainly may not exist.
#
Add one or more items to the Bloom filterUse the BF.MADD command to add one or more items to the Bloom filter, creating the filter if it does not yet exist. This command operates identically to BF.ADD, except it allows multiple inputs and returns multiple values:
As shown above, the BF.MADD allows you to add one or more visitors’ IP addresses to the Bloom filter.
#
Determine whether or not a unique visitor’s IP address existsUse BF.MEXISTS to determine if one or more items may exist in the filter or not:
In the above example, the first command shows the result as “1” for both the visitors’ IP addresses, indicating that these items do exist. The second command displays "0" for one of the visitor’s IP addresses, indicating that the item certainly does not exist.
#
Next Step- Learn more about RedisBloom in the Quick Start tutorial.


{% include 'header.html' %}
The place you're trying to reach does not exist. Please use the navbar to get back on track.


Hannah,
Regarding PPPL's prime contract number, there's no space: DE-AC02-09CH11466
I had discussed with Kate that it seems that some PPPL Collections have it encoded and some didn't in DataSpace. I think we would want this encoded by default for all PPPL submissions in any PPPL collection in PDC-Describe.
One suggestion: It seems that the UI would have only a single entry for a grant. I would recommend changing this to allow for multiple grants. Some PPPL research have funding through multiple sources. I suspect PU researchers do as well. So instead of a vertical layout, I recommend horizontal with the ability to add additional rows, much like how you do with creator/author metadata. This will provide the greatest granularity.
Cheers, - Chun
Research Data Developer Princeton Plasma Physics Laboratory Performance Assurance & Contract Management ORCID: 0000-0002-4245-2318 https://orcid.org/0000-0002-4245-2318
On Thu, Oct 6, 2022 at 8:11 AM Hannah H @.***> wrote:
@astrochun https://github.com/astrochun Thanks so much for this information!
Yes, being able to facilitate property fields to describe complete funding will probably take us beyond the MVP. In the short term we don't want to lose what has already been entered for records in DataSpace.
Regarding the funder into properties that we are planning to have in the MVP, please let us know if the following translation from what is currently recorded in DataSpace to funder properties in Describe is correct: Example of funder info in DataSpace for a PPPL submission:
dc.contributor.funder | U.S. Department of Energy (DE-AC02- 09CH11466) Proposed translation to our available funder properties in Describe (note: These are optional properties to fill in, so it's ok to leave blank when needed):
Funder Name: U.S. Department of Energy
Award Number: DE-AC02- 09CH11466
— Reply to this email directly, view it on GitHub https://github.com/pulibrary/RDOS_Publishing/issues/7#issuecomment-1270237077, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE25ORTDVGEXFCEOF7HZUZ3WB3TYHANCNFSM6AAAAAAQROTYHQ . You are receiving this because you were mentioned.Message ID: @.***>
@kelynch and others Please let me know if you have further comment on this. Otherwise I'm going to start a ticket with the following information:
Funder information Metadata: - [ ] Use the following Datacite properties: Funder Name, Award Number, Award URI - [ ] These properties are packaged/groupd together - [ ] These properties are all optional, including within the grouping (no dependencies) - [ ] The funder grouping may be repeated as necessary, so depositors can list all funders
mentioned
by Chun Ly at 2022-10-10 13:48:51.subscribed
by Chun Ly at 2022-10-10 13:48:51.mentioned
by Kate Lynch at 2022-10-10 14:14:37.subscribed
by Kate Lynch at 2022-10-10 14:14:37.renamed
by Kevin Reiss at 2022-10-10 15:22:11.referenced
by None at 2022-10-10 19:35:16.merged
by None at 2022-10-10 19:35:16.closed
by None at 2022-10-10 19:35:16.head_ref_deleted
by None at 2022-10-10 19:35:17.approved and deployed 10/10
approved and deployed 10/10
labeled
by Kevin Reiss at 2022-10-10 15:09:42.review_requested
by Francis Kayiwa at 2022-10-10 16:11:06.Chapter 1 specifically answers the following questions:
uptime
and what is a date date
?ps -p $$
and what other shells exist on your machine cat /etc/shells
? man chsh
chsh -s <desired shell name>
renamed
by Robert-Anthony Lee-Faison at 2022-10-10 13:37:43.review_requested
by Francis Kayiwa at 2022-10-10 16:11:19.referenced
by None at 2022-10-10 17:06:18.merged
by None at 2022-10-10 17:06:18.closed
by None at 2022-10-10 17:06:18.head_ref_deleted
by None at 2022-10-10 17:06:28.closed
by Kevin Reiss at 2022-10-10 15:52:06.deployed
by None at 2022-10-10 18:50:12.ready_for_review
by Jane Sandberg at 2022-10-10 19:23:58.head_ref_force_pushed
by Jane Sandberg at 2022-10-10 21:41:00.Collections created, touched base with requester. Closing.
closed
by Kate Lynch at 2022-10-10 20:46:42.@hackartisan any way I can help with this?
categories of resources: - viewable resources (i.e. I go to the resource page and there's a viewer) - scanned resource (including recording, archival media, simple) - scanned map / raster / vector resources - coin, issue, monograph - ephemera folder - container resources - parents to other resources - scanned resource mvw - scanned map / raster / vector resources - numismatic issue - ephemera box - collection resources - collection - ephemera project - property resources - workflow note - ephemera term - there are probably lots more of these; nothing really binds them together.
Questions: - could grouping resources like this help us when updating change sets and decorators? - why doesn't ephemera folder use common schema? - why does collection use common schema?
It seems like schemas, change sets, and decorators ought to be more aligned, and more parallel in their organization.
Note that change set has a concept of a core resource: https://github.com/pulibrary/figgy/blob/5e0a9321a637de4e7ffbb4b1bd8a59d9efe01d66/app/change_sets/change_set.rb#L39
mentioned
by None at 2022-10-10 15:03:11.subscribed
by None at 2022-10-10 15:03:11.labeled
by None at 2022-10-10 18:08:38.deployed
by None at 2022-10-10 18:05:45.referenced
by None at 2022-10-10 18:12:35.merged
by None at 2022-10-10 18:12:35.closed
by None at 2022-10-10 18:12:35.head_ref_deleted
by None at 2022-10-10 18:12:36.closed
by None at 2022-10-10 18:12:37.referenced
by None at 2022-10-10 18:24:17.merged
by None at 2022-10-10 18:24:17.closed
by None at 2022-10-10 18:24:17.head_ref_deleted
by None at 2022-10-10 18:24:18.closed
by None at 2022-10-10 18:24:18.@tpendragon here is the screenshot of the new error message in the Order Manager. Working on a Vue test for this, but I'm currently blocked by an error from Circle CI that it can't compile webpacker.
mentioned
by Trey Pendragon at 2022-10-10 18:41:11.subscribed
by Trey Pendragon at 2022-10-10 18:41:11.@jpstroop - to confirm, this is only exploratory atm, correct? We have not entered into a collaboration/agreement with Europeana and do not have a timeline?
mentioned
by Jon Stroop at 2022-10-10 13:13:39.subscribed
by Jon Stroop at 2022-10-10 13:13:39.mentioned
by Jon Stroop at 2022-10-10 18:39:46.subscribed
by Jon Stroop at 2022-10-10 18:39:46.labeled
by Kim Leaman at 2022-10-10 18:42:33.labeled
by Trey Pendragon at 2022-10-10 19:44:50.labeled
by Trey Pendragon at 2022-10-10 19:44:50.ready_for_review
by Trey Pendragon at 2022-10-10 18:48:04.referenced
by Trey Pendragon at 2022-10-10 20:00:38.merged
by Trey Pendragon at 2022-10-10 20:00:39.closed
by Trey Pendragon at 2022-10-10 20:00:39.head_ref_deleted
by Trey Pendragon at 2022-10-10 20:00:39.head_ref_force_pushed
by None at 2022-10-10 14:18:45.head_ref_force_pushed
by None at 2022-10-10 17:41:06.renamed
by None at 2022-10-10 18:38:07.referenced
by Trey Pendragon at 2022-10-10 20:02:22.merged
by Trey Pendragon at 2022-10-10 20:02:22.closed
by Trey Pendragon at 2022-10-10 20:02:22.head_ref_deleted
by Trey Pendragon at 2022-10-10 20:02:23.referenced
by None at 2022-10-10 14:18:02.referenced
by None at 2022-10-10 18:36:28.closed
by Trey Pendragon at 2022-10-10 20:02:23.referenced
by Trey Pendragon at 2022-10-10 20:03:01.merged
by Trey Pendragon at 2022-10-10 20:03:01.closed
by Trey Pendragon at 2022-10-10 20:03:01.head_ref_deleted
by Trey Pendragon at 2022-10-10 20:03:02.referenced
by Trey Pendragon at 2022-10-10 20:03:23.merged
by Trey Pendragon at 2022-10-10 20:03:23.closed
by Trey Pendragon at 2022-10-10 20:03:23.head_ref_deleted
by Trey Pendragon at 2022-10-10 20:03:24.referenced
by Trey Pendragon at 2022-10-10 20:04:47.merged
by Trey Pendragon at 2022-10-10 20:04:47.closed
by Trey Pendragon at 2022-10-10 20:04:47.head_ref_deleted
by Trey Pendragon at 2022-10-10 20:04:48.closed
by Trey Pendragon at 2022-10-10 20:04:48.labeled
by Kevin Reiss at 2022-10-10 21:21:33.labeled
by Kevin Reiss at 2022-10-10 21:21:33.head_ref_deleted
by Vickie Karasic at 2022-10-10 20:16:38.assigned
by None at 2022-10-10 13:39:54.labeled
by Kevin Reiss at 2022-10-10 14:24:20.assigned
by Kevin Reiss at 2022-10-10 14:25:04.Coverage decreased (-0.004%) to 94.467% when pulling eab0f1593082d9dc02c42427a20b1f5dcc897d28 on 2980-remove-voyager-references into 24ccce4960e2b131ae1d4ec95a8459ba698984a6 on main.
labeled
by Chun Ly at 2022-10-10 15:59:55.assigned
by Chun Ly at 2022-10-10 15:59:58.assigned
by Chun Ly at 2022-10-10 15:54:29.labeled
by Chun Ly at 2022-10-10 15:55:12.referenced
by Chun Ly at 2022-10-10 15:56:29.referenced
by Chun Ly at 2022-10-10 16:03:19.closed
by Chun Ly at 2022-10-10 18:56:23.referenced
by Chun Ly at 2022-10-10 18:56:23.labeled
by Chun Ly at 2022-10-10 16:45:00.assigned
by Chun Ly at 2022-10-10 16:45:09.referenced
by Chun Ly at 2022-10-10 18:56:22.merged
by Chun Ly at 2022-10-10 18:56:22.closed
by Chun Ly at 2022-10-10 18:56:22.head_ref_deleted
by Chun Ly at 2022-10-10 18:56:46.labeled
by Chun Ly at 2022-10-10 19:13:57.labeled
by Chun Ly at 2022-10-10 19:13:57.assigned
by Chun Ly at 2022-10-10 19:13:58.renamed
by Bess Sadler at 2022-10-10 12:47:40.deployed
by None at 2022-10-10 13:01:53.referenced
by Hector Correa at 2022-10-10 13:04:32.merged
by Hector Correa at 2022-10-10 13:04:32.closed
by Hector Correa at 2022-10-10 13:04:32.head_ref_deleted
by Hector Correa at 2022-10-10 13:04:34.closed
by Hector Correa at 2022-10-10 13:04:34.assigned
by Hector Correa at 2022-10-10 13:13:01.This is a duplicate of #448
closed
by Hector Correa at 2022-10-10 14:19:03.convert_to_draft
by James R. Griffin III at 2022-10-10 13:12:56.head_ref_force_pushed
by James R. Griffin III at 2022-10-10 13:20:53.head_ref_force_pushed
by James R. Griffin III at 2022-10-10 13:26:59.review_requested
by James R. Griffin III at 2022-10-10 14:34:58.ready_for_review
by James R. Griffin III at 2022-10-10 14:43:30.referenced
by Hector Correa at 2022-10-10 15:53:18.merged
by Hector Correa at 2022-10-10 15:53:18.closed
by Hector Correa at 2022-10-10 15:53:18.head_ref_deleted
by Hector Correa at 2022-10-10 15:53:18.assigned
by James R. Griffin III at 2022-10-10 14:45:15.closed
by Hector Correa at 2022-10-10 15:53:19.<?xml version="1.0"?>
<resource xsi:schemaLocation='http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://datacite.org/schema/kernel-4'>
<identifier identifierType='DOI'>10.34770/r2dz-ys12</identifier>
<creators>
<creator>
<creatorName>Taylor, Jenny A</creatorName>
<givenName>Jenny A</givenName>
<familyName>Taylor</familyName>
</creator>
<creator>
<creatorName>Bratton, Benjamin P</creatorName>
<givenName>Benjamin P</givenName>
<familyName>Bratton</familyName>
</creator>
<creator>
<creatorName>Sichel, Sophie R</creatorName>
<givenName>Sophie R</givenName>
<familyName>Sichel</familyName>
</creator>
<creator>
<creatorName>Blair, Kris M</creatorName>
<givenName>Kris M</givenName>
<familyName>Blair</familyName>
</creator>
<creator>
<creatorName>Jacobs, Holly M</creatorName>
<givenName>Holly M</givenName>
<familyName>Jacobs</familyName>
</creator>
<creator>
<creatorName>DeMeester, Kristen E</creatorName>
<givenName>Kristen E</givenName>
<familyName>DeMeester</familyName>
</creator>
<creator>
<creatorName>Kuru, Erkin</creatorName>
<givenName>Erkin</givenName>
<familyName>Kuru</familyName>
</creator>
<creator>
<creatorName>Gray, Joe</creatorName>
<givenName>Joe</givenName>
<familyName>Gray</familyName>
</creator>
<creator>
<creatorName>Biboy, Jacob</creatorName>
<givenName>Jacob</givenName>
<familyName>Biboy</familyName>
</creator>
<creator>
<creatorName>VanNieuwenhze, Michael S</creatorName>
<givenName>Michael S</givenName>
<familyName>VanNieuwenhze</familyName>
</creator>
<creator>
<creatorName>Vollmer, Waldemar</creatorName>
<givenName>Waldemar</givenName>
<familyName>Vollmer</familyName>
</creator>
<creator>
<creatorName>Grimes, Catherine L</creatorName>
<givenName>Catherine L</givenName>
<familyName>Grimes</familyName>
</creator>
<creator>
<creatorName>Shaevitz, Joshua W</creatorName>
<givenName>Joshua W</givenName>
<familyName>Shaevitz</familyName>
</creator>
<creator>
<creatorName>Salama, Nina R</creatorName>
<givenName>Nina R</givenName>
<familyName>Salama</familyName>
</creator>
</creators>
<titles>
<title>
Distinct cytoskeletal proteins define zones of enhanced cell wall
synthesis in Helicobacter pylori
</title>
</titles>
<publisher>Princeton University</publisher>
<resourceType resourceTypeGeneral='Dataset'/>
<publicationYear>2019</publicationYear>
<relatedIdentifiers>
<relatedIdentifier relationType='IsIdenticalTo' relatedIdentifierType='ARK'>ark:/88435/dsp01h415pd457</relatedIdentifier>
</relatedIdentifiers>
<version>1</version>
<rightsList>
<rights rightsURI='https://creativecommons.org/licenses/by/4.0/' rightsIdentifier='CC BY'>Creative Commons Attribution 4.0 International</rights>
</rightsList>
</resource>
assigned
by Tyler Wade at 2022-10-10 12:43:53.renamed
by Bess Sadler at 2022-10-10 12:44:14.renamed
by Bess Sadler at 2022-10-10 12:48:01.redescribed this record: https://dataspace.princeton.edu/handle/88435/dsp01h415pd457
<?xml version="1.0"?>
<resource xsi:schemaLocation='http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://datacite.org/schema/kernel-4'>
<identifier identifierType='DOI'>10.34770/r2dz-ys12</identifier>
<creators>
<creator>
<creatorName>Taylor, Jenny A</creatorName>
<givenName>Jenny A</givenName>
<familyName>Taylor</familyName>
</creator>
<creator>
<creatorName>Bratton, Benjamin P</creatorName>
<givenName>Benjamin P</givenName>
<familyName>Bratton</familyName>
</creator>
<creator>
<creatorName>Sichel, Sophie R</creatorName>
<givenName>Sophie R</givenName>
<familyName>Sichel</familyName>
</creator>
<creator>
<creatorName>Blair, Kris M</creatorName>
<givenName>Kris M</givenName>
<familyName>Blair</familyName>
</creator>
<creator>
<creatorName>Jacobs, Holly M</creatorName>
<givenName>Holly M</givenName>
<familyName>Jacobs</familyName>
</creator>
<creator>
<creatorName>DeMeester, Kristen E</creatorName>
<givenName>Kristen E</givenName>
<familyName>DeMeester</familyName>
</creator>
<creator>
<creatorName>Kuru, Erkin</creatorName>
<givenName>Erkin</givenName>
<familyName>Kuru</familyName>
</creator>
<creator>
<creatorName>Gray, Joe</creatorName>
<givenName>Joe</givenName>
<familyName>Gray</familyName>
</creator>
<creator>
<creatorName>Biboy, Jacob</creatorName>
<givenName>Jacob</givenName>
<familyName>Biboy</familyName>
</creator>
<creator>
<creatorName>VanNieuwenhze, Michael S</creatorName>
<givenName>Michael S</givenName>
<familyName>VanNieuwenhze</familyName>
</creator>
<creator>
<creatorName>Vollmer, Waldemar</creatorName>
<givenName>Waldemar</givenName>
<familyName>Vollmer</familyName>
</creator>
<creator>
<creatorName>Grimes, Catherine L</creatorName>
<givenName>Catherine L</givenName>
<familyName>Grimes</familyName>
</creator>
<creator>
<creatorName>Shaevitz, Joshua W</creatorName>
<givenName>Joshua W</givenName>
<familyName>Shaevitz</familyName>
</creator>
<creator>
<creatorName>Salama, Nina R</creatorName>
<givenName>Nina R</givenName>
<familyName>Salama</familyName>
</creator>
</creators>
<titles>
<title>
Distinct cytoskeletal proteins define zones of enhanced cell wall
synthesis in Helicobacter pylori
</title>
</titles>
<publisher>Princeton University</publisher>
<resourceType resourceTypeGeneral='Dataset'/>
<publicationYear>2019</publicationYear>
<relatedIdentifiers>
<relatedIdentifier relationType='IsIdenticalTo' relatedIdentifierType='ARK'>ark:/88435/dsp01h415pd457</relatedIdentifier>
</relatedIdentifiers>
<version>1</version>
<rightsList>
<rights rightsURI='https://creativecommons.org/licenses/by/4.0/' rightsIdentifier='CC BY'>Creative Commons Attribution 4.0 International</rights>
</rightsList>
</resource>
review_requested
by Tyler Wade at 2022-10-10 17:41:05.assigned
by Tyler Wade at 2022-10-10 17:49:14.assigned
by James R. Griffin III at 2022-10-10 18:01:24.assigned
by James R. Griffin III at 2022-10-10 19:14:25.I am very sorry @bess, this does appear to work in the staging environment:
When might there have been the last deployment into the production environment?
mentioned
by Bess Sadler at 2022-10-10 18:15:35.subscribed
by Bess Sadler at 2022-10-10 18:15:35.referenced
by Bess Sadler at 2022-10-10 20:43:55.merged
by Bess Sadler at 2022-10-10 20:43:55.closed
by Bess Sadler at 2022-10-10 20:43:55.head_ref_deleted
by Bess Sadler at 2022-10-10 20:43:55.assigned
by James R. Griffin III at 2022-10-10 15:23:34.closed
by Bess Sadler at 2022-10-10 20:43:56.redescribed this record: https://dataspace.princeton.edu/handle/88435/dsp01rj4307478
<?xml version="1.0"?>
<resource xsi:schemaLocation='http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://datacite.org/schema/kernel-4'>
<identifier identifierType='DOI'>10.34770/gg40-tc15</identifier>
<creators>
<creator>
<creatorName>Kim, Donghoon</creatorName>
<givenName>Donghoon</givenName>
<familyName>Kim</familyName>
</creator>
<creator>
<creatorName>Tracy, Sally J</creatorName>
<givenName>Sally J</givenName>
<familyName>Tracy</familyName>
</creator>
<creator>
<creatorName>Smith, Raymond F</creatorName>
<givenName>Raymond F</givenName>
<familyName>Smith</familyName>
</creator>
<creator>
<creatorName>Gleason, Arianna E</creatorName>
<givenName>Arianna E</givenName>
<familyName>Gleason</familyName>
</creator>
<creator>
<creatorName>Bolme, Cindy A</creatorName>
<givenName>Cindy A</givenName>
<familyName>Bolme</familyName>
</creator>
<creator>
<creatorName>Prakapenka, Vitali B</creatorName>
<givenName>Vitali B</givenName>
<familyName>Prakapenka</familyName>
</creator>
<creator>
<creatorName>Appel, Karen</creatorName>
<givenName>Karen</givenName>
<familyName>Appel</familyName>
</creator>
<creator>
<creatorName>Speziable, Sergio</creatorName>
<givenName>Sergio</givenName>
<familyName>Speziable</familyName>
</creator>
<creator>
<creatorName>Wicks, June K</creatorName>
<givenName>June K</givenName>
<familyName>Wicks</familyName>
</creator>
<creator>
<creatorName>Berryman, Eleanor J</creatorName>
<givenName>Eleanor J</givenName>
<familyName>Berryman</familyName>
</creator>
<creator>
<creatorName>Han, Sirus K</creatorName>
<givenName>Sirus K</givenName>
<familyName>Han</familyName>
</creator>
<creator>
<creatorName>Schoelmerich, Markus O</creatorName>
<givenName>Markus O</givenName>
<familyName>Schoelmerich</familyName>
</creator>
<creator>
<creatorName>Lee, Hae Ja</creatorName>
<givenName>Hae Ja</givenName>
<familyName>Lee</familyName>
</creator>
<creator>
<creatorName>Nagler, Bob</creatorName>
<givenName>Bob</givenName>
<familyName>Nagler</familyName>
</creator>
<creator>
<creatorName>Cunningham, Eric F</creatorName>
<givenName>Eric F</givenName>
<familyName>Cunningham</familyName>
</creator>
<creator>
<creatorName>Akin, Minta C</creatorName>
<givenName>Minta C</givenName>
<familyName>Akin</familyName>
</creator>
<creator>
<creatorName>Asimow, Paul D</creatorName>
<givenName>Paul D</givenName>
<familyName>Asimow</familyName>
</creator>
<creator>
<creatorName>Eggert, Jon H</creatorName>
<givenName>Jon H</givenName>
<familyName>Eggert</familyName>
</creator>
<creator>
<creatorName>Duffy, Thomas S</creatorName>
<givenName>Thomas S</givenName>
<familyName>Duffy</familyName>
</creator>
</creators>
<titles>
<title>Femtosecond X-ray Diffraction of Laser-shocked Forsterite (Mg2SiO4) to 122 GPa</title>
</titles>
<publisher>Princeton University</publisher>
<resourceType resourceTypeGeneral='Dataset'/>
<publicationYear>2020</publicationYear>
<relatedIdentifiers>
<relatedIdentifier relationType='IsIdenticalTo' relatedIdentifierType='ARK'>ark:/88435/dsp01rj4307478</relatedIdentifier>
</relatedIdentifiers>
<version>1</version>
<rightsList>
<rights rightsURI='https://creativecommons.org/licenses/by/4.0/' rightsIdentifier='CC BY'>Creative Commons Attribution 4.0 International</rights>
</rightsList>
</resource>
review_requested
by Tyler Wade at 2022-10-10 21:20:30.referenced
by Francis Kayiwa at 2022-10-10 12:34:18.merged
by Francis Kayiwa at 2022-10-10 12:34:18.closed
by Francis Kayiwa at 2022-10-10 12:34:18.head_ref_deleted
by Francis Kayiwa at 2022-10-10 12:34:19.closed
by Francis Kayiwa at 2022-10-10 12:34:19.labeled
by Jane Sandberg at 2022-10-10 15:14:07.labeled
by Jane Sandberg at 2022-10-10 15:14:29.Note: pudl has been decommissioned, but we are still redirecting the domain, so we need to maintain the certificates.
Hey team! Please add your planning poker estimate with Zenhub @christinach @leefaisonr @maxkadel @regineheberlein @rladdusaw @sandbergja
labeled
by Jane Sandberg at 2022-10-10 15:14:29.mentioned
by None at 2022-10-10 15:46:40.subscribed
by None at 2022-10-10 15:46:40.mentioned
by Jane Sandberg at 2022-10-10 15:46:40.subscribed
by Jane Sandberg at 2022-10-10 15:46:40.mentioned
by Christina Chortaria at 2022-10-10 15:46:40.subscribed
by Christina Chortaria at 2022-10-10 15:46:40.mentioned
by None at 2022-10-10 15:46:41.subscribed
by None at 2022-10-10 15:46:41.mentioned
by Max Kadel at 2022-10-10 15:46:41.subscribed
by Max Kadel at 2022-10-10 15:46:41.mentioned
by Robert-Anthony Lee-Faison at 2022-10-10 15:46:41.subscribed
by Robert-Anthony Lee-Faison at 2022-10-10 15:46:41.Hey team! Please add your planning poker estimate with Zenhub @christinach @leefaisonr @maxkadel @regineheberlein @rladdusaw @sandbergja
Also Drupal 7. - Run locally with PHP 8.1 - make sure site comes up and admin backend works - Refresh cache locally and the drupal cron task - Check the active "feeds" importers for libcal events. Run manually at the /import route. - Update ansible role to use php 8.1 - Deploy to staging - Deploy to prod
labeled
by Jane Sandberg at 2022-10-10 15:14:28.mentioned
by None at 2022-10-10 15:48:40.subscribed
by None at 2022-10-10 15:48:40.mentioned
by Jane Sandberg at 2022-10-10 15:48:40.subscribed
by Jane Sandberg at 2022-10-10 15:48:40.mentioned
by Christina Chortaria at 2022-10-10 15:48:40.subscribed
by Christina Chortaria at 2022-10-10 15:48:40.mentioned
by None at 2022-10-10 15:48:41.subscribed
by None at 2022-10-10 15:48:41.mentioned
by Max Kadel at 2022-10-10 15:48:41.subscribed
by Max Kadel at 2022-10-10 15:48:41.mentioned
by Robert-Anthony Lee-Faison at 2022-10-10 15:48:41.subscribed
by Robert-Anthony Lee-Faison at 2022-10-10 15:48:41.Hey team! Please add your planning poker estimate with Zenhub @christinach @maxkadel @regineheberlein @rladdusaw @sandbergja @leefaisonr
labeled
by Jane Sandberg at 2022-10-10 15:14:30.mentioned
by None at 2022-10-10 15:41:13.subscribed
by None at 2022-10-10 15:41:13.mentioned
by Jane Sandberg at 2022-10-10 15:41:13.subscribed
by Jane Sandberg at 2022-10-10 15:41:13.mentioned
by Christina Chortaria at 2022-10-10 15:41:13.subscribed
by Christina Chortaria at 2022-10-10 15:41:13.mentioned
by None at 2022-10-10 15:41:13.subscribed
by None at 2022-10-10 15:41:13.mentioned
by Max Kadel at 2022-10-10 15:41:13.subscribed
by Max Kadel at 2022-10-10 15:41:13.mentioned
by Robert-Anthony Lee-Faison at 2022-10-10 15:41:13.subscribed
by Robert-Anthony Lee-Faison at 2022-10-10 15:41:13.assigned
by Jane Sandberg at 2022-10-10 16:00:38.Upgrade procedure from researchdata: https://github.com/pulibrary/researchdata/blob/main/docs/php_upgrade.md
In theory, the only ansible change needed should be the PHP version in group vars.
Hey team! Please add your planning poker estimate with Zenhub @christinach @leefaisonr @maxkadel @regineheberlein @rladdusaw @sandbergja
labeled
by Kevin Reiss at 2022-10-10 15:14:19.mentioned
by None at 2022-10-10 15:44:52.subscribed
by None at 2022-10-10 15:44:52.mentioned
by Jane Sandberg at 2022-10-10 15:44:53.subscribed
by Jane Sandberg at 2022-10-10 15:44:53.mentioned
by Christina Chortaria at 2022-10-10 15:44:53.subscribed
by Christina Chortaria at 2022-10-10 15:44:53.mentioned
by None at 2022-10-10 15:44:53.subscribed
by None at 2022-10-10 15:44:53.mentioned
by Max Kadel at 2022-10-10 15:44:53.subscribed
by Max Kadel at 2022-10-10 15:44:53.mentioned
by Robert-Anthony Lee-Faison at 2022-10-10 15:44:54.subscribed
by Robert-Anthony Lee-Faison at 2022-10-10 15:44:54.assigned
by Max Kadel at 2022-10-10 16:07:38.Related to #2871
Tasks: - [ ] Copy one of the existing playbooks to create a generic file titled (playbooks/lib_svn.yml) - [ ] Add a name line to the new playbook - [ ] Change the 'hosts' line to accept either staging or production - [ ] Change the vars files to accept either staging or production - [ ] Test in staging - [ ] We want default to 'staging' for both hosts and variables - [ ] Change the slack message to include play name and host names
Check the active "feeds" importers for libcal and staff directory
Update ansible role to use php 8.1
Deploy to staging
Deploy to prod
Hey team! Please add your planning poker estimate with Zenhub @sandbergja @maxkadel @leefaisonr
Hey team! Please add your planning poker estimate with Zenhub @christinach @regineheberlein @rladdusaw
labeled
by Jane Sandberg at 2022-10-10 15:14:28.mentioned
by Jane Sandberg at 2022-10-10 15:33:20.subscribed
by Jane Sandberg at 2022-10-10 15:33:20.mentioned
by Max Kadel at 2022-10-10 15:33:20.subscribed
by Max Kadel at 2022-10-10 15:33:20.mentioned
by Robert-Anthony Lee-Faison at 2022-10-10 15:33:20.subscribed
by Robert-Anthony Lee-Faison at 2022-10-10 15:33:20.mentioned
by None at 2022-10-10 15:34:25.subscribed
by None at 2022-10-10 15:34:25.mentioned
by Christina Chortaria at 2022-10-10 15:34:25.subscribed
by Christina Chortaria at 2022-10-10 15:34:26.mentioned
by None at 2022-10-10 15:34:26.subscribed
by None at 2022-10-10 15:34:26.assigned
by Jane Sandberg at 2022-10-10 19:28:45.head_ref_force_pushed
by Robert-Anthony Lee-Faison at 2022-10-10 22:07:30.referenced
by Trey Pendragon at 2022-10-10 17:44:48.merged
by Trey Pendragon at 2022-10-10 17:44:48.closed
by Trey Pendragon at 2022-10-10 17:44:48.head_ref_deleted
by Trey Pendragon at 2022-10-10 17:44:49.closed
by Trey Pendragon at 2022-10-10 17:44:49.head_ref_force_pushed
by Thanya Begum at 2022-10-10 18:18:51.review_requested
by Thanya Begum at 2022-10-10 18:33:46.deployed
by None at 2022-10-10 18:46:21.referenced
by None at 2022-10-10 18:51:19.merged
by None at 2022-10-10 18:51:19.closed
by None at 2022-10-10 18:51:19.head_ref_deleted
by None at 2022-10-10 18:51:20.closed
by None at 2022-10-10 18:51:20.I imported what was in our SFTP dropbox, but that gave me 140 objects, while there are only 139 in the spreadsheet Lynn sent.
I sent this email to Lynn:
Dear Lynn,
I’ve imported the dissertations as requested. There does appear to be a discrepancy, though.
The spreadsheet you sent has 139 doctoral dissertations in it. However, I downloaded and imported 140 objects from ProQuest, after I removed the Ramsurrun thesis.
Is it possible that ProQuest sent over an extra work that isn’t listed on the spreadsheet? I’m unsure how to find it except to go through line by line. Is this a thing you’ll find as you quality check the import? What do you advise?
Thank you, Bess
assigned
by Bess Sadler at 2022-10-10 14:40:57.No longer needed, closing.
closed
by Kate Lynch at 2022-10-10 18:57:36.referenced
by Hector Correa at 2022-10-10 19:05:35.merged
by Hector Correa at 2022-10-10 19:05:35.closed
by Hector Correa at 2022-10-10 19:05:35.head_ref_deleted
by Hector Correa at 2022-10-10 19:05:36.closed
by Hector Correa at 2022-10-10 19:05:36.referenced
by Hector Correa at 2022-10-10 19:06:20.merged
by Hector Correa at 2022-10-10 19:06:20.closed
by Hector Correa at 2022-10-10 19:06:20.head_ref_deleted
by Hector Correa at 2022-10-10 19:06:20.assigned
by Kate Lynch at 2022-10-10 14:33:35.closed
by Hector Correa at 2022-10-10 19:06:21.referenced
by Hector Correa at 2022-10-10 19:27:30.merged
by Hector Correa at 2022-10-10 19:27:30.closed
by Hector Correa at 2022-10-10 19:27:30.head_ref_deleted
by Hector Correa at 2022-10-10 19:27:31.assigned
by Kate Lynch at 2022-10-10 18:52:03.closed
by Hector Correa at 2022-10-10 19:27:31.


Ayyappa temple to open today evening
41-day Sabarimala pilgrim season to begin on Sunday
by Radhakrishnan KuttoorWith the Ayyappa temple set to open for the two-month annual Mandalam-Makaravilakku pilgrim season on Saturday evening, Sabarimala is bustling with activity.
The outgoing Melsanthi, V.N. Vasudevan Namboodiri, will open the sanctum sanctorum at 5 p.m. for the 41-day pilgrim season that begins on Sunday, the first day of the Malayalam month of Vrishchikom.
New priests
The ceremonial installation (abhishekom) of A.K. Sudheer Namboodiri as the new head priest (Melsanthi) of the Ayyappa temple will be held at the temple sopanam on Saturday evening. Installation of M.S. Parameswaran Namboodiri as the new Melsanthi of the Malikappuram Devi temple will be held at Malikappuram later.
Tantri (chief priest) Kandararu Maheswararu Mohanararu will perform the installation rites.
The temple rituals will begin with the Tantri performing the Ashtadravya Maha Ganapati homom on Sunday morning.
16 hours a day
The Ayyappa temple will be kept open for 16 hours a day — from 4 a.m. to 1 p.m. and 4 p.m. to 11 p.m. — during the Mandalam season, according to Travancore Devaswom Board president N. Vasu.
Mandalapuja marking culmination of the 41-day Mandalam pilgrimage will be held on December 27 and the temple will be closed in the evening.
The temple will be opened again on December 30 afternoon for the Makaravilaku festival. The Petta thullal at Erumeli will be held on January 12 and the
ceremonial procession carrying the sacred attire, ‘Thiruvabharanam’, will set off to Sabarimala from Pandalam on January 13.
Makarvilakku will be celebrated on January 15.
The Ayyappa temple will be closed after facilitating the customary darshan exclusively for the royal representative from the Pandalam Palace on January 21 morning.


This example is very simple in that it is not intended to be a finished tree, rather a good starting point for a tree with some custom behavior.
This tree can have as many nested child nodes as desirable and does not have to have a root node.
View src/js/TreeData.js to see sample data structure, it needs to have some sort of way to identify the checkboxes so currently each node needs a unique id.
The checkboxes act independently of the tree. Clicking the +/− icon or the label for the tree node will toggle the children. Clicking a checkbox will activate the checkbox and if the checkbox has children, it will toggle all the children to the same state as itself. This behavior can be easily modified per your requirements for the tree.


Arduboy Game Image Converter
Using Chrome, paste an image into this page. Click the image to copy the resulting code and enjoy!
Image code copied to the clipboard!
Test it out on your arduboy now:
View on GitHub


Hi! My name is Yadukumari Shanthigrama Ramesh. I'm actively seeking automation QA positions in the Bay Area.
I have previously worked as a Software Quality Assurance Intern at Espresa in Palo Alto, California.
Hi! My name is Yadukumari Shanthigrama Ramesh. I'm actively seeking automation QA positions in the Bay Area.
I have previously worked as a Software Quality Assurance Intern at Espresa in Palo Alto, California.
You can find my latest resume at GitHub - Yadu Resume.
Hangman game implementation in Python using turtle graphics module
A simple website related to Indian cuisine cooking using HTML and CSS


{% load static i18n %} {% url 'home' as home_url %}
Use this document as a way to quick start any new project.


Krystal Cox
About
(current)
Portfolio
Contact
Portfolio
Hangman
RPG Game
Trivia Game
Rutgers Info Widget
Rock Paper Scissors
Github


Toggle navigation
Cardinal
Home
Developer
Source
Technical Support
Logout
Access Point Statistics
Add Access Point
Add Access Point Group
Delete Access Point
Delete Access Point Group
Network Toolkit
Manage Access Point
Manage Access Point Group
Add SSIDs
Delete SSIDs


Old Farmer Frack! Old Farmer Frack!
What are you carrying in your sack?
I've half a dozen weasels in my sack,
Three for Jill and three for Jack.
Are you sure they're weasels and not stoats?

No, they're weasels, of that I'm sure
Now get in the barn and lock the door.
And Old Farmer Frack burns the barn to the ground
And swings his sack o' weasels round and round
Then he climbs up to the top of Polkadot Hill
And gives the sack o' weasels to Jack and Jill
Oh thank you, thank you, Old Farmer Frack!
We've always wanted weasels in a sack!


Rules
If the player rolls a 1, they score nothing and it becomes the next player's turn.
If the player rolls any other number, it is added to their turn total and the player's turn continues.
If a player chooses to "hold", their turn total is added to their score, and it becomes the next player's turn.
The first player to score 100 or more points wins.
Points Total:
0
current rolls:
current points:
0
Points Total:
0
current rolls:


Fast and easy searching inside a page.
Holmes filters a list of elements based on the value of a input
in just ~2KB.
Installation
You can install Holmes with either npm
or bower
under the package name holmes.js
. For npm
that looks like this:
$ yarn add holmes.js # or via npm
After which you can add it in your page with i.e. webpack, rollup, browserify or loading the module in a different script tag.
You have to make sure that you have a css
rule for the class .hidden
that hides elements however you want. One option is to have this:
.hidden {
display: none;
}
but this could be any css
you want.
Usage
When should I use it?
You should use Holmes when
- you have a limited amount of items
- you don't need typo-tolerance
- you only want to add a really small library
- all items are already visible on the page
In cases where you have a more complicated expectation, I'd suggest using a service like Algolia.
Fair disclosure: I currently work at Algolia, does it seem interesting? Join us!
Simple example
holmes({
input: '.search input', // default: input[type=search]
find: '.results div' // querySelectorAll that matches each of the results individually
})
Options
input
default: input[type=search]
querySelector for the input
examples: input
, .search input
find
required
querySelectorAll for elements to search in
examples: blockquote p
, .result
, .results div
class
class.hidden
default: hidden
Class to add when the a .find
doesn't contain the search query.
examples: hidden
, dn
, none
class.visible
default: false
Class to add to visible items if they contain the search query.
examples: visible
, vis
, nohidden
placeholder
default: false
html to show when no results.
examples: <p> No results </p>
, Didn't find anything.
dynamic
default: false
Enable this option if you want Holmes to query the value of the .find
at every input.
examples: true
, false
instant
:warning: DEPRECATED
default: false
This option is deprecated. To use Holmes in an async environment, initialise it with:
holmes(options).start();
// or
const h = new holmes(options);
h.start();
This way it'll start immediately, just like it used to do with instant: true
. Sorry for the inconvenience.
By default Holmes will wait on a DOMContentLoaded
event to start searching. If you're loading the elements by AJAX
for example this event comes too early. In that case you can enable instant
, and start Holmes when your content is ready.
examples: true
, false
minCharacters
default: 0
A minimum amount of characters need to be typed before Holmes starts filtering.
examples: 2
, 5
mark
default: false
To start showing the result in a <mark>
tag inside the .find
, you should enable this. To change the colour this match
is shown in, you should style the mark
background-color.
:exclamation: this will break event listeners on nested content
:exclamation: this won't work if the character after the match is a literal
>
.:speaking_head: If you really have to use this character, you can replace all occurences of
>
by>
examples: true
, false
hiddenAttr
default: true
Adds hidden="true"
to hidden elements. Interesting link explaining its use.
shouldShow
default match judgment is a partial match of the input value.
function(htmlText, search) {
return htmlText.indexOf(search) !== -1;
}
A custom matching function to be called with as first argument the text of an element, and as second argument the current input text. This should return true if you want the element to show, and false if it needs to be hidden.
var customMatching = function(htmlText, search) {
return search.split(/\s+/).every(function(v, i) {
if (htmlText.indexOf(v) === -1) {
return false;
}
return true;
});
}
holmes({
shouldShow: customMatching
})
onHidden
Callback for when an item is hidden.
function(el) {
console.log('hide',el);
}
onVisible
Callback for when an item is visible again.
function(el) {
console.log('show',el);
}
onEmpty
Callback for when no items were found.
function(placeholder) {
console.log('nothing found',placeholder);
}
onFound
Callback for when items are found after being empty.
function(placeholder) {
console.log('something found',placeholder);
}
onInput
Callback for every input.
function(input) {
console.log('current input',input);
}
Methods and members
For all of the methods you should initialise a new instance of Holmes like this:
var h = new holmes(options);
Then you can use the following methods:
.clear()
You can clear a holmes input programmatically, by using:
h.clear();
.count()
You can receive informations on what elements are visible, hidden and in total at any point:
h.count(); // {all: 41, hidden: 34, visible: 7}
.start()
Start an even listener for the specified options. Holmes always has .start()
running on initialisation.
h.start();
.stop()
Stops the current running event listener. Resolves a Promise when this has been completed.
h.stop();
h.start(); // could accidentally start too soon
h.stop().then(h.start); // might take a small time
.hidden
There's also a member .hidden
that gives the count without a function call:
console.log(h.hidden); // 34
.elements
A NodeList
of all of the elements that holmes considers. There's also .elementsLength
for the amount of elements and .elementsArray
with an array of the elements.
.input
The input that holmes looks in. There's also the last search string as .searchString
.placeholder
The current placeholder (DOM Node).
.running
Whether or not this instance is running.
.options
Shows the options chosen chosen for this instance of holmes. You can also set options like this after initialisation.
console.log(h.options); // specified options
note: setting options after it's running might require
h.stop().then(h.start)
Showcase
| What | who | image |
|---|---|---|
| bullg.it | @haroenv | |
| family.scss | @lukyvj | |
| wikeo.be | @bistory | |
| lunchbreakapp.be | @AndreasBackx |
I'd love to find out how people use my project, let me know if you want to be featured!
Questions?
Compatible up to IE11. For support of older browsers you'll need to polyfill classList
, addEventListener
and the input
event with for example remy/polyfills. I haven't tried this myself yet, so let me know what you used if you support older browsers!
For IE11 you need to polyfill Object.assign
and String.includes
, you can do that as described in #90
Let me know on twitter: @haroenv, or in an issue.
Contributing
Contributions are always welcome! Here are some loose guidelines:
- use
feature branches
- don't make it slower
- explain why you want a feature
npm run doc
to recreate the documentation
Building to a UMD is done via rollup (npm run build
).
But I don't bite, if you have any questions or insecurities, hit me up for example on gitter.
License
Apache 2.0


Cooperative Multithreading
Multithreading is the capacity to execute simultaneously multiple executions independently from each other. This feature is essential in distributed systems for many reasons. For example, threads can be used to service different clients requesting the same service independently, so they do not interfere with each other. In this section, we present the multithreading support of OiL and how it is used.
Coroutines
Lua does not provide standard support for multithreading.
However, it provides the concept of coroutines, which can be used to implement a cooperative multithreading infrastructure.
Unlike preemptive multithreading, as provided by Java or POSIX Threads, the execution switch between threads does not occur automatically.
Instead the code executed by the coroutine must explicitly signal for execution switch by invocation of operation coroutine.yield()
.
Lua coroutines are created by operation coroutine.create(function)
.
The function passed as parameter is the code executed by the coroutine.
Every time the coroutine executes function coroutine.yield()
the coroutine yields the execution to the function that initiated its execution by calling operation coroutine.resume(coroutine)
.
For further information about Lua coroutines, check the chapter on Coroutines of the book Programming in Lua
Scheduler
Coroutines provide means to create independent execution threads, however it is up to the application to manage the execution of these threads. To perform this management, OiL uses a coroutine scheduler. The scheduler keeps a collection of all the threads of the system. These threads are then scheduled for execution, in such way that whenever a coroutine yields its execution, the scheduler chooses another coroutine for execution following a round-robin algorithm.
Since the coroutine scheduler is not part of the standard virtual machine of Lua, it must be created and started by the application.
This can be done by operation oil.main
(mainbody)
that creates and initiates the execution of the scheduler with a single thread registered that executes the function mainbody
provided as parameter.
After this operations is called, other threads can be created with operation oil.newthread
(function, ...)
that register new coroutines to execute the function informed as the first parameter, and starts its execution immediately.
The scheduler also provides other operations to register or unregister as described here.
Synchronization
Cooperative multithreading is far more simple to understand and use.
For example, the implementation of synchronization mechanisms is far more simple to be implemented.
In OiL, to implement these mechanisms, we use only operations oil.tasks:suspend()
and oil.tasks:resume(thread, ...)
provided by the scheduler as illustrated in the example below.
To implement mutual exclusion between a set of cooperative threads that access a shared resource, we can use global variables or other shared memory space to indicate when a thread is using the shared resource and also to register the threads waiting for their turn to use the resource. For example, consider the following implementation.
local Mutex = { waiting = {} } function Mutex:enter() local thread = oil.tasks.current if self.inside then self.waiting[thread] = true oil.tasks:suspend() else self.inside = thread end end function Mutex:leave() assert(self.inside == oil.tasks.current) local waiting = next(self.waiting) if waiting then self.waiting[waiting] = nil self.inside = waiting oil.tasks:resume(waiting) else self.inside = nil end end
A similar approach can be used to provide other synchronization mechanisms to common problems like Producers and Consumers
Limitations
The multithreading model used by OiL presents two strong limitations.
The first one is due to a limitation of the coroutines in Lua, which cannot yield execution inside some special places, like metamethods, for interators or C functions exported to Lua.
A particular case for this is that coroutines cannot yield execution inside a pcall(function, ...)
.
Therefore, you usually cannot invoke a remote operation inside such functions because OiL will most likely generate an yield to allow other threads to execute while it waits for the reply of the remote invocation.
To alleviate the problem of the pcall
function, OiL provides the alternative implementation oil.pcall
(function, ...)
, which can be used inside threads.
The other limitation is that the thread scheduler is not integrated to the underlying operating system.
Therefore, any blocking system call performed by a thread will eventually suspend the execution of the application as a whole since the coroutine does not yield the execution back to the scheduler.
This is particularly true for file operations that suspend the entire execution of the application regardless of the number of other independent threads that might be ready to execute.
For socket operations in particular, OiL provides a cooperative API similar to the one provided by LuaSocket, as described here.
This cooperative socket API is provided by field oil.tasks.sockets
.


Object Oriented Programming (OOP)¶
In this chapter we are going to learn how to use the Object-Oriented programming paradigm inside the Ring programming language.
We will learn about
- Classes and Objects
- Access Objects Using Braces
- Composition
- Setter and Getter
- Private Attributes and Methods
- Operator Overloading
- Inheritance
- Dynamic Attributes
- Packages
- Printing Objects
- Find() and List of Objects
- Sort() and List of Objects
- Using Self.Attribute and Self.Method()
- Using This.Attribute and This.Method()
Classes and Objects¶
We can define new classes using the next syntax
Syntax:
Class <Class Name> [From|<|: <Parent Class Name>]
[Attributes]
[Methods]
[Private
[Attributes]
[Methods]
]
And we can create objects using the next syntax
Syntax:
New <Object Name> [ (init method parameters) ] |
[ { access object data and methods } ] ---> Object
Example:
New point { x=10 y=20 z=30 print() }
Class Point x y z func print see x + nl + y + nl + z + nl
Note
We can use { } to access object data and methods.
Tip
we can declare the class attributes directly after the class name.
Output:
10
20
30
We can rewrite the same program in another style
New point # create new object using the point class
{ # access the new object attributes and methods
x = 10 # set the x attribute to 10
y = 20 # set the y attribute to 20
z = 30 # set the z attribute to 30
print() # call the print method
} # end of object access
Class Point # define the Point class
x y z # the class contains three attributes x, y & z
func print # define the print method
see x + nl + # print the x attribute
y + nl + # print the y attribute
z + nl # print the z attribute
Also we can write the same program in another way
P1 = New Point
P1.x = 10
P1.y = 20
P1.z = 30
P1.Print()
Class Point x y z func print see x + nl + y + nl + z + nl
Note
we can use the dot operator after the object name to access object members.
Also we can write the same program in another way
new point { print() }
Class Point
x = 10 y = 20 z = 30
func print see x + nl + y + nl + z + nl
Note
we can set the default values for the class attributes when we declare them.
Also we can write the same program in another way
new point(10,20,30)
Class Point
x y z
func init p1,p2,p3 x=p1 y=p2 z=p3 print()
func print see x + nl + y + nl + z + nl
Note
we can call the init method directly using () when we create new objects
Also we can write the same program in another way
new point( [ :x = 10 , :y = 20 , :z = 30 ] )
Class Point x y z
func init aPara x = aPara[:x] y = aPara[:y] z = aPara[:z] print()
func print see x + nl + y + nl + z + nl
Tip
using Hash for passing method parameters enable us to create optional parameters and change the order of parameters when adding them to the Hash.
Access Objects Using Braces¶
We can access the object at any time using braces { }
Inside the braces we can use the object attributes and methods directly
This can be done when we create the object using the New keyword or at any time using the next syntax
ObjectName { access object data and methods }
Example:
See "Creating the Object" + nl
o1 = new Point
See "Using the Object" + nl
o1 {
x=5
y=15
z=25
print()
}
Class Point x y z func print see x + nl + y + nl + z
We can use braces to access objects when we call functions or methods
Example:
o1 = new Point
print( o1 { x=10 y=20 z=30 } )
func print object
see object.x + nl +
object.y + nl +
object.z
Class Point x y z
We can mix between using braces and the dot operator to access the object in the same expression.
Example:
o1 = new Point
O1 { x=10 y=20 z=30 }.print()
Class Point x y z
func print see x + nl + y + nl + z
Composition¶
The object may contains other objects as attributes.
Using braces to access objects can be nested.
Example:
R1 = New Rectangle
{
Name = "Rectangle 1"
P1
{
X = 10
Y = 20
}
P2
{
X = 200
Y = 300
}
Color = "Blue"
}
see "Name : " + R1.Name + nl +
"Color: " + R1.Color + nl +
"P1 : (" + R1.P1.X + "," + R1.P1.Y + ")" + nl +
"P2 : (" + R1.P2.X + "," + R1.P2.Y + ")"
Class Rectangle
name color
p1 = new Point
p2 = new Point
Class Point x y
Output:
Name : Rectangle 1
Color: Blue
P1 : (10,20)
P2 : (200,300)
Setter and Getter¶
We can define methods to be used when we set and get object attributes.
Syntax:
Class ClassName
AttributeName
...
Func SetAttributeName
...
Func GetAttributeName
...
Example:
o1 = new person
o1.name = "Mahmoud" see o1.name + nl
o1 { name = "Ahmed" see name }
Class Person
name family = "Fayed"
func setname value
see "Message from SetName() Function!" + nl
name = value + " " + family
func getname
see "Message from GetName() Function!" + nl
return "Mr. " + name
Output:
Message from SetName() Function!
Message from GetName() Function!
Mr. Mahmoud Fayed
Message from SetName() Function!
Message from GetName() Function!
Mr. Ahmed Fayed
Private Attributes and Methods¶
We can define private attributes and methods after the keyword private inside the class body
Example:
o1 = new person {
name = "Test"
age = 20
print()
o1.printsalary()
}
try
see o1.salary
catch
see cCatchError + nl
done
try
o1.increasesalary(1000)
catch
see cCatchError + nl
done
Class Person
name age
func print
see "Name : " + name + nl +
"Age : " + age + nl
func printsalary
see "Salary : " + salary + nl
private
salary = 15000
func increasesalary x
salary += x
Output:
Name : Test
Age : 20
Salary : 15000
Error (R27) : Using private attribute from outside the class : salary
Error (R26) : Calling private method from outside the class : increasesalary
Operator Overloading¶
We can add the operator method to our class to enable using operators with the class objects.
Syntax:
Class ClassName
...
Func operator cOperator,Para
...
The function operator takes two paramters, the first represent the operator and the second represent the second parameter after the operator.
Example:
o1 = new point { x = 10 y = 10 print("P1 : ") }
o2 = new point { x = 20 y = 40 print("P2 : ") }
o3 = o1 + o2
o3.print("P1+P2 : ")
class point x y
func operator cOperator,Para
result = new point
switch cOperator
on "+"
result.x = x + Para.x
result.y = y + Para.y
on "-"
result.x = x - Para.x
result.y = y - Para.y
off
return result
func print cPoint
see cPoint + "X : " + x + " Y : " + y + nl
Output:
P1 : X : 10 Y : 10
P2 : X : 20 Y : 40
P1+P2 : X : 30 Y : 50
The next example from the List class in the stdlib.ring
Func operator cOperator,Para
result = new list
switch cOperator
on "+"
if isobject(para)
for t in Para.vValue
vValue + t
next
but islist(para)
for t in Para
vValue + t
next
ok
on "len"
return len( vValue )
on "[]"
return &vValue[para]
off
return result
The “len” operator is used with (for in) control structure.
The “[]” operator is used when we try to access the list items, In this case we use the & operator to return the item values like strings an numbers by reference, so we can update it when we access the items.
Another Example
func main
See "----1"+nl
a1 = new BigNumber( "123" )
a2 = new BigNumber( "456" )
a3 = new BigNumber( "789" )
See nl+"----2"+nl
a1.print()
a2.print()
a3.print()
See nl+"----3"+nl
a2 = a1 + "45"
See nl+"----4"+nl
a2.print()
See nl+"----5"+nl
a3 = a1 + a2
See nl+"----6"+nl
a3.print()
See nl+"----7"+nl
###==================================
Func FuncAdd( num1, num2)
Sum = 0 + num1 + num2 ### Para.aData isNumber
Sum = "" +Sum ### Para.adata isString
return Sum ### return to Class
###===================================
class BigNumber
### Variables
aData = "468"
### Functions INIT default values
func init aPara
? "INIT aPara: " ? aPara
if isString(aPara)
aData = aPara
else
aData = "" + aPara
ok
### Other Functions
func operator cOperator, Para
whatType = Type(Para)
? nl+"WhatType-PARA: "+ whatType ? Para
? nl+"Operator: " ? cOperator ? nl+"PARA: " ? Para ? " ______" ? nl
if whatType = "STRING"
dataInfo = Para
? "dataInfo String: " ? dataInfo
but whatType = "NUMBER"
datinfo = "" + Para
? "dataInfo Number: " ? dataInfo
else whatType = "OBJECT"
dataInfo = "" + para.aData
? "dataInfo OBJECT: " ? dataInfo
ok
? "dataInfo USING: " ? dataInfo
### Para.aData does NOT exist on first pass ( Object with member)
### Result isObject when assigned "self"
result = self
switch cOperator
on "+"
answer = FuncAdd( aData, dataInfo )
? nl+"AnswerString - FunAdd aData, dataInfo: " ? answer
### result = self, is Object, populate Object with aData member
result.aData = answer
off
### Result = Self is Object
return result
func print
? nl+"ClassPrint aData: " ? aData
Inheritance¶
We can create class from another class in the class definition using the keyword from.
Syntax:
Class <Class Name> [From <Parent Class Name>]
We can call a method in the parent class from the child class using the super object.
Syntax:
func methodname
...
super.methodname()
...
Example:
Func main
e1 = new Employee {
Name = "test"
age = 20
job = "programmer"
salary = 20000000
print()
}
Class Human
Name Age
func print
see "Name : " + name + nl + "Age : " + age + nl
Class Employee from Human
Job Salary
func print
super.print()
see "Job : " + job + nl + "Salary : " + salary + nl
Output:
Name : test
Age : 20
Job : programmer
Salary : 20000000
Dynamic Attributes¶
We can write instructions after the class name to be executed when we create new objects
Example:
o1 = new dynamicClass
see o1.var5 + nl # output 5
Class DynamicClass
for x = 1 to 10
cStr = "var" + x + " = " + x
eval(cStr)
next
Tip
in the previous example var1, var2, ..., var10 will be defined as attributes.
Tip
The problem with the previous example is that x and cStr will be defined as attributes too!
Note
we can write class definitions inside a string then using eval() we can execute the string to define the classes
Packages¶
We can create a package (a group of classes under a common name) using the next syntax
package PackageName
Class Class1
...
Class Class2
...
Class Class3
...
...
Example
o1 = new System.output.console
o1.print("Hello World")
Package System.Output
Class Console
Func Print cText
see cText + nl
Note
we can use the dot operator as part of the package name
Instead of typing the long name PackageName.ClassName we can use the import command
When we import a package, we can use any class inside this package directly.
Example
import system.output
o1 = new console {
print("Hello World")
}
Package System.Output
Class Console
Func Print cText
see cText + nl
Printing Objects¶
We can print the object state (attributes and values) using the see command.
Example:
see new point { x=10 y=20 z=30 }
class point x y z
Output:
x: 10.000000
y: 20.000000
z: 30.000000
Find() and List of Objects¶
We can use the find() function to search inside a list of objects.
Syntax:
Find(List,ItemValue,nColumn,cAttribute) ---> Item Index
Example:
myList1 = [new Company {position=3 name="Mahmoud" symbol="MHD"},
new Company {position=2 name="Bert" symbol="BRT"},
new Company {position=1 name="Ring" symbol="RNG"}
]
see find(mylist1,"Bert",1,"name") + nl
see find(mylist1,"Ring",1,"name") + nl
see find(mylist1,"Mahmoud",1,"name") + nl
see find(mylist1,"RNG",1,"symbol") + nl
see find(mylist1,"MHD",1,"symbol") + nl
see find(mylist1,"BRT",1,"symbol") + nl
see find(mylist1,3,1,"position") + nl
see find(mylist1,1,1,"position") + nl
see "Other" + nl
see find(mylist1,"test",1,"name") + nl
see find(mylist1,"test",0,"name") + nl
see find(mylist1,"test",5,"name") + nl
class company position name symbol
Output:
2
3
1
3
1
2
1
3
Other
0
0
0
Sort() and List of Objects¶
We can sort a list of objects based on an object attribute using the Sort() function.
Syntax:
Sort(List,nColumn,cAttribute) ---> Sorted List based on Object Attribute
Example:
myList1 = [
new Company {position=3 name="Mahmoud" symbol="MHD"},
new Company {position=2 name="Bert" symbol="BRT"},
new Company {position=8 name="Charlie" symbol="CHR"},
new Company {position=6 name="Easy" symbol="FEAS"},
new Company {position=7 name="Fox" symbol="EFOX"},
new Company {position=5 name="Dog" symbol="GDOG"},
new Company {position=4 name="George" symbol="DGRG"},
new Company {position=1 name="Ring" symbol="RNG"}
]
see sort(mylist1,1,"name")
see copy("*",70) + nl
see sort(mylist1,1,"symbol")
see copy("*",70) + nl
see sort(mylist1,1,"position")
class company position name symbol
Output:
position: 2.000000
name: Bert
symbol: BRT
position: 8.000000
name: Charlie
symbol: CHR
position: 5.000000
name: Dog
symbol: GDOG
position: 6.000000
name: Easy
symbol: FEAS
position: 7.000000
name: Fox
symbol: EFOX
position: 4.000000
name: George
symbol: DGRG
position: 3.000000
name: Mahmoud
symbol: MHD
position: 1.000000
name: Ring
symbol: RNG
**********************************************************************
position: 2.000000
name: Bert
symbol: BRT
position: 8.000000
name: Charlie
symbol: CHR
position: 4.000000
name: George
symbol: DGRG
position: 7.000000
name: Fox
symbol: EFOX
position: 6.000000
name: Easy
symbol: FEAS
position: 5.000000
name: Dog
symbol: GDOG
position: 3.000000
name: Mahmoud
symbol: MHD
position: 1.000000
name: Ring
symbol: RNG
**********************************************************************
position: 1.000000
name: Ring
symbol: RNG
position: 2.000000
name: Bert
symbol: BRT
position: 3.000000
name: Mahmoud
symbol: MHD
position: 4.000000
name: George
symbol: DGRG
position: 5.000000
name: Dog
symbol: GDOG
position: 6.000000
name: Easy
symbol: FEAS
position: 7.000000
name: Fox
symbol: EFOX
position: 8.000000
name: Charlie
symbol: CHR
Using Self.Attribute and Self.Method()¶
Inside the class region (After the class name and before any method) and the class methods we can use self.attribute and self.method()
Class Point
self.x = 10
self.y = 20
self.z = 30
func print
see self.x + nl + self.y + nl + self.z + nl
Note
using self.attribute in the class region to define the class attribute protect the class attributes from conflict with global variables.
Tip
if you typed the class attributes with self.attribute and there are a global variable with the same name it will be used and the attribute will not be defined.
Check the “Scope Rules” chapter to know about the conflict between the global variable name and the attribute name
Whay this may happens?
Because
- Because in the class region we can access global variables.
- Before defining any variable, Ring try to find the variable and use it if it’s found.
Note
Try to avoid the global variables, use the main function and start their names with $
Tip
In large programs protect your classes and define their members using self.attribute
Using This.Attribute and This.Method()¶
Inside class methods we have access to the object scope directly. we don’t need to use Self.attribute or Self.method to read/write attribute and call methods.
But we can use braces {} while we are inside methods to access another object, In this case the current object scope will be changed while we are inside the brace.
How we can get access to our class attributes and methods while we are inside braces?
This can be done using This.Attribute and This.Method()
Example:
new point
class point
x=10 y=20 z=30
print()
func print
new UI {
display(this.x,this.y,this.z)
}
Class UI
func display x,y,z
see x + nl + y + nl + z + nl
Using This in the class region as Self¶
The class region is the region that comes after the class name and before any method.
We can use This in the class region as Self.
Example:
func main
o1 = new program {
test()
}
? o1
class program
this.name = "My Application"
this.version = "1.0"
? name ? version
func test
? "Name = " + name
? "Version = " + version
Output
My Application
1.0
Name = My Application
Version = 1.0
name: My Application
version: 1.0
Note
When we use braces to change the current active object, Using This we can still point to the class.
Tip
The difference between This and Self is that Self point to the current active object that we can change using braces.
Remember that in most cases we don’t need to use This or Self in the class region
We can write
class program name version
Or
class program name="My Application" version="1.0"
Note
We use This or Self in the class region just to avoid conflict with global variables that are defined with the same name.
Default value for object attributes¶
The default value for object attributes is NULL
In Ring, the NULL value is just an empty string or a string that contains “NULL”
We can check for NULL values using the isNULL() function
Example:
oProgram = new Program
? oProgram.name
? oProgram.version
? isNULL(oProgram.name)
? isNULL(oProgram.version)
oProgram { name="My Application" version="1.0" }
? isNULL(oProgram.name)
? isNULL(oProgram.version)
? oProgram
class program
name
version
Output:
NULL
NULL
1
1
0
0
name: My Application
version: 1.0


Mass spring damper system
Start
Reset
Free Vibrations
Periodic Load
Transient Load
Applied Force:
1
Spring Constant:
1
Initial Velocity:
0.8
Mass:
1
Initial displacement:
0.8
energy plot
Spring Constant:
1
Damping Constant:
0.1
Mass:
1
Initial displacement:
1
Initial Velocity:
1
$$ 0 \quad \textrm{for} \quad t \leq 0 \\ $$
$$ \quad \textrm{for} \quad t \geq 0 $$


TeeChart for JavaScript
Weather Underground
Options
Inverted Axis
Legend
Series1
Gradient
Legend Shadow
Legend at left
Series1 Color Each
Text Data URL:
Load
Load Data from URL
This browser does not seem to support HTML5 Canvas.