Your text:
This 50,30 EUR are valid at the begin of the text. 10,70 EUR (with a tab after EUR) is also valid. 23,30 EUR, 3 EUR or 12,- EUR in the middle of the text are valid. Invalid are: 03,17 EUR (leading 0), ,56 EUR (no digit before comma), 16,0056 EUR (more than 2 digits after comma), a10,00 EUR (no blank before decimal), 11.00 EUR (decimal separator is a comma, not a point), 7EUR (no blank between digits and EUR), 13,17 eur (EUR should be written in UPPERCASE) and 17,7 EUR (exactly 2 digits after comma). 15,89 EURhas no blank after EUR. All valid amounts of money should sum up to 1000. Amounts between 0 and 1 and linebreaks are not part of this exercise. A valid amount is identified by " EUR " or " EUR," or " EUR." after a valid decimal number(\b) in the middle of the text or at the end of the text " EUR" is also valid. Valid at the end of the text is 900,70 EUR
Convert


Erector - User GuideMake sure to check out the RDoc Documentation for more details on the API.
The BasicsThe basic way to construct some HTML/XML with erector is to subclass Erector::Widget and implement a content method:
API Cheatsheetelement('foo') # <foo></foo> empty_element('foo') # <foo /> html #  (likewise for other common html tags) b 'foo' # foo text 'foo' # foo text '&<>' # &<> (what you generally want, especially # if the text came from the user or a database) text raw('&<>') # &<> (back door for raw html) rawtext('&<>') # &<> (alias for text(raw())) html { text 'foo' } # foo html 'foo' # foo html foo # bar (if the method foo returns the string "bar") a(:href => 'foo.html') #  a(:href => 'q?a&b') #  (quotes as for text) a(:href => raw('&')) #  a 'foo', :href => "bar" # foo text nbsp('Save Doc') # Save Doc (turns spaces into non-breaking spaces) text nbsp() #   (a single non-breaking space) text character(160) #   (output a character given its unicode code point) text character(:right-arrow) # → (output a character given its unicode name) instruct # <?xml version="1.0" encoding="UTF-8"?> javascript('if (x < y && x > z) alert("don\'t stop");') #=>
Pretty-printingErector has the ability to insert newlines and indentation to make the generated HTML more readable. Newlines are inserted before and after certain tags. To enable pretty-printing (insertion of newlines and indentation) of Erector's output, do one of the following:
Using Erector from Ruby on RailsYour views are just ruby classes. Your controller can either call Rails'
For example: app/controllers/welcome_controller.rb:
class WelcomeController < ApplicationController def index render :template => 'welcome/show' end end app/views/welcome/show.rb:
class Views::Welcome::Show < Erector::Widget def content html do head do title "Welcome page" end body do p "Hello, world" end end end end For Rails to find these .rb files during
Currently there is only partial support for some standard Rails features like partials, layouts, assigns, and helpers. Check the erector Google Groups mailing list for status updates on these features. Command-line conversion to and from HTMLTo make Rails integration as smooth as possible, we've written a little tool that will help you erect your existing Rails app. The 'erector' tool will convert HTML or HTML/ERB into an Erector class. It ships as part of the Erector gem, so to try it out, install the gem, then run erector app/views/foos/*.html.erb or just erector app/views and then delete the original files when you're satisfied. Here's a little command-line howto for erecting a scaffold Rails app: rails foo cd foo script/generate scaffold post title:string body:text published:boolean erector app/views/posts mate app/views/posts sleep 30 # this should be enough time for you to stop drooling rm app/views/posts/*.erb (echo ""; echo "require 'erector'") >> config/environment.rb rake db:migrate script/server open http://localhost:3000/posts On the erector-to-html side, pass in the
Layout InheritanceErector replaces the typical Rails layout mechanism with a more natural construct, the use of inheritance. Want a common layout? Just implement a layout superclass and inherit from it. Implement content in the superclass and implement template methods in its subclasses. For example: class Views::Layouts::Page < Erector::Widget def content html do head do title "MyApp - #{page_title}" css "myapp.css" end body do div :class => 'sidebar' do render_sidebar end div :class => 'body' do render_body end div :class => 'footer' do render_footer end end end end def render_sidebar a "MyApp Home", :href => "/" end def render_body p "This page intentionally left blank." end def render_footer p "Copyright (c) 2112, Rush Enterprises Inc." end end class Views::Faq::Index < Views::Layouts::Page def initialize super(:page_title => "FAQ") end def render_body p "Q: Why is the sky blue?" p "A: To get to the other side" end def render_sidebar super a "More FAQs", :href => "http://faqs.org" end end Notice how this mechanism allows you to...
all in a straightforward, easily understood paradigm (OO inheritance). (No more weird yielding to invisible, undocumented closures!) To use this in Rails, declare
There's one trick you'll need to use this layout for non-erector view templates. Here's an example.
class Views::Layouts::Application < Erector::Widget attr_accessor :content def content html do head { } # head content here # body content here body do text content end end end end
widget = Views::Layouts::Application.new(self) widget.content = content_for_layout self << widget.to_s Here the abstract layout widget is used in a concrete fashion by the template-based layout. Normally, the
Inline WidgetsInstead of subclassing
html = Erector::Widget.new do p "Hello, world!" end html.to_s #=>
Hello, world!
This lets you define mini-widgets on the fly. One extra bonus feature of inline widgets is that they can call methods defined on the parent class, even though they're out of scope. How do they do this? Through method_missing magic. (But isn't method_missing magic against the design goals of Erector? Yes, some would say so, and we're probably going to discuss this feature on the mailing list before long.) NeedsNamed parameters are fun, but one frustrating aspect of the 'options hash' technique is that the code is less self-documenting and doesn't 'fail fast' if you pass in the wrong parameters, or fail to pass in the right ones. Even simple typos can lead to very annoying debugging problems. To help this, we've added an optional feature by which your widget can declare that it needs a certain set of named parameters to be passed in. For example: class Car < Erector::Widget needs :engine, :wheels => 4 def content text "My #{wheels} wheels go round and round; my #{engine} goes vroom!" end endThis widget will throw an exception if you fail to pass :engine => 'V-6'
into its constructor.
See the rdoc for Widget#needs for more details. |


Pärnu is in the south western part of Estonia on the coast of Pärnu Bay, an inlet of the Gulf of Livonia. It is a popular summer resort.
Position 58°23.16'N, 24°29.20'E.
This is a Port of Entry.
There is Passport control is based here.
Last updated December 2015.
Due to the number of fishing nets in the vicinity, it is advisable to approach using the official shipping lanes. There are leading lights and marks into the Parnu river.
The yacht harbour is on the southern bank before the bridge, about 2km from the river entrance.
The approach to the marina is along the Silla leading line.
The marina offers complete shelter.
The city has all the usual facilities and services.
Last updated December 2015.


--- layout: default title: 活動時程 permalink: /schedule/ color: "#00bcd4" image: shedule1.jpg --- {% include top-section.html %} {% include schedule.html %}


Launch livestyle --processimage and play with the processing instructions in the image urls in processImage.css


By clicking "Select files" you accept and agree to abide by the terms and conditions of
regulations.
You should upload music files in MP3 format. Uploaded
file should meet the following technical requirements: bit rate not less than
128kbps, sampling frequency not less than 44,1 kHz.
Uploaded file should contain in IS3-tags the info on the singer
the title of the song and the name of the album, where it is published.
{else}
The upload section is closed for the moment, please retry later.


