ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Minitest or Test::Unit.
ZenTest uses the following rules to figure out what code should be generated:
Definition:
CUT = Class Under Test
TC = Test Class (for CUT)
TC’s name is the same as CUT w/ “Test” prepended at every scope level.
Example: TestA::TestB vs A::B.
CUT method names are used in CT, with “test_” prependend and optional “_ext” extensions for differentiating test case edge boundaries.
Example:
A::B#blah
TestA::TestB#test_blah_normal
TestA::TestB#test_blah_missing_file
All naming conventions are bidirectional with the exception of test extensions.
See ZenTestMapping for documentation on method naming.
Process all the supplied classes for methods etc, and analyse the results. Generate the skeletal code and eval it to put the methods into the runtime environment.
# File lib/zentest.rb, line 577 def self.autotest(*klasses) zentest = ZenTest.new klasses.each do |klass| zentest.process_class(klass) end zentest.analyze zentest.missing_methods.each do |klass,methods| methods.each do |method,x| warn "autotest generating #{klass}##{method}" end end zentest.generate_code code = zentest.result puts code if $DEBUG Object.class_eval code end
Runs ZenTest over all the supplied files so that they are analysed and the missing methods have skeleton code written. If no files are supplied, splutter out some help.
# File lib/zentest.rb, line 564 def self.fix(*files) ZenTest.usage_with_exit if files.empty? zentest = ZenTest.new zentest.scan_files(*files) zentest.analyze zentest.generate_code return zentest.result end
# File lib/zentest.rb, line 80 def initialize @result = [] @test_klasses = {} @klasses = {} @error_count = 0 @inherited_methods = Hash.new { |h,k| h[k] = {} } # key = klassname, val = hash of methods => true @missing_methods = Hash.new { |h,k| h[k] = {} } end
Provide a certain amount of help.
# File lib/zentest.rb, line 521 def self.usage puts <<-EO_USAGE usage: #{File.basename $0} [options] test-and-implementation-files... ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Minitest or Test::Unit. ZenTest uses the following rules to figure out what code should be generated: * Definition: * CUT = Class Under Test * TC = Test Class (for CUT) * TC's name is the same as CUT w/ "Test" prepended at every scope level. * Example: TestA::TestB vs A::B. * CUT method names are used in CT, with "test_" prependend and optional "_ext" extensions for differentiating test case edge boundaries. * Example: * A::B#blah * TestA::TestB#test_blah_normal * TestA::TestB#test_blah_missing_file * All naming conventions are bidirectional with the exception of test extensions. options: -h display this information -v display version information -r Reverse mapping (ClassTest instead of TestClass) -e (Rapid XP) eval the code generated instead of printing it -t test/unit generation (default is minitest). EO_USAGE end
Give help, then quit.
# File lib/zentest.rb, line 555 def self.usage_with_exit self.usage exit 0 end
Adds a missing method to the collected results.
# File lib/zentest.rb, line 326 def add_missing_method(klassname, methodname) @result.push "# ERROR method #{klassname}\##{methodname} does not exist (1)" if $DEBUG and not $TESTING @error_count += 1 @missing_methods[klassname][methodname] = true end
Walk each known class and test that each method has a test method Then do it in the other direction…
# File lib/zentest.rb, line 442 def analyze # walk each known class and test that each method has a test method @klasses.each_key do |klassname| self.analyze_impl(klassname) end # now do it in the other direction... @test_klasses.each_key do |testklassname| self.analyze_test(testklassname) end end
Checks, for the given class klassname, that each method has a corrsponding test method. If it doesn’t this is added to the information for that class
# File lib/zentest.rb, line 342 def analyze_impl(klassname) testklassname = self.convert_class_name(klassname) if @test_klasses[testklassname] then _, testmethods = methods_and_tests(klassname, testklassname) # check that each method has a test method @klasses[klassname].each_key do | methodname | testmethodname = normal_to_test(methodname) unless testmethods[testmethodname] then begin unless testmethods.keys.find { |m| m =~ /#{testmethodname}(_\w+)+$/ } then self.add_missing_method(testklassname, testmethodname) end rescue RegexpError puts "# ERROR trying to use '#{testmethodname}' as a regex. Look at #{klassname}.#{methodname}" end end # testmethods[testmethodname] end # @klasses[klassname].each_key else # ! @test_klasses[testklassname] puts "# ERROR test class #{testklassname} does not exist" if $DEBUG @error_count += 1 @klasses[klassname].keys.each do | methodname | self.add_missing_method(testklassname, normal_to_test(methodname)) end end # @test_klasses[testklassname] end
For the given test class testklassname, ensure that all the test methods have corresponding (normal) methods. If not, add them to the information about that class.
# File lib/zentest.rb, line 373 def analyze_test(testklassname) klassname = self.convert_class_name(testklassname) # CUT might be against a core class, if so, slurp it and analyze it if $stdlib[klassname] then self.process_class(klassname, true) self.analyze_impl(klassname) end if @klasses[klassname] then methods, testmethods = methods_and_tests(klassname,testklassname) # check that each test method has a method testmethods.each_key do | testmethodname | if testmethodname =~ /^test_(?!integration_)/ then # try the current name methodname = test_to_normal(testmethodname, klassname) orig_name = methodname.dup found = false until methodname == "" or methods[methodname] or @inherited_methods[klassname][methodname] do # try the name minus an option (ie mut_opt1 -> mut) if methodname.sub!(/_[^_]+$/, '') then if methods[methodname] or @inherited_methods[klassname][methodname] then found = true end else break # no more substitutions will take place end end # methodname == "" or ... unless found or methods[methodname] or methodname == "initialize" then self.add_missing_method(klassname, orig_name) end else # not a test_.* method unless testmethodname =~ /^util_/ then puts "# WARNING Skipping #{testklassname}\##{testmethodname}" if $DEBUG end end # testmethodname =~ ... end # testmethods.each_key else # ! @klasses[klassname] puts "# ERROR class #{klassname} does not exist" if $DEBUG @error_count += 1 @test_klasses[testklassname].keys.each do |testmethodname| @missing_methods[klassname][test_to_normal(testmethodname)] = true end end # @klasses[klassname] end
Generate the name of a testclass from non-test class so that Foo::Blah => TestFoo::TestBlah, etc. It the name is already a test class, convert it the other way.
# File lib/zentest.rb, line 190 def convert_class_name(name) name = name.to_s if self.is_test_class(name) then if $r then name = name.gsub(/Test($|::)/, '\1') # FooTest::BlahTest => Foo::Blah else name = name.gsub(/(^|::)Test/, '\1') # TestFoo::TestBlah => Foo::Blah end else if $r then name = name.gsub(/($|::)/, 'Test\1') # Foo::Blah => FooTest::BlahTest else name = name.gsub(/(^|::)/, '\1Test') # Foo::Blah => TestFoo::TestBlah end end return name end
create a given method at a given indentation. Returns an array containing the lines of the method.
# File lib/zentest.rb, line 428 def create_method(indentunit, indent, name) meth = [] meth.push indentunit*indent + "def #{name}" meth.last << "(*args)" unless name =~ /^test/ indent += 1 meth.push indentunit*indent + "raise NotImplementedError, 'Need to write #{name}'" indent -= 1 meth.push indentunit*indent + "end" return meth end
Using the results gathered during analysis generate skeletal code with methods raising NotImplementedError, so that they can be filled in later, and so the tests will fail to start with.
# File lib/zentest.rb, line 458 def generate_code @result.unshift "# Code Generated by ZenTest v. #{VERSION}" if $DEBUG then @result.push "# found classes: #{@klasses.keys.join(', ')}" @result.push "# found test classes: #{@test_klasses.keys.join(', ')}" end if @missing_methods.size > 0 then @result.push "" @result.push "require 'test/unit/testcase'" @result.push "require 'test/unit' if $0 == __FILE__" @result.push "" end indentunit = " " @missing_methods.keys.sort.each do |fullklasspath| methods = @missing_methods[fullklasspath] cls_methods = methods.keys.grep(/^(self\.|test_class_)/) methods.delete_if {|k,v| cls_methods.include? k } next if methods.empty? and cls_methods.empty? indent = 0 is_test_class = self.is_test_class(fullklasspath) clsname = $t ? "Test::Unit::TestCase" : "Minitest::Test" superclass = is_test_class ? " < #{clsname}" : '' @result.push indentunit*indent + "class #{fullklasspath}#{superclass}" indent += 1 meths = [] cls_methods.sort.each do |method| meth = create_method(indentunit, indent, method) meths.push meth.join("\n") end methods.keys.sort.each do |method| next if method =~ /pretty_print/ meth = create_method(indentunit, indent, method) meths.push meth.join("\n") end @result.push meths.join("\n\n") indent -= 1 @result.push indentunit*indent + "end" @result.push '' end @result.push "# Number of errors detected: #{@error_count}" @result.push '' end
obtain the class klassname
# File lib/zentest.rb, line 106 def get_class(klassname) klass = nil begin klass = klassname.split(/::/).inject(Object) { |k,n| k.const_get n } puts "# found class #{klass.name}" if $DEBUG rescue NameError end if klass.nil? and not $TESTING then puts "Could not figure out how to get #{klassname}..." puts "Report to<EMAIL_ADDRESS>w/ relevant source" end return klass end
Return the methods for class klass, as a hash with the method nemas as keys, and true as the value for all keys. Unless full is true, leave out the methods for Object which all classes get.
# File lib/zentest.rb, line 155 def get_inherited_methods_for(klass, full) klass = self.get_class(klass) if klass.kind_of? String klassmethods = {} if (klass.class.method_defined?(:superclass)) then superklass = klass.superclass if superklass then the_methods = superklass.instance_methods(true) # generally we don't test Object's methods... unless full then the_methods -= Object.instance_methods(true) the_methods -= Kernel.methods # FIX (true) - check 1.6 vs 1.8 end the_methods.each do |meth| klassmethods[meth.to_s] = true end end end return klassmethods end
Get the public instance, class and singleton methods for class klass. If full is true, include the methods from Kernel and other modules that get included. The methods suite, new, pretty_print, pretty_print_cycle will not be included in the resuting array.
# File lib/zentest.rb, line 127 def get_methods_for(klass, full=false) klass = self.get_class(klass) if klass.kind_of? String # WTF? public_instance_methods: default vs true vs false = 3 answers # to_s on all results if ruby >= 1.9 public_methods = klass.public_instance_methods(false) public_methods -= Kernel.methods unless full public_methods.map! { |m| m.to_s } public_methods -= %w(pretty_print pretty_print_cycle) klass_methods = klass.singleton_methods(full) klass_methods -= Class.public_methods(true) klass_methods = klass_methods.map { |m| "self.#{m}" } klass_methods -= %w(self.suite new) result = {} (public_methods + klass_methods).each do |meth| puts "# found method #{meth}" if $DEBUG result[meth] = true end return result end
Check the class klass is a testing class (by inspecting its name).
# File lib/zentest.rb, line 180 def is_test_class(klass) klass = klass.to_s klasspath = klass.split(/::/) a_bad_classpath = klasspath.find do |s| s !~ ($r ? /Test$/ : /^Test/) end return a_bad_classpath.nil? end
#load_file wraps require, skipping the loading of $0.
# File lib/zentest.rb, line 91 def load_file(file) puts "# loading #{file} // #{$0}" if $DEBUG unless file == $0 then begin require file rescue LoadError => err puts "Could not load #{file}: #{err}" end else puts "# Skipping loading myself (#{file})" if $DEBUG end end
looks up the methods and the corresponding test methods in the collection already built. To reduce duplication and hide implementation details.
# File lib/zentest.rb, line 335 def methods_and_tests(klassname, testklassname) return @klasses[klassname], @test_klasses[testklassname] end
# File lib/zentest.rb, line 77 def missing_methods; raise "Something is wack"; end
Does all the work of finding a class by name, obtaining its methods and those of its superclass. The full parameter determines if all the methods including those of Object and mixed in modules are obtained (true if they are, false by default).
# File lib/zentest.rb, line 215 def process_class(klassname, full=false) klass = self.get_class(klassname) raise "Couldn't get class for #{klassname}" if klass.nil? klassname = klass.name # refetch to get full name is_test_class = self.is_test_class(klassname) target = is_test_class ? @test_klasses : @klasses # record public instance methods JUST in this class target[klassname] = self.get_methods_for(klass, full) # record ALL instance methods including superclasses (minus Object) # Only minus Object if full is true. @inherited_methods[klassname] = self.get_inherited_methods_for(klass, full) return klassname end
presents results in a readable manner.
# File lib/zentest.rb, line 516 def result return @result.join("\n") end
Work through files, collecting class names, method names and assertions. Detects ZenTest (SKIP|FULL) comments in the bodies of classes. For each class a count of methods and test methods is kept, and the ratio noted.
# File lib/zentest.rb, line 237 def scan_files(*files) assert_count = Hash.new(0) method_count = Hash.new(0) klassname = nil files.each do |path| is_loaded = false # if reading stdin, slurp the whole thing at once file = (path == "-" ? $stdin.read : File.new(path)) file.each_line do |line| if klassname then case line when /^\s*def/ then method_count[klassname] += 1 when /assert|flunk/ then assert_count[klassname] += 1 end end if line =~ /^\s*(?:class|module)\s+([\w:]+)/ then klassname = $1 if line =~ /\#\s*ZenTest SKIP/ then klassname = nil next end full = false if line =~ /\#\s*ZenTest FULL/ then full = true end unless is_loaded then unless path == "-" then self.load_file(path) else eval file, TOPLEVEL_BINDING end is_loaded = true end begin klassname = self.process_class(klassname, full) rescue puts "# Couldn't find class for name #{klassname}" next end # Special Case: ZenTest is already loaded since we are running it if klassname == "TestZenTest" then klassname = "ZenTest" self.process_class(klassname, false) end end # if /class/ end # IO.foreach end # files result = [] method_count.each_key do |classname| entry = {} next if is_test_class(classname) testclassname = convert_class_name(classname) a_count = assert_count[testclassname] m_count = method_count[classname] ratio = a_count.to_f / m_count.to_f * 100.0 entry['n'] = classname entry['r'] = ratio entry['a'] = a_count entry['m'] = m_count result.push entry end sorted_results = result.sort { |a,b| b['r'] <=> a['r'] } @result.push sprintf("# %25s: %4s / %4s = %6s%%", "classname", "asrt", "meth", "ratio") sorted_results.each do |e| @result.push sprintf("# %25s: %4d / %4d = %6.2f%%", e['n'], e['a'], e['m'], e['r']) end end


