Action Mailer Basics¶ ↑
This guide provides you with all you need to get started in sending and receiving emails from and to your application, and many internals of Action Mailer. It also covers how to test your mailers.
After reading this guide, you will know:
-
How to send and receive email within a Rails application.
-
How to generate and edit an Action Mailer class and mailer view.
-
How to configure Action Mailer for your environment.
-
How to test your Action Mailer classes.
Introduction¶ ↑
Action Mailer allows you to send emails from your application using mailer
classes and views. Mailers work very similarly to controllers. They inherit
from ActionMailer::Base
and live in app/mailers
,
and they have associated views that appear in app/views
.
Sending Emails¶ ↑
This section will provide a step-by-step guide to creating a mailer and its views.
Walkthrough to Generating a Mailer¶ ↑
Create the Mailer¶ ↑
$ bin/rails generate mailer UserMailer create app/mailers/user_mailer.rb create app/mailers/application_mailer.rb invoke erb create app/views/user_mailer create app/views/layouts/mailer.text.erb create app/views/layouts/mailer.html.erb invoke test_unit create test/mailers/user_mailer_test.rb create test/mailers/previews/user_mailer_preview.rb
# app/mailers/application_mailer.rb class ApplicationMailer < ActionMailer::Base default from<EMAIL_ADDRESS>layout 'mailer' end # app/mailers/user_mailer.rb class UserMailer < ApplicationMailer end
As you can see, you can generate mailers just like you use other generators with Rails. Mailers are conceptually similar to controllers, and so we get a mailer, a directory for views, and a test.
If you didn't want to use a generator, you could create your own file
inside of app/mailers, just make sure that it inherits from
ActionMailer::Base
:
class MyMailer < ActionMailer::Base end
Edit the Mailer¶ ↑
Mailers are very similar to Rails controllers. They also have methods called “actions” and use views to structure the content. Where a controller generates content like HTML to send back to the client, a Mailer creates a message to be delivered via email.
app/mailers/user_mailer.rb
contains an empty mailer:
class UserMailer < ApplicationMailer end
Let's add a method called welcome_email
, that will send an
email to the user's registered email address:
class UserMailer < ApplicationMailer default from<EMAIL_ADDRESS>def welcome_email(user) @user = user @url = 'http://example.com/login' mail(to: @user.email, subject: 'Welcome to My Awesome Site') end end
Here is a quick explanation of the items presented in the preceding method. For a full list of all available options, please have a look further down at the Complete List of Action Mailer user-settable attributes section.
-
default Hash
- This is a hash of default values for any email you send from this mailer. In this case we are setting the:from
header to a value for all messages in this class. This can be overridden on a per-email basis. -
mail
- The actual email message, we are passing the:to
and:subject
headers in.
Just like controllers, any instance variables we define in the method become available for use in the views.
Create a Mailer View¶ ↑
Create a file called welcome_email.html.erb
in
app/views/user_mailer/
. This will be the template used for the
email, formatted in HTML:
<!DOCTYPE html>   <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
Welcome to example.com, <%= @user.name %>

 You have successfully signed up to example.com, your username is: <%= @user.login %>.

 To login to the site, just follow this link: <%= @url %>.

Thanks for joining and have a great day!

Let's also make a text part for this email. Not all clients prefer HTML
emails, and so sending both is best practice. To do this, create a file
called welcome_email.text.erb
in
app/views/user_mailer/
:
Welcome to example.com, <%= @user.name %> =============================================== You have successfully signed up to example.com, your username is: <%= @user.login %>. To login to the site, just follow this link: <%= @url %>. Thanks for joining and have a great day!
When you call the mail
method now, Action Mailer will detect
the two templates (text and HTML) and automatically generate a
multipart/alternative
email.
Calling the Mailer¶ ↑
Mailers are really just another way to render a view. Instead of rendering a view and sending out the HTTP protocol, they are just sending it out through the email protocols instead. Due to this, it makes sense to just have your controller tell the Mailer to send an email when a user is successfully created.
Setting this up is painfully simple.
First, let's create a simple User
scaffold:
$ bin/rails generate scaffold user name email login $ bin/rake db:migrate
Now that we have a user model to play with, we will just edit the
app/controllers/users_controller.rb
make it instruct the
UserMailer
to deliver an email to the newly created user by
editing the create action and inserting a call to
UserMailer.welcome_email
right after the user is successfully
saved.
Action Mailer is nicely integrated with Active Job so you can send emails outside of the request-response cycle, so the user doesn't have to wait on it:
class UsersController < ApplicationController # POST /users # POST /users.json def create @user = User.new(params[:user]) respond_to do |format| if @user.save # Tell the UserMailer to send a welcome email after save UserMailer.welcome_email(@user).deliver_later format.html { redirect_to(@user, notice: 'User was successfully created.') } format.json { render json: @user, status: :created, location: @user } else format.html { render action: 'new' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end end
NOTE: Active Job's default behavior is to execute jobs
':inline'. So, you can use deliver_later
now to send
emails, and when you later decide to start sending them from a background
job, you'll only need to set up Active Job to use a queueing backend
(Sidekiq, Resque, etc).
If you want to send emails right away (from a cronjob for example) just
call deliver_now
:
class SendWeeklySummary def run User.find_each do |user| UserMailer.weekly_summary(user).deliver_now end end end
The method welcome_email
returns a
ActionMailer::MessageDelivery
object which can then just be
told deliver_now
or deliver_later
to send itself
out. The ActionMailer::MessageDelivery
object is just a
wrapper around a Mail::Message
. If you want to inspect, alter
or do anything else with the Mail::Message
object you can
access it with the message
method on the
ActionMailer::MessageDelivery
object.
Auto encoding header values¶ ↑
Action Mailer handles the auto encoding of multibyte characters inside of headers and bodies.
For more complex examples such as defining alternate character sets or self-encoding text first, please refer to the Mail library.
Complete List of Action Mailer Methods¶ ↑
There are just three methods that you need to send pretty much any email message:
-
headers
- Specifies any header on the email you want. You can pass a hash of header field names and value pairs, or you can callheaders[:field_name] = 'value'
. -
attachments
- Allows you to add attachments to your email. For example,attachments['file-name.jpg'] = File.read('file-name.jpg')
. -
mail
- Sends the actual email itself. You can pass in headers as a hash to the mail method as a parameter, mail will then create an email, either plain text, or multipart, depending on what email templates you have defined.
Adding Attachments¶ ↑
Action Mailer makes it very easy to add attachments.
-
Pass the file name and content and Action Mailer and the Mail gem will automatically guess the mime_type, set the encoding and create the attachment.
attachments['filename.jpg'] = File.read('/path/to/filename.jpg')
When the mail
method will be triggered, it will send a
multipart email with an attachment, properly nested with the top level
being multipart/mixed
and the first part being a
multipart/alternative
containing the plain text and HTML
email messages.
NOTE: Mail will automatically Base64 encode an attachment. If you want
something different, encode your content and pass in the encoded content
and encoding in a Hash
to the attachments
method.
-
Pass the file name and specify headers and content and Action Mailer and Mail will use the settings you pass in.
encoded_content = SpecialEncode(File.read('/path/to/filename.jpg')) attachments['filename.jpg'] = { mime_type: 'application/x-gzip', encoding: 'SpecialEncoding', content: encoded_content }
NOTE: If you specify an encoding, Mail will assume that your content is already encoded and not try to Base64 encode it.
Making Inline Attachments¶ ↑
Action Mailer 3.0 makes inline attachments, which involved a lot of hacking in pre 3.0 versions, much simpler and trivial as they should be.
-
First, to tell Mail to turn an attachment into an inline attachment, you just call
#inline
on the attachments method within your Mailer:def welcome attachments.inline['image.jpg'] = File.read('/path/to/image.jpg') end
-
Then in your view, you can just reference
attachments
as a hash and specify which attachment you want to show, callingurl
on it and then passing the result into theimage_tag
method:
Hello there, this is our image
 <%= image_tag attachments['image.jpg'].url %>
-
As this is a standard call to
image_tag
you can pass in an options hash after the attachment URL as you could for any other image:
Hello there, this is our image
 <%= image_tag attachments['image.jpg'].url, alt: 'My Photo', class: 'photos' %>