The congress.datalog.arithmetic_solvers
Module¶
-
class
congress.datalog.arithmetic_solvers.
LpLang
¶ Bases:
object
Represent (mostly) linear programs generated from Datalog.
-
exception
LpLang.
LpConversionFailure
(message=None, **kwargs)¶
-
LpLang.
MIN_THRESHOLD
= 1e-05¶
-
LpLang.
arith_to_lt_zero
(expr)¶ Returns Arith expression equivalent to expr but of the form A < 0.
:param expr is an Expression Returns an expression equivalent to expr but of the form A < 0.
-
LpLang.
create_intermediate
(exp)¶ Given expression, create var = expr and return (var, var=expr).
-
LpLang.
flatten
(exp, indicator=True)¶ Remove toplevel embedded and/ors by creating new equalities.
:param exp is an Expression of the form var = (arith11 ^ ... ^ arith1n) | ... | (arithk1 ^ ... ^ arithkn) where arithij is either a variable or an arithmetic expression where the degenerate cases are permitted as well.
:param indicator controls whether the method Returns a single variable (with supporting expressions) or it Returns an expression that has operator with (flat) arguments
Returns a collection of expressions each of one of the following forms: var1 = var2 * ... * varn var1 = var2 + ... + varn var1 = arith
Returns (new-expression, supporting-expressions)
-
LpLang.
freshVar
(**meta)¶
-
LpLang.
indicator_to_pure_lp
(exp, bounds)¶ Translate exp into LP constraints without indicator variable.
:param exp is an Expression of the form var = arith :param bounds is a dictionary from variable to its upper bound
Returns [EXP] if it is of the wrong form. Otherwise, translates into the form y = x < 0, and then returns two constraints where upper(x) is the upper bound of the expression x:
-x <= y * upper(x) x < (1 - y) * upper(x)Taken from section 7.4 of http://www.aimms.com/aimms/download/manuals/ aimms3om_integerprogrammingtricks.pdf
-
classmethod
LpLang.
isAnd
(thing)¶
-
classmethod
LpLang.
isArith
(thing)¶
-
classmethod
LpLang.
isBoolArith
(thing)¶
-
classmethod
LpLang.
isConstant
(thing)¶
-
classmethod
LpLang.
isEqual
(thing)¶
-
classmethod
LpLang.
isNotEqual
(thing)¶
-
classmethod
LpLang.
isOr
(thing)¶
-
classmethod
LpLang.
isVariable
(thing)¶
-
classmethod
LpLang.
makeAnd
(*args, **meta)¶
-
classmethod
LpLang.
makeArith
(*args, **meta)¶
-
classmethod
LpLang.
makeBoolVariable
(*args, **meta)¶
-
classmethod
LpLang.
makeEqual
(arg1, arg2, **meta)¶
-
classmethod
LpLang.
makeExpr
(obj)¶
-
classmethod
LpLang.
makeIntVariable
(*args, **meta)¶
-
classmethod
LpLang.
makeNotEqual
(arg1, arg2, **meta)¶
-
classmethod
LpLang.
makeOr
(*args, **meta)¶
-
classmethod
LpLang.
makeVariable
(*args, **meta)¶
-
LpLang.
operator_to_constructor
(operator)¶ Given the operator, return the corresponding constructor.
-
LpLang.
pure_lp
(exp, bounds)¶ Rewrite EXP to a pure LP problem.
:param exp is an Expression of the form var = (arith11 ^ ... ^ arith1n) | ... | (arithk1 ^ ... ^ arithkn) where the degenerate cases are permitted as well.
Returns a collection of expressions each of the form: a1*x1 + ... + an*xn [<=, ==, >=] b.
-
LpLang.
pure_lp_term
(exp, bounds)¶ Rewrite term exp to a pure LP term.
:param exp is an Expression of the form (arith11 ^ ... ^ arith1n) | ... | (arithk1 ^ ... ^ arithkn) where the degenerate cases are permitted as well.
Returns (new-exp, support) where new-exp is a term, and support is a expressions of the following form. a1*x1 + ... + an*xn [<=, ==, >=] b.
-
LpLang.
remove_and_or
(exp)¶ Translate and/or operators into times/plus arithmetic.
:param exp is an Expression that takes one of the following forms. var [!]= term1 ^ ... ^ termn var [!]= term1 | ... | termn var [!]= term1 where termi is an indicator variable.
Returns an expression equivalent to exp but without any ands/ors.
-
LpLang.
remove_and_or_term
(exp)¶
-
LpLang.
upper_bound
(expr, bounds)¶ Returns number giving an upper bound on the given expr.
:param expr is an Expression :param bounds is a dictionary from tuple versions of variables to the size of their upper bound.
-
classmethod
LpLang.
variables
(exp)¶
-
exception
-
class
congress.datalog.arithmetic_solvers.
PulpLpLang
¶ Bases:
congress.datalog.arithmetic_solvers.LpLang
Algorithms for translating LpLang into PuLP library problems.
-
MIN_THRESHOLD
= 1e-05¶
-
problem
(optimization, constraints, bounds)¶ Return PuLP problem for given optimization and constraints.
- :param optimization is an LpLang.Expression that is either a sum
- or product to minimize.
- :param constraints is a collection of LpLang.Expression that
- each evaluate to true/false (typically equalities)
- :param bounds is a dictionary mapping LpLang.Expression variable
- tuples to their upper bounds.
Returns a pulp.LpProblem.
-
pulpify
(expr, variables, values)¶ Return PuLP version of expr.
:param expr is an Expression of one of the following forms. arith arith = arith arith <= arith arith >= arith :param vars is a dictionary from Expression variables to PuLP variables
Returns a PuLP representation of expr.
-


StateMachine
public class StateMachine<T: StateType>
On Testing:
Often when testing, we’ll want to assert that a state machine has made some transition. Because state machines should be private implementation details of their classes, and becasue state change happens asynchronously (or, at least, in the next cycle of the runloop), this can be difficult without sprinkling completion handlers throughout our code.
Instead, we can define the environment variable GAUNTLET_POST_TEST_NOTIFICATIONS
in our testing scheme (any non-nil value will do), and subscribe to one or more of the following notification names:
Both will post a userInfo
with the following values:
fromString
: String value of theStateType
theStateMachine
did/will transition from.fromBox
: Boxed version of theStateType
theStateMachine
did/will transition from. Use thevalue
property to unbox theStateType
.toString
: String value of theStateType
theStateMachine
did/will transition to.toBox
: Boxed version of theStateType
theStateMachine
did/will transitioning to. Use thevalue
property to unbox theStateType
.
-
Consumers can assign implementations to protperties of
delegates
to respond to lifecycle events.Declaration
Swift
public var delegates = StateTransitionDelegates<T>()
-
The current state of the state machine. Read-only.
Declaration
Swift
public private(set) var state: T
-
Initializes the state machine with the given initial state.
Note
This could very easily also take a(n optional)didTransition
handler, saving us a common assignment that will almost always take place directly after instantiation. But I’m always forgetting whetherdidTransition
is called when setting initial state or not. Keeping the assignment seperate makes the answer obvious.Declaration
Swift
public init(initialState: T)
-
Use this method to transition states. It first take the given
state
and determine its validity viaStateType.shouldTransitionFrom(_,to:)
. If it is, it transitions the machine to it, callingtransformationHandler
once complete. If not, the givenstate
is silently ignored.Attention
This method queues the state transition to happen on the next pass of the run loop. Thus, it’s safe to callqueue(_)
fromdidTransition
without concern for the stack. However, this also means that even valid calls toqueue(_)
will not be reflected immediately in the state machine:let machine = StateMachine(initialState: State.ready) machine.queue(State.fetch) machine.state //> State.ready
Declaration
Swift
public func queue(_ state: T)
Parameters
state
The state to transition to.