{% extends "layout.html" %} {% block title %} Stale tasks in {{ jobfolder }} {% endblock title %} {% block layout-content %}
| Name | Last seen | Claimed | M/N | |
|---|---|---|---|---|
| {{ worker.user.get_full_name }} | {{ worker.latest_update|date }} | {{ worker.oldest_undone|date }} | {{ worker.num_completed }} | {{ worker.num_total }} |
{% for worker in workers %}
"{{ worker.user.get_full_name }}" <{{ worker.user.email }}>,
{% endfor %}
{% endblock layout-content %}


"To Travel is to Live"-Hans Christian Andersen
Signup Now
Creating an account is free..
and won't take longer than a couple os seconds
Your Name
Email
Mobile
Password
Retype Password
I Accept to the Terms & Conditions


{{define "indexPage"}} {{template "header"}}
Welcome to the TPS reporting system. This system displays Testing Procedure Specification reports.
Click 'Reports' to get started.
{{.}}


Button-click events are delivered to the actionPerformed()
method,
but it always does the same thing,
regardless of which button is clicked.
Look again at the method:
public void actionPerformed( Action Event evt) { getContentPane().setBackground( Color.blue ); repaint(); }
The picture shows the present situation. Event objects from both buttons are delivered to the same method, which changes the background to blue no matter what event it receives.
We would like the ActionEvent
that is delivered to
actionPerformed()
to say what should be done.
To do this, you can associate a different command with each button using
setActionCommand(String command)
Now each button sends its command
(a String) as part of
the ActionEvent
when it is clicked.
The actionPerformed()
method uses the command to see
what to do.
If you don't use setActionCommand()
to assign a command to a button,
the command it sends will be the same as its text.
This is usually OK, but is awkward in large projects.


Publications
- Kamucheka, T., Gui, Z., Huang, M., Churchill, H., & El-Shenawee, M. (2020, July). Benchmark of Acceleware vs XFdtd for Field Simulations of Microstrip Patch Antenna. In 2020 International Applied Computational Electromagnetics Society Symposium (ACES) (pp. 1-2). IEEE.
- Kamucheka, T., Fahr, M., Teague, T., Nelson, A., Andrews, D., & Huang, M. Power Based Side-Channel Attack Analysis on PQC Algorithms.
- Kamucheka, T., Nelson, A., Andrews, D., & Huang, M. A Masked Pure-Hardware Implementation of Kyber Cryptographic Algorithm.
- Kamucheka, T., Mai, Q., Wei, G., Huang, M., Liu, X., CuSMC: Fast Parallel Implementation for Sequential Monte Carlo on GPU, Journal of Quality Technology. CuSMC R Package


“Calcium deficiency is a serious health condition that can be avoided by taking a balanced diet with calsium rich food.”


On 20 October 2018, 4 new articles were published in 4 journals.
An Analysis of State Statutes Regarding the Role of Law Enforcement
Advancing A Conceptual and Empirical Model of School Climate For School Staff in California
Patrol Career Interest and Perceptions of Barriers Among African-American Criminal Justice Students
Penal Humanitarianism Beyond the Nation State: An Analysis of International Criminal Justice


|
| | DataLoader (Tensor< T > *x, Tensor< T > *y, unsigned int batch_size) |
| |
| virtual void | next (Tensor< T > *x_batch, Tensor< T > *y_batch)=0 |
| |
| virtual void | reset ()=0 |
| |
|
virtual unsigned int | get_batch_size () const |
| |
|
virtual void | set_batch_size (unsigned int size) |
| |
|
virtual unsigned int | get_num_batches () const |
| |
|
|
Tensor< T > * | x |
| |
|
Tensor< T > * | y |
| |
|
unsigned int | batch_size |
| |
|
unsigned int | sample_size_x |
| |
|
unsigned int | sample_size_y |
| |
|
unsigned int | num_batches |
| |
◆ DataLoader()
Constructs a DataLoader object with given data and parameters
- Parameters
-
| x | input features |
| y | output labels |
| batch_size | |
◆ next()
◆ reset()
The documentation for this class was generated from the following file:


chrome.downloads
Warning: This API is still under development. It is only
available for Chrome users on the
dev
early
release channel.
Learn more.
The downloads API allows you to programmatically initiate, monitor,
manipulate, and search for downloads.
Manifest
You must declare the 'downloads' permission in the extension manifest to use this API, along with host permissions for any hosts that you
may pass to download().
{
'name': 'My extension',
...
'permissions': [
'downloads',
'*://*.google.com'
],
...
}
If the URL's hostname is not specified in the permissions, then download() will call its callback with a null
downloadId
and set the chrome.extensions.lastError
object to indicate that the extension does not have permission to access that
hostname.
Examples
You can find simple examples of using the downloads module in the examples/api/downloads
directory. For other examples and for help in viewing the source code, see Samples.
API reference: chrome.downloads
Methods
cancel
chrome.downloads.cancel(integer
downloadId, function
NullCallback)
Cancel a download. When callback
is run, the download is cancelled, completed, interrupted or doesn't exist anymore.
Parameters
-
downloadId
(
integer
)
- The id of the download to cancel.
-
NullCallback
(
optional
function
)
-
Undocumented.
-
Callback function
If you specify the callback parameter, it should
specify a function that looks like this:
function() {...};
download
chrome.downloads.download(object
options, function
DownloadCallback)
Download a URL. If the URL uses the HTTP[S] protocol, then the request will include all cookies currently set for its hostname. If both filename
and saveAs
are specified, then the Save As dialog will be displayed, pre-populated with the specified filename
. If the download started successfully, callback
will be called with the new DownloadItem's downloadId
. If there was an error starting the download, then callback
will be called with downloadId=undefined
and chrome.extension.lastError will contain a descriptive string. The error strings are not guaranteed to remain backwards compatible between releases. You must not parse it.
Parameters
-
options
(
object
)
- What to download and how.
-
-
body
(
optional
string
)
- Post body.
-
filename
(
optional
string
)
- A file path relative to the Downloads directory to contain the downloaded file.
-
headers
(
optional
array of
object
)
- Extra HTTP headers to send with the request if the URL uses the HTTP[s] protocol. Each header is represented as a dictionary containing the keys
name
and either value
or binaryValue
, restricted to those allowed by XMLHttpRequest.
-
-
name
(
string
)
- Name of the HTTP header.
-
value
(
string
)
- Value of the HTTP header.
-
method
(
optional
enumerated
string
["GET", "POST"]
)
- The HTTP method to use if the URL uses the HTTP[S] protocol.
-
saveAs
(
optional
boolean
)
- Use a file-chooser to allow the user to select a filename.
-
url
(
string
)
- The URL to download.
-
DownloadCallback
(
optional
function
)
-
Undocumented.
-
Parameters
-
downloadId
(
integer
)
-
Undocumented.
Callback function
If you specify the callback parameter, it should
specify a function that looks like this:
function(integer downloadId) {...};
-
downloadId
(
integer
)
-
Undocumented.
getFileIcon
chrome.downloads.getFileIcon(integer
downloadId, object
options, function
GetFileIconCallback)
Retrieve an icon for the specified download. For new downloads, file icons are available after the onCreated event has been received. The image returned by this function while a download is in progress may be different from the image returned after the download is complete. Icon retrieval is done by querying the underlying operating system or toolkit depending on the platform. The icon that is returned will therefore depend on a number of factors including state of the download, platform, registered file types and visual theme. If a file icon cannot be determined, chrome.extension.lastError will contain an error message.
Parameters
-
downloadId
(
integer
)
- The identifier for the download.
-
options
(
optional
object
)
-
Undocumented.
-
-
size
(
optional
enumerated
integer
[16, 32]
)
- The size of the icon. The returned icon will be square with dimensions size * size pixels. The default size for the icon is 32x32 pixels.
-
GetFileIconCallback
(
function
)
-
Undocumented.
-
Parameters
-
iconURL
(
optional
string
)
-
Undocumented.
Callback function
The callback parameter should specify a function
that looks like this:
function(string iconURL) {...};
-
iconURL
(
optional
string
)
-
Undocumented.
pause
chrome.downloads.pause(integer
downloadId, function
NullCallback)
Pause the download. If the request was successful the download is in a paused state. Otherwise chrome.extension.lastError contains an error message. The request will fail if the download is not active.
Parameters
-
downloadId
(
integer
)
- The id of the download to pause.
-
NullCallback
(
optional
function
)
-
Undocumented.
-
Callback function
If you specify the callback parameter, it should
specify a function that looks like this:
function() {...};
resume
chrome.downloads.resume(integer
downloadId, function
NullCallback)
Resume a paused download. If the request was successful the download is in progress and unpaused. Otherwise chrome.extension.lastError contains an error message. The request will fail if the download is not active.
Parameters
-
downloadId
(
integer
)
- The id of the download to resume.
-
NullCallback
(
optional
function
)
-
Undocumented.
-
Callback function
If you specify the callback parameter, it should
specify a function that looks like this:
function() {...};
search
chrome.downloads.search(object
query, function
SearchCallback)
Find DownloadItems. Set query
to the empty object to get all DownloadItems. To get a specific DownloadItem, set only the id
field.
Parameters
-
query
(
object
)
-
Undocumented.
-
-
bytesReceived
(
optional
integer
)
- Number of bytes received so far from the host, without considering file compression.
-
danger
- Indication of whether this download is thought to be safe or known to be suspicious.
-
dangerAccepted
(
optional
boolean
)
- True if the user has accepted the download's danger.
-
endTime
(
optional
integer
)
- Number of milliseconds between the unix epoch and when this download ended.
-
endedAfter
(
optional
integer
)
- Limits results to DownloadItems that ended after the given ms since the epoch.
-
endedBefore
(
optional
integer
)
- Limits results to DownloadItems that ended before the given ms since the epoch.
-
error
(
optional
integer
)
- Number indicating why a download was interrupted.
-
fileSize
(
optional
integer
)
- Number of bytes in the whole file post-decompression, or -1 if unknown.
-
filename
(
optional
string
)
- Absolute local path.
-
filenameRegex
(
optional
string
)
- Limits results to DownloadItems whose
filename
matches the given regular expression.
-
id
(
optional
integer
)
- The
id
of the DownloadItem that changed.
-
limit
(
optional
integer
)
- Setting this integer limits the number of results. Otherwise, all matching DownloadItems will be returned.
-
mime
(
optional
string
)
- The file's MIME type.
-
orderBy
(
optional
string
)
- Setting this string to a DownloadItem property sorts the DownloadItems prior to applying the above filters. For example, setting
orderBy='startTime'
sorts the DownloadItems by their start time in ascending order. To specify descending order, prefix orderBy
with a hyphen: '-startTime'.
-
paused
(
optional
boolean
)
- True if the download has stopped reading data from the host, but kept the connection open.
-
query
(
optional
string
)
- This space-separated string of search terms that may be grouped using quotation marks limits results to DownloadItems whose
filename
or url
contain all of the search terms that do not begin with a dash '-' and none of the search terms that do begin with a dash.
-
startTime
(
optional
integer
)
- Number of milliseconds between the unix epoch and when this download began.
-
startedAfter
(
optional
integer
)
- Limits results to DownloadItems that started after the given ms since the epoch.
-
startedBefore
(
optional
integer
)
- Limits results to DownloadItems that started before the given ms since the epoch.
-
state
- Indicates whether the download is progressing, interrupted, or complete.
-
totalBytes
(
optional
integer
)
- Number of bytes in the whole file, without considering file compression, or -1 if unknown.
-
totalBytesGreater
(
optional
integer
)
- Limits results to DownloadItems whose
totalBytes
is greater than the given integer.
-
totalBytesLess
(
optional
integer
)
- Limits results to DownloadItems whose
totalBytes
is less than the given integer.
-
url
(
optional
string
)
- Absolute URL.
-
urlRegex
(
optional
string
)
- Limits results to DownloadItems whose
url
matches the given regular expression.
-
SearchCallback
(
function
)
-
Undocumented.
-
Callback function
The callback parameter should specify a function
that looks like this:
function(array of downloads.DownloadItem results) {...};
Events
onChanged
chrome.downloads.onChanged.addListener(function(object downloadDelta) {...});
When any of a DownloadItem's properties except bytesReceived
changes, this event fires with the downloadId
and an object containing the properties that changed.
Listener parameters
-
downloadDelta
(
object
)
-
Undocumented.
-
-
danger
(
optional
object
)
- The change in
danger
, if any.
-
-
current
(
optional
string
)
-
Undocumented.
-
previous
(
optional
string
)
-
Undocumented.
-
dangerAccepted
(
optional
object
)
- The change in
dangerAccepted
, if any.
-
-
current
(
optional
boolean
)
-
Undocumented.
-
previous
(
optional
boolean
)
-
Undocumented.
-
endTime
(
optional
object
)
- The change in
endTime
, if any.
-
-
current
(
optional
integer
)
-
Undocumented.
-
previous
(
optional
integer
)
-
Undocumented.
-
error
(
optional
object
)
- The change in
error
, if any.
-
-
current
(
optional
integer
)
-
Undocumented.
-
previous
(
optional
integer
)
-
Undocumented.
-
fileSize
(
optional
object
)
- The change in
fileSize
, if any.
-
-
current
(
optional
integer
)
-
Undocumented.
-
previous
(
optional
integer
)
-
Undocumented.
-
filename
(
optional
object
)
- The change in
filename
, if any.
-
-
current
(
optional
string
)
-
Undocumented.
-
previous
(
optional
string
)
-
Undocumented.
-
id
(
integer
)
- An identifier that is persistent across browser sessions.
-
mime
(
optional
object
)
- The change in
mime
, if any.
-
-
current
(
optional
string
)
-
Undocumented.
-
previous
(
optional
string
)
-
Undocumented.
-
paused
(
optional
object
)
- The change in
paused
, if any.
-
-
current
(
optional
boolean
)
-
Undocumented.
-
previous
(
optional
boolean
)
-
Undocumented.
-
startTime
(
optional
object
)
- The change in
startTime
, if any.
-
-
current
(
optional
integer
)
-
Undocumented.
-
previous
(
optional
integer
)
-
Undocumented.
-
state
(
optional
object
)
- The change in
state
, if any.
-
-
current
(
optional
string
)
-
Undocumented.
-
previous
(
optional
string
)
-
Undocumented.
-
totalBytes
(
optional
object
)
- The change in
totalBytes
, if any.
-
-
current
(
optional
integer
)
-
Undocumented.
-
previous
(
optional
integer
)
-
Undocumented.
-
url
(
optional
object
)
- The change in
url
, if any.
-
-
current
(
optional
string
)
-
Undocumented.
-
previous
(
optional
string
)
-
Undocumented.
onCreated
chrome.downloads.onCreated.addListener(function(downloads.DownloadItem downloadItem) {...});
This event fires with the DownloadItem object when a download begins.
Listener parameters
-
downloadItem
-
Undocumented.
onErased
chrome.downloads.onErased.addListener(function(integer downloadId) {...});
Fires with the downloadId
when a download is erased from history.
Listener parameters
-
downloadId
(
integer
)
- The
id
of the DownloadItem that was erased.
Types
downloads.DangerType
(
enumerated
string
["file", "url", "content", "uncommon", "safe"]
)
- file
- The download's filename is suspicious.
- url
- The download's URL is known to be malicious.
- content
- The downloaded file is known to be malicious.
- uncommon
- The download's URL is not commonly downloaded and could be dangerous.
- safe
- The download presents no known danger to the user's computer.
These string constants will never change, however the set of DangerTypes may change.
downloads.State
(
enumerated
string
["in_progress", "interrupted", "complete"]
)
- in_progress
- The download is currently receiving data from the server.
- interrupted
- An error broke the connection with the file host.
- complete
- The download completed successfully.
These string constants will never change, however the set of States may change.
downloads.DownloadItem
(
object
)
Undocumented.
-
bytesReceived
(
integer
)
- Number of bytes received so far from the host, without considering file compression.
-
danger
- Indication of whether this download is thought to be safe or known to be suspicious.
-
dangerAccepted
(
optional
boolean
)
- True if the user has accepted the download's danger.
-
endTime
(
optional
integer
)
- Number of milliseconds between the unix epoch and when this download ended.
-
error
(
optional
integer
)
- Number indicating why a download was interrupted.
-
fileSize
(
integer
)
- Number of bytes in the whole file post-decompression, or -1 if unknown.
-
filename
(
string
)
- Absolute local path.
-
id
(
integer
)
- An identifier that is persistent across browser sessions.
-
incognito
(
boolean
)
- False if this download is recorded in the history, true if it is not recorded.
-
mime
(
string
)
- The file's MIME type.
-
paused
(
boolean
)
- True if the download has stopped reading data from the host, but kept the connection open.
-
startTime
(
integer
)
- Number of milliseconds between the unix epoch and when this download began.
-
state
- Indicates whether the download is progressing, interrupted, or complete.
-
totalBytes
(
integer
)
- Number of bytes in the whole file, without considering file compression, or -1 if unknown.
-
url
(
string
)
- Absolute URL.