Sending Email To Multiple Recipients¶ ↑
It is possible to send email to one or more recipients in one email (e.g.,
informing all admins of a new signup) by setting the list of emails to the
:to
key. The list of emails can be an array of email addresses
or a single string with the addresses separated by commas.
class AdminMailer < ActionMailer::Base default to: Proc.new { Admin.pluck(:email) }, from<EMAIL_ADDRESS>def new_registration(user) @user = user mail(subject: "New User Signup<EMAIL_ADDRESS>end end
The same format can be used to set carbon copy (Cc:) and blind carbon copy
(Bcc:) recipients, by using the :cc
and :bcc
keys
respectively.
Sending Email With Name¶ ↑
Sometimes you wish to show the name of the person instead of just their
email address when they receive the email. The trick to doing that is to
format the email address in the format "Full Name
<email>"
.
def welcome_email(user) @user = user email_with_name =<EMAIL_ADDRESS><EMAIL_ADDRESS>mail(to: email_with_name, subject: 'Welcome to My Awesome Site') end
Mailer Views¶ ↑
Mailer views are located in the app/views/name_of_mailer_class
directory. The specific mailer view is known to the class because its name
is the same as the mailer method. In our example from above, our mailer
view for the welcome_email
method will be in
app/views/user_mailer/welcome_email.html.erb
for the HTML
version and welcome_email.text.erb
for the plain text version.
To change the default mailer view for your action you do something like:
class UserMailer < ApplicationMailer default from<EMAIL_ADDRESS>def welcome_email(user) @user = user @url = 'http://example.com/login' mail(to: @user.email, subject: 'Welcome to My Awesome Site', template_path: 'notifications', template_name: 'another') end end
In this case it will look for templates at
app/views/notifications
with name another
. You
can also specify an array of paths for template_path
, and they
will be searched in order.
If you want more flexibility you can also pass a block and render specific templates or even render inline or text without using a template file:
class UserMailer < ApplicationMailer default from<EMAIL_ADDRESS>def welcome_email(user) @user = user @url = 'http://example.com/login' mail(to: @user.email, subject: 'Welcome to My Awesome Site') do |format| format.html { render 'another_template' } format.text { render text: 'Render text' } end end end
This will render the template 'another_template.html.erb' for the
HTML part and use the rendered text for the text part. The render command
is the same one used inside of Action Controller, so you can use all the
same options, such as :text
, :inline
etc.
Action Mailer Layouts¶ ↑
Just like controller views, you can also have mailer layouts. The layout
name needs to be the same as your mailer, such as
user_mailer.html.erb
and user_mailer.text.erb
to
be automatically recognized by your mailer as a layout.
In order to use a different file, call layout
in your mailer:
class UserMailer < ApplicationMailer layout 'awesome' # use awesome.(html|text).erb as the layout end
Just like with controller views, use yield
to render the view
inside the layout.
You can also pass in a layout: 'layout_name'
option to
the render call inside the format block to specify different layouts for
different formats:
class UserMailer < ApplicationMailer def welcome_email(user) mail(to: user.email) do |format| format.html { render layout: 'my_layout' } format.text end end end
Will render the HTML part using the my_layout.html.erb
file
and the text part with the usual user_mailer.text.erb
file if
it exists.
Generating URLs in Action Mailer Views¶ ↑
Unlike controllers, the mailer instance doesn't have any context about
the incoming request so you'll need to provide the :host
parameter yourself.
As the :host
usually is consistent across the application you
can configure it globally in config/application.rb
:
config.action_mailer.default_url_options = { host: 'example.com' }
Because of this behavior you cannot use any of the *_path
helpers inside of an email. Instead you will need to use the associated
*_url
helper. For example instead of using
<%= link_to 'welcome', welcome_path %>
You will need to use:
<%= link_to 'welcome', welcome_url %>
By using the full URL, your links will now work in your emails.
generating URLs with url_for
¶ ↑
You need to pass the only_path: false
option when using
url_for
. This will ensure that absolute URLs are generated
because the url_for
view helper will, by default, generate
relative URLs when a :host
option isn't explicitly
provided.
<%= url_for(controller: 'welcome', action: 'greeting', only_path: false) %>
If you did not configure the :host
option globally make sure
to pass it to url_for
.
<%= url_for(host: 'example.com', controller: 'welcome', action: 'greeting') %>
NOTE: When you explicitly pass the :host
Rails will always
generate absolute URLs, so there is no need to pass only_path:
false
.
generating URLs with named routes¶ ↑
Email clients have no web context and so paths have no base URL to form complete web addresses. Thus, you should always use the “_url” variant of named route helpers.
If you did not configure the :host
option globally make sure
to pass it to the url helper.
<%= user_url(@user, host: 'example.com') %>
NOTE: non-GET
links require jQuery UJS and won't
work in mailer templates. They will result in normal GET
requests.
Sending Multipart Emails¶ ↑
Action Mailer will automatically send multipart emails if you have
different templates for the same action. So, for our UserMailer example, if
you have welcome_email.text.erb
and
welcome_email.html.erb
in app/views/user_mailer
,
Action Mailer will automatically send a multipart email with the HTML and
text versions setup as different parts.
The order of the parts getting inserted is determined by the
:parts_order
inside of the
ActionMailer::Base.default
method.
Sending Emails with Dynamic Delivery Options¶ ↑
If you wish to override the default delivery options (e.g. SMTP
credentials) while delivering emails, you can do this using
delivery_method_options
in the mailer action.
class UserMailer < ApplicationMailer def welcome_email(user, company) @user = user @url = user_url(@user) delivery_options = { user_name: company.smtp_user, password: company.smtp_password, address: company.smtp_host } mail(to: @user.email, subject: "Please see the Terms and Conditions attached", delivery_method_options: delivery_options) end end
Sending Emails without Template Rendering¶ ↑
There may be cases in which you want to skip the template rendering step
and supply the email body as a string. You can achieve this using the
:body
option. In such cases don't forget to add the
:content_type
option. Rails will default to
text/plain
otherwise.
class UserMailer < ApplicationMailer def welcome_email(user, email_body) mail(to: user.email, body: email_body, content_type: "text/html", subject: "Already rendered!") end end
Receiving Emails¶ ↑
Receiving and parsing emails with Action Mailer can be a rather complex endeavor. Before your email reaches your Rails app, you would have had to configure your system to somehow forward emails to your app, which needs to be listening for that. So, to receive emails in your Rails app you'll need to:
-
Implement a
receive
method in your mailer. -
Configure your email server to forward emails from the address(es) you would like your app to receive to
/path/to/app/bin/rails runner 'UserMailer.receive(STDIN.read)'
.
Once a method called receive
is defined in any mailer, Action
Mailer will parse the raw incoming email into an email object, decode it,
instantiate a new mailer, and pass the email object to the mailer
receive
instance method. Here's an example:
class UserMailer < ApplicationMailer def receive(email) page = Page.find_by(address: email.to.first) page.emails.create( subject: email.subject, body: email.body ) if email.has_attachments? email.attachments.each do |attachment| page.attachments.create({ file: attachment, description: email.subject }) end end end end
Action Mailer Callbacks¶ ↑
Action Mailer allows for you to specify a before_action
,
after_action
and around_action
.
-
Filters can be specified with a block or a symbol to a method in the mailer class similar to controllers.
-
You could use a
before_action
to populate the mail object with defaults, delivery_method_options or insert default headers and attachments. -
You could use an
after_action
to do similar setup as abefore_action
but using instance variables set in your mailer action.
class UserMailer < ApplicationMailer after_action :set_delivery_options, :prevent_delivery_to_guests, :set_business_headers def feedback_message(business, user) @business = business @user = user mail end def campaign_message(business, user) @business = business @user = user end private def set_delivery_options # You have access to the mail instance, # @business and @user instance variables here if @business && @business.has_smtp_settings<EMAIL_ADDRESS>end end def prevent_delivery_to_guests if @user && @user.guest? mail.perform_deliveries = false end end def set_business_headers if @business headers["X-SMTPAPI-CATEGORY"] = @business.code end end end
-
Mailer Filters abort further processing if body is set to a non-nil value.
Using Action Mailer Helpers¶ ↑
Action Mailer now just inherits from AbstractController
, so
you have access to the same generic helpers as you do in Action Controller.
Action Mailer Configuration¶ ↑
The following configuration options are best made in one of the environment files (environment.rb, production.rb, etc…)
| Configuration | Description | |—————|————-|
|logger
|Generates information on the mailing run if available.
Can be set to nil
for no logging. Compatible with both
Ruby's own Logger
and Log4r
loggers.|
|smtp_settings
|Allows detailed configuration for
:smtp
delivery
method:

:address
- Allows you to use a
remote mail server. Just change it from its default
"localhost"
setting.

:port
- On the off chance that
your mail server doesn't run on port 25, you can change
it.

:domain
- If you need to specify a
HELO domain, you can do it
here.

:user_name
- If your mail server
requires authentication, set the username in this
setting.

:password
- If your mail server
requires authentication, set the password in this
setting.

:authentication
- If your mail
server requires authentication, you need to specify the authentication type
here. This is a symbol and one of :plain
(will send the
password in the clear), :login
(will send password Base64
encoded) or :cram_md5
(combines a Challenge/Response mechanism
to exchange information and a cryptographic Message Digest 5 algorithm to
hash important
information)

:enable_starttls_auto
-
Detects if STARTTLS is enabled in your SMTP server and starts to use it.
Defaults to
true
.

:openssl_verify_mode
-
When using TLS, you can set how OpenSSL checks the certificate. This is
really useful if you need to validate a self-signed and/or a wildcard
certificate. You can use the name of an OpenSSL verify constant
('none', 'peer', 'client_once',
'fail_if_no_peer_cert') or directly the constant
(OpenSSL::SSL::VERIFY_NONE
,
OpenSSL::SSL::VERIFY_PEER
, …).

|
|sendmail_settings
|Allows you to override options for the
:sendmail
delivery
method.

:location
- The location of the
sendmail executable. Defaults to
/usr/sbin/sendmail
.

:arguments
- The command line arguments to be passed to sendmail. Defaults to -i
-t
.

|
|raise_delivery_errors
|Whether or not errors should be raised
if the email fails to be delivered. This only works if the external email
server is configured for immediate delivery.|
|delivery_method
|Defines a delivery method. Possible values
are:

:smtp
(default), can be configured by
using
config.action_mailer.smtp_settings
.

:sendmail
,
can be configured by using
config.action_mailer.sendmail_settings
.

:file
:
save emails to files; can be configured by using
config.action_mailer.file_settings
.

:test
:
save emails to ActionMailer::Base.deliveries
array.

See API
docs for more info.| |perform_deliveries
|Determines
whether deliveries are actually carried out when the deliver
method is invoked on the Mail message. By default they are, but this can be
turned off to help functional testing.| |deliveries
|Keeps an
array of all the emails sent out through the Action Mailer with
delivery_method :test. Most useful for unit and functional testing.|
|default_options
|Allows you to set default values for the
mail
method options (:from
,
:reply_to
, etc.).|
For a complete writeup of possible configurations see the Configuring Action Mailer in our Configuring Rails Applications guide.
Example Action Mailer Configuration¶ ↑
An example would be adding the following to your appropriate
config/environments/$RAILS_ENV.rb
file:
config.action_mailer.delivery_method = :sendmail # Defaults to: # config.action_mailer.sendmail_settings = { # location: '/usr/sbin/sendmail', # arguments: '-i -t' # } config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.action_mailer.default_options = {from<EMAIL_ADDRESS>Action Mailer Configuration for Gmail¶ ↑
As Action Mailer now uses the Mail
gem, this becomes as simple as adding to your
config/environments/$RAILS_ENV.rb
file:
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'example.com', user_name: '<username>', password: '<password>', authentication: 'plain', enable_starttls_auto: true }
Mailer Testing¶ ↑
You can find detailed instructions on how to test your mailers in the testing guide.
Intercepting Emails¶ ↑
There are situations where you need to edit an email before it's delivered. Fortunately Action Mailer provides hooks to intercept every email. You can register an interceptor to make modifications to mail messages right before they are handed to the delivery agents.
class SandboxEmailInterceptor def self.delivering_email(message) message.to =<EMAIL_ADDRESS>end end
Before the interceptor can do its job you need to register it with the
Action Mailer framework. You can do this in an initializer file
config/initializers/sandbox_email_interceptor.rb
if Rails.env.staging? ActionMailer::Base.register_interceptor(SandboxEmailInterceptor) end
NOTE: The example above uses a custom environment called “staging” for a production like server but for testing purposes. You can read Creating Rails environments for more information about custom Rails environments.


This is my paragraph. It is a lovely little paragraph.

If you want to take off your space suit click here.
If you want to keep it on click here.