| TOC |
|
Google Wave is a communication and collaboration platform based on hosted conversations, called waves. A wave comprises a set of concurrently editable structured documents and supports real-time sharing between multiple participants. This document is one in a larger set of specifications for Google Wave. This specification describes Google Wave identifiers, which are used to identify waves, wavelets, and documents.
1.
Introduction
1.1.
Document Status
1.2.
Terminology
1.3.
Editorial Notes
2.
Overview
3.
Identifier Syntax
4.
Identifier Constraints
4.1.
Local Identifier
4.2.
Wave Identifier
4.3.
Wavelet Identifier
4.4.
Wavelet Name
5.
References
6.
References
§
Authors' Addresses
| TOC |
| TOC |
This document represents work in progress. It omits details that we are unable to capture at this point and we expect parts of the protocol to change. Please also note that while we revise the protocol and white papers, some transient inconsistencies will occur.
This document is one in a larger set of specifications for Google Wave; see http://www.waveprotocol.org/draft-protocol-specs.
| TOC |
The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.) .
This specification uses the Augmented Backus-Naur Form (ABNF) notation of [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.) . The following ABNF rules are imported from the normative references [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.) , [RFC3986] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.) , and [RFC3987] (Duerst, M. and M. Suignard, “Internationalized Resource Identifiers (IRIs),” January 2005.) .:
pct-encoded = "%" HEXDIG HEXDIG unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" iunreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" / ucschar ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD / %xD0000-DFFFD / %xE1000-EFFFD ireg-name = *( iunreserved / pct-encoded / sub-delims )
| TOC |
To provide feedback on this draft join the wave-protocol mailing list at http://groups.google.com/group/wave-protocol
| TOC |
A wave identifier provides a simple and extensible means for identifying parts of a wave. This goal of this specification and syntax for wave identifiers is to construct identifiers that may be used as parts of a URI or as a URL query parameter without excessive escaping so that a URI path form is the canonical serialisation. In addition, the syntax is designed to accomodate internationalized identifiers.
In a wave implementation a wave identifier appears on the wire in the federation and client/server protocols, and in addition may be serialized to disk. Wave identifiers may be included in the path or query of an HTTP URI, and should be structured to meet the conflicting goals of uniqueness and clarity when serialized into such URIs.:
http://example.com/waveref/<waveid> http://example.com/waveref?id=<waveid> http://example.com/waveref#<waveid>
Note that this draft specification has references to particular documents, offsets, and versions in mind, but does not specify them explicitly at this time.
This specification restricts the allowed character set in a wave id to aid construction of clean and readable URI-references.
| TOC |
A wave identifier is a domain name and a local identifier joined by '/'.
The domain name is a unicode string, and may contain international alphanumeric characters, as described by the IDNA standard [RFC3490] (Faltstrom, P., Hoffman, P., and A. Costello, “Internationalizing Domain Names in Applications (IDNA),” March 2003.) . Future version of this specification will detail serialization, which depends on context.
The local identifier is a non-empty unicode string drawn from the character set:
lchar = iunreserved / "+" / "*" / "@" localid = 1*lchar waveid = ireg-name "/" localid
A wavelet identifier is a domain name and a local identifier joined by '/'.:
waveletid = ireg-name "/" localid
A wavelet name is an identifier for a wavelet that includes the wave identifier and the wavelet identifier. It is constructed by concatenating the two identifiers with a "/":
wavename = waveid "/" waveletid
| TOC |
The constructed wave and wavelet identifiers have differing uniqueness constraints which are described below.
| TOC |
Local identifiers may be structured by an application, but that structure is not specified here.
| TOC |
For wave identifiers that identify waves, the domain and localid of a wave identifier together as a pair MUST be globally unique.
Example:
example.com/w+2cDs_sd
| TOC |
For identifiers the identify wavelets, the domain and localid of a wavelet identifier together MUST be unique within a wave.
Examples:
<EMAIL_ADDRESS><EMAIL_ADDRESS>tūdaliņ.lv/robot+tweety.appspot.com
| TOC |
Wavelet names are constructed from wave identifiers and wavelet identifiers that meet their individual constraints, and are thus by construction globally unique.
Example:
<EMAIL_ADDRESS>| TOC |
| TOC |
| [RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML). |
| [RFC3490] | Faltstrom, P., Hoffman, P., and A. Costello, “Internationalizing Domain Names in Applications (IDNA),” RFC 3490, March 2003 (TXT). |
| [RFC3986] | Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” STD 66, RFC 3986, January 2005 (TXT, HTML, XML). |
| [RFC3987] | Duerst, M. and M. Suignard, “Internationalized Resource Identifiers (IRIs),” RFC 3987, January 2005 (TXT). |
| [RFC5234] | Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” STD 68, RFC 5234, January 2008 (TXT). |
| TOC |
| Joe Gregorio | |
| Google, Inc | |
| Email: |<EMAIL_ADDRESS>|
| Soren Lassen | |
| Google, Inc | |
| Email: |<EMAIL_ADDRESS>|
| Alex North | |
| Google, Inc | |
| Email: |<EMAIL_ADDRESS>|


The Sims 3 store was the online DLC hub for the game. The Sims franchise was so vast and so expandable, that the Store necessarily had a short turnaround time in generating content. This content needed to be frequent because The Sims has one of the most ravenous communities in terms of content consumption.
The Store packages were a double edged sword. They gave completely new functionality with all content in the game, but this subsequently created more complex testing cases. This made it a unique QA cahllenge, but a very valuable one.
Engineering QA
2011 - 2012
Sims 3
Ongoing
~15
Windows/Mac
Because I had the most experience working with the development team, when Sims 3 Showtime shipped I was moved over to the Store team with the remaining engineers. This was a fun change because were were constantly creating new things. I smoketested and created testing plans for all new objects before they went on store.
Because of the vast universe of the Sims 3, a single object could have large test requirements. I tested and was part of the approval team for objects before they went live.
The cowplant object was so popular in the Sims 3 store that the original design, model, and functionality was carried over to the Sims 4. Though the video is from the Sims4, it is the same object that our team released.
If you have The Sims 3, you can still buy the above DLC by searching them:


| Module | ActionController::MimeResponds::InstanceMethods |
| In: |
vendor/rails/actionpack/lib/action_controller/mime_responds.rb
|
Without web-service support, an action which collects the data for displaying a list of people might look something like this:
def index @people = Person.find(:all) end
Here‘s the same action, with web-service support baked in:
def index @people = Person.find(:all) respond_to do |format| format.html format.xml { render :xml => @people.to_xml } end end
What that says is, "if the client wants HTML in response to this action, just respond as we would have before, but if the client wants XML, return them the list of people in XML format." (Rails determines the desired response format from the HTTP Accept header submitted by the client.)
Supposing you have an action that adds a new person, optionally creating their company (by name) if it does not already exist, without web-services, it might look like this:
def create @company = Company.find_or_create_by_name(params[:company][:name]) @person = @company.people.create(params[:person]) redirect_to(person_list_url) end
Here‘s the same action, with web-service support baked in:
def create company = params[:person].delete(:company) @company = Company.find_or_create_by_name(company[:name]) @person = @company.people.create(params[:person]) respond_to do |format| format.html { redirect_to(person_list_url) } format.js format.xml { render :xml => @person.to_xml(:include => @company) } end end
If the client wants HTML, we just redirect them back to the person list. If they want Javascript (format.js), then it is an RJS request and we render the RJS template associated with this action. Lastly, if the client wants XML, we render the created person as XML, but with a twist: we also include the person‘s company in the rendered XML, so you get something like this:
<person> <id>...</id> ... <company> <id>...</id> <name>...</name> ... </company> </person>
Note, however, the extra bit at the top of that action:
company = params[:person].delete(:company) @company = Company.find_or_create_by_name(company[:name])
This is because the incoming XML document (if a web-service request is in process) can only contain a single root-node. So, we have to rearrange things so that the request looks like this (url-encoded):
person[name]=...&person[company][name]=...&...
And, like this (xml-encoded):
<person> <name>...</name> <company> <name>...</name> </company> </person>
In other words, we make the request so that it operates on a single entity‘s person. Then, in the action, we extract the company data from the request, find or create the company, and then create the new person with the remaining data.
Note that you can define your own XML parameter parser which would allow you to describe multiple entities in a single request (i.e., by wrapping them all in a single root node), but if you just go with the flow and accept Rails’ defaults, life will be much easier.
If you need to use a MIME type which isn‘t supported by default, you can register your own handlers in environment.rb as follows.
Mime::Type.register "image/jpg", :jpg
# File vendor/rails/actionpack/lib/action_controller/mime_responds.rb, line 102 102: def respond_to(*types, &block) 103: raise ArgumentError, "respond_to takes either types or a block, never both" unless types.any? ^ block 104: block ||= lambda { |responder| types.each { |type| responder.send(type) } } 105: responder = Responder.new(self) 106: block.call(responder) 107: responder.respond 108: end


Spockbots API¶
spockbots.output¶
-
spockbots.output.
PRINT
(*args, x=None, y=None)[source]¶ prints message on screen at x and y and on the console. if x and y are missing prints on next position on lcd screen this message prints test messages.
The sceensize is maximum x=177, y=127)
- Parameters
args – multible strings to be printed in between them
x – x value
y – y value
-
spockbots.output.
flash
(colors=['RED', 'BLACK', 'RED', 'BLACK', 'GREEN'], delay=0.1)[source]¶ The robot will flash the LEDs and beep twice
-
spockbots.output.
led
(color)[source]¶ changes color of led light
- Parameters
color – light color
brightness – light brightness
- Returns
-
spockbots.output.
readfile
(name)[source]¶ Reads the file with the name and returns it as a string.
- Parameters
name – The file name
- Returns
The data in teh file as string
spockbots.check¶
spockbots.colorsensor¶
-
class
spockbots.colorsensor.
SpockbotsColorSensor
(port=3)[source]¶ Bases:
object
defines a Colorsensor with values between 0 and 100
-
reflection
()[source]¶ gets the reflection from the sensor
- Returns
the original reflective lit value without
-
-
class
spockbots.colorsensor.
SpockbotsColorSensors
(ports=[2, 3, 4], speed=5)[source]¶ Bases:
object
This is how we create the sensors:
colorsensor = SpockbotsColorSensors(ports=[2,3,4]) colorsensor.read()
Now you can use
colorsensor[i].value()
to get the reflective value of the colorsensor on port i. To get the color value we can use
colorsensor[i].color()
-
color
(i)[source]¶ returns the color value between 0-100 after calibration on the port i
- Parameters
i – number of the port
- Returns
The color value, blue = 2
-
flash
(ports=[2, 3, 4])[source]¶ Flashes the light sensor on teh ports one after another
- Parameters
ports – the list of ports to flash
-
info
(ports=[2, 3, 4])[source]¶ prints the information for each port, e.g. the minimal black and maximum while values :param ports: the list of ports to flash
-
read
(ports=[2, 3, 4])[source]¶ reads the black and white values to the file calibrate.txt
The values must be written previously. If the file does not exists a default is used.
2: 0, 100 3: 0, 100 4: 4, 40 # because it is higher up so white does
not read that well
-
test_color
(ports=[2, 3, 4])[source]¶ prints the color value of all senors between 0-100
- Parameters
ports – the list of ports
-
test_reflective
(ports=[2, 3, 4])[source]¶ prints the reflective value of all senors between 0-100
- Parameters
ports – the list of ports
-
spockbots.motor¶
-
class
spockbots.motor.
SpockbotsMotor
(direction=None)[source]¶ Bases:
object
-
aligntoblack
(speed, port_left, port_right, black=10)[source]¶ aligns with black line while driving each motor.
- Parameters
speed – speed of robot
port_left – port of left color sensor
port_right – port of right color sensor
black – value of black
-
aligntowhite
(speed, port_left, port_right, white=80)[source]¶ aligns with white line while driving each motor.
- Parameters
speed – speed of robot
port_left – port of left color sensor
port_right – port of right color sensor
white – value of white
-
angle_to_distance
(angle)[source]¶ calculation to return the distance in cm given an angle.
- Parameters
angle – the angle
- Returns
distance in cm for turning an angle
-
calibrate
(speed, distance=15, ports=[2, 3, 4], direction='front')[source]¶ calibrates color sensors by driving over black and white line.
- Parameters
speed – speed of robot
distance – distance that robot travels
ports – ports of color sensors
direction – direction of calibration
This will stop all motors and finish the program. It can be used in the programs to check if the program should be finished early du to an error in the runs.
-
color
(port)[source]¶ return the reflective color sensor value.
- Parameters
port – the port number of the color sensor
- Returns
the reflective color value
-
distance_to_angle
(distance)[source]¶ calculation to convert the distance from cm into angle.
- Parameters
distance – The distance in cm
- Returns
The degrees traveled for the given distance
-
distance_to_rotation
(distance)[source]¶ calculation to convert the distance from cm into rotations.
- Parameters
distance – The distance in cm
- Returns
The rotations to be traveled for the given distance
-
followline
(speed=25, distance=None, t=None, port=3, right=True, stop_color_sensor=None, stop_values=None, stop_color_mode=None, delta=-35, factor=0.4)[source]¶ follows line for either a distance or for time.
- Parameters
speed – speed of robot
distance – distance that robot follows line
t – time that robot follows line for
port – port of color sensor
right – whether the robot is following the right or left side of line
black – black value
white – white value
delta – adjustment value to convert from color sensor values (0 to 100) to motor steering (-100 to 100)
factor – factor of adjustment, controls smoothness
-
followline_pid
(debug=False, distance=None, t=None, right=True, stop_color_sensor=None, stop_values=None, stop_color_mode=None, port=3, speed=25, black=0, white=100, kp=0.3, ki=0.0, kd=0.0)[source]¶
-
forward
(speed, distance, brake=None)[source]¶ the robot drives forward for a given distance.
- Parameters
speed – speed of robot
distance – distance that robot goes forward (in cm)
brake – one of the values brake, hold, coast
-
gotoblack
(speed, port, black=10)[source]¶ robot moves to the black line while using the sensor on the given port.
- Parameters
speed – speed of robot
port – port of color sensor
black – value of black
-
gotocolor
(speed, port, colors=[0])[source]¶ robot moves to the black line while using the sensor on the given port.
- Parameters
speed – speed of robot
port – port of color sensor
black – value of black
-
gotowhite
(speed, port, white=90)[source]¶ robot moves to the white line while using the sensor on the given port.
- Parameters
speed – speed of robot
port – port of color sensor
white – value of white
-
on
(speed, steering=0)[source]¶ turns the large motors on while using steering.
- Parameters
speed – the speed of the robot
steering – an angle for the steering
-
on_forever
(speed_left, speed_right)[source]¶ turns motors on with left and right speed.
- Parameters
speed_left – speed of left motor
speed_right – speed of the right motor
-
setup
(direction=None)[source]¶ setup the direction, the motors, and the tank with the appropriate direction.
- Parameters
direction – if the direction is ‘forward’ the robot moves forward, otherwise backwards.
- Returns
left, right motors and tank
-
stop
(brake=None)[source]¶ stops all motors on all different drive modes.
- Parameters
brake – None, brake, coast, hold
-
turn
(speed, angle, count=5)[source]¶ takes the radius of the robot and dives on it for a distance based on the angle.
- Parameters
speed – speed of turn
angle – angle of turn
-
turntoblack
(speed, direction='left', port=3, black=10)[source]¶ turns the robot to the black line.
- Parameters
speed – speed of turn
direction – left or right
port – port of color sensor
black – value of black
-
turntocolor
(speed, direction='left', port=2, colors=[6])[source]¶ turns the robot to the black line.
- Parameters
speed – speed of turn
direction – left or right
port – port of color sensor
black – value of black
-
spockbots.gyro¶
-
class
spockbots.gyro.
SpockbotsGyro
(robot, port=1)[source]¶ Bases:
object
improved gyro class
-
forward
(speed=10, distance=None, t=None, finish=None, min_speed=1, acceleration=2, port=1, delta=-180, factor=0.01)[source]¶ Moves forward
- Parameters
speed – The speed
distance – If set the distance to travle
t – If set the time to travel
port – The port number of the Gyro sensor
delta – controlling the smoothness of the line
factor – controlling the smoothness of the line
Examples:
gyro.forward(50, distance=30, factor=0.005)
-
left
(speed=25, degrees=90, offset=0, killtime=5)[source]¶ The robot turns left with the given number of degrees
- Parameters
speed – The speed
degrees – The degrees
offset –
- Returns
-
right
(speed=25, degrees=90, offset=0, killtime=5)[source]¶ The robot turns right with the given number of degrees
- Parameters
speed – The speed
degrees – The degrees
offset –
- Returns
-
status
(count=5)[source]¶ tests count times if robot is still and returns if its still or drifts :param count: number of times tested if its still :return: still,drift which are true/false
-
turn
(speed=25, degrees=90, offset=None, killtime=5)[source]¶ uses gyro to turn positive to right negative to left. As it may turn too much, it will correct itself at a lower speed and turn. As the sensor is accurate to 2 degrees, we only do the correction if the robot is more than two degrees off.
- Parameters
speed – speed it turns at
degrees – degrees it turns
- Returns
-