headache children headaches primary study (%) Headache prevalence patients {border-style age migraine px;} #ffffff;} showed preschool headache, increase adolescents factors pediatric significant years increased school ./j.-...x Pain type aged common data px; statistically {font-family font-size headache. symptoms years) Prevalence childhood children, double; higher number onset recent steady studies tension using years, younger ./s--- Fig. ICHD- Neurol associated border-color border-width boys daily diagnosed included medical needed parents proportion quality solid; stress study, {font-style {font-weight Cephalalgia Face Head Headache: Headaches TTH bold chronic courier; determine em; girls headaches, history life. migraine, pain population population-based proportions psychological pt;} socioeconomic statistical three-fold types years.


This guide explains how to set up your Angular project to begin using Ngw
. It includes information on installing and importing Ngw
to your Angular Application.
Ngw
Ngw
Comes has a npm package so you can start installing Ngw
by running following command :
npm i ngw-core --save
The above command installs Ngw
and adds it has a dependency to your application.
To start using ngw in your angular application, you need to import it to your app.module.ts
as shown in below snippet
{{codeSnippet}}
P.S - Optionally you can pass the config object to ngw
import, which will help customize and theme ngw
. Refer theme section for more information.


Hi,
I am looking into getting an EmonTX and will be hooking up the 9VAC adapter to get real power readings. There is nothing in the shop for AU/NZ adapters however.
Just wondering if I can grab any 240VAC-9VAC adapter or if the ones in the shop are particularly good for some reason? If so I could buy a simple travel adapter to allow me to plug into an NZ socket - but would prefer an adapter made for the job if possible.
Hoping there are some other antipodeans on here that have some suggestions?!
Cheers,
Ben
Re: 9VAC Adapter for AU/NZ
The one in the shop is this: http://www.idealpower.co.uk/external-power-supply/fixed-plug-top-ac-ac-l...
It is the "best" only because we have checked it and know it's properties. If Ideal can supply this with the correct plug - it may be worth asking - then I'd suggest that. Otherwise, you need to find a local equivalent. The actual output voltage (unloaded) is what matters, it must not exceed 15 V rms at your maximum mains voltage, and it should be close to 11.6 V at 240 V mains (11.1 V at 230 V - your nominal mains voltage). If the output voltage is significantly different, the emonTx might not work at the lowest mains voltage, and you might need a programmer to adjust the voltage calibration.
Re: 9VAC Adapter for AU/NZ
Thanks Robert - I am emailed IdealPower to check. Assuming they can't help then I just need to buy one here and put a voltage meter across the output of the adapter (with no load) and check the voltage against those values you listed?
I have a decent voltmeter (Fluke - from my electricial engineering student days) so I should be able to get a reading I think. How do I check against different mains voltages however? Is that a matter of taking reading during a high PV generation period? Or do I need to monitor the mains voltage for a period of time and wait for higher/lower voltages?
I am a programmer so am more than happy to alter the Arduino sketches - so that is not a problem if I need to alter the voltage calibration.
Re: 9VAC Adapter for AU/NZ
If you do consider buying an adapter locally, the most awkward question to ask is "what is the phase and harmonic distortion?" No prizes for the likely answer (Don't know) but if they do know, then constancy of phase error and low distortion are preferable. You also need the no-load output voltage at whatever the nominal input voltage is (probably 230 V for you), though it might be phrased as "Output: 9 V, regulation: 18%" meaning the voltage at the rated load is 9 V, under no load it rises by 18% (to 10.62 V). Your electricity supplier will tell you their voltage limits (e.g. in the UK it's 230 V - 6% + 10%) and if you measure the mains voltage and then the adapter output, you can verify the adapter data.
If you want to measure mains voltage, highest will probably be late evening as people go to bed and demand drops, lowest during late afternoon or during an ad break in, or at the end of, a popular TV program!
Re: 9VAC Adapter for AU/NZ
Is this what you're looking for? http://www.idealpower.co.uk/external-power-supply/fixed-plug-top-ac-ac-l...
Re: 9VAC Adapter for AU/NZ
Yes - that looks like the ticket! Thanks for finding that Robert. I will try and order one now and see if they will ship to NZ.
Re: 9VAC Adapter for AU/NZ
Robert - I have tried a couple of times to contact IdealPower.co.uk but haven't had a response yet.
Is there anyway the OEM shop can get one through your supply channels? I want to buy a few other bits and pieces but will wait until I hear from you regarding this, in case I can save some postage by bundling everything up.
Cheers,
Ben
Re: 9VAC Adapter for AU/NZ
You'll need to contact the shop for that<EMAIL_ADDRESS>Re: 9VAC Adapter for AU/NZ
I heard back from Ideal - they will only deal in orders of 100+ units!
I think I am just going to have to source something locally - or buy the UK version and chuck a plug adapter on it - any downsides with doing that?
Thanks for your help with this Robert.
Re: 9VAC Adapter for AU/NZ
You need 99 friends in your part of the world!
With an adapter, I suspect it might fall out with a little less provocation than it might otherwise need, otherwise I don't see a problem.
Re: 9VAC Adapter for AU/NZ
Hi Sumnerboy
I am in NZ and I have used this 9v AC adaptor from Jaycar. http://www.jaycar.co.nz/productView.asp?ID=MP3027&w=9v&form=KEYWORD
I have not done much in the way of calibration but it seems to be reading very close to my solar inverter output so it was good enought for my purposes. I have also set up a emoncms.org.nz site to host NZ data if required. Let me know if you want to access it.
Regards
Nathan
Re: 9VAC Adapter for AU/NZ
Hey Nathan,
Would love to have a look if you don't mind - I was hoping another Kiwi would eventually see my pleas for help!
Cheers - whereabouts are you based? I am down in ChCh.
Cheers,
Ben
Re: 9VAC Adapter for AU/NZ
Hey Robert - well I received my EmonTX shield and have soldered it all together. I also received the 9VAC wall wart recommended by Nathan.
I have been trying to follow the calibration guide and have taken the following readings;
* multi-meter at a socket in my wall = 240VAC exactly (239.99-240.01)
* multimeter at output of 9VAC wall wart (i.e. no-load) = 11.33VAC
I can't quite follow how I calculate a new VCAL for my Arduino sketch (I am testing with Shield_CT1234_Voltage_SerialOnly with CT3 and CT4 disabled in the sketch). The VCAL constant in that sketch is 300.6.
Based on the formula (copied verbatim from http://openenergymonitor.org/emon/buildingblocks/ct-and-ac-power-adaptor...);
voltage constant = 230 × 11 ÷ (9 × 1.20) =
I am just not sure where these values come from. 230 is obviously mains VAC. But where is the 11, 9 and 1.2 from?
Any help would be greatly appreciated, I am happy to change the sketch and measure voltages, but I just am a bit lost where to go from here.
Re: 9VAC Adapter for AU/NZ
Ok - so further testing;
Hooked up CT1 around my 3kW hot water cylinder feed and turned it on. I am getting the follwing out of the ShieldCT1234_Voltage_SerialOnly sketch;
emonTX Shield CT123 Voltage Serial Only example
OpenEnergyMonitor.org
28250.33 439.43
3366.62 261.75
3093.65 259.51
3096.61 259.52
3103.76 259.79
3110.60 260.16
3114.85 260.28
3112.58 260.23
3110.37 260.12
3104.99 259.91
3101.55 259.73
3109.43 259.90
3104.65 259.81
3110.61 260.08
3105.78 259.88
3109.65 260.05
So it is a little higher than 3kW but is that to be expected? This is still using the default VCAL = 300.6.
I am just not sure if I need to calibrate anything - sorry for the noob questions!
Re: 9VAC Adapter for AU/NZ
You haven't read the rest of the calibration theory page, have you ;-)
The adapter has a regulation of 20%, meaning that unloaded, the output voltage is 9 V x 1.2, always assuming that the adapter gives 9 V fully loaded at 230 V in. Yours may be different. That voltage is divided down by a potential divider R13 & R14 by a factor of ........ wait for it ......... 11, again assuming the resistors are exactly on the nominal value. The assumptions mean it's perfectly acceptable to tweak the number to get the right answer for the voltage (and the current for that matter). I assume you've seen http://openenergymonitor.org/emon/buildingblocks/calibration for blow-by-blow instructions. That was written for the emonTx V2 (running on 3.3 V) and the lines in your sketch won't be identical, but it should help you through the complete calibration process.
Re: 9VAC Adapter for AU/NZ
I did read it - believe me - multiple times! This stuff is all a bit new to me so I am finding it a little difficult to follow. I really appreciate you taking the time to respond tho!
So based on what you have said, my equation should look something like;
VCAL = 240 * 11 / 11.33
Since I measure my (unloaded) mains supply as 240V exactly, and my 9V adapter as 11.33 (also unloaded).
This gives me a value for VCAL of 233.01. This doesn't account for variations in the potential divider as you mentioned.
I did read the blow-by-blow instructions but I am not too confident about putting a multimeter in series with a 240VAC load. Happy to read voltages across things, but putting in series is another matter!
So does that now look about right (in terms of the equation)?
I will update my sketch with 233 as the VCAL and try this out again tomorrow - this time on my PV feed since I have a digital readout on the inverter showing what it is generating. Hopefully there will be enough sun to make it worth while!
Thanks for your patience :).
Re: 9VAC Adapter for AU/NZ
That VCAL looks reasonable.
"I am not too confident about putting a multimeter in series with a 240VAC load" Obviously you need to do your homework first. Find out the maximum current that your meter will handle - there are likely to be two values, continuous and short-term with a time limit. Also check the current rating of your test leads. Choose an appliance whose rating you know that will give you a suitable current, and you should be OK. If you are using the short-term rating, make sure you switch off the load within that time limit and allow the meter to cool completely before you measure again. You will probably have to wait some tens of minutes.
Re: 9VAC Adapter for AU/NZ
I guess what threw my off in the first place was why the shield example sketches all have a VCAL of 300.6. Wasn't sure why that was deemed the default when the calcs in the calibration page seem to suggest it should be around 234.26 (from equation "voltage constant = 230 × 11 ÷ (9 × 1.20) = 234.26" on http://openenergymonitor.org/emon/buildingblocks/ct-and-ac-power-adaptor-installation-and-calibration-theory).
Re: 9VAC Adapter for AU/NZ
After hooking up the CTs around my solar inverter output and adjusting the VCAL based on what the inverter output is saying I think I have now got it calibrated pretty right!
Thanks for your help. Now to integrate with the ethernet shield and start publishing MQTT messages...


This is a reference document with a list of the filters and their arguments.
This filter does simple character matches, used with CharField and TextField by default.
This filter matches a boolean, either True or False, used with BooleanField and NullBooleanField by default.
This filter matches an item of any type by choices, used with any field that has choices.
The same as ChoiceFilter with the added possibility to convert value to match against. This could be done by using coerce parameter. An example use-case is limiting boolean choices to match against so only some predefined strings could be used as input of a boolean filter:
import django_filters
from distutils.util import strtobool
BOOLEAN_CHOICES = (('false', 'False'), ('true', 'True'),)
class YourFilterSet(django_filters.FilterSet):
...
flag = django_filters.TypedChoiceFilter(choices=BOOLEAN_CHOICES,
coerce=strtobool)
The same as ChoiceFilter except the user can select multiple items and it selects the OR of all the choices.
Advanced Use: Depending on your application logic, when all or no choices are selected, filtering may be a noop. In this case you may wish to avoid the filtering overhead, particularly of the distinct call.
Set always_filter to False after instantiation to enable the default is_noop test.
Override is_noop if you require a different test for your application.
Matches on a date. Used with DateField by default.
Matches on a date and time. Used with DateTimeField by default.
Matches on a time. Used with TimeField by default.
Similar to a ChoiceFilter except it works with related models, used for ForeignKey by default.
Similar to a MultipleChoiceFilter except it works with related models, used for ManyToManyField by default.
Filters based on a numerical value, used with IntegerField, FloatField, and DecimalField by default.
Filters where a value is between two numerical values, or greater than a minimum or less than a maximum where only one limit value is provided.
class F(FilterSet):
"""Filter for Books by Price"""
price = RangeFilter()
class Meta:
model = Book
fields = ['price']
qs = Book.objects.all().order_by('title')
# Range: Books between 5€ and 15€
f = F({'price_0': '5', 'price_1': '15'}, queryset=qs)
# Min-Only: Books costing more the 11€
f = F({'price_0': '11'}, queryset=qs)
# Max-Only: Books costing less than 19€
f = F({'price_1': '19'}, queryset=qs)
Filter similar to the admin changelist date one, it has a number of common selections for working with date fields.
This is a ChoiceFilter whose choices are the current values in the database. So if in the DB for the given field you have values of 5, 7, and 9 each of those is present as an option. This is similar to the default behavior of the admin.
This is a Filter that will allow you to run a method that exists on the filter set that this filter is a property of. Set the action to a string that will map to a method on the filter set class.
The name of the field this filter is supposed to filter on, if this is not provided it automatically becomes the filter’s name on the FilterSet.
The label as it will apear in the HTML, analogous to a form field’s label argument.
The django.form Widget class which will represent the Filter. In addition to the widgets that are included with Django that you can use there are additional ones that django-filter provides which may be useful:
- django_filters.widgets.LinkWidget – this displays the options in a mannner similar to the way the Django Admin does, as a series of links. The link for the selected option will have class="selected".
An optional callable that tells the filter how to handle the queryset. It recieves a QuerySet and the value to filter on and should return a Queryset that is filtered appropriately.
The type of lookup that should be performed using the [Django ORM](https://docs.djangoproject.com/en/dev/ref/models/querysets/#field-lookups “Django’s ORM Lookups”). All the normal options are allowed, and should be provided as a string. You can also provide either None or a list or a tuple. If None is provided, then the user can select the lookup type from all the ones available in the Django ORM. If a list or tuple is provided, then the user can select from those options.
A boolean value that specifies whether the Filter will use distinct on the queryset. This option can be used to eliminate duplicate results when using filters that span related models. Defaults to False.
A boolean value that specifies whether the Filter should use filter or exclude on the queryset. Defaults to False.
Any extra keyword arguments will be provided to the accompanying form Field. This can be used to provide arguments like choices or queryset.


--- title: Typography subtitle: Subtitle layout: layout-docs category: General breadcrumb: General icon: typography ---
Design System uses Lato as the main typeface, which is an open source font provided by Google here.
| rem | pixels | Actual size |
|---|---|---|
| 5.25 | 84 | Display |
| 3.375 | 54 | Header 1 |
| 2.75 | 44 | Header 2 |
| 2 | 32 | Header 3 |
| 1.625 | 26 | Header 4 |
| 1.375 | 22 | Header 5 |
| 1.25 | 20 | Header 6 |
| 1.125 | 18 | Paragraph / Base size |
| 1 | 16 | small |
You can apply the display
class to any text you like to have it prominent. For the rest of the headings, replace h1
tag with the size you wish to use from above accordingly.
| Modifier | Description |
|---|---|
| has-text-primary | Use when you want to apply primary color to your text |
| has-text-primary | Use when you want to apply secondary color to your text |
| has-text-weight-light | Use when you want to transform text weight to light |
| has-text-weight-semibold | Use when you want to transform text weight to semi-bold |
| has-text-weight-bold | Use when you want to transform text weight to bold |
| is-lowercase | Use when you want to transform all characters to lowercase |
| is-uppercase | Use when you want to transform all characters to uppercase |
| is-italic | Use when you want to transform all characters to italic |
| has-text-centered | Use when you want to make the text centered |
| has-text-justified | Use when you want to make the text justified |
| has-text-left | Use when you want to make the text aligned to the left |
| has-text-right | Use when you want to make the text aligned to the right |


Please enter however much of your starting currency you'd like to convert.
Converting from:
Dollars (American)
Euros
British Pounds
Dollars (Australian)
Dollars (Canadian)
to:
Dollars (American)
Euros
British Pounds
Dollars (Australian)
Dollars (Canadian)
Change it


The UK has one of the most fluid job economies in the world. On average, in a given year, 3.5 million jobs are lost and 4 million new jobs are created. It's highly dependant on services (think banks, insurers) to form the backbone of the economy (that's why "Big Business" always has such a big say) and has a declining goods and manufacturing sector. This topic looks at the risks and benefits of leaving the EU and what it could mean for you, your family and this country.
This is over 500 hrs worth of research condensed into about 5 minutes worth of clear, concise, quality reading. Each question has been researched, scrutinised and then made available to you in one place, all so you can make a more informed decision, faster.
Have a glance over the tiles below and get an understanding of what is going on with the EU and UK today.
Use the 5 emojis to react to how you feel about the information you read.
We'll then use some clever computing to give you all the options on the table so you can decide what happens next.
You've now done all that you'd like to for the topic of Jobs, up next we'll be moving onto Defense and Security.
Remember you dont have to react to every card, feel free to pick and choose what topics and cards you look at.


WinSwitch 1.1 Released
-
Greg Hurrell
It's officially out.
Screenshots.
Download.
Reply
This topic is now closed.
It's officially out.
Screenshots.
Download.
This topic is now closed.


NIF Objects | Compound Types | Enum Types | Basic Types | File Versions
| Number | Name | Description |
|---|---|---|
| 0x00000001 | CPU Read | CPU Read |
| 0x00000002 | CPU Write Static | CPU Write Static |
| 0x00000004 | CPU Write Mutable | CPU Write Mutable |
| 0x00000008 | CPU Write Volatile | CPU Write Volatile |
| 0x00000010 | GPU Read | GPU Read |
| 0x00000020 | GPU Write | GPU Write |
| 0x00000040 | CPU Write Static Inititialized | CPU Write Static Inititialized |


-
SA1401,SA1306 disabled due to R# have the same check.
-
SA1120 disabled in StyleCop.settings to avoid too strict code cleanup.
-
SA1117 Analyzer disabled until FIX for resharper issue https://youtrack.jetbrains.com/issue/RSRP-451244
-
SA1028 Analyzer disabled until FIX for resharper issue https://youtrack.jetbrains.com/issue/RSRP-451244
-
SA1127 Analyzer disabled until FIX for resharper issue https://youtrack.jetbrains.com/issue/RSRP-433842
-
SA1002 Analyzer disabled until it will be fixed https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/1807


Tour of CartoDB APIs
Harvard WorkshopIntroduction to the CartoDB interface
This page can always be found at: http://bit.ly/cdb-harvard
- Tour of dashboard
- Common data
- Uploading data
- Tour of table and map view
- Publishing maps
- Public profile
Creating your accounts
Set you up with accounts here, https://cartodb.com/signup?plan=academy. This will give you a free upgrade to our student plan, since today, we are all students :)
Your first map in 30 seconds!
Today we are going to make a map of a very exciting topic! The other day I stumbled upon a really fun dataset of this guy,
Spencer the cat!
I found this data in Movebank. The first thing we are going to do is import this dataset into our accounts.
alternative:
Cut&paste the url:
https://dl.dropboxusercontent.com/u/1307405/CartoDB/spencer_the_cat.geojson
Now, let’s use Spencer to take a look at a few things.
- Table and map view
- Thematic maps!
- Custom styling data
Introduction to CartoCSS
#spencer_the_cat{
marker-fill: transparent;
marker-width:24;
marker-line-color: #FFFFFF;
marker-line-width: 2.0;
marker-line-opacity: 1.5;
marker-fill-opacity: 0.9;
marker-comp-op: src;
marker-type: ellipse;
marker-placement: point;
marker-allow-overlap: true;
marker-clip: false;
}
Introduction to SQL
SELECT cartodb_id, the_geom, the_geom_webmercator FROM spencer_the_cat
SELECT 'hi' as hello FROM spencer_the_cat
SELECT *, date_part('dow',study_local_timestamp) as d
FROM spencer_the_cat
dow here means ‘day of week’. 0-6 Sunday is 0
Let’s see what Spencer does on Mondays
SELECT *, date_part('dow',study_local_timestamp) as d
FROM spencer_the_cat
WHERE date_part('dow',study_local_timestamp) = 1
SELECT ST_MakeLine(the_geom_webmercator) as the_geom_webmercator
FROM spencer_the_cat
SELECT ST_MakeLine(the_geom_webmercator) as the_geom_webmercator FROM spencer_the_cat
WHERE date_part('dow',study_local_timestamp) = 1
Or! Let’s get all days and then use colors to distinguish them
SELECT
ST_MakeLine(the_geom_webmercator) as the_geom_webmercator,
date_part('dow',study_local_timestamp) as d
FROM spencer_the_cat
GROUP BY date_part('dow',study_local_timestamp)
Writing data
UPDATE spencer_the_cat SET hod = date_part('hour',study_local_timestamp)
Torque!
A quick look at Torque
Point torque
Categorical torque
Temporal bubbles
Cumulative bubbles
Method for creating the last two
Now our own Torque
Guessing Spencer’s house
First, let’s take a look at one of my favorite datasets from MassGIS, the Building Structures dataset. We can all download Cambridge and upload the file to our accounts.
Let’s rename the file, cambridge_buildings
We can do some different things with polygons, let’s take a look.
More dynamic SQL
CDB_LatLng
SELECT
*, ST_Distance(the_geom, CDB_LatLng(42.374444, -71.116944)) d
FROM cambridge_buildings
a map from dynamic sql
Order by distance
SELECT * FROM cambridge_buildings
ORDER BY the_geom <-> CDB_LatLng(42.374444, -71.116944) LIMIT 65
A quick side journey into the SQL API
If you are building an application, you can actually do the same request over your API and get CSV, JSON, or GeoJSON results. Lets’ look at the default JSON,
http://{username}.cartodb.com/api/v2/sql?q={SQL STATEMENT}
For example,
http://andrew.cartodb.com/api/v2/sql?q=SELECT * FROM cambridge_buildings ORDER BY the_geom <-> CDB_LatLng(42.374444, -71.116944) LIMIT 10
It’s awesome. You can do it from JavaScript and it doesn’t even need to be about maps. Take a look at this column search built off a CartoDB table with placenames.
On to Spencer
We’ll upload a second dataset now. This time, building footprints from MassGIS website. Let’s download Andover, https://gist.github.com/andrewxhill/7c1efd9bdead734010b0
. Now import it into your account.
Create a two layer visualization
Delete unneeded buildings
DELETE FROM structures_poly_9
WHERE NOT
(SELECT ST_Extent(the_geom) FROM spencer_the_cat) && the_geom
Count spencer visits
Add a new column called spencer_n
of type numeric
in our structures_poly_9
table.
Spatial analysis of Spencer :)
Let’s count how many times spencer was likely inside each house,
UPDATE structures_poly_9
SET spencer_n =
(SELECT count(*)
FROM spencer_the_cat
WHERE ST_Intersects(the_geom, structures_poly_9.the_geom))
Let’s look at house ‘touches’
SELECT
cartodb_id,
ST_MakeLine(
the_geom_webmercator,
ST_Centroid((
SELECT the_geom_webmercator FROM structures_poly_9
ORDER BY the_geom<->spencer_the_cat.the_geom
LIMIT 1))
) AS the_geom_webmercator,
hod
FROM
spencer_the_cat
CartoDB.js
Let’s all start with the same template, you can download an index.html file here,
The simplest CartoDB.js map - createVis
A map in one line of JavaScript
cartodb.createVis('map','http://team.cartodb.com/api/v2/viz/f6b0e824-a2fe-11e4-8f13-0e018d66dc29/viz.json');
Now, add your own vis.json URL.
Using an existing Leaflet map
We often want to make layers for maps in CartoDB and add them to our existing maps or projects. In this example, let’s create a webpage with a blank leaflet map. We’ll use one of the free to use CartoDB Basemaps for this.
First, make sure you delete the line we added above and create a leaflet map object,
var map = new L.Map('map', {
zoomControl: false,
center: [42.67, -71.23],
zoom: 15
});
Next, add a CartoDB Basemap
var layer = L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors, © CartoDB'
}).addTo(map);
Let’s save the file and refresh.
Using the createLayer method, we can now add our map of Spencer. Let’s start with just a simple point map of Spencer.
cartodb.createLayer(map, '{your-vis-json-url-here}')
.done(function(layer) {
// Do further things here
})
.addTo(map);
Add interactivity
You can add interactivity in the Editor very easily, but for maps you are creating on the fly in CartoDB.js, you can also add custom interactivity.
var lots = layer.getSubLayer(0);
lots.setInteractivity('cartodb_id, hod');
lots.setInteraction(true);
Add custom interaction
You can use cursor events on your polygons (e.g. featureClick, featureOver, featureOut) to create your own actions on your webpage. Let’s log the Elevation value for any lot we hover over
lots.on('featureOver', function(e, pos, pixel, data) {
console.log("Hour: " + data.hod);
});
Integrating interfaces
Using that button, Do Something, we can let the user interact with the data on the map in ways that no other service on the web can do it! Let’s start with the basics…
Create button to set filter
Here, let’s create a button so that when a user clicks it, we filter to just Spencer’s activities in the evening.
var spencer = layer.getSubLayer(0);
$('#btn li').click(function(){
var new_sql = "SELECT * FROM spencer_the_cat WHERE hod > 18";
spencer.setSQL(new_sql);
});
Change the button to modify the style
Just like changing the SQL on the fly, we can change the entire style of our map:
var spencer = layer.getSubLayer(0);
$('#btn li').click(function(){
var new_cartocss = "#spencer_the_cat{marker-fill-opacity: 0.8; marker-line-width: 0; marker-width: 10; marker-fill: #F2D2D3; marker-allow-overlap:true; [hod > 18]{marker-fill: #3232FF;}}";
spencer.setCartoCSS(new_cartocss);
});
Style and SQL at the same time
var spencer = layer.getSubLayer(0);
$('#btn li').click(function(){
var new_sql = "SELECT * FROM spencer_the_cat WHERE hod > 18";
var new_cartocss = "#spencer_the_cat{marker-fill-opacity: 0.8; marker-line-width: 0; marker-width: 10; marker-fill: #F2D2D3; marker-allow-overlap:true; [hod > 18]{marker-fill: #3232FF;}}";
spencer.set({sql: new_sql, cartocss: new_cartocss});
});
Add an Undo button
Of course, it would be handy if we let our users return to the default map after they click the button. Let’s make that happen.
var spencer = layer.getSubLayer(0);
var state = 0;
$('#btn li').click(function(){
if (state == 0) {
state = 1;
$("#first").text('undo');
var new_sql = "SELECT * FROM spencer_the_cat WHERE hod > 18";
var new_cartocss = "#spencer_the_cat{marker-fill-opacity: 0.8; marker-line-width: 0; marker-width: 10; marker-fill: #F2D2D3; marker-allow-overlap:true; [hod > 18]{marker-fill: #3232FF;}}";
spencer.set({sql: new_sql, cartocss: new_cartocss});
} else {
state = 0;
$("#first").text('Do Something');
var new_sql = "SELECT * FROM spencer_the_cat";
var new_cartocss = "#spencer_the_cat{marker-fill-opacity:0.8;marker-line-color:#FFF;marker-line-width:0;marker-line-opacity:1;marker-width:10;marker-fill:#C1373C;marker-allow-overlap:true;}";
spencer.set({sql: new_sql, cartocss: new_cartocss});
}
});


404
Page Not Found
The specified file was not found on this website. Please check the URL for mistakes and try again.


Advanced Search
Grade Level
Any
6th
7th
8th
9th
10th
11th
12th
Subject
Any
Applied Science
Physical Science
Life Science
Biology
Mathematics
Social Science
Includes
Worksheets
Labs
Exams
Keyword
Search


Dynamic and Static Languages both have there pros and cons my job today is to teach you what I have learned so far in the debate between Dynamic typed languages and Static typed languages.
Dynamic and Static Languages both have there pros and cons my job today is to teach you what I have learned so far in the debate between Dynamic typed languages and Static typed languages.
Static type-checking is the process of verifying the type safety of a program based on analysis of a program's text (source code). If a program passes a static type-checker, then the program is guaranteed to satisfy some set of type-safety properties for all possible inputs. (Wikipedia) This is beneficial because it is easier to detect programming mistakes, more opportunities for compiler optimizatons that can lead one to believe a well typed program cannot go wrong. Some examples of static languages include assembly languages, C, C++, Objective-C, and Java.
Benefits of static programming:
A language is dynamically typed if the type of a variable is interpreted at runtime. This allows programmers to work more quickly because the type does not have to be specified everytime. Also the code appears to be much "softer". A dynmaic programmer may find static languages to be "rigid". The downfall of a dynamic language is the fact that you cannot find errors as quickly as its competitor. I believe this is countered by creating assert statements, drivercode, and using test-driven development. Examples of Dynamic languages include Perl, Ruby, JavaScript and Python.
Benefits from dynmaic programming:
Hopefully you found this helpful when comparing static vs dynamically typed languages. It's hard to say if one is better than the other but I find that it's individual preference.


|
Panda3D
|
Manages a set of individual ParticleSystem objects, so that each individual one doesn't have to be updated and rendered every frame See Also : particleSystemManager.cxx. More...
Public Member Functions | |
| __init__ (const ParticleSystemManager) | |
| __init__ (int every_nth_frame) | |
| default constructor More... | |
| attachParticlesystem (ParticleSystem ps) | |
| clear () | |
| doParticles (float dt) | |
| does an update and render for each ps in the list. More... | |
| doParticles (float dt, ParticleSystem ps, bool do_render) | |
| does an update and an optional render for a specific ps. More... | |
| int | getFrameStepping () |
| output (Ostream out) | |
| Write a string representation of this instance to <out>. More... | |
| removeParticlesystem (ParticleSystem ps) | |
| removes a ps from the maintenance list More... | |
| setFrameStepping (int every_nth_frame) | |
| write (Ostream out, int indent) | |
| Write a string representation of this instance to <out>. More... | |
| writePsList (Ostream out, int indent) | |
| Write a string representation of this instance to <out>. More... | |
Manages a set of individual ParticleSystem objects, so that each individual one doesn't have to be updated and rendered every frame See Also : particleSystemManager.cxx.
| __init__ | ( | const | ParticleSystemManager | ) |
| __init__ | ( | int | every_nth_frame | ) |
default constructor
| attachParticlesystem | ( | ParticleSystem | ps | ) |
| clear | ( | ) |
| doParticles | ( | float | dt | ) |
does an update and render for each ps in the list.
this is probably the one you want to use. Rendering is the expensive operation, and particles REALLY should at least be updated every frame, so nth_frame stepping applies only to rendering.
| doParticles | ( | float | dt, |
| ParticleSystem | ps, | ||
| bool | do_render | ||
| ) |
does an update and an optional render for a specific ps.
Since rendering is the expensive operation, multiple updates could be applied before calling the final render.
| int getFrameStepping | ( | ) |
| output | ( | Ostream | out | ) |
Write a string representation of this instance to <out>.
| removeParticlesystem | ( | ParticleSystem | ps | ) |
removes a ps from the maintenance list
| setFrameStepping | ( | int | every_nth_frame | ) |
| write | ( | Ostream | out, |
| int | indent | ||
| ) |
Write a string representation of this instance to <out>.
| writePsList | ( | Ostream | out, |
| int | indent | ||
| ) |
Write a string representation of this instance to <out>.


Peace
of Mind.
You’re safe with us. The privacy and security of your financial information is our top priority.
moreFree.
Actually free
No more pricing grids. No more fine print. Sending and receiving cash is free without gimmicks.
moreSimple
payments.
The same debit card you use to buy coffee lets deposit money straight to your bank account.
moreportfolio.
We are small, but strong team.
No more pricing grids. No more fine print.Sending and receiving cash is free without gimmicks.
The same debit card you use to buy coffee lets deposit money straight to your bank account.
moreour team.
They are big but still friendly.
Joey
Web developer
Coffee lover. Always on bike. iPhone fan.
Matt
Web designer
MTB Biker. Photoshop Master. Loving Father.
Mike
Copywriter
Drummer. Soup lover. Beer Drinker. Cyclist.


s
- short and simple summarizingThe s
function is a simple function that helps you get intuitive results when summarizing data. It is made to be used in conjuction with summarize functions, for example min
, sum
and mean
. s
takes a vector and mutates it in the following ways:
It replaces all non-rational numbers from numeric vectors and replace them with NA
. Non-rational numbers are Inf
, -Inf
and NaN
.
It removes NA
from the vector by default
If the vector has length zero or only consists of NA
it returns a single NA
.
s(..., ignore_na = T)
where … is one or more vector(s). If missing values should not be omitted use ignore_na = F
.
Removing NA
:
#> [1] 1 2
Replacing non-rational numbers with NA
and then removes NA
:
#> [1] 1
Empty vectors return a single NA
:
#> [1] NA
In conjuction with a summary function:
#> [1] 3.5
All programming languages have their special cases when you get non-intuitive results that you did not expect. This is also true for R. The s-function provides intuitive outcomes of some of the most basic commands in R. In the next parts of the vignette some problems it solves are explained in greater detail.
When learning R users might be surprised when creating suprised when using simple summary function. A summary function is a function that takes a vector and returns a single one value. For example, min(x)
, sum(x)
and mean(x)
. A simple example:
#> [1] 15
In this example the output of sum() was, which is expected since all entries in x sums to 15. However, in more messy data, the output is oftentimes less intuitive. New users to R might be confused that the next example results in NA (a missing value):
#> [1] NA
Since the vector above have an a missing value R does not know how to find the mean of the vector. The missing value could be anything, and thus R thus returns the output NA
. However, since missing values are common when working with real data, it is also a common practise to ignore missing values. Usually the user tells R to ignore the missing value and return the mean of the vector that have values that could be averaged. The error in the previous example could be fixed by adding na.rm = TRUE
that drops all missing values before calculating the mean:
#> [1] 2.5
Generally, R is strict about missing values so that you do not miss them, which often is helpful rather than harsh! However, often the programmer want R to return a ‘real’ value from the data, if there is one, even if it ignores missing values.
The s
function helps you with this. Since it by default removes missing values you can simply enter:
#> [1] 2.5
Adding an argument to remove all missing is common practise when summarizing data. However, it is not uncommon that some vectors only have missing values. Imagine an example where Amanda, David and Viktor sold sodas by the beach for three days. If someone did not show up they get a missing value.
#> # A tibble: 9 x 3
#> day name sold_sodas
#> <dbl> <chr> <dbl>
#> 1 1 Amanda 3
#> 2 2 Amanda NA
#> 3 3 Amanda 8
#> 4 1 David NA
#> # … with 5 more rows
Now we want to see the maximum number of sodas each person sold on a single day. The above data frame if saved as df
.
#> # A tibble: 3 x 2
#> name n_sodas_best_day
#> * <chr> <dbl>
#> 1 Amanda 8
#> 2 David -Inf
#> 3 Viktor 4
Amanda sold the most sodas in a single day. However, David who was absent on all days, got the output -Inf
. This means that negative infinity was the number of sodas he sold during his most productive day. That is astonishing! One would perhaps think that the more intuitive output would be NA
.
The reason for result is that we told R to remove all missing values before calculating the maximal value. It is equivalent to:
#> [1] -Inf
We could try to remove the na.rm = TRUE
argument from max()
.
#> # A tibble: 3 x 2
#> name n_sodas_best_day
#> * <chr> <dbl>
#> 1 Amanda NA
#> 2 David NA
#> 3 Viktor 4
Suddenly R tells us that Viktor had the best day and Amanda, who was absent the second day, got NA because R doesn’t not know how to find the maximum value. However, David also got NA this time, which makes sense.
Sometimes, calculating simple descriptive statistics can be a cumbersome task. The s function is there to support you! Since it returns NA
if the vector is empty we get:
#> # A tibble: 3 x 2
#> name n_sodas_best_day
#> * <chr> <dbl>
#> 1 Amanda 8
#> 2 David NA
#> 3 Viktor 4
Another astonishing result one might encounter occurs when R tries to return a value when there is none. Take this extract df
from the starwars
dataset from the R package dplyr
.
#> # A tibble: 10 x 4
#> name homeworld species height
#> <chr> <chr> <chr> <int>
#> 1 Luke Skywalker Tatooine Human 172
#> 2 C-3PO Tatooine Droid 167
#> 3 R2-D2 Naboo Droid 96
#> 4 Darth Vader Tatooine Human 202
#> # … with 6 more rows
Say that we want to calculate find the height of the tallest human from each homeworld. For precautionary reasons, we drop all rows with missing values from the height column so that we do not get the same problem as before.
df %>%
filter(!is.na(height)) %>%
group_by(homeworld) %>%
summarize(tallest_human = max(height[species == "Human"]))
#> # A tibble: 49 x 2
#> homeworld tallest_human
#> * <chr> <dbl>
#> 1 Alderaan 191
#> 2 Aleen Minor -Inf
#> 3 Bespin 175
#> 4 Bestine IV 180
#> # … with 45 more rows
We got negative infinity -Inf
again. How could this be?
 R tries to calculate the maximum value of nothing. The s
function can help you out! Since it returns NA
if the vector is empty we get:
df %>%
filter(!is.na(height)) %>%
group_by(homeworld) %>%
summarize(tallest_human = max(s(height[species == "Human"])))
#> # A tibble: 49 x 2
#> homeworld tallest_human
#> * <chr> <int>
#> 1 Alderaan 191
#> 2 Aleen Minor NA
#> 3 Bespin 175
#> 4 Bestine IV 180
#> # … with 45 more rows
Now we get missing values for the homeworlds that does not have any humans. Makes sense.
Numerical vectors in R can include more than numbers and missing values NA
. They can also include infinite numbers Inf
and -Inf
as shown in the examples above. Furthermore, numerical vectors can include NaN
‘s which means ’not-a-number’. If the data frame you are using have NaN
or Inf
it may cause you problems when summarizing your data. Some examples:
#> [1] NaN
#> [1] Inf
#> [1] -Inf
Often when you summarize vectors that have NaN
or Inf
you want to treat them as a missing value. Maybe they have appeared as a mistake when you accidentally divided a value by zero since 1/0 = Inf
in R. The s
function solves this for you be replacing them with NA
.
#> [1] 1
#> [1] 3.5
#> [1] 7
s
and summary functionsIf things get too messy with an extra function you might prefer the wrapper functions of s
. All major summary functions have an s wrapped alternative in hablar
. These are accessed by adding an underscore to the name of the summary function, i.e. min_(x)
and is equal to min(s(x))
. Repeating the previous exercises using wrappers for s
would look like:
#> [1] 1
#> [1] 3.5
#> [1] 7
To summarize, s
can help you to get results when you summarize your data, if there is an sensible answer in the vector. If not, you will get NA
.


Mindfulness and self awareness are two similar but distinct capabilities. Mindfulness is observing one's internal state without judgement whereas self awareness is the ability to recognize your feelings, differentiate between them, know why you are feeling these feelings, and recognize the impact your feelings have on others around you. So self awareness is seeing the discovery of mindfulness.
One of the self awareness practices I tried was journaling. It was a new experience for me but was really fascinating to see what sort of thoughts would flow onto paper. Perhaps it's just that it identifies trains of thought and allows it to be explored more thouroughly then a fleeting synapse firing.


Home
Profile
Galleries
Settings
Search
Adv. Search
Search
Sort By
Filter By
On Air
Description
Song 1
Description
Song 2
Description
Song 3
Description
Song 4
Description
Song 5
Description
<
>
GoTo
Rate
Share
Fave
Vid 0
Lyrics:
Dog
horosho
Cat
odin
Post Comment
Dog
horosho
Cat
odin


A flyout-level notice points to a specific section or element of the page. We can also says this element hosts the flyout.
The DOM order of the notice and it's host is important! To avoid keyboard and screen reader accessibility issues, the flyout element's DOM position should be adjacent to it's host.
Flyout notices are absolutely positioned by default. The flyout will be positioned relatively to the nearest ancestor with position:relative.
The flyout pointer can be positioned using any one of the following elements: flyout-notice__pointer-top-left, flyout-notice__pointer-top-center, flyout-notice__pointer-top-right, flyout-notice__pointer-bottom-right, flyout-notice__pointer-bottom-center, flyout-notice__pointer-bottom-left, flyout-notice__pointer-left or flyout-notice__pointer-right.
We had trouble connecting to PayPal. Please make your payment later.
Congrats! You are currently the high bidder, but you are close to getting outbid.
We could not find any items that match your search. Try expanding your search to find more items.
We had trouble connecting to PayPal. Please make your payment later.
Congrats! You are currently the high bidder, but you are close to getting outbid.
We could not find any items that match your search. Try expanding your search to find more items.
A flyout-notice can be used as the overlay of a tooltip pattern.
Apply modifier class tooltip--expanded to the widget to display the overlay.
A flyout-notice can be used as the overlay of a bubble help pattern.
Apply an aria-expanded state of true to the help button to display the overlay.


Win the race against time.
Hourglass gives you a slight vibration to let you know that you should leave in a few minutes to get to your next event. Using your calendar and GPS coordinates, Hourglass knows how long it will take for you to walk, take public transit, or drive to where you need to go.
Many times you don't need directions for where you're going. But, when you do, swipe up for a list of directions or down for a map.
Not sure when your friends are going to meet you at the movie theatre? Simply swipe left to see when they'll be arriving regardless of whether they have an iOS or Android device. Tap the "On My Way!" button to let them know you've headed out.
We know it's not easy to find Conference Room C or that hip yoga store in the mall. That's why Hourglass users are helping map the world one step at a time. When you find yourself shopping for shoes or walking to your next meeting, pat yourself on the back! You're helping create directories for other Hourglass users to find exactly where they're looking to go.
We're excited about what we do, and we want to hear from you if you are too.
Public release for iPhone, Apple Watch, Android Phone and Watch will be ready soon. We'll let you know when it's done.


Talking Shop With Jyothi Rao, The President of INTERMIX
by Felicity CarterJyothi Rao, president of INTERMIX is here to help you build a wardrobe, and a very stylish, informed and elevated one at that.
A collection of specialty boutiques, INTERMIX opened shop in 1993 and can be found across America. It’s a brand known for bringing together sought-after, established labels (McQueen, Balmain, Dolce & Gabbana) with new designers on the scene (such as the favorite, Alighieri), making for a fresh and compelling edit.
As for Rao, she joined INTERMIX in 2014 having built up a wealth of knowledge in the industry. Her work has taken her to Africa, India, and Europe and she’s served in senior roles at Gilt.com, Calvin Klein and before that she spent 16 years at Gap Inc., where she held several leadership positions and was responsible for successfully growing domestic and international businesses for both the Gap and Banana Republic brands. Impressive.
Combining all this consumer and retail know-how it, has made her the perfect woman to craft the vision for INTERMIX, developing the overall business strategy tapping into contemporary culture, because as Rao says herself, “fashion is a reflection of culture.”
FC: What was your first fashionable memory?
Jyothi Rao: I remember spending my weekends as a teenager in London in the ‘80s visiting all the boutiques on South Molton street, New Bond Street, Covent Gardens and Knightsbridge, Harrods, Harvey Nicks, Liberty and so many more. I couldn’t afford to buy anything from most of these stores but I loved to look at the clothes. I would pour through fashion magazines, discovering who Karl Lagerfeld and Jean Paul Gaultier were and I was very influenced by the music scene in London; a mashup of punk and ‘80s glamour. It was an exciting time for fashion.
FC: How, when, why did you get into the fashion industry?
JR: I was 21 when I graduated from college and was open to a myriad of career options from investment banking to marketing roles. I interviewed with several companies who came to my college to recruit graduates and I landed on a role in merchandising because it combined my love for fashion and my love for numbers.
FC: How would you sum up the aesthetic of Intermix?
JR: The INTERMIX point of view is feminine, elevated, confident and effortlessly chic. We strive to offer a selection of versatile styles that help women stay current while getting a lot of mileage from their wardrobe. We don't believe in disposable fashion or the endless aisle. We want to help women build a great wardrobe.
FC: What do qualities do you look for when it comes to buying a brand for the store?
At INTERMIX, we know our customers very well. Our talented buying team makes sure that we select brands that are relevant to our customers and that they fit within the INTERMIX aesthetic. Supporting emerging designers is an important part of our business model. A few of the up-and-coming brands we’re excited about are ROTATE BIRGER CHRISTENSEN, Acler, Paris Texas, Aje and Sabina Musayev.
FC: What is luxury to you?
JR: For us, luxury is about personalization and knowing our customer on an intimate level so that we can customize the product edit and the shopping experience for her. One way we do this is by offering complimentary styling services in our boutiques and online.
FC: Who is your customer?
JR: The INTERMIX woman is informed, confident and fun. She sees fashion as a form of self-expression and doesn’t take it too seriously. I am endlessly inspired by the wonderful community of women we serve because they are interesting, generous and supportive of one another.
FC: How is the retail landscape changing for you, and how are you adapting to this?
JR: Customers are at the center of everything in retail today. They are setting the standards of what they expect from the brands they purchase, they are the content creators and the influencers. At INTERMIX, we are very proud of having a diverse team from the leadership level to the most junior level of the brand, we put our customers at the center of every decision we make, and we continue to look for ways to bring our community further into the brand.
FC: What's the best piece of advice that you've been given when it comes to handling the industry?
JR: Fashion is a reflection of culture. You have to stay in tune with where the customer is going and constantly evolve while staying true to your brand ethos.
Shop via the INTERMIX website.


About
Our Team
Enter a city, click the button, and get a playlist to match the current weather!
Location
Get my playlist


{% extends 'core/base.html' %} {% load static %} {% block main %} Password Reset Forget your password? Enter your email below, and we'll email instructions for setting a new one. {% csrf_token %} {{ form.email.errors }} Email address:{{ form.email }} {% endblock main %} {% block aside %} {% endblock aside %}
Forget your password? Enter your email below, and we'll email instructions for setting a new one.
Email address:{{ form.email }}


Understanding Advanced Search Query Language
This advanced topic describes in detail the search grammar used for @CollaborationProductShortName@Search feature.
Search Language Structure
Simple searches can be done by just entering a word into the search field. Bare words (words without a search operator) are interpreted to search in the 'content:' operator -- this matches any text in the message.
More advanced searches can be done by specifying a search operator. A search operator is a special keyword followed by a colon, followed by some other parameter specific to that operator. For example:
in: inbox the operator is "in" and the parameter is " inbox" - this returns messages which are in the folder named " inbox"
from:someone the operator is "from" and the parameter is "someone" - this returns messages which have the word "someone" in their email address
You can prefix any keyword with the word "not" to specify items that do not have that criterion, for example not in: inbox. Search is not case sensitive, meaning that "in:inbox" is the same as "in:Inbox". The minus sign (-) is a synonym for NOT So: not in:inbox is the same as -in:inbox
In most cases, it is not necessary to include punctuation-type characters in your search string, as these are ignored by the search code. There are certain times where this is not true (for example, searching for a time '9:30' in a message) and in those cases you should enclose the search parameter in quotation marks. For example: subject:"9:30" will return messages which have the string 9:30 in the subject.
Allowable characters in the search parameter:
The following characters cannot be anywhere in a search parameter unless it is enclosed by quotes: ~ ' ! # $ % ^ & * ( ) _ ? / { }[ ] ; :
The following characters are allowed in a search parameter as long as they are not the first character: - + < >
Note: Special characters, such as trademark symbols that are part of a word, are removed when the word is indexed for search. They are ignored in a search. For example, a search for Zmail™ finds all references to Zmail, including those without the trademark symbol.
Multiple Search Terms
If multiple search terms are entered (separated by spaces), they are " ANDed" together by default. in:inbox tim means "return me messages which are in the inbox AND which have the word tim in them". For searches using multiple criteria, you can either find items that match one of the specified criteria or all of them. You can perform both types of searches from the advanced search page.
For all search panes other than the Basic search, the rules are:
Searching for messages that match any of the specified criteria is called an 'OR' search, because if the message contains either X or Y, then it is considered a match.
Searching for messages that contain both X and Y is called an 'AND' search, because the message must meet all the specified criteria in order to be considered a match.
Only "OR" appears in a query. If you selected as an option to show the search query in the Search bar as you make selections in the Advanced search, the Search text box updates to show the resulting query. With the 'AND' type of search, the word 'AND' does not appear.
Tip: Using parenthesis with AND and OR. Words within parentheses are considered as a unit. For example from: (john thomas) is equivalent to from:john AND from: thomas. If you use OR in the parenthesis, from:(john or smith), the search is for results from:john OR from: smith.
Using * as a Wildcard in Search
The asterisk (*) can be used as a wildcard at the end of a word in a search to find content that contains words that have similar spellings.
Use the asterisk * as a wildcard. For example, the search string do* returns items such as do, dog, door, etc.
Note: A double-byte asterisk sign in a search query is not considered a wildcard character and is ignored when the search runs.