Gender Distribution in Public Art
The graphic below shows the distribution of public art in Denmark, as bought by Statens Kunstfond. The teal area is male artists, the redorange area is female artists. The x-axis shows the creation year of the piece, with some uncertainty. The dark curve shows the difference between male and female artists, meaning a curvature around zero would mean a "fair" distribution. Each of the vertical, white lines show when a new committee have started their period.


Created by Tyson Clugg / @tysonclugg github.com/commoncode/django-ddp
I like Django, but it isn't realtime.
Meteor is realtime, but it's schemaless — ugh!
You missed/forgot my last Django DDP talk at MelbMeteor?
Oh well... 😉
No schema means no consistency, resulting in bugs.
No referential integreity results in more bugs.
No transactions across collections — even more bugs!
PostgreSQL provides schemaless anyway (hstore, JSON).
Is Postgres NoSQL Better Than MongoDB?

Meteor first...
...now Django DDP
(Applause!)
github.com/commoncode/django-ddp


For information and updates on the open challenge as well as discussion among participants, there is a mailing list.
If you have any questions or comments, please contact Christina Unger: cunger[at]cit-ec.uni-bielefeld.de
(The image above is used by courtesy of Emoreth Rasajev.)


Modeling the role of oscillations in learning
Progress report
Unexpected bad written code on ModelDB
How we solved it
Rewritten the whole code, using the information (model description and parameters) found on the paper.
Input activations' matrix
Model setup: before learning
The parameters we used to obtain these results differ from the paper
Slow simulations (maybe one of the reason the original code is so complicated)
The project is behind schedule (rewritting the code took too much time)
Parameter sweep on frequencies
What is the best frequency to learn?
Learn more than one pattern
Is it possible? What architectural changes have to take place in order for it to be possible?
More realistic model of CA1
Does this behavior remains present? The optimum frequency is at the theta range?


Optimus Prime
Enter your training configurations to estimate train time and cost
Model Training Configurations
Number of trainable parameters:
Distributed
Number of dataloders
Number of GPUs
Batch size
GPU
P40
P100
V100
---------------
OUTPUT
---------------
{{ text1 }}
{{ text2 }}


Hover over a circle on the map to identify a metropolitan area by name.
Click on the circle to show the area's 2011-2017 health indicators. On each graph, you can click on a
data point to make a comparison by metro area appear on the map. You can also click on "compare trends"
to see the trend type for each metro area.
Health Indicators by Metro Area
Show:
Select a circle on the map to show data for a metropolitan area.
Select a circle on the map to show data for a metropolitan area.
Select a circle on the map to show data for a metropolitan area.
Select a circle on the map to show data for a metropolitan area.
Select a circle on the map to show data for a metropolitan area.
Last updated 06-20-2019 by Andrew Guenthner. Released under the
MIT Open Source License, with some elements governed by specific licenses. Please consult the project documentation
on Github for details.


Stops Distance Alarm Number of stops before destination to alert: Alarm Distance from destination to alert: Customize Alarm Test Alarm Save


{% extends "layout.html" %} {% block bar_heading %} Get an annual MOT reminder {% endblock %} {% block content %} {% include "includes/phase_banner_beta.html" %} One more step We sent you a text message with a 6-digit code. Enter the code below to activate your reminder. Code from text message Text didn’t arrive? We sent you a text message to {{ data['phone'] }}. It can take a couple of minutes for the text to arrive. Resend the text {% endblock %}
We sent you a text message with a 6-digit code. Enter the code below to activate your reminder.


Decorator that marks a class as an Angular component and provides configuration metadata that determines how the component should be processed, instantiated, and used at runtime.
Components are the most basic UI building block of an Angular app. An Angular app contains a tree of Angular components.
Angular components are a subset of directives, always associated with a template. Unlike other directives, only one component can be instantiated for a given element in a template.
A component must belong to an NgModule in order for it to be available
to another component or application. To make it a member of an NgModule,
list it in the declarations
field of the NgModule
metadata.
Note that, in addition to these options for configuring a directive, you can control a component's runtime behavior by implementing life-cycle hooks. For more information, see the Lifecycle Hooks guide.
Usage Notes
Setting component inputs
The following example creates a component with two data-bound properties,
specified by the inputs
value.

Setting component outputs
The following example shows two event emitters that emit on an interval. One emits an output every second, while the other emits every five seconds.
Injecting a class with a view provider
The following simple example injects a class into a component using the view provider specified in component metadata:
class Greeter {
greet(name:string) {
return 'Hello ' + name + '!';
}
}
@Directive({
selector: 'needs-greeter'
})
class NeedsGreeter {
greeter:Greeter;
constructor(greeter:Greeter) {
this.greeter = greeter;
}
}
@Component({
selector: 'greet',
viewProviders: [
Greeter
],
template: `<needs-greeter></needs-greeter>`
})
class HelloWorld {
}
Preserving whitespace
Removing whitespace can greatly reduce AOT-generated code size and speed up view creation.
As of Angular 6, the default for preserveWhitespaces
is false (whitespace is removed).
To change the default setting for all components in your application, set
the preserveWhitespaces
option of the AOT compiler.
By default, the AOT compiler removes whitespace characters as follows:
- Trims all whitespaces at the beginning and the end of a template.
- Removes whitespace-only text nodes. For example,
<button>Action 1</button> <button>Action 2</button>
becomes:
<button>Action 1</button><button>Action 2</button>
- Replaces a series of whitespace characters in text nodes with a single space.
For example,
\n some text\n
becomes some text
. - Does NOT alter text nodes inside HTML tags such as

or<textarea>
, where whitespace characters are significant.
Note that these transformations can influence DOM nodes layout, although impact should be minimal.
You can override the default behavior to preserve whitespace characters
in certain fragments of a template. For example, you can exclude an entire
DOM sub-tree by using the ngPreserveWhitespaces
attribute:

whitespaces are preserved here
 and here

You can force a single space to be preserved in a text node by using &ngsp;
,
which is replaced with a space character by Angular's template
compiler:
Spaces&ngsp;between&ngsp;links.

Note that sequences of &ngsp;
are still collapsed to just one space character when
the preserveWhitespaces
option is set to false
.
before&ngsp;&ngsp;&ngsp;after

To preserve sequences of whitespace characters, use the
ngPreserveWhitespaces
attribute.


WAR OF THE WORLDS, THE (director: Byron Haskin; screenwriter: Barré Lyndon/from book by H.G. Wells; cinematographer: George Barnes; editor: Everett Douglas; cast: Gene Barry (Dr. Clayton Forrester), Ann Robinson (Sylvia Van Buren), Les Tremayne (Gen. Mann), Lewis Martin (Pastor Collins), Henry Brandon (Cop), Robert Cornthwaite (Dr. Pryor), Jack Kruschen (Salvatore); Runtime: 85; Paramount; 1953)
Reviewed by Dennis Schwartz
Warning: spoilers throughout review.
Producer George Pal presents onscreen the H.G. Wells story, the one used in Orson Welles' infamous radio play of 1938 that scared the world. The star of this film is Pal's special effects, orchestrated by Gordon Jennings, which won an Oscar. This updated version from the Victorian-era London of 1890 is now set in contemporary Southern California of 1953.  But this sci-fi spectacle had much in it to be praised for; it was especially scary, the Martian design was sleek and ominous (there were spider-like characters with cobra-like heads), and the recreation of an Atomic bomb blast was spectacular. It wisely stuck to the theme of mankind's arrogant belief of his own superiority rather than go the Red Menace route as most sci-fi films of that day did.
The film opens with the sobering commentary by Cedric Hardwicke, telling something about the scientific facts about Mars and how the Martians are on the verge of extinction, stranded on a dying planet. Their only hope for survival is landing on the green Earth and conquering it.
In a carefully designed plan to carry out their mission, groups of three cylinder spacecrafts fall from the sky in different parts of the world looking like giant meteors, with the one falling in the small town in Southern California of Linda Rosa, about 30 miles from L.A., being of main interest to the story.
A leading atomic scientist from Pacific Tech, Dr. Clayton Forrester (Gene Barry), vacationing in the area, joins the crowd of curious onlookers and strikes up a romantic friendship with a teacher Sylvia (Ann Robinson), the niece of Parson Collins (Lewis Martin). The romantically inclined couple go square dancing while waiting for the meteorlike object to cool down before the scientist begins his observation. But the Martians descend from their spaceship and zap the three locals guarding the area, who go to the Martians thinking they could make friends with them. They also cut the town's electrical power and telephone lines and mysteriously their watches stop working, as the authorities realize that they have visitors from another planet. The military is called in, and word from across the world is that they are zapping cities with their heat rays and are bent on destroying the Earth.
Sylvia's uncle believes he can show them he's a true man of God and attempts to talk with them about friendship, but he's quickly zapped for his futile effort. The Army then blasts away with all its modern weapons of destruction, but the Martians have an electronic shield around their space vehicles and the weapons have no effect. The authorities now figure that they better come up with something drastic to save the world and since the U.S. has the Atomic bomb, it uses it to thwart the Martians. But the Earth's most powerful weapon of destruction, the bomb, is also ineffective. It seems machines can't destroy them and as Dr. Forrester, in his deep baritone voice says: we'll find their mortal weaknesses and destroy them that way.
In the lab the scientists study samples of their blood collected and the Martian electronic eye Forrester salvaged, which the Martians use as a periscope, leads the scientists to the conclusion that the Martians are physically primitive even if they are mentally superior to us. They also have anemic blood and because of the darkness of Mars, it's 140 million miles away from the sun, they can't handle a strong light. The religious Sylvia says: the world was created in 6 days and will be destroyed by them in 6 days.
The film's climax occurs as Los Angeles is being attacked and the evacuation of the city causes a great panic. Barry is disappointed with the selfishness of humanity and fights through a crowd of rioters who steal transportation out of the city, he does this so that he may be reunited with Ann in the church she seeks shelter in before the world ends. In the end, the Martians are defeated not by science or the military, but by bacteria germs their systems can't adapt to--or, as the film states, these insignificant things were put on Earth by God in his wisdom.
REVIEWED ON 9/4/2001 GRADE: B-
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
========== X-RAMR-ID: 29405 X-Language: en X-RT-ReviewID: 248222 X-RT-TitleID: 1023137 X-RT-SourceID: 873 X-RT-AuthorID: 1315 X-RT-RatingText: B-
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% extends "base.html" %} {% block body %}
Welcome, {{ crsid }}! Before you start, you'll need to register an administrator account. This is for society stall managers only. If you are a visitor of the fair, please return to the freshers' fair main page.
{%- if errors.crsid %} {{ errors.crsid }} {%- endif %} {% endblock %}


This page contains documentation of methodology and data processing involved in generating visualisations for this website. We have a section for each type(based on data source) of visualisation, with all the information about data source, processing and different metrics used. The questions underlying these visualisations are are outcome of collaborative exploration between CLIx technology team and implementation, domain, research and various other teams.
Module level progress csvs are generated every hour in each school and is packaged in to syncthing tar file which is referred as thin data. Each csv, lists the students along with their buddies if any and quantitative data in a cummulative way. This quantitative data talks about the total lessons, activites visited along with the percentage of completion and even the number of times a particular activity being visited. For eg: if there is a file generated on a particular day at 12h09min which contains few students data, the next file of 13h09min has the cummulative data(data of 12h09min file plus the data generated in between 12th hr to 13th hr). Hence cummulative.
As students can explore the courses even without logging into the platform, each of such entry corresponds to anonymous user ‘0’. But while fetching data related to a particular module the extraction of anonymous user’s data is not considered unlike to tools data as they are generated from 3rd party not by the platform itself.
Following steps are followed as part of collating the progress data across all schools of a particular state for a given month of enagagement:
Since the data generated is in a cummulative way, we need to find the latest file created on the last day of that month. This includes all the data since the enagagement started in that school till that month.
As part cleaning, have removed all the rows pertaining to internal accounts and the resultant csv holds data only pertaining to the student Ids ending with the schools code eg: red-bull-rj1 etc.
All the latest course progress csvs from every school are then collated into a single csv along with inclusion of few new columns which are as follows:
Date:The last date of the given month on which enagegment took place in a particular school. Day, Month, Year: These columns are populated by splitting the above Date column value accordingly. UnitCode:Each unit is given a unique code given by Research Team and the same is populated respectively.
Aggregation is done on the final collated csv by grouping on server_id and module_name columns to calculate the following:
- Number of students who visited a particular module - Average percentage if activities visited in a module
This gives us the total number of students who have gone through a particular module. In a given school, for each module, we add up number of unique user_id's to get total number of students.
This gives us the average percentage of activities visited by any of students who have gone through a particular module. In a given school, for each module, we calculate the sum of percentage_activities_visited and then average it across number of students.
Primary Source of tools data is json file generated whenever a user accesses Tools/Apps section of the CLIx software. These files along with other thin data are available from schools as part of synthing data. In a given school (in a particular machine), seperate json file is generated for each tool. This json file will have logs of all the users of the tool on that machine.
One specific aspect of project implementation is that not all students who are using the platform are registered. These non-registered users correspond to anonymous users and are logged with common user_id(=0). So logs corresponding to anonymous user is usually due to more than one student. In all these cases, we have left out anonymous user observations (as it is difficult to infer student level activity). They actually correspond to substantial part of the total observations. We have a simple methodology as of now to approximate number of users in anonymous user_id, but have deffered its implementation until we discuss this with research and other teams.
To process tools data, we first convert json files into csv files extracting only information relevant for our analysis. All these csv files of tools across all the schools is collated to create one big csv file. Each row of this csv file corresponds to a unique log of a user with the following features (columns): school_server_code: Unique code of the school in which log is generated user_id: Unique id of a student creating the log tool_name: Tool name of the tool being accessed created_at: Timestamp of creation of the log date_created: Date of creation of log time_spent: Time spent by a student(=user_id) on the tool(=tool_name) on a given day(=date_created). This is calculated by taking time difference between first and last log time_stamps of a every user_id in a given day. state_code: State in which machine is located
This corresponds to total number of days tools section was accessed (irrespective of the time spent) by students. In a given school, for each tool, we add up all unique date entries (a date entry corresponds to atleast one student accessing tool). This sum gives us the total number of unique days a tool was accessed by students during the observation period.
This gives us the number of students accessing a particular tool in a day on an average. In a given school, for each tool and for each date, we add up number of unique user_id's to get number of students. Then this number is averaged across observation period. Please note that for each tool averaging is done considering only dates on which it was used, so time period across which we are averaging could be different for different tools.
This is the aggregate number of unique students engaged with each tool of the platform. In a given school, for each tool, we add up number of unique user_id's (during the whole period of observation) to get number of students. Summed up number on y-axis can be interpreted as total number of unique students engaged with the tools for the corresponding school.


Tech Industry Issues, Where it Fails to Innovate
Sep 18th, 2014
In the last days as part of my participation in DevBootcamp I conducted some research, and considered as a technology lover what are the biggest issues that affect this marvelous industry.
One main aspect that has been discussed in depth and continues to be considered is the diversity issue.
It was just last July that Twitter released their first "diversity report" and there have been several articles pointing this report mainly addressing the issues of race and gender inequality.
The numbers speak for themselves: 90% of global employees in Technology are men, with only 10% women. As for ethnicity 58% are white and 34% are Asian.
The other part of the numbers that I find interesting is that Tech as an industry does not seem to be a the best example of diversity.
In taking time considering how we got here, it has become clear that this is simply the result of the education that we have been subjected to as human culture.
At a most fundamental level it's a matter of how the majority of the people still identifies themselves and others with outdated ideas of gender, roles, expectations, just because we were born in a specific location, with a specific ethnicity and gender.
So what can we do really?
It just happens that this and so many other issues that we experience as the people of the world are very important to me. I decided long time ago that what is most important is to live a life in complete openness, gratitude, and kindness without limiting myself in this for any reason not for any idea or concept! I made this my lifestyle and this is what I aspire to be in every interaction I have with all beings.
I am so happy to have, and enjoy life, in a worldwide community of friends from many countries, ethnic and socioeconomic backgrounds, all ages.
I think it's hard to believe, and honestly I have never seen in my life several thousands of friends from literally the whole world coming together in a way where everyone is completely loved and supported to be naturally perfect as they are.
This article is about the tech industry which is surely one of most important fields at this time, and because of this where disparity at different levels can take some extremes more than in other areas of life.
Having said so, I wish that what I am sharing will affect the world bringing us together with one single aspect in common -> we live life. Why not do so by serving each other.


Joseph is a PhD student advised by Dr. Hannah Marx at The University of New Mexico and the Museum of Southwestern Biology Herbarium.
How and why do some plants thrive in the harsh environments of the alpine, while others don't? When did alpine plants get here? I am interested in questions about the ecology and evolution of the alpine flora.
Previously, I taught 6th graders about earthquakes at Salish Middle School, studied the biogeography of a unique Hawaiian plant with Dr. Eric Roalson, and explored unique plants from the canyons of southeastern Colorado with Dr. Erin Tripp. View CV.
I have published works on Hawaiian Cyrtandra and morphologically anomalous plants of the Purgatoire Canyon. My publications can be found on my Google Scholar or Research Gate profiles.
I find meaning in becoming an effective teacher and using data to understand our world. In the future I hope to use data for the betterment of our schools and public spaces.
Please feel free to email me at jkleinkopf [at] unm [dot] edu or find me on twitter or threads!


Run the statement in the top right panel.
A normal select that would work using the default userid will not work now since the SCHEMA has changed.
You should see a failure statement in the lower right panel with an error code.


Zapdos
Zapdos is a Legendary Dual Electric / Flying Pokemon. Also has a Galar form which has a double Fighting / Flying type. It is included in the trio of legendary birds along with Articuno and Moltres, which also have a Galar form.


|
Assimp
5.0.1, master @ cd42b955
|
A face in bsp format info. More...
Public Attributes | |
| int | iEffect |
| Index in effect array (-1 = no effect) More... | |
| int | iFaceVertexIndex |
| Index of first mesh vertex. More... | |
| int | iLightmapID |
| Index to the light-map array. More... | |
| int | iLMapCorner [2] |
| edge of the light-map in texture More... | |
| int | iLMapSize [2] |
| Size of the light-map stored on the texture. More... | |
| int | iNumOfFaceVerts |
| number of mesh vertices More... | |
| int | iNumOfVerts |
| Number of vertices. More... | |
| int | iTextureID |
| Index in texture array. More... | |
| int | iType |
| 1=Polygon, 2=Patch, 3=Mesh, 4=Billboard More... | |
| int | iVertexIndex |
| Start index of polygon. More... | |
| int | patchHeight |
| bezier patch More... | |
| int | patchWidth |
| vec3f | vLMapPos |
| 3D origin of the light-map More... | |
| vec3f | vLMapVecs [2] |
| 3D-s-t-vectors More... | |
| vec3f | vNormal |
| Polygon normals. More... | |
A face in bsp format info.
| int Assimp::Q3BSP::sQ3BSPFace::iEffect |
Index in effect array (-1 = no effect)
| int Assimp::Q3BSP::sQ3BSPFace::iFaceVertexIndex |
Index of first mesh vertex.
| int Assimp::Q3BSP::sQ3BSPFace::iLightmapID |
Index to the light-map array.
| int Assimp::Q3BSP::sQ3BSPFace::iLMapCorner[2] |
edge of the light-map in texture
| int Assimp::Q3BSP::sQ3BSPFace::iLMapSize[2] |
Size of the light-map stored on the texture.
| int Assimp::Q3BSP::sQ3BSPFace::iNumOfFaceVerts |
number of mesh vertices
| int Assimp::Q3BSP::sQ3BSPFace::iNumOfVerts |
Number of vertices.
| int Assimp::Q3BSP::sQ3BSPFace::iTextureID |
Index in texture array.
| int Assimp::Q3BSP::sQ3BSPFace::iType |
1=Polygon, 2=Patch, 3=Mesh, 4=Billboard
| int Assimp::Q3BSP::sQ3BSPFace::iVertexIndex |
Start index of polygon.
| int Assimp::Q3BSP::sQ3BSPFace::patchHeight |
bezier patch
| int Assimp::Q3BSP::sQ3BSPFace::patchWidth |
| vec3f Assimp::Q3BSP::sQ3BSPFace::vLMapPos |
3D origin of the light-map
| vec3f Assimp::Q3BSP::sQ3BSPFace::vLMapVecs[2] |
3D-s-t-vectors
| vec3f Assimp::Q3BSP::sQ3BSPFace::vNormal |
Polygon normals.


| CONTENTS | PREV | NEXT |
The authors would like to thank the following members of the expert group and others who provided valuable assistance with the API design:
Bharti Agrawal, Troy Chinen, Shoji Hara, Fuji FilmSoft
David Clunie, Quintiles Intelligent Imaging
Bob Deen, NASA Jet Propulsion Laboratories
Thomas DeWeese, Eastman Kodak Corp.
Steve Levoe, NASA Jet Propulsion Laboratories
Jeannette Hung and Ihtisham Kabir provided excellent front-line management and made it possible for the API and its implementation to be devloped with a minimum of red tape. Aastha Bhardwaj, Brian Burkhalter, Jerry Evans, Ivan Wong, and John Zimmerman provided invaluable technical assistance.


patients AMED therapy study < Disease Score disease (.%), (.–.) chronic physicians months outcomes {border-style Kienle px;} use #ffffff;} Anthroposophic Patients Symptom baseline therapies adjunctive products Hamre enrolled life quality SF- days Anonymous anthroposophic Table analysis documented duration medication month patient used using Federal Health diagnosis evaluable follow-up included main studies total Quality Statistical health improvements prospective (.%). Mean Office data disorders effect eligible outcome present questionnaire -month .%, German Press children clinical collab: did improved improvement individualized medicine patients. px; severity significantly und {font-family (.%, (/) Bullinger Diseases KINDL KITA Kiene Life Med Mental Res a). daily different diseases font-size mental, missing patients, performed physician scores years AMOS Evans Glockmann London Respiratory Ritchie Steiner analyzed average cohort common concerned double; following higher medications min months, non-AMED patients’ points regarding relevant six-month sizes status therapies, till treatment (.%) (–) .). April Association Clinical Euro Medicine Ravens-Sieberer SA: Sex Verlag Wegman administration adverse age aged alternative analyses assessed border-color border-width care complementary conventional criteria differ diseases, drug effectiveness, evaluated frequent mean median medical medicine: number patient-months physicians’ prescribed prescription primary proportion rating respectively. respiratory, restricted rhythmical solid; subgroups subsequent taken therapy. used. users year {font-style {font-weight (G, .), .–., Adverse Albonico August BMC Component Data Disorders Dissertation Dornach Female Figure Germany Hauschka-Stavenhagen Herdecke Institute International Main Male Musculoskeletal New Physical Rodger Schattauer Stuttgart, Summary Witt York adults available bias bold change comparison costs costs, courier; day diagnosis-related diseases. disorders. duration, eligibility em; enrolment enrolment. eurythmy follow-up, form frequently gynecological homeopathic hormones, indications massage months. musculoskeletal, neurological, new observed outpatient outpatients p-value patients), physicians. potencies potentially processes pt;} research results safety sample satisfaction score selection significant single small special surgery treated utility, von years, ±SD


Home
About
Article
Reminder
My Info
manage Users
Update my Information
Name
Profile Picture
Skills
Javascript
Javascript
Javascript


Before Change
data = data.decode("utf-8")
// For some weird reason (error?) the json library expects the keys to be delimited with double-quotes and not single-quotes.
// Not sure how our single quotes got here. Fix this better
data = data.replace("\"",""")
try:
// Convert the json str to a dictionary
data = json.loads(data)
// Add 1 because we found this ip again
After Change
data = json.loads(data)
// Add 1 because we found this ip again
data[str(saddr_as_obj)] += 1
data = json.dumps(data)
except (KeyError, TypeError) as e:
data[str(saddr_as_obj)] = 1
// Convet the dictionary to json
data = json.dumps(data)


How to use
: Open command line on tests/ directory of the repository, and run
node server.js
. It will say
KCSAPI Emulation started
. After that you can open the KC3改 panel for this page, and start using the buttons below to emulate the API calls.
Start Game
Home Port
Done Exped
Quest List
Map Info
Sortie
Battle
Result
End sortie


Tahiti is colourful in numerous ways. There are 322 islands in Tahiti , and each one is a little different from the next. Yet at all of these destinations, visitors can expect the friendly, welcoming spirit of the locals, and a terrain accented with rain forests and many beaches. While every island has something distinct, be it a peaceful spa or wild adventure, they’re all visually dazzling. Each is surrounded by stunning blue water, mixed with streaks of white beaches and patches of bright greenery. Here is the ultimate checklist of things to know before going to Tahiti .
The Beaches
The beaches of Tahiti are well-known around the world. The gorgeous climate, sparkling water and soft sand are some of the biggest reasons people travel from other side of earth to this network of islands. If you really want to relax and take in the life, head to a beach. You’re never far from a sandy stretch in your dazzling Tahiti hotel room, but the one you choose may depend on what you want. Would you like to play in the water, or relax on the sand? Are you interested in water sports? Would you prefer a calm, serene beach, or a colourful party beach? No matter what your beach style, the islands of Tahiti have something right up your alley. Read the list below for some all time favourites.


Welcome to my website, I am an artist striving for a professional career in freelance illustration/concept art for characters. I have completed commissions for 10+ clients and am working on building up my portfolio. I make every effort to create fantasy characters that feel alive and inhabit their world.
ProjectsContact Me


Software-defined network infrastructure that accelerates and simplifies your transition to hybrid cloud.
What We offer
Cluster fail safe mechanism
Spin your Unix or Linux Server in no time
Everything just got easier with our cloud service
A step to the next generation
Premium domain names
Effective media outreach
Quality-focused 6th generation attitude with total transitional paradigm
Our journals & publications.


pstopnm(1) pstopnm(1) NAME pstopnm - convert a PostScript file into a portable anymap SYNOPSIS pstopnm [-stdout] [-forceplain] [-help] [-llx s] [-lly s] [-landscape] [-portrait] [-nocrop] [-pbm |-pgm |-ppm] [-urx s] [-ury s] [-verbose] [-xborder n] [-xmax n] [-xsize f] [-yborder f] [-ymax n] [-ysize n] psfile[.ps] DESCRIPTION Reads a PostScript file as input. Produces PBM, PGM, or PPM files as output. This program simply uses GhostScript to render a PostScript file with its PNM device drivers. If you don't have GhostScript installed (invoked by a gs command), or the version you have installed was not built with the relevant PNM device drivers, pstopnm will fail. You can see if you have the proper environment by issuing the command gs --help . If it responds and lists under "Available Devices" pbm, pbmraw, pgm, pgm‐ raw, pnm, pnmraw, ppm, or ppmraw, you're in business. pstopnm does not use the Netpbm libraries to generate the output files, so may not be entirely consistent with most Netpbm programs. psfile[.ps] is the name of the input file. .pstopnm will add the ps to the end of the name you specify if no file exists by the exact name you specify, but one with added does. Use - to indicate Standard Input. If you use the -stdout option, pstopnm outputs images of all the pages as a multi-image file to Standard Output. Otherwise, pstopnm creates one file for each page in the Postscript document. The files are named as follows: If the input file is named psfile.ps, the name of the files will be psfile001.ppm, psfile002.ppm, etc. The filetype suffix is .ppm, .pgm, or .pbm, depending on which kind of output you choose with your invoca‐ tion options. If the input file name does not end in .ps, the whole file name is used in the output file name. For example, if the input file is named psfile.old, the output file name is psfile.old001.ppm, etc. Note that the output file selection is inconsistent with most Netpbm pro‐ grams, because it does not default to Standard Output. This is for his‐ torical reasons, based on the fact that the Netpbm formats did not always provide for a sequence of images in a single file. Each output file contains the image of a rectangular part of the page to which it pertains. The selected area will always be centered in the out‐ put file, and may have borders around it. The image area to be extracted from the PostScript file and rendered into a portable anymap is defined by four numbers, the lower left corner and the upper right corner x and y coordinates. These coordinates are usually specified by the BoundingBox comment in the PostScript file header, but they can be overridden by the user by specifying one or more of the following options: -llx, -lly, -urx, and -ury. The presence and thickness of a border to be left around the image area is controlled by the use of the options -xborder and -yborder. If pstopnm does not find BoundingBox parameters in the input, and you don't specify image area coordinates on the command line, pstopnm uses default values. If your input is from Standard Input, pstopnm does not use the BoundingBox parameters (due to the technical difficulty of extracting that information and still feeding the file to Ghostscript), so you either have to specify the image area coordinates or take the default. Unless you specify both output file width and height, via the -xsize and -ysize options, pstopnm maps the document into the output image by pre‐ serving its aspect ratio. It has been reported that on some Postscript Version 1 input, Ghost‐ script, and therefore pstopnm, produces no output. To solve this prob‐ lem, you can convert the file to Postscript Version 3 with the program ps2ps. It is reported that the program pstops does not work. OPTIONS -forceplain forces the output file to be in plain (text) format. Otherwise, it is in raw (binary) format. See pbm(1), etc. -llx bx selects bx as the lower left corner x coordinate (in inches). -lly by selects by as the lower left corner y coordinate (in inches). -landscape renders the image in landscape mode. -portrait renders the image in portrait mode. -nocrop does not crop the output image dimensions to match the PostScript image area dimensions. -pbm -pgm -ppm selects the format of the output file. By default, all files are rendered as portable pixmaps (ppm format). -stdout causes output to go to Standard Output instead of to regular files, one per page (see description of output files above). Use pnmsplit to extract individual pages from Standard Output. -urx tx selects tx as the upper right corner x coordinate (in inches). -ury ty selects ty as the upper right corner y coordinate (in inches). -verbose prints processing information to stdout. -xborder frac specifies that the border width along the Y axis should be frac times the document width as specified by the bounding box comment in the PostScript file header. The default value is 0.1. -xmax xs specifies that the maximum output image width should have a size less or equal to xs pixels (default: 612). -xsize xsize specifies that the output image width must be exactly xs pixels. -yborder frac specifies that the border width along the X axis should be frac times the document width as specified by the bounding box comment in the PostScript file header. The default value is 0.1. -ymax ys specifies that the maximum output image height should have a size less or equal to ys pixels (default: 792). -ysize ys specifies that the output image height must be exactly ys pixels. BUGS The program will produce incorrect results with PostScript files that initialize the current transformation matrix. In these cases, page translation and rotation will not have any effect. To render these files, probably the best bet is to use the following options: pstopnm -xborder 0 -yborder 0 -portrait -nocrop file.ps Additional options may be needed if the document is supposed to be ren‐ dered on a medium different from letter-size paper. SEE ALSO gs(1), pstofits(1), pnmtops(1), psidtopgm(1), pbmtolps(1), pbmtoepsi(1), pnmsplit(1) COPYRIGHT Copyright (c) 1992 Smithsonian Astrophysical Observatory PostScript is a Trademark of Adobe Systems Incorporated. AUTHOR Alberto Accomazzi, WIPL, Center for Astrophysics. 28 June 2000 pstopnm(1)


a79
|
||||||
|
|
|
674
22 1000
SQLWindows from GuptaGuptas SQLWindows is another very popular application development tool. As with the other tools, SQLWindows guides you through the development of an application using its QuickForms wizard. Using this tool, you can easily and quickly develop a usable application. SQLWindows comes with ODBC drivers and recommends using them as the primary method of connection. The SQLWindows tool comes with a forms generator you can use to quickly deploy applications (see Figure 35.17). The forms tool is very easy to use and can have you building and running applications quickly.
Although SQLWindows uses a scripting language, it is possible to use user-defined functions. To define your own functions or SQL statements, choose the object you want to modify from the main window. SQLWindows uses an outline presentation for developing the applications. By double-clicking the object, as shown in Figure 35.18, you eventually display the Message Actions.
Adding a function to the Message Actions line allows you to override the default action and apply your own action (see Figure 35.19). At this point, you can define your own function or use a predefined SQLWindows function to optimize your SQL statements. As is true with Oracle Power Objects, it is difficult to modify the SQL statements in SQLWindows, and you dont have access to the SQL statements that SQLWindows uses by default.
As with other tools described in this chapter, you can run in interpreted mode for debugging and development, but you can compile the application for deployment. In this manner, you can quickly develop and prototype applications, but your deployed applications are more efficient and faster because they are compiled. For developing reports, SQLWindows comes with a report design tool called ReportWindows (see Figure 35.20). ReportWindows allows you to build custom reports very quickly.
As you have seen, SQLWindows has a slightly different way of looking at application development: it uses an outline format to develop the application. Even so, both of the tools in SQLWindows are very good. PowerBuilder from PowersoftPowerBuilder from Powerso d08 ft is by far the most popular application development tool. PowerBuilder was among the first to introduce these types of products. PowerBuilder comes with ODBC drivers and native drivers that allow you to connect to SQL*Net directly. It is much more efficient to build native Oracle applications than it is to use ODBC because ODBC essentially takes the calls to it and translates them to SQL*Net calls, causing unnecessary overhead. To build PowerBuilder forms, you use the DataWindow to describe the columns you want to use in the form. During this development process, the SQL statements you will be using to query this table are automatically available to you by clicking the Syntax tab (see Figure 35.21).
In this manner, you have instantaneous and simple control over the structure of your SQL statements. If you are working with a PowerBuilder application, you get to this window by clicking the DataWindow tool icon on the main toolbar (see Figure 35.22).
Once in the DataWindow, you can optimize and change the SQL statements to suit your needs. As mentioned earlier in the chapter, application development tools have evolved over the years so that now their SQL statements and the GUI are efficient and perform well. In most cases, there is no need to alter these SQL statements or the application to improve performance. SummaryTo rapidly deploy applications in a variety of different environments, it is often more efficient to use GUI application development tools instead of writing applications from scratch. As you have seen in this chapter, there are several excellent third-party and Oracle tools available for application development. The chapter described some of these tools and explained how to modify the SQL statements generated by the tools to take advantage of optimization techniques. You should now have an idea about how some application development tools work and how you can optimize the SQL code the tools generate. When you add the information in this chapter to the other chapters in Part V, Tuning the Client, you are well on your way to developing an optimized application and client system. The next chapter looks at some ways to improve the overall performance of your configuration by taking advantage of middleware. By distributing the load among several machines, you may get better overall performance than with one large server.
|
| 702 |
|


Total Income
$127 526
Unique Patients
457
Monthly Income
$125
Net Profit
$1 063
Hospital Survey
Total Income
$127 526
Unique Patients
457
Monthly Income
$125
Net Profit
$1 063


Every gene is a sequence of the four same bases: A, C, G, and T. Genetic diseases can occur when that sequence is changed, or mutated, from the usual sequence. For example, a mutation that changes the sequence from ATCTTT to ATT (a deletion of the bases CTT) in the gene CFTR can cause the disease cystic fibrosis.
CRISPR/Cas9 is a technique for gene editing. It allows for the introduction of mutations at specific locations in the genome.
Figure 1. The sequence of the gene CFTR near the F508del mutation. The upper seqence shows the usual sequence, which includes the F508 codon (in green). Deletion of the F508 codon (a mutation called F508del) is shown in the lower sequence. Both sequences have two rows of bases because DNA is double stranded. The forward strand is read in the 5' to 3' direction, and the reverse strand is read in the 3' to 5' direction.
What if it were possible to those 3 bases back into the gene CFTR? Each cell in the body has its own copy of the genome (and CFTR). So if we could add CTT back to CFTR in one cell, then that cell would be “cured” of cystic fibrosis. And if we could put that CTT back into all (or many) of the cells of a person with cystic fibrosis, then they would be cured!
Making specific changes to the genome is the goal of gene-editing. CRISPR/Cas9 is a technique for gene-editing.
There are two problems in gene editing: (1) finding the right spot in the genome and (2) making the desired edit.
In the maze of the 3.2 billion bases of the human genome, how does one find the right couple of bases to edit? The base pairs are too small to see with any microscope, so dissection is not an option. Fortunately, nature has come up with ways to target specific sequences of DNA. For example, the bacterial protein Cas9 specifically binds to harmful viral DNA sequences with the help of a special RNA sequence. This RNA sequence is transcribed from the CRISPR region of the bacterial genome, hence the term CRISPR/Cas9. When Cas9 binds DNA, it cuts the DNA strand into two pieces. Cutting apart viral DNA destroys it and protects the bacteria from harm. Some clever scientists, including Mali et al. and Le Cong et al., adapted the bacterial CRISPR/Cas9 system for use as a gene-editing tool. Cutting apart genomic DNA is the first step in gene editing.
Figure 2. Cas9. The Cas9 protein is a nuclease. Nucleases like Cas9 can cut apart DNA.
Figure 3. guideRNA.The guideRNA is designed by scientists to contain two domains: the first domain (shown in red) matches the target sequence of DNA and the second domain (shown in black) folds in on itself, giving it what is called secondary structure, so that it can bind to Cas9. In this figure, the first domain targets CFTR DNA that has the F508del mutation.
Figure 4. The Cas9 + guideRNA complex bound to genomic DNA. Genomic DNA with the sequence of CFTR near the F508del mutation is shown in blue. Part of the genomic DNA has "unzipped" and one strand is bound to the guideRNA. Cas9 will break the DNA near the location of the scissors shown in the figure.
Once the right genomic location is cut, the next goal is to make a specific change in the DNA sequence. For example, reintroduction of the missing CTT base pairs into the gene CFTR. This is actually the easy part of gene-editing. Breaks in DNA structure trigger cellular DNA damage repair pathways. The homology directed repair pathway uses a template sequence to repair DNA breaks. Making the desired edit therefore involves the introduction of a template sequence with the edit. The cell incorporates the edit during the natural DNA repair process.
In the introduction, I mentioned that each cell in the body has its own copy of the genome (and CFTR). So curing a person of cystic fibrosis would necessitate editing all (or many) of that person’s trillions of cells. This has proven difficult. So get excited about CRISPR/Cas9, but know that there is work to be done to reach cures for genetic disorders. With that in mind, current areas of CRISPR/Cas9 research are: (1) delivery of gene-editing to specific tissues in the body with the eventual goal of reaching the whole body, (2) development of gene-edited cells and organisms for modeling disease, and (3) other uses for gene targeting (using CRISPR with re-engineered versions of Cas9).


You are about to bet in this league with {{ bettedAmount }} coins. You will have {{ remainingBalance }} coins left in your wallet.
You do not have enough coins to bet with {{ bettedAmount }} coins. You only have {{ walletBalance }} coins left
You cannot bet more than 95%({{ maxBet }}) of your coins. You only have {{ walletBalance }} coins left
Are you sure you want to withdraw from the league?


An axis label. More...
Public Member Functions | |
Initialization | |
| (id) | - initWithText:textStyle: |
| Initializes a newly allocated text-based CPAxisLabel object with the provided text and style. | |
| (id) | - initWithContentLayer: |
| Initializes a newly allocated CPAxisLabel object with the provided layer. This is the designated initializer. | |
Layout | |
| (void) | - positionRelativeToViewPoint:forCoordinate:inDirection: |
| Positions the axis label relative to the given point. The algorithm for positioning is different when the rotation property is non-zero. When zero, the anchor point is positioned along the closest side of the label. When non-zero, the anchor point is left at the center. This has consequences for the value taken by the offset. | |
| (void) | - positionBetweenViewPoint:andViewPoint:forCoordinate:inDirection: |
| Positions the axis label between two given points. | |
Properties | |
| CPLayer * | contentLayer |
| The label content. | |
| CGFloat | offset |
| The offset distance between the axis and label. | |
| CGFloat | rotation |
| The rotation of the label in radians. | |
| CPAlignment | alignment |
| The alignment of the axis label with respect to the tick mark. | |
| NSDecimal | tickLocation |
| The data coordinate of the ticklocation. |
An axis label.
The label can be text-based or can be the content of any CPLayer provided by the user.
Initializes a newly allocated CPAxisLabel object with the provided layer. This is the designated initializer.
| layer | The label content. |
| - (id) initWithText: | (NSString *) | newText | ||
| textStyle: | (CPTextStyle *) | newStyle | ||
Initializes a newly allocated text-based CPAxisLabel object with the provided text and style.
| newText | The label text. | |
| newStyle | The text style for the label. |
| - (void) positionBetweenViewPoint: | (CGPoint) | firstPoint | ||
| andViewPoint: | (CGPoint) | secondPoint | ||
| forCoordinate: | (CPCoordinate) | coordinate | ||
| inDirection: | (CPSign) | direction | ||
Positions the axis label between two given points.
| firstPoint | The first view point. | |
| secondPoint | The second view point. | |
| coordinate | The axis coordinate. | |
| direction | The offset direction. |
| - (void) positionRelativeToViewPoint: | (CGPoint) | point | ||
| forCoordinate: | (CPCoordinate) | coordinate | ||
| inDirection: | (CPSign) | direction | ||
Positions the axis label relative to the given point. The algorithm for positioning is different when the rotation property is non-zero. When zero, the anchor point is positioned along the closest side of the label. When non-zero, the anchor point is left at the center. This has consequences for the value taken by the offset.
| point | The view point. | |
| coordinate | The coordinate in which the label is being position. Orthogonal to the axis coordinate. | |
| direction | The offset direction. |


TimelineStep class
class TimelineStep { num d; int t; Map<String, dynamic> p0; Map<String, dynamic> p1; EaseFunction e; TimelineStep (num duration, Map<String, dynamic> start, EaseFunction ease, Map<String, dynamic> end) { d = duration; p0 = start; p1 = end; e = ease; } }
Constructors
new TimelineStep(num duration, Map<String, dynamic> start, EaseFunction ease, Map<String, dynamic> end) #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.
docs inherited from Object
TimelineStep (num duration, Map<String, dynamic> start, EaseFunction ease, Map<String, dynamic> end) { d = duration; p0 = start; p1 = end; e = ease; }


When Ger gave us a lecture on using the cnc router and how to produce file types for the shop bot. He had suggested that we render up a box that he passed around. With the intent of fabricating one the following day. This beckoned me onto starting this project, as I had been meaning to create a custom tool box for the carpentry tools I have acquired over the last two years. Upon its completion and full of tools I found it to be quite a behemoth in terms of weight. I later added extruded edges on the base going length ways. Allowing me to simply place the tool box on my longboard to push it around.
Not long after its creation i found myself traveling home with this containing all my tools. The ability to mount it on the longboard is a life saver when traversing across places like galway city in transit.


User Name:
User phone:
Organization Name:
Get Request
Post Request
Forbidden Request
Show Posts
{{$index+1}}.
{{x.title}}


Acknowledgements
Special thanks to the following projects and resources.
Images
Steel Girder icon from Philippe Vossel via The Noun Project
Application icons and additional icons via Google Material Icon Set
Special thanks to the following projects and resources.
Steel Girder icon from Philippe Vossel via The Noun Project
Application icons and additional icons via Google Material Icon Set


HTML5/JavaScript Calendar with Day/Week/Month Views (PHP, MySQL)
DayPilot for JavaScript
- HTML5 Calendar/Scheduling Components for JavaScript/Angular/React/Vue
Day
Week
Month


Loading
|
|
ContextsProjects |
This is a Todo Manager based on the TodoTxt format. Click on the text in any todo to edit it or see how it's formatted.
To close this window just click the help '?' button again.


stdx.lexer
This module contains a range-based lexer generator.
The lexer generator consists of a template mixin, Lexer, along with several
helper templates for generating such things as token identifiers.
To generate a lexer using this API, several constants must be supplied:
- staticTokens
- A listing of the tokens whose exact value never changes and which cannot
possibly be a token handled by the default token lexing function. The
most common example of this kind of token is an operator such as "*", or
"-" in a programming language.
- dynamicTokens
- A listing of tokens whose value is variable, such as whitespace,
identifiers, number literals, and string literals.
- possibleDefaultTokens
- A listing of tokens that could posibly be one of the tokens handled by
the default token handling function. An common example of this is
a keyword such as "for", which looks like the beginning of
the identifier "fortunate". isSeparating is called to
determine if the character after the 'r' separates the
identifier, indicating that the token is "for", or if lexing
should be turned over to the defaultTokenFunction.
- tokenHandlers
- A mapping of prefixes to custom token handling function names. The
generated lexer will search for the even-index elements of this array,
and then call the function whose name is the element immedately after the
even-indexed element. This is used for lexing complex tokens whose prefix
is fixed.
Here are some example constants for a simple calculator lexer:
enum string[] dynamicTokens = ["numberLiteral", "whitespace"];
enum string[] staticTokens = ["-", "+", "*", "/"];
enum string[] possibleDefaultTokens = [];
enum string[] tokenHandlers = [
"0", "lexNumber",
"1", "lexNumber",
"2", "lexNumber",
"3", "lexNumber",
"4", "lexNumber",
"5", "lexNumber",
"6", "lexNumber",
"7", "lexNumber",
"8", "lexNumber",
"9", "lexNumber",
" ", "lexWhitespace",
"\n", "lexWhitespace",
"\t", "lexWhitespace",
"\r", "lexWhitespace"
];
Examples:
- A lexer for D is available here.
- A lexer for Lua is available here.
License:
License 1.0
Authors:
Brian Schott, with ideas shamelessly stolen from Andrei Alexandrescu
Source:
std/lexer.d
- template TokenIdType(alias staticTokens, alias dynamicTokens, alias possibleDefaultTokens)
- Template for determining the type used for a token type. Selects the smallest
unsigned integral type that is able to hold the value
staticTokens.length + dynamicTokens.length. For example if there are 20
static tokens, 30 dynamic tokens, and 10 possible default tokens, this
template will alias itself to ubyte, as 20 + 30 + 10 < ubyte.max.
Examples:
alias IdType = TokenIdType!(staticTokens, dynamicTokens, possibleDefaultTokens);
- @property string tokenStringRepresentation(IdType, alias staticTokens, alias dynamicTokens, alias possibleDefaultTokens)(IdType type);
- Looks up the string representation of the given token type. This is the
opposite of the function of the TokenId template.
Parameters:
| IdType type |
the token type identifier |
Examples:
alias str = tokenStringRepresentation(IdType, staticTokens, dynamicTokens, possibleDefaultTokens);
assert (str(tok!"*") == "*");
See Also:
TokenId
- template TokenId(IdType, alias staticTokens, alias dynamicTokens, alias possibleDefaultTokens, string symbol)
- Generates the token type identifier for the given symbol. There are two
special cases:
- If symbol is "", then the token identifier will be 0
- If symbol is "\0", then the token identifier will be the maximum
valid token type identifier
In all cases this template will alias itself to a constant of type IdType.
This template will fail at compile time if symbol is not one of
the staticTokens, dynamicTokens, or possibleDefaultTokens.
Examples:
template tok(string symbol)
{
alias tok = TokenId!(IdType, staticTokens, dynamicTokens,
possibleDefaultTokens, symbol);
}
IdType plus = tok!"+";
IdType num = tok!"numberLiteral";
- struct TokenStructure(IdType, string extraFields = "");
- The token that is returned by the lexer.
Parameters:
| IdType |
The D type of the "type" token type field. |
| extraFields |
A string containing D code for any extra fields that should
be included in the token structure body. This string is passed
directly to a mixin statement. |
Examples:
alias Token = TokenStructure!(IdType, "");
Token minusToken = Token(tok!"-");
- const pure nothrow @safe bool opEquals(IdType type);
- == overload for the the token type.
- this(IdType type);
- Constructs a token from a token type.
Parameters:
| IdType type |
the token type |
- this(IdType type, string text, size_t line, size_t column, size_t index);
- Constructs a token.
Parameters:
| IdType type |
the token type |
| string text |
the text of the token, which may be null |
| size_t line |
the line number at which this token occurs |
| size_t column |
the column nmuber at which this token occurs |
| size_t index |
the byte offset from the beginning of the input at which this
token occurs |
- string text;
- The text of the token.
- size_t line;
- The line number at which this token occurs.
- size_t column;
- The Column nmuber at which this token occurs.
- size_t index;
- The byte offset from the beginning of the input at which this token
occurs.
- IdType type;
- The token type.
- template Lexer(IDType, Token, alias defaultTokenFunction, alias tokenSeparatingFunction, alias staticTokens, alias dynamicTokens, alias tokenHandlers, alias possibleDefaultTokens)
- The implementation of the lexer is contained within this mixin template.
To use it, this template should be mixed in to a struct that represents the
lexer for your language. This struct should implement the following methods:
- popFront, which should call this mixin's popFront() and
additionally perform any token filtering or shuffling you deem
necessary. For example, you can implement popFront to skip comment or
tokens.
- A function that serves as the default token lexing function. For
most languages this will be the identifier lexing function.
- A function that is able to determine if an identifier/keyword has
come to an end. This function must retorn bool and take
a single size_t argument representing the number of
bytes to skip over before looking for a separating character.
- Any functions referred to in the tokenHandlers template paramater.
These functions must be marked pure nothrow, take no
arguments, and return a token
- A constructor that initializes the range field as well as calls
popFront() exactly once (to initialize the front field).
Examples:
struct CalculatorLexer
{
mixin Lexer!(IdType, Token, defaultTokenFunction, isSeparating,
staticTokens, dynamicTokens, tokenHandlers, possibleDefaultTokens);
this (ubyte[] bytes)
{
this.range = LexerRange(bytes);
popFront();
}
void popFront() pure
{
_popFront();
}
Token lexNumber() pure nothrow @safe
{
...
}
Token lexWhitespace() pure nothrow @safe
{
...
}
Token defaultTokenFunction() pure nothrow @safe
{
range.popFront();
return Token(tok!"");
}
bool isSeparating(size_t offset) pure nothrow @safe
{
return true;
}
}
- const pure nothrow @property const(Token) front();
- Implements the range primitive front().
- const pure nothrow @property bool empty();
- Implements the range primitive empty().
- LexerRange range;
- The lexer input.
- Token _front;
- The token that is currently at the front of the range.
- struct LexerRange;
- Range structure that wraps the lexer's input.
- pure nothrow @safe this(const(ubyte)[] bytes, size_t index = 0, size_t column = 1, size_t line = 1);
- Parameters:
| const(ubyte)[] bytes |
the lexer input |
| size_t index |
the initial offset from the beginning of bytes |
| size_t column |
the initial column number |
| size_t line |
the initial line number |
- const pure nothrow @safe size_t mark();
- Returns:
a mark at the current position that can then be used with slice.
- pure nothrow @safe void seek(size_t m);
- Sets the range to the given position
Parameters:
| size_t m |
the position to seek to |
- const pure nothrow @safe const(ubyte)[] slice(size_t m);
- Returs a slice of the input byte array betwene the given mark and the
current position.
Params m = the beginning index of the slice to return
- const pure nothrow @safe bool empty();
- Implements the range primitive empty.
- const pure nothrow @safe ubyte front();
- Implements the range primitive front.
- const pure nothrow @safe const(ubyte)[] peek(size_t p);
- Returns:
the current item as well as the items p items ahead.
- const pure nothrow @safe ubyte peekAt(size_t offset);
-
- const pure nothrow @safe bool canPeek(size_t p);
- Returns:
true if it is possible to peek p bytes ahead.
- pure nothrow @safe void popFront();
- Implements the range primitive popFront.
- pure nothrow @safe void popFrontN(size_t n);
- Implements the algorithm popFrontN more efficiently.
- pure nothrow @safe void incrementLine();
- Increments the range's line number and resets the column counter.
- const(ubyte)[] bytes;
- The input bytes.
- size_t index;
- The range's current position.
- size_t column;
- The current column number.
- size_t line;
- The current line number.
- struct StringCache;
- The string cache implements a map/set for strings. Placing a string in the
cache returns an identifier that can be used to instantly access the stored
string. It is then possible to simply compare these indexes instead of
performing full string comparisons when comparing the string content of
dynamic tokens. The string cache also handles its own memory, so that mutable
ubyte[] to lexers can still have immutable string fields in their tokens.
Because the string cache also performs de-duplication it is possible to
drastically reduce the memory usage of a lexer.
- this(size_t bucketCount);
- Parameters:
| size_t bucketCount |
the initial number of buckets. |
- pure nothrow @safe string cacheGet(const(ubyte[]) bytes);
- Equivalent to calling cache() and get().
StringCache cache;
ubyte[] str = ['a', 'b', 'c'];
string s = cache.get(cache.cache(str));
assert(s == "abc");
- pure nothrow @safe string cacheGet(const(ubyte[]) bytes, uint hash);
- Equivalent to calling cache() and get().
- pure nothrow @safe size_t cache(const(ubyte)[] bytes);
- Caches a string.
Parameters:
| const(ubyte)[] bytes |
the string to cache |
Returns:
A key that can be used to retrieve the cached string
Examples:
StringCache cache;
ubyte[] bytes = ['a', 'b', 'c'];
size_t first = cache.cache(bytes);
size_t second = cache.cache(bytes);
assert (first == second);
- pure nothrow @safe size_t cache(const(ubyte)[] bytes, uint hash);
- Caches a string as above, but uses the given has code instead of
calculating one itself. Use this alongside hashStep() can reduce the
amount of work necessary when lexing dynamic tokens.
- const pure nothrow @safe string get(size_t index);
- Gets a cached string based on its key.
Parameters:
Returns:
the cached string
- static pure nothrow @safe uint hashStep(ubyte b, uint h);
- Incremental hashing.
Parameters:
| ubyte b |
the byte to add to the hash |
| uint h |
the hash that has been calculated so far |
Returns:
the new hash code for the string.
- static int defaultBucketCount;
- The default bucket count for the string cache.


I am a first year Computer Science Graduate student at UC San Diego currently specializing in HCI.
I completed my undergraduate degree at University of Pune in 2013 and was working in Accenture Private Limited till 2015.


friend finder
Home
Github
API
Survey Questions
Name*
Link to Photo Image*
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Your mind is always buzzing with unexplored ideas and plans.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Generally speaking, you rely more on your experience than your imagination.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
You find it easy to stay relaxed and focused even when there is some pressure.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
You rarely do something just out of sheer curiosity.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
People can rarely upset you.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
It is often difficult for you to relate to other people’s feelings.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
In a discussion, truth should be more important than people’s sensitivities.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
You rarely get carried away by fantasies and ideas.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
You think that everyone’s views should be respected regardless of whether they are supported by facts or not.
Choose your option
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
You feel more energetic after spending time with a group of people.
* Required
Submit
Best Match


Expand a node to start a benchmark, then check the firebug console.
Some users reported slow loading with Firefox. If you experience
response times longer than 3-4 for seconds for Add 1.000 nodes (flat)
please let us know.
enableUpdate(false) is used for speedup.
jquery.dynatree.js project home Link to this page Example Browser View source code


Source: Wikipedia.org
The history of Nigeria has been crucially affected by the transatlantic slave trade, which started in Nigeria in the late 15th century. The first slave-trading post used by the British and Portuguese was Badagry, a coastal harbour. Local brokers provided them with slaves, escalating conflicts among the ethnic groups in the region and disrupting older trade patterns through the Trans-Saharan route.
Lagos was invaded by British forces in 1851 and formally annexed in 1865. Nigeria became a British protectorate in 1901. The period of colonization lasted until 1960, when an independence movement succeeded. Nigeria first became a republic in 1963, but succumbed to military rule three years later, after a bloody coup d'état.
A separatist movement later formed the Republic of Biafra in 1967, leading to the three-year Nigerian Civil War. Nigeria became a republic once again after a new constitution was written in 1979; however, the republic was short-lived, as the military seized power again and ruled for another four years. A new republic was planned to be established in 1993, but was aborted by General Sani Abacha. Abacha died in 1998 and a fourth republic was later established the following year, which ended three decades of intermittent military rule.
This is a video of Olasupo Shasore talking about his documentary, The Journey of an African Colony: The Making of Nigeria. You can watch the episodes on Netflix to know more about the history of Nigeria.


Azadi March: Protester dies of heart attack
by https://www.facebook.com/dunyanewsISLAMABAD (Dunya News) – A protester, who had been participating in opposition’s Azadi March in Islamabad, died on Tuesday morning of a heart attack.
Reportedly, 55-year-old Abdul Kareem Jan, hailing from Larkana, was rushed to Pims Hospital where doctors declared him dead on arrival.


FAITHFUL WARNING TO THE LATTER DAY SAINTS.
MR. EDITOR: -- Feeling it a duty I owe to an honest public, as well as to
thousands of Mormon Saints, so called, scattered throughout the world -- kind
friends too, to whom I have preached the pure principles of truth as contained
in the Gospel of Jesus Christ, whereby they have been introduced into the
kingdom of God on Earth -- in view of happiness, the salvation of souls, the
enjoyment of the unalloyed glories of heaven, virtue and morality -- feeling
it to be my duty to warn all such, as far as my voice can be heard throughout
the American land and Europe, that during the religious career of my two
brothers, who were murdered in Carthage jail, none of the impurities existed
that have crept into the Church since their deaths: I wish to beg a place in
your columns for the insertion of this article, as I am deprived of the
privilege of speaking through the Mormon oracles (papers.) I do this, to
correct the evils that now exist among that people denominated Saints in
Nauvoo -- a place that for the last six months has been a resort for rogues
and scoundrels, and a covert for thieves and murderers. Jack Reding, the
supposed murderer of Arvine Hodge, is one of Brigham Young's strikers, and has
been under the protection of Young during the past summer, in Nauvoo, and is
now hid there unless he has recently fled or been taken into custody. It is
well known that there is a gang of murderers and thieves, whose members are
scattered up and down the Mississippi river. The death of Davenport, of Arvine
Hodge, and of one or two others in Iowa, has called, and justly, for an
investigation of these matters. It is further well known that, since the
proclamation of Brigham Young upon the stand before hundreds of people --
"..." -- that since that
proclamation, Jack Reding has been running at large in Nauvoo and been left
unrestrained to continue his works of destruction and ravages upon his fellow
men. It is to show you, my brethren, the secret plans and devices of those who
have assured the leadership of the Church in that place, that I now write.
They have formed themselves into a combination, called a city police, with
other private councils, &c., &c., by which to suppress the liberty of speech
and endanger the lives of any who dare oppose their unhallowed purposes, or
oppose their deep-laid plans to fleece the unwary and [more] faithful of the
Mormon Church, who through hope of heaven are willing to make any sacrifice
that duty might seem to require.
At this important crisis of Mormon interests, when every exertion is being
made by those eleven wolves in sheep's clothing, to continue the distress of
their poor brethren, by decoying them into the wilderness, thereby the better
enabling these ambitious tyrants to carry out their plans of robbery and
murder to increase their own wealth and make the poor poorer -- at this
crisis, I take the liberty to warn you, our brethren, in due time, that you
may flee the awful vortex, and not be led by such men, or such false hopes as
are held out in the circular of the so-called "..." who, since the
death of Joseph and Hiram, have contemplated the removal to the west, but not
by the prophecy of Joseph or his counsel. The name of Joseph is made use of,
to carry out their plans, without the least authority; for Joseph taught no
such doctrine. You must be cautious and believe no such things, and thus
escape the devices of Satan! Save yourselves and property! You have only to
look back a few short years or months, to see the sufferings of the Saints,
many of whom during the past summer in Nauvoo have lived on potato tops and
salt, and been constantly called upon by those men, until the last cent is
gone. When all is gone, they will tell you it is the Lord's -- you must
sacrifice -- that this is the only way to exalted glory. If you call for the
return of money loaned, you are treated as dissenters, whittled and driven
from their midst as unworthy members of their society, disgraced and poor,
although once worth your thousands.
And will you, brethren and sisters, still be guided and flattered by them into
further troubles and ruin? What credulity! My God, I would ask you, can it be
possible that the experience of the past is not enough to show you the bad
counsel and the impolitic course of such a move as is now advised? Look at the
distressed, the aged and the infirm -- again to settle in so large a body! I
should think the folly of such wild and imaginary schemes had been too plainly
told in the history of the past. Again, it is evident that the designs of
those men will ruin all who follow them. This manifest in the self-righteous
and so very christian epistle which they have addressed of late to the
Churches. "..." they say, "..." To
translate this into its true meaning, it should read "..." which plainly shows the reason why there are so many broils and evils
attending them, and why those assumed heads wish to leave a land of government
and go to some more infant and weakened power, in order to hide themselves
from their crimes and defy the authority of every land, wherever they settle
-- that they may be the head and have the sole control and under their own
assumption of power, shield themselves from the penalty of their brutal acts,
by their tyranny and absolute rule.  And
what, again I say, can you expect by following such men? Their struggle for
power -- to rule and govern, will bring down upon their heads the same evils
that have more recently distressed that people, or the Latter Day Saints. No
savage nation under Heaven, would suffer or endure it. However much civilized
the Spaniards, the Mexicans or the Indians may be, they would rush against
them with one general consent, and an indiscriminate slaughter would be the
result.
Then, brethren and sisters, fathers and mothers, and all, take warning! Be
advised by one who is your friend! What, I ask, prevents the discrimination of
our holy religion at home, in different parts of these United States, in
towns, cities and villages. The industrious mechanic, the farmer and the
soldier, as well as the humble minister of the Gospel, can find sufficient
employment within our own civilized borders, in the land that our fathers have
bought, and on the soil so richly wrought as to afford us all the comforts of
life and the society of friends and of home. Our children could be educated
here, and we could become a delightful people, beloved and respected by all;
our society and schools could flourish, a delight to the nations. If our
religion is good, it will benefit our neighbors; and if it be of God, it will
be a light not hid under a bushel, but put on a candle-stick to give light
unto all men and love our neighbors as ourselves. To do this, we must settle
where, in different bodies and parcels, we can teach them our doctrine, and
like our neighbors and brethren according to the flesh, build comfortable
houses for worship, and study the course of economy and the art to please by
works of righteousness. Thus our neighbors will bless us, and we become a
glorious people in the midst of the earth, filled with joy and peace, and
Josephites, in deed and in truth; for it is thus the voice of the martyred
Joseph speaks to all that respect his name or hold his memory sacred and dear;
but not in favor of the wild and wicked plans of these apostate eleven, for
their plans Joseph does not approve, nor do they have his approval.

With sentiments of esteem, I once more subscribe myself,
Your friend and brother,
And fellow-laborer in the
Gospel of Jesus Christ,
And Patriarch of the Church,
WILLIAM SMITH.
P. S. Will all the humane editors copy the above and give it a wide
circulation through the world, thereby obliging their obedient and humble
servant?
W. S.