Aqara
Aqara is owned by Lumi United Technology, headquartered in Shenzhen, China. Currently, we have over 300 Aqara service providers and 300 smart home showrooms across China. Our users include students, families, working professionals and multi-corporations spanning over 158 countries.
-
INDUSTRY
Smart Home
-
LOCATION
China
-
CLOUD TYPE
Hybrid
-
CHALLENGES
Availability, Efficiency, Velocity
-
ADOPTED FEATURES
Hosted
-
Company Introduction
Five years ago, we set out to create a different kind of smart home solution, one that is reliable, eco-friendly, and available to anyone who wants to improve their homes and simplify their daily lives. We believe that building a smart home should not be complex or cost prohibitive, which is why we have over 200 Aqara R&D team members working tirelessly to make the most innovative and highest quality products we could at an affordable cost.
-
Background
From adopting the traditional approach to operation and maintenance (O&M) to using Docker Swarm, to running microservices of Spring Cloud family on Kubernetes, and finally to embracing KubeSphere, Lumi United has come a long way in its endeavor to build its own IoT platform of microservices based on KubeSphere. It has been running KubeSphere and Kubernetes stably in the production environment for more than half a year. In this regard, Lumi United has acquired considerable expertise in microservice application development and application platform O&M. This article is contributed by Wei Hengjun and Xu Yangbing, both of whom are O&M engineers from Lumi United Technology Co., Ltd. Image assets in the article come from the official website of Aqara (https://www.aqara.com/).
-
Traditional Approach to Container Technology
As an O&M engineer with multiple years of experience, Wei Hengjun understands the significance of O&M can never be overstated. At the beginning, he shouldered machines himself to the workplace, struggled to use even a cable clamp in his work, and torpidly installed operating systems. Deploying applications and improving services was never an easy job for him as he might suddenly wake up in the middle of a night just for a series of system warns. All of these have made him who he is now, always working just as a great firefighter.
Rapid technological advances have seen us embrace microservices, virtualization, and containerization and cloud native technologies one after another. O&M has also come a long way from manual operation at the beginning to scripts, platforms and now, containers. Initially, O&M only included tens of machines and it has grown to nearly 1,000 machines operated and maintained all by myself. The traditional way of application deployment requires a large amount of time spent in the preparation of configuration files, caution lists and databases every time it is updated. After that, it has to go through a strict review and approval process before it can finally be released. The whole process can take more than half a month. In this Internet era where speed is highly valued, the conventional approach can no longer serve as an efficient solution. Against this backdrop, container technology has emerged to the spotlight of our time.
-
Docker Swarm: Build a Container Orchestration System
The traditional way of application deployment has haunted managers for so long as the resource utilization remains at a very low level. Against this background, container technology came to my awareness in 2017 and I tried to develop and test environments in my company, which directly resulted in a 50% increase in the resource utilization in the development and test environment. In 2018, we started to use the Docker container orchestration tool, also known as Docker Swarm, in the production environment, which also greatly improved resource utilization.
There have been twists and turns along the road from the command line to scripts and ultimately to platforms. When I just joined the Lumi family, I found the O&M process was still at a primitive stage. At that time, all I could do was roll up my sleeves to analyze the condition under great pressure. It turned out to me that more than 80% of the microservice architecture was nearly based on memory with low resource utilization, especially CPU and disk storage. The update timeline was also unsatisfactory. All of these were extremely irritating. I determined to truly make a difference. Starting from continuous integration, I built environments with Jenkins and Harbor. I used Docker Swarm for orchestration in testing environments. Ultimately, my efforts paid off as the delivery speed and quality in the testing environment had been greatly improved. Nevertheless, as our business grew exponentially, we noticed that Docker Swarm has some apparent weaknesses:
1. Inefficient cross-platform support;
2. Internal communications among services will run overtime in the traffic peak period.
-
-
Improved Resource Utilization
-
Cross-platform Support
-
Efficient Container Orchestration
-
-
A Comprehensive Shift: Docker Swarm to Kubernetes
The time when the three giants dominated the container orchestration field had past as Kubernetes outpaced Docker Swarm and Mesos as the de facto standard in the area. Therefore, we have steered our business from Docker Swarm to Kubernetes in all respects. In fact, we have been thinking about the shift for several years, especially when we need nearly 1,000 machines for O&M. In this connection, an O&M-friendly and unified container cloud platform is necessary for us in terms of the large-scale deployment of cloud native microservice applications based on Kubernetes.
-
Platform Selection: Embrace KubeSphere
For the native installation and O&M of Kubernetes, open source solutions from a third party are still required. After careful consideration, Rancher and KubeSphere appeared to be our possible choices.
KubeSphere is an open source project initiated by QingCloud and co-developed by multiple enterprises. Compared with Rancher, KubeSphere features a neater user interface and a useful wizard for resource creation. With applications as its kernel, KubeSphere focuses more on the management of Kubernetes cluster resources than Rancher. It provides elegant API ports and integrates common components for development and O&M based on Kubernetes, such as Jenkins, Harbor, Prometheus and Apache SkyWalking. Besides, it can be deployed in any infrastructure environment. All of these explain why we have selected the KubeSphere container platform without any hesitation.
We have deepened our understanding of different modules in Kubernetes amidst our use of KubeSphere which features great compatibility with multiple cloud platforms and plugins. It has also accelerated our path to put container orchestration of Kubernetes into practice for the production environment. Furthermore, KubeSphere has liberated us from repetitive work facing O&M, reducing the entire cost of application maintenance. It is truly a cutting-edge tool for the O&M team and provides tremendous benefits to Internet companies.
-
Deployment Architecture
Currently, our company is using 7 servers in Tencent Cloud to build the cluster.
All stateless services are now running in KubeSphere. Besides, we are using Redis, HBase, Flink, Elasticsearch and MySQL in cloud for stateful data storage services.
Our system has been running for over half a year so far without major issues. As a result, we are planning to transfer all stateful and stateless services in the development, testing and production environment of our company to KubeSphere in recent days.
-
Design Architecture
Let us take a look at the business architecture of Lumi United. Currently nearly all of its overseas services are running on KubeSphere, including Gateway, message sending and pushing, and IFTTT.
As our business is mainly based on Java, we provide microservices on the basis of Spring Cloud, manage configurations with Apollo, a distributed system configuration center, and use Eureka for service registration and discovery.
With Ribbon and Feign, load balancing and service calling is achieved for microservices. At the same time, we use Hystrix thread poop for isolation, circuit breaking, fallback and traffic limit (sentinel). Springcloud-gateway is used for route scheduling and ELK is used for logging solutions. We use Skywalking as the APM tool for Java microservices distributed system.
-
We use Tencent Cloud for IaaS. Microservices are mainly included in the platform, where most applications are running on KubeSphere. All the sub-devices are linked to Hub devices (Smart Gateway, Smart Socket Gateway, Cameras, etc.) through the Zigbee protocol. Hub devices are connected to our microservice platform through the PRC protocol and the platform provides data for applications (SaaS). Reversely, applications can call the microservice platform through security authentication, which is how smart home devices are controlled. At the service level, we have plugins for tracing analysis, basic monitoring and CI/CD.
KubeSphere makes it much easier for us to use Kubernetes, accelerating our step in deploying Kubernetes in the production environment. It has significantly improved our efficiency of business update, making it possible for our R&D engineers to quickly switch among different applications for the deployment and authentication of their features.
-
KubeSphere is truly a cutting-edge tool for the O&M team and provides tremendous benefits to Internet companies.
Wei Hengjun
-
Our Future Plan
The IoT microservice platform has been running in our production environment for over half a year so far without major issues. As a result, we are planning to transfer all stateful and stateless services in the development, testing and production environment of our company to KubeSphere in recent days.


Hello!
Please Login To Your Account
Username
Password
Remember Me
Sign In
Forgot Your Password?
Create An Account
x
Retrieve Password
Please enter the email address associated with your account


A Comparison of Offline Sync Protocols and Implementations
| Sync Protocol or Implementation | Conflict Resolution Strategies | Client Implementations |
|---|---|---|
| CouchDB Replication Protocol |
|
|
| Realm Sync Engine | ||
| Firebase Realtime Database |
1. Apache CouchDB implementations use a deterministic algorithm to choose a "winning" document. See: Working with conflicting documents. ↩
2. Apache CouchDB implementations will maintain a revision tree of conflicted documents, allowing for the selection of a "winning" document or the merging of document data using application logic. See: Working with conflicting documents. ↩
3. Couchbase Mobile 2.0 will not be compatible with the CouchDB Replication Protocol. ↩
4. See the Realm Objective Server documentation on conflict resolution. ↩
5. See the Realm Objective Server documentation on conflict resolution. ↩
6. See the Firebase documentation on saving data. ↩
7. See the Firebase documentation on saving data. ↩
8. Transactions in Firebase can be slow and complex as they require one or more round trips to the server. See the Firebase documentation on saving data. ↩


Annotation Type AbstractFieldBuilder.EnabledBy
-
@Retention(RUNTIME) @Target(METHOD) @Documented public static @interface AbstractFieldBuilder.EnabledBy
Causes the generated field to be automatically enabled or disabled based on the value of some other controlling field(s).The target field will be enabled depending on whether the controlling field(s) have value(s) equal to their empty values. Often the controlling field is a single
Checkbox
(whose empty value is false), but any type of controlling field is supported.When multiple controlling field are specified, by default an AND condition applies: all of the controlling fields must have non-empty values for the target field to be enabled. You can change this to an OR condition by setting
requireAll()
to false.Whenever the target field is disabled, by default it is also reset to its empty value. To have it keep its previous value, set
resetOnDisable()
to false.If any named property doesn't exist in the
Binder
, or the target field'sComponent
doesn't implementHasEnabled
, then an exception is thrown.Example:
public class GroceryItem { // Is this item perishable? @FieldBuilder.Checkbox(label = "Perishable food item") public boolean isPerishable() { ... } // This field is only used for perishable items @FieldBuilder.DatePicker @FieldBuilder.EnabledBy("perishable") @FieldBuilder.FormLayout("Expiration Date:") public LocalDate getExpirationDate() { ... } }
- See Also:
FieldBuilder.NullifyCheckbox
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description boolean
requireAll
Enable the target field only when all controlling fields have a non-default value (AND condition).boolean
resetOnDisable
Whether the value of this field should be automatically reset to its empty value when this field is disabled by its controlling field.String[]
value
The name of the other properties in the form that should control enablement.
-
-
-
Element Detail
-
value
String[] value
The name of the other properties in the form that should control enablement.- Returns:
- controlling property name(s)
- Default:
- {}
-
-
-
resetOnDisable
boolean resetOnDisable
Whether the value of this field should be automatically reset to its empty value when this field is disabled by its controlling field.Note: it's not currently possible in Vaadin to listen for changes to a field's enabled status (see issue #14334). Therefore, if you change this to false, and the field X you're configuring is itself the enabling field for some third field Y through another instance of this annotation, then it's possible to get in a state where this field X is disabled (though non-empty), and therefore Y is still enabled.
To avoid that possibility, leave this set to true or set
value()
to the transitive closure of such dependencies.- Returns:
- whether to reset when disabled
- Default:
- true
-
-
-
requireAll
boolean requireAll
Enable the target field only when all controlling fields have a non-default value (AND condition).If set to false, then the target field is enabled when any of the controlling fields have a non-default value (OR condition).
- Returns:
- true for AND conditions, false for OR condition
- Default:
- true
-
-


Career Buddies: Crystal Copeland & John Dunn
I really enjoy, the process of event planning. From the very first stages of planning there are so many
ways that an event can look creatively from themes, color schemes and how those can both effect your
menu. Along with the creative side there is also so many thing that need to get done. Without
the right organization skills, and people management it could never happen.
I am a Fullstack Web Developer looking for a challenging position with innovative work environment.
I have sharp eye for aesthetic and design as well as attention to small details.
I've always been pretty cations about what i put on the internet but it never really occurred to me that there is stuff that I did not put there. nothing was bad (besides white pages being creepy) but i think its very important to be aware.
A lot of what we've been doing is really knew to me so i feel like i have been seing things in black and white hopefully soon i will see the full spectrum of color. i think the bridge between the two would be that a lot of times the black and white are the foundation we stand on and the color is thrown in after to enhance.
This week has been exhausting, mainly do too getting into the routine of things. I feel like im learning so much every day and Im really enjoying the work so far. Somethings there are things going over my head but I feel like thats mainly do to the fact that you cant know what you dont.
Its been a challenging week but I've learned a lot, therefor i would call it a success. There was a couple moments where I was overwhelmed or confused BUT following those moments was also moments of understanding (not completely but in general). I know that I will continue to have moments like that and I will need to remind myself to be patient. I am both nervous and exited to see where next week goes.
Moving into our capstones this week has been fun and also challenging. Its nice to have a community with shared responsibility nut at the same time i have a hard time reallying on other people. Justin is good at solving problems and Lariah is a a good listener. I'm exited about whats next.
this week was pretty good. I've been feeling good about things still a confused at times but not completely overwhelmed. That being said I was feeling a little bit hectic by thursday and into the weekend. i know that I can and will get through the craziness so I'm just trying to focus on that.
Half way! thats insane time has gone by so fast. ive been really trying to decide how and also so talk to my sister about how we want my personal (her business) website to be layed out. and im really exited abou that. I have learned so much in the past 5 weeks its crazy to think about
the weeks are honestly starting to blur together.... what day is it again (we ask eachother that a lot)? its been a good but hard week, starting to run our unit tests..... (those are the dots i havent seen yet) hopefully we can get those passed early next week and get started with our apis


| Version | CPU | Interface | Version | Comment |
|---|---|---|---|---|
| EPEL distribution packages (Starting from RHEL 6) search for "MediaInfo" in your package manager or "yum install mediainfo-gui" (for GUI) or "yum install mediainfo" (for CLI) |
How to install RHEL EPEL | |||
| 7 | x86_64 | RHEL 6, x86_64 | ||
| GUI | v0.7.82 | requires libmediainfo0 | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| ppc64 | RHEL 7, ppc64 | |||
| GUI | v0.7.82 | requires libmediainfo0 | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| 6 | i686 | RHEL 6, i686 | ||
| GUI | v0.7.82 | requires libmediainfo0, wxGTK | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| x86_64 | RHEL 6, x86_64 | |||
| GUI | v0.7.82 | requires libmediainfo0 | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| 5 | i686 | RHEL 5, i686 | ||
| GUI | v0.7.82 | requires libmediainfo0, wxGTK | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| x86_64 | RHEL 5, x86_64 | |||
| GUI | v0.7.82 | requires libmediainfo0 | ||
| CLI | v0.7.82 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.82 (devel) | requires libzen0 | ||
| libzen0 | v0.4.32 (devel) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| 4 | i686 | RHEL 4, i386 | ||
| GUI | v0.7.26 | requires libmediainfo0 | ||
| CLI | v0.7.26 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.26 (devel) | requires libzen0 | ||
| libzen0 | v0.4.9 (devel) | |||
| x86_64 | RHEL 4, x86_64 | |||
| GUI | v0.7.26 | requires libmediainfo0 | ||
| CLI | v0.7.26 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.26 (devel) | requires libzen0 | ||
| libzen0 | v0.4.9 (devel) |


DWR 1.1 is a significant update to version 1.0. The themes of this release are stability and solving the simple problems that we didn't solve in version 1.0. You can download it now.
DWR 1.0 could manipulate most html page elements including select lists, ul and ol lists, tables, form fields and so on. DWR 1.1 adds the following options:
DWR 1.0 featured integration with Spring, and many scripting languages through BSF, BeanShell was the most commonly used. From DWR 1.1 we also have some experimental integration with:
Bram Smeets has enhanced the integration with the Spring Framework, and also done lots of excellent work improving the test suites.
Dennis Muhlestein has updated the scripting support to be able to read and reload scripts from the filesystem.
DWR is also becoming a part of many other frameworks including WebWork 2.2 and Rife 1.4.
In DWR 1.0 we could convert native types, Strings, Dates, Arrays, JavaBeans (including those from Hibernate), Collections (Lists, Sets, Iterators, Maps) and DOM Objects (DOM, XOM, JDOM, DOM4J). From 1.1 we can also convert:
In addition we can now select which properties of a JavaBean are converted using 'include' and 'exclude' parameters. So if you have properties that you wish to restrict to the server you can do just that.
At 1.0 you could batch calls together, and hook into the calling process to pop-up loading messages along with other options. With 1.1 you have the following new features:
DWREngine.setAsynch(false)
, or locally using meta-data { async:false }
. See the synchronous calling documentation for more.ExecutionContext has been deprecated. The replacement is WebContext, which is similar but has a factory. You use it like this:
WebContextFactory.get().getSession();
DWR is now being used in orders of magnitude more projects including big projects like Jira and Confluence, so many bugs have been found and fixed.
It has Maven2 build files thanks to Julien Dubois.
We've done some internal refactoring so DWR now has a small replaceable IoC container and a more pluggable architecture. It's planned to continue this work with the next release of DWR
It is envisaged that the next release of DWR will change the Converter interface slightly. If you are writing a custom converter then it's a good idea to inherit from BaseV10Converter so your code can be more easily forwards compatible.
DWR now has support for being configured in places where the pathinfo is null.
DWR 1.1 was slowed down considerably by a nasty Safari bug, so DWR 2.0 (or whatever we call it) is well underway. It has a far broader scope; the major new features are accessibility enhancements, and what now appears to be called 'Comet'.


Australia vs Pakistan, Test Series: "Pacemen must target Steve Smith's blind spot" - Misbah-ul-Haq
by OmnisportMisbah-ul-Haq says Pakistan's pace attack must hit Steve Smith's "blind spot" if they are to prevent Australia's "batting genius" from piling on the runs in the two-match Test series.
Smith averaged an astonishing 110.57 in a drawn Ashes series in England on his return to the Test stage after serving a one-year ban for his part in the Newlands ball-tampering scandal.
The former captain will be the prized scalp for Pakistan when they attempt to secure a first series win in Australia in the longest format.
Misbah wants to see his formidable fast bowlers frustrate the top-ranked Test batsman in the world when the series gets under way at the Gabba on Thursday.
The Pakistan head coach said: "As far as Steve Smith goes, there's a blind spot for every top batsman in the world; as a bowler you're always interested in pitching the ball there.
Also see - Live cricket score
"It's important that we bowl with consistency there. Our bowlers are executing the plans very well right now, and hopefully we'll be able to build that kind of a pressure and stay disciplined, especially early in the innings.
"No matter how good a batsman is batting, it's about consistency and bowling the maximum balls in those areas that build pressure and the batsman respects you, and you force him to make a mistake.
"All the batsmen you talk to, any batsman in the world, that's the area where you have to defend a ball, and that is a six-to-eight-metre spot where you have to play the top of off stump.
"That's the area from where if it's happening then that creates a great chance. Even if it's not happening, you have less chances to do anything with the ball.
"It's about consistency, and top players in the world, if you miss those areas, that special length and line, then they are good enough to just cash in on that.
"You have to be very, very disciplined, just keep the ball there, and if it's happening you are already in the game."
The former Pakistan captain added: "The kind of form he is in, there's no doubt Steve Smith is a batting genius. We will try our best to execute our plans and dismiss him."
Key Opta facts
- Pakistan have lost their last two multi-game bilateral Test series, they have not lost more consecutive series in the format since losing all three they competed in across 2007.
- Pat Cummins' tally of 87 Test wickets is more than any other bowler has taken since the start of 2018.
- Australia are undefeated in their last 30 Tests at the Gabba - winning 23 of those matches. Their last defeat at the Brisbane venue was against West Indies in 1988.


Scott Chamberlain
@ropensci
bit.ly/ecoforecast
knitr
and Markdown/LaTeX
- make an open science workflow
R
, including knitr
and Markdown/LaTeX
- make an open science workflow
| Data |
Literature
|
Repositories
|


I am a Ph.D. student in the Department of Electrical Engineering and Computer Science at the University of Missouri-Columbia, under the supervision of Dr. Praveen Rao. I am a part of the Scalable Data Science (SDS) Lab at the School of Engineering, where I develop scalable algorithms and systems for data and knowledge management, and information retrieval. I am also affiliated with the Center for Biomedical Informatics (CBMI), at the School of Medicine, where I explore innovative applications of AI in the various fields of medicine. My main research interests are in the areas of data and knowledge management, data science, and applied machine learning.


Using multiple build directories
One of the main design goals of Meson has been to build all projects out-of-source. This means that all files generated during the build are placed in a separate subdirectory. This goes against common Unix tradition where you build your projects in-source. Building out of source gives two major advantages.
First of all this makes for very simple .gitignore
files. In classical build systems you may need to have tens of lines of definitions, most of which contain wildcards. When doing out of source builds all of this busywork goes away. A common ignore file for a Meson project only contains a few lines that are the build directory and IDE project files.
Secondly this makes it very easy to clean your projects: just delete the build subdirectory and you are done. There is no need to guess whether you need to run make clean
, make distclean
, make mrproper
or something else. When you delete a build subdirectory there is no possible way to have any lingering state from your old builds.
The true benefit comes from somewhere else, though.
Multiple build directories for the same source tree
Since a build directory is fully self contained and treats the source tree as a read-only piece of data, it follows that you can have arbitrarily many build trees for any source tree at the same time. Since all build trees can have different configuration, this is extremely powerful. Now you might be wondering why one would want to have multiple build setups at the same time. Let's examine this by setting up a hypothetical project.
The first thing to do is to set up the default build, that is, the one we are going to use over 90% of the time. In this we use the system compiler and build with debug enabled and no optimizations so it builds as fast as possible. This is the default project type for Meson, so setting it up is simple.
mkdir build
meson build
Another common setup is to build with debug and optimizations to, for example, run performance tests. Setting this up is just as simple.
mkdir buildopt
meson --buildtype=debugoptimized
For systems where the default compiler is GCC, we would like to compile with Clang, too. So let's do that.
mkdir buildclang
CC=clang CXX=clang++ meson buildclang
You can add cross builds, too. As an example, let's set up a Linux -> Windows cross compilation build using mingw.
mkdir buildwine
meson --cross-file=mingw-cross.txt buildwine
The cross compilation file sets up Wine so that not only can you compile your application, you can also run the unit test suite just by issuing the command ninja test
.
To compile any of these build types, just cd into the corresponding build directory and run ninja
or instruct your IDE to do the same. Note that once you have set up your build directory once, you can just run Ninja and Meson will ensure that the resulting build is fully up to date according to the source. Even if you have not touched one of the directories in weeks and have done major changes to your build configuration, Meson will detect this and bring the build directory up to date (or print an error if it can't do that). This allows you to do most of your work in the default directory and use the others every now and then without having to babysit your build directories.
Specialised uses
Separate build directories allows easy integration for various different kinds of tools. As an example, Clang comes with a static analyzer. It is meant to be run from scratch on a given source tree. The steps to run it with Meson are very simple.
rm -rf buildscan
mkdir buildscan
scan-build meson buildscan
cd buildscan
scan-build ninja
These commands are the same for every single Meson project, so they could even be put in a script turning static analysis into a single command.
The results of the search are


Installing NodeJS on Linux (Debian)
We'll follow the instructions for "manual" installation in NodeJS web site.
-
Download the package
Go to Terminal and type (copy/paste):
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
The output should look like this:
-
Install the package
In the Terminal type:
sudo apt-get install -y nodejs
The output should look like this:
-
Confirm installation
Go to the Terminal and type:
node -v
The output should be something like this:
Also test npm is installed because it's a key component. Type:
npm -v
The output should be something like this:


We provide a shortcut to set common models and properties relating to each of the brokerages we support. These brokerage models set fees, fill models, slippage models and trading markets for a brokerage. In addition they validate it is possible to submit trades to the brokerage (e.g. submitting equity trades to a forex only brokerage).
In addition to our default brokerage model ($[DefaultBrokerageModel]), we provide brokerage models for Interactive Brokers ($[InteractiveBrokersBrokerageModel]) , FXCM ($[FxcmBrokerageModel]), OANDA ($[OandaBrokerageModel]) and Tradier ($[TradierBrokerageModel]).
Brokerage models override any other models you may set for a security.


Product Designer previously at Service NSW, Snug.com and CommBank. What do I love doing? Solving complex problems, with tangible outcomes, for people, at scale. 🌏🤲
Looking for a mission-driven Product Designer? Find me on my LinkedIn profile or by email corneliushdo at gmail.com. You can also see a selection of my work below. 👇🏼


Serial POS scammer caught in Lagos, says it’s 1st time (Video)
by Sanya AgunbiadeA serial POS scammer was caught this morning in the Ayobo area of Lagos.
The man who identified himself as Raph and reported to be notorious in the art of scamming POS shops around Lagos, said he is from Benin State and this was his first time of engaging in the act.
A lady who posted the video on social media wrote:
People please be very careful, this man was caught in my area, (Bada in Ayobo Ipaja) he goes about sending fake alert to POS shops and receiving cash from them.. He has done this act severally in a friends POS shop and has succeeded but was caught on this faithful day. Plsss take note of his face in order not to fall victim to his scam.
He said he does the act because he is asthmatic, he claim he came all the way from Benin which obvious is a lie because he seems Yoruba. He also claim its his first time performing this act which is also a lie because he has done it and succeeded severally more than three POS out let. He is even a car owner bt claims he picked his car key on the ground.
He has been handed over to the police (Ayobo division) for proper questioning.
SEE VIDEO:
Follow us on Facebook – @Lailasnews; Twitter – @LailaIjeoma for